[prev in list] [next in list] [prev in thread] [next in thread] 

List:       openejb-cvs
Subject:    svn commit: r672114 - in /openejb/trunk/openejb3/container:
From:       dblevins () apache ! org
Date:       2008-06-27 5:17:43
Message-ID: 20080627051743.A5AAA23889FD () eris ! apache ! org
[Download RAW message or body]

Author: dblevins
Date: Thu Jun 26 22:17:42 2008
New Revision: 672114

URL: http://svn.apache.org/viewvc?rev=672114&view=rev
Log:
OPENEJB-835: @ApplicationException ignored when class exists in separate module
OPENEJB-833: @ApplicationException overriding via ejb-jar.xml broken

Modified:
    openejb/trunk/openejb3/container/openejb-core/src/main/java/org/apache/openejb/config/AnnotationDeployer.java
  openejb/trunk/openejb3/container/openejb-jee/src/main/java/org/apache/openejb/jee/ApplicationException.java
  openejb/trunk/openejb3/container/openejb-jee/src/main/java/org/apache/openejb/jee/AssemblyDescriptor.java
  openejb/trunk/openejb3/container/openejb-jee/src/main/java/org/apache/openejb/jee/EnvEntry.java


Modified: openejb/trunk/openejb3/container/openejb-core/src/main/java/org/apache/openejb/config/AnnotationDeployer.java
                
URL: http://svn.apache.org/viewvc/openejb/trunk/openejb3/container/openejb-core/src/ma \
in/java/org/apache/openejb/config/AnnotationDeployer.java?rev=672114&r1=672113&r2=672114&view=diff
 ==============================================================================
--- openejb/trunk/openejb3/container/openejb-core/src/main/java/org/apache/openejb/config/AnnotationDeployer.java \
                (original)
+++ openejb/trunk/openejb3/container/openejb-core/src/main/java/org/apache/openejb/config/AnnotationDeployer.java \
Thu Jun 26 22:17:42 2008 @@ -329,8 +329,7 @@
             /* 19.2:  ejb-name: Default is the unqualified name of the bean class */
 
             EjbJar ejbJar = ejbModule.getEjbJar();
-            List<Class> classes = finder.findAnnotatedClasses(Stateless.class);
-            for (Class<?> beanClass : classes) {
+            for (Class<?> beanClass : finder.findAnnotatedClasses(Stateless.class)) \
                {
                 Stateless stateless = beanClass.getAnnotation(Stateless.class);
                 String ejbName = getEjbName(stateless, beanClass);
 
@@ -350,8 +349,7 @@
                 }
             }
 
-            classes = finder.findAnnotatedClasses(Stateful.class);
-            for (Class<?> beanClass : classes) {
+            for (Class<?> beanClass : finder.findAnnotatedClasses(Stateful.class)) {
                 Stateful stateful = beanClass.getAnnotation(Stateful.class);
                 String ejbName = getEjbName(stateful, beanClass);
 
@@ -372,7 +370,7 @@
                 }
             }
 
-            classes = finder.findAnnotatedClasses(MessageDriven.class);
+            List<Class> classes = finder.findAnnotatedClasses(MessageDriven.class);
             for (Class<?> beanClass : classes) {
                 MessageDriven mdb = beanClass.getAnnotation(MessageDriven.class);
                 String ejbName = getEjbName(mdb, beanClass);
@@ -389,16 +387,17 @@
                 }
             }
 
