You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@tomee.apache.org by db...@apache.org on 2007/03/17 22:56:44 UTC

svn commit: r519454 - in /incubator/openejb/trunk/openejb3/container/openejb-core/src/main/java/org/apache/openejb: assembler/classic/ config/ core/interceptor/

Author: dblevins
Date: Sat Mar 17 14:56:44 2007
New Revision: 519454

URL: http://svn.apache.org/viewvc?view=rev&rev=519454
Log:
Process @Resource for SessionContext.  Support for private and inherited callbacks.

Modified:
    incubator/openejb/trunk/openejb3/container/openejb-core/src/main/java/org/apache/openejb/assembler/classic/InterceptorBindingBuilder.java
    incubator/openejb/trunk/openejb3/container/openejb-core/src/main/java/org/apache/openejb/assembler/classic/JndiEncBuilder.java
    incubator/openejb/trunk/openejb3/container/openejb-core/src/main/java/org/apache/openejb/config/AnnotationDeployer.java
    incubator/openejb/trunk/openejb3/container/openejb-core/src/main/java/org/apache/openejb/core/interceptor/ReflectionInvocationContext.java

Modified: incubator/openejb/trunk/openejb3/container/openejb-core/src/main/java/org/apache/openejb/assembler/classic/InterceptorBindingBuilder.java
URL: http://svn.apache.org/viewvc/incubator/openejb/trunk/openejb3/container/openejb-core/src/main/java/org/apache/openejb/assembler/classic/InterceptorBindingBuilder.java?view=diff&rev=519454&r1=519453&r2=519454
==============================================================================
--- incubator/openejb/trunk/openejb3/container/openejb-core/src/main/java/org/apache/openejb/assembler/classic/InterceptorBindingBuilder.java (original)
+++ incubator/openejb/trunk/openejb3/container/openejb-core/src/main/java/org/apache/openejb/assembler/classic/InterceptorBindingBuilder.java Sat Mar 17 14:56:44 2007
@@ -130,12 +130,21 @@
     private void toCallback(Class clazz, List<CallbackInfo> callbackInfos, List<Method> methods) {
         for (CallbackInfo callbackInfo : callbackInfos) {
             try {
-                Method method = clazz.getMethod(callbackInfo.method);
+                Method method = getMethod(clazz, callbackInfo.method);
+                if (callbackInfo.className == null && method.getDeclaringClass().equals(clazz)){
+                    methods.add(method);
+                }
+                if (method.getDeclaringClass().getName().equals(callbackInfo.className)){
+                    methods.add(method);
+                }
                 methods.add(method);
             } catch (NoSuchMethodException e) {
-                logger.warning("Bean Callback method not found (skipping): public void " + callbackInfo.method + "(); in class " + clazz.getName());
+                String message = "Bean Callback method not found (skipping): public void " + callbackInfo.method + "(); in class " + clazz.getName();
+                logger.warning(message);
+                throw new IllegalStateException(message, e);
             }
         }
+        Collections.sort(methods, new MethodCallbackComparator());
     }
 
 

