[jboss-cvs] JBossAS SVN: r62340 - in trunk: server/src/main/org/jboss/deployment and 1 other directories.

jboss-cvs-commits at lists.jboss.org jboss-cvs-commits at lists.jboss.org
Sat Apr 14 08:20:38 EDT 2007


Author: thomas.diesler at jboss.com
Date: 2007-04-14 08:20:38 -0400 (Sat, 14 Apr 2007)
New Revision: 62340

Modified:
   trunk/ejb3/src/main/org/jboss/ejb3/metamodel/JBossDDObjectFactory.java
   trunk/ejb3/src/main/org/jboss/ejb3/metamodel/WebserviceDescription.java
   trunk/ejb3/src/main/org/jboss/ejb3/metamodel/Webservices.java
   trunk/server/src/main/org/jboss/deployment/JBossEjbObjectFactory.java
   trunk/server/src/main/org/jboss/metadata/ApplicationMetaData.java
Log:
Cleanup <webservices> handling in jboss.xml

Modified: trunk/ejb3/src/main/org/jboss/ejb3/metamodel/JBossDDObjectFactory.java
===================================================================
--- trunk/ejb3/src/main/org/jboss/ejb3/metamodel/JBossDDObjectFactory.java	2007-04-13 22:39:14 UTC (rev 62339)
+++ trunk/ejb3/src/main/org/jboss/ejb3/metamodel/JBossDDObjectFactory.java	2007-04-14 12:20:38 UTC (rev 62340)
@@ -136,7 +136,7 @@
          child = new ResourceManager();
       }
       else if (localName.equals("webservices"))
