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'");
}
}