-            classes = finder.findAnnotatedClasses(ApplicationException.class);
-            if (!classes.isEmpty()) {
-                if (ejbJar.getAssemblyDescriptor() == null) {
-                    ejbJar.setAssemblyDescriptor(new AssemblyDescriptor());
-                }
+            AssemblyDescriptor assemblyDescriptor = \
ejbModule.getEjbJar().getAssemblyDescriptor(); +            if (assemblyDescriptor == \
null) { +                assemblyDescriptor = new AssemblyDescriptor();
+                ejbModule.getEjbJar().setAssemblyDescriptor(assemblyDescriptor);
             }
-            for (Class<?> exceptionClass : classes) {
-                ApplicationException annotation = \
                exceptionClass.getAnnotation(ApplicationException.class);
-                org.apache.openejb.jee.ApplicationException exception = new \
org.apache.openejb.jee.ApplicationException(exceptionClass.getName(), \
                annotation.rollback());
-                ejbJar.getAssemblyDescriptor().getApplicationException().add(exception);
 +
+            for (Class<?> exceptionClass : \
finder.findAnnotatedClasses(ApplicationException.class)) { +                if \
(assemblyDescriptor.getApplicationException(exceptionClass) != null){ +               \
ApplicationException annotation = \
exceptionClass.getAnnotation(ApplicationException.class); +                    \
assemblyDescriptor.addApplicationException(exceptionClass, annotation.rollback()); +  \
}  }
 
             return ejbModule;
@@ -675,10 +674,8 @@
                 }
 
                 AssemblyDescriptor assemblyDescriptor = \
                ejbModule.getEjbJar().getAssemblyDescriptor();
-                if (assemblyDescriptor == null) {
-                    assemblyDescriptor = new AssemblyDescriptor();
-                    ejbModule.getEjbJar().setAssemblyDescriptor(assemblyDescriptor);
-                }
+
+                processApplicationExceptions(clazz, assemblyDescriptor);
 
                 if (bean.getTransactionType() == TransactionType.CONTAINER) {
                     processTransactionAttributes(clazz, ejbName, assemblyDescriptor, \
inheritedClassFinder); @@ -902,6 +899,8 @@
 
                 processCallbacks(interceptor, inheritedClassFinder);
 
+                processApplicationExceptions(clazz, \
ejbModule.getEjbJar().getAssemblyDescriptor()); +
                 buildAnnotatedRefs(interceptor, inheritedClassFinder, classLoader);
                 processWebServiceClientHandlers(interceptor, classLoader);
 
@@ -922,6 +921,17 @@
             return ejbModule;
         }
 
+        private void processApplicationExceptions(Class<?> clazz, AssemblyDescriptor \
assemblyDescriptor) { +            for (Method method : clazz.getMethods()) {
+                for (Class<?> exception : method.getExceptionTypes()) {
+                    ApplicationException annotation = \
exception.getAnnotation(ApplicationException.class); +                    if \
(annotation == null) continue; +                    if \
(assemblyDescriptor.getApplicationException(exception) != null) continue; +           \
assemblyDescriptor.addApplicationException(exception, annotation.rollback()); +       \
} +            }
+        }
+
         private void processSessionInterfaces(SessionBean sessionBean, Class<?> \
beanClass, EjbModule ejbModule) {  
             ValidationContext validation = ejbModule.getValidation();

Modified: openejb/trunk/openejb3/container/openejb-jee/src/main/java/org/apache/openejb/jee/ApplicationException.java
                
URL: http://svn.apache.org/viewvc/openejb/trunk/openejb3/container/openejb-jee/src/mai \
n/java/org/apache/openejb/jee/ApplicationException.java?rev=672114&r1=672113&r2=672114&view=diff
 ==============================================================================
--- openejb/trunk/openejb3/container/openejb-jee/src/main/java/org/apache/openejb/jee/ApplicationException.java \
                (original)
+++ openejb/trunk/openejb3/container/openejb-jee/src/main/java/org/apache/openejb/jee/ApplicationException.java \
Thu Jun 26 22:17:42 2008 @@ -47,7 +47,7 @@
         "exceptionClass",
         "rollback"
         })
-public class ApplicationException {
+public class ApplicationException implements Keyable<String> {
 
     @XmlElement(name = "exception-class", required = true)
     protected String exceptionClass;
@@ -65,6 +65,10 @@
         this.rollback = rollback;
     }
 
+    public ApplicationException(Class exceptionClass, boolean rollback) {
+        this(exceptionClass.getName(), rollback);
+    }
+
     public String getExceptionClass() {
         return exceptionClass;
     }
@@ -89,4 +93,7 @@
         this.id = value;
     }
 
