[jboss-cvs] JBossAS SVN: r61109 - in branches/tdiesler/trunk: server and 1 other directories.

jboss-cvs-commits at lists.jboss.org jboss-cvs-commits at lists.jboss.org
Mon Mar 5 18:02:57 EST 2007


Author: thomas.diesler at jboss.com
Date: 2007-03-05 18:02:57 -0500 (Mon, 05 Mar 2007)
New Revision: 61109

Modified:
   branches/tdiesler/trunk/ejb3/src/main/org/jboss/injection/ServiceRefInjector.java
   branches/tdiesler/trunk/server/.classpath
   branches/tdiesler/trunk/server/build.xml
   branches/tdiesler/trunk/server/src/main/org/jboss/metadata/serviceref/HandlerChainMetaData.java
   branches/tdiesler/trunk/server/src/main/org/jboss/metadata/serviceref/HandlerChainsMetaData.java
   branches/tdiesler/trunk/server/src/main/org/jboss/metadata/serviceref/HandlerMetaData.java
   branches/tdiesler/trunk/server/src/main/org/jboss/metadata/serviceref/InitParamMetaData.java
   branches/tdiesler/trunk/server/src/main/org/jboss/metadata/serviceref/PortComponentRefMetaData.java
   branches/tdiesler/trunk/server/src/main/org/jboss/metadata/serviceref/ServiceRefHandler.java
   branches/tdiesler/trunk/server/src/main/org/jboss/metadata/serviceref/ServiceRefMetaData.java
Log:
partial commit

Modified: branches/tdiesler/trunk/ejb3/src/main/org/jboss/injection/ServiceRefInjector.java
===================================================================
--- branches/tdiesler/trunk/ejb3/src/main/org/jboss/injection/ServiceRefInjector.java	2007-03-05 22:09:31 UTC (rev 61108)
+++ branches/tdiesler/trunk/ejb3/src/main/org/jboss/injection/ServiceRefInjector.java	2007-03-05 23:02:57 UTC (rev 61109)
@@ -25,17 +25,13 @@
 
 import java.lang.reflect.AnnotatedElement;
 
-import javax.management.MBeanServer;
-import javax.management.ObjectName;
 import javax.naming.Context;
-import javax.naming.NamingException;
 import javax.xml.ws.WebServiceException;
 
 import org.jboss.logging.Logger;
+import org.jboss.metadata.serviceref.ServiceRefHandler;
+import org.jboss.metadata.serviceref.ServiceRefHandlerFactory;
 import org.jboss.metadata.serviceref.ServiceRefMetaData;
