Union codec 99/3699/3
authorJozef Gloncak <jgloncak@cisco.com>
Fri, 13 Dec 2013 13:39:30 +0000 (14:39 +0100)
committerJozef Gloncak <jgloncak@cisco.com>
Mon, 16 Dec 2013 09:35:43 +0000 (10:35 +0100)
Change-Id: Ibbd36ee247b92af53f7e9e9cec1c413daf3364b2
Signed-off-by: Jozef Gloncak <jgloncak@cisco.com>
yang/yang-data-api/src/main/java/org/opendaylight/yangtools/yang/data/api/codec/Uint8Codec.java
yang/yang-data-api/src/main/java/org/opendaylight/yangtools/yang/data/api/codec/UnionCodec.java [new file with mode: 0644]
yang/yang-data-impl/src/main/java/org/opendaylight/yangtools/yang/data/impl/codec/TypeDefinitionAwareCodec.java

index 4aaeb5d375a7a2a49c6ce46595c1ab6ced65194c..b7ed7b11f3f1490be7ff5fb7d0582571925d69f7 100644 (file)
@@ -1,5 +1,7 @@
 package org.opendaylight.yangtools.yang.data.api.codec;
 
+import org.opendaylight.yangtools.concepts.Codec;
+
 /**
  * 
  * FIXME: Should be changed to UnsignedByte
@@ -8,7 +10,7 @@ package org.opendaylight.yangtools.yang.data.api.codec;
  *
  * @param <T>
  */
-public interface Uint8Codec<T> {
+public interface Uint8Codec<T> extends Codec<T,Short>{
 
     public T serialize(Short data);
 
diff --git a/yang/yang-data-api/src/main/java/org/opendaylight/yangtools/yang/data/api/codec/UnionCodec.java b/yang/yang-data-api/src/main/java/org/opendaylight/yangtools/yang/data/api/codec/UnionCodec.java
new file mode 100644 (file)
index 0000000..4337687
--- /dev/null
@@ -0,0 +1,10 @@
+package org.opendaylight.yangtools.yang.data.api.codec;
+
+import org.opendaylight.yangtools.concepts.Codec;
+
+public interface UnionCodec<T> extends Codec<T,String> {
+
+    public T serialize(String data);
+
+    public String deserialize(T data);
+}
index 31a23b509c56442daa25be86b15dab384a4069ef..0b5f36644473670756b428a35f6bf537531172e7 100644 (file)
@@ -6,8 +6,6 @@ import java.math.BigDecimal;
 import java.math.BigInteger;
 import java.util.Set;
 
-import javax.xml.bind.DatatypeConverter;
-
 import org.opendaylight.yangtools.yang.data.api.codec.*;
 import org.opendaylight.yangtools.yang.model.api.TypeDefinition;
 import org.opendaylight.yangtools.yang.model.api.type.*;
@@ -66,6 +64,9 @@ public abstract class TypeDefinitionAwareCodec<J, T extends TypeDefinition<T>> i
     public static final Uint64CodecStringImpl UINT64_DEFAULT_CODEC = new Uint64CodecStringImpl(
             Optional.<UnsignedIntegerTypeDefinition> absent());
 
+    public static final UnionCodecStringImpl UNION_DEFAULT_CODEC = new UnionCodecStringImpl(
+            Optional.<UnionTypeDefinition> absent());
+
     public Class<J> getInputClass() {
         return inputClass;
     }
@@ -407,4 +408,22 @@ public abstract class TypeDefinitionAwareCodec<J, T extends TypeDefinition<T>> i
             return new BigDecimal(stringRepresentation);
         }
     };
+
+    public static class UnionCodecStringImpl extends TypeDefinitionAwareCodec<String, UnionTypeDefinition> implements
+            UnionCodec<String> {
+
+        protected UnionCodecStringImpl(Optional<UnionTypeDefinition> typeDef) {
+            super(typeDef, String.class);
+        }
+
+        @Override
+        public String serialize(String data) {
+            return data;
+        }
+
+        @Override
+        public String deserialize(String stringRepresentation) {
+            return stringRepresentation;
+        }
+    };
 }