package org.opendaylight.yangtools.yang.data.impl.codec;
import com.google.common.base.Optional;
+import com.google.common.base.Preconditions;
+
import org.opendaylight.yangtools.yang.data.api.codec.BooleanCodec;
import org.opendaylight.yangtools.yang.model.api.type.BooleanTypeDefinition;
@Override
public final Boolean deserialize(final String stringRepresentation) {
+ if (stringRepresentation == null) {
+ return null;
+ }
+ validate(stringRepresentation);
return Boolean.valueOf(stringRepresentation);
}
+ private void validate(final String string) {
+ Preconditions.checkArgument(string.toLowerCase().equals("true")
+ || string.toLowerCase().equals("false"),
+ "Invalid value '%s' for boolean type. Allowed values are true and false", string);
+ }
+
static TypeDefinitionAwareCodec<?,BooleanTypeDefinition> from(final BooleanTypeDefinition normalizedType) {
return new BooleanStringCodec(Optional.fromNullable(normalizedType));
}
import static org.junit.Assert.*;
import org.junit.Test;
+
+import static org.opendaylight.yangtools.yang.data.impl.test.codecs.TypeDefinitionAwareCodecTestHelper.deserializeWithExpectedIllegalArgEx;
import static org.opendaylight.yangtools.yang.data.impl.test.codecs.TypeDefinitionAwareCodecTestHelper.getCodec;
+
import org.opendaylight.yangtools.yang.data.api.codec.BooleanCodec;
import org.opendaylight.yangtools.yang.model.util.BooleanType;
assertEquals( "deserialize", Boolean.TRUE, codec.deserialize( "TRUE" ) );
assertEquals( "deserialize", Boolean.FALSE, codec.deserialize( "FALSE" ) );
assertEquals( "deserialize", Boolean.FALSE, codec.deserialize( "false" ) );
- assertEquals( "deserialize", Boolean.FALSE, codec.deserialize( "foo" ) );
- assertEquals( "deserialize", Boolean.FALSE, codec.deserialize( "" ) );
- assertEquals( "deserialize", Boolean.FALSE, codec.deserialize( null ) );
+ assertEquals( "deserialize", null, codec.deserialize( null ) );
+ deserializeWithExpectedIllegalArgEx(codec, "foo");
+ deserializeWithExpectedIllegalArgEx(codec, "");
}
}