-import org.jboss.mx.util.MBeanProxy;
-import org.jboss.mx.util.MBeanServerLocator;
-import org.jboss.mx.util.ObjectNameFactory;
 import org.jboss.virtual.VirtualFile;
 
 /**
@@ -53,13 +49,6 @@
 
    private ServiceRefMetaData sref;
 
-   // The ServiceRefHandlerMBean interface is duplicated here to avoid a binary dependency on JBossWS
-   public interface ServiceRefHandlerMBean
-   {
-      ObjectName OBJECT_NAME = ObjectNameFactory.create("jboss.ws:service=ServiceRefHandler");
-      void setupServiceRef(Context encCtx, String encName, AnnotatedElement anElement, VirtualFile vfsRoot, ServiceRefMetaData sref) throws NamingException;
-   }
-
    public ServiceRefInjector(String name, AnnotatedElement anElement, ServiceRefMetaData sref)
    {
       this.name = name;
@@ -74,12 +63,9 @@
          Context encCtx = container.getEnc();
          VirtualFile vfsRoot = container.getRootFile();
 
-         // Decoupled invocation to JBossWS 
-         MBeanServer server = MBeanServerLocator.locateJBoss();
-         ObjectName oname = ServiceRefHandlerMBean.OBJECT_NAME;
-         ServiceRefHandlerMBean handler = (ServiceRefHandlerMBean)MBeanProxy.get(ServiceRefHandlerMBean.class, oname, server);
-         handler.setupServiceRef(encCtx, name, anElement, vfsRoot, sref);
-         
+         ServiceRefHandler factory = ServiceRefHandlerFactory.newInstance();
+         factory.setupServiceRef(encCtx, name, anElement, vfsRoot, sref.toXMLFragmet());
+
          log.debug("ServiceRef bound [env=" + name + "]");
       }
       catch (Exception e)

Modified: branches/tdiesler/trunk/server/.classpath
===================================================================
--- branches/tdiesler/trunk/server/.classpath	2007-03-05 22:09:31 UTC (rev 61108)
+++ branches/tdiesler/trunk/server/.classpath	2007-03-05 23:02:57 UTC (rev 61109)
@@ -35,5 +35,6 @@
 	<classpathentry kind="lib" path="/thirdparty/jboss/jbossws/lib/jboss-jaxrpc.jar"/>
 	<classpathentry kind="lib" path="/thirdparty/jboss/jbossws/lib/jboss-saaj.jar"/>
 	<classpathentry kind="lib" path="/thirdparty/jboss/jboss-vfs/lib/jboss-vfs.jar" sourcepath="/thirdparty/jboss/jboss-vfs/lib/jboss-vfs-sources.jar"/>
+	<classpathentry kind="lib" path="/thirdparty/dom4j/lib/dom4j.jar"/>
 	<classpathentry kind="output" path="output/eclipse-classes"/>
 </classpath>

Modified: branches/tdiesler/trunk/server/build.xml
===================================================================
--- branches/tdiesler/trunk/server/build.xml	2007-03-05 22:09:31 UTC (rev 61108)
+++ branches/tdiesler/trunk/server/build.xml	2007-03-05 23:02:57 UTC (rev 61109)
@@ -78,6 +78,7 @@
       <path refid="apache.commons.classpath"/>
       <path refid="apache.log4j.classpath"/>
       <path refid="apache.xerces.classpath"/>
+      <path refid="dom4j.dom4j.classpath"/>
       <path refid="gjt.jpl-util.classpath"/>
       <path refid="gnu.getopt.classpath"/>
       <path refid="ibm.wsdl4j.classpath"/>

Modified: branches/tdiesler/trunk/server/src/main/org/jboss/metadata/serviceref/HandlerChainMetaData.java
===================================================================
--- branches/tdiesler/trunk/server/src/main/org/jboss/metadata/serviceref/HandlerChainMetaData.java	2007-03-05 22:09:31 UTC (rev 61108)
+++ branches/tdiesler/trunk/server/src/main/org/jboss/metadata/serviceref/HandlerChainMetaData.java	2007-03-05 23:02:57 UTC (rev 61109)
@@ -27,6 +27,9 @@
 import java.util.ArrayList;
 import java.util.List;
 
+import org.dom4j.DocumentHelper;
+import org.dom4j.Element;
+
 /** The unified metdata data for a handler chain element
  * 
  * @author Thomas.Diesler at jboss.org
@@ -72,4 +75,18 @@
    {
       handlers.add(handler);
    }
+   
+   Element toXMLFragment()
+   {
+      Element root = DocumentHelper.createElement("handler-chain");
+      if (serviceNamePattern != null)
+         root.addElement("service-name-pattern").addText(serviceNamePattern);
+      if (portNamePattern != null)
+         root.addElement("port-name-pattern").addText(portNamePattern);
+      if (protocolBindings != null)
+         root.addElement("protocol-bindings").addText(protocolBindings);
+      for (HandlerMetaData handler : getHandlers())
+         root.add(handler.toXMLFragment());
+      return root;
+   }
 }

Modified: branches/tdiesler/trunk/server/src/main/org/jboss/metadata/serviceref/HandlerChainsMetaData.java
===================================================================
--- branches/tdiesler/trunk/server/src/main/org/jboss/metadata/serviceref/HandlerChainsMetaData.java	2007-03-05 22:09:31 UTC (rev 61108)
+++ branches/tdiesler/trunk/server/src/main/org/jboss/metadata/serviceref/HandlerChainsMetaData.java	2007-03-05 23:02:57 UTC (rev 61109)
@@ -27,6 +27,11 @@
 import java.util.ArrayList;
 import java.util.List;
 
+import javax.xml.namespace.QName;
+
+import org.dom4j.DocumentHelper;
+import org.dom4j.Element;
+
 /** The unified metdata data for a handler chains element
  * 
  * @author Thomas.Diesler at jboss.org
@@ -44,4 +49,12 @@
    {
       handlerChains.add(handlerChain);
    }
+
+   Element toXMLFragment()
+   {
+      Element root = DocumentHelper.createElement("handler-chains");
+      for (HandlerChainMetaData handlerChain : getHandlerChains())
+         root.add(handlerChain.toXMLFragment());
+      return root;
+   }
 }

Modified: branches/tdiesler/trunk/server/src/main/org/jboss/metadata/serviceref/HandlerMetaData.java
===================================================================
--- branches/tdiesler/trunk/server/src/main/org/jboss/metadata/serviceref/HandlerMetaData.java	2007-03-05 22:09:31 UTC (rev 61108)
+++ branches/tdiesler/trunk/server/src/main/org/jboss/metadata/serviceref/HandlerMetaData.java	2007-03-05 23:02:57 UTC (rev 61109)
@@ -23,15 +23,15 @@
 
 // $Id$
 
-import org.jboss.metadata.MetaData;
-import org.jboss.xb.QNameBuilder;
-import org.w3c.dom.Element;
+import java.io.Serializable;
+import java.util.ArrayList;
+import java.util.List;
 
 import javax.xml.namespace.QName;
-import java.util.ArrayList;
-import java.util.Iterator;
-import java.io.Serializable;
 
+import org.dom4j.DocumentHelper;
+import org.dom4j.Element;
+
 /** The unified metdata data for a handler element
  * 
  * @author Thomas.Diesler at jboss.org
@@ -39,20 +39,18 @@
  */
 public class HandlerMetaData implements Serializable
 {
-   static final long serialVersionUID = 8749727542255024909L;
-
    // The required <handler-name> element
    private String handlerName;
    // The required <handler-class> element
    private String handlerClass;
    // The optional <init-param> elements
-   private ArrayList initParams = new ArrayList();
+   private List<InitParamMetaData> initParams = new ArrayList<InitParamMetaData>();
    // The optional <soap-header> elements
-   private ArrayList soapHeaders = new ArrayList();
+   private List<QName> soapHeaders = new ArrayList<QName>();
    // The optional <soap-role> elements
-   private ArrayList soapRoles = new ArrayList();
+   private List<String> soapRoles = new ArrayList<String>();
    // The optional <port-name> elements, these only apply to webserve clients
-   private ArrayList portNames = new ArrayList();
+   private List<String> portNames = new ArrayList<String>();
 
    public void setHandlerName(String value)
    {
@@ -79,11 +77,9 @@
       initParams.add(param);
    }
 
-   public InitParamMetaData[] getInitParams()
+   public List<InitParamMetaData> getInitParams()
    {
-      InitParamMetaData[] array = new InitParamMetaData[initParams.size()];
-      initParams.toArray(array);
-      return array;
+      return initParams;
    }
 
    public void addSoapHeader(QName qName)
@@ -91,11 +87,9 @@
       soapHeaders.add(qName);
    }
 