-      {         
+      {
          child = new Webservices();
       }
 
@@ -221,12 +221,12 @@
    public Object newChild(Webservices webservices, UnmarshallingContext navigator, String namespaceURI, String localName, Attributes attrs)
    {
       Object child = null;
-    
+
       if (localName.equals("webservice-description"))
       {
          child = new WebserviceDescription();
       }
-      
+
       return child;
    }
 
@@ -635,7 +635,7 @@
     */
    public void addChild(Webservices parent, WebserviceDescription desc, UnmarshallingContext navigator, String namespaceURI, String localName)
    {
-      parent.addWebserviceDescription(desc);
+      parent.getWebserviceDescriptions().add(desc);
    }
 
    /**
@@ -1124,17 +1124,6 @@
    /**
     * Called when a child element with simple content is read for DD.
     */
-   public void setValue(Webservices webservices, UnmarshallingContext navigator, String namespaceURI, String localName, String value)
-   {
-      if (localName.equals("context-root"))
-      {
-         webservices.setContextRoot(value);
-      }
-   }
-
-    /**
-    * Called when a child element with simple content is read for DD.
-    */
    public void setValue(Ejb3PortComponent portComp, UnmarshallingContext navigator, String namespaceURI, String localName, String value)
    {
       // port-component (port-component-name, port-component-uri?, auth-method?,
@@ -1163,11 +1152,22 @@
    /**
     * Called when a child element with simple content is read for DD.
     */
+   public void setValue(Webservices webservices, UnmarshallingContext navigator, String namespaceURI, String localName, String value)
+   {
+      if (localName.equals("context-root"))
+      {
+         webservices.setContextRoot(value);
+      }
+   }
+
+   /**
+    * Called when a child element with simple content is read for DD.
+    */
    public void setValue(WebserviceDescription desc, UnmarshallingContext navigator, String namespaceURI, String localName, String value)
    {
       if (localName.equals("webservice-description-name"))
       {
-         desc.setName(value);
+         desc.setDescriptionName(value);
       }
       else if (localName.equals("config-name"))
       {
@@ -1179,7 +1179,7 @@
       }
       else if (localName.equals("wsdl-publish-location"))
       {
-         desc.setLocation(value);
+         desc.setWsdlPublishLocation(value);
       }
    }
 

Modified: trunk/ejb3/src/main/org/jboss/ejb3/metamodel/WebserviceDescription.java
===================================================================
--- trunk/ejb3/src/main/org/jboss/ejb3/metamodel/WebserviceDescription.java	2007-04-13 22:39:14 UTC (rev 62339)
+++ trunk/ejb3/src/main/org/jboss/ejb3/metamodel/WebserviceDescription.java	2007-04-14 12:20:38 UTC (rev 62340)
@@ -1,20 +1,43 @@
+/*
+ * JBoss, Home of Professional Open Source.
+ * Copyright 2006, Red Hat Middleware LLC, and individual contributors
+ * as indicated by the @author tags. See the copyright.txt file in the
+ * distribution for a full listing of individual contributors.
+ *
+ * This is free software; you can redistribute it and/or modify it
+ * under the terms of the GNU Lesser General Public License as
+ * published by the Free Software Foundation; either version 2.1 of
+ * the License, or (at your option) any later version.
+ *
+ * This software is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+ * Lesser General Public License for more details.
+ *
+ * You should have received a copy of the GNU Lesser General Public
+ * License along with this software; if not, write to the Free
+ * Software Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA
+ * 02110-1301 USA, or see the FSF site: http://www.fsf.org.
+ */
 package org.jboss.ejb3.metamodel;
 
+// $Id: $
+
 public class WebserviceDescription
 {
-   String name;
-   String configName;
-   String configFile;
-   String location;
+   private String descriptionName;
+   private String configName;
+   private String configFile;
+   private String wsdlPublishLocation;
 
-   public String getName()
+   public String getConfigFile()
    {
-      return name;
+      return configFile;
    }
 
-   public void setName(String name)
+   public void setConfigFile(String configFile)
    {
-      this.name = name;
+      this.configFile = configFile;
    }
 
    public String getConfigName()
@@ -27,28 +50,23 @@
       this.configName = configName;
    }
 
-   public String getConfigFile()
+   public String getDescriptionName()
    {
-      return configFile;
+      return descriptionName;
    }
 
-   public void setConfigFile(String configFile)
+   public void setDescriptionName(String descriptionName)
    {
-      this.configFile = configFile;
+      this.descriptionName = descriptionName;
    }
 
-   public String getLocation()
+   public String getWsdlPublishLocation()
    {
-      return location;
+      return wsdlPublishLocation;
    }
 
-   public void setLocation(String location)
+   public void setWsdlPublishLocation(String wsdlPublishLocation)
    {
-      this.location = location;
+      this.wsdlPublishLocation = wsdlPublishLocation;
    }
-
-   public String serialize()
-   {
-      throw new IllegalArgumentException("Not implemented");
-   }
 }

Modified: trunk/ejb3/src/main/org/jboss/ejb3/metamodel/Webservices.java
===================================================================
--- trunk/ejb3/src/main/org/jboss/ejb3/metamodel/Webservices.java	2007-04-13 22:39:14 UTC (rev 62339)
+++ trunk/ejb3/src/main/org/jboss/ejb3/metamodel/Webservices.java	2007-04-14 12:20:38 UTC (rev 62340)
@@ -1,23 +1,36 @@
+/*
+ * JBoss, Home of Professional Open Source.
+ * Copyright 2006, Red Hat Middleware LLC, and individual contributors
+ * as indicated by the @author tags. See the copyright.txt file in the
+ * distribution for a full listing of individual contributors.
+ *
+ * This is free software; you can redistribute it and/or modify it
+ * under the terms of the GNU Lesser General Public License as
+ * published by the Free Software Foundation; either version 2.1 of
+ * the License, or (at your option) any later version.
+ *
+ * This software is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+ * Lesser General Public License for more details.
+ *
+ * You should have received a copy of the GNU Lesser General Public
+ * License along with this software; if not, write to the Free
+ * Software Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA
+ * 02110-1301 USA, or see the FSF site: http://www.fsf.org.
+ */
 package org.jboss.ejb3.metamodel;
 
-import java.net.URL;
+//$Id: $
+
 import java.util.ArrayList;
-import java.util.Map;
+import java.util.List;
 
 public class Webservices
 {
-   // The required <webservice-description> elements
-   private ArrayList<WebserviceDescription> webserviceDescriptions = new ArrayList<WebserviceDescription>();
-
-   // The URL to the webservices.xml descriptor
-   private URL descriptorURL;
-
    private String contextRoot;
+   private List<WebserviceDescription> webserviceDescriptions = new ArrayList<WebserviceDescription>();
 
-   public Webservices()
-   {
-   }
-
    public String getContextRoot()
    {
       return contextRoot;
@@ -28,74 +41,8 @@
       this.contextRoot = contextRoot;
    }
 
-   public Webservices(URL descriptorURL)
+   public List<WebserviceDescription> getWebserviceDescriptions()
    {
-      this.descriptorURL = descriptorURL;
+      return webserviceDescriptions;
    }
-
-   public URL getDescriptorURL()
-   {
-      return descriptorURL;
-   }
-
-   public void addWebserviceDescription(WebserviceDescription webserviceDescription)
-   {
-      webserviceDescriptions.add(webserviceDescription);
-   }
-
-   public WebserviceDescription[] getWebserviceDescriptions()
-   {
-      WebserviceDescription[] array = new WebserviceDescription[webserviceDescriptions.size()];
-      webserviceDescriptions.toArray(array);
-      return array;
-   }
-
-   //Serialize as a String
-   public String serialize()
-   {
-      //Construct the webservices.xml definitions
-      StringBuilder buffer = new StringBuilder();
-
-      // header: opening webservices tag
-      createHeader(buffer);
-
-      // webservice-description subelements
-      for (WebserviceDescription wm : webserviceDescriptions)
-         buffer.append(wm.serialize());
-
-      // closing webservices tag
-      buffer.append("</webservices>");
-      return buffer.toString();
-   }
-
-   private void createHeader(StringBuilder buf)
-   {
-      throw new IllegalArgumentException("Not implemented");
-
-      /*buf.append("<webservices xmlns='http://java.sun.com/xml/ns/j2ee'");
-      buf.append(" xmlns:xsi='").append(Constants.NS_SCHEMA_XSI).append('\'');
-      buf.append(" xsi:schemaLocation='http://java.sun.com/xml/ns/j2ee http://www.ibm.com/webservices/xsd/j2ee_web_services_1_1.xsd'");
-      buf.append(" version='1.1'>");
-      */
-   }
-
-   private String createAlternatePrefix(String prefix, Map<String, String> namespaces)
-   {
-      // allocate working buffer
-      StringBuilder altPrefixBuilder = new StringBuilder(prefix);
-      // remember original length
-      int baseLength = prefix.length();
-
-      for (int i = 2; i < Integer.MAX_VALUE; i++)
-      {
-         // append a natural number to the original prefix
-         String altPrefix = altPrefixBuilder.append(i).toString();
-         // if the alternate prefix does not match an existing one, we're done
-         if (!namespaces.containsKey(altPrefix))
-            return altPrefix;
-         // truncate buffer to original length
-         altPrefixBuilder.setLength(baseLength);
-      }
-      throw new IllegalArgumentException("could not create alternate prefix from: " + prefix);
-   }
 }

Modified: trunk/server/src/main/org/jboss/deployment/JBossEjbObjectFactory.java
===================================================================
--- trunk/server/src/main/org/jboss/deployment/JBossEjbObjectFactory.java	2007-04-13 22:39:14 UTC (rev 62339)
+++ trunk/server/src/main/org/jboss/deployment/JBossEjbObjectFactory.java	2007-04-14 12:20:38 UTC (rev 62340)
@@ -23,7 +23,6 @@
 
 // $Id: $
 
-
 import java.util.StringTokenizer;
 
 import javax.xml.parsers.DocumentBuilder;
@@ -53,6 +52,8 @@
 import org.jboss.metadata.SecurityIdentityMetaData;
 import org.jboss.metadata.SecurityRoleMetaData;
 import org.jboss.metadata.SessionMetaData;
+import org.jboss.metadata.ApplicationMetaData.WebserviceDescription;
+import org.jboss.metadata.ApplicationMetaData.Webservices;
 import org.jboss.mx.util.ObjectNameFactory;
 import org.jboss.ws.integration.ServiceRefMetaData;
 import org.jboss.xb.binding.UnmarshallingContext;
@@ -85,21 +86,19 @@
    /**
     * Return the root.
     */
-   public Object newRoot(Object root, UnmarshallingContext navigator,
-         String namespaceURI, String localName, Attributes attrs)
+   public Object newRoot(Object root, UnmarshallingContext navigator, String namespaceURI, String localName, Attributes attrs)
    {
       // If both the root and metaData are null the deployer is likely in the wrong order
-      if( root == null && appMetaData == null )
+      if (root == null && appMetaData == null)
          throw new IllegalStateException("No existing ApplicationMetaData, check the JBossEjbObjectFactory order");
 
       return root == null ? appMetaData : root;
    }
 
-   public Object completeRoot(Object root, UnmarshallingContext ctx,
-         String uri, String name)
+   public Object completeRoot(Object root, UnmarshallingContext ctx, String uri, String name)
    {
       ApplicationMetaData app = (ApplicationMetaData)root;
-      if(app.getUnauthenticatedPrincipal() == null)
+      if (app.getUnauthenticatedPrincipal() == null)
       {
          app.setDefaultUnauthenticatedPrincipal();
       }
@@ -109,38 +108,35 @@
    /**
     * Called when parsing of a new element started.
     */
-   public Object newChild(ApplicationMetaData dd, UnmarshallingContext navigator,
-         String namespaceURI, String localName, Attributes attrs)
+   public Object newChild(ApplicationMetaData dd, UnmarshallingContext navigator, String namespaceURI, String localName, Attributes attrs)
    {
       Object child = null;
-      if(localName.equals("loader-repository"))
+      if (localName.equals("loader-repository"))
       {
          // todo load-repository (it wasn't parsed in the ApplicationMetaData neither)
       }
-      else if(localName.equals("invoker-proxy-bindings"))
+      else if (localName.equals("invoker-proxy-bindings"))
       {
          child = dd;
       }
-      else if(localName.equals("invoker-proxy-binding"))
+      else if (localName.equals("invoker-proxy-binding"))
       {
          child = new InvokerProxyBindingMetaData();
       }
-      else if(localName.equals("container-configurations"))
+      else if (localName.equals("container-configurations"))
       {
          child = dd;
       }
-      else if(localName.equals("container-configuration"))
+      else if (localName.equals("container-configuration"))
       {
          int extendsIndex = attrs.getIndex("extends");
-         if(extendsIndex != -1)
+         if (extendsIndex != -1)
          {
             String extendName = attrs.getValue(extendsIndex);
             ConfigurationMetaData extendConfig = dd.getConfigurationMetaDataByName(extendName);
-            if(extendConfig == null)
+            if (extendConfig == null)
             {
-               throw new IllegalStateException(
-                  "Parent container configuration couldn't be found: " + extendName
-               );
+               throw new IllegalStateException("Parent container configuration couldn't be found: " + extendName);
             }
 
             child = new ConfigurationHolder(dd, (ConfigurationMetaData)extendConfig.clone());
@@ -150,107 +146,103 @@
             child = new ConfigurationHolder(dd, new ConfigurationMetaData());
          }
       }
-      else if(localName.equals("webservices"))
+      else if (localName.equals("webservices"))
       {
-         child = dd;
+         child = new Webservices();
       }
-      else if(localName.equals("webservice-description"))
+      else if (localName.equals("webservice-description"))
       {
-         child = new WsDescription();
+         child = new WebserviceDescription();
       }
-      else if(localName.equals("enterprise-beans"))
+      else if (localName.equals("enterprise-beans"))
       {
          child = dd;
       }
-      else if (localName.equals("entity") ||
-         localName.equals("session") ||
-         localName.equals("message-driven") )
+      else if (localName.equals("entity") || localName.equals("session") || localName.equals("message-driven"))
       {
          child = new BeanHolder();
       }
-      else if(localName.equals("resource-managers"))
+      else if (localName.equals("resource-managers"))
       {
          child = dd;
       }
-      else if(localName.equals("resource-manager"))
+      else if (localName.equals("resource-manager"))
       {
          child = new ResourceManagerMetaData();
       }
-      else if(localName.equals("assembly-descriptor"))
+      else if (localName.equals("assembly-descriptor"))
       {
          child = dd.getAssemblyDescriptor();
       }
       return child;
    }
 
-   public Object newChild(BeanHolder bean, UnmarshallingContext navigator,
-         String namespaceURI, String localName, Attributes attrs)
+   public Object newChild(BeanHolder bean, UnmarshallingContext navigator, String namespaceURI, String localName, Attributes attrs)
    {
       Object child = null;
       if ((child = newEnvRefGroupChild(localName)) != null)
       {
          return child;
       }
-      else if(localName.equals("invoker-bindings"))
+      else if (localName.equals("invoker-bindings"))
       {
          child = bean;
       }
-      else if(localName.equals("invoker"))
+      else if (localName.equals("invoker"))
       {
          child = new InvokerMetaData(bean.metaData);
       }
-      else if(localName.equals("security-identity"))
+      else if (localName.equals("security-identity"))
       {
          child = bean.metaData.getSecurityIdentityMetaData();
-         if(child == null)
+         if (child == null)
          {
             throw new IllegalStateException("security-identity in jboss.xml has no match in ejb-jar.xml for " + bean.metaData.getEjbName());
          }
       }
-      else if(localName.equals("ejb-timeout-identity"))
+      else if (localName.equals("ejb-timeout-identity"))
       {
          child = new SecurityIdentityMetaData();
       }
-      else if(localName.equals("method-attributes"))
+      else if (localName.equals("method-attributes"))
       {
          child = bean;
       }
-      else if(localName.equals("method"))
+      else if (localName.equals("method"))
       {
          child = new MethodAttributes();
       }
-      else if(localName.equals("cluster-config"))
+      else if (localName.equals("cluster-config"))
       {
          ClusterConfigMetaData cc = new ClusterConfigMetaData();
          cc.init(bean.metaData);
       }
-      else if(localName.equals("ior-security-config"))
+      else if (localName.equals("ior-security-config"))
       {
          child = new IorSecurityConfigMetaData();
       }
-      else if(localName.equals("cache-invalidation-config"))
+      else if (localName.equals("cache-invalidation-config"))
       {
          CacheInvalidationConfigMetaData config = new CacheInvalidationConfigMetaData();
          config.init(bean.metaData);
          child = config;
       }
-      else if(localName.equals("port-component"))
+      else if (localName.equals("port-component"))
       {
          child = new EjbPortComponentMetaData((SessionMetaData)bean.metaData);
       }
-      else if(localName.equals("activation-config"))
+      else if (localName.equals("activation-config"))
       {
          child = bean;
       }
-      else if(localName.equals("activation-config-property"))
+      else if (localName.equals("activation-config-property"))
       {
          return new ActivationConfigPropertyMetaData();
       }
       return child;
    }
 
-   public Object newChild(InvokerProxyBindingMetaData md, UnmarshallingContext navigator,
-         String namespaceURI, String localName, Attributes attrs)
+   public Object newChild(InvokerProxyBindingMetaData md, UnmarshallingContext navigator, String namespaceURI, String localName, Attributes attrs)
    {
       Object child = null;
       if (localName.equals("proxy-factory-config"))
@@ -260,21 +252,18 @@
       return child;
    }
 
-   public Object newChild(ConfigurationHolder md, UnmarshallingContext navigator,
-         String namespaceURI, String localName, Attributes attrs)
+   public Object newChild(ConfigurationHolder md, UnmarshallingContext navigator, String namespaceURI, String localName, Attributes attrs)
    {
       Object child = null;
       if (localName.equals("cluster-config"))
       {
          child = new ClusterConfigMetaData();
       }
-      else if(localName.equals("container-interceptors") ||
-         localName.equals("container-cache-conf") ||
-         localName.equals("container-pool-conf"))
+      else if (localName.equals("container-interceptors") || localName.equals("container-cache-conf") || localName.equals("container-pool-conf"))
       {
          child = new DomElement(newDomElement(localName, attrs));
       }
-      else if(localName.equals("security-domain"))
+      else if (localName.equals("security-domain"))
       {
          //Handle the <security-domain/> usecase
          child = md;
@@ -283,149 +272,138 @@
       return child;
    }
 
-   public Object newChild(DomElement dom, UnmarshallingContext navigator,
-         String namespaceURI, String localName, Attributes attrs)
+   public Object newChild(DomElement dom, UnmarshallingContext navigator, String namespaceURI, String localName, Attributes attrs)
    {
       Element child = dom.element.getOwnerDocument().createElement(localName);
       addAttributes(child, attrs);
       return new DomElement(child);
    }
 
-   public Object newChild(InvokerMetaData invoker, UnmarshallingContext navigator,
-         String namespaceURI, String localName, Attributes attrs)
+   public Object newChild(InvokerMetaData invoker, UnmarshallingContext navigator, String namespaceURI, String localName, Attributes attrs)
    {
-      if(localName.equals("ejb-ref"))
+      if (localName.equals("ejb-ref"))
       {
          return new InvokerMetaData.EjbRef();
       }
       return null;
    }
 
-   public Object newChild(IorSecurityConfigMetaData invoker, UnmarshallingContext navigator,
-         String namespaceURI, String localName, Attributes attrs)
+   public Object newChild(IorSecurityConfigMetaData invoker, UnmarshallingContext navigator, String namespaceURI, String localName, Attributes attrs)
    {
-      if(localName.equals("transport-config"))
+      if (localName.equals("transport-config"))
       {
          return new IorSecurityConfigMetaData.TransportConfig();
       }
-      else if(localName.equals("as-context"))
+      else if (localName.equals("as-context"))
       {
          return new IorSecurityConfigMetaData.AsContext();
       }
-      else if(localName.equals("sas-context"))
+      else if (localName.equals("sas-context"))
       {
          return new IorSecurityConfigMetaData.SasContext();
       }
       return null;
    }
 
-   public Object newChild(AssemblyDescriptorMetaData parent, UnmarshallingContext navigator,
-         String namespaceURI, String localName, Attributes attrs)
+   public Object newChild(AssemblyDescriptorMetaData parent, UnmarshallingContext navigator, String namespaceURI, String localName, Attributes attrs)
    {
-      if(localName.equals("security-role"))
+      if (localName.equals("security-role"))
       {
          return new SecurityRoleMetaData();
       }
-      else if(localName.equals("message-destination"))
+      else if (localName.equals("message-destination"))
       {
          return new MessageDestinationMetaData();
       }
       return null;
    }
 
-   public void addChild(ApplicationMetaData parent, InvokerProxyBindingMetaData binding,
-         UnmarshallingContext navigator, String namespaceURI, String localName)
+   public void addChild(ApplicationMetaData parent, InvokerProxyBindingMetaData binding, UnmarshallingContext navigator, String namespaceURI, String localName)
    {
       parent.addInvokerProxyBinding(binding);
    }
 
-   public void addChild(ApplicationMetaData parent, ConfigurationHolder container,
-         UnmarshallingContext navigator, String namespaceURI, String localName)
+   public void addChild(ApplicationMetaData parent, ConfigurationHolder container, UnmarshallingContext navigator, String namespaceURI, String localName)
    {
       parent.addContainerConfiguration(container.getConfiguration());
    }
 
-   public void addChild(ApplicationMetaData parent, ResourceManagerMetaData child,
-         UnmarshallingContext navigator, String namespaceURI, String localName)
+   public void addChild(ApplicationMetaData parent, ResourceManagerMetaData child, UnmarshallingContext navigator, String namespaceURI, String localName)
    {
-      if(child.jndiName != null)
+      if (child.jndiName != null)
       {
          parent.mapResource(child.resName, child.jndiName);
       }
-      else if(child.url != null)
+      else if (child.url != null)
       {
          parent.mapResource(child.resName, child.url);
       }
       else
       {
-         throw new IllegalStateException(child.resName +" : expected res-url or res-jndi-name tag");
+         throw new IllegalStateException(child.resName + " : expected res-url or res-jndi-name tag");
       }
    }
 
-   public void addChild(ApplicationMetaData parent, WsDescription child,
-         UnmarshallingContext navigator, String namespaceURI, String localName)
+   public void addChild(ApplicationMetaData parent, Webservices child, UnmarshallingContext navigator, String namespaceURI, String localName)
    {
-      parent.setConfigName(child.configName);
-      parent.setConfigFile(child.configFile);
-      parent.getWsdlPublishLocations().put(child.name, child.location);
+      parent.setWebservices(child);
    }
 
-   public void addChild(ConfigurationHolder parent, ClusterConfigMetaData child,
-         UnmarshallingContext navigator, String namespaceURI, String localName)
+   public void addChild(Webservices parent, WebserviceDescription child, UnmarshallingContext navigator, String namespaceURI, String localName)
    {
+      parent.getWebserviceDescriptions().add(child);
+   }
+
+   public void addChild(ConfigurationHolder parent, ClusterConfigMetaData child, UnmarshallingContext navigator, String namespaceURI, String localName)
+   {
       parent.getConfiguration().setClusterConfig(child);
    }
 
-   public void addChild(ConfigurationHolder parent, DomElement child,
-         UnmarshallingContext navigator, String namespaceURI, String localName)
+   public void addChild(ConfigurationHolder parent, DomElement child, UnmarshallingContext navigator, String namespaceURI, String localName)
    {
-      if(localName.equals("container-interceptors"))
+      if (localName.equals("container-interceptors"))
       {
          parent.getConfiguration().setContainerInterceptorsConf(child.element);
       }
-      else if(localName.equals("container-cache-conf"))
+      else if (localName.equals("container-cache-conf"))
       {
          parent.getConfiguration().setContainerCacheConf(child.element);
       }
-      else if(localName.equals("container-pool-conf"))
+      else if (localName.equals("container-pool-conf"))
       {
          parent.getConfiguration().setContainerPoolConf(child.element);
       }
    }
 
-   public void addChild(InvokerProxyBindingMetaData parent, DomElement domElement,
-         UnmarshallingContext navigator, String namespaceURI, String localName)
+   public void addChild(InvokerProxyBindingMetaData parent, DomElement domElement, UnmarshallingContext navigator, String namespaceURI, String localName)
    {
-      if(localName.equals("proxy-factory-config"))
+      if (localName.equals("proxy-factory-config"))
       {
          parent.setProxyFactoryConfig(domElement.element);
       }
    }
 
-   public void addChild(DomElement parent, DomElement child,
-         UnmarshallingContext navigator, String namespaceURI, String localName)
+   public void addChild(DomElement parent, DomElement child, UnmarshallingContext navigator, String namespaceURI, String localName)
    {
       parent.element.appendChild(child.element);
    }
 
-   public void addChild(BeanHolder parent, InvokerMetaData child,
-         UnmarshallingContext navigator, String namespaceURI, String localName)
+   public void addChild(BeanHolder parent, InvokerMetaData child, UnmarshallingContext navigator, String namespaceURI, String localName)
    {
       String jndiName = child.jndiName;
-      if(jndiName == null)
+      if (jndiName == null)
       {
          jndiName = parent.metaData.getJndiName();
       }
       parent.metaData.addInvokerBinding(child.bindingName, jndiName);
    }
 
-   public void addChild(BeanHolder parent, SecurityIdentityMetaData child,
-         UnmarshallingContext navigator, String namespaceURI, String localName)
+   public void addChild(BeanHolder parent, SecurityIdentityMetaData child, UnmarshallingContext navigator, String namespaceURI, String localName)
    {
-      if(localName.equals("ejb-timeout-identity"))
+      if (localName.equals("ejb-timeout-identity"))
       {
          child.setRunAsRoleName("ejbTimeout");
-         if(child.getRunAsPrincipalName() == null)
+         if (child.getRunAsPrincipalName() == null)
          {
             child.getUseCallerIdentity();
          }
@@ -433,26 +411,22 @@
       }
    }
 
-   public void addChild(BeanHolder parent, MethodAttributes child,
-         UnmarshallingContext navigator, String namespaceURI, String localName)
+   public void addChild(BeanHolder parent, MethodAttributes child, UnmarshallingContext navigator, String namespaceURI, String localName)
    {
       parent.metaData.getMethodAttributes().add(child);
    }
 
-   public void addChild(BeanHolder parent, ClusterConfigMetaData child,
-         UnmarshallingContext navigator, String namespaceURI, String localName)
+   public void addChild(BeanHolder parent, ClusterConfigMetaData child, UnmarshallingContext navigator, String namespaceURI, String localName)
    {
       parent.metaData.setClusterConfig(child);
    }
 
-   public void addChild(BeanHolder parent, IorSecurityConfigMetaData child,
-         UnmarshallingContext navigator, String namespaceURI, String localName)
+   public void addChild(BeanHolder parent, IorSecurityConfigMetaData child, UnmarshallingContext navigator, String namespaceURI, String localName)
    {
       parent.metaData.setIorSecurityConfig(child);
    }
 
-   public void addChild(BeanHolder parent, CacheInvalidationConfigMetaData child,
-         UnmarshallingContext navigator, String namespaceURI, String localName)
+   public void addChild(BeanHolder parent, CacheInvalidationConfigMetaData child, UnmarshallingContext navigator, String namespaceURI, String localName)
    {
       ((EntityMetaData)parent.metaData).setCacheInvalidConfig(child);
    }
@@ -461,9 +435,10 @@
    {
       SessionMetaData sessionMetaData = (SessionMetaData)parent.metaData;
       sessionMetaData.setPortComponent(pcMetaData);
-      
+
       ApplicationMetaData appMetaData = sessionMetaData.getApplicationMetaData();
-      String contextRoot = appMetaData.getWebServiceContextRoot();
+      Webservices webservices = appMetaData.getWebservices();
+      String contextRoot = (webservices != null ? webservices.getContextRoot() : null);
 
       // Post process portComponentURI
       String portComponentURI = pcMetaData.getPortComponentURI();
@@ -484,7 +459,9 @@
             if (prevContextRoot != null && prevContextRoot.equals(contextRoot) == false)
                throw new IllegalStateException("Invalid <port-component-uri>, expected to start with: " + prevContextRoot);
 
-            appMetaData.setWebServiceContextRoot(contextRoot);
+            if (webservices != null)
+               webservices.setContextRoot(contextRoot);
+
             portComponentURI = portComponentURI.substring(portComponentURI.indexOf('/', 1));
          }
          else if (portComponentURI.startsWith(contextRoot))
@@ -501,44 +478,40 @@
       }
    }
 
-   public void addChild(BeanHolder parent, ActivationConfigPropertyMetaData child,
-         UnmarshallingContext navigator, String namespaceURI, String localName)
+   public void addChild(BeanHolder parent, ActivationConfigPropertyMetaData child, UnmarshallingContext navigator, String namespaceURI, String localName)
    {
       ((MessageDrivenMetaData)parent.metaData).getActivationConfigProperties().put(child.getName(), child);
    }
 
-   public void addChild(BeanHolder parent, EjbLocalRefMetaData child,
-         UnmarshallingContext navigator, String namespaceURI, String localName)
+   public void addChild(BeanHolder parent, EjbLocalRefMetaData child, UnmarshallingContext navigator, String namespaceURI, String localName)
    {
       EjbLocalRefMetaData ref = parent.metaData.getEjbLocalRefByName(child.getName());
-      if(ref == null)
+      if (ref == null)
       {
-         throw new IllegalStateException("ejb-local-ref " + child.getName() +
-            " found in jboss.xml in ejb " + parent.metaData.getEjbName() + " could not be found in the ejb-jar.xml");
+         throw new IllegalStateException("ejb-local-ref " + child.getName() + " found in jboss.xml in ejb " + parent.metaData.getEjbName()
+               + " could not be found in the ejb-jar.xml");
       }
       ref.setJndiName(child.getJndiName());
    }
 
-   public void addChild(BeanHolder parent, EjbRefMetaData child,
-         UnmarshallingContext navigator, String namespaceURI, String localName)
+   public void addChild(BeanHolder parent, EjbRefMetaData child, UnmarshallingContext navigator, String namespaceURI, String localName)
    {
       EjbRefMetaData ref = parent.metaData.getEjbRefByName(child.getName());
-      if(ref == null)
+      if (ref == null)
       {
-         throw new IllegalStateException("ejb-ref " + child.getName() +
-            " found in jboss.xml in ejb " + parent.metaData.getEjbName() + " could not be found in the ejb-jar.xml");
+         throw new IllegalStateException("ejb-ref " + child.getName() + " found in jboss.xml in ejb " + parent.metaData.getEjbName()
+               + " could not be found in the ejb-jar.xml");
       }
       ref.setJndiName(child.getJndiName());
    }
 
-   public void addChild(BeanHolder parent, ResourceRefMetaData child,
-         UnmarshallingContext navigator, String namespaceURI, String localName)
+   public void addChild(BeanHolder parent, ResourceRefMetaData child, UnmarshallingContext navigator, String namespaceURI, String localName)
    {
       ResourceRefMetaData ref = parent.metaData.getResourceReference(child.getRefName());
-      if(ref == null)
+      if (ref == null)
       {
-         throw new IllegalStateException("resource-ref " + child.getRefName() +
-            " found in jboss.xml in ejb " + parent.metaData.getEjbName() + " could not be found in the ejb-jar.xml");
+         throw new IllegalStateException("resource-ref " + child.getRefName() + " found in jboss.xml in ejb " + parent.metaData.getEjbName()
+               + " could not be found in the ejb-jar.xml");
       }
 
       ref.setName(child.getName());
@@ -546,26 +519,24 @@
       ref.setResURL(child.getResURL());
    }
 
-   public void addChild(BeanHolder parent, ResourceEnvRefMetaData child,
-         UnmarshallingContext navigator, String namespaceURI, String localName)
+   public void addChild(BeanHolder parent, ResourceEnvRefMetaData child, UnmarshallingContext navigator, String namespaceURI, String localName)
    {
       ResourceEnvRefMetaData ref = parent.metaData.getResourceEnvReference(child.getRefName());
-      if(ref == null)
+      if (ref == null)
       {
-         throw new IllegalStateException("resource-env-ref " + child.getRefName() +
-            " found in jboss.xml in ejb " + parent.metaData.getEjbName() + " could not be found in the ejb-jar.xml");
+         throw new IllegalStateException("resource-env-ref " + child.getRefName() + " found in jboss.xml in ejb " + parent.metaData.getEjbName()
+               + " could not be found in the ejb-jar.xml");
       }
       ref.setJndiName(child.getJndiName());
    }
 
-   public void addChild(BeanHolder parent, MessageDestinationRefMetaData child,
-         UnmarshallingContext navigator, String namespaceURI, String localName)
+   public void addChild(BeanHolder parent, MessageDestinationRefMetaData child, UnmarshallingContext navigator, String namespaceURI, String localName)
    {
       MessageDestinationRefMetaData ref = parent.metaData.getMessageDestinationReference(child.getRefName());
-      if(ref == null)
+      if (ref == null)
       {
-         throw new IllegalStateException("message-destination-ref " + child.getRefName() +
-            " found in jboss.xml in ejb " + parent.metaData.getEjbName() + " could not be found in the ejb-jar.xml");
+         throw new IllegalStateException("message-destination-ref " + child.getRefName() + " found in jboss.xml in ejb " + parent.metaData.getEjbName()
+               + " could not be found in the ejb-jar.xml");
       }
       ref.setJndiName(child.getJndiName());
    }
@@ -588,40 +559,38 @@
       }
    }
 
