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/12/09 02:23:07 UTC
svn commit: r602604 - in
/openejb/trunk/openejb3/container/openejb-core/src/main:
java/org/apache/openejb/config/ java/org/apache/openejb/config/rules/
resources/org/apache/openejb/config/rules/
Author: dblevins
Date: Sat Dec 8 17:23:06 2007
New Revision: 602604
URL: http://svn.apache.org/viewvc?rev=602604&view=rev
Log:
OPENEJB-730: Validation: Attempted use of PersistenceContextType.EXTENDED by non-Stateful bean
Also fixed a rather nasty typo that more or less prevented all validation.
Removed:
openejb/trunk/openejb3/container/openejb-core/src/main/java/org/apache/openejb/config/rules/CheckServiceRefs.java
Modified:
openejb/trunk/openejb3/container/openejb-core/src/main/java/org/apache/openejb/config/AppValidator.java
openejb/trunk/openejb3/container/openejb-core/src/main/java/org/apache/openejb/config/ConfigurationFactory.java
openejb/trunk/openejb3/container/openejb-core/src/main/java/org/apache/openejb/config/ReportValidationResults.java
openejb/trunk/openejb3/container/openejb-core/src/main/java/org/apache/openejb/config/rules/CheckPersistenceRefs.java
openejb/trunk/openejb3/container/openejb-core/src/main/resources/org/apache/openejb/config/rules/Messages.properties
Modified: openejb/trunk/openejb3/container/openejb-core/src/main/java/org/apache/openejb/config/AppValidator.java
URL: http://svn.apache.org/viewvc/openejb/trunk/openejb3/container/openejb-core/src/main/java/org/apache/openejb/config/AppValidator.java?rev=602604&r1=602603&r2=602604&view=diff
==============================================================================
--- openejb/trunk/openejb3/container/openejb-core/src/main/java/org/apache/openejb/config/AppValidator.java (original)
+++ openejb/trunk/openejb3/container/openejb-core/src/main/java/org/apache/openejb/config/AppValidator.java Sat Dec 8 17:23:06 2007
@@ -24,7 +24,7 @@
import org.apache.openejb.config.rules.CheckAssemblyBindings;
import org.apache.openejb.config.rules.CheckCallbacks;
import org.apache.openejb.config.rules.CheckInjectionTargets;
-import org.apache.openejb.config.rules.CheckServiceRefs;
+import org.apache.openejb.config.rules.CheckPersistenceRefs;
import org.apache.openejb.util.Messages;
public class AppValidator {
@@ -84,7 +84,7 @@
new CheckCallbacks(),
new CheckAssemblyBindings(),
new CheckInjectionTargets(),
- new CheckServiceRefs()
+ new CheckPersistenceRefs()
};
return rules;
}
Modified: openejb/trunk/openejb3/container/openejb-core/src/main/java/org/apache/openejb/config/ConfigurationFactory.java
URL: http://svn.apache.org/viewvc/openejb/trunk/openejb3/container/openejb-core/src/main/java/org/apache/openejb/config/ConfigurationFactory.java?rev=602604&r1=602603&r2=602604&view=diff
==============================================================================
--- openejb/trunk/openejb3/container/openejb-core/src/main/java/org/apache/openejb/config/ConfigurationFactory.java (original)
+++ openejb/trunk/openejb3/container/openejb-core/src/main/java/org/apache/openejb/config/ConfigurationFactory.java Sat Dec 8 17:23:06 2007
@@ -377,6 +377,10 @@
try {
AppModule appModule = deploymentLoader.load(jarFile);
appInfo = configureApplication(appModule);
+ } catch (ValidationFailedException e) {
+ String message = messages.format("conf.0004", jarFile.getAbsolutePath(), e.getMessage());
+ logger.warning(message); // DO not include the stacktrace in the message
+ throw e;
} catch (OpenEJBException e) {
String message = messages.format("conf.0004", jarFile.getAbsolutePath(), e.getMessage());
// DO NOT REMOVE THE EXCEPTION FROM THIS LOG MESSAGE
Modified: openejb/trunk/openejb3/container/openejb-core/src/main/java/org/apache/openejb/config/ReportValidationResults.java
URL: http://svn.apache.org/viewvc/openejb/trunk/openejb3/container/openejb-core/src/main/java/org/apache/openejb/config/ReportValidationResults.java?rev=602604&r1=602603&r2=602604&view=diff
==============================================================================
--- openejb/trunk/openejb3/container/openejb-core/src/main/java/org/apache/openejb/config/ReportValidationResults.java (original)
+++ openejb/trunk/openejb3/container/openejb-core/src/main/java/org/apache/openejb/config/ReportValidationResults.java Sat Dec 8 17:23:06 2007
@@ -26,7 +26,7 @@
public class ReportValidationResults implements DynamicDeployer {
public AppModule deploy(AppModule appModule) throws OpenEJBException {
- if (!appModule.hasErrors() && !appModule.hasWarnings()) return appModule;
+ if (!appModule.hasErrors() && !appModule.hasFailures()) return appModule;
ValidationFailedException validationFailedException = null;
Modified: openejb/trunk/openejb3/container/openejb-core/src/main/java/org/apache/openejb/config/rules/CheckPersistenceRefs.java
URL: http://svn.apache.org/viewvc/openejb/trunk/openejb3/container/openejb-core/src/main/java/org/apache/openejb/config/rules/CheckPersistenceRefs.java?rev=602604&r1=602603&r2=602604&view=diff
==============================================================================
--- openejb/trunk/openejb3/container/openejb-core/src/main/java/org/apache/openejb/config/rules/CheckPersistenceRefs.java (original)
+++ openejb/trunk/openejb3/container/openejb-core/src/main/java/org/apache/openejb/config/rules/CheckPersistenceRefs.java Sat Dec 8 17:23:06 2007
@@ -18,22 +18,53 @@
import org.apache.openejb.config.EjbModule;
import org.apache.openejb.jee.EnterpriseBean;
-import org.apache.openejb.jee.ServiceRef;
+import org.apache.openejb.jee.PersistenceContextRef;
+import org.apache.openejb.jee.SessionBean;
+import org.apache.openejb.jee.SessionType;
+import org.apache.openejb.jee.PersistenceContextType;
+import org.apache.openejb.jee.MessageDrivenBean;
+import org.apache.openejb.jee.EntityBean;
+import org.apache.openejb.BeanType;
/**
* @version $Rev$ $Date$
*/
public class CheckPersistenceRefs extends ValidationBase {
public void validate(EjbModule ejbModule) {
- // Warn that we do not support service-refs yet.
-
- // Skip if in geronimo
- if (System.getProperty("duct tape") != null) return;
for (EnterpriseBean bean : ejbModule.getEjbJar().getEnterpriseBeans()) {
- for (ServiceRef ref : bean.getServiceRef()) {
- warn(bean, "serviceRef.unsupported", ref.getName());
+
+ String beanType = getType(bean);
+ if (beanType.equals("Stateful")) continue; // skip statefuls
+
+ for (PersistenceContextRef ref : bean.getPersistenceContextRef()) {
+ if (isExtented(ref)) {
+ String refName = ref.getName();
+ String prefix = bean.getEjbClass() + "/";
+ if (refName.startsWith(prefix)) {
+ refName = refName.substring(prefix.length());
+ }
+ fail(bean, "persistenceContextExtented.nonStateful", refName, beanType);
+ }
+
}
}
+ }
+
+ private boolean isExtented(PersistenceContextRef ref) {
+ return ref.getPersistenceContextType().equals(PersistenceContextType.EXTENDED);
+ }
+
+ private String getType(EnterpriseBean bean) {
+ if (bean instanceof SessionBean) {
+ SessionBean sessionBean = (SessionBean) bean;
+ switch(sessionBean.getSessionType()){
+ case STATEFUL: return "Stateful";
+ case STATELESS: return "Stateless";
+ default: throw new IllegalArgumentException("Uknown SessionBean type "+bean.getClass());
+ }
+ } else if (bean instanceof MessageDrivenBean) return "MessageDriven";
+ else if (bean instanceof EntityBean) return "EJB 2.1 Entity";
+ else throw new IllegalArgumentException("Uknown bean type "+bean.getClass());
}
}
Modified: openejb/trunk/openejb3/container/openejb-core/src/main/resources/org/apache/openejb/config/rules/Messages.properties
URL: http://svn.apache.org/viewvc/openejb/trunk/openejb3/container/openejb-core/src/main/resources/org/apache/openejb/config/rules/Messages.properties?rev=602604&r1=602603&r2=602604&view=diff
==============================================================================
--- openejb/trunk/openejb3/container/openejb-core/src/main/resources/org/apache/openejb/config/rules/Messages.properties (original)
+++ openejb/trunk/openejb3/container/openejb-core/src/main/resources/org/apache/openejb/config/rules/Messages.properties Sat Dec 8 17:23:06 2007
@@ -277,3 +277,7 @@
2.ann.remoteOrLocal.ejbLocalObject = @{0} used in bean class lists a javax.ejb.EJBLocalObject interface. Use @LocalHome with home interface of '{1}'.
3.ann.remoteOrLocal.ejbLocalObject = When applied to a bean class, the @{0} annotation must only list business interfaces and cannot list legacy EJBLocalObject interfaces. The EJBLocalHome of interface for '{1}' can be annotated on the bean class with @LocalHome
+# fail(bean, "persistenceContextExtented.nonStateful", refName, beanType);
+1.persistenceContextExtented.nonStateful = Non-Stateful use of PersistenceContextType.EXTENDED
+2.persistenceContextExtented.nonStateful = Non-Stateful use of PersistenceContextType.EXTENDED in ref {0}
+3.persistenceContextExtented.nonStateful = {1} ejbs are not capable of using EntityManagers with EXTENTED persistence. Convert your bean to a Stateful ejb or update the '{0}' PersistenceContext reference to PersistenceContextType.TRANSACTION.
\ No newline at end of file