-   public QName[] getSoapHeaders()
+   public List<QName> getSoapHeaders()
    {
-      QName[] array = new QName[soapHeaders.size()];
-      soapHeaders.toArray(array);
-      return array;
+      return soapHeaders;
    }
 
    public void addSoapRole(String value)
@@ -103,18 +97,14 @@
       soapRoles.add(value);
    }
 
-   public String[] getSoapRoles()
+   public List<String> getSoapRoles()
    {
-      String[] array = new String[soapRoles.size()];
-      soapRoles.toArray(array);
-      return array;
+      return soapRoles;
    }
 
-   public String[] getPortNames()
+   public List<String> getPortNames()
    {
-      String[] array = new String[portNames.size()];
-      portNames.toArray(array);
-      return array;
+      return portNames;
    }
 
    public void addPortName(String value)
@@ -122,61 +112,23 @@
       portNames.add(value);
    }
 
-   public void importStandardXml(Element element)
+   Element toXMLFragment()
    {
-      handlerName = MetaData.getUniqueChildContent(element, "handler-name");
-
-      handlerClass = MetaData.getUniqueChildContent(element, "handler-class");
-
-      // Parse the init-param elements
-      Iterator iterator = MetaData.getChildrenByTagName(element, "init-param");
-      while (iterator.hasNext())
+      Element root = DocumentHelper.createElement("handler");
+      root.addElement("handler-name").addText(handlerName);
+      root.addElement("handler-class").addText(handlerClass);
+      for (InitParamMetaData param : getInitParams())
       {
-         Element paramElement = (Element)iterator.next();
-         InitParamMetaData param = new InitParamMetaData();
-         param.setParamName(MetaData.getUniqueChildContent(paramElement, "param-name"));
-         param.setParamValue(MetaData.getUniqueChildContent(paramElement, "param-value"));
-         initParams.add(param);
+         Element paramEl = root.addElement("init-param");
+         paramEl.addElement("param-name").addText(param.getParamName());
+         paramEl.addElement("param-value").addText(param.getParamValue());
       }
-
-      // Parse the soap-header elements
-      iterator = MetaData.getChildrenByTagName(element, "soap-header");
-      while (iterator.hasNext())
-      {
-         Element headerElement = (Element)iterator.next();
-         String content = MetaData.getElementContent(headerElement);
-         QName qname = QNameBuilder.buildQName(headerElement, content);
-         soapHeaders.add(qname);
-      }
-
-      // Parse the soap-role elements
-      iterator = MetaData.getChildrenByTagName(element, "soap-role");
-      while (iterator.hasNext())
-      {
-         Element roleElement = (Element)iterator.next();
-         String content = MetaData.getElementContent(roleElement);
-         soapRoles.add(content);
-      }
-
-      // Parse the port-name elements
-      iterator = MetaData.getChildrenByTagName(element, "port-name");
-      while (iterator.hasNext())
-      {
-         Element portElement = (Element)iterator.next();
-         String content = MetaData.getElementContent(portElement);
-         portNames.add(content);
-      }
+      for (QName soapHeader : getSoapHeaders())
+         root.addElement("soap-header").addText(soapHeader.toString());
+      for (String soapRole : getSoapRoles())
+         root.addElement("soap-role").addText(soapRole);
+      for (String portName : getPortNames())
+         root.addElement("port-name").addText(portName);
+      return root;
    }
