Committed by
Gerrit Code Review
[Emu] Defining classes for ODU SIGID and SIGTYPE Fields in Flow Criteria and Ins…
…truction - Data Model and Tests only Change-Id: I3a71520caa286a1fcc509c581036ef4848de9b5b
Showing
13 changed files
with
623 additions
and
16 deletions
1 | +/* | ||
2 | + * Copyright 2015 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.net; | ||
17 | + | ||
18 | +import static com.google.common.base.Preconditions.checkArgument; | ||
19 | + | ||
20 | +import java.util.Arrays; | ||
21 | +import java.util.Objects; | ||
22 | + | ||
23 | +import org.onlab.util.HexString; | ||
24 | + | ||
25 | +import com.google.common.base.MoreObjects; | ||
26 | +/** | ||
27 | + * Implementation of ODU Signal ID. | ||
28 | + * | ||
29 | + * <p> | ||
30 | + * See ITU G.709 "Interfaces for the Optical Transport Network (OTN)". | ||
31 | + * </p> | ||
32 | + */ | ||
33 | +public class OduSignalId { | ||
34 | + | ||
35 | + private final int tributaryPortNumber; // Tributary Port number | ||
36 | + private final int tributarySlotLength; // Number of Tributary Slots included in tsmap | ||
37 | + private final byte[] tributarySlotBitmap; // Tributary slot bitmap | ||
38 | + | ||
39 | + public static final int TRIBUTARY_SLOT_BITMAP_SIZE = 10; | ||
40 | + | ||
41 | + /** | ||
42 | + * Creates an instance with the specified arguments. | ||
43 | + * | ||
44 | + * @param tributaryPortNumber tributary port number | ||
45 | + * @param tributarySlotLen tributary slot len | ||
46 | + * @param tributarySlotBitmap tributary slot bitmap | ||
47 | + */ | ||
48 | + public OduSignalId(int tributaryPortNumber, int tributarySlotLen, | ||
49 | + byte[] tributarySlotBitmap) { | ||
50 | + | ||
51 | + checkArgument(tributaryPortNumber <= 80 , | ||
52 | + "tributaryPortNumber %s must be <= 80 ", | ||
53 | + tributaryPortNumber); | ||
54 | + | ||
55 | + checkArgument(tributarySlotBitmap.length == TRIBUTARY_SLOT_BITMAP_SIZE, | ||
56 | + "number of elements in list " + HexString.toHexString(tributarySlotBitmap) | ||
57 | + + " must be equal to " + TRIBUTARY_SLOT_BITMAP_SIZE); | ||
58 | + | ||
59 | + checkArgument(tributarySlotLen <= 80 , | ||
60 | + "tributarySlotLen %s must be <= 80 ", | ||
61 | + tributarySlotLen); | ||
62 | + | ||
63 | + this.tributaryPortNumber = tributaryPortNumber; | ||
64 | + this.tributarySlotLength = tributarySlotLen; | ||
65 | + this.tributarySlotBitmap = Arrays.copyOf(tributarySlotBitmap, tributarySlotBitmap.length); | ||
66 | + } | ||
67 | + | ||
68 | + /** | ||
69 | + * Returns the OduSignalId representing the specified parameters. | ||
70 | + * | ||
71 | + * @param tributaryPortNumber tributary port number | ||
72 | + * @param tributarySlotLen tributary slot len | ||
73 | + * @param tributarySlotBitmap tributary slot bitmap | ||
74 | + * @return OduSignalId | ||
75 | + */ | ||
76 | + public static OduSignalId oduSignalId(int tributaryPortNumber, int tributarySlotLen, | ||
77 | + byte[] tributarySlotBitmap) { | ||
78 | + return new OduSignalId(tributaryPortNumber, tributarySlotLen, tributarySlotBitmap); | ||
79 | + } | ||
80 | + | ||
81 | + | ||
82 | + /** | ||
83 | + * Returns tributary port number. | ||
84 | + * | ||
85 | + * @return the tributaryPortNumber | ||
86 | + */ | ||
87 | + public int tributaryPortNumber() { | ||
88 | + return tributaryPortNumber; | ||
89 | + } | ||
90 | + | ||
91 | + /** | ||
92 | + * Returns tributary slot length. | ||
93 | + * | ||
94 | + * @return the tributarySlotLen | ||
95 | + */ | ||
96 | + public int tributarySlotLength() { | ||
97 | + return tributarySlotLength; | ||
98 | + } | ||
99 | + | ||
100 | + /** | ||
101 | + * Returns tributary slot bitmap. | ||
102 | + * | ||
103 | + * @return the tributarySlotBitmap | ||
104 | + */ | ||
105 | + public byte[] tributarySlotBitmap() { | ||
106 | + return Arrays.copyOf(tributarySlotBitmap, tributarySlotBitmap.length); | ||
107 | + } | ||
108 | + | ||
109 | + @Override | ||
110 | + public int hashCode() { | ||
111 | + return Objects.hash(tributaryPortNumber, tributarySlotLength, Arrays.hashCode(tributarySlotBitmap)); | ||
112 | + } | ||
113 | + | ||
114 | + @Override | ||
115 | + public boolean equals(Object obj) { | ||
116 | + if (this == obj) { | ||
117 | + return true; | ||
118 | + } | ||
119 | + if (!(obj instanceof OduSignalId)) { | ||
120 | + return false; | ||
121 | + } | ||
122 | + final OduSignalId other = (OduSignalId) obj; | ||
123 | + return Objects.equals(this.tributaryPortNumber, other.tributaryPortNumber) | ||
124 | + && Objects.equals(this.tributarySlotLength, other.tributarySlotLength) | ||
125 | + && Arrays.equals(tributarySlotBitmap, other.tributarySlotBitmap); | ||
126 | + } | ||
127 | + | ||
128 | + @Override | ||
129 | + public String toString() { | ||
130 | + return MoreObjects.toStringHelper(this) | ||
131 | + .omitNullValues() | ||
132 | + .add("tributaryPortNumber", tributaryPortNumber) | ||
133 | + .add("tributarySlotLength", tributarySlotLength) | ||
134 | + .add("tributarySlotBitmap", HexString.toHexString(tributarySlotBitmap)) | ||
135 | + .toString(); | ||
136 | + } | ||
137 | + | ||
138 | +} | ||
139 | + |
... | @@ -25,6 +25,8 @@ import org.onlab.packet.VlanId; | ... | @@ -25,6 +25,8 @@ import org.onlab.packet.VlanId; |
25 | import org.onosproject.net.IndexedLambda; | 25 | import org.onosproject.net.IndexedLambda; |
26 | import org.onosproject.net.Lambda; | 26 | import org.onosproject.net.Lambda; |
27 | import org.onosproject.net.OchSignal; | 27 | import org.onosproject.net.OchSignal; |
28 | +import org.onosproject.net.OduSignalId; | ||
29 | +import org.onosproject.net.OduSignalType; | ||
28 | import org.onosproject.net.PortNumber; | 30 | import org.onosproject.net.PortNumber; |
29 | import org.onosproject.net.flow.criteria.Criterion.Type; | 31 | import org.onosproject.net.flow.criteria.Criterion.Type; |
30 | import org.onosproject.net.OchSignalType; | 32 | import org.onosproject.net.OchSignalType; |
... | @@ -486,6 +488,26 @@ public final class Criteria { | ... | @@ -486,6 +488,26 @@ public final class Criteria { |
486 | return new OchSignalTypeCriterion(signalType); | 488 | return new OchSignalTypeCriterion(signalType); |
487 | } | 489 | } |
488 | 490 | ||
491 | + /** | ||
492 | + * Creates a match on ODU (Optical channel Data Unit) signal ID using the specified value. | ||
493 | + * | ||
494 | + * @param oduSignalId ODU Signal Id | ||
495 | + * @return match criterion | ||
496 | + */ | ||
497 | + public static Criterion matchOduSignalId(OduSignalId oduSignalId) { | ||
498 | + return new OduSignalIdCriterion(oduSignalId); | ||
499 | + } | ||
500 | + | ||
501 | + /** | ||
502 | + * Creates a match on ODU (Optical channel Data Unit) signal Type using the specified value. | ||
503 | + * | ||
504 | + * @param signalType ODU Signal Type | ||
505 | + * @return match criterion | ||
506 | + */ | ||
507 | + public static Criterion matchOduSignalType(OduSignalType signalType) { | ||
508 | + return new OduSignalTypeCriterion(signalType); | ||
509 | + } | ||
510 | + | ||
489 | public static Criterion dummy() { | 511 | public static Criterion dummy() { |
490 | return new DummyCriterion(); | 512 | return new DummyCriterion(); |
491 | } | 513 | } | ... | ... |
... | @@ -125,6 +125,10 @@ public interface Criterion { | ... | @@ -125,6 +125,10 @@ public interface Criterion { |
125 | OCH_SIGID, | 125 | OCH_SIGID, |
126 | /** Optical channel signal type (fixed or flexible). */ | 126 | /** Optical channel signal type (fixed or flexible). */ |
127 | OCH_SIGTYPE, | 127 | OCH_SIGTYPE, |
128 | + /** ODU (Optical channel Data Unit) signal ID. */ | ||
129 | + ODU_SIGID, | ||
130 | + /** ODU (Optical channel Data Unit) signal type. */ | ||
131 | + ODU_SIGTYPE, | ||
128 | 132 | ||
129 | /** | 133 | /** |
130 | * An empty criterion. | 134 | * An empty criterion. | ... | ... |
1 | +/* | ||
2 | + * Copyright 2015 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.net.flow.criteria; | ||
17 | + | ||
18 | +import static com.google.common.base.MoreObjects.toStringHelper; | ||
19 | +import static com.google.common.base.Preconditions.checkNotNull; | ||
20 | + | ||
21 | +import java.util.Objects; | ||
22 | + | ||
23 | +import org.onosproject.net.OduSignalId; | ||
24 | + | ||
25 | +/** | ||
26 | + * Implementation of ODU (Optical channel Data Unit) signal ID signal criterion. | ||
27 | + * This criterion is based on the specification of "OFPXMT_EXP_ODU_SIGID" in | ||
28 | + * Open Networking Foundation "Optical Transport Protocol Extension Version 1.0", but | ||
29 | + * defined in protocol agnostic way. | ||
30 | + */ | ||
31 | +public final class OduSignalIdCriterion implements Criterion { | ||
32 | + | ||
33 | + private final OduSignalId oduSignalId; | ||
34 | + | ||
35 | + /** | ||
36 | + * Create an instance with the specified ODU signal ID. | ||
37 | + * | ||
38 | + * @param oduSignalId - ODU signal ID | ||
39 | + */ | ||
40 | + OduSignalIdCriterion(OduSignalId oduSignalId) { | ||
41 | + this.oduSignalId = checkNotNull(oduSignalId); | ||
42 | + } | ||
43 | + | ||
44 | + @Override | ||
45 | + public Type type() { | ||
46 | + return Type.ODU_SIGID; | ||
47 | + } | ||
48 | + | ||
49 | + /** | ||
50 | + * Returns the ODU Signal to match. | ||
51 | + * | ||
52 | + * @return the ODU signal to match | ||
53 | + */ | ||
54 | + public OduSignalId oduSignalId() { | ||
55 | + return oduSignalId; | ||
56 | + } | ||
57 | + | ||
58 | + @Override | ||
59 | + public int hashCode() { | ||
60 | + return Objects.hash(type(), oduSignalId); | ||
61 | + } | ||
62 | + | ||
63 | + @Override | ||
64 | + public boolean equals(Object obj) { | ||
65 | + if (this == obj) { | ||
66 | + return true; | ||
67 | + } | ||
68 | + if (!(obj instanceof OduSignalIdCriterion)) { | ||
69 | + return false; | ||
70 | + } | ||
71 | + final OduSignalIdCriterion that = (OduSignalIdCriterion) obj; | ||
72 | + return Objects.equals(this.oduSignalId, that.oduSignalId); | ||
73 | + } | ||
74 | + | ||
75 | + @Override | ||
76 | + public String toString() { | ||
77 | + return toStringHelper(type().toString()) | ||
78 | + .add("oduSignalId", oduSignalId) | ||
79 | + .toString(); | ||
80 | + } | ||
81 | + | ||
82 | +} |
1 | +/* | ||
2 | + * Copyright 2015 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.net.flow.criteria; | ||
17 | + | ||
18 | +import static com.google.common.base.MoreObjects.toStringHelper; | ||
19 | +import static com.google.common.base.Preconditions.checkNotNull; | ||
20 | + | ||
21 | +import java.util.Objects; | ||
22 | + | ||
23 | +import org.onosproject.net.OduSignalType; | ||
24 | + | ||
25 | +/** | ||
26 | + * Implementation of ODU (Optical channel Data Unit) signal Type criterion. | ||
27 | + * This criterion is based on the specification of "OFPXMT_EXP_ODU_SIGTYPE" in | ||
28 | + * Open Networking Foundation "Optical Transport Protocol Extension Version 1.0", but | ||
29 | + * defined in protocol agnostic way. | ||
30 | + */ | ||
31 | +public final class OduSignalTypeCriterion implements Criterion { | ||
32 | + | ||
33 | + private final OduSignalType signalType; | ||
34 | + | ||
35 | + /** | ||
36 | + * Create an instance with the specified ODU signal Type. | ||
37 | + * | ||
38 | + * @param signalType - ODU signal Type | ||
39 | + */ | ||
40 | + OduSignalTypeCriterion(OduSignalType signalType) { | ||
41 | + this.signalType = checkNotNull(signalType); | ||
42 | + } | ||
43 | + | ||
44 | + @Override | ||
45 | + public Type type() { | ||
46 | + return Type.ODU_SIGTYPE; | ||
47 | + } | ||
48 | + | ||
49 | + /** | ||
50 | + * Returns the ODU Signal Type to match. | ||
51 | + * | ||
52 | + * @return the ODU signal Type to match | ||
53 | + */ | ||
54 | + public OduSignalType signalType() { | ||
55 | + return signalType; | ||
56 | + } | ||
57 | + | ||
58 | + @Override | ||
59 | + public int hashCode() { | ||
60 | + return Objects.hash(type(), signalType); | ||
61 | + } | ||
62 | + | ||
63 | + @Override | ||
64 | + public boolean equals(Object obj) { | ||
65 | + if (this == obj) { | ||
66 | + return true; | ||
67 | + } | ||
68 | + if (!(obj instanceof OduSignalTypeCriterion)) { | ||
69 | + return false; | ||
70 | + } | ||
71 | + final OduSignalTypeCriterion that = (OduSignalTypeCriterion) obj; | ||
72 | + return Objects.equals(this.signalType, that.signalType); | ||
73 | + } | ||
74 | + | ||
75 | + @Override | ||
76 | + public String toString() { | ||
77 | + return toStringHelper(type().toString()) | ||
78 | + .add("signalType", signalType) | ||
79 | + .toString(); | ||
80 | + } | ||
81 | +} |
... | @@ -59,6 +59,11 @@ public interface Instruction { | ... | @@ -59,6 +59,11 @@ public interface Instruction { |
59 | L0MODIFICATION, | 59 | L0MODIFICATION, |
60 | 60 | ||
61 | /** | 61 | /** |
62 | + * Signifies that the traffic should be modified in L1 way. | ||
63 | + */ | ||
64 | + L1MODIFICATION, | ||
65 | + | ||
66 | + /** | ||
62 | * Signifies that the traffic should be modified in L2 way. | 67 | * Signifies that the traffic should be modified in L2 way. |
63 | */ | 68 | */ |
64 | L2MODIFICATION, | 69 | L2MODIFICATION, |
... | @@ -86,6 +91,7 @@ public interface Instruction { | ... | @@ -86,6 +91,7 @@ public interface Instruction { |
86 | 91 | ||
87 | /** | 92 | /** |
88 | * Returns the type of instruction. | 93 | * Returns the type of instruction. |
94 | + * | ||
89 | * @return type of instruction | 95 | * @return type of instruction |
90 | */ | 96 | */ |
91 | Type type(); | 97 | Type type(); | ... | ... |
... | @@ -25,10 +25,12 @@ import org.onosproject.core.GroupId; | ... | @@ -25,10 +25,12 @@ import org.onosproject.core.GroupId; |
25 | import org.onosproject.net.IndexedLambda; | 25 | import org.onosproject.net.IndexedLambda; |
26 | import org.onosproject.net.Lambda; | 26 | import org.onosproject.net.Lambda; |
27 | import org.onosproject.net.OchSignal; | 27 | import org.onosproject.net.OchSignal; |
28 | +import org.onosproject.net.OduSignalId; | ||
28 | import org.onosproject.net.PortNumber; | 29 | import org.onosproject.net.PortNumber; |
29 | import org.onosproject.net.flow.instructions.L0ModificationInstruction.L0SubType; | 30 | import org.onosproject.net.flow.instructions.L0ModificationInstruction.L0SubType; |
30 | import org.onosproject.net.flow.instructions.L0ModificationInstruction.ModLambdaInstruction; | 31 | import org.onosproject.net.flow.instructions.L0ModificationInstruction.ModLambdaInstruction; |
31 | import org.onosproject.net.flow.instructions.L0ModificationInstruction.ModOchSignalInstruction; | 32 | import org.onosproject.net.flow.instructions.L0ModificationInstruction.ModOchSignalInstruction; |
33 | +import org.onosproject.net.flow.instructions.L1ModificationInstruction.ModOduSignalIdInstruction; | ||
32 | import org.onosproject.net.flow.instructions.L3ModificationInstruction.L3SubType; | 34 | import org.onosproject.net.flow.instructions.L3ModificationInstruction.L3SubType; |
33 | import org.onosproject.net.flow.instructions.L3ModificationInstruction.ModIPInstruction; | 35 | import org.onosproject.net.flow.instructions.L3ModificationInstruction.ModIPInstruction; |
34 | import org.onosproject.net.flow.instructions.L3ModificationInstruction.ModIPv6FlowLabelInstruction; | 36 | import org.onosproject.net.flow.instructions.L3ModificationInstruction.ModIPv6FlowLabelInstruction; |
... | @@ -47,7 +49,6 @@ import static com.google.common.base.Preconditions.checkNotNull; | ... | @@ -47,7 +49,6 @@ import static com.google.common.base.Preconditions.checkNotNull; |
47 | */ | 49 | */ |
48 | public final class Instructions { | 50 | public final class Instructions { |
49 | 51 | ||
50 | - | ||
51 | // Ban construction | 52 | // Ban construction |
52 | private Instructions() {} | 53 | private Instructions() {} |
53 | 54 | ||
... | @@ -117,6 +118,16 @@ public final class Instructions { | ... | @@ -117,6 +118,16 @@ public final class Instructions { |
117 | } | 118 | } |
118 | 119 | ||
119 | /** | 120 | /** |
121 | + * Creates an L1 modification with the specified ODU signal Id. | ||
122 | + * | ||
123 | + * @param oduSignalId ODU Signal Id | ||
124 | + * @return a L1 modification | ||
125 | + */ | ||
126 | + public static L1ModificationInstruction modL1OduSignalId(OduSignalId oduSignalId) { | ||
127 | + checkNotNull(oduSignalId, "L1 ODU signal ID cannot be null"); | ||
128 | + return new ModOduSignalIdInstruction(oduSignalId); | ||
129 | + } | ||
130 | + /** | ||
120 | * Creates a l2 src modification. | 131 | * Creates a l2 src modification. |
121 | * | 132 | * |
122 | * @param addr the mac address to modify to | 133 | * @param addr the mac address to modify to | ... | ... |
core/api/src/main/java/org/onosproject/net/flow/instructions/L1ModificationInstruction.java
0 → 100644
1 | +/* | ||
2 | + * Copyright 2014-2015 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.net.flow.instructions; | ||
17 | + | ||
18 | +import org.onosproject.net.OduSignalId; | ||
19 | + | ||
20 | +import static com.google.common.base.MoreObjects.toStringHelper; | ||
21 | + | ||
22 | +import java.util.Objects; | ||
23 | + | ||
24 | +public abstract class L1ModificationInstruction implements Instruction { | ||
25 | + | ||
26 | + /** | ||
27 | + * Represents the type of traffic treatment. | ||
28 | + */ | ||
29 | + public enum L1SubType { | ||
30 | + /** | ||
31 | + * ODU (Optical channel Data Unit) Signal Id modification. | ||
32 | + */ | ||
33 | + ODU_SIGID | ||
34 | + } | ||
35 | + | ||
36 | + public abstract L1SubType subtype(); | ||
37 | + | ||
38 | + @Override | ||
39 | + public final Type type() { | ||
40 | + return Type.L1MODIFICATION; | ||
41 | + } | ||
42 | + | ||
43 | + /** | ||
44 | + * Represents an L1 ODU (Optical channel Data Unit) Signal Id modification instruction. | ||
45 | + */ | ||
46 | + public static final class ModOduSignalIdInstruction extends L1ModificationInstruction { | ||
47 | + | ||
48 | + private final OduSignalId oduSignalId; | ||
49 | + | ||
50 | + ModOduSignalIdInstruction(OduSignalId oduSignalId) { | ||
51 | + this.oduSignalId = oduSignalId; | ||
52 | + } | ||
53 | + | ||
54 | + @Override | ||
55 | + public L1SubType subtype() { | ||
56 | + return L1SubType.ODU_SIGID; | ||
57 | + } | ||
58 | + | ||
59 | + public OduSignalId oduSignalId() { | ||
60 | + return oduSignalId; | ||
61 | + } | ||
62 | + | ||
63 | + @Override | ||
64 | + public int hashCode() { | ||
65 | + return Objects.hash(oduSignalId); | ||
66 | + } | ||
67 | + | ||
68 | + @Override | ||
69 | + public boolean equals(Object obj) { | ||
70 | + if (this == obj) { | ||
71 | + return true; | ||
72 | + } | ||
73 | + if (!(obj instanceof ModOduSignalIdInstruction)) { | ||
74 | + return false; | ||
75 | + } | ||
76 | + final ModOduSignalIdInstruction that = (ModOduSignalIdInstruction) obj; | ||
77 | + return Objects.equals(this.oduSignalId, that.oduSignalId); | ||
78 | + } | ||
79 | + | ||
80 | + @Override | ||
81 | + public String toString() { | ||
82 | + return toStringHelper(this) | ||
83 | + .add("oduSignalId", oduSignalId) | ||
84 | + .toString(); | ||
85 | + } | ||
86 | + } | ||
87 | + | ||
88 | +} |
1 | +/* | ||
2 | + * Copyright 2015 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.net; | ||
17 | + | ||
18 | +import com.google.common.testing.EqualsTester; | ||
19 | +import org.junit.Test; | ||
20 | +import static org.onosproject.net.OduSignalId.oduSignalId; | ||
21 | + | ||
22 | +/** | ||
23 | + * Test for OduSignalId. | ||
24 | + */ | ||
25 | +public class OduSignalIdTest { | ||
26 | + | ||
27 | + private final OduSignalId odu1 = oduSignalId(7, 80, new byte[] {16, 16, 16, 16, 16, 16, 16, 16, 16, 16}); | ||
28 | + private final OduSignalId sameOdu1 = oduSignalId(7, 80, new byte[] {16, 16, 16, 16, 16, 16, 16, 16, 16, 16}); | ||
29 | + private final OduSignalId odu2 = oduSignalId(21, 80, new byte[] {10, 5, 10, 5, 10, 5, 10, 5, 10, 5}); | ||
30 | + private final OduSignalId sameOdu2 = oduSignalId(21, 80, new byte[] {10, 5, 10, 5, 10, 5, 10, 5, 10, 5}); | ||
31 | + | ||
32 | + @Test | ||
33 | + public void testEquality() { | ||
34 | + new EqualsTester() | ||
35 | + .addEqualityGroup(odu1, sameOdu1) | ||
36 | + .addEqualityGroup(odu2, sameOdu2) | ||
37 | + .testEquals(); | ||
38 | + } | ||
39 | +} |
... | @@ -15,6 +15,16 @@ | ... | @@ -15,6 +15,16 @@ |
15 | */ | 15 | */ |
16 | package org.onosproject.net.flow.criteria; | 16 | package org.onosproject.net.flow.criteria; |
17 | 17 | ||
18 | +import static org.hamcrest.MatcherAssert.assertThat; | ||
19 | +import static org.hamcrest.Matchers.equalTo; | ||
20 | +import static org.hamcrest.Matchers.instanceOf; | ||
21 | +import static org.hamcrest.Matchers.is; | ||
22 | +import static org.hamcrest.Matchers.notNullValue; | ||
23 | +import static org.onlab.junit.ImmutableClassChecker.assertThatClassIsImmutable; | ||
24 | +import static org.onlab.junit.UtilityClassChecker.assertThatClassIsUtility; | ||
25 | +import static org.onosproject.net.OduSignalId.oduSignalId; | ||
26 | +import static org.onosproject.net.PortNumber.portNumber; | ||
27 | + | ||
18 | import org.junit.Test; | 28 | import org.junit.Test; |
19 | import org.onlab.packet.EthType; | 29 | import org.onlab.packet.EthType; |
20 | import org.onlab.packet.Ip6Address; | 30 | import org.onlab.packet.Ip6Address; |
... | @@ -26,20 +36,12 @@ import org.onlab.packet.VlanId; | ... | @@ -26,20 +36,12 @@ import org.onlab.packet.VlanId; |
26 | import org.onosproject.net.ChannelSpacing; | 36 | import org.onosproject.net.ChannelSpacing; |
27 | import org.onosproject.net.GridType; | 37 | import org.onosproject.net.GridType; |
28 | import org.onosproject.net.Lambda; | 38 | import org.onosproject.net.Lambda; |
39 | +import org.onosproject.net.OchSignalType; | ||
40 | +import org.onosproject.net.OduSignalId; | ||
41 | +import org.onosproject.net.OduSignalType; | ||
29 | import org.onosproject.net.PortNumber; | 42 | import org.onosproject.net.PortNumber; |
30 | 43 | ||
31 | import com.google.common.testing.EqualsTester; | 44 | import com.google.common.testing.EqualsTester; |
32 | -import org.onosproject.net.OchSignalType; | ||
33 | - | ||
34 | -import static org.hamcrest.MatcherAssert.assertThat; | ||
35 | -import static org.hamcrest.Matchers.equalTo; | ||
36 | -import static org.hamcrest.Matchers.instanceOf; | ||
37 | -import static org.hamcrest.Matchers.is; | ||
38 | -import static org.hamcrest.Matchers.notNullValue; | ||
39 | -import static org.onlab.junit.ImmutableClassChecker.assertThatClassIsImmutable; | ||
40 | -import static org.onlab.junit.UtilityClassChecker.assertThatClassIsUtility; | ||
41 | -import static org.onosproject.net.PortNumber.portNumber; | ||
42 | - | ||
43 | /** | 45 | /** |
44 | * Unit tests for the Criteria class and its subclasses. | 46 | * Unit tests for the Criteria class and its subclasses. |
45 | */ | 47 | */ |
... | @@ -240,6 +242,18 @@ public class CriteriaTest { | ... | @@ -240,6 +242,18 @@ public class CriteriaTest { |
240 | Criterion matchOchSignal2 = | 242 | Criterion matchOchSignal2 = |
241 | Criteria.matchLambda(Lambda.ochSignal(GridType.DWDM, ChannelSpacing.CHL_50GHZ, 4, 8)); | 243 | Criteria.matchLambda(Lambda.ochSignal(GridType.DWDM, ChannelSpacing.CHL_50GHZ, 4, 8)); |
242 | 244 | ||
245 | + final OduSignalId odu1 = oduSignalId(1, 80, new byte [] {1, 1, 2, 2, 1, 2, 2, 1, 2, 2}); | ||
246 | + final OduSignalId odu2 = oduSignalId(3, 8, new byte [] {1, 0, 0, 0, 0, 0, 0, 0, 0, 0}); | ||
247 | + Criterion matchOduSignalId1 = Criteria.matchOduSignalId(odu1); | ||
248 | + Criterion sameAsMatchOduSignalId1 = Criteria.matchOduSignalId(odu1); | ||
249 | + Criterion matchOduSignalId2 = Criteria.matchOduSignalId(odu2); | ||
250 | + | ||
251 | + final OduSignalType oduSigType1 = OduSignalType.ODU2; | ||
252 | + final OduSignalType oduSigType2 = OduSignalType.ODU4; | ||
253 | + Criterion matchOduSignalType1 = Criteria.matchOduSignalType(oduSigType1); | ||
254 | + Criterion sameAsMatchOduSignalType1 = Criteria.matchOduSignalType(oduSigType1); | ||
255 | + Criterion matchOduSignalType2 = Criteria.matchOduSignalType(oduSigType2); | ||
256 | + | ||
243 | /** | 257 | /** |
244 | * Checks that a Criterion object has the proper type, and then converts | 258 | * Checks that a Criterion object has the proper type, and then converts |
245 | * it to the proper type. | 259 | * it to the proper type. |
... | @@ -294,6 +308,8 @@ public class CriteriaTest { | ... | @@ -294,6 +308,8 @@ public class CriteriaTest { |
294 | assertThatClassIsImmutable(MplsCriterion.class); | 308 | assertThatClassIsImmutable(MplsCriterion.class); |
295 | assertThatClassIsImmutable(IPv6ExthdrFlagsCriterion.class); | 309 | assertThatClassIsImmutable(IPv6ExthdrFlagsCriterion.class); |
296 | assertThatClassIsImmutable(LambdaCriterion.class); | 310 | assertThatClassIsImmutable(LambdaCriterion.class); |
311 | + assertThatClassIsImmutable(OduSignalIdCriterion.class); | ||
312 | + assertThatClassIsImmutable(OduSignalTypeCriterion.class); | ||
297 | } | 313 | } |
298 | 314 | ||
299 | // PortCriterion class | 315 | // PortCriterion class |
... | @@ -1070,4 +1086,57 @@ public class CriteriaTest { | ... | @@ -1070,4 +1086,57 @@ public class CriteriaTest { |
1070 | .addEqualityGroup(matchOchSignalType2) | 1086 | .addEqualityGroup(matchOchSignalType2) |
1071 | .testEquals(); | 1087 | .testEquals(); |
1072 | } | 1088 | } |
1089 | + | ||
1090 | + /** | ||
1091 | + * Test the OduSignalId method. | ||
1092 | + */ | ||
1093 | + @Test | ||
1094 | + public void testMatchOduSignalIdMethod() { | ||
1095 | + OduSignalId odu = oduSignalId(1, 80, new byte[]{2, 1, 1, 3, 1, 1, 3, 1, 1, 3}); | ||
1096 | + | ||
1097 | + Criterion matchoduSignalId = Criteria.matchOduSignalId(odu); | ||
1098 | + OduSignalIdCriterion oduSignalIdCriterion = | ||
1099 | + checkAndConvert(matchoduSignalId, | ||
1100 | + Criterion.Type.ODU_SIGID, | ||
1101 | + OduSignalIdCriterion.class); | ||
1102 | + assertThat(oduSignalIdCriterion.oduSignalId(), is(equalTo(odu))); | ||
1103 | + } | ||
1104 | + | ||
1105 | + /** | ||
1106 | + * Test the equals() method of the OduSignalIdCriterion class. | ||
1107 | + */ | ||
1108 | + @Test | ||
1109 | + public void testOduSignalIdCriterionEquals() { | ||
1110 | + new EqualsTester() | ||
1111 | + .addEqualityGroup(matchOduSignalId1, sameAsMatchOduSignalId1) | ||
1112 | + .addEqualityGroup(matchOduSignalId2) | ||
1113 | + .testEquals(); | ||
1114 | + } | ||
1115 | + | ||
1116 | + // OduSignalTypeCriterion class | ||
1117 | + | ||
1118 | + /** | ||
1119 | + * Test the OduSignalType method. | ||
1120 | + */ | ||
1121 | + @Test | ||
1122 | + public void testMatchOduSignalTypeMethod() { | ||
1123 | + OduSignalType oduSigType = OduSignalType.ODU2; | ||
1124 | + Criterion matchoduSignalType = Criteria.matchOduSignalType(oduSigType); | ||
1125 | + OduSignalTypeCriterion oduSignalTypeCriterion = | ||
1126 | + checkAndConvert(matchoduSignalType, | ||
1127 | + Criterion.Type.ODU_SIGTYPE, | ||
1128 | + OduSignalTypeCriterion.class); | ||
1129 | + assertThat(oduSignalTypeCriterion.signalType(), is(equalTo(oduSigType))); | ||
1130 | + } | ||
1131 | + | ||
1132 | + /** | ||
1133 | + * Test the equals() method of the OduSignalTypeCriterion class. | ||
1134 | + */ | ||
1135 | + @Test | ||
1136 | + public void testOduSignalTypeCriterionEquals() { | ||
1137 | + new EqualsTester() | ||
1138 | + .addEqualityGroup(matchOduSignalType1, sameAsMatchOduSignalType1) | ||
1139 | + .addEqualityGroup(matchOduSignalType2) | ||
1140 | + .testEquals(); | ||
1141 | + } | ||
1073 | } | 1142 | } | ... | ... |
... | @@ -25,6 +25,7 @@ import org.onosproject.net.ChannelSpacing; | ... | @@ -25,6 +25,7 @@ import org.onosproject.net.ChannelSpacing; |
25 | import org.onosproject.net.GridType; | 25 | import org.onosproject.net.GridType; |
26 | import org.onosproject.net.IndexedLambda; | 26 | import org.onosproject.net.IndexedLambda; |
27 | import org.onosproject.net.Lambda; | 27 | import org.onosproject.net.Lambda; |
28 | +import org.onosproject.net.OduSignalId; | ||
28 | import org.onosproject.net.PortNumber; | 29 | import org.onosproject.net.PortNumber; |
29 | 30 | ||
30 | import com.google.common.testing.EqualsTester; | 31 | import com.google.common.testing.EqualsTester; |
... | @@ -38,6 +39,7 @@ import static org.hamcrest.Matchers.notNullValue; | ... | @@ -38,6 +39,7 @@ import static org.hamcrest.Matchers.notNullValue; |
38 | import static org.onlab.junit.ImmutableClassChecker.assertThatClassIsImmutable; | 39 | import static org.onlab.junit.ImmutableClassChecker.assertThatClassIsImmutable; |
39 | import static org.onlab.junit.UtilityClassChecker.assertThatClassIsUtility; | 40 | import static org.onlab.junit.UtilityClassChecker.assertThatClassIsUtility; |
40 | import static org.onosproject.net.PortNumber.portNumber; | 41 | import static org.onosproject.net.PortNumber.portNumber; |
42 | +import static org.onosproject.net.OduSignalId.oduSignalId; | ||
41 | 43 | ||
42 | /** | 44 | /** |
43 | * Unit tests for the Instructions class. | 45 | * Unit tests for the Instructions class. |
... | @@ -96,6 +98,7 @@ public class InstructionsTest { | ... | @@ -96,6 +98,7 @@ public class InstructionsTest { |
96 | assertThatClassIsImmutable(Instructions.OutputInstruction.class); | 98 | assertThatClassIsImmutable(Instructions.OutputInstruction.class); |
97 | assertThatClassIsImmutable(L0ModificationInstruction.ModLambdaInstruction.class); | 99 | assertThatClassIsImmutable(L0ModificationInstruction.ModLambdaInstruction.class); |
98 | assertThatClassIsImmutable(L0ModificationInstruction.ModOchSignalInstruction.class); | 100 | assertThatClassIsImmutable(L0ModificationInstruction.ModOchSignalInstruction.class); |
101 | + assertThatClassIsImmutable(L1ModificationInstruction.ModOduSignalIdInstruction.class); | ||
99 | assertThatClassIsImmutable(L2ModificationInstruction.ModEtherInstruction.class); | 102 | assertThatClassIsImmutable(L2ModificationInstruction.ModEtherInstruction.class); |
100 | assertThatClassIsImmutable(L2ModificationInstruction.ModVlanIdInstruction.class); | 103 | assertThatClassIsImmutable(L2ModificationInstruction.ModVlanIdInstruction.class); |
101 | assertThatClassIsImmutable(L2ModificationInstruction.ModVlanPcpInstruction.class); | 104 | assertThatClassIsImmutable(L2ModificationInstruction.ModVlanPcpInstruction.class); |
... | @@ -259,6 +262,44 @@ public class InstructionsTest { | ... | @@ -259,6 +262,44 @@ public class InstructionsTest { |
259 | assertThat(ochInstruction1.hashCode(), is(not(ochInstruction2.hashCode()))); | 262 | assertThat(ochInstruction1.hashCode(), is(not(ochInstruction2.hashCode()))); |
260 | } | 263 | } |
261 | 264 | ||
265 | + // ModOduSignalIdInstruction | ||
266 | + | ||
267 | + private final OduSignalId odu1 = oduSignalId(1, 80, new byte[] {8, 7, 6, 5, 7, 6, 5, 7, 6, 5}); | ||
268 | + private final OduSignalId odu2 = oduSignalId(2, 80, new byte[] {1, 1, 2, 2, 1, 2, 2, 1, 2, 2}); | ||
269 | + private final Instruction oduInstruction1 = Instructions.modL1OduSignalId(odu1); | ||
270 | + private final Instruction sameAsOduInstruction1 = Instructions.modL1OduSignalId(odu1); | ||
271 | + private final Instruction oduInstruction2 = Instructions.modL1OduSignalId(odu2); | ||
272 | + | ||
273 | + /** | ||
274 | + * Test the modL1OduSignalId(). | ||
275 | + */ | ||
276 | + @Test | ||
277 | + public void testModL1OduSignalIdMethod() { | ||
278 | + Instruction instruction = Instructions.modL1OduSignalId(odu1); | ||
279 | + L1ModificationInstruction.ModOduSignalIdInstruction oduInstruction = | ||
280 | + checkAndConvert(instruction, Instruction.Type.L1MODIFICATION, | ||
281 | + L1ModificationInstruction.ModOduSignalIdInstruction.class); | ||
282 | + assertThat(oduInstruction.oduSignalId(), is(odu1)); | ||
283 | + } | ||
284 | + | ||
285 | + /** | ||
286 | + * Test the equals() method of the ModOduSignalInstruction class. | ||
287 | + */ | ||
288 | + @Test | ||
289 | + public void testModOduSignalIdInstructionEquals() { | ||
290 | + checkEqualsAndToString(oduInstruction1, sameAsOduInstruction1, oduInstruction2); | ||
291 | + } | ||
292 | + | ||
293 | + /** | ||
294 | + * Test the hashCode() method of the ModOduSignalInstruction class. | ||
295 | + */ | ||
296 | + @Test | ||
297 | + public void testModOduSignalIdInstructionHashCode() { | ||
298 | + assertThat(oduInstruction1.hashCode(), is(sameAsOduInstruction1.hashCode())); | ||
299 | + assertThat(oduInstruction1.hashCode(), is(not(oduInstruction2.hashCode()))); | ||
300 | + } | ||
301 | + | ||
302 | + | ||
262 | // ModEtherInstruction | 303 | // ModEtherInstruction |
263 | 304 | ||
264 | private static final String MAC1 = "00:00:00:00:00:01"; | 305 | private static final String MAC1 = "00:00:00:00:00:01"; | ... | ... |
... | @@ -61,6 +61,12 @@ public final class CriterionCodec extends JsonCodec<Criterion> { | ... | @@ -61,6 +61,12 @@ public final class CriterionCodec extends JsonCodec<Criterion> { |
61 | protected static final String SLOT_GRANULARITY = "slotGranularity"; | 61 | protected static final String SLOT_GRANULARITY = "slotGranularity"; |
62 | protected static final String OCH_SIGNAL_ID = "ochSignalId"; | 62 | protected static final String OCH_SIGNAL_ID = "ochSignalId"; |
63 | protected static final String TUNNEL_ID = "tunnelId"; | 63 | protected static final String TUNNEL_ID = "tunnelId"; |
64 | + protected static final String OCH_SIGNAL_TYPE = "ochSignalType"; | ||
65 | + protected static final String ODU_SIGNAL_ID = "oduSignalId"; | ||
66 | + protected static final String TRIBUTARY_PORT_NUMBER = "tributaryPortNumber"; | ||
67 | + protected static final String TRIBUTARY_SLOT_LEN = "tributarySlotLen"; | ||
68 | + protected static final String TRIBUTARY_SLOT_BITMAP = "tributarySlotBitmap"; | ||
69 | + protected static final String ODU_SIGNAL_TYPE = "oduSignalType"; | ||
64 | 70 | ||
65 | @Override | 71 | @Override |
66 | public ObjectNode encode(Criterion criterion, CodecContext context) { | 72 | public ObjectNode encode(Criterion criterion, CodecContext context) { |
... | @@ -73,6 +79,4 @@ public final class CriterionCodec extends JsonCodec<Criterion> { | ... | @@ -73,6 +79,4 @@ public final class CriterionCodec extends JsonCodec<Criterion> { |
73 | DecodeCriterionCodecHelper decoder = new DecodeCriterionCodecHelper(json); | 79 | DecodeCriterionCodecHelper decoder = new DecodeCriterionCodecHelper(json); |
74 | return decoder.decode(); | 80 | return decoder.decode(); |
75 | } | 81 | } |
76 | - | ||
77 | - | ||
78 | } | 82 | } | ... | ... |
... | @@ -38,6 +38,8 @@ import org.onosproject.net.flow.criteria.MetadataCriterion; | ... | @@ -38,6 +38,8 @@ import org.onosproject.net.flow.criteria.MetadataCriterion; |
38 | import org.onosproject.net.flow.criteria.MplsCriterion; | 38 | import org.onosproject.net.flow.criteria.MplsCriterion; |
39 | import org.onosproject.net.flow.criteria.OchSignalCriterion; | 39 | import org.onosproject.net.flow.criteria.OchSignalCriterion; |
40 | import org.onosproject.net.flow.criteria.OchSignalTypeCriterion; | 40 | import org.onosproject.net.flow.criteria.OchSignalTypeCriterion; |
41 | +import org.onosproject.net.flow.criteria.OduSignalIdCriterion; | ||
42 | +import org.onosproject.net.flow.criteria.OduSignalTypeCriterion; | ||
41 | import org.onosproject.net.flow.criteria.PortCriterion; | 43 | import org.onosproject.net.flow.criteria.PortCriterion; |
42 | import org.onosproject.net.flow.criteria.SctpPortCriterion; | 44 | import org.onosproject.net.flow.criteria.SctpPortCriterion; |
43 | import org.onosproject.net.flow.criteria.TcpPortCriterion; | 45 | import org.onosproject.net.flow.criteria.TcpPortCriterion; |
... | @@ -108,7 +110,8 @@ public final class EncodeCriterionCodecHelper { | ... | @@ -108,7 +110,8 @@ public final class EncodeCriterionCodecHelper { |
108 | formatMap.put(Criterion.Type.OCH_SIGTYPE, new FormatOchSigType()); | 110 | formatMap.put(Criterion.Type.OCH_SIGTYPE, new FormatOchSigType()); |
109 | formatMap.put(Criterion.Type.TUNNEL_ID, new FormatTunnelId()); | 111 | formatMap.put(Criterion.Type.TUNNEL_ID, new FormatTunnelId()); |
110 | formatMap.put(Criterion.Type.DUMMY, new FormatDummyType()); | 112 | formatMap.put(Criterion.Type.DUMMY, new FormatDummyType()); |
111 | - | 113 | + formatMap.put(Criterion.Type.ODU_SIGID, new FormatOduSignalId()); |
114 | + formatMap.put(Criterion.Type.ODU_SIGTYPE, new FormatOduSignalType()); | ||
112 | // Currently unimplemented | 115 | // Currently unimplemented |
113 | formatMap.put(Criterion.Type.ARP_OP, new FormatUnknown()); | 116 | formatMap.put(Criterion.Type.ARP_OP, new FormatUnknown()); |
114 | formatMap.put(Criterion.Type.ARP_SPA, new FormatUnknown()); | 117 | formatMap.put(Criterion.Type.ARP_SPA, new FormatUnknown()); |
... | @@ -351,7 +354,7 @@ public final class EncodeCriterionCodecHelper { | ... | @@ -351,7 +354,7 @@ public final class EncodeCriterionCodecHelper { |
351 | public ObjectNode encodeCriterion(ObjectNode root, Criterion criterion) { | 354 | public ObjectNode encodeCriterion(ObjectNode root, Criterion criterion) { |
352 | final OchSignalTypeCriterion ochSignalTypeCriterion = | 355 | final OchSignalTypeCriterion ochSignalTypeCriterion = |
353 | (OchSignalTypeCriterion) criterion; | 356 | (OchSignalTypeCriterion) criterion; |
354 | - return root.put("ochSignalType", ochSignalTypeCriterion.signalType().name()); | 357 | + return root.put(CriterionCodec.OCH_SIGNAL_TYPE, ochSignalTypeCriterion.signalType().name()); |
355 | } | 358 | } |
356 | } | 359 | } |
357 | 360 | ||
... | @@ -364,6 +367,24 @@ public final class EncodeCriterionCodecHelper { | ... | @@ -364,6 +367,24 @@ public final class EncodeCriterionCodecHelper { |
364 | } | 367 | } |
365 | } | 368 | } |
366 | 369 | ||
370 | + private static class FormatOduSignalId implements CriterionTypeFormatter { | ||
371 | + @Override | ||
372 | + public ObjectNode encodeCriterion(ObjectNode root, Criterion criterion) { | ||
373 | + final OduSignalIdCriterion oduSignalIdCriterion = | ||
374 | + (OduSignalIdCriterion) criterion; | ||
375 | + return root.put(CriterionCodec.ODU_SIGNAL_ID, oduSignalIdCriterion.oduSignalId().toString()); | ||
376 | + } | ||
377 | + } | ||
378 | + | ||
379 | + private static class FormatOduSignalType implements CriterionTypeFormatter { | ||
380 | + @Override | ||
381 | + public ObjectNode encodeCriterion(ObjectNode root, Criterion criterion) { | ||
382 | + final OduSignalTypeCriterion oduSignalTypeCriterion = | ||
383 | + (OduSignalTypeCriterion) criterion; | ||
384 | + return root.put(CriterionCodec.ODU_SIGNAL_TYPE, oduSignalTypeCriterion.signalType().name()); | ||
385 | + } | ||
386 | + } | ||
387 | + | ||
367 | private class FormatDummyType implements CriterionTypeFormatter { | 388 | private class FormatDummyType implements CriterionTypeFormatter { |
368 | 389 | ||
369 | @Override | 390 | @Override | ... | ... |
-
Please register or login to post a comment