Merge "Bug 2362 - Milestone: Basic constraints validation"
[yangtools.git] / yang / yang-data-impl / src / main / java / org / opendaylight / yangtools / yang / data / impl / codec / StringStringCodec.java
index d7bbb6971913aac06087cbe87af03fa8ddfb1be6..91cf6761c4f2c0685c00ada09a87c2dd5933aad2 100644 (file)
@@ -14,21 +14,35 @@ import org.opendaylight.yangtools.yang.model.api.type.StringTypeDefinition;
 class StringStringCodec extends TypeDefinitionAwareCodec<String, StringTypeDefinition> implements
         StringCodec<String> {
 
-    protected StringStringCodec(final Optional<StringTypeDefinition> typeDef) {
-        super(typeDef, String.class);
+    protected StringStringCodec(final StringTypeDefinition typeDef) {
+        super(Optional.of(typeDef), String.class);
+        typeDef.getLengthConstraints();
     }
 
-    static TypeDefinitionAwareCodec<?,StringTypeDefinition> from(final StringTypeDefinition normalizedType) {
-        return new StringStringCodec(Optional.fromNullable(normalizedType));
+    static TypeDefinitionAwareCodec<?, StringTypeDefinition> from(final StringTypeDefinition normalizedType) {
+        if (normalizedType.getPatternConstraints().isEmpty()) {
+            return new StringStringCodec(normalizedType);
+        }
+
+        return new StringPatternCheckingCodec(normalizedType);
     }
 
     @Override
     public final String deserialize(final String stringRepresentation) {
-        return stringRepresentation == null ? "" : stringRepresentation;
+        if (stringRepresentation == null) {
+            // FIXME: These seems buggy, but someone may be using this behaviour
+            return "";
+        }
+        validate(stringRepresentation);
+        return stringRepresentation;
     }
 
     @Override
     public final String serialize(final String data) {
         return data == null ? "" : data;
     }
+
+    protected void validate(final String s) {
+
+    }
 }
\ No newline at end of file