Modified: incubator/openejb/trunk/openejb3/container/openejb-core/src/main/java/org/apache/openejb/assembler/classic/JndiEncBuilder.java
URL: http://svn.apache.org/viewvc/incubator/openejb/trunk/openejb3/container/openejb-core/src/main/java/org/apache/openejb/assembler/classic/JndiEncBuilder.java?view=diff&rev=519454&r1=519453&r2=519454
==============================================================================
--- incubator/openejb/trunk/openejb3/container/openejb-core/src/main/java/org/apache/openejb/assembler/classic/JndiEncBuilder.java (original)
+++ incubator/openejb/trunk/openejb3/container/openejb-core/src/main/java/org/apache/openejb/assembler/classic/JndiEncBuilder.java Sat Mar 17 14:56:44 2007
@@ -259,14 +259,15 @@
         for (ResourceEnvReferenceInfo referenceInfo : jndiEnc.resourceEnvRefs) {
             LinkRef linkRef = null;
             try {
-                if (EJBContext.class.isAssignableFrom(Class.forName(referenceInfo.resourceEnvRefType))) {
+                Class<?> type = Class.forName(referenceInfo.resourceEnvRefType, true, EJBContext.class.getClassLoader());
+                if (EJBContext.class.isAssignableFrom(type)) {
                     String jndiName = "java:comp/EJBContext";
                     linkRef = new LinkRef(jndiName);
                     bindings.put(normalize(referenceInfo.resourceEnvRefName), linkRef);
                     continue;
                 }
             } catch (ClassNotFoundException e) {
-                throw new OpenEJBException(e);
+//                throw new OpenEJBException(e);
             }
 
             if (referenceInfo.location != null){

Modified: incubator/openejb/trunk/openejb3/container/openejb-core/src/main/java/org/apache/openejb/config/AnnotationDeployer.java
URL: http://svn.apache.org/viewvc/incubator/openejb/trunk/openejb3/container/openejb-core/src/main/java/org/apache/openejb/config/AnnotationDeployer.java?view=diff&rev=519454&r1=519453&r2=519454
==============================================================================
--- incubator/openejb/trunk/openejb3/container/openejb-core/src/main/java/org/apache/openejb/config/AnnotationDeployer.java (original)
+++ incubator/openejb/trunk/openejb3/container/openejb-core/src/main/java/org/apache/openejb/config/AnnotationDeployer.java Sat Mar 17 14:56:44 2007
@@ -45,6 +45,7 @@
 import javax.ejb.TransactionManagementType;
 import javax.ejb.Init;
 import javax.ejb.Remove;
+import javax.ejb.EJBContext;
 import javax.persistence.PersistenceContext;
 import javax.persistence.PersistenceContexts;
 import javax.persistence.PersistenceProperty;
@@ -858,8 +859,13 @@
                 String[] knownConnectionFactoryTypes = {"javax.sql.DataSource","javax.jms.ConnectionFactory","javax.jms.QueueConnectionFactory","javax.jms.TopicConnectionFactory","javax.mail.Session","java.net.URL"};
                 String[] knownEnvironmentEntries = {"java.lang.String", "java.lang.Character", "java.lang.Integer", "java.lang.Boolean", "java.lang.Double", 
                         "java.lang.Byte", "java.lang.Short", "java.lang.Long", "java.lang.Float","int","char","boolean","double","byte","short","long","float"};
-
-                if(contains(knownConnectionFactoryTypes,type)) {
+                if (type.equals("javax.ejb.SessionContext")){
+                    ResourceEnvRef ref = new ResourceEnvRef();
+                    ref.setResourceEnvRefName(refName);
+                    ref.setResourceEnvRefType(type);
+                    consumer.getResourceEnvRef().add(ref);
+                    reference = ref;
+                } else if (contains(knownConnectionFactoryTypes,type)) {
                     ResourceRef resourceRef = null;
                     List<ResourceRef> resourceRefs = consumer.getResourceRef();
                     for (ResourceRef resRef : resourceRefs) {

Modified: incubator/openejb/trunk/openejb3/container/openejb-core/src/main/java/org/apache/openejb/core/interceptor/ReflectionInvocationContext.java
URL: http://svn.apache.org/viewvc/incubator/openejb/trunk/openejb3/container/openejb-core/src/main/java/org/apache/openejb/core/interceptor/ReflectionInvocationContext.java?view=diff&rev=519454&r1=519453&r2=519454
==============================================================================
--- incubator/openejb/trunk/openejb3/container/openejb-core/src/main/java/org/apache/openejb/core/interceptor/ReflectionInvocationContext.java (original)
+++ incubator/openejb/trunk/openejb3/container/openejb-core/src/main/java/org/apache/openejb/core/interceptor/ReflectionInvocationContext.java Sat Mar 17 14:56:44 2007
@@ -137,7 +137,7 @@
         }
 
         public String toString() {
-            return method.getDeclaringClass() + "." + method.getName();
+            return method.getDeclaringClass().getName() + "." + method.getName();
         }
     }
 
@@ -171,5 +171,11 @@
         } else {
             throw new AssertionError(cause);
         }
+    }
+
+    public String toString() {
+        String methodName = (method != null)? method.getName(): null;
+
+        return "InvocationContext(target="+target.getClass().getName()+", method="+methodName+")";
     }
 }