[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