From 3e577f99de723d2e6dce97d95d1cd0a19f097fe4 Mon Sep 17 00:00:00 2001 From: Dana Kutenicsova Date: Wed, 12 Oct 2016 11:00:00 +0200 Subject: [PATCH] Removed sonar warnings from binding-dom-adapter. Change-Id: I25fce8206a8219e9bb5479b2df07d9bb70388d89 Signed-off-by: Dana Kutenicsova --- .../mdsal/binding/api/DataTreeIdentifier.java | 6 +- ...DOMCursorAwareWriteTransactionAdapter.java | 2 +- .../BindingDOMDataTreeProducerAdapter.java | 4 - .../BindingDOMDataTreeWriteCursorAdapter.java | 10 +-- .../BindingDOMMountPointServiceAdapter.java | 4 +- .../BindingDOMRpcImplementationAdapter.java | 20 ++--- .../adapter/BindingDOMRpcServiceAdapter.java | 21 ++---- .../adapter/BindingToNormalizedNodeCodec.java | 2 +- .../adapter/ContextReferenceExtractor.java | 74 +++++++++---------- .../binding/dom/adapter/FutureSchema.java | 3 +- .../dom/adapter/RpcServiceAdapter.java | 61 ++++++++------- 11 files changed, 95 insertions(+), 112 deletions(-) diff --git a/binding/mdsal-binding-api/src/main/java/org/opendaylight/mdsal/binding/api/DataTreeIdentifier.java b/binding/mdsal-binding-api/src/main/java/org/opendaylight/mdsal/binding/api/DataTreeIdentifier.java index 52e2317cb3..ab51f40ecf 100644 --- a/binding/mdsal-binding-api/src/main/java/org/opendaylight/mdsal/binding/api/DataTreeIdentifier.java +++ b/binding/mdsal-binding-api/src/main/java/org/opendaylight/mdsal/binding/api/DataTreeIdentifier.java @@ -41,7 +41,8 @@ public final class DataTreeIdentifier implements Immutable * * @return Logical data store type. Guaranteed to be non-null. */ - public @Nonnull LogicalDatastoreType getDatastoreType() { + @Nonnull + public LogicalDatastoreType getDatastoreType() { return datastoreType; } @@ -50,7 +51,8 @@ public final class DataTreeIdentifier implements Immutable * * @return Instance identifier corresponding to the root node. */ - public @Nonnull InstanceIdentifier getRootIdentifier() { + @Nonnull + public InstanceIdentifier getRootIdentifier() { return rootIdentifier; } diff --git a/binding/mdsal-binding-dom-adapter/src/main/java/org/opendaylight/mdsal/binding/dom/adapter/BindingDOMCursorAwareWriteTransactionAdapter.java b/binding/mdsal-binding-dom-adapter/src/main/java/org/opendaylight/mdsal/binding/dom/adapter/BindingDOMCursorAwareWriteTransactionAdapter.java index 6110acda6e..31c5971d0f 100644 --- a/binding/mdsal-binding-dom-adapter/src/main/java/org/opendaylight/mdsal/binding/dom/adapter/BindingDOMCursorAwareWriteTransactionAdapter.java +++ b/binding/mdsal-binding-dom-adapter/src/main/java/org/opendaylight/mdsal/binding/dom/adapter/BindingDOMCursorAwareWriteTransactionAdapter.java @@ -34,7 +34,7 @@ public class BindingDOMCursorAwareWriteTransactionAdapter DataTreeWriteCursor createCursor(final DataTreeIdentifier path) { + public

DataTreeWriteCursor createCursor(final DataTreeIdentifier

path) { final YangInstanceIdentifier yPath = codec.toNormalized(path.getRootIdentifier()); final DOMDataTreeWriteCursor cursor = delegate.createCursor( new DOMDataTreeIdentifier(path.getDatastoreType(), yPath)); diff --git a/binding/mdsal-binding-dom-adapter/src/main/java/org/opendaylight/mdsal/binding/dom/adapter/BindingDOMDataTreeProducerAdapter.java b/binding/mdsal-binding-dom-adapter/src/main/java/org/opendaylight/mdsal/binding/dom/adapter/BindingDOMDataTreeProducerAdapter.java index fd91c1c2af..6ae74c7d9a 100644 --- a/binding/mdsal-binding-dom-adapter/src/main/java/org/opendaylight/mdsal/binding/dom/adapter/BindingDOMDataTreeProducerAdapter.java +++ b/binding/mdsal-binding-dom-adapter/src/main/java/org/opendaylight/mdsal/binding/dom/adapter/BindingDOMDataTreeProducerAdapter.java @@ -16,7 +16,6 @@ import org.opendaylight.mdsal.binding.api.DataTreeProducerException; import org.opendaylight.mdsal.dom.api.DOMDataTreeCursorAwareTransaction; import org.opendaylight.mdsal.dom.api.DOMDataTreeIdentifier; import org.opendaylight.mdsal.dom.api.DOMDataTreeProducer; -import org.opendaylight.mdsal.dom.api.DOMDataTreeProducerBusyException; import org.opendaylight.mdsal.dom.api.DOMDataTreeProducerException; class BindingDOMDataTreeProducerAdapter implements DataTreeProducer { @@ -53,11 +52,8 @@ class BindingDOMDataTreeProducerAdapter implements DataTreeProducer { public void close() throws DataTreeProducerException { try { delegate.close(); - } catch (final DOMDataTreeProducerBusyException e) { - throw new DataTreeProducerException(e.getMessage(), e); } catch (final DOMDataTreeProducerException e) { throw new DataTreeProducerException(e.getMessage(), e); } } - } diff --git a/binding/mdsal-binding-dom-adapter/src/main/java/org/opendaylight/mdsal/binding/dom/adapter/BindingDOMDataTreeWriteCursorAdapter.java b/binding/mdsal-binding-dom-adapter/src/main/java/org/opendaylight/mdsal/binding/dom/adapter/BindingDOMDataTreeWriteCursorAdapter.java index be5989d794..afb252fc95 100644 --- a/binding/mdsal-binding-dom-adapter/src/main/java/org/opendaylight/mdsal/binding/dom/adapter/BindingDOMDataTreeWriteCursorAdapter.java +++ b/binding/mdsal-binding-dom-adapter/src/main/java/org/opendaylight/mdsal/binding/dom/adapter/BindingDOMDataTreeWriteCursorAdapter.java @@ -43,12 +43,12 @@ public class BindingDOMDataTreeWriteCursorAdapter Entry> convertToNormalized( - final PathArgument child, final T data) { + private

Entry> convertToNormalized( + final PathArgument child, final P data) { stack.push(child); final InstanceIdentifier iid = InstanceIdentifier.create(stack); final Entry> entry - = codec.toNormalizedNode(new SimpleEntry<>(iid, data)); + = codec.toNormalizedNode(new SimpleEntry<>(iid, data)); stack.pop(); return entry; } @@ -59,13 +59,13 @@ public class BindingDOMDataTreeWriteCursorAdapter void merge(final PathArgument child, final T data) { + public

void merge(final PathArgument child, final P data) { final Entry> entry = convertToNormalized(child, data); delegate.merge(entry.getKey().getLastPathArgument(), entry.getValue()); } @Override - public void write(PathArgument child, T data) { + public

void write(final PathArgument child, P data) { final Entry> entry = convertToNormalized(child, data); delegate.write(entry.getKey().getLastPathArgument(), entry.getValue()); } diff --git a/binding/mdsal-binding-dom-adapter/src/main/java/org/opendaylight/mdsal/binding/dom/adapter/BindingDOMMountPointServiceAdapter.java b/binding/mdsal-binding-dom-adapter/src/main/java/org/opendaylight/mdsal/binding/dom/adapter/BindingDOMMountPointServiceAdapter.java index 7c5027e6c6..ba5d4fe6d2 100644 --- a/binding/mdsal-binding-dom-adapter/src/main/java/org/opendaylight/mdsal/binding/dom/adapter/BindingDOMMountPointServiceAdapter.java +++ b/binding/mdsal-binding-dom-adapter/src/main/java/org/opendaylight/mdsal/binding/dom/adapter/BindingDOMMountPointServiceAdapter.java @@ -48,7 +48,7 @@ public class BindingDOMMountPointServiceAdapter implements MountPointService { YangInstanceIdentifier domPath = codec.toYangInstanceIdentifierBlocking(mountPoint); Optional domMount = mountService.getMountPoint(domPath); if (domMount.isPresent()) { - return Optional.fromNullable(bindingMountpoints.getUnchecked(domMount.get())); + return Optional.fromNullable(bindingMountpoints.getUnchecked(domMount.get())); } return Optional.absent(); } @@ -56,7 +56,7 @@ public class BindingDOMMountPointServiceAdapter implements MountPointService { @Override public ListenerRegistration registerListener(InstanceIdentifier path, T listener) { - return new BindingDOMMountPointListenerAdapter(listener,codec,mountService); + return new BindingDOMMountPointListenerAdapter<>(listener, codec, mountService); } } diff --git a/binding/mdsal-binding-dom-adapter/src/main/java/org/opendaylight/mdsal/binding/dom/adapter/BindingDOMRpcImplementationAdapter.java b/binding/mdsal-binding-dom-adapter/src/main/java/org/opendaylight/mdsal/binding/dom/adapter/BindingDOMRpcImplementationAdapter.java index 5900ce3aaa..52ef071186 100644 --- a/binding/mdsal-binding-dom-adapter/src/main/java/org/opendaylight/mdsal/binding/dom/adapter/BindingDOMRpcImplementationAdapter.java +++ b/binding/mdsal-binding-dom-adapter/src/main/java/org/opendaylight/mdsal/binding/dom/adapter/BindingDOMRpcImplementationAdapter.java @@ -17,7 +17,6 @@ import java.lang.reflect.Method; import java.util.HashMap; import java.util.Map; import java.util.Map.Entry; -import java.util.concurrent.Callable; import java.util.concurrent.ExecutionException; import org.opendaylight.mdsal.dom.api.DOMRpcException; import org.opendaylight.mdsal.dom.api.DOMRpcIdentifier; @@ -47,16 +46,13 @@ public class BindingDOMRpcImplementationAdapter implements DOMRpcImplementation public BindingDOMRpcImplementationAdapter(final BindingNormalizedNodeCodecRegistry codec, final Class type, final Map localNameToMethod, final T delegate) { try { - this.invoker = SERVICE_INVOKERS.get(type, new Callable() { - @Override - public RpcServiceInvoker call() { - final Map map = new HashMap<>(); - for (Entry e : localNameToMethod.entrySet()) { - map.put(e.getKey().getLastComponent(), e.getValue()); - } - - return RpcServiceInvoker.from(map); + this.invoker = SERVICE_INVOKERS.get(type, () -> { + final Map map = new HashMap<>(); + for (Entry e : localNameToMethod.entrySet()) { + map.put(e.getKey().getLastComponent(), e.getValue()); } + + return RpcServiceInvoker.from(map); }); } catch (ExecutionException e) { throw new IllegalArgumentException("Failed to create invokers for type " + type, e); @@ -73,7 +69,7 @@ public class BindingDOMRpcImplementationAdapter implements DOMRpcImplementation final SchemaPath schemaPath = rpc.getType(); final DataObject bindingInput = input != null ? deserilialize(rpc.getType(),input) : null; final ListenableFuture> bindingResult = invoke(schemaPath,bindingInput); - return transformResult(schemaPath,bindingResult); + return transformResult(bindingResult); } private DataObject deserilialize(final SchemaPath rpcPath, final NormalizedNode input) { @@ -88,7 +84,7 @@ public class BindingDOMRpcImplementationAdapter implements DOMRpcImplementation return JdkFutureAdapters.listenInPoolThread(invoker.invokeRpc(delegate, schemaPath.getLastComponent(), input)); } - private CheckedFuture transformResult(final SchemaPath schemaPath, + private CheckedFuture transformResult( final ListenableFuture> bindingResult) { return LazyDOMRpcResultFuture.create(codec, bindingResult); } diff --git a/binding/mdsal-binding-dom-adapter/src/main/java/org/opendaylight/mdsal/binding/dom/adapter/BindingDOMRpcServiceAdapter.java b/binding/mdsal-binding-dom-adapter/src/main/java/org/opendaylight/mdsal/binding/dom/adapter/BindingDOMRpcServiceAdapter.java index a4599c9815..991abdb061 100644 --- a/binding/mdsal-binding-dom-adapter/src/main/java/org/opendaylight/mdsal/binding/dom/adapter/BindingDOMRpcServiceAdapter.java +++ b/binding/mdsal-binding-dom-adapter/src/main/java/org/opendaylight/mdsal/binding/dom/adapter/BindingDOMRpcServiceAdapter.java @@ -24,19 +24,18 @@ import org.opendaylight.yangtools.yang.binding.util.BindingReflections; public class BindingDOMRpcServiceAdapter implements RpcConsumerRegistry { - protected static final Factory BUILDER_FACTORY = new Factory() { - - @Override - public BindingDOMAdapterBuilder newBuilder() { - return new Builder(); - } - - }; + protected static final Factory BUILDER_FACTORY = Builder::new; private final LoadingCache, RpcServiceAdapter> proxies = CacheBuilder.newBuilder() .weakKeys() .build(new CacheLoader, RpcServiceAdapter>() { + private RpcServiceAdapter createProxy(final Class key) { + Preconditions.checkArgument(BindingReflections.isBindingClass(key)); + Preconditions.checkArgument(key.isInterface(), "Supplied RPC service type must be interface."); + return new RpcServiceAdapter(key, codec, domService); + } + @Override public RpcServiceAdapter load(final Class key) throws Exception { return createProxy(key); @@ -60,12 +59,6 @@ public class BindingDOMRpcServiceAdapter implements RpcConsumerRegistry { return (T) proxies.getUnchecked(rpcService).getProxy(); } - private RpcServiceAdapter createProxy(final Class key) { - Preconditions.checkArgument(BindingReflections.isBindingClass(key)); - Preconditions.checkArgument(key.isInterface(), "Supplied RPC service type must be interface."); - return new RpcServiceAdapter(key, codec, domService); - } - private static final class Builder extends BindingDOMAdapterBuilder { @Override diff --git a/binding/mdsal-binding-dom-adapter/src/main/java/org/opendaylight/mdsal/binding/dom/adapter/BindingToNormalizedNodeCodec.java b/binding/mdsal-binding-dom-adapter/src/main/java/org/opendaylight/mdsal/binding/dom/adapter/BindingToNormalizedNodeCodec.java index 2a7c32932b..646c026d8e 100644 --- a/binding/mdsal-binding-dom-adapter/src/main/java/org/opendaylight/mdsal/binding/dom/adapter/BindingToNormalizedNodeCodec.java +++ b/binding/mdsal-binding-dom-adapter/src/main/java/org/opendaylight/mdsal/binding/dom/adapter/BindingToNormalizedNodeCodec.java @@ -347,7 +347,7 @@ public final class BindingToNormalizedNodeCodec implements BindingCodecTreeFacto * return non-null value. */ final BindingCodecTreeNode codecContext = currentCodecTree.getSubtreeCodec(bindingPath); - return new SimpleEntry, BindingCodecTreeNode>(bindingPath, codecContext); + return new SimpleEntry<>(bindingPath, codecContext); } @SuppressWarnings("unchecked") diff --git a/binding/mdsal-binding-dom-adapter/src/main/java/org/opendaylight/mdsal/binding/dom/adapter/ContextReferenceExtractor.java b/binding/mdsal-binding-dom-adapter/src/main/java/org/opendaylight/mdsal/binding/dom/adapter/ContextReferenceExtractor.java index e04c925689..d9b4bf08ad 100644 --- a/binding/mdsal-binding-dom-adapter/src/main/java/org/opendaylight/mdsal/binding/dom/adapter/ContextReferenceExtractor.java +++ b/binding/mdsal-binding-dom-adapter/src/main/java/org/opendaylight/mdsal/binding/dom/adapter/ContextReferenceExtractor.java @@ -32,7 +32,6 @@ abstract class ContextReferenceExtractor { } }; - private static final LoadingCache, ContextReferenceExtractor> EXTRACTORS = CacheBuilder.newBuilder() .weakKeys().build(new CacheLoader, ContextReferenceExtractor>() { @@ -40,6 +39,41 @@ abstract class ContextReferenceExtractor { public ContextReferenceExtractor load(final Class key) throws Exception { return create(key); } + + @Nonnull + private ContextReferenceExtractor create(final Class key) { + final Method contextGetter = getContextGetter(key); + if (contextGetter == null) { + return NULL_EXTRACTOR; + } + final Class returnType = contextGetter.getReturnType(); + try { + if (InstanceIdentifier.class.isAssignableFrom(returnType)) { + return DirectGetterRouteContextExtractor.create(contextGetter); + } + final Method getValueMethod = findGetValueMethod(returnType, InstanceIdentifier.class); + if (getValueMethod != null) { + return GetValueRouteContextExtractor.create(contextGetter, getValueMethod); + } else { + LOG.warn("Class {} can not be used to determine context, falling back to NULL_EXTRACTOR.", + returnType); + } + } catch (final IllegalAccessException e) { + LOG.warn( + "Class {} does not conform to Binding Specification v1. Falling back to NULL_EXTRACTOR", + e); + } + return NULL_EXTRACTOR; + } + + private Method getContextGetter(final Class key) { + for (final Method method : key.getMethods()) { + if (method.getAnnotation(RoutingContext.class) != null) { + return method; + } + } + return null; + } }); @@ -59,30 +93,8 @@ abstract class ContextReferenceExtractor { * @return Instance Identifier representing context reference * or null, if data object does not contain context reference. */ - abstract @Nullable InstanceIdentifier extract(DataObject obj); - - @Nonnull - private static ContextReferenceExtractor create(final Class key) { - final Method contextGetter = getContextGetter(key); - if (contextGetter == null) { - return NULL_EXTRACTOR; - } - final Class returnType = contextGetter.getReturnType(); - try { - if (InstanceIdentifier.class.isAssignableFrom(returnType)) { - return DirectGetterRouteContextExtractor.create(contextGetter); - } - final Method getValueMethod = findGetValueMethod(returnType,InstanceIdentifier.class); - if (getValueMethod != null) { - return GetValueRouteContextExtractor.create(contextGetter, getValueMethod); - } else { - LOG.warn("Class {} can not be used to determine context, falling back to NULL_EXTRACTOR.",returnType); - } - } catch (final IllegalAccessException e) { - LOG.warn("Class {} does not conform to Binding Specification v1. Falling back to NULL_EXTRACTOR", e); - } - return NULL_EXTRACTOR; - } + @Nullable + abstract InstanceIdentifier extract(DataObject obj); @Nullable private static Method findGetValueMethod(final Class type, final Class returnType) { @@ -96,16 +108,4 @@ abstract class ContextReferenceExtractor { } return null; } - - private static Method getContextGetter(final Class key) { - for (final Method method : key.getMethods()) { - if (method.getAnnotation(RoutingContext.class) != null) { - return method; - } - } - return null; - } - - - } diff --git a/binding/mdsal-binding-dom-adapter/src/main/java/org/opendaylight/mdsal/binding/dom/adapter/FutureSchema.java b/binding/mdsal-binding-dom-adapter/src/main/java/org/opendaylight/mdsal/binding/dom/adapter/FutureSchema.java index 7719bb0bab..aaada60ee2 100644 --- a/binding/mdsal-binding-dom-adapter/src/main/java/org/opendaylight/mdsal/binding/dom/adapter/FutureSchema.java +++ b/binding/mdsal-binding-dom-adapter/src/main/java/org/opendaylight/mdsal/binding/dom/adapter/FutureSchema.java @@ -25,6 +25,7 @@ import org.opendaylight.yangtools.yang.binding.Augmentation; class FutureSchema implements AutoCloseable { private final List postponedOperations = new CopyOnWriteArrayList<>(); + private final SettableFuture schemaPromise = SettableFuture.create(); private final long duration; private final TimeUnit unit; @@ -115,8 +116,6 @@ class FutureSchema implements AutoCloseable { final void cancel() { schemaPromise.cancel(true); } - - private final SettableFuture schemaPromise = SettableFuture.create(); } } diff --git a/binding/mdsal-binding-dom-adapter/src/main/java/org/opendaylight/mdsal/binding/dom/adapter/RpcServiceAdapter.java b/binding/mdsal-binding-dom-adapter/src/main/java/org/opendaylight/mdsal/binding/dom/adapter/RpcServiceAdapter.java index 3835bc9a50..c5171e1228 100644 --- a/binding/mdsal-binding-dom-adapter/src/main/java/org/opendaylight/mdsal/binding/dom/adapter/RpcServiceAdapter.java +++ b/binding/mdsal-binding-dom-adapter/src/main/java/org/opendaylight/mdsal/binding/dom/adapter/RpcServiceAdapter.java @@ -61,15 +61,6 @@ class RpcServiceAdapter implements InvocationHandler { proxy = (RpcService) Proxy.newProxyInstance(type.getClassLoader(), new Class[] {type}, this); } - private ListenableFuture> invoke0(final SchemaPath schemaPath, final NormalizedNode input) { - final CheckedFuture result = delegate.invokeRpc(schemaPath, input); - if (result instanceof LazyDOMRpcResultFuture) { - return ((LazyDOMRpcResultFuture) result).getBindingFuture(); - } - - return transformFuture(schemaPath, result, codec.getCodecFactory()); - } - private RpcInvocationStrategy createStrategy(final Method method, final RpcDefinition schema) { final RpcRoutingStrategy strategy = RpcRoutingStrategy.from(schema); if (strategy.isContextBasedRouted()) { @@ -105,12 +96,12 @@ class RpcServiceAdapter implements InvocationHandler { private static boolean isObjectMethod(final Method method) { switch (method.getName()) { case "toString": - return (method.getReturnType().equals(String.class) && method.getParameterTypes().length == 0); + return method.getReturnType().equals(String.class) && method.getParameterTypes().length == 0; case "hashCode": - return (method.getReturnType().equals(int.class) && method.getParameterTypes().length == 0); + return method.getReturnType().equals(int.class) && method.getParameterTypes().length == 0; case "equals": - return (method.getReturnType().equals(boolean.class) && method.getParameterTypes().length == 1 && method - .getParameterTypes()[0] == Object.class); + return method.getReturnType().equals(boolean.class) && method.getParameterTypes().length == 1 + && method.getParameterTypes()[0] == Object.class; default: return false; } @@ -123,30 +114,12 @@ class RpcServiceAdapter implements InvocationHandler { case "hashCode": return System.identityHashCode(self); case "equals": - return (self == args[0]); + return self == args[0]; default: return null; } } - private static ListenableFuture> transformFuture(final SchemaPath rpc, - final ListenableFuture domFuture, final BindingNormalizedNodeCodecRegistry codec) { - return Futures.transform(domFuture, new Function>() { - @Override - public RpcResult apply(final DOMRpcResult input) { - final NormalizedNode domData = input.getResult(); - final DataObject bindingResult; - if (domData != null) { - final SchemaPath rpcOutput = rpc.createChild(QName.create(rpc.getLastComponent(), "output")); - bindingResult = codec.fromNormalizedNodeRpcData(rpcOutput, (ContainerNode) domData); - } else { - bindingResult = null; - } - return RpcResult.class.cast(RpcResultBuilder.success(bindingResult).build()); - } - }); - } - private abstract class RpcInvocationStrategy { private final SchemaPath rpcName; @@ -169,6 +142,30 @@ class RpcServiceAdapter implements InvocationHandler { return rpcName; } + private ListenableFuture> invoke0(final SchemaPath schemaPath, final NormalizedNode input) { + final CheckedFuture result = delegate.invokeRpc(schemaPath, input); + if (result instanceof LazyDOMRpcResultFuture) { + return ((LazyDOMRpcResultFuture) result).getBindingFuture(); + } + + return transformFuture(schemaPath, result, codec.getCodecFactory()); + } + + private ListenableFuture> transformFuture(final SchemaPath rpc, + final ListenableFuture domFuture, final BindingNormalizedNodeCodecRegistry codec) { + return Futures.transform(domFuture, (Function>) input -> { + final NormalizedNode domData = input.getResult(); + final DataObject bindingResult; + if (domData != null) { + final SchemaPath rpcOutput = rpc.createChild(QName.create(rpc.getLastComponent(), "output")); + bindingResult = codec.fromNormalizedNodeRpcData(rpcOutput, (ContainerNode) domData); + } else { + bindingResult = null; + } + return RpcResult.class.cast(RpcResultBuilder.success(bindingResult).build()); + }); + } + } private final class NonRoutedStrategy extends RpcInvocationStrategy { -- 2.36.6