User: salborini
  Date: 00/08/25 13:19:18

  Modified:    src/main/org/jboss/metadata ApplicationMetaData.java
                        BeanMetaData.java EntityMetaData.java
                        SessionMetaData.java
  Log:
  Added more tests in metadata.
  Better error messages when deployment failed.
  
  Revision  Changes    Path
  1.5       +128 -89   jboss/src/main/org/jboss/metadata/ApplicationMetaData.java
  
  Index: ApplicationMetaData.java
  ===================================================================
  RCS file: 
/products/cvs/ejboss/jboss/src/main/org/jboss/metadata/ApplicationMetaData.java,v
  retrieving revision 1.4
  retrieving revision 1.5
  diff -u -r1.4 -r1.5
  --- ApplicationMetaData.java  2000/08/22 19:26:41     1.4
  +++ ApplicationMetaData.java  2000/08/25 20:19:18     1.5
  @@ -25,7 +25,7 @@
    *      
    *   @see <related>
    *   @author <a href="mailto:[EMAIL PROTECTED]">Sebastien Alborini</a>
  - *   @version $Revision: 1.4 $
  + *   @version $Revision: 1.5 $
    */
   public class ApplicationMetaData extends MetaData {
        // Constants -----------------------------------------------------
  @@ -98,7 +98,11 @@
                while (iterator.hasNext()) {
                        Element currentEntity = (Element)iterator.next();
                        EntityMetaData entityMetaData = new EntityMetaData(this);
  -                     entityMetaData.importEjbJarXml(currentEntity);
  +                     try {
  +                             entityMetaData.importEjbJarXml(currentEntity);
  +                     } catch (DeploymentException e) {
  +                             throw new DeploymentException("Error in ejb-jar.xml 
for Entity Bean " + entityMetaData.getEjbName() + ": " + e.getMessage());
  +                     }
                        beans.add(entityMetaData);
                }
                
  @@ -107,7 +111,11 @@
                while (iterator.hasNext()) {
                        Element currentSession = (Element)iterator.next();
                        SessionMetaData sessionMetaData = new SessionMetaData(this);
  -                     sessionMetaData.importEjbJarXml(currentSession);
  +                     try {
  +                             sessionMetaData.importEjbJarXml(currentSession);
  +                     } catch (DeploymentException e) {
  +                             throw new DeploymentException("Error in ejb-jar.xml 
for Session Bean " + sessionMetaData.getEjbName() + ": " + e.getMessage());
  +                     }
                        beans.add(sessionMetaData);
                }
                
  @@ -120,78 +128,95 @@
                        iterator = getChildrenByTagName(assemblyDescriptor, 
"security-role");
                        while (iterator.hasNext()) {
                                Element securityRole = (Element)iterator.next(); 
  -                             String role = 
getElementContent(getUniqueChild(securityRole, "role-name"));
  -                             securityRoles.add(role);
  +                             try {
  +                                     String role = 
getElementContent(getUniqueChild(securityRole, "role-name"));
  +                                     securityRoles.add(role);
  +                             } catch (DeploymentException e) {
  +                                     throw new DeploymentException("Error in 
ejb-jar.xml for security-role: " + e.getMessage());
  +                             }
                        }
                                
                        // set the method permissions (optional)
                        iterator = getChildrenByTagName(assemblyDescriptor, 
"method-permission");
  -                     while (iterator.hasNext()) {
  -                             Element methodPermission = (Element)iterator.next();
  +                     try {
  +                             while (iterator.hasNext()) {
  +                                     Element methodPermission = 
(Element)iterator.next();
                                
  -                             // find the list of roles
  -                             Set roles = new HashSet();
  -                             Iterator rolesIterator = 
getChildrenByTagName(methodPermission, "role-name");
  -                             while (rolesIterator.hasNext()) {
  -                                     
roles.add(getElementContent((Element)rolesIterator.next()));
  -                             }
  +                                     // find the list of roles
  +                                     Set roles = new HashSet();
  +                                     Iterator rolesIterator = 
getChildrenByTagName(methodPermission, "role-name");
  +                                     while (rolesIterator.hasNext()) {
  +                                             
roles.add(getElementContent((Element)rolesIterator.next()));
  +                                     }
                                
  -                             // find the methods
  -                             Iterator methods = 
getChildrenByTagName(methodPermission, "method");
  -                             while (methods.hasNext()) {
  -                                     
  -                                     // load the method
  -                                     MethodMetaData method = new MethodMetaData();
  -                                     
method.importEjbJarXml((Element)methods.next());
  -                     method.setRoles(roles);
  +                                     // find the methods
  +                                     Iterator methods = 
getChildrenByTagName(methodPermission, "method");
  +                                     while (methods.hasNext()) {
                                        
  -                                     // give the method to the right bean
  -                                     BeanMetaData bean = 
getBeanByEjbName(method.getEjbName());
  -                                     bean.addPermissionMethod(method);
  +                                             // load the method
  +                                             MethodMetaData method = new 
MethodMetaData();
  +                                             
method.importEjbJarXml((Element)methods.next());
  +                         method.setRoles(roles);
  +                                             
  +                                             // give the method to the right bean
  +                                             BeanMetaData bean = 
getBeanByEjbName(method.getEjbName());
  +                                             if (bean == null) {
  +                                                     throw new 
DeploymentException(method.getEjbName() + " doesn't exist");
  +                                             }
  +                                             bean.addPermissionMethod(method);
  +                                     }
                                }
  -                             
  +                     } catch (DeploymentException e) {
  +                             throw new DeploymentException("Error in ejb-jar.xml, 
in method-permission: " + e.getMessage());
                        }
                                
                        // set the container transactions (optional)
                iterator = getChildrenByTagName(assemblyDescriptor, 
"container-transaction");
  -                     while (iterator.hasNext()) {
  -                             Element containerTransaction = 
(Element)iterator.next();
  -                             
  -                             // find the type of the transaction
  -                             byte transactionType;
  -                             String type = 
getElementContent(getUniqueChild(containerTransaction, "trans-attribute"));
  -                             if (type.equals("NotSupported")) {
  -                                     transactionType = TX_NOT_SUPPORTED;
  -                             } else if (type.equals("Supports")) {
  -                                     transactionType = TX_SUPPORTS;
  -                             } else if (type.equals("Required")) {
  -                                     transactionType = TX_REQUIRED;
  -                             } else if (type.equals("RequiresNew")) {
  -                                     transactionType = TX_REQUIRES_NEW;
  -                             } else if (type.equals("Mandatory")) {
  -                                     transactionType = TX_MANDATORY;
  -                             } else if (type.equals("Never")) {
  -                                     transactionType = TX_NEVER;
  -                             } else {
  -                                     throw new DeploymentException("invalid 
transaction-attribute : " + type);
  -                             }
  -
  -                             // find the methods
  -                             Iterator methods = 
getChildrenByTagName(containerTransaction, "method");
  -                             while (methods.hasNext()) {
  +                     try {
  +                             while (iterator.hasNext()) {
  +                                     Element containerTransaction = 
(Element)iterator.next();
                                        
  -                                     // load the method
  -                                     MethodMetaData method = new MethodMetaData();
  -                                     
method.importEjbJarXml((Element)methods.next());
  -                     method.setTransactionType(transactionType);
  -                                     
  -                                     // give the method to the right bean
  -                                     BeanMetaData bean = 
getBeanByEjbName(method.getEjbName());
  -                                     bean.addTransactionMethod(method);
  -                             }                                       
  +                                     // find the type of the transaction
  +                                     byte transactionType;
  +                                     String type = 
getElementContent(getUniqueChild(containerTransaction, "trans-attribute"));
  +                                     if (type.equals("NotSupported")) {
  +                                             transactionType = TX_NOT_SUPPORTED;
  +                                     } else if (type.equals("Supports")) {
  +                                             transactionType = TX_SUPPORTS;
  +                                     } else if (type.equals("Required")) {
  +                                             transactionType = TX_REQUIRED;
  +                                     } else if (type.equals("RequiresNew")) {
  +                                             transactionType = TX_REQUIRES_NEW;
  +                                     } else if (type.equals("Mandatory")) {
  +                                             transactionType = TX_MANDATORY;
  +                                     } else if (type.equals("Never")) {
  +                                             transactionType = TX_NEVER;
  +                                     } else {
  +                                             throw new DeploymentException("invalid 
transaction-attribute : " + type);
  +                                     }
  +                             // find the methods
  +                                     Iterator methods = 
getChildrenByTagName(containerTransaction, "method");
  +                                     while (methods.hasNext()) {
  +                                             
  +                                             // load the method
  +                                             MethodMetaData method = new 
MethodMetaData();
  +                                             
method.importEjbJarXml((Element)methods.next());
  +                             method.setTransactionType(transactionType);
  +                                             
  +                                             // give the method to the right bean
  +                                             BeanMetaData bean = 
getBeanByEjbName(method.getEjbName());
  +                                             if (bean == null) {
  +                                                     throw new 
DeploymentException("bean " + method.getEjbName() + " doesn't exist");
  +                                             }
  +                                             bean.addTransactionMethod(method);
  +                                     }
  +                             }
  +                     } catch (DeploymentException e) {
  +                             throw new DeploymentException("Error in ejb-jar.xml, 
in container-transaction: " + e.getMessage());
                        }
                }
        }
  +
        
        
        public void importJbossXml(Element element) throws DeploymentException {
  @@ -206,7 +231,11 @@
                        while (iterator.hasNext()) {
                                Element conf = (Element)iterator.next();
                                ConfigurationMetaData configurationMetaData = new 
ConfigurationMetaData();
  -                             configurationMetaData.importJbossXml(conf);
  +                             try {
  +                                     configurationMetaData.importJbossXml(conf);
  +                             } catch (DeploymentException e) {
  +                                     throw new DeploymentException("Error in 
jboss.xml for container-configuration " + configurationMetaData.getName() + ": " + 
e.getMessage());
  +                             }
                                configurations.add(configurationMetaData);
                        }
                }
  @@ -214,26 +243,32 @@
                // update the enterprise beans
                Element entBeans = getOptionalChild(element, "enterprise-beans");
                if (entBeans != null) {
  -                     iterator = getChildrenByTagName(entBeans, "entity");
  -                     while (iterator.hasNext()) {
  -                             Element bean = (Element) iterator.next();
  -                             String ejbName = 
getElementContent(getUniqueChild(bean, "ejb-name"));
  -                             BeanMetaData beanMetaData = getBeanByEjbName(ejbName);
  -                             if (beanMetaData == null) {
  -                                     throw new DeploymentException("bean not found 
: " + ejbName);
  +                     String ejbName = null;
  +                     try {
  +                             iterator = getChildrenByTagName(entBeans, "entity");
  +                             while (iterator.hasNext()) {
  +                                     Element bean = (Element) iterator.next();
  +                                     ejbName = 
getElementContent(getUniqueChild(bean, "ejb-name"));
  +                                     BeanMetaData beanMetaData = 
getBeanByEjbName(ejbName);
  +                                     if (beanMetaData == null) {
  +                                             throw new DeploymentException("found 
in jboss.xml but not in ejb-jar.xml");
  +                                     }
  +                                     beanMetaData.importJbossXml(bean);
                                }
  -                             beanMetaData.importJbossXml(bean);
  -                     }
  -             
  -                     iterator = getChildrenByTagName(entBeans, "session");
  -                     while (iterator.hasNext()) {
  -                             Element bean = (Element) iterator.next();
  -                             String ejbName = 
getElementContent(getUniqueChild(bean, "ejb-name"));
  -                             BeanMetaData beanMetaData = getBeanByEjbName(ejbName);
  -                             if (beanMetaData == null) {
  -                                     throw new DeploymentException("bean not found 
: " + ejbName);
  +                                     
  +                             iterator = getChildrenByTagName(entBeans, "session");
  +                             while (iterator.hasNext()) {
  +                                     Element bean = (Element) iterator.next();
  +                                     ejbName = 
getElementContent(getUniqueChild(bean, "ejb-name"));
  +                                     BeanMetaData beanMetaData = 
getBeanByEjbName(ejbName);
  +                                     if (beanMetaData == null) {
  +                                             throw new DeploymentException("found 
in jboss.xml but not in ejb-jar.xml");
  +                                     }
  +                                     beanMetaData.importJbossXml(bean);
                                }
  -                             beanMetaData.importJbossXml(bean);
  +                             
  +                     } catch (DeploymentException e) {
  +                             throw new DeploymentException("Error in jboss.xml for 
Bean " + ejbName + ": " + e.getMessage());
                        }
                }
                
  @@ -241,20 +276,24 @@
            Element resmans = getOptionalChild(element, "resource-managers");
                if (resmans != null) {
                        iterator = getChildrenByTagName(resmans, "resource-manager");
  -                     while (iterator.hasNext()) {
  -                             Element resourceManager = (Element)iterator.next();
  -                             String resName = 
getElementContent(getUniqueChild(resourceManager, "res-name"));
  +                     try {
  +                             while (iterator.hasNext()) {
  +                                     Element resourceManager = 
(Element)iterator.next();
  +                                     String resName = 
getElementContent(getUniqueChild(resourceManager, "res-name"));
                                
  -                             String jndi = 
getElementContent(getOptionalChild(resourceManager, "res-jndi-name"));
  -                             String url = 
getElementContent(getOptionalChild(resourceManager, "res-url"));
  +                                     String jndi = 
getElementContent(getOptionalChild(resourceManager, "res-jndi-name"));
  +                                     String url = 
getElementContent(getOptionalChild(resourceManager, "res-url"));
                                
  -                             if (jndi != null && url == null) {
  -                                     resources.put(resName, jndi);
  -                             } else if (jndi == null && url != null) {
  -                                     resources.put(resName, url);
  -                             } else {
  -                                     throw new DeploymentException("Resource " + 
resName + " : expected res-url or res-jndi-name tag");
  +                                     if (jndi != null && url == null) {
  +                                             resources.put(resName, jndi);
  +                                     } else if (jndi == null && url != null) {
  +                                             resources.put(resName, url);
  +                                     } else {
  +                                             throw new DeploymentException(resName 
+ " : expected res-url or res-jndi-name tag");
  +                                     }
                                }
  +                     } catch (DeploymentException e) {
  +                             throw new DeploymentException("Error in jboss.xml, in 
resource-manager: " + e.getMessage());
                        }
                }
        }
  
  
  
  1.7       +4 -1      jboss/src/main/org/jboss/metadata/BeanMetaData.java
  
  Index: BeanMetaData.java
  ===================================================================
  RCS file: /products/cvs/ejboss/jboss/src/main/org/jboss/metadata/BeanMetaData.java,v
  retrieving revision 1.6
  retrieving revision 1.7
  diff -u -r1.6 -r1.7
  --- BeanMetaData.java 2000/08/22 19:26:41     1.6
  +++ BeanMetaData.java 2000/08/25 20:19:18     1.7
  @@ -21,7 +21,7 @@
    *      
    *   @see <related>
    *   @author <a href="mailto:[EMAIL PROTECTED]">Sebastien Alborini</a>
  - *   @version $Revision: 1.6 $
  + *   @version $Revision: 1.7 $
    */
   public abstract class BeanMetaData extends MetaData {
       // Constants -----------------------------------------------------
  @@ -205,6 +205,9 @@
                
                // set the configuration (optional)
                configurationName = getElementContent(getOptionalChild(element, 
"configuration-name"));
  +             if (configurationName != null && 
getApplicationMetaData().getConfigurationMetaDataByName(configurationName) == null) {
  +                     throw new DeploymentException("configuration '" + 
configurationName + "' not found in standardjboss.xml or jboss.xml");
  +             }
                
                // update the resource references (optional)
                Iterator iterator = getChildrenByTagName(element, "resource-ref");
  
  
  
  1.3       +6 -2      jboss/src/main/org/jboss/metadata/EntityMetaData.java
  
  Index: EntityMetaData.java
  ===================================================================
  RCS file: 
/products/cvs/ejboss/jboss/src/main/org/jboss/metadata/EntityMetaData.java,v
  retrieving revision 1.2
  retrieving revision 1.3
  diff -u -r1.2 -r1.3
  --- EntityMetaData.java       2000/08/16 22:36:04     1.2
  +++ EntityMetaData.java       2000/08/25 20:19:18     1.3
  @@ -17,7 +17,7 @@
    *      
    *   @see <related>
    *   @author <a href="mailto:[EMAIL PROTECTED]">Sebastien Alborini</a>
  - *   @version $Revision: 1.2 $
  + *   @version $Revision: 1.3 $
    */
   public class EntityMetaData extends BeanMetaData {
       // Constants -----------------------------------------------------
  @@ -74,7 +74,7 @@
                
                // set the cmp fields
                if (isCMP()) {
  -                     Iterator iterator = getChildrenByTagName(element, 
"cmp-fields");                        
  +                     Iterator iterator = getChildrenByTagName(element, 
"cmp-field");                 
                        while (iterator.hasNext()) {
                                Element field = (Element)iterator.next();
                                cmpFields.add(getElementContent(getUniqueChild(field, 
"field-name")));
  @@ -84,6 +84,10 @@
                // set the primary key field
                if (isCMP()) {
                        primKeyField = getElementContent(getOptionalChild(element, 
"primkey-field"));
  +                     
  +                     if (primKeyField != null && !cmpFields.contains(primKeyField)) 
{
  +                             throw new DeploymentException("primkey-field " + 
primKeyField + " is not a cmp-field");
  +                     }
                }
        }
   
  
  
  
  1.3       +3 -3      jboss/src/main/org/jboss/metadata/SessionMetaData.java
  
  Index: SessionMetaData.java
  ===================================================================
  RCS file: 
/products/cvs/ejboss/jboss/src/main/org/jboss/metadata/SessionMetaData.java,v
  retrieving revision 1.2
  retrieving revision 1.3
  diff -u -r1.2 -r1.3
  --- SessionMetaData.java      2000/08/16 22:36:04     1.2
  +++ SessionMetaData.java      2000/08/25 20:19:18     1.3
  @@ -16,7 +16,7 @@
    *      
    *   @see <related>
    *   @author <a href="mailto:[EMAIL PROTECTED]">Sebastien Alborini</a>
  - *   @version $Revision: 1.2 $
  + *   @version $Revision: 1.3 $
    */
   public class SessionMetaData extends BeanMetaData {
       // Constants -----------------------------------------------------
  @@ -57,7 +57,7 @@
                } else if (sessionType.equals("Stateless")) {
                        stateful = false;
                } else {
  -                     throw new DeploymentException("bean " + getEjbName() + ", 
session type should be 'Stateful' or 'Stateless'");
  +                     throw new DeploymentException("session type should be 
'Stateful' or 'Stateless'");
                }
                        
                // set the transaction type
  @@ -67,7 +67,7 @@
                } else if (transactionType.equals("Container")) {
                        containerManagedTx = true;
                } else {
  -                     throw new DeploymentException("bean " + getEjbName() + ", 
transaction type should be 'Bean' or 'Container'");
  +                     throw new DeploymentException("transaction type should be 
'Bean' or 'Container'");
                }
        }
                        
  
  
  

Reply via email to