X-Git-Url: https://git.opendaylight.org/gerrit/gitweb?a=blobdiff_plain;f=code-generator%2Fbinding-generator-impl%2Fsrc%2Fmain%2Fjava%2Forg%2Fopendaylight%2Fyangtools%2Fsal%2Fbinding%2Fgenerator%2Fimpl%2FRuntimeGeneratedMappingServiceImpl.java;h=29a532228dd54bfc6421c34035af5f91f923cafb;hb=c13c841a2311ac4c0c507451624e0b3ddf26e775;hp=08308163ed392a15fac36ce80f0601495133fab0;hpb=b3e9bdc78ca793648a8cc69b68af0c7f46727cd4;p=yangtools.git diff --git a/code-generator/binding-generator-impl/src/main/java/org/opendaylight/yangtools/sal/binding/generator/impl/RuntimeGeneratedMappingServiceImpl.java b/code-generator/binding-generator-impl/src/main/java/org/opendaylight/yangtools/sal/binding/generator/impl/RuntimeGeneratedMappingServiceImpl.java index 08308163ed..29a532228d 100644 --- a/code-generator/binding-generator-impl/src/main/java/org/opendaylight/yangtools/sal/binding/generator/impl/RuntimeGeneratedMappingServiceImpl.java +++ b/code-generator/binding-generator-impl/src/main/java/org/opendaylight/yangtools/sal/binding/generator/impl/RuntimeGeneratedMappingServiceImpl.java @@ -7,6 +7,14 @@ */ package org.opendaylight.yangtools.sal.binding.generator.impl; +import com.google.common.base.Optional; +import com.google.common.base.Preconditions; +import com.google.common.collect.HashMultimap; +import com.google.common.collect.Multimap; +import com.google.common.util.concurrent.ListenableFuture; +import com.google.common.util.concurrent.SettableFuture; + +import java.net.URI; import java.util.AbstractMap.SimpleEntry; import java.util.ArrayList; import java.util.Collection; @@ -41,10 +49,10 @@ import org.opendaylight.yangtools.yang.binding.InstanceIdentifier.Item; import org.opendaylight.yangtools.yang.binding.RpcService; import org.opendaylight.yangtools.yang.common.QName; import org.opendaylight.yangtools.yang.data.api.CompositeNode; -import org.opendaylight.yangtools.yang.data.api.InstanceIdentifier; -import org.opendaylight.yangtools.yang.data.api.InstanceIdentifier.NodeIdentifierWithPredicates; -import org.opendaylight.yangtools.yang.data.api.InstanceIdentifier.PathArgument; import org.opendaylight.yangtools.yang.data.api.Node; +import org.opendaylight.yangtools.yang.data.api.YangInstanceIdentifier; +import org.opendaylight.yangtools.yang.data.api.YangInstanceIdentifier.NodeIdentifierWithPredicates; +import org.opendaylight.yangtools.yang.data.api.YangInstanceIdentifier.PathArgument; import org.opendaylight.yangtools.yang.data.impl.CompositeNodeTOImpl; import org.opendaylight.yangtools.yang.data.impl.SimpleNodeTOImpl; import org.opendaylight.yangtools.yang.data.impl.codec.AugmentationCodec; @@ -67,15 +75,8 @@ import org.opendaylight.yangtools.yang.model.util.SchemaContextUtil; import org.slf4j.Logger; import org.slf4j.LoggerFactory; -import com.google.common.base.Optional; -import com.google.common.base.Preconditions; -import com.google.common.collect.HashMultimap; -import com.google.common.collect.Multimap; -import com.google.common.util.concurrent.ListenableFuture; -import com.google.common.util.concurrent.SettableFuture; - public class RuntimeGeneratedMappingServiceImpl implements BindingIndependentMappingService, SchemaContextListener, - SchemaLock, AutoCloseable, SchemaContextHolder, TypeResolver { +SchemaLock, AutoCloseable, SchemaContextHolder, TypeResolver { private static final Logger LOG = LoggerFactory.getLogger(RuntimeGeneratedMappingServiceImpl.class); @@ -112,13 +113,13 @@ public class RuntimeGeneratedMappingServiceImpl implements BindingIndependentMap public RuntimeGeneratedMappingServiceImpl(final ClassPool pool, final ClassLoadingStrategy strat) { this.pool = Preconditions.checkNotNull(pool); this.classLoadingStrategy = Preconditions.checkNotNull(strat); - + // FIXME: this escapes constructor binding = new TransformerGenerator(this, pool); registry = new LazyGeneratedCodecRegistry(this, binding, classLoadingStrategy); binding.setListener(registry); // if (ctx !== null) { - // listenerRegistration = ctx.registerService(SchemaServiceListener, + // listenerRegistration = ctx.registerService(SchemaContextListener, // this, new Hashtable()); // } } @@ -137,7 +138,7 @@ public class RuntimeGeneratedMappingServiceImpl implements BindingIndependentMap @GuardedBy("this") private void recreateBindingContext(final SchemaContext schemaContext) { - BindingGeneratorImpl newBinding = new BindingGeneratorImpl(); + BindingGeneratorImpl newBinding = new BindingGeneratorImpl(false); newBinding.generateTypes(schemaContext); for (Map.Entry entry : newBinding.getModuleContexts().entrySet()) { @@ -190,17 +191,17 @@ public class RuntimeGeneratedMappingServiceImpl implements BindingIndependentMap } @Override - public Entry toDataDom( + public Entry toDataDom( final Entry, DataObject> entry) { try { - org.opendaylight.yangtools.yang.data.api.InstanceIdentifier key = toDataDom(entry.getKey()); + org.opendaylight.yangtools.yang.data.api.YangInstanceIdentifier key = toDataDom(entry.getKey()); CompositeNode data; if (Augmentation.class.isAssignableFrom(entry.getKey().getTargetType())) { data = toCompositeNodeImplAugument(key, entry.getValue()); } else { data = toCompositeNodeImpl(key, entry.getValue()); } - return new SimpleEntry(key, + return new SimpleEntry(key, data); } catch (Exception e) { @@ -216,9 +217,9 @@ public class RuntimeGeneratedMappingServiceImpl implements BindingIndependentMap return codec.serialize(new ValueWithQName(null, object)); } - private CompositeNode toCompositeNodeImpl(final org.opendaylight.yangtools.yang.data.api.InstanceIdentifier identifier, + private CompositeNode toCompositeNodeImpl(final org.opendaylight.yangtools.yang.data.api.YangInstanceIdentifier identifier, final DataObject object) { - PathArgument last = identifier.getPath().get(identifier.getPath().size() - 1); + PathArgument last = identifier.getLastPathArgument(); Class cls = object.getImplementedInterface(); waitForSchema(cls); DataContainerCodec codec = (DataContainerCodec) registry.getCodecForDataObject(cls); @@ -226,12 +227,11 @@ public class RuntimeGeneratedMappingServiceImpl implements BindingIndependentMap } private CompositeNode toCompositeNodeImplAugument( - final org.opendaylight.yangtools.yang.data.api.InstanceIdentifier identifier, final DataObject object) { + final org.opendaylight.yangtools.yang.data.api.YangInstanceIdentifier identifier, final DataObject object) { // val cls = object.implementedInterface; // waitForSchema(cls); - org.opendaylight.yangtools.yang.data.api.InstanceIdentifier.PathArgument last = identifier.getPath().get( - identifier.getPath().size() - 1); + org.opendaylight.yangtools.yang.data.api.YangInstanceIdentifier.PathArgument last = identifier.getLastPathArgument(); AugmentationCodec codec = registry.getCodecForAugmentation((Class) object.getImplementedInterface()); CompositeNode ret = codec.serialize(new ValueWithQName(last.getNodeType(), object)); if (last instanceof NodeIdentifierWithPredicates) { @@ -261,7 +261,7 @@ public class RuntimeGeneratedMappingServiceImpl implements BindingIndependentMap } @Override - public InstanceIdentifier toDataDom( + public YangInstanceIdentifier toDataDom( final org.opendaylight.yangtools.yang.binding.InstanceIdentifier path) { for (final org.opendaylight.yangtools.yang.binding.InstanceIdentifier.PathArgument arg : path.getPathArguments()) { this.waitForSchema(arg.getType()); @@ -301,7 +301,7 @@ public class RuntimeGeneratedMappingServiceImpl implements BindingIndependentMap } @Override - public org.opendaylight.yangtools.yang.binding.InstanceIdentifier fromDataDom(final InstanceIdentifier entry) throws DeserializationException { + public org.opendaylight.yangtools.yang.binding.InstanceIdentifier fromDataDom(final YangInstanceIdentifier entry) throws DeserializationException { try { final InstanceIdentifierCodec c = registry.getInstanceIdentifierCodec(); Preconditions.checkState(c != null, "InstanceIdentifierCodec not present"); @@ -396,7 +396,7 @@ public class RuntimeGeneratedMappingServiceImpl implements BindingIndependentMap public synchronized Optional> getRpcServiceClassFor(final String namespace, final String revision) { Module module = null; if (schemaContext != null) { - module = schemaContext.findModuleByName(namespace, QName.parseRevision(revision)); + module = schemaContext.findModuleByNamespaceAndRevision(URI.create(namespace), QName.parseRevision(revision)); } if (module == null) { return Optional.absent();