import com.google.common.collect.ImmutableSortedMap;
import java.lang.invoke.MethodHandle;
import java.lang.invoke.MethodHandles;
-import java.lang.invoke.MethodHandles.Lookup;
import java.lang.invoke.MethodType;
import java.lang.reflect.InvocationHandler;
import java.lang.reflect.Method;
import java.util.concurrent.ConcurrentMap;
import javax.annotation.Nonnull;
import javax.annotation.Nullable;
-import org.opendaylight.yangtools.sal.binding.generator.api.ClassLoadingStrategy;
-import org.opendaylight.yangtools.sal.binding.model.api.Type;
+import org.opendaylight.mdsal.binding.generator.api.ClassLoadingStrategy;
+import org.opendaylight.mdsal.binding.model.api.Type;
import org.opendaylight.yangtools.yang.binding.Augmentable;
import org.opendaylight.yangtools.yang.binding.Augmentation;
import org.opendaylight.yangtools.yang.binding.AugmentationHolder;
abstract class DataObjectCodecContext<D extends DataObject,T extends DataNodeContainer> extends DataContainerCodecContext<D,T> {
private static final Logger LOG = LoggerFactory.getLogger(DataObjectCodecContext.class);
- private static final Lookup LOOKUP = MethodHandles.publicLookup();
private static final MethodType CONSTRUCTOR_TYPE = MethodType.methodType(void.class, InvocationHandler.class);
private static final MethodType DATAOBJECT_TYPE = MethodType.methodType(DataObject.class, InvocationHandler.class);
- private static final Comparator<Method> METHOD_BY_ALPHABET = new Comparator<Method>() {
- @Override
- public int compare(final Method o1, final Method o2) {
- return o1.getName().compareTo(o2.getName());
- }
- };
+ private static final Comparator<Method> METHOD_BY_ALPHABET = (o1, o2) -> o1.getName().compareTo(o2.getName());
private final ImmutableMap<String, LeafNodeCodecContext<?>> leafChild;
private final ImmutableMap<YangInstanceIdentifier.PathArgument, NodeContextSupplier> byYang;
final Class<?> proxyClass = Proxy.getProxyClass(getBindingClass().getClassLoader(), new Class[] { getBindingClass(), AugmentationHolder.class });
try {
- proxyConstructor = LOOKUP.findConstructor(proxyClass, CONSTRUCTOR_TYPE).asType(DATAOBJECT_TYPE);
+ proxyConstructor = MethodHandles.publicLookup().findConstructor(proxyClass, CONSTRUCTOR_TYPE)
+ .asType(DATAOBJECT_TYPE);
} catch (NoSuchMethodException | IllegalAccessException e) {
throw new IllegalStateException("Failed to find contructor for class " + proxyClass);
}
public <DV extends DataObject> Optional<DataContainerCodecContext<DV, ?>> possibleStreamChild(
final Class<DV> childClass) {
final DataContainerCodecPrototype<?> childProto = streamChildPrototype(childClass);
- if(childProto != null) {
+ if (childProto != null) {
return Optional.<DataContainerCodecContext<DV,?>>of((DataContainerCodecContext<DV,?>) childProto.get());
}
return Optional.absent();
@Override
public NodeCodecContext<D> yangPathArgumentChild(final YangInstanceIdentifier.PathArgument arg) {
final NodeContextSupplier childSupplier;
- if(arg instanceof NodeIdentifierWithPredicates) {
+ if (arg instanceof NodeIdentifierWithPredicates) {
childSupplier = byYang.get(new NodeIdentifier(arg.getNodeType()));
} else if (arg instanceof AugmentationIdentifier) {
childSupplier = yangAugmentationChild((AugmentationIdentifier) arg);
} else {
childSupplier = byYang.get(arg);
}
- childNonNull(childSupplier != null, arg, "Argument %s is not valid child of %s", arg, getSchema());
- return (NodeCodecContext<D>) childSupplier.get();
+
+ return (NodeCodecContext<D>) childNonNull(childSupplier, arg,
+ "Argument %s is not valid child of %s", arg, getSchema()).get();
}
protected final LeafNodeCodecContext<?> getLeafChild(final String name) {
}
} else {
// We are looking for instantiation via uses in other module
- final QName instantiedName = QName.create(namespace(), origDef.getQName().getLocalName());
+ final QName instantiedName = origDef.getQName().withModule(namespace());
final DataSchemaNode potential = getSchema().getDataChildByName(instantiedName);
// We check if it is really instantiated from same
// definition as class was derived
*/
@SuppressWarnings("rawtypes")
final Class<?> augTarget = BindingReflections.findAugmentationTarget((Class) childClass);
- if ((getBindingClass().equals(augTarget))) {
+ if (getBindingClass().equals(augTarget)) {
for (final DataContainerCodecPrototype<?> realChild : byStreamAugmented.values()) {
if (Augmentation.class.isAssignableFrom(realChild.getBindingClass())
&& BindingReflections.isSubstitutionFor(childClass, realChild.getBindingClass())) {
try {
return (D) proxyConstructor.invokeExact((InvocationHandler)new LazyDataObject<>(this, node));
} catch (final Throwable e) {
- throw Throwables.propagate(e);
+ Throwables.throwIfUnchecked(e);
+ throw new RuntimeException(e);
}
}
if (childValue instanceof AugmentationNode) {
final AugmentationNode augDomNode = (AugmentationNode) childValue;
final DataContainerCodecPrototype<?> codecProto = yangAugmentationChild(augDomNode.getIdentifier());
- if(codecProto != null) {
+ if (codecProto != null) {
final DataContainerCodecContext<?, ?> codec = codecProto.get();
map.put(codec.getBindingClass(), codec.deserializeObject(augDomNode));
}