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);


Reply via email to