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;
}
/**