+    public String getKey() {
+        return exceptionClass;
+    }
 }

Modified: openejb/trunk/openejb3/container/openejb-jee/src/main/java/org/apache/openejb/jee/AssemblyDescriptor.java
                
URL: http://svn.apache.org/viewvc/openejb/trunk/openejb3/container/openejb-jee/src/mai \
n/java/org/apache/openejb/jee/AssemblyDescriptor.java?rev=672114&r1=672113&r2=672114&view=diff
 ==============================================================================
--- openejb/trunk/openejb3/container/openejb-jee/src/main/java/org/apache/openejb/jee/AssemblyDescriptor.java \
                (original)
+++ openejb/trunk/openejb3/container/openejb-jee/src/main/java/org/apache/openejb/jee/AssemblyDescriptor.java \
Thu Jun 26 22:17:42 2008 @@ -30,6 +30,7 @@
 import java.util.List;
 import java.util.Map;
 import java.util.LinkedHashMap;
+import java.util.Collection;
 
 
 /**
@@ -76,7 +77,7 @@
     @XmlElement(name = "exclude-list")
     protected ExcludeList excludeList;
     @XmlElement(name = "application-exception", required = true)
-    protected List<ApplicationException> applicationException;
+    protected KeyedCollection<String, ApplicationException> applicationException;
     @XmlAttribute
     @XmlJavaTypeAdapter(CollapsedStringAdapter.class)
     @XmlID
@@ -133,7 +134,7 @@
         getInterceptorBinding().add(binding);
         return binding;
     }
-    
+
     public List<MessageDestination> getMessageDestination() {
         if (messageDestination == null) {
             messageDestination = new ArrayList<MessageDestination>();
@@ -152,13 +153,29 @@
         this.excludeList = value;
     }
 
-    public List<ApplicationException> getApplicationException() {
+    public Collection<ApplicationException> getApplicationException() {
         if (applicationException == null) {
-            applicationException = new ArrayList<ApplicationException>();
+            applicationException = new KeyedCollection<String, \
ApplicationException>();  }
         return this.applicationException;
     }
 
+    public Map<String, ApplicationException> getApplicationExceptionMap() {
+        return ((KeyedCollection<String, ApplicationException>) \
getApplicationException()).toMap(); +    }
+
+    public ApplicationException getApplicationException(String className) {
+        return this.getApplicationExceptionMap().get(className);
+    }
+
+    public ApplicationException getApplicationException(Class clazz) {
+        return getApplicationException(clazz.getName());
+    }
+
+    public void addApplicationException(Class clazz, boolean rollback) {
+        getApplicationException().add(new ApplicationException(clazz, rollback));
+    }
+
     public String getId() {
         return id;
     }

Modified: openejb/trunk/openejb3/container/openejb-jee/src/main/java/org/apache/openejb/jee/EnvEntry.java
                
URL: http://svn.apache.org/viewvc/openejb/trunk/openejb3/container/openejb-jee/src/mai \
n/java/org/apache/openejb/jee/EnvEntry.java?rev=672114&r1=672113&r2=672114&view=diff \
                ==============================================================================
                
--- openejb/trunk/openejb3/container/openejb-jee/src/main/java/org/apache/openejb/jee/EnvEntry.java \
                (original)
+++ openejb/trunk/openejb3/container/openejb-jee/src/main/java/org/apache/openejb/jee/EnvEntry.java \
Thu Jun 26 22:17:42 2008 @@ -92,6 +92,10 @@
         this.envEntryValue = envEntryValue;
     }
 
+    public EnvEntry(String envEntryName, Class envEntryType, String envEntryValue) {
+        this(envEntryName, envEntryType.getName(), envEntryValue);
+    }
+
     @XmlTransient
     public String getName() {
         return getEnvEntryName();


[prev in list] [next in list] [prev in thread] [next in thread] 

Configure | About | News | Add a list | Sponsored by KoreLogic