-   public void addChild(InvokerMetaData parent, InvokerMetaData.EjbRef child,
-         UnmarshallingContext navigator, String namespaceURI, String localName)
+   public void addChild(InvokerMetaData parent, InvokerMetaData.EjbRef child, UnmarshallingContext navigator, String namespaceURI, String localName)
    {
       EjbRefMetaData ejbRef = parent.bean.getEjbRefByName(child.ejbRefName);
-      if(ejbRef == null)
+      if (ejbRef == null)
       {
          throw new IllegalStateException("ejb-ref " + child.ejbRefName + " found in jboss.xml but not in ejb-jar.xml");
       }
       ejbRef.addInvokerBinding(parent.bindingName, child.jndiName);
    }
 
-   public void addChild(IorSecurityConfigMetaData parent, IorSecurityConfigMetaData.TransportConfig child,
-         UnmarshallingContext navigator, String namespaceURI, String localName)
+   public void addChild(IorSecurityConfigMetaData parent, IorSecurityConfigMetaData.TransportConfig child, UnmarshallingContext navigator, String namespaceURI,
+         String localName)
    {
       parent.setTransportConfig(child);
    }
 
-   public void addChild(IorSecurityConfigMetaData parent, IorSecurityConfigMetaData.AsContext child,
-         UnmarshallingContext navigator, String namespaceURI, String localName)
+   public void addChild(IorSecurityConfigMetaData parent, IorSecurityConfigMetaData.AsContext child, UnmarshallingContext navigator, String namespaceURI,
+         String localName)
    {
       parent.setAsContext(child);
    }
 
