[jboss-cvs] JBossAS SVN: r67331 - trunk/ejb3/src/main/org/jboss/ejb3/interceptor.
jboss-cvs-commits at lists.jboss.org
jboss-cvs-commits at lists.jboss.org
Wed Nov 21 07:23:14 EST 2007
Author: wolfc
Date: 2007-11-21 07:23:14 -0500 (Wed, 21 Nov 2007)
New Revision: 67331
Modified:
trunk/ejb3/src/main/org/jboss/ejb3/interceptor/InterceptorInfoRepository.java
Log:
EJBTHREE-1126: using specified class when looking for interceptor methods
Modified: trunk/ejb3/src/main/org/jboss/ejb3/interceptor/InterceptorInfoRepository.java
===================================================================
--- trunk/ejb3/src/main/org/jboss/ejb3/interceptor/InterceptorInfoRepository.java 2007-11-21 11:28:48 UTC (rev 67330)
+++ trunk/ejb3/src/main/org/jboss/ejb3/interceptor/InterceptorInfoRepository.java 2007-11-21 12:23:14 UTC (rev 67331)
@@ -514,7 +514,7 @@
}
- private Class loadClass(String name)
+ private Class<?> loadClass(String name)
{
try
{
@@ -816,17 +816,17 @@
InterceptorInfo getInfo()
{
- info.setAroundInvoke(findInterceptorMethodFromXml(clazz, "around-invoke-method", xml.getAroundInvokes()));
- info.setPostConstruct(findInterceptorMethodFromXml(clazz, "post-construct-method", xml.getPostConstructs()));
- info.setPostActivate(findInterceptorMethodFromXml(clazz, "post-activate-method", xml.getPostActivates()));
- info.setPreDestroy(findInterceptorMethodFromXml(clazz, "pre-destroy-method", xml.getPreDestroys()));
- info.setPrePassivate(findInterceptorMethodFromXml(clazz, "pre-passivate-method", xml.getPrePassivates()));
+ info.setAroundInvoke(findInterceptorMethodFromXml("around-invoke-method", xml.getAroundInvokes()));
+ info.setPostConstruct(findInterceptorMethodFromXml("post-construct-method", xml.getPostConstructs()));
+ info.setPostActivate(findInterceptorMethodFromXml("post-activate-method", xml.getPostActivates()));
+ info.setPreDestroy(findInterceptorMethodFromXml("pre-destroy-method", xml.getPreDestroys()));
+ info.setPrePassivate(findInterceptorMethodFromXml("pre-passivate-method", xml.getPrePassivates()));
super.getInfo();
info.setXml(xml);
return info;
}
- Method findInterceptorMethodFromXml(Class<?> clazz, String lookingFor, AroundInvokesMetaData aroundInvokes)
+ Method findInterceptorMethodFromXml(String lookingFor, AroundInvokesMetaData aroundInvokes)
{
if (aroundInvokes == null)
return null;
@@ -834,10 +834,10 @@
throw new RuntimeException("NYI");
AroundInvokeMetaData aroundInvoke = aroundInvokes.get(0);
- return findInterceptorMethodFromXml(clazz, lookingFor, aroundInvoke.getMethodName());
+ return findInterceptorMethodFromXml(lookingFor, aroundInvoke.getClassName(), aroundInvoke.getMethodName());
}
- Method findInterceptorMethodFromXml(Class<?> clazz, String lookingFor, LifecycleCallbacksMetaData lifecycleCallbacks)
+ Method findInterceptorMethodFromXml(String lookingFor, LifecycleCallbacksMetaData lifecycleCallbacks)
{
if (lifecycleCallbacks == null)
return null;
@@ -845,13 +845,21 @@
throw new RuntimeException("NYI");
LifecycleCallbackMetaData lifecycleCallback = lifecycleCallbacks.get(0);
- return findInterceptorMethodFromXml(clazz, lookingFor, lifecycleCallback.getMethodName());
+ return findInterceptorMethodFromXml(lookingFor, lifecycleCallback.getClassName(), lifecycleCallback.getMethodName());
}
- Method findInterceptorMethodFromXml(Class<?> clazz, String lookingFor, String methodName)
+ Method findInterceptorMethodFromXml(String lookingFor, String className, String methodName)
{
if (xml == null)
return null;
+
+ // If a class name is specified look in there, else in the surrounding class
+ Class<?> cls;
+ if(className == null)
+ cls = clazz;
+ else
+ cls = loadClass(className);
+
if (methodName == null || methodName.trim().equals(""))
{
throw new RuntimeException(lookingFor + " must contain a valid method name for interceptor "
@@ -859,7 +867,7 @@
}
List<Method> possible = new ArrayList<Method>();
- for (java.lang.reflect.Method method : clazz.getDeclaredMethods())
+ for (java.lang.reflect.Method method : cls.getDeclaredMethods())
{
if (methodName.equals(method.getName()))
{
@@ -869,8 +877,7 @@
if (possible.size() == 0)
{
- throw new RuntimeException(lookingFor + " must contain a valid method name for interceptor "
- + clazz.getName());
+ throw new RuntimeException(lookingFor + " can't find method " + methodName + " on " + cls.getName());
}
Method found = null;
@@ -896,6 +903,7 @@
if (found == null)
{
+ // TODO: improve error message
throw new RuntimeException(lookingFor + " has the wrong method signature for interceptor "
+ clazz.getName());
}
More information about the jboss-cvs-commits
mailing list