Author: dblevins
Date: Tue Jun 26 14:08:31 2007
New Revision: 550951
URL: http://svn.apache.org/viewvc?view=rev&rev=550951
Log:
Refactored validation code to use the JAXB EjbJar tree so we can begin
implementing EJB 3.0 validation rules
Added:
openejb/trunk/openejb3/container/openejb-core/src/main/java/org/apache/openejb/config/BeanTypes.java
(with props)
Removed:
openejb/trunk/openejb3/container/openejb-core/src/main/java/org/apache/openejb/config/Bean.java
openejb/trunk/openejb3/container/openejb-core/src/main/java/org/apache/openejb/config/EntityBean.java
openejb/trunk/openejb3/container/openejb-core/src/main/java/org/apache/openejb/config/MessageBean.java
openejb/trunk/openejb3/container/openejb-core/src/main/java/org/apache/openejb/config/SessionBean.java
Modified:
openejb/trunk/openejb3/container/openejb-core/pom.xml
openejb/trunk/openejb3/container/openejb-core/src/main/java/org/apache/openejb/config/AutoConfig.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/EjbJarUtils.java
openejb/trunk/openejb3/container/openejb-core/src/main/java/org/apache/openejb/config/EjbSet.java
openejb/trunk/openejb3/container/openejb-core/src/main/java/org/apache/openejb/config/EjbValidator.java
openejb/trunk/openejb3/container/openejb-core/src/main/java/org/apache/openejb/config/InitEjbDeployments.java
openejb/trunk/openejb3/container/openejb-core/src/main/java/org/apache/openejb/config/ValidateEjbModule.java
openejb/trunk/openejb3/container/openejb-core/src/main/java/org/apache/openejb/config/ValidationException.java
openejb/trunk/openejb3/container/openejb-core/src/main/java/org/apache/openejb/config/rules/CheckClasses.java
openejb/trunk/openejb3/container/openejb-core/src/main/java/org/apache/openejb/config/rules/CheckMethods.java
openejb/trunk/openejb3/container/openejb-core/src/main/java/org/apache/openejb/core/CoreDeploymentInfo.java
openejb/trunk/openejb3/container/openejb-core/src/test/java/org/apache/openejb/DependenceValidationTest.java
Modified: openejb/trunk/openejb3/container/openejb-core/pom.xml
URL:
http://svn.apache.org/viewvc/openejb/trunk/openejb3/container/openejb-core/pom.xml?view=diff&rev=550951&r1=550950&r2=550951
==============================================================================
--- openejb/trunk/openejb3/container/openejb-core/pom.xml (original)
+++ openejb/trunk/openejb3/container/openejb-core/pom.xml Tue Jun 26 14:08:31
2007
@@ -173,6 +173,12 @@
</dependency>
<dependency>
<groupId>org.apache.openejb</groupId>
+ <artifactId>openejb-itests-interceptor-beans</artifactId>
+ <version>${version}</version>
+ <scope>test</scope>
+ </dependency>
+ <dependency>
+ <groupId>org.apache.openejb</groupId>
<artifactId>openejb-itests-client</artifactId>
<version>${version}</version>
<scope>test</scope>
Modified:
openejb/trunk/openejb3/container/openejb-core/src/main/java/org/apache/openejb/config/AutoConfig.java
URL:
http://svn.apache.org/viewvc/openejb/trunk/openejb3/container/openejb-core/src/main/java/org/apache/openejb/config/AutoConfig.java?view=diff&rev=550951&r1=550950&r2=550951
==============================================================================
---
openejb/trunk/openejb3/container/openejb-core/src/main/java/org/apache/openejb/config/AutoConfig.java
(original)
+++
openejb/trunk/openejb3/container/openejb-core/src/main/java/org/apache/openejb/config/AutoConfig.java
Tue Jun 26 14:08:31 2007
@@ -619,18 +619,18 @@
private static String getType(EnterpriseBean enterpriseBean) throws
OpenEJBException {
if (enterpriseBean instanceof org.apache.openejb.jee.EntityBean) {
if
(((org.apache.openejb.jee.EntityBean)enterpriseBean).getPersistenceType() ==
PersistenceType.CONTAINER) {
- return Bean.CMP_ENTITY;
+ return BeanTypes.CMP_ENTITY;
} else {
- return Bean.BMP_ENTITY;
+ return BeanTypes.BMP_ENTITY;
}
} else if (enterpriseBean instanceof
org.apache.openejb.jee.SessionBean) {
if (((org.apache.openejb.jee.SessionBean)
enterpriseBean).getSessionType() == SessionType.STATEFUL) {
- return Bean.STATEFUL;
+ return BeanTypes.STATEFUL;
} else {
- return Bean.STATELESS;
+ return BeanTypes.STATELESS;
}
} else if (enterpriseBean instanceof
org.apache.openejb.jee.MessageDrivenBean) {
- return Bean.MESSAGE;
+ return BeanTypes.MESSAGE;
}
throw new OpenEJBException("Unknown enterprise bean type " +
enterpriseBean.getClass().getName());
}
Added:
openejb/trunk/openejb3/container/openejb-core/src/main/java/org/apache/openejb/config/BeanTypes.java
URL:
http://svn.apache.org/viewvc/openejb/trunk/openejb3/container/openejb-core/src/main/java/org/apache/openejb/config/BeanTypes.java?view=auto&rev=550951
==============================================================================
---
openejb/trunk/openejb3/container/openejb-core/src/main/java/org/apache/openejb/config/BeanTypes.java
(added)
+++
openejb/trunk/openejb3/container/openejb-core/src/main/java/org/apache/openejb/config/BeanTypes.java
Tue Jun 26 14:08:31 2007
@@ -0,0 +1,29 @@
+/**
+ * Licensed to the Apache Software Foundation (ASF) under one or more
+ * contributor license agreements. See the NOTICE file distributed with
+ * this work for additional information regarding copyright ownership.
+ * The ASF licenses this file to You under the Apache License, Version 2.0
+ * (the "License"); you may not use this file except in compliance with
+ * the License. You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+package org.apache.openejb.config;
+
+/**
+ * @version $Rev$ $Date$
+ */
+public interface BeanTypes {
+
+ String BMP_ENTITY = "BMP_ENTITY";
+ String CMP_ENTITY = "CMP_ENTITY";
+ String STATEFUL = "STATEFUL";
+ String STATELESS = "STATELESS";
+ String MESSAGE = "MESSAGE";
+}
Propchange:
openejb/trunk/openejb3/container/openejb-core/src/main/java/org/apache/openejb/config/BeanTypes.java
------------------------------------------------------------------------------
svn:keywords = Date Rev Author Id Revision HeadURL
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?view=diff&rev=550951&r1=550950&r2=550951
==============================================================================
---
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
Tue Jun 26 14:08:31 2007
@@ -483,7 +483,7 @@
* 2. If this fails, throw NoSuchProviderException
* 3. If providerId is null, attempt to load the specified provider using
the 'serviceId' as the 'providerId'
* 4. If this fails, check the hardcoded defaults for a default
providerId using the supplied 'type'
- * 5. If this fails, throw NoSuchProviderException
+ * 5. If this fails, throw NoSuchProviderException
*/
public <T extends ServiceInfo>T configureService(Class<? extends T> type,
String serviceId, Properties declaredProperties, String providerId, String
serviceType) throws OpenEJBException {
if (type == null) throw new NullPointerException("type");
@@ -621,11 +621,11 @@
static Map<String, Class<? extends ContainerInfo>> containerTypes = new
HashMap<String, Class<? extends ContainerInfo>>();
static {
- containerTypes.put(Bean.STATELESS,
StatelessSessionContainerInfo.class);
- containerTypes.put(Bean.STATEFUL, StatefulSessionContainerInfo.class);
- containerTypes.put(Bean.BMP_ENTITY, BmpEntityContainerInfo.class);
- containerTypes.put(Bean.CMP_ENTITY, CmpEntityContainerInfo.class);
- containerTypes.put(Bean.MESSAGE, MdbContainerInfo.class);
+ containerTypes.put(BeanTypes.STATELESS,
StatelessSessionContainerInfo.class);
+ containerTypes.put(BeanTypes.STATEFUL,
StatefulSessionContainerInfo.class);
+ containerTypes.put(BeanTypes.BMP_ENTITY, BmpEntityContainerInfo.class);
+ containerTypes.put(BeanTypes.CMP_ENTITY, CmpEntityContainerInfo.class);
+ containerTypes.put(BeanTypes.MESSAGE, MdbContainerInfo.class);
}
protected static Class<? extends ContainerInfo>
getContainerInfoType(String ctype) {
Modified:
openejb/trunk/openejb3/container/openejb-core/src/main/java/org/apache/openejb/config/EjbJarUtils.java
URL:
http://svn.apache.org/viewvc/openejb/trunk/openejb3/container/openejb-core/src/main/java/org/apache/openejb/config/EjbJarUtils.java?view=diff&rev=550951&r1=550950&r2=550951
==============================================================================
---
openejb/trunk/openejb3/container/openejb-core/src/main/java/org/apache/openejb/config/EjbJarUtils.java
(original)
+++
openejb/trunk/openejb3/container/openejb-core/src/main/java/org/apache/openejb/config/EjbJarUtils.java
Tue Jun 26 14:08:31 2007
@@ -28,7 +28,6 @@
import org.apache.openejb.OpenEJBException;
import org.apache.openejb.jee.EjbJar;
-import org.apache.openejb.jee.JndiConsumer;
import org.apache.openejb.jee.oejb3.OpenejbJar;
import org.apache.openejb.config.sys.Container;
import org.apache.openejb.loader.SystemInstance;
@@ -240,33 +239,6 @@
}
return newFile.getAbsolutePath();
- }
-
- public static Container[] getUsableContainers(Container[] containers, Bean
bean) {
- List<Container> c = new ArrayList<Container>();
-
- for (int i = 0; i < containers.length; i++) {
- if (containers[i].getCtype().equals(bean.getType())) {
- c.add(containers[i]);
- }
- }
-
- Container[] useableContainers = c.toArray(new Container[c.size()]);
- return useableContainers;
- }
-
- public static Bean[] getBeans(EjbJar ejbJar) {
- List<Bean> beans = new ArrayList<Bean>();
- for (JndiConsumer enterpriseBean : ejbJar.getEnterpriseBeans()) {
- if (enterpriseBean instanceof org.apache.openejb.jee.EntityBean) {
- beans.add(new EntityBean((org.apache.openejb.jee.EntityBean)
enterpriseBean));
- } else if (enterpriseBean instanceof
org.apache.openejb.jee.SessionBean) {
- beans.add(new SessionBean((org.apache.openejb.jee.SessionBean)
enterpriseBean));
- } else if (enterpriseBean instanceof
org.apache.openejb.jee.MessageDrivenBean) {
- beans.add(new
MessageBean((org.apache.openejb.jee.MessageDrivenBean) enterpriseBean));
- }
- }
- return beans.toArray(new Bean[]{});
}
/*------------------------------------------------------*/
Modified:
openejb/trunk/openejb3/container/openejb-core/src/main/java/org/apache/openejb/config/EjbSet.java
URL:
http://svn.apache.org/viewvc/openejb/trunk/openejb3/container/openejb-core/src/main/java/org/apache/openejb/config/EjbSet.java?view=diff&rev=550951&r1=550950&r2=550951
==============================================================================
---
openejb/trunk/openejb3/container/openejb-core/src/main/java/org/apache/openejb/config/EjbSet.java
(original)
+++
openejb/trunk/openejb3/container/openejb-core/src/main/java/org/apache/openejb/config/EjbSet.java
Tue Jun 26 14:08:31 2007
@@ -28,14 +28,12 @@
private final String jarPath;
private final EjbJar jar;
- private final Bean[] beans;
private final ClassLoader classLoader;
- public EjbSet(String jarPath, EjbJar jar, Bean[] beans, ClassLoader
classLoader) {
+ public EjbSet(String jarPath, EjbJar jar, ClassLoader classLoader) {
this.jarPath = jarPath;
this.jar = jar;
- this.beans = beans;
this.classLoader = classLoader;
}
@@ -87,10 +85,6 @@
public boolean hasErrors() {
return errors.size() > 0;
- }
-
- public Bean[] getBeans() {
- return beans;
}
public EjbJar getEjbJar() {
Modified:
openejb/trunk/openejb3/container/openejb-core/src/main/java/org/apache/openejb/config/EjbValidator.java
URL:
http://svn.apache.org/viewvc/openejb/trunk/openejb3/container/openejb-core/src/main/java/org/apache/openejb/config/EjbValidator.java?view=diff&rev=550951&r1=550950&r2=550951
==============================================================================
---
openejb/trunk/openejb3/container/openejb-core/src/main/java/org/apache/openejb/config/EjbValidator.java
(original)
+++
openejb/trunk/openejb3/container/openejb-core/src/main/java/org/apache/openejb/config/EjbValidator.java
Tue Jun 26 14:08:31 2007
@@ -69,7 +69,7 @@
EjbSet set = null;
try {
- set = new EjbSet(ejbModule.getJarLocation(),
ejbModule.getEjbJar(), EjbJarUtils.getBeans(ejbModule.getEjbJar()),
ejbModule.getClassLoader());
+ set = new EjbSet(ejbModule.getJarLocation(),
ejbModule.getEjbJar(), ejbModule.getClassLoader());
ValidationRule[] rules = getValidationRules();
for (int i = 0; i < rules.length; i++) {
rules[i].validate(set);
@@ -78,69 +78,6 @@
e.printStackTrace(System.out);
ValidationError err = new ValidationError("cannot.validate");
err.setCause(e);
- err.setBean(new Bean(){
-
- public String getType() {
- return "Ejb-jar";
- }
-
- public Object getBean() {
- return null;
- }
-
- public String getEjbName() {
- String name = ejbModule.getEjbJar().getDisplayName();
- if (name == null){
- File jar = new File(ejbModule.getJarLocation());
- jar = jar.getAbsoluteFile();
- name = jar.getName();
- if (name.equals(".")){
- name = jar.getParentFile().getName();
- }
- }
- return name;
- }
-
- public String getEjbClass() {
- return null;
- }
-
- public String getHome() {
- return null;
- }
-
- public String getRemote() {
- return null;
- }
-
- public String getLocalHome() {
- return null;
- }
-
- public String getLocal() {
- return null;
- }
-
- public EjbRef[] getEjbRef() {
- return new EjbRef[0];
- }
-
- public EjbLocalRef[] getEjbLocalRef() {
- return new EjbLocalRef[0];
- }
-
- public EnvEntry[] getEnvEntry() {
- return new EnvEntry[0];
- }
-
- public ResourceRef[] getResourceRef() {
- return new ResourceRef[0];
- }
-
- public SecurityRoleRef[] getSecurityRoleRef() {
- return new SecurityRoleRef[0];
- }
- });
err.setDetails(e.getMessage());
set.addError(err);
}
@@ -177,7 +114,7 @@
System.out.print(exceptions[i].getPrefix());
System.out.print(" ... ");
if (!(exceptions[i] instanceof ValidationError)) {
- System.out.print(exceptions[i].getBean().getEjbName());
+ System.out.print(exceptions[i].getComponentName());
System.out.print(": ");
}
if (LEVEL > 2) {
@@ -225,7 +162,7 @@
System.out.println(">");
if (!(exceptions[i] instanceof ValidationError)) {
System.out.print(" <ejb-name>");
- System.out.print(exceptions[i].getBean().getEjbName());
+ System.out.print(exceptions[i].getComponentName());
System.out.println("</ejb-name>");
}
System.out.print(" <summary>");
Modified:
openejb/trunk/openejb3/container/openejb-core/src/main/java/org/apache/openejb/config/InitEjbDeployments.java
URL:
http://svn.apache.org/viewvc/openejb/trunk/openejb3/container/openejb-core/src/main/java/org/apache/openejb/config/InitEjbDeployments.java?view=diff&rev=550951&r1=550950&r2=550951
==============================================================================
---
openejb/trunk/openejb3/container/openejb-core/src/main/java/org/apache/openejb/config/InitEjbDeployments.java
(original)
+++
openejb/trunk/openejb3/container/openejb-core/src/main/java/org/apache/openejb/config/InitEjbDeployments.java
Tue Jun 26 14:08:31 2007
@@ -25,6 +25,7 @@
import org.apache.openejb.OpenEJBException;
import org.apache.openejb.jee.oejb3.OpenejbJar;
import org.apache.openejb.jee.oejb3.EjbDeployment;
+import org.apache.openejb.jee.EnterpriseBean;
import org.codehaus.swizzle.stream.StringTemplate;
public class InitEjbDeployments implements DynamicDeployer {
@@ -59,10 +60,7 @@
ejbModule.setOpenejbJar(openejbJar);
}
- Bean[] beans = EjbJarUtils.getBeans(ejbModule.getEjbJar());
-
- for (Bean bean : beans) {
-
+ for (EnterpriseBean bean : ejbModule.getEjbJar().getEnterpriseBeans())
{
EjbDeployment ejbDeployment =
openejbJar.getDeploymentsByEjbName().get(bean.getEjbName());
if (ejbDeployment == null) {
@@ -79,7 +77,7 @@
return ejbModule;
}
- private String autoAssignDeploymentId(Bean bean, Map<String, String>
contextData) {
+ private String autoAssignDeploymentId(EnterpriseBean bean, Map<String,
String> contextData) {
contextData.put("ejbType", bean.getClass().getSimpleName());
contextData.put("ejbClass", bean.getClass().getName());
contextData.put("ejbClass.simpleName",
bean.getClass().getSimpleName());
Modified:
openejb/trunk/openejb3/container/openejb-core/src/main/java/org/apache/openejb/config/ValidateEjbModule.java
URL:
http://svn.apache.org/viewvc/openejb/trunk/openejb3/container/openejb-core/src/main/java/org/apache/openejb/config/ValidateEjbModule.java?view=diff&rev=550951&r1=550950&r2=550951
==============================================================================
---
openejb/trunk/openejb3/container/openejb-core/src/main/java/org/apache/openejb/config/ValidateEjbModule.java
(original)
+++
openejb/trunk/openejb3/container/openejb-core/src/main/java/org/apache/openejb/config/ValidateEjbModule.java
Tue Jun 26 14:08:31 2007
@@ -52,13 +52,15 @@
ValidationError[] errors = set.getErrors();
for (int j = 0; j < errors.length; j++) {
ValidationError e = errors[j];
- String ejbName = (e.getBean() != null)?
e.getBean().getEjbName(): "null";
+ String ejbName = e.getComponentName();
logger.error(e.getPrefix() + " ... " + ejbName + ":\t" +
e.getMessage(2));
+ System.out.println(e.getPrefix() + " ... " +
e.getComponentName() + ":\t" + e.getMessage(2));
}
ValidationFailure[] failures = set.getFailures();
for (int j = 0; j < failures.length; j++) {
ValidationFailure e = failures[j];
- logger.error(e.getPrefix() + " ... " +
e.getBean().getEjbName() + ":\t" + e.getMessage(2));
+ logger.error(e.getPrefix() + " ... " + e.getComponentName() +
":\t" + e.getMessage(2));
+ System.out.println(e.getPrefix() + " ... " +
e.getComponentName() + ":\t" + e.getMessage(2));
}
throw new OpenEJBException("Jar failed validation. Use the
validation tool for more details");
Modified:
openejb/trunk/openejb3/container/openejb-core/src/main/java/org/apache/openejb/config/ValidationException.java
URL:
http://svn.apache.org/viewvc/openejb/trunk/openejb3/container/openejb-core/src/main/java/org/apache/openejb/config/ValidationException.java?view=diff&rev=550951&r1=550950&r2=550951
==============================================================================
---
openejb/trunk/openejb3/container/openejb-core/src/main/java/org/apache/openejb/config/ValidationException.java
(original)
+++
openejb/trunk/openejb3/container/openejb-core/src/main/java/org/apache/openejb/config/ValidationException.java
Tue Jun 26 14:08:31 2007
@@ -20,37 +20,20 @@
public class ValidationException extends java.lang.Exception {
protected static final Messages messages = new
Messages("org.apache.openejb.config.rules");
- protected Bean bean;
protected Object[] details;
protected String message;
protected String prefix;
+ protected String componentName;
public ValidationException(String message) {
this.message = message;
}
- public void setDetails(Object arg1) {
- this.details = new Object[]{arg1};
- }
-
- public void setDetails(Object arg1, Object arg2) {
- this.details = new Object[]{arg1, arg2};
- }
-
- public void setDetails(Object arg1, Object arg2, Object arg3) {
- this.details = new Object[]{arg1, arg2, arg3};
- }
-
- public void setDetails(Object arg1, Object arg2, Object arg3, Object arg4)
{
- this.details = new Object[]{arg1, arg2, arg3, arg4};
- }
-
- public void setDetails(Object arg1, Object arg2, Object arg3, Object arg4,
Object arg5) {
- this.details = new Object[]{arg1, arg2, arg3, arg4, arg5};
- }
-
- public void setDetails(Object arg1, Object arg2, Object arg3, Object arg4,
Object arg5, Object arg6) {
- this.details = new Object[]{arg1, arg2, arg3, arg4, arg5, arg6};
+ public void setDetails(Object... details) {
+ this.details = details;
+ if (details == null){
+ details = new Object[]{};
+ }
}
public Object[] getDetails() {
@@ -69,12 +52,12 @@
return messages.format(level + "." + message, details);
}
- public Bean getBean() {
- return bean;
+ public String getComponentName() {
+ return componentName;
}
- public void setBean(Bean bean) {
- this.bean = bean;
+ public void setComponentName(String componentName) {
+ this.componentName = componentName;
}
public String getPrefix() {
Modified:
openejb/trunk/openejb3/container/openejb-core/src/main/java/org/apache/openejb/config/rules/CheckClasses.java
URL:
http://svn.apache.org/viewvc/openejb/trunk/openejb3/container/openejb-core/src/main/java/org/apache/openejb/config/rules/CheckClasses.java?view=diff&rev=550951&r1=550950&r2=550951
==============================================================================
---
openejb/trunk/openejb3/container/openejb-core/src/main/java/org/apache/openejb/config/rules/CheckClasses.java
(original)
+++
openejb/trunk/openejb3/container/openejb-core/src/main/java/org/apache/openejb/config/rules/CheckClasses.java
Tue Jun 26 14:08:31 2007
@@ -17,7 +17,10 @@
package org.apache.openejb.config.rules;
import org.apache.openejb.OpenEJBException;
-import org.apache.openejb.config.Bean;
+import org.apache.openejb.jee.EnterpriseBean;
+import org.apache.openejb.jee.RemoteBean;
+import org.apache.openejb.jee.EntityBean;
+import org.apache.openejb.jee.SessionBean;
import org.apache.openejb.config.EjbSet;
import org.apache.openejb.config.ValidationFailure;
import org.apache.openejb.config.ValidationRule;
@@ -34,11 +37,11 @@
public void validate(EjbSet set) {
this.set = set;
- Bean[] beans = set.getBeans();
- Bean b = null;
- try {
- for (int i = 0; i < beans.length; i++) {
- b = beans[i];
+ for (EnterpriseBean bean : set.getJar().getEnterpriseBeans()) {
+ try {
+ if (!(bean instanceof RemoteBean)) continue;
+ RemoteBean b = (RemoteBean) bean;
+
check_hasEjbClass(b);
check_isEjbClass(b);
check_hasDependentClasses(b, b.getEjbClass(), "<ejb-class>");
@@ -58,13 +61,13 @@
check_hasDependentClasses(b, b.getLocalHome(),
"<local-home>");
check_hasDependentClasses(b, b.getLocal(), "<local>");
}
+ } catch (RuntimeException e) {
+ throw new RuntimeException(bean.getEjbName(), e);
}
- } catch (RuntimeException e) {
- throw new RuntimeException(b.getEjbName(), e);
}
}
- private void check_hasDependentClasses(Bean b, String className, String
type) {
+ private void check_hasDependentClasses(RemoteBean b, String className,
String type) {
try {
ClassLoader cl = set.getClassLoader();
Class clazz = cl.loadClass(className);
@@ -84,7 +87,7 @@
*/
ValidationFailure failure = new
ValidationFailure("missing.dependent.class");
failure.setDetails(className, e.getMessage(), type,
b.getEjbName());
- failure.setBean(b);
+ failure.setComponentName(b.getEjbName());
set.addFailure(failure);
} catch (NoClassDefFoundError e) {
@@ -97,47 +100,47 @@
ValidationFailure failure = new
ValidationFailure("missing.dependent.class");
failure.setDetails(className, e.getMessage(), type,
b.getEjbName());
- failure.setBean(b);
+ failure.setComponentName(b.getEjbName());
set.addFailure(failure);
}
}
- private void check_hasLocalClass(Bean b) {
+ private void check_hasLocalClass(RemoteBean b) {
lookForClass(b, b.getLocal(), "<local>");
}
- private void check_hasLocalHomeClass(Bean b) {
+ private void check_hasLocalHomeClass(RemoteBean b) {
lookForClass(b, b.getLocalHome(), "<local-home>");
}
- public void check_hasEjbClass(Bean b) {
+ public void check_hasEjbClass(RemoteBean b) {
lookForClass(b, b.getEjbClass(), "<ejb-class>");
}
- public void check_hasHomeClass(Bean b) {
+ public void check_hasHomeClass(RemoteBean b) {
lookForClass(b, b.getHome(), "<home>");
}
- public void check_hasRemoteClass(Bean b) {
+ public void check_hasRemoteClass(RemoteBean b) {
lookForClass(b, b.getRemote(), "<remote>");
}
- public void check_isEjbClass(Bean b) {
+ public void check_isEjbClass(RemoteBean b) {
- if (b instanceof org.apache.openejb.config.SessionBean) {
+ if (b instanceof SessionBean) {
// DMB: Beans in ejb 3 are not required to implement
javax.ejb.SessionBean
// but it would still be nice to think of some sort of check to do
here.
// compareTypes(b, b.getEjbClass(), javax.ejb.SessionBean.class);
- } else if (b instanceof org.apache.openejb.config.EntityBean) {
+ } else if (b instanceof EntityBean) {
compareTypes(b, b.getEjbClass(), javax.ejb.EntityBean.class);
@@ -145,27 +148,27 @@
}
- private void check_isLocalInterface(Bean b) {
+ private void check_isLocalInterface(RemoteBean b) {
compareTypes(b, b.getLocal(), EJBLocalObject.class);
}
- private void check_isLocalHomeInterface(Bean b) {
+ private void check_isLocalHomeInterface(RemoteBean b) {
compareTypes(b, b.getLocalHome(), EJBLocalHome.class);
}
- public void check_isHomeInterface(Bean b) {
+ public void check_isHomeInterface(RemoteBean b) {
compareTypes(b, b.getHome(), javax.ejb.EJBHome.class);
}
- public void check_isRemoteInterface(Bean b) {
+ public void check_isRemoteInterface(RemoteBean b) {
compareTypes(b, b.getRemote(), javax.ejb.EJBObject.class);
}
- private void lookForClass(Bean b, String clazz, String type) {
+ private void lookForClass(RemoteBean b, String clazz, String type) {
try {
loadClass(clazz);
} catch (OpenEJBException e) {
@@ -177,7 +180,7 @@
ValidationFailure failure = new ValidationFailure("missing.class");
failure.setDetails(clazz, type, b.getEjbName());
- failure.setBean(b);
+ failure.setComponentName(b.getEjbName());
set.addFailure(failure);
@@ -190,7 +193,7 @@
*/
ValidationFailure failure = new
ValidationFailure("misslocated.class");
failure.setDetails(clazz, type, b.getEjbName(), e.getMessage());
- failure.setBean(b);
+ failure.setComponentName(b.getEjbName());
set.addFailure(failure);
throw e;
@@ -198,7 +201,7 @@
}
- private void compareTypes(Bean b, String clazz1, Class class2) {
+ private void compareTypes(RemoteBean b, String clazz1, Class class2) {
Class class1 = null;
try {
class1 = loadClass(clazz1);
@@ -209,7 +212,7 @@
if (class1 != null && !class2.isAssignableFrom(class1)) {
ValidationFailure failure = new
ValidationFailure("wrong.class.type");
failure.setDetails(clazz1, class2.getName());
- failure.setBean(b);
+ failure.setComponentName(b.getEjbName());
set.addFailure(failure);
Modified:
openejb/trunk/openejb3/container/openejb-core/src/main/java/org/apache/openejb/config/rules/CheckMethods.java
URL:
http://svn.apache.org/viewvc/openejb/trunk/openejb3/container/openejb-core/src/main/java/org/apache/openejb/config/rules/CheckMethods.java?view=diff&rev=550951&r1=550950&r2=550951
==============================================================================
---
openejb/trunk/openejb3/container/openejb-core/src/main/java/org/apache/openejb/config/rules/CheckMethods.java
(original)
+++
openejb/trunk/openejb3/container/openejb-core/src/main/java/org/apache/openejb/config/rules/CheckMethods.java
Tue Jun 26 14:08:31 2007
@@ -17,10 +17,11 @@
package org.apache.openejb.config.rules;
import org.apache.openejb.OpenEJBException;
-import org.apache.openejb.config.Bean;
+import org.apache.openejb.jee.EnterpriseBean;
+import org.apache.openejb.jee.RemoteBean;
+import org.apache.openejb.jee.EntityBean;
+import org.apache.openejb.jee.SessionBean;
import org.apache.openejb.config.EjbSet;
-import org.apache.openejb.config.EntityBean;
-import org.apache.openejb.config.SessionBean;
import org.apache.openejb.config.ValidationFailure;
import org.apache.openejb.config.ValidationRule;
import org.apache.openejb.config.ValidationWarning;
@@ -37,9 +38,10 @@
this.set = set;
- Bean[] beans = set.getBeans();
- for (int i = 0; i < beans.length; i++) {
- Bean b = beans[i];
+ for (EnterpriseBean bean : set.getEjbJar().getEnterpriseBeans()) {
+ if (!(bean instanceof RemoteBean)) continue;
+ RemoteBean b = (RemoteBean) bean;
+
if (b.getHome() != null) {
check_remoteInterfaceMethods(b);
check_homeInterfaceMethods(b);
@@ -51,7 +53,7 @@
}
}
- private void check_localHomeInterfaceMethods(Bean b) {
+ private void check_localHomeInterfaceMethods(RemoteBean b) {
Class home = null;
Class bean = null;
try {
@@ -69,7 +71,7 @@
check_unusedCreateMethods(b, bean, home);
}
- private void check_localInterfaceMethods(Bean b) {
+ private void check_localInterfaceMethods(RemoteBean b) {
Class intrface = null;
Class beanClass = null;
try {
@@ -92,7 +94,7 @@
ValidationFailure failure = new
ValidationFailure("no.busines.method");
failure.setDetails(interfaceMethods[i].getName(),
interfaceMethods[i].toString(), "local", intrface.getName(),
beanClass.getName());
- failure.setBean(b);
+ failure.setComponentName(b.getEjbName());
set.addFailure(failure);
@@ -101,7 +103,7 @@
}
- private void check_remoteInterfaceMethods(Bean b) {
+ private void check_remoteInterfaceMethods(RemoteBean b) {
Class intrface = null;
Class beanClass = null;
@@ -125,7 +127,7 @@
ValidationFailure failure = new
ValidationFailure("no.busines.method");
failure.setDetails(interfaceMethods[i].getName(),
interfaceMethods[i].toString(), "remote", intrface.getName(),
beanClass.getName());
- failure.setBean(b);
+ failure.setComponentName(b.getEjbName());
set.addFailure(failure);
@@ -133,7 +135,7 @@
}
}
- private void check_homeInterfaceMethods(Bean b) {
+ private void check_homeInterfaceMethods(RemoteBean b) {
Class home = null;
Class bean = null;
try {
@@ -151,9 +153,9 @@
check_unusedCreateMethods(b, bean, home);
}
- public boolean check_hasCreateMethod(Bean b, Class bean, Class home) {
+ public boolean check_hasCreateMethod(RemoteBean b, Class bean, Class home)
{
- if (b instanceof org.apache.openejb.config.SessionBean &&
!javax.ejb.SessionBean.class.isAssignableFrom(bean)){
+ if (b instanceof SessionBean &&
!javax.ejb.SessionBean.class.isAssignableFrom(bean)){
// This is a pojo-style bean
return false;
}
@@ -175,7 +177,7 @@
ValidationFailure failure = new
ValidationFailure("no.home.create");
failure.setDetails(b.getHome(), b.getRemote());
- failure.setBean(b);
+ failure.setComponentName(b.getEjbName());
set.addFailure(failure);
@@ -184,20 +186,38 @@
return hasCreateMethod;
}
- public boolean check_createMethodsAreImplemented(Bean b, Class bean, Class
home) {
+ public static boolean paramsMatch(Method methodA, Method methodB) {
+ if (methodA.getParameterTypes().length !=
methodB.getParameterTypes().length){
+ return false;
+ }
+
+ for (int i = 0; i < methodA.getParameterTypes().length; i++) {
+ Class<?> a = methodA.getParameterTypes()[i];
+ Class<?> b = methodB.getParameterTypes()[i];
+ if (!a.equals(b)) return false;
+ }
+ return true;
+ }
+
+ public boolean check_createMethodsAreImplemented(RemoteBean b, Class bean,
Class home) {
boolean result = true;
Method[] homeMethods = home.getMethods();
- Method[] beanMethods = bean.getMethods();
for (int i = 0; i < homeMethods.length; i++) {
if (!homeMethods[i].getName().startsWith("create")) continue;
+
Method create = homeMethods[i];
StringBuilder ejbCreateName = new StringBuilder(create.getName());
ejbCreateName.replace(0,1, "ejbC");
+
try {
- bean.getMethod(ejbCreateName.toString(),
create.getParameterTypes());
+ if (EnterpriseBean.class.isAssignableFrom(bean)) {
+ bean.getMethod(ejbCreateName.toString(),
create.getParameterTypes());
+ } else {
+ // TODO: Check for Init method in pojo session bean class
+ }
} catch (NoSuchMethodException e) {
result = false;
@@ -207,8 +227,8 @@
EntityBean entity = (EntityBean) b;
ValidationFailure failure = new
ValidationFailure("entity.no.ejb.create");
- failure.setDetails(b.getEjbClass(),
entity.getPrimaryKey(), ejbCreateName.toString(), paramString);
- failure.setBean(b);
+ failure.setDetails(b.getEjbClass(),
entity.getPrimKeyClass(), ejbCreateName.toString(), paramString);
+ failure.setComponentName(b.getEjbName());
set.addFailure(failure);
@@ -216,7 +236,7 @@
ValidationFailure failure = new
ValidationFailure("session.no.ejb.create");
failure.setDetails(b.getEjbClass(),
ejbCreateName.toString(), paramString);
- failure.setBean(b);
+ failure.setComponentName(b.getEjbName());
set.addFailure(failure);
@@ -227,7 +247,7 @@
return result;
}
- public boolean check_postCreateMethodsAreImplemented(Bean b, Class bean,
Class home) {
+ public boolean check_postCreateMethodsAreImplemented(RemoteBean b, Class
bean, Class home) {
boolean result = true;
if (b instanceof SessionBean) return true;
@@ -249,7 +269,7 @@
ValidationFailure failure = new
ValidationFailure("no.ejb.post.create");
failure.setDetails(b.getEjbClass(),
ejbPostCreateName.toString(), paramString);
- failure.setBean(b);
+ failure.setComponentName(b.getEjbName());
set.addFailure(failure);
@@ -259,7 +279,7 @@
return result;
}
- public boolean check_unusedCreateMethods(Bean b, Class bean, Class home) {
+ public boolean check_unusedCreateMethods(RemoteBean b, Class bean, Class
home) {
boolean result = true;
Method[] homeMethods = home.getMethods();
@@ -279,7 +299,7 @@
ValidationWarning warning = new
ValidationWarning("unused.ejb.create");
warning.setDetails(b.getEjbClass(), ejbCreate.getName(),
create.toString(), paramString, home.getName());
- warning.setBean(b);
+ warning.setComponentName(b.getEjbName());
set.addWarning(warning);
Modified:
openejb/trunk/openejb3/container/openejb-core/src/main/java/org/apache/openejb/core/CoreDeploymentInfo.java
URL:
http://svn.apache.org/viewvc/openejb/trunk/openejb3/container/openejb-core/src/main/java/org/apache/openejb/core/CoreDeploymentInfo.java?view=diff&rev=550951&r1=550950&r2=550951
==============================================================================
---
openejb/trunk/openejb3/container/openejb-core/src/main/java/org/apache/openejb/core/CoreDeploymentInfo.java
(original)
+++
openejb/trunk/openejb3/container/openejb-core/src/main/java/org/apache/openejb/core/CoreDeploymentInfo.java
Tue Jun 26 14:08:31 2007
@@ -785,23 +785,23 @@
}
Method clientMethod =
EJBHome.class.getDeclaredMethod("remove", javax.ejb.Handle.class);
- methodMap.put(clientMethod, beanMethod);
+ mapMethods(clientMethod, beanMethod);
clientMethod = EJBHome.class.getDeclaredMethod("remove",
java.lang.Object.class);
- methodMap.put(clientMethod, beanMethod);
+ mapMethods(clientMethod, beanMethod);
clientMethod =
javax.ejb.EJBObject.class.getDeclaredMethod("remove");
- methodMap.put(clientMethod, beanMethod);
+ mapMethods(clientMethod, beanMethod);
clientMethod =
javax.ejb.EJBLocalObject.class.getDeclaredMethod("remove");
- methodMap.put(clientMethod, beanMethod);
+ mapMethods(clientMethod, beanMethod);
} else if (componentType == BeanType.BMP_ENTITY || componentType
== BeanType.CMP_ENTITY) {
Method beanMethod =
javax.ejb.EntityBean.class.getDeclaredMethod("ejbRemove");
Method clientMethod =
EJBHome.class.getDeclaredMethod("remove", javax.ejb.Handle.class);
- methodMap.put(clientMethod, beanMethod);
+ mapMethods(clientMethod, beanMethod);
clientMethod = EJBHome.class.getDeclaredMethod("remove",
java.lang.Object.class);
- methodMap.put(clientMethod, beanMethod);
+ mapMethods(clientMethod, beanMethod);
clientMethod =
javax.ejb.EJBObject.class.getDeclaredMethod("remove");
- methodMap.put(clientMethod, beanMethod);
+ mapMethods(clientMethod, beanMethod);
clientMethod =
javax.ejb.EJBLocalObject.class.getDeclaredMethod("remove");
- methodMap.put(clientMethod, beanMethod);
+ mapMethods(clientMethod, beanMethod);
}
} catch (java.lang.NoSuchMethodException nsme) {
throw new org.apache.openejb.SystemException(nsme);
@@ -853,7 +853,7 @@
beanMethod = beanClass.getMethod(beanMethodName,
method.getParameterTypes());
}
if (beanMethod != null) {
- methodMap.put(homeMethods[i], beanMethod);
+ mapMethods(homeMethods[i], beanMethod);
}
} catch (NoSuchMethodException nsme) {
// throw new RuntimeException("Invalid method [" + method + "]
Not declared by " + beanClass.getName() + " class");
@@ -879,7 +879,7 @@
}
try {
Method beanMethod = beanClass.getMethod(method.getName(),
method.getParameterTypes());
- methodMap.put(method, beanMethod);
+ mapMethods(method, beanMethod);
} catch (NoSuchMethodException nsme) {
throw new RuntimeException("Invalid method [" + method + "].
Not declared by " + beanClass.getName() + " class");
}
Modified:
openejb/trunk/openejb3/container/openejb-core/src/test/java/org/apache/openejb/DependenceValidationTest.java
URL:
http://svn.apache.org/viewvc/openejb/trunk/openejb3/container/openejb-core/src/test/java/org/apache/openejb/DependenceValidationTest.java?view=diff&rev=550951&r1=550950&r2=550951
==============================================================================
---
openejb/trunk/openejb3/container/openejb-core/src/test/java/org/apache/openejb/DependenceValidationTest.java
(original)
+++
openejb/trunk/openejb3/container/openejb-core/src/test/java/org/apache/openejb/DependenceValidationTest.java
Tue Jun 26 14:08:31 2007
@@ -67,7 +67,7 @@
assertNotDependentOn("org.apache.openejb", dynamicAssembler);
// Nothing may depend on the JAXB Tree except the Config code
- assertNotDependentOn("org.apache.openejb", "org.apache.openejb.jee",
"org.apache.openejb.config");
+ assertNotDependentOn("org.apache.openejb", "org.apache.openejb.jee",
"org.apache.openejb.config", "org.apache.openejb.config.rules");
// Nothing may depend on the Config code except it's subpackages and
the Spring Assembler
assertNotDependentOn("org.apache.openejb",
"org.apache.openejb.config", "org.apache.openejb.config.rules",
"org.apache.openejb.config.sys", "org.apache.openejb.assembler",
springAssembler, dynamicAssembler);