Author: davsclaus
Date: Wed Oct 15 11:48:58 2008
New Revision: 704991

URL: http://svn.apache.org/viewvc?rev=704991&view=rev
Log:
CAMEL-983, CAMEL-988: Finally got it nailed.

Modified:
    activemq/camel/trunk/camel-core/pom.xml
    
activemq/camel/trunk/camel-core/src/main/java/org/apache/camel/component/bean/BeanInfo.java

Modified: activemq/camel/trunk/camel-core/pom.xml
URL: 
http://svn.apache.org/viewvc/activemq/camel/trunk/camel-core/pom.xml?rev=704991&r1=704990&r2=704991&view=diff
==============================================================================
--- activemq/camel/trunk/camel-core/pom.xml (original)
+++ activemq/camel/trunk/camel-core/pom.xml Wed Oct 15 11:48:58 2008
@@ -137,8 +137,6 @@
           <excludes>
             <!-- TODO FIXME ASAP -->
             <exclude>**/XXXTest.*</exclude>
-            <!-- https://issues.apache.org/activemq/browse/CAMEL-988 -->
-            <exclude>**/BeanInfoInheritanceTest.*</exclude>
           </excludes>
         </configuration>
       </plugin>

Modified: 
activemq/camel/trunk/camel-core/src/main/java/org/apache/camel/component/bean/BeanInfo.java
URL: 
http://svn.apache.org/viewvc/activemq/camel/trunk/camel-core/src/main/java/org/apache/camel/component/bean/BeanInfo.java?rev=704991&r1=704990&r2=704991&view=diff
==============================================================================
--- 
activemq/camel/trunk/camel-core/src/main/java/org/apache/camel/component/bean/BeanInfo.java
 (original)
+++ 
activemq/camel/trunk/camel-core/src/main/java/org/apache/camel/component/bean/BeanInfo.java
 Wed Oct 15 11:48:58 2008
@@ -143,14 +143,17 @@
 
         MethodInfo methodInfo = createMethodInfo(clazz, method);
 
-        // skip methods that override existing methods we already have in our 
methodMap
-        // TODO: CAMEL-983
-        /*if (overridesExistingMethod(methodInfo)) {
+        // methods already registered should be prefered to use instead of 
super classes of existing methods
+        // we want to us the method from the sub class over super classes, so 
if we have already registered
+        // the method then use it (we are traversing upwards: sub (child) -> 
super (farther) )
+        MethodInfo existingMethodInfo = overridesExistingMethod(methodInfo);
+        if (existingMethodInfo != null) {
             if (LOG.isTraceEnabled()) {
-                LOG.trace("This method is already overriden in a subclass, so 
its skipped: " + method);
+                LOG.trace("This method is already overriden in a subclass, so 
the method from the sub class is prefered: " + existingMethodInfo);
             }
-            return null;
-        }*/
+
+            return existingMethodInfo;
+        }
 
         if (LOG.isTraceEnabled()) {
             LOG.trace("Adding operation: " + opName + " for method: " + 
methodInfo);
@@ -170,7 +173,13 @@
         return methodInfo;
     }
 
-    private boolean overridesExistingMethod(MethodInfo methodInfo) {
+    /**
+     * Does the given method info override an existing method registered 
before (from a subclass)
+     *
+     * @param methodInfo  the method to test
+     * @return the already registered method to use, null if not overriding any
+     */
+    private MethodInfo overridesExistingMethod(MethodInfo methodInfo) {
         for (MethodInfo info : methodMap.values()) {
 
             // name test
@@ -192,10 +201,10 @@
             }
 
             // sanme name, same parameters, then its overrides an existing 
class
-            return true;
+            return info;
         }
 
-        return false;
+        return null;
     }
 
     /**


Reply via email to