cxf git commit: [CXF-6438] Optimize ExtensionInvocationHandler

2015-06-04 Thread asoldano
Repository: cxf
Updated Branches:
  refs/heads/master c2b70fd46 - d5585c4c3


[CXF-6438] Optimize ExtensionInvocationHandler


Project: http://git-wip-us.apache.org/repos/asf/cxf/repo
Commit: http://git-wip-us.apache.org/repos/asf/cxf/commit/d5585c4c
Tree: http://git-wip-us.apache.org/repos/asf/cxf/tree/d5585c4c
Diff: http://git-wip-us.apache.org/repos/asf/cxf/diff/d5585c4c

Branch: refs/heads/master
Commit: d5585c4c352803bfdf43e91d3c5dd2bea2abeb86
Parents: c2b70fd
Author: Alessio Soldano asold...@redhat.com
Authored: Thu Jun 4 16:07:25 2015 +0200
Committer: Alessio Soldano asold...@redhat.com
Committed: Thu Jun 4 16:07:25 2015 +0200

--
 .../cxf/common/util/ExtensionInvocationHandler.java | 16 +++-
 1 file changed, 7 insertions(+), 9 deletions(-)
--


http://git-wip-us.apache.org/repos/asf/cxf/blob/d5585c4c/core/src/main/java/org/apache/cxf/common/util/ExtensionInvocationHandler.java
--
diff --git 
a/core/src/main/java/org/apache/cxf/common/util/ExtensionInvocationHandler.java 
b/core/src/main/java/org/apache/cxf/common/util/ExtensionInvocationHandler.java
index 1524c18..7672382 100644
--- 
a/core/src/main/java/org/apache/cxf/common/util/ExtensionInvocationHandler.java
+++ 
b/core/src/main/java/org/apache/cxf/common/util/ExtensionInvocationHandler.java
@@ -30,15 +30,13 @@ public class ExtensionInvocationHandler implements 
InvocationHandler {
 }
 
 public Object invoke(Object proxy, Method method, Object[] args) throws 
Throwable {
-Class?[] clzs = null;
-if (args != null) {
-clzs = new Class[args.length];
-for (int i = 0; i  args.length; i++) {
-clzs[i] = args[i].getClass();
-}
+if (method.getDeclaringClass().isAssignableFrom(obj.getClass())) {
+return method.invoke(obj, args);
+} else {
+//in case obj has the required method with exact signature despite 
it's class
+//not being assignable from the class declaring the specified 
method
+Method m = obj.getClass().getMethod(method.getName(), 
method.getParameterTypes());
+return m.invoke(obj, args);
 }
-
-Method m = obj.getClass().getMethod(method.getName(), 
method.getParameterTypes());
-return m.invoke(obj, args);
 }
 }



[1/3] cxf git commit: [CXF-6438] Optimize ExtensionInvocationHandler

2015-06-04 Thread asoldano
Repository: cxf
Updated Branches:
  refs/heads/3.0.x-fixes 32812b2bd - 99311036f


[CXF-6438] Optimize ExtensionInvocationHandler


Project: http://git-wip-us.apache.org/repos/asf/cxf/repo
Commit: http://git-wip-us.apache.org/repos/asf/cxf/commit/e76de136
Tree: http://git-wip-us.apache.org/repos/asf/cxf/tree/e76de136
Diff: http://git-wip-us.apache.org/repos/asf/cxf/diff/e76de136

Branch: refs/heads/3.0.x-fixes
Commit: e76de136822100ba01f8f9902e689ce28e44a964
Parents: 32812b2
Author: Alessio Soldano asold...@redhat.com
Authored: Thu Jun 4 16:07:25 2015 +0200
Committer: Alessio Soldano asold...@redhat.com
Committed: Thu Jun 4 16:11:57 2015 +0200

--
 .../cxf/common/util/ExtensionInvocationHandler.java | 16 +++-
 1 file changed, 7 insertions(+), 9 deletions(-)
--


http://git-wip-us.apache.org/repos/asf/cxf/blob/e76de136/core/src/main/java/org/apache/cxf/common/util/ExtensionInvocationHandler.java
--
diff --git 
a/core/src/main/java/org/apache/cxf/common/util/ExtensionInvocationHandler.java 
b/core/src/main/java/org/apache/cxf/common/util/ExtensionInvocationHandler.java
index 1524c18..7672382 100644
--- 
a/core/src/main/java/org/apache/cxf/common/util/ExtensionInvocationHandler.java
+++ 
b/core/src/main/java/org/apache/cxf/common/util/ExtensionInvocationHandler.java
@@ -30,15 +30,13 @@ public class ExtensionInvocationHandler implements 
InvocationHandler {
 }
 
 public Object invoke(Object proxy, Method method, Object[] args) throws 
Throwable {
-Class?[] clzs = null;
-if (args != null) {
-clzs = new Class[args.length];
-for (int i = 0; i  args.length; i++) {
-clzs[i] = args[i].getClass();
-}
+if (method.getDeclaringClass().isAssignableFrom(obj.getClass())) {
+return method.invoke(obj, args);
+} else {
+//in case obj has the required method with exact signature despite 
it's class
+//not being assignable from the class declaring the specified 
method
+Method m = obj.getClass().getMethod(method.getName(), 
method.getParameterTypes());
+return m.invoke(obj, args);
 }
-
-Method m = obj.getClass().getMethod(method.getName(), 
method.getParameterTypes());
-return m.invoke(obj, args);
 }
 }