-
-   public String toString()
-   {
-      StringBuffer buffer = new StringBuffer("\nHandlerMetaData:");
-      buffer.append("\n name=" + handlerName);
-      buffer.append("\n class=" + handlerClass);
-      buffer.append("\n params=" + initParams);
-      buffer.append("\n headers=" + soapHeaders);
-      buffer.append("\n roles=" + soapRoles);
-      buffer.append("\n ports=" + portNames);
-      return buffer.toString();
-   }
 }

Modified: branches/tdiesler/trunk/server/src/main/org/jboss/metadata/serviceref/InitParamMetaData.java
===================================================================
--- branches/tdiesler/trunk/server/src/main/org/jboss/metadata/serviceref/InitParamMetaData.java	2007-03-05 22:09:31 UTC (rev 61108)
+++ branches/tdiesler/trunk/server/src/main/org/jboss/metadata/serviceref/InitParamMetaData.java	2007-03-05 23:02:57 UTC (rev 61109)
@@ -26,19 +26,14 @@
 import java.io.Serializable;
 
 /**
- * XML Binding and ws4ee meta-data element for
- * <code>webservices/webservice-description/port-component/handler/init-param</code>
- *
  * @author Thomas.Diesler at jboss.org
  * @since 06-May-2004
  */
 public class InitParamMetaData implements Serializable
 {
-   static final long serialVersionUID = 849652901282654531L;
-   
-   // The required <handler-name> element
+   // The required <param-name> element
    private String paramName;
-   // The required <handler-class> element
+   // The required <param-value> element
    private String paramValue;
 
    public String getParamName()

Modified: branches/tdiesler/trunk/server/src/main/org/jboss/metadata/serviceref/PortComponentRefMetaData.java
===================================================================
--- branches/tdiesler/trunk/server/src/main/org/jboss/metadata/serviceref/PortComponentRefMetaData.java	2007-03-05 22:09:31 UTC (rev 61108)
+++ branches/tdiesler/trunk/server/src/main/org/jboss/metadata/serviceref/PortComponentRefMetaData.java	2007-03-05 23:02:57 UTC (rev 61109)
@@ -24,20 +24,17 @@
 // $Id$
 
 import java.io.Serializable;
-import java.util.Iterator;
 import java.util.Properties;
 
-import org.jboss.metadata.MetaData;
-import org.w3c.dom.Element;
+import org.dom4j.DocumentHelper;
+import org.dom4j.Element;
 
 /** The metdata data from service-ref/port-component-ref element in web.xml, ejb-jar.xml, and application-client.xml.
  *
  * @author Thomas.Diesler at jboss.org
- * @version $Revision$
  */
 public class PortComponentRefMetaData implements Serializable
 {
-   static final long serialVersionUID = 3856598615591044263L;
    // The parent service-ref
    private ServiceRefMetaData serviceRefMetaData;
 
@@ -95,7 +92,7 @@
    {
       return serviceEndpointInterface;
    }
-   
+
    public void setServiceEndpointInterface(String serviceEndpointInterface)
    {
       this.serviceEndpointInterface = serviceEndpointInterface;
@@ -105,7 +102,7 @@
    {
       return callProperties;
    }
-   
+
    public void setCallProperties(Properties props)
    {
       callProperties = props;
@@ -116,23 +113,14 @@
       callProperties.setProperty(name, value);
    }
 
-   public void importStandardXml(Element element)
+   Element toXMLFragment()
    {
-      serviceEndpointInterface = MetaData.getUniqueChildContent(element, "service-endpoint-interface");
-      portComponentLink = MetaData.getOptionalChildContent(element, "port-component-link");
+      Element root = DocumentHelper.createElement("port-component-ref");
+      root.addElement("service-endpoint-interface").addText(serviceEndpointInterface);
+      if (enableMTOM != null)
+         root.addElement("enable-mtom").addText(enableMTOM.toString());
+      if (portComponentLink != null)
+         root.addElement("port-component-link").addText(portComponentLink);
+      return root;
    }
-
-   public void importJBossXml(Element element)
-   {
-      // Look for call-property elements
-      Iterator iterator = MetaData.getChildrenByTagName(element, "call-property");
-      while (iterator.hasNext())
-      {
-         Element propElement = (Element)iterator.next();
-         String name = MetaData.getUniqueChildContent(propElement, "prop-name");
-         String value = MetaData.getUniqueChildContent(propElement, "prop-value");
-         callProperties.setProperty(name, value);
-      }
-
-   }
 }

Modified: branches/tdiesler/trunk/server/src/main/org/jboss/metadata/serviceref/ServiceRefHandler.java
===================================================================
--- branches/tdiesler/trunk/server/src/main/org/jboss/metadata/serviceref/ServiceRefHandler.java	2007-03-05 22:09:31 UTC (rev 61108)
+++ branches/tdiesler/trunk/server/src/main/org/jboss/metadata/serviceref/ServiceRefHandler.java	2007-03-05 23:02:57 UTC (rev 61109)
@@ -23,15 +23,15 @@
 
 // $Id$
 
-import java.util.Iterator;
+import java.lang.reflect.AnnotatedElement;
 
 import javax.naming.Context;
+import javax.naming.NamingException;
 
-import org.jboss.deployers.spi.DeploymentException;
-import org.jboss.deployers.spi.deployer.DeploymentUnit;
+import org.jboss.virtual.VirtualFile;
 
 /**
- * Implemtent to bind JAXRPC ServiceRefs
+ * Implemtent to bind web service ref
  * 
  * @author Thomas.Diesler at jboss.org
  * @since 05-May-2004
@@ -39,12 +39,7 @@
 public interface ServiceRefHandler
 {
    /**
-    * Binds a JAXRPC Service into the callers ENC for every service-ref element
-    *
-    * @param envCtx      ENC to bind the javax.rpc.xml.Service object to
-    * @param serviceRefs An iterator of the service-ref elements in the client deployment descriptor
-    * @param unit  The client's deployment unit
-    * @throws DeploymentException if it goes wrong
+    * Binds a Service into the callers ENC for every service-ref element
     */
-   void bindServiceRefs(Context envCtx, Iterator serviceRefs, DeploymentUnit unit);
+   void setupServiceRef(Context encCtx, String encName, AnnotatedElement anElement, VirtualFile vfsRoot, String xmlFragment) throws NamingException;
 }

Modified: branches/tdiesler/trunk/server/src/main/org/jboss/metadata/serviceref/ServiceRefMetaData.java
===================================================================
--- branches/tdiesler/trunk/server/src/main/org/jboss/metadata/serviceref/ServiceRefMetaData.java	2007-03-05 22:09:31 UTC (rev 61108)
+++ branches/tdiesler/trunk/server/src/main/org/jboss/metadata/serviceref/ServiceRefMetaData.java	2007-03-05 23:02:57 UTC (rev 61109)
@@ -27,7 +27,6 @@
 import java.net.MalformedURLException;
 import java.net.URL;
 import java.util.ArrayList;
-import java.util.Iterator;
 import java.util.LinkedHashMap;
 import java.util.List;
 import java.util.Map;
@@ -35,74 +34,78 @@
 
 import javax.xml.namespace.QName;
 
+import org.dom4j.Document;
+import org.dom4j.DocumentHelper;
+import org.dom4j.Element;
 import org.jboss.logging.Logger;
-import org.jboss.metadata.MetaData;
 import org.jboss.metadata.Ref;
-import org.jboss.xb.QNameBuilder;
-import org.w3c.dom.DocumentType;
-import org.w3c.dom.Element;
 
-/** The metdata data from service-ref element in web.xml, ejb-jar.xml, and
+/**
+ * The metdata data from service-ref element in web.xml, ejb-jar.xml, and
  * application-client.xml.
- *
+ * 
  * @author Thomas.Diesler at jboss.org
  * @version $Revision$
  */
 public class ServiceRefMetaData extends Ref implements Serializable
 {
-   private static final long serialVersionUID = -3723577995017108437L;
-
    // provide logging
    private static Logger log = Logger.getLogger(ServiceRefMetaData.class);
 
    // The required <service-ref-name> element
    private String serviceRefName;
+
    // The required <service-interface> element
    private String serviceInterface;
+
    // service-res-type
    private String serviceRefType;
+
    // The optional <wsdl-file> element
    private String wsdlFile;
+
    // The optional <jaxrpc-mapping-file> element
    private String mappingFile;
+
    // The optional <service-qname> element
    private QName serviceQName;
-   // The LinkedHashMap<String, PortComponentRefMetaData> for <port-component-ref> elements
+
+   // The LinkedHashMap<String, PortComponentRefMetaData> for
+   // <port-component-ref> elements
    private Map<String, PortComponentRefMetaData> portComponentRefs = new LinkedHashMap<String, PortComponentRefMetaData>();
+
    // The optional <handler> elements
    private List<HandlerMetaData> handlers = new ArrayList<HandlerMetaData>();
+
    // The optional <handler-chains> elements
    private HandlerChainsMetaData handlerChains;
 
    // The optional JBossWS config-name
    private String configName;
+
    // The optional JBossWS config-file
    private String configFile;
+
    /** The URL of the actual WSDL to use, <wsdl-override> */
    private URL wsdlOverride;
+
    /** Arbitrary proxy properties given by <call-property> */
    private Properties callProperties;
 
-   /** Default constructor, used when unmarshalling on the client side
+   /**
+    * Default constructor, used when unmarshalling on the client side
     */
    public ServiceRefMetaData()
    {
    }
 
-   /** Constructor with a given service ref name
-    */
-   public ServiceRefMetaData(String serviceRefName)
-   {
-      this.serviceRefName = serviceRefName;
-   }
-
    public void merge(ServiceRefMetaData sourceRef)
    {
       configName = sourceRef.configName;
       configFile = sourceRef.configFile;
       wsdlOverride = sourceRef.wsdlOverride;
       callProperties = sourceRef.getCallProperties();
-      
+
       for (PortComponentRefMetaData pcSourceRef : sourceRef.getPortComponentRefs())
       {
          String seiName = pcSourceRef.getServiceEndpointInterface();
@@ -111,7 +114,7 @@
             log.warn("Illegal service endpoint interface: " + seiName);
             continue;
          }
-         
+
          PortComponentRefMetaData pcTargetRef = portComponentRefs.get(seiName);
          if (pcTargetRef == null)
          {
@@ -119,11 +122,11 @@
             addPortComponentRef(pcSourceRef);
             pcTargetRef = pcSourceRef;
          }
-         
+
          pcTargetRef.setCallProperties(pcSourceRef.getCallProperties());
       }
    }
-   
+
    public String getMappingFile()
    {
       return mappingFile;
@@ -140,30 +143,28 @@
       portComponentRefs.values().toArray(array);
       return array;
    }
-   
+
    public PortComponentRefMetaData getPortComponentRef(String seiName)
    {
       PortComponentRefMetaData ref = portComponentRefs.get(seiName);
       return ref;
    }
-   
+
    public void addPortComponentRef(PortComponentRefMetaData pcRef)
    {
       portComponentRefs.put(pcRef.getServiceEndpointInterface(), pcRef);
    }
 
-   public HandlerMetaData[] getHandlers()
+   public List<HandlerMetaData> getHandlers()
    {
-      HandlerMetaData[] array = new HandlerMetaData[handlers.size()];
-      handlers.toArray(array);
-      return array;
+      return handlers;
    }
 
    public void addHandler(HandlerMetaData handler)
    {
       handlers.add(handler);
    }
-   
+
    public String getServiceInterface()
    {
       return serviceInterface;
@@ -238,7 +239,7 @@
    {
       return wsdlOverride;
    }
-   
+
    public void setWsdlOverride(String wsdlOverride)
    {
       try
@@ -266,114 +267,26 @@
       this.handlerChains = handlerChains;
    }
 
-   public static boolean isValidDoctype(Element element)
+   public String toXMLFragmet()
    {
-      // Verify J2EE-1.4
-      String nsURI = element.getOwnerDocument().getDocumentElement().getNamespaceURI();
-      boolean isValid = "http://java.sun.com/xml/ns/j2ee".equals(nsURI);
-
-      // Verify JBoss-4.0
-      DocumentType doctype = element.getOwnerDocument().getDoctype();
-      if (isValid == false && doctype != null)
-      {
-         String publicId = doctype.getPublicId();
-         isValid |= "-//JBoss//DTD JBOSS 4.0//EN".equals(publicId);
-         isValid |= "-//JBoss//DTD Web Application 2.4//EN".equals(publicId);
-         isValid |= "-//JBoss//DTD Application Client 4.0//EN".equals(publicId);
-      }
-
-      if (isValid == false)
-      {
-         String dtstr = (doctype != null ? "[public=" + doctype.getPublicId() + ",system=" + doctype.getSystemId() + "]" : null);
-         log.debug("Skip <service-ref> for: nsURI=" + nsURI + ",doctype=" + dtstr);
-      }
-      return isValid;
+      Document document = DocumentHelper.createDocument();
+      Element root = document.addElement("service-ref");
+      root.addElement("service-ref-name").addText(serviceRefName);
+      root.addElement("service-interface").addText(serviceInterface);
+      if (serviceRefType != null)
+         root.addElement("service-ref-type").addText(serviceRefType);
+      if (wsdlFile != null)
+         root.addElement("wsdl-file").addText(wsdlFile);
+      if (mappingFile != null)
+         root.addElement("jaxrpc-mapping-file").addText(mappingFile);
+      if (serviceQName != null)
+         root.addElement("service-qname").addText(serviceQName.toString());
+      for (PortComponentRefMetaData pcref : getPortComponentRefs())
+         root.add(pcref.toXMLFragment());
+      for (HandlerMetaData handler : getHandlers())
+         root.add(handler.toXMLFragment());
+      if (handlerChains != null)
+         root.add(handlerChains.toXMLFragment());
+      return root.asXML();
    }
-
-   public void importStandardXml(Element element)
-   {
-      serviceRefName = MetaData.getUniqueChildContent(element, "service-ref-name");
-
-      serviceInterface = MetaData.getUniqueChildContent(element, "service-interface");
-
-      wsdlFile = MetaData.getOptionalChildContent(element, "wsdl-file");
-
-      mappingFile = MetaData.getOptionalChildContent(element, "jaxrpc-mapping-file");
-
-      Element qnameElement = MetaData.getOptionalChild(element, "service-qname");
-      if (qnameElement != null)
-         serviceQName = QNameBuilder.buildQName(qnameElement, MetaData.getElementContent(qnameElement));
-
-      // Parse the port-component-ref elements
-      Iterator iterator = MetaData.getChildrenByTagName(element, "port-component-ref");
-      while (iterator.hasNext())
-      {
-         Element pcrefElement = (Element)iterator.next();
-         PortComponentRefMetaData pcrefMetaData = new PortComponentRefMetaData(this);
-         pcrefMetaData.importStandardXml(pcrefElement);
-         portComponentRefs.put(pcrefMetaData.getServiceEndpointInterface(), pcrefMetaData);
-      }
-
-      // Parse the handler elements
-      iterator = MetaData.getChildrenByTagName(element, "handler");
-      while (iterator.hasNext())
-      {
-         Element handlerElement = (Element)iterator.next();
-         HandlerMetaData handlerMetaData = new HandlerMetaData();
-         handlerMetaData.importStandardXml(handlerElement);
-         handlers.add(handlerMetaData);
-      }
-   }
-
-   /** Parse jboss specific service-ref child elements
-    */
-   public void importJBossXml(Element element)
-   {
-      configName = MetaData.getOptionalChildContent(element, "config-name");
-
-      configFile = MetaData.getOptionalChildContent(element, "config-file");
-      String wsdlOverrideOption = MetaData.getOptionalChildContent(element, "wsdl-override");
-      try
-      {
-         if (wsdlOverrideOption != null)
-            wsdlOverride = new URL(wsdlOverrideOption);
-      }
-      catch (MalformedURLException e)
-      {
-         throw new IllegalStateException("Invalid WSDL override: " + wsdlOverrideOption);
-      }
-
-      // Parse the port-component-ref elements
-      Iterator iterator = MetaData.getChildrenByTagName(element, "port-component-ref");
-      while (iterator.hasNext())
-      {
-         Element pcrefElement = (Element)iterator.next();
-         String name = MetaData.getOptionalChildContent(pcrefElement, "service-endpoint-interface");
-         if (name != null)
-         {
-            PortComponentRefMetaData pcrefMetaData = (PortComponentRefMetaData)portComponentRefs.get(name);
-            if (pcrefMetaData == null)
-            {
-               // Its ok to only have the <port-component-ref> in jboss.xml and not in ejb-jar.xml
-               pcrefMetaData = new PortComponentRefMetaData(this);
-               pcrefMetaData.importStandardXml(pcrefElement);
-               portComponentRefs.put(pcrefMetaData.getServiceEndpointInterface(), pcrefMetaData);
-            }
-
-            pcrefMetaData.importJBossXml(pcrefElement);
-         }
-      }
-
-      // Parse the call-property elements
-      iterator = MetaData.getChildrenByTagName(element, "call-property");
-      while (iterator.hasNext())
-      {
-         Element propElement = (Element)iterator.next();
-         String name = MetaData.getUniqueChildContent(propElement, "prop-name");
-         String value = MetaData.getUniqueChildContent(propElement, "prop-value");
-         if (callProperties == null)
-            callProperties = new Properties();
-         callProperties.setProperty(name, value);
-      }
-   }
 }




More information about the jboss-cvs-commits mailing list