-   public void addChild(IorSecurityConfigMetaData parent, IorSecurityConfigMetaData.SasContext child,
-         UnmarshallingContext navigator, String namespaceURI, String localName)
+   public void addChild(IorSecurityConfigMetaData parent, IorSecurityConfigMetaData.SasContext child, UnmarshallingContext navigator, String namespaceURI,
+         String localName)
    {
       parent.setSasContext(child);
    }
 
-   public void addChild(AssemblyDescriptorMetaData parent, SecurityRoleMetaData child,
-         UnmarshallingContext navigator, String namespaceURI, String localName)
+   public void addChild(AssemblyDescriptorMetaData parent, SecurityRoleMetaData child, UnmarshallingContext navigator, String namespaceURI, String localName)
    {
       SecurityRoleMetaData ejbjarRole = parent.getSecurityRoleByName(child.getRoleName());
-      if(ejbjarRole != null)
+      if (ejbjarRole != null)
       {
          ejbjarRole.addPrincipalNames(child.getPrincipals());
       }
@@ -631,57 +600,48 @@
       }
    }
 
-   public void addChild(AssemblyDescriptorMetaData parent, MessageDestinationMetaData child,
-         UnmarshallingContext navigator, String namespaceURI, String localName)
+   public void addChild(AssemblyDescriptorMetaData parent, MessageDestinationMetaData child, UnmarshallingContext navigator, String namespaceURI, String localName)
    {
       MessageDestinationMetaData ejbjarDest = parent.getMessageDestinationMetaData(child.getName());
-      if(ejbjarDest == null)
+      if (ejbjarDest == null)
       {
          throw new IllegalStateException("message-destination " + child.getName() + " found in jboss.xml but not in ejb-jar.xml");
       }
       ejbjarDest.setJNDIName(child.getJNDIName());
    }
 
