Committed by
Gerrit Code Review
Remove redundant meter id when create a meter entry in REST API
Change-Id: Iec38ea9a612878a2a6f2766c154c8ed8a8b31ef2
Showing
8 changed files
with
228 additions
and
145 deletions
... | @@ -55,6 +55,7 @@ import org.onosproject.net.intent.Intent; | ... | @@ -55,6 +55,7 @@ import org.onosproject.net.intent.Intent; |
55 | import org.onosproject.net.intent.PointToPointIntent; | 55 | import org.onosproject.net.intent.PointToPointIntent; |
56 | import org.onosproject.net.meter.Band; | 56 | import org.onosproject.net.meter.Band; |
57 | import org.onosproject.net.meter.Meter; | 57 | import org.onosproject.net.meter.Meter; |
58 | +import org.onosproject.net.meter.MeterRequest; | ||
58 | import org.onosproject.net.statistic.Load; | 59 | import org.onosproject.net.statistic.Load; |
59 | import org.onosproject.net.topology.Topology; | 60 | import org.onosproject.net.topology.Topology; |
60 | import org.onosproject.net.topology.TopologyCluster; | 61 | import org.onosproject.net.topology.TopologyCluster; |
... | @@ -107,6 +108,7 @@ public class CodecManager implements CodecService { | ... | @@ -107,6 +108,7 @@ public class CodecManager implements CodecService { |
107 | registerCodec(Driver.class, new DriverCodec()); | 108 | registerCodec(Driver.class, new DriverCodec()); |
108 | registerCodec(GroupBucket.class, new GroupBucketCodec()); | 109 | registerCodec(GroupBucket.class, new GroupBucketCodec()); |
109 | registerCodec(Load.class, new LoadCodec()); | 110 | registerCodec(Load.class, new LoadCodec()); |
111 | + registerCodec(MeterRequest.class, new MeterRequestCodec()); | ||
110 | registerCodec(Meter.class, new MeterCodec()); | 112 | registerCodec(Meter.class, new MeterCodec()); |
111 | registerCodec(Band.class, new MeterBandCodec()); | 113 | registerCodec(Band.class, new MeterBandCodec()); |
112 | registerCodec(TableStatisticsEntry.class, new TableStatisticsEntryCodec()); | 114 | registerCodec(TableStatisticsEntry.class, new TableStatisticsEntryCodec()); | ... | ... |
... | @@ -15,26 +15,15 @@ | ... | @@ -15,26 +15,15 @@ |
15 | */ | 15 | */ |
16 | package org.onosproject.codec.impl; | 16 | package org.onosproject.codec.impl; |
17 | 17 | ||
18 | -import com.fasterxml.jackson.databind.JsonNode; | ||
19 | import com.fasterxml.jackson.databind.node.ArrayNode; | 18 | import com.fasterxml.jackson.databind.node.ArrayNode; |
20 | import com.fasterxml.jackson.databind.node.ObjectNode; | 19 | import com.fasterxml.jackson.databind.node.ObjectNode; |
21 | import org.onosproject.codec.CodecContext; | 20 | import org.onosproject.codec.CodecContext; |
22 | import org.onosproject.codec.JsonCodec; | 21 | import org.onosproject.codec.JsonCodec; |
23 | -import org.onosproject.core.ApplicationId; | ||
24 | -import org.onosproject.core.CoreService; | ||
25 | -import org.onosproject.net.DeviceId; | ||
26 | import org.onosproject.net.meter.Band; | 22 | import org.onosproject.net.meter.Band; |
27 | -import org.onosproject.net.meter.DefaultMeter; | ||
28 | import org.onosproject.net.meter.Meter; | 23 | import org.onosproject.net.meter.Meter; |
29 | -import org.onosproject.net.meter.MeterId; | ||
30 | import org.slf4j.Logger; | 24 | import org.slf4j.Logger; |
31 | 25 | ||
32 | -import java.util.ArrayList; | ||
33 | -import java.util.List; | ||
34 | -import java.util.stream.IntStream; | ||
35 | - | ||
36 | import static com.google.common.base.Preconditions.checkNotNull; | 26 | import static com.google.common.base.Preconditions.checkNotNull; |
37 | -import static org.onlab.util.Tools.nullIsIllegal; | ||
38 | import static org.slf4j.LoggerFactory.getLogger; | 27 | import static org.slf4j.LoggerFactory.getLogger; |
39 | 28 | ||
40 | 29 | ||
... | @@ -57,7 +46,6 @@ public final class MeterCodec extends JsonCodec<Meter> { | ... | @@ -57,7 +46,6 @@ public final class MeterCodec extends JsonCodec<Meter> { |
57 | private static final String UNIT = "unit"; | 46 | private static final String UNIT = "unit"; |
58 | private static final String BANDS = "bands"; | 47 | private static final String BANDS = "bands"; |
59 | public static final String REST_APP_ID = "org.onosproject.rest"; | 48 | public static final String REST_APP_ID = "org.onosproject.rest"; |
60 | - private static final String MISSING_MEMBER_MESSAGE = " member is required in Meter"; | ||
61 | 49 | ||
62 | @Override | 50 | @Override |
63 | public ObjectNode encode(Meter meter, CodecContext context) { | 51 | public ObjectNode encode(Meter meter, CodecContext context) { |
... | @@ -88,79 +76,4 @@ public final class MeterCodec extends JsonCodec<Meter> { | ... | @@ -88,79 +76,4 @@ public final class MeterCodec extends JsonCodec<Meter> { |
88 | result.set(BANDS, bands); | 76 | result.set(BANDS, bands); |
89 | return result; | 77 | return result; |
90 | } | 78 | } |
91 | - | ||
92 | - @Override | ||
93 | - public Meter decode(ObjectNode json, CodecContext context) { | ||
94 | - if (json == null || !json.isObject()) { | ||
95 | - return null; | ||
96 | - } | ||
97 | - | ||
98 | - final JsonCodec<Band> meterBandCodec = context.codec(Band.class); | ||
99 | - CoreService coreService = context.getService(CoreService.class); | ||
100 | - | ||
101 | - // parse meter id | ||
102 | - int meterIdInt = nullIsIllegal(json.get(ID), ID + MISSING_MEMBER_MESSAGE).asInt(); | ||
103 | - MeterId meterId = MeterId.meterId(meterIdInt); | ||
104 | - | ||
105 | - // parse device id | ||
106 | - DeviceId deviceId = DeviceId.deviceId(nullIsIllegal(json.get(DEVICE_ID), | ||
107 | - DEVICE_ID + MISSING_MEMBER_MESSAGE).asText()); | ||
108 | - | ||
109 | - // application id | ||
110 | - ApplicationId appId = coreService.registerApplication(REST_APP_ID); | ||
111 | - | ||
112 | - // parse burst | ||
113 | - boolean burst = false; | ||
114 | - JsonNode burstJson = json.get("burst"); | ||
115 | - if (burstJson != null) { | ||
116 | - burst = burstJson.asBoolean(); | ||
117 | - } | ||
118 | - | ||
119 | - // parse unit type | ||
120 | - String unit = nullIsIllegal(json.get(UNIT), UNIT + MISSING_MEMBER_MESSAGE).asText(); | ||
121 | - Meter.Unit meterUnit; | ||
122 | - | ||
123 | - switch (unit) { | ||
124 | - case "KB_PER_SEC": | ||
125 | - meterUnit = Meter.Unit.KB_PER_SEC; | ||
126 | - break; | ||
127 | - case "PKTS_PER_SEC": | ||
128 | - meterUnit = Meter.Unit.PKTS_PER_SEC; | ||
129 | - break; | ||
130 | - default: | ||
131 | - log.warn("The requested unit {} is not defined for meter.", unit); | ||
132 | - return null; | ||
133 | - } | ||
134 | - | ||
135 | - // parse meter bands | ||
136 | - List<Band> bandList = new ArrayList<>(); | ||
137 | - JsonNode bandsJson = json.get(BANDS); | ||
138 | - checkNotNull(bandsJson); | ||
139 | - if (bandsJson != null) { | ||
140 | - IntStream.range(0, bandsJson.size()).forEach(i -> { | ||
141 | - ObjectNode bandJson = get(bandsJson, i); | ||
142 | - bandList.add(meterBandCodec.decode(bandJson, context)); | ||
143 | - }); | ||
144 | - } | ||
145 | - | ||
146 | - Meter meter; | ||
147 | - if (burst) { | ||
148 | - meter = DefaultMeter.builder() | ||
149 | - .withId(meterId) | ||
150 | - .fromApp(appId) | ||
151 | - .forDevice(deviceId) | ||
152 | - .withUnit(meterUnit) | ||
153 | - .withBands(bandList) | ||
154 | - .burst().build(); | ||
155 | - } else { | ||
156 | - meter = DefaultMeter.builder() | ||
157 | - .withId(meterId) | ||
158 | - .fromApp(appId) | ||
159 | - .forDevice(deviceId) | ||
160 | - .withUnit(meterUnit) | ||
161 | - .withBands(bandList).build(); | ||
162 | - } | ||
163 | - | ||
164 | - return meter; | ||
165 | - } | ||
166 | } | 79 | } | ... | ... |
1 | +/* | ||
2 | + * Copyright 2016 Open Networking Laboratory | ||
3 | + * | ||
4 | + * Licensed under the Apache License, Version 2.0 (the "License"); | ||
5 | + * you may not use this file except in compliance with the License. | ||
6 | + * You may obtain a copy of the License at | ||
7 | + * | ||
8 | + * http://www.apache.org/licenses/LICENSE-2.0 | ||
9 | + * | ||
10 | + * Unless required by applicable law or agreed to in writing, software | ||
11 | + * distributed under the License is distributed on an "AS IS" BASIS, | ||
12 | + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. | ||
13 | + * See the License for the specific language governing permissions and | ||
14 | + * limitations under the License. | ||
15 | + */ | ||
16 | +package org.onosproject.codec.impl; | ||
17 | + | ||
18 | +import com.fasterxml.jackson.databind.JsonNode; | ||
19 | +import com.fasterxml.jackson.databind.node.ObjectNode; | ||
20 | +import org.onosproject.codec.CodecContext; | ||
21 | +import org.onosproject.codec.JsonCodec; | ||
22 | +import org.onosproject.core.ApplicationId; | ||
23 | +import org.onosproject.core.CoreService; | ||
24 | +import org.onosproject.net.DeviceId; | ||
25 | +import org.onosproject.net.meter.Band; | ||
26 | +import org.onosproject.net.meter.DefaultMeterRequest; | ||
27 | +import org.onosproject.net.meter.Meter; | ||
28 | +import org.onosproject.net.meter.MeterRequest; | ||
29 | +import org.slf4j.Logger; | ||
30 | + | ||
31 | +import java.util.ArrayList; | ||
32 | +import java.util.List; | ||
33 | +import java.util.stream.IntStream; | ||
34 | + | ||
35 | +import static com.google.common.base.Preconditions.checkNotNull; | ||
36 | +import static org.onlab.util.Tools.nullIsIllegal; | ||
37 | +import static org.slf4j.LoggerFactory.getLogger; | ||
38 | + | ||
39 | +/** | ||
40 | + * MeterRequest JSON codec. | ||
41 | + */ | ||
42 | +public final class MeterRequestCodec extends JsonCodec<MeterRequest> { | ||
43 | + private final Logger log = getLogger(getClass()); | ||
44 | + | ||
45 | + // JSON field names | ||
46 | + private static final String DEVICE_ID = "deviceId"; | ||
47 | + private static final String UNIT = "unit"; | ||
48 | + private static final String BANDS = "bands"; | ||
49 | + public static final String REST_APP_ID = "org.onosproject.rest"; | ||
50 | + private static final String MISSING_MEMBER_MESSAGE = " member is required in MeterRequest"; | ||
51 | + | ||
52 | + @Override | ||
53 | + public MeterRequest decode(ObjectNode json, CodecContext context) { | ||
54 | + if (json == null || !json.isObject()) { | ||
55 | + return null; | ||
56 | + } | ||
57 | + | ||
58 | + final JsonCodec<Band> meterBandCodec = context.codec(Band.class); | ||
59 | + CoreService coreService = context.getService(CoreService.class); | ||
60 | + | ||
61 | + // parse device id | ||
62 | + DeviceId deviceId = DeviceId.deviceId(nullIsIllegal(json.get(DEVICE_ID), | ||
63 | + DEVICE_ID + MISSING_MEMBER_MESSAGE).asText()); | ||
64 | + | ||
65 | + // application id | ||
66 | + ApplicationId appId = coreService.registerApplication(REST_APP_ID); | ||
67 | + | ||
68 | + // parse burst | ||
69 | + boolean burst = false; | ||
70 | + JsonNode burstJson = json.get("burst"); | ||
71 | + if (burstJson != null) { | ||
72 | + burst = burstJson.asBoolean(); | ||
73 | + } | ||
74 | + | ||
75 | + // parse unit type | ||
76 | + String unit = nullIsIllegal(json.get(UNIT), UNIT + MISSING_MEMBER_MESSAGE).asText(); | ||
77 | + Meter.Unit meterUnit; | ||
78 | + | ||
79 | + switch (unit) { | ||
80 | + case "KB_PER_SEC": | ||
81 | + meterUnit = Meter.Unit.KB_PER_SEC; | ||
82 | + break; | ||
83 | + case "PKTS_PER_SEC": | ||
84 | + meterUnit = Meter.Unit.PKTS_PER_SEC; | ||
85 | + break; | ||
86 | + default: | ||
87 | + log.warn("The requested unit {} is not defined for meter.", unit); | ||
88 | + return null; | ||
89 | + } | ||
90 | + | ||
91 | + // parse meter bands | ||
92 | + List<Band> bandList = new ArrayList<>(); | ||
93 | + JsonNode bandsJson = json.get(BANDS); | ||
94 | + checkNotNull(bandsJson); | ||
95 | + if (bandsJson != null) { | ||
96 | + IntStream.range(0, bandsJson.size()).forEach(i -> { | ||
97 | + ObjectNode bandJson = get(bandsJson, i); | ||
98 | + bandList.add(meterBandCodec.decode(bandJson, context)); | ||
99 | + }); | ||
100 | + } | ||
101 | + | ||
102 | + MeterRequest meterRequest; | ||
103 | + if (burst) { | ||
104 | + meterRequest = DefaultMeterRequest.builder() | ||
105 | + .fromApp(appId) | ||
106 | + .forDevice(deviceId) | ||
107 | + .withUnit(meterUnit) | ||
108 | + .withBands(bandList) | ||
109 | + .burst().add(); | ||
110 | + } else { | ||
111 | + meterRequest = DefaultMeterRequest.builder() | ||
112 | + .fromApp(appId) | ||
113 | + .forDevice(deviceId) | ||
114 | + .withUnit(meterUnit) | ||
115 | + .withBands(bandList).add(); | ||
116 | + } | ||
117 | + | ||
118 | + return meterRequest; | ||
119 | + } | ||
120 | +} |
1 | /* | 1 | /* |
2 | - * Copyright 2015 Open Networking Laboratory | 2 | + * Copyright 2015-2016 Open Networking Laboratory |
3 | * | 3 | * |
4 | * Licensed under the Apache License, Version 2.0 (the "License"); | 4 | * Licensed under the Apache License, Version 2.0 (the "License"); |
5 | * you may not use this file except in compliance with the License. | 5 | * you may not use this file except in compliance with the License. |
... | @@ -15,7 +15,6 @@ | ... | @@ -15,7 +15,6 @@ |
15 | */ | 15 | */ |
16 | package org.onosproject.codec.impl; | 16 | package org.onosproject.codec.impl; |
17 | 17 | ||
18 | -import com.fasterxml.jackson.databind.JsonNode; | ||
19 | import com.fasterxml.jackson.databind.node.ObjectNode; | 18 | import com.fasterxml.jackson.databind.node.ObjectNode; |
20 | import com.google.common.collect.ImmutableList; | 19 | import com.google.common.collect.ImmutableList; |
21 | import org.junit.Before; | 20 | import org.junit.Before; |
... | @@ -29,14 +28,10 @@ import org.onosproject.net.meter.DefaultMeter; | ... | @@ -29,14 +28,10 @@ import org.onosproject.net.meter.DefaultMeter; |
29 | import org.onosproject.net.meter.Meter; | 28 | import org.onosproject.net.meter.Meter; |
30 | import org.onosproject.net.meter.MeterId; | 29 | import org.onosproject.net.meter.MeterId; |
31 | 30 | ||
32 | -import java.io.IOException; | ||
33 | -import java.io.InputStream; | ||
34 | - | ||
35 | import static org.easymock.EasyMock.createMock; | 31 | import static org.easymock.EasyMock.createMock; |
36 | import static org.easymock.EasyMock.expect; | 32 | import static org.easymock.EasyMock.expect; |
37 | import static org.easymock.EasyMock.replay; | 33 | import static org.easymock.EasyMock.replay; |
38 | import static org.hamcrest.MatcherAssert.assertThat; | 34 | import static org.hamcrest.MatcherAssert.assertThat; |
39 | -import static org.hamcrest.Matchers.is; | ||
40 | import static org.hamcrest.Matchers.notNullValue; | 35 | import static org.hamcrest.Matchers.notNullValue; |
41 | import static org.onosproject.codec.impl.MeterJsonMatcher.matchesMeter; | 36 | import static org.onosproject.codec.impl.MeterJsonMatcher.matchesMeter; |
42 | import static org.onosproject.net.NetTestTools.APP_ID; | 37 | import static org.onosproject.net.NetTestTools.APP_ID; |
... | @@ -91,48 +86,4 @@ public class MeterCodecTest { | ... | @@ -91,48 +86,4 @@ public class MeterCodecTest { |
91 | ObjectNode meterJson = meterCodec.encode(meter, context); | 86 | ObjectNode meterJson = meterCodec.encode(meter, context); |
92 | assertThat(meterJson, matchesMeter(meter)); | 87 | assertThat(meterJson, matchesMeter(meter)); |
93 | } | 88 | } |
94 | - | ||
95 | - /** | ||
96 | - * Test decoding of a Meter object. | ||
97 | - */ | ||
98 | - @Test | ||
99 | - public void testMeterDecode() throws IOException { | ||
100 | - Meter meter = getMeter("simple-meter.json"); | ||
101 | - checkCommonData(meter); | ||
102 | - | ||
103 | - assertThat(meter.bands().size(), is(1)); | ||
104 | - Band band = meter.bands().iterator().next(); | ||
105 | - assertThat(band.type().toString(), is("REMARK")); | ||
106 | - assertThat(band.rate(), is(10L)); | ||
107 | - assertThat(band.dropPrecedence(), is((short) 20)); | ||
108 | - assertThat(band.burst(), is(30L)); | ||
109 | - } | ||
110 | - | ||
111 | - /** | ||
112 | - * Checks that the data shared by all the resource is correct for a given meter. | ||
113 | - * | ||
114 | - * @param meter meter to check | ||
115 | - */ | ||
116 | - private void checkCommonData(Meter meter) { | ||
117 | - assertThat(meter.id().id(), is(1L)); | ||
118 | - assertThat(meter.deviceId().toString(), is("of:0000000000000001")); | ||
119 | - assertThat(meter.appId(), is(APP_ID)); | ||
120 | - assertThat(meter.unit().toString(), is("KB_PER_SEC")); | ||
121 | - } | ||
122 | - | ||
123 | - /** | ||
124 | - * Reads in a meter from the given resource and decodes it. | ||
125 | - * | ||
126 | - * @param resourceName resource to use to read the JSON for the rule | ||
127 | - * @return decoded meter | ||
128 | - * @throws IOException if processing the resource fails | ||
129 | - */ | ||
130 | - private Meter getMeter(String resourceName) throws IOException { | ||
131 | - InputStream jsonStream = MeterCodecTest.class.getResourceAsStream(resourceName); | ||
132 | - JsonNode json = context.mapper().readTree(jsonStream); | ||
133 | - assertThat(json, notNullValue()); | ||
134 | - Meter meter = meterCodec.decode((ObjectNode) json, context); | ||
135 | - assertThat(meter, notNullValue()); | ||
136 | - return meter; | ||
137 | - } | ||
138 | } | 89 | } | ... | ... |
1 | +/* | ||
2 | + * Copyright 2016 Open Networking Laboratory | ||
3 | + * | ||
4 | + * Licensed under the Apache License, Version 2.0 (the "License"); | ||
5 | + * you may not use this file except in compliance with the License. | ||
6 | + * You may obtain a copy of the License at | ||
7 | + * | ||
8 | + * http://www.apache.org/licenses/LICENSE-2.0 | ||
9 | + * | ||
10 | + * Unless required by applicable law or agreed to in writing, software | ||
11 | + * distributed under the License is distributed on an "AS IS" BASIS, | ||
12 | + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. | ||
13 | + * See the License for the specific language governing permissions and | ||
14 | + * limitations under the License. | ||
15 | + */ | ||
16 | +package org.onosproject.codec.impl; | ||
17 | + | ||
18 | +import com.fasterxml.jackson.databind.JsonNode; | ||
19 | +import com.fasterxml.jackson.databind.node.ObjectNode; | ||
20 | +import org.junit.Before; | ||
21 | +import org.junit.Test; | ||
22 | +import org.onosproject.codec.JsonCodec; | ||
23 | +import org.onosproject.core.CoreService; | ||
24 | +import org.onosproject.net.meter.Band; | ||
25 | +import org.onosproject.net.meter.MeterRequest; | ||
26 | + | ||
27 | +import java.io.IOException; | ||
28 | +import java.io.InputStream; | ||
29 | + | ||
30 | +import static org.easymock.EasyMock.createMock; | ||
31 | +import static org.easymock.EasyMock.expect; | ||
32 | +import static org.easymock.EasyMock.replay; | ||
33 | +import static org.hamcrest.MatcherAssert.assertThat; | ||
34 | +import static org.hamcrest.Matchers.is; | ||
35 | +import static org.hamcrest.Matchers.notNullValue; | ||
36 | +import static org.onosproject.net.NetTestTools.APP_ID; | ||
37 | + | ||
38 | +/** | ||
39 | + * Unit tests for MeterRequest codec. | ||
40 | + */ | ||
41 | +public class MeterRequestCodecTest { | ||
42 | + MockCodecContext context; | ||
43 | + JsonCodec<MeterRequest> meterRequestCodec; | ||
44 | + final CoreService mockCoreService = createMock(CoreService.class); | ||
45 | + | ||
46 | + /** | ||
47 | + * Sets up for each test. Creates a context and fetches the meterRequest | ||
48 | + * codec. | ||
49 | + */ | ||
50 | + @Before | ||
51 | + public void setUp() { | ||
52 | + context = new MockCodecContext(); | ||
53 | + meterRequestCodec = context.codec(MeterRequest.class); | ||
54 | + assertThat(meterRequestCodec, notNullValue()); | ||
55 | + | ||
56 | + expect(mockCoreService.registerApplication(MeterCodec.REST_APP_ID)) | ||
57 | + .andReturn(APP_ID).anyTimes(); | ||
58 | + replay(mockCoreService); | ||
59 | + context.registerService(CoreService.class, mockCoreService); | ||
60 | + } | ||
61 | + | ||
62 | + /** | ||
63 | + * Test decoding of a MeterRequest object. | ||
64 | + */ | ||
65 | + @Test | ||
66 | + public void testMeterRequestDecode() throws IOException { | ||
67 | + MeterRequest meterRequest = getMeterRequest("simple-meter-request.json"); | ||
68 | + checkCommonData(meterRequest); | ||
69 | + | ||
70 | + assertThat(meterRequest.bands().size(), is(1)); | ||
71 | + Band band = meterRequest.bands().iterator().next(); | ||
72 | + assertThat(band.type().toString(), is("REMARK")); | ||
73 | + assertThat(band.rate(), is(10L)); | ||
74 | + assertThat(band.dropPrecedence(), is((short) 20)); | ||
75 | + assertThat(band.burst(), is(30L)); | ||
76 | + } | ||
77 | + | ||
78 | + /** | ||
79 | + * Checks that the data shared by all the resource is correct for a given meterRequest. | ||
80 | + * | ||
81 | + * @param meterRequest meterRequest to check | ||
82 | + */ | ||
83 | + private void checkCommonData(MeterRequest meterRequest) { | ||
84 | + assertThat(meterRequest.deviceId().toString(), is("of:0000000000000001")); | ||
85 | + assertThat(meterRequest.appId(), is(APP_ID)); | ||
86 | + assertThat(meterRequest.unit().toString(), is("KB_PER_SEC")); | ||
87 | + } | ||
88 | + | ||
89 | + /** | ||
90 | + * Reads in a meter from the given resource and decodes it. | ||
91 | + * | ||
92 | + * @param resourceName resource to use to read the JSON for the rule | ||
93 | + * @return decoded meterRequest | ||
94 | + * @throws IOException if processing the resource fails | ||
95 | + */ | ||
96 | + private MeterRequest getMeterRequest(String resourceName) throws IOException { | ||
97 | + InputStream jsonStream = MeterRequestCodecTest.class.getResourceAsStream(resourceName); | ||
98 | + JsonNode json = context.mapper().readTree(jsonStream); | ||
99 | + assertThat(json, notNullValue()); | ||
100 | + MeterRequest meterRequest = meterRequestCodec.decode((ObjectNode) json, context); | ||
101 | + assertThat(meterRequest, notNullValue()); | ||
102 | + return meterRequest; | ||
103 | + } | ||
104 | +} |
... | @@ -141,8 +141,7 @@ public class MetersWebResource extends AbstractWebResource { | ... | @@ -141,8 +141,7 @@ public class MetersWebResource extends AbstractWebResource { |
141 | throw new IllegalArgumentException(DEVICE_INVALID); | 141 | throw new IllegalArgumentException(DEVICE_INVALID); |
142 | } | 142 | } |
143 | jsonTree.put("deviceId", deviceId); | 143 | jsonTree.put("deviceId", deviceId); |
144 | - final Meter tmpMeter = codec(Meter.class).decode(jsonTree, this); | 144 | + final MeterRequest meterRequest = codec(MeterRequest.class).decode(jsonTree, this); |
145 | - final MeterRequest meterRequest = meterToMeterRequest(tmpMeter, "ADD"); | ||
146 | final Meter meter = meterService.submit(meterRequest); | 145 | final Meter meter = meterService.submit(meterRequest); |
147 | location = new URI(Long.toString(meter.id().id())); | 146 | location = new URI(Long.toString(meter.id().id())); |
148 | } catch (IOException | URISyntaxException ex) { | 147 | } catch (IOException | URISyntaxException ex) { | ... | ... |
... | @@ -2,17 +2,12 @@ | ... | @@ -2,17 +2,12 @@ |
2 | "type": "object", | 2 | "type": "object", |
3 | "title": "meter", | 3 | "title": "meter", |
4 | "required": [ | 4 | "required": [ |
5 | - "id", | ||
6 | "deviceId", | 5 | "deviceId", |
7 | "unit", | 6 | "unit", |
8 | "burst", | 7 | "burst", |
9 | "bands" | 8 | "bands" |
10 | ], | 9 | ], |
11 | "properties": { | 10 | "properties": { |
12 | - "id": { | ||
13 | - "type": "string", | ||
14 | - "example": "1" | ||
15 | - }, | ||
16 | "deviceId": { | 11 | "deviceId": { |
17 | "type": "string", | 12 | "type": "string", |
18 | "example": "of:0000000000000001" | 13 | "example": "of:0000000000000001" | ... | ... |
-
Please register or login to post a comment