import org.opendaylight.yangtools.yang.common.QName;
import org.opendaylight.yangtools.yang.data.impl.codec.TypeDefinitionAwareCodec;
import org.opendaylight.yangtools.yang.model.api.DataSchemaNode;
-import org.opendaylight.yangtools.yang.model.api.LeafListSchemaNode;
-import org.opendaylight.yangtools.yang.model.api.LeafSchemaNode;
import org.opendaylight.yangtools.yang.model.api.SchemaContext;
import org.opendaylight.yangtools.yang.model.api.TypeDefinition;
+import org.opendaylight.yangtools.yang.model.api.TypedSchemaNode;
import org.opendaylight.yangtools.yang.model.api.type.EmptyTypeDefinition;
import org.opendaylight.yangtools.yang.model.api.type.IdentityrefTypeDefinition;
import org.opendaylight.yangtools.yang.model.api.type.InstanceIdentifierTypeDefinition;
}
};
- private final LoadingCache<DataSchemaNode, JSONCodec<?>> codecs =
- CacheBuilder.newBuilder().softValues().build(new CacheLoader<DataSchemaNode, JSONCodec<?>>() {
+ private final LoadingCache<TypedSchemaNode, JSONCodec<?>> codecs = CacheBuilder.newBuilder().softValues()
+ .build(new CacheLoader<TypedSchemaNode, JSONCodec<?>>() {
@Override
- public JSONCodec<?> load(@Nonnull final DataSchemaNode key) throws Exception {
- final TypeDefinition<?> type;
- if (key instanceof LeafSchemaNode) {
- type = ((LeafSchemaNode) key).getType();
- } else if (key instanceof LeafListSchemaNode) {
- type = ((LeafListSchemaNode) key).getType();
- } else {
- throw new IllegalArgumentException("Not supported node type " + key.getClass().getName());
- }
- return createCodec(key,type);
+ public JSONCodec<?> load(@Nonnull final TypedSchemaNode key) throws Exception {
+ final TypeDefinition<?> type = key.getType();
+ return createCodec(key, type);
}
});
}
JSONCodec<?> codecFor(final DataSchemaNode schema) {
- return codecs.getUnchecked(schema);
+ Preconditions.checkArgument(schema instanceof TypedSchemaNode, "Unsupported node type %s", schema.getClass());
+ return codecs.getUnchecked((TypedSchemaNode) schema);
}
JSONCodec<?> codecFor(final DataSchemaNode schema, final TypeDefinition<?> unionSubType) {
import org.opendaylight.yangtools.yang.data.api.YangInstanceIdentifier;
import org.opendaylight.yangtools.yang.data.impl.codec.TypeDefinitionAwareCodec;
import org.opendaylight.yangtools.yang.model.api.DataSchemaNode;
-import org.opendaylight.yangtools.yang.model.api.LeafListSchemaNode;
-import org.opendaylight.yangtools.yang.model.api.LeafSchemaNode;
import org.opendaylight.yangtools.yang.model.api.SchemaContext;
import org.opendaylight.yangtools.yang.model.api.TypeDefinition;
+import org.opendaylight.yangtools.yang.model.api.TypedSchemaNode;
import org.opendaylight.yangtools.yang.model.api.type.EmptyTypeDefinition;
import org.opendaylight.yangtools.yang.model.api.type.IdentityrefTypeDefinition;
import org.opendaylight.yangtools.yang.model.api.type.InstanceIdentifierTypeDefinition;
}
};
- private final LoadingCache<Entry<DataSchemaNode, NamespaceContext>, XmlCodec<?>> codecs =
- CacheBuilder.newBuilder().softValues().build(
- new CacheLoader<Entry<DataSchemaNode, NamespaceContext>, XmlCodec<?>>() {
+ private final LoadingCache<Entry<TypedSchemaNode, NamespaceContext>, XmlCodec<?>> codecs = CacheBuilder.newBuilder()
+ .softValues().build(new CacheLoader<Entry<TypedSchemaNode, NamespaceContext>, XmlCodec<?>>() {
@Override
- public XmlCodec<?> load(@Nonnull final Entry<DataSchemaNode, NamespaceContext> schemaNodeAndNamespaceCtxPair)
- throws Exception {
- final DataSchemaNode schemaNode = schemaNodeAndNamespaceCtxPair.getKey();
- final TypeDefinition<?> type;
- if (schemaNode instanceof LeafSchemaNode) {
- type = ((LeafSchemaNode) schemaNode).getType();
- } else if (schemaNode instanceof LeafListSchemaNode) {
- type = ((LeafListSchemaNode) schemaNode).getType();
- } else {
- throw new IllegalArgumentException("Not supported node type " + schemaNode.getClass().getName());
- }
- return createCodec(schemaNode,type, schemaNodeAndNamespaceCtxPair.getValue());
+ public XmlCodec<?> load(@Nonnull final Entry<TypedSchemaNode, NamespaceContext> pair) {
+ final TypedSchemaNode schemaNode = pair.getKey();
+ final TypeDefinition<?> type = schemaNode.getType();
+ return createCodec(schemaNode, type, pair.getValue());
}
});
}
XmlCodec<?> codecFor(final DataSchemaNode schema, final NamespaceContext namespaceContext) {
- return codecs.getUnchecked(new SimpleImmutableEntry<>(schema, namespaceContext));
+ Preconditions.checkArgument(schema instanceof TypedSchemaNode, "Unsupported node type %s", schema.getClass());
+ return codecs.getUnchecked(new SimpleImmutableEntry<>((TypedSchemaNode)schema, namespaceContext));
}
XmlCodec<?> codecFor(final DataSchemaNode schema, final TypeDefinition<?> unionSubType,