-   public void setValue(ApplicationMetaData amd,
-         UnmarshallingContext navigator, String namespaceURI, String localName,
-         String value)
+   public void setValue(ApplicationMetaData amd, UnmarshallingContext navigator, String namespaceURI, String localName, String value)
    {
       if (localName.equals("jmx-name"))
       {
          amd.setJmxName(value);
       }
-      else if(localName.equals("enforce-ejb-restrictions"))
+      else if (localName.equals("enforce-ejb-restrictions"))
       {
          amd.setEnforceEjbRestrictions(Boolean.parseBoolean(value));
       }
-      else if(localName.equals("exception-on-rollback"))
+      else if (localName.equals("exception-on-rollback"))
       {
          boolean flag = Boolean.valueOf(value);
          amd.setExceptionRollback(flag);
       }
-      else if(localName.equals("security-domain"))
+      else if (localName.equals("security-domain"))
       {
          amd.setSecurityDomain(value);
       }
-      else if(localName.equals("missing-method-permissions-excluded-mode"))
+      else if (localName.equals("missing-method-permissions-excluded-mode"))
       {
          amd.setExcludeMissingMethods(Boolean.parseBoolean(value));
       }
-      else if(localName.equals("unauthenticated-principal"))
+      else if (localName.equals("unauthenticated-principal"))
       {
          amd.setUnauthenticatedPrincipal(value);
       }
-      else if(localName.equals("context-root"))
-      {
-         amd.setWebServiceContextRoot(value);
-      }
    }
 
-   public void setValue(InvokerProxyBindingMetaData md,
-         UnmarshallingContext navigator, String namespaceURI, String localName,
-         String value)
+   public void setValue(InvokerProxyBindingMetaData md, UnmarshallingContext navigator, String namespaceURI, String localName, String value)
    {
-      if(localName.equals("name"))
+      if (localName.equals("name"))
       {
          md.setName(value);
       }
@@ -695,151 +655,143 @@
       }
    }
 
-   public void setValue(InvokerMetaData md,
-         UnmarshallingContext navigator, String namespaceURI, String localName,
-         String value)
+   public void setValue(InvokerMetaData md, UnmarshallingContext navigator, String namespaceURI, String localName, String value)
    {
-      if(localName.equals("invoker-proxy-binding-name"))
+      if (localName.equals("invoker-proxy-binding-name"))
       {
          md.bindingName = value;
       }
-      else if(localName.equals("jndi-name"))
+      else if (localName.equals("jndi-name"))
       {
          md.jndiName = value;
       }
    }
 
-   public void setValue(InvokerMetaData.EjbRef md,
-         UnmarshallingContext navigator, String namespaceURI, String localName,
-         String value)
+   public void setValue(InvokerMetaData.EjbRef md, UnmarshallingContext navigator, String namespaceURI, String localName, String value)
    {
-      if(localName.equals("ejb-ref-name"))
+      if (localName.equals("ejb-ref-name"))
       {
          md.ejbRefName = value;
       }
-      else if(localName.equals("jndi-name"))
+      else if (localName.equals("jndi-name"))
       {
          md.jndiName = value;
       }
    }
 
-   public void setValue(BeanHolder bean,
-         UnmarshallingContext navigator, String namespaceURI, String localName,
-         String value)
+   public void setValue(BeanHolder bean, UnmarshallingContext navigator, String namespaceURI, String localName, String value)
    {
       // common for entity, session and message-driven
-      if( localName.equals("ejb-name") )
+      if (localName.equals("ejb-name"))
       {
          bean.ejbName = value;
          // Lookup the metadata
          bean.metaData = appMetaData.getBeanByEjbName(value);
-         if(bean.metaData == null)
+         if (bean.metaData == null)
          {
             throw new IllegalStateException("Bean " + value + " not declared in the ejb-jar.xml");
          }
       }
-      else if( localName.equals("jndi-name") )
+      else if (localName.equals("jndi-name"))
       {
          bean.metaData.setJndiName(value);
       }
-      else if( localName.equals("local-jndi-name") )
+      else if (localName.equals("local-jndi-name"))
       {
          bean.metaData.setLocalJndiName(value);
       }
-      else if(localName.equals("exception-on-rollback"))
+      else if (localName.equals("exception-on-rollback"))
       {
          bean.metaData.setExceptionRollback(Boolean.parseBoolean(value));
       }
-      else if(localName.equals("timer-persistence"))
+      else if (localName.equals("timer-persistence"))
       {
          bean.metaData.setTimerPersistence(Boolean.parseBoolean(value));
       }
-      else if(localName.equals("configuration-name"))
+      else if (localName.equals("configuration-name"))
       {
          bean.metaData.setConfigurationName(value);
       }
-      else if(localName.equals("security-proxy"))
+      else if (localName.equals("security-proxy"))
       {
          bean.metaData.setSecurityProxy(value);
       }
-      else if(localName.equals("depends"))
+      else if (localName.equals("depends"))
       {
          bean.metaData.addDepends(ObjectNameFactory.create(value));
       }
       // session and entity elements
-      else if( localName.equals("call-by-value") )
+      else if (localName.equals("call-by-value"))
       {
          boolean flag = Boolean.valueOf(value);
          bean.metaData.setCallByValue(flag);
       }
-      else if(localName.equals("clustered"))
+      else if (localName.equals("clustered"))
       {
          bean.metaData.setClustered(Boolean.parseBoolean(value));
       }
       // entity elements
-      else if(localName.equals("read-only"))
+      else if (localName.equals("read-only"))
       {
          ((EntityMetaData)bean.metaData).setReadOnly(Boolean.parseBoolean(value));
       }
-      else if(localName.equals("cache-invalidation"))
+      else if (localName.equals("cache-invalidation"))
       {
          ((EntityMetaData)bean.metaData).setDoDistCachInvalidations(Boolean.parseBoolean(value));
       }
       // message-driven elements
-      else if(localName.equals("destination-jndi-name"))
+      else if (localName.equals("destination-jndi-name"))
       {
          ((MessageDrivenMetaData)bean.metaData).setDestinationJndiName(value);
       }
-      else if(localName.equals("mdb-user"))
+      else if (localName.equals("mdb-user"))
       {
          ((MessageDrivenMetaData)bean.metaData).setUser(value);
       }
-      else if(localName.equals("mdb-passwd"))
+      else if (localName.equals("mdb-passwd"))
       {
          ((MessageDrivenMetaData)bean.metaData).setPasswd(value);
       }
-      else if(localName.equals("mdb-client-id"))
+      else if (localName.equals("mdb-client-id"))
       {
          ((MessageDrivenMetaData)bean.metaData).setClientId(value);
       }
-      else if(localName.equals("mdb-subscription-id"))
+      else if (localName.equals("mdb-subscription-id"))
       {
          ((MessageDrivenMetaData)bean.metaData).setSubscriptionId(value);
       }
-      else if(localName.equals("resource-adapter-name"))
+      else if (localName.equals("resource-adapter-name"))
       {
          ((MessageDrivenMetaData)bean.metaData).setResourceAdapterName(value);
       }
    }
 
-   public void setValue(ConfigurationHolder ch,
-         UnmarshallingContext navigator, String namespaceURI, String localName,
-         String value)
+   public void setValue(ConfigurationHolder ch, UnmarshallingContext navigator, String namespaceURI, String localName, String value)
    {
       ConfigurationMetaData container = ch.getConfiguration();
       if (localName.equals("container-name"))
       {
          // Here we may implicitly be extending an existing config
          ConfigurationMetaData cmd = ch.amd.getConfigurationMetaDataByName(value);
-         if( cmd != null )
+         if (cmd != null)
          {
             // Set the extended value to the implicit override
-            container = (ConfigurationMetaData) cmd.clone();
+            container = (ConfigurationMetaData)cmd.clone();
             ch.extended = container;
          }
          container.setName(value);
       }
-      else if(localName.equals("call-logging"))
+      else if (localName.equals("call-logging"))
       {
          container.setCallLogging(Boolean.valueOf(value));
       }
-      else if(localName.equals("invoker-proxy-binding-name"))
+      else if (localName.equals("invoker-proxy-binding-name"))
       {
          // TODO: according to the DTD there could only be one
          String[] invokers = container.getInvokers();
-         if(invokers == null)
+         if (invokers == null)
          {
-            container.setInvokerNames(new String[]{value});
+            container.setInvokerNames(new String[] { value });
          }
          else
          {
@@ -849,190 +801,175 @@
             container.setInvokerNames(newInvokers);
          }
       }
-      else if(localName.equals("sync-on-commit-only"))
+      else if (localName.equals("sync-on-commit-only"))
       {
          container.setSyncOnCommitOnly(Boolean.valueOf(value));
       }
-      else if(localName.equals("insert-after-ejb-post-create"))
+      else if (localName.equals("insert-after-ejb-post-create"))
       {
          container.setInsertAfterEjbPostCreate(Boolean.valueOf(value));
       }
-      else if(localName.equals("call-ejb-store-on-clean"))
+      else if (localName.equals("call-ejb-store-on-clean"))
       {
          container.setEjbStoreForClean(Boolean.valueOf(value));
       }
-      else if(localName.equals("store-not-flushed"))
+      else if (localName.equals("store-not-flushed"))
       {
          container.setStoreNotFlushed(Boolean.valueOf(value));
       }
-      else if(localName.equals("instance-pool"))
+      else if (localName.equals("instance-pool"))
       {
          container.setInstancePool(value);
       }
-      else if(localName.equals("instance-cache"))
+      else if (localName.equals("instance-cache"))
       {
          container.setInstanceCache(value);
       }
-      else if(localName.equals("persistence-manager"))
+      else if (localName.equals("persistence-manager"))
       {
          container.setPersistenceManager(value);
       }
-      else if(localName.equals("web-class-loader"))
+      else if (localName.equals("web-class-loader"))
       {
          container.setWebClassLoader(value);
       }
-      else if(localName.equals("locking-policy"))
+      else if (localName.equals("locking-policy"))
       {
          container.setLockClass(value);
       }
-      else if(localName.equals("commit-option"))
+      else if (localName.equals("commit-option"))
       {
          container.setCommitOption(value);
       }
-      else if(localName.equals("optiond-refresh-rate"))
+      else if (localName.equals("optiond-refresh-rate"))
       {
          container.setOptionDRefreshRate(Long.parseLong(value));
       }
-      else if(localName.equals("security-domain"))
+      else if (localName.equals("security-domain"))
       {
-         container.setSecurityDomain(value);;
+         container.setSecurityDomain(value);
+         ;
       }
-      else if(localName.equals("depends"))
+      else if (localName.equals("depends"))
       {
          container.getDepends().add(ObjectNameFactory.create(value));
       }
    }
 
-   public void setValue(ClusterConfigMetaData config,
-         UnmarshallingContext navigator, String namespaceURI, String localName,
-         String value)
+   public void setValue(ClusterConfigMetaData config, UnmarshallingContext navigator, String namespaceURI, String localName, String value)
    {
-      if(localName.equals("partition-name"))
+      if (localName.equals("partition-name"))
       {
          config.setPartitionName(value);
       }
-      else if(localName.equals("home-load-balance-policy"))
+      else if (localName.equals("home-load-balance-policy"))
       {
          config.setHomeLoadBalancePolicy(value);
       }
-      else if(localName.equals("bean-load-balance-policy"))
+      else if (localName.equals("bean-load-balance-policy"))
       {
          config.setBeanLoadBalancePolicy(value);
       }
-      else if(localName.equals("session-state-manager-jndi-name"))
+      else if (localName.equals("session-state-manager-jndi-name"))
       {
          config.setHaSessionStateName(value);
       }
    }
 
-   public void setValue(DomElement dom,
-         UnmarshallingContext navigator, String namespaceURI, String localName,
-         String value)
+   public void setValue(DomElement dom, UnmarshallingContext navigator, String namespaceURI, String localName, String value)
    {
       Document doc = dom.element.getOwnerDocument();
       Text textNode = doc.createTextNode(value);
       dom.element.appendChild(textNode);
    }
 
-   public void setValue(SecurityIdentityMetaData id,
-         UnmarshallingContext navigator, String namespaceURI, String localName,
-         String value)
+   public void setValue(SecurityIdentityMetaData id, UnmarshallingContext navigator, String namespaceURI, String localName, String value)
    {
-      if(localName.equals("run-as-principal") && value != null)
+      if (localName.equals("run-as-principal") && value != null)
       {
          id.setRunAsPrincipalName(value);
       }
    }
 
-   public void setValue(MethodAttributes method,
-         UnmarshallingContext navigator, String namespaceURI, String localName,
-         String value)
+   public void setValue(MethodAttributes method, UnmarshallingContext navigator, String namespaceURI, String localName, String value)
    {
-      if(localName.equals("method-name"))
+      if (localName.equals("method-name"))
       {
          method.setPattern(value);
       }
-      else if(localName.equals("read-only"))
+      else if (localName.equals("read-only"))
       {
          method.setReadOnly(Boolean.parseBoolean(value));
       }
-      else if(localName.equals("idempotent"))
+      else if (localName.equals("idempotent"))
       {
          method.setIdempotent(Boolean.parseBoolean(value));
       }
-      else if(localName.equals("transaction-timeout"))
+      else if (localName.equals("transaction-timeout"))
       {
          method.setTxTimeout(Integer.parseInt(value));
       }
    }
 
-   public void setValue(IorSecurityConfigMetaData.TransportConfig parent,
-         UnmarshallingContext navigator, String namespaceURI, String localName,
-         String value)
+   public void setValue(IorSecurityConfigMetaData.TransportConfig parent, UnmarshallingContext navigator, String namespaceURI, String localName, String value)
    {
-      if(localName.equals("integrity"))
+      if (localName.equals("integrity"))
       {
          parent.setIntegrity(value);
       }
-      else if(localName.equals("confidentiality"))
+      else if (localName.equals("confidentiality"))
       {
          parent.setConfidentiality(value);
       }
-      else if(localName.equals("establish-trust-in-target"))
+      else if (localName.equals("establish-trust-in-target"))
       {
          parent.setEstablishTrustInTarget(value);
       }
-      else if(localName.equals("establish-trust-in-client"))
+      else if (localName.equals("establish-trust-in-client"))
       {
          parent.setEstablishTrustInClient(value);
       }
-      else if(localName.equals("detect-misordering"))
+      else if (localName.equals("detect-misordering"))
       {
          parent.setDetectMisordering(value);
       }
-      else if(localName.equals("detect-replay"))
+      else if (localName.equals("detect-replay"))
       {
          parent.setDetectReplay(value);
       }
    }
 
-   public void setValue(IorSecurityConfigMetaData.AsContext parent,
-         UnmarshallingContext navigator, String namespaceURI, String localName,
-         String value)
+   public void setValue(IorSecurityConfigMetaData.AsContext parent, UnmarshallingContext navigator, String namespaceURI, String localName, String value)
    {
-      if(localName.equals("auth-method"))
+      if (localName.equals("auth-method"))
       {
          parent.setAuthMethod(value);
       }
-      else if(localName.equals("realm"))
+      else if (localName.equals("realm"))
       {
          parent.setRealm(value);
       }
-      else if(localName.equals("required"))
+      else if (localName.equals("required"))
       {
          parent.setRequired(Boolean.parseBoolean(value));
       }
    }
 
-   public void setValue(IorSecurityConfigMetaData.SasContext parent,
-         UnmarshallingContext navigator, String namespaceURI, String localName,
-         String value)
+   public void setValue(IorSecurityConfigMetaData.SasContext parent, UnmarshallingContext navigator, String namespaceURI, String localName, String value)
    {
-      if(localName.equals("caller-propagation"))
+      if (localName.equals("caller-propagation"))
       {
          parent.setCallerPropagation(value);
       }
    }
 
-   public void setValue(CacheInvalidationConfigMetaData parent,
-         UnmarshallingContext navigator, String namespaceURI, String localName,
-         String value)
+   public void setValue(CacheInvalidationConfigMetaData parent, UnmarshallingContext navigator, String namespaceURI, String localName, String value)
    {
-      if(localName.equals("invalidation-group-name"))
+      if (localName.equals("invalidation-group-name"))
       {
          parent.setInvalidationGroupName(value);
       }
-      else if(localName.equals("invalidation-manager-name"))
+      else if (localName.equals("invalidation-manager-name"))
       {
          parent.setInvalidationManagerName(value);
       }
@@ -1051,73 +988,73 @@
       else if (localName.equals("secure-wsdl-access"))
          pcMetaData.setSecureWSDLAccess(Boolean.valueOf(value));
    }
-      
-   public void setValue(ActivationConfigPropertyMetaData parent,
-         UnmarshallingContext navigator, String namespaceURI, String localName,
-         String value)
+
+   public void setValue(ActivationConfigPropertyMetaData parent, UnmarshallingContext navigator, String namespaceURI, String localName, String value)
    {
-      if(localName.equals("activation-config-property-name"))
+      if (localName.equals("activation-config-property-name"))
       {
          parent.setName(value);
       }
-      else if(localName.equals("activation-config-property-value"))
+      else if (localName.equals("activation-config-property-value"))
       {
          parent.setValue(value);
       }
    }
 
-   public void setValue(SecurityRoleMetaData parent,
-         UnmarshallingContext navigator, String namespaceURI, String localName,
-         String value)
+   public void setValue(SecurityRoleMetaData parent, UnmarshallingContext navigator, String namespaceURI, String localName, String value)
    {
-      if(localName.equals("role-name"))
+      if (localName.equals("role-name"))
       {
          parent.setRoleName(value);
       }
-      else if(localName.equals("principal-name"))
+      else if (localName.equals("principal-name"))
       {
          parent.addPrincipalName(value);
       }
    }
 
-   public void setValue(ResourceManagerMetaData parent,
-         UnmarshallingContext navigator, String namespaceURI, String localName,
-         String value)
+   public void setValue(ResourceManagerMetaData parent, UnmarshallingContext navigator, String namespaceURI, String localName, String value)
    {
-      if(localName.equals("res-name"))
+      if (localName.equals("res-name"))
       {
          parent.resName = value;
       }
-      else if(localName.equals("res-jndi-name"))
+      else if (localName.equals("res-jndi-name"))
       {
          parent.jndiName = value;
       }
-      else if(localName.equals("res-url"))
+      else if (localName.equals("res-url"))
       {
          parent.url = value;
       }
    }
 
-   public void setValue(WsDescription parent,
-         UnmarshallingContext navigator, String namespaceURI, String localName,
-         String value)
+   public void setValue(Webservices parent, UnmarshallingContext navigator, String namespaceURI, String localName, String value)
    {
-      if(localName.equals("webservice-description-name"))
+      if (localName.equals("context-root"))
       {
-         parent.name = value;
+         parent.setContextRoot(value);
       }
-      else if(localName.equals("config-name"))
+   }
+
+   public void setValue(WebserviceDescription parent, UnmarshallingContext navigator, String namespaceURI, String localName, String value)
+   {
+      if (localName.equals("webservice-description-name"))
       {
-         parent.configName = value;
+         parent.setDescriptionName(value);
       }
-      else if(localName.equals("config-file"))
+      else if (localName.equals("config-name"))
       {
-         parent.configFile = value;
+         parent.setConfigName(value);
       }
-      else if(localName.equals("wsdl-publish-location"))
+      else if (localName.equals("config-file"))
       {
-         parent.location = value;
+         parent.setConfigFile(value);
       }
+      else if (localName.equals("wsdl-publish-location"))
+      {
+         parent.setWsdlPublishLocation(value);
+      }
    }
 
    // static
@@ -1134,14 +1071,14 @@
 
    private static Element newDomElement(String name, Attributes attrs)
    {
-      if(DOC_BUILDER == null)
+      if (DOC_BUILDER == null)
       {
          DocumentBuilderFactory factory = DocumentBuilderFactory.newInstance();
          try
          {
             DOC_BUILDER = factory.newDocumentBuilder();
          }
-         catch(ParserConfigurationException e)
+         catch (ParserConfigurationException e)
          {
             throw new IllegalStateException("Failed to create W3C DocumentBuilder", e);
          }
@@ -1155,7 +1092,7 @@
 
    private static void addAttributes(Element e, Attributes attrs)
    {
-      for(int i = 0; i < attrs.getLength(); ++i)
+      for (int i = 0; i < attrs.getLength(); ++i)
       {
          e.setAttribute(attrs.getQName(i), attrs.getValue(i));
       }
@@ -1188,29 +1125,22 @@
       String url;
    }
 
-   public static class WsDescription
-   {
-      String name;
-      String configName;
-      String configFile;
-      String location;
-   }
-   
    static class BeanHolder
    {
       String ejbName;
       BeanMetaData metaData;
    }
+
    /**
     * Because of how ConfigurationMetaData can both explicitly and implicitly
     * extend and existing configuration, we need a holder to allow the ConfigurationMetaData
     * instance to be replaced by an existing config when the container-name is seen
     * as would be the case for this jboss.xml fragment:
     <container-configurations>
-        <container-configuration>
-            <container-name>Standard Stateless SessionBean</container-name>
-            <depends>test:name=Test</depends>
-        </container-configuration>
+    <container-configuration>
+    <container-name>Standard Stateless SessionBean</container-name>
+    <depends>test:name=Test</depends>
+    </container-configuration>
     </container-configurations>
     */
    static class ConfigurationHolder
@@ -1218,11 +1148,13 @@
       ApplicationMetaData amd;
       ConfigurationMetaData base;
       ConfigurationMetaData extended;
+
       ConfigurationHolder(ApplicationMetaData amd, ConfigurationMetaData base)
       {
          this.amd = amd;
          this.base = base;
       }
+
       ConfigurationMetaData getConfiguration()
       {
          return extended != null ? extended : base;

Modified: trunk/server/src/main/org/jboss/metadata/ApplicationMetaData.java
===================================================================
--- trunk/server/src/main/org/jboss/metadata/ApplicationMetaData.java	2007-04-13 22:39:14 UTC (rev 62339)
+++ trunk/server/src/main/org/jboss/metadata/ApplicationMetaData.java	2007-04-14 12:20:38 UTC (rev 62340)
@@ -51,8 +51,7 @@
  *
  * @version $Revision$
  */
-public class ApplicationMetaData extends MetaData
-   implements Serializable
+public class ApplicationMetaData extends MetaData implements Serializable
 {
    private static final long serialVersionUID = 1;
 
@@ -67,14 +66,8 @@
    protected int ejbMinorVersion;
    /** ArrayList<BeanMetaData> for the ejbs */
    private ArrayList<BeanMetaData> beans = new ArrayList<BeanMetaData>();
-   /** A HashMap<String, String> for webservice description publish locations */
-   private HashMap wsdlPublishLocationMap = new HashMap();
    /** True if this is a web service deployment */
    private boolean webServiceDeployment;
-   /** The optional JBossWS config-name */
-   private String configName;
-   /** The optional JBossWS config-file */
-   private String configFile;
    private String clientJar;
    /** List<RelationMetaData> of relations in this application. */
    private ArrayList<RelationMetaData> relationships = new ArrayList<RelationMetaData>();
@@ -93,8 +86,6 @@
    private String securityDomain;
    /** The  unauthenticated-principal value assigned to the application */
    private String unauthenticatedPrincipal;
-   /** The web context root to use for web services */
-   private String webServiceContextRoot;
    /** An unused flag if the spec security restrictions should be enforced */
    private boolean enforceEjbRestrictions;
    /** The missing-method-permissions-excluded-mode value */
@@ -103,6 +94,8 @@
    private boolean exceptionRollback = false;
    /** The JACC context id for the container */
    private String jaccContextID;
+   /** The optional <webservices> element **/
+   private Webservices webservices;
 
    public ApplicationMetaData()
    {
@@ -116,12 +109,13 @@
    public Set<ObjectName> getDependencies()
    {
       HashSet<ObjectName> depends = new HashSet<ObjectName>();
-      for(BeanMetaData bmd : beans)
+      for (BeanMetaData bmd : beans)
       {
          depends.addAll(bmd.getDepends());
       }
       return depends;
    }
+
    public String getDescription()
    {
       return description;
@@ -216,26 +210,16 @@
       return null;
    }
 
-   public String getConfigFile()
+   public Webservices getWebservices()
    {
-      return configFile;
+      return webservices;
    }
 
-   public void setConfigFile(String configFile)
+   public void setWebservices(Webservices webservices)
    {
-      this.configFile = configFile;
+      this.webservices = webservices;
    }
 
-   public String getConfigName()
-   {
-      return configName;
-   }
-
-   public void setConfigName(String configName)
-   {
-      this.configName = configName;
-   }
-
    public String getClientJar()
    {
       return clientJar;
@@ -246,31 +230,6 @@
       this.clientJar = clientJar;
    }
 
-   public HashMap getWsdlPublishLocations()
-   {
-      return wsdlPublishLocationMap;
-   }
-
-   public String getWsdlPublishLocationByName(String name)
-   {
-      // if not found, the we will use default
-      return (String)wsdlPublishLocationMap.get(name);
-   }
-
-   public String getWebServiceContextRoot()
-   {
-      return webServiceContextRoot;
-   }
-
-   public void setWebServiceContextRoot(String webServiceContextRoot)
-   {
-      if (webServiceContextRoot.charAt(0) != '/')
-      {
-         webServiceContextRoot = "/" + webServiceContextRoot;
-      }
-      this.webServiceContextRoot = webServiceContextRoot;
-   }
-
    public boolean isWebServiceDeployment()
    {
       return webServiceDeployment;
@@ -892,27 +851,31 @@
          }
       }
 
-      Element webservices = getOptionalChild(element, "webservices");
-      if (webservices != null)
+      Element wsEl = getOptionalChild(element, "webservices");
+      if (wsEl != null)
       {
-         Element contextRoot = getOptionalChild(webservices, "context-root");
+         webservices = new Webservices();
+         String contextRoot = getOptionalChildContent(wsEl, "context-root");
          if (contextRoot != null)
          {
-            webServiceContextRoot = getElementContent(contextRoot);
-            if (webServiceContextRoot.charAt(0) != '/')
-               webServiceContextRoot = "/" + webServiceContextRoot;
+            if (contextRoot.charAt(0) != '/')
+               contextRoot = "/" + contextRoot;
+            webservices.setContextRoot(contextRoot);
          }
-         iterator = getChildrenByTagName(webservices, "webservice-description");
+
+         iterator = getChildrenByTagName(wsEl, "webservice-description");
          while (iterator.hasNext())
          {
-            Element wsd = (Element)iterator.next();
-            String wsdName = getElementContent(getUniqueChild(wsd, "webservice-description-name"));
-            configName = MetaData.getOptionalChildContent(wsd, "config-name");
-            configFile = MetaData.getOptionalChildContent(wsd, "config-file");
-            String wsdlPublishLocation = getOptionalChildContent(wsd, "wsdl-publish-location");
-            wsdlPublishLocationMap.put(wsdName, wsdlPublishLocation);
+            Element wsdEl = (Element)iterator.next();
+            WebserviceDescription wsd = new WebserviceDescription();
+            wsd.setDescriptionName(getElementContent(getUniqueChild(wsdEl, "webservice-description-name")));
+            wsd.setConfigName(getOptionalChildContent(wsdEl, "config-name"));
+            wsd.setConfigFile(getOptionalChildContent(wsdEl, "config-file"));
+            wsd.setWsdlPublishLocation(getOptionalChildContent(wsdEl, "wsdl-publish-location"));
+            webservices.getWebserviceDescriptions().add(wsd);
          }
       }
+
       // update the enterprise beans
       Element entBeans = getOptionalChild(element, "enterprise-beans");
       if (entBeans != null)
@@ -1085,8 +1048,73 @@
    {
       this.assemblyDescriptor.mergeSecurityRoles(applRoles);
    }
+
+   public static class Webservices
+   {
+      private String contextRoot;
+      private List<WebserviceDescription> webserviceDescriptions = new ArrayList<WebserviceDescription>();
+
+      public String getContextRoot()
+      {
+         return contextRoot;
+      }
+
+      public void setContextRoot(String contextRoot)
+      {
+         this.contextRoot = contextRoot;
+      }
+
+      public List<WebserviceDescription> getWebserviceDescriptions()
+      {
+         return webserviceDescriptions;
+      }
+   }
+
+   public static class WebserviceDescription
+   {
+      private String descriptionName;
+      private String configName;
+      private String configFile;
+      private String wsdlPublishLocation;
+
+      public String getConfigFile()
+      {
+         return configFile;
+      }
+
+      public void setConfigFile(String configFile)
+      {
+         this.configFile = configFile;
+      }
+
+      public String getConfigName()
+      {
+         return configName;
+      }
+
+      public void setConfigName(String configName)
+      {
+         this.configName = configName;
+      }
+
+      public String getDescriptionName()
+      {
+         return descriptionName;
+      }
+
+      public void setDescriptionName(String descriptionName)
+      {
+         this.descriptionName = descriptionName;
+      }
+
+      public String getWsdlPublishLocation()
+      {
+         return wsdlPublishLocation;
+      }
+
+      public void setWsdlPublishLocation(String wsdlPublishLocation)
+      {
+         this.wsdlPublishLocation = wsdlPublishLocation;
+      }
+   }
 }
-
-/*
- vim:ts=3:sw=3:et
- */




More information about the jboss-cvs-commits mailing list