From d90adcf214a8f17ae5de22cf8964cbb2a9963972 Mon Sep 17 00:00:00 2001 From: Robert Varga Date: Fri, 16 Nov 2018 07:38:51 +0100 Subject: [PATCH 1/1] Use Method.getParameterCount() Java 8 introduced this method, which bypasses array cloning done by getParameterTypes(), making it more efficient. Take advantage of it. JIRA: MDSAL-398 Change-Id: Id5d4972ba20d63a8ff79e4adbdf6d2adbfce0b87 Signed-off-by: Robert Varga --- .../mdsal/binding/dom/adapter/RpcServiceAdapter.java | 8 ++++---- .../mdsal/binding/dom/codec/impl/BindingCodecContext.java | 2 +- .../mdsal/binding/dom/codec/impl/LazyDataObject.java | 2 +- .../api/generator/test/CascadeUsesCompilationTest.java | 2 +- .../mdsal/binding/spec/reflect/BindingReflections.java | 6 +++--- 5 files changed, 10 insertions(+), 10 deletions(-) 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 ef1379d132..f7a69b5956 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 @@ -76,7 +76,7 @@ class RpcServiceAdapter implements InvocationHandler { final RpcInvocationStrategy rpc = rpcNames.get(method); if (rpc != null) { - if (method.getParameterTypes().length == 0) { + if (method.getParameterCount() == 0) { return rpc.invokeEmpty(); } if (args.length != 1) { @@ -87,17 +87,17 @@ class RpcServiceAdapter implements InvocationHandler { switch (method.getName()) { case "toString": - if (method.getReturnType().equals(String.class) && method.getParameterTypes().length == 0) { + if (method.getReturnType().equals(String.class) && method.getParameterCount() == 0) { return type.getName() + "$Adapter{delegate=" + delegate.toString() + "}"; } break; case "hashCode": - if (method.getReturnType().equals(int.class) && method.getParameterTypes().length == 0) { + if (method.getReturnType().equals(int.class) && method.getParameterCount() == 0) { return System.identityHashCode(proxy); } break; case "equals": - if (method.getReturnType().equals(boolean.class) && method.getParameterTypes().length == 1 + if (method.getReturnType().equals(boolean.class) && method.getParameterCount() == 1 && method.getParameterTypes()[0] == Object.class) { return proxy == args[0]; } diff --git a/binding/mdsal-binding-dom-codec/src/main/java/org/opendaylight/mdsal/binding/dom/codec/impl/BindingCodecContext.java b/binding/mdsal-binding-dom-codec/src/main/java/org/opendaylight/mdsal/binding/dom/codec/impl/BindingCodecContext.java index f4d589696e..fe0824110d 100644 --- a/binding/mdsal-binding-dom-codec/src/main/java/org/opendaylight/mdsal/binding/dom/codec/impl/BindingCodecContext.java +++ b/binding/mdsal-binding-dom-codec/src/main/java/org/opendaylight/mdsal/binding/dom/codec/impl/BindingCodecContext.java @@ -243,7 +243,7 @@ final class BindingCodecContext implements CodecContextFactory, BindingCodecTree final Map getterToLeafSchema) { final Map> leaves = new HashMap<>(); for (final Method method : parentClass.getMethods()) { - if (method.getParameterTypes().length == 0) { + if (method.getParameterCount() == 0) { final DataSchemaNode schema = getterToLeafSchema.get(method.getName()); final Class valueType; if (schema instanceof LeafSchemaNode) { diff --git a/binding/mdsal-binding-dom-codec/src/main/java/org/opendaylight/mdsal/binding/dom/codec/impl/LazyDataObject.java b/binding/mdsal-binding-dom-codec/src/main/java/org/opendaylight/mdsal/binding/dom/codec/impl/LazyDataObject.java index 4437c00772..bc9d1863e0 100644 --- a/binding/mdsal-binding-dom-codec/src/main/java/org/opendaylight/mdsal/binding/dom/codec/impl/LazyDataObject.java +++ b/binding/mdsal-binding-dom-codec/src/main/java/org/opendaylight/mdsal/binding/dom/codec/impl/LazyDataObject.java @@ -63,7 +63,7 @@ class LazyDataObject implements InvocationHandler, Augment @Override public Object invoke(final Object proxy, final Method method, final Object[] args) { - if (method.getParameterTypes().length == 0) { + if (method.getParameterCount() == 0) { final String name = method.getName(); if (DATA_CONTAINER_GET_IMPLEMENTED_INTERFACE_NAME.equals(name)) { return context.getBindingClass(); diff --git a/binding/mdsal-binding-java-api-generator/src/test/java/org/opendaylight/mdsal/binding/java/api/generator/test/CascadeUsesCompilationTest.java b/binding/mdsal-binding-java-api-generator/src/test/java/org/opendaylight/mdsal/binding/java/api/generator/test/CascadeUsesCompilationTest.java index 1d2c06e9e7..461a9073d6 100644 --- a/binding/mdsal-binding-java-api-generator/src/test/java/org/opendaylight/mdsal/binding/java/api/generator/test/CascadeUsesCompilationTest.java +++ b/binding/mdsal-binding-java-api-generator/src/test/java/org/opendaylight/mdsal/binding/java/api/generator/test/CascadeUsesCompilationTest.java @@ -120,7 +120,7 @@ public class CascadeUsesCompilationTest extends BaseCompilationTest { } } assertNotNull(fieldsFromMethod); - assertEquals(1, fieldsFromMethod.getParameterTypes().length); + assertEquals(1, fieldsFromMethod.getParameterCount()); cleanUp(sourcesOutputDir, compiledOutputDir); } diff --git a/binding/mdsal-binding-spec-util/src/main/java/org/opendaylight/mdsal/binding/spec/reflect/BindingReflections.java b/binding/mdsal-binding-spec-util/src/main/java/org/opendaylight/mdsal/binding/spec/reflect/BindingReflections.java index 17938db379..0da11d9945 100644 --- a/binding/mdsal-binding-spec-util/src/main/java/org/opendaylight/mdsal/binding/spec/reflect/BindingReflections.java +++ b/binding/mdsal-binding-spec-util/src/main/java/org/opendaylight/mdsal/binding/spec/reflect/BindingReflections.java @@ -137,7 +137,7 @@ public final class BindingReflections { // resolveRpcInputClass() check.While RpcMethodInvoker counts with one argument for // non input type and two arguments for input type, resolveRpcInputClass() counting // with zero for non input and one for input type - && possibleMethod.getParameterTypes().length <= 2; + && possibleMethod.getParameterCount() <= 2; } /** @@ -284,7 +284,7 @@ public final class BindingReflections { */ public static boolean isNotificationCallback(final Method method) { checkArgument(method != null); - if (method.getName().startsWith("on") && method.getParameterTypes().length == 1) { + if (method.getName().startsWith("on") && method.getParameterCount() == 1) { Class potentialNotification = method.getParameterTypes()[0]; if (isNotification(potentialNotification) && method.getName().equals("on" + potentialNotification.getSimpleName())) { @@ -422,7 +422,7 @@ public final class BindingReflections { private static Optional> getYangModeledReturnType(final Method method, final String prefix) { final String methodName = method.getName(); - if ("getClass".equals(methodName) || !methodName.startsWith(prefix) || method.getParameterTypes().length > 0) { + if ("getClass".equals(methodName) || !methodName.startsWith(prefix) || method.getParameterCount() > 0) { return Optional.empty(); } -- 2.36.6