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 2010/10/14 06:32:53 UTC
svn commit: r1022375 - in
/openejb/branches/openejb-3.1.x/container/openejb-core/src/main:
java/org/apache/openejb/config/ java/org/apache/openejb/core/
resources/org/apache/openejb/config/rules/
Author: dblevins
Date: Thu Oct 14 04:32:52 2010
New Revision: 1022375
URL: http://svn.apache.org/viewvc?rev=1022375&view=rev
Log:
OPENEJB-1373: Validation: <ejb-class> omitted with no corresponding annotated bean
OPENEJB-1372: Default openejb.descriptors.output to true when there are validation failures
Modified:
openejb/branches/openejb-3.1.x/container/openejb-core/src/main/java/org/apache/openejb/config/AnnotationDeployer.java
openejb/branches/openejb-3.1.x/container/openejb-core/src/main/java/org/apache/openejb/config/OutputGeneratedDescriptors.java
openejb/branches/openejb-3.1.x/container/openejb-core/src/main/java/org/apache/openejb/core/TempClassLoader.java
openejb/branches/openejb-3.1.x/container/openejb-core/src/main/resources/org/apache/openejb/config/rules/Messages.properties
Modified: openejb/branches/openejb-3.1.x/container/openejb-core/src/main/java/org/apache/openejb/config/AnnotationDeployer.java
URL: http://svn.apache.org/viewvc/openejb/branches/openejb-3.1.x/container/openejb-core/src/main/java/org/apache/openejb/config/AnnotationDeployer.java?rev=1022375&r1=1022374&r2=1022375&view=diff
==============================================================================
--- openejb/branches/openejb-3.1.x/container/openejb-core/src/main/java/org/apache/openejb/config/AnnotationDeployer.java (original)
+++ openejb/branches/openejb-3.1.x/container/openejb-core/src/main/java/org/apache/openejb/config/AnnotationDeployer.java Thu Oct 14 04:32:52 2010
@@ -1049,12 +1049,21 @@ public class AnnotationDeployer implemen
EnterpriseBean[] enterpriseBeans = ejbModule.getEjbJar().getEnterpriseBeans();
for (EnterpriseBean bean : enterpriseBeans) {
final String ejbName = bean.getEjbName();
+ final String ejbClassName = bean.getEjbClass();
+ if (ejbClassName == null) {
+ List<String> others = new ArrayList<String>();
+ for (EnterpriseBean otherBean : enterpriseBeans) {
+ others.add(otherBean.getEjbName());
+ }
+ fail(ejbName, "xml.noEjbClass", ejbName, join(", ", others));
+ }
+
Class<?> clazz;
try {
- clazz = classLoader.loadClass(bean.getEjbClass());
+ clazz = classLoader.loadClass(ejbClassName);
} catch (ClassNotFoundException e) {
- throw new OpenEJBException("Unable to load bean class: " + bean.getEjbClass(), e);
+ throw new OpenEJBException("Unable to load bean class: " + ejbClassName, e);
}
ClassFinder classFinder = new ClassFinder(clazz);
Modified: openejb/branches/openejb-3.1.x/container/openejb-core/src/main/java/org/apache/openejb/config/OutputGeneratedDescriptors.java
URL: http://svn.apache.org/viewvc/openejb/branches/openejb-3.1.x/container/openejb-core/src/main/java/org/apache/openejb/config/OutputGeneratedDescriptors.java?rev=1022375&r1=1022374&r2=1022375&view=diff
==============================================================================
--- openejb/branches/openejb-3.1.x/container/openejb-core/src/main/java/org/apache/openejb/config/OutputGeneratedDescriptors.java (original)
+++ openejb/branches/openejb-3.1.x/container/openejb-core/src/main/java/org/apache/openejb/config/OutputGeneratedDescriptors.java Thu Oct 14 04:32:52 2010
@@ -38,7 +38,7 @@ import java.io.IOException;
public class OutputGeneratedDescriptors implements DynamicDeployer {
private static final Logger logger = Logger.getInstance(LogCategory.OPENEJB_STARTUP_CONFIG, "org.apache.openejb.util.resources");
- private static final String OUTPUT_DESCRIPTORS = "openejb.descriptors.output";
+ public static final String OUTPUT_DESCRIPTORS = "openejb.descriptors.output";
public AppModule deploy(AppModule appModule) throws OpenEJBException {
boolean output = SystemInstance.get().getOptions().get(OUTPUT_DESCRIPTORS, false);
@@ -51,7 +51,12 @@ public class OutputGeneratedDescriptors
for (EjbModule ejbModule : appModule.getEjbModules()) {
Options options = new Options(ejbModule.getOpenejbJar().getProperties(), SystemInstance.get().getOptions());
- output = options.get(OUTPUT_DESCRIPTORS, false);
+ final ValidationContext context = ejbModule.getValidation();
+
+ // output descriptors by default if there are validation errors
+ final boolean invalid = context.hasErrors() || context.hasFailures();
+
+ output = options.get(OUTPUT_DESCRIPTORS, invalid);
if (output){
if (ejbModule.getEjbJar() != null) {
Modified: openejb/branches/openejb-3.1.x/container/openejb-core/src/main/java/org/apache/openejb/core/TempClassLoader.java
URL: http://svn.apache.org/viewvc/openejb/branches/openejb-3.1.x/container/openejb-core/src/main/java/org/apache/openejb/core/TempClassLoader.java?rev=1022375&r1=1022374&r2=1022375&view=diff
==============================================================================
--- openejb/branches/openejb-3.1.x/container/openejb-core/src/main/java/org/apache/openejb/core/TempClassLoader.java (original)
+++ openejb/branches/openejb-3.1.x/container/openejb-core/src/main/java/org/apache/openejb/core/TempClassLoader.java Thu Oct 14 04:32:52 2010
@@ -67,6 +67,8 @@ public class TempClassLoader extends URL
}
protected synchronized Class loadClass(String name, boolean resolve) throws ClassNotFoundException {
+ if (name == null) throw new NullPointerException("name cannot be null");
+
// see if we've already loaded it
Class c = findLoadedClass(name);
if (c != null) {
Modified: openejb/branches/openejb-3.1.x/container/openejb-core/src/main/resources/org/apache/openejb/config/rules/Messages.properties
URL: http://svn.apache.org/viewvc/openejb/branches/openejb-3.1.x/container/openejb-core/src/main/resources/org/apache/openejb/config/rules/Messages.properties?rev=1022375&r1=1022374&r2=1022375&view=diff
==============================================================================
--- openejb/branches/openejb-3.1.x/container/openejb-core/src/main/resources/org/apache/openejb/config/rules/Messages.properties (original)
+++ openejb/branches/openejb-3.1.x/container/openejb-core/src/main/resources/org/apache/openejb/config/rules/Messages.properties Thu Oct 14 04:32:52 2010
@@ -784,3 +784,7 @@ Which can then be implemented by the {0}
1.userTransactionRef.forbiddenForCmtdBeans = Container-Managed Transaction beans cannot use UserTransaction
2.userTransactionRef.forbiddenForCmtdBeans = Container-Managed Transaction beans cannot use UserTransaction: fix ref {0}
3.userTransactionRef.forbiddenForCmtdBeans = Only session and message-driven beans with bean-managed transaction demarcation are allowed to use UserTransaction. Fix @Resource or resource-env-ref {0}
+
+1.xml.noEjbClass = Element <ejb-class> unspecified.
+2.xml.noEjbClass = Element <ejb-class> unspecified. No annotated bean discovered with <ejb-name>{0}</ejb-name>
+3.xml.noEjbClass = The <ejb-class> element is only optional if there is a matching annotated bean in the module with the bean name {0}. No such bean was found. Other beans in this module are: {1}