[jboss-cvs] JBossAS SVN: r60839 - in trunk: ejb3/src/main/org/jboss/ejb3/metamodel and 13 other directories.

jboss-cvs-commits at lists.jboss.org jboss-cvs-commits at lists.jboss.org
Fri Feb 23 09:07:05 EST 2007


Author: thomas.diesler at jboss.com
Date: 2007-02-23 09:07:05 -0500 (Fri, 23 Feb 2007)
New Revision: 60839

Added:
   trunk/server/src/main/org/jboss/metamodel/descriptor/WebServiceRefMetaData.java
   trunk/server/src/resources/dtd/webservice-ref_5_0.dtd
Removed:
   trunk/server/src/main/org/jboss/metamodel/descriptor/ServiceRef.java
   trunk/server/src/resources/dtd/service-ref_5_0.dtd
Modified:
   trunk/ejb3/.classpath
   trunk/ejb3/src/main/org/jboss/ejb3/metamodel/EjbJarDDObjectFactory.java
   trunk/ejb3/src/main/org/jboss/ejb3/metamodel/EnterpriseBeans.java
   trunk/ejb3/src/main/org/jboss/ejb3/metamodel/Injectable.java
   trunk/ejb3/src/main/org/jboss/ejb3/metamodel/JBossClientDDObjectFactory.java
   trunk/ejb3/src/main/org/jboss/ejb3/metamodel/JBossDDObjectFactory.java
   trunk/ejb3/src/main/org/jboss/injection/WebServiceRefHandler.java
   trunk/ejb3/src/main/org/jboss/injection/WebServiceRefInjector.java
   trunk/server/src/main/org/jboss/deployment/ClientDeployer.java
   trunk/server/src/main/org/jboss/deployment/EjbJarObjectFactory.java
   trunk/server/src/main/org/jboss/deployment/JBossEjbObjectFactory.java
   trunk/server/src/main/org/jboss/ejb/Container.java
   trunk/server/src/main/org/jboss/metadata/BeanMetaData.java
   trunk/server/src/main/org/jboss/metadata/DDObjectFactory.java
   trunk/server/src/main/org/jboss/metadata/WebMetaData.java
   trunk/server/src/main/org/jboss/metadata/web/JBossWebMetaDataObjectFactory.java
   trunk/server/src/main/org/jboss/metadata/web/WebMetaDataObjectFactory.java
   trunk/server/src/main/org/jboss/metamodel/descriptor/DDObjectFactory.java
   trunk/server/src/main/org/jboss/metamodel/descriptor/EnvironmentRefGroup.java
   trunk/server/src/main/org/jboss/metamodel/descriptor/PortInfo.java
   trunk/server/src/main/org/jboss/web/AbstractWebDeployer.java
   trunk/server/src/main/org/jboss/web/deployers/AbstractWarDeployer.java
   trunk/server/src/main/org/jboss/web/deployers/AbstractWarDeployment.java
   trunk/server/src/main/org/jboss/webservice/ServiceRefHandler.java
   trunk/server/src/main/org/jboss/webservice/metadata/serviceref/HandlerMetaData.java
   trunk/server/src/main/org/jboss/webservice/metadata/serviceref/PortComponentRefMetaData.java
   trunk/server/src/main/org/jboss/webservice/metadata/serviceref/ServiceRefMetaData.java
   trunk/server/src/resources/dtd/jboss-client_5_0.dtd
   trunk/server/src/resources/dtd/jboss-web_5_0.dtd
   trunk/server/src/resources/dtd/jboss_5_0.dtd
   trunk/tomcat/src/main/org/jboss/web/metamodel/descriptor/JBossWebDDObjectFactory.java
   trunk/tomcat/src/main/org/jboss/web/tomcat/tc6/deployers/TomcatDeployment.java
Log:
Fix <service-ref> handling

Modified: trunk/ejb3/.classpath
===================================================================
--- trunk/ejb3/.classpath	2007-02-23 13:21:39 UTC (rev 60838)
+++ trunk/ejb3/.classpath	2007-02-23 14:07:05 UTC (rev 60839)
@@ -1,51 +1,6 @@
 <?xml version="1.0" encoding="UTF-8"?>
 <classpath>
 	<classpathentry kind="src" path="src/main"/>
-	<classpathentry kind="src" path="docs/tutorial/ssl/src"/>
-	<classpathentry excluding="org/jboss/ejb3/test/clusteredentity/|org/jboss/ejb3/test/clusteredsession/" kind="src" output="output/eclipse-test-classes" path="src/test"/>
-	<classpathentry kind="src" path="docs/embedded-tutorial/advanced-deployment/archive/src"/>
-	<classpathentry kind="src" path="docs/embedded-tutorial/advanced-deployment/archive-by-resource/src"/>
-	<classpathentry kind="src" path="docs/embedded-tutorial/advanced-deployment/deploy-dir/src"/>
-	<classpathentry kind="src" path="docs/embedded-tutorial/advanced-deployment/deploy-dir-by-resource/src"/>
-	<classpathentry kind="src" path="docs/embedded-tutorial/advanced-deployment/microcontainer-deployment/src"/>
-	<classpathentry kind="src" path="docs/embedded-tutorial/embedded-war/src"/>
-	<classpathentry kind="src" path="docs/embedded-tutorial/mdb-standalone/src"/>
-	<classpathentry kind="src" path="docs/embedded-tutorial/simple-deployment/src"/>
-	<classpathentry kind="src" path="docs/embedded-tutorial/test-with-junit/src"/>
-	<classpathentry kind="src" path="docs/tutorial/consumer_deployment_descriptor/src"/>
-	<classpathentry kind="src" path="docs/tutorial/ejb21_client_adaptors/src"/>
-	<classpathentry kind="src" path="docs/tutorial/extended_pc/src"/>
-	<classpathentry kind="src" path="docs/tutorial/jboss_deployment_descriptor/src"/>
-	<classpathentry kind="src" path="docs/tutorial/packaging/src"/>
-	<classpathentry kind="src" path="docs/tutorial/service_deployment_descriptor/src"/>
-	<classpathentry kind="src" path="docs/tutorial/clusteredentity/src"/>
-	<classpathentry kind="src" path="docs/tutorial/asynch/src"/>
-	<classpathentry kind="src" path="docs/tutorial/blob/src"/>
-	<classpathentry kind="src" path="docs/tutorial/callbacks/src"/>
-	<classpathentry kind="src" path="docs/tutorial/clustering/src"/>
-	<classpathentry kind="src" path="docs/tutorial/composite/src"/>
-	<classpathentry kind="src" path="docs/tutorial/consumer/src"/>
-	<classpathentry kind="src" path="docs/tutorial/dependent/src"/>
-	<classpathentry kind="src" path="docs/tutorial/ear/src"/>
-	<classpathentry kind="src" path="docs/tutorial/entity/src"/>
-	<classpathentry kind="src" path="docs/tutorial/injection/src"/>
-	<classpathentry kind="src" path="docs/tutorial/interceptor/src"/>
-	<classpathentry kind="src" path="docs/tutorial/jndibinding/src"/>
-	<classpathentry kind="src" path="docs/tutorial/joininheritance/src"/>
-	<classpathentry kind="src" path="docs/tutorial/mdb/src"/>
-	<classpathentry kind="src" path="docs/tutorial/mdb_deployment_descriptor/src"/>
-	<classpathentry kind="src" path="docs/tutorial/merge/src"/>
-	<classpathentry kind="src" path="docs/tutorial/relationships/src"/>
-	<classpathentry kind="src" path="docs/tutorial/secondary/src"/>
-	<classpathentry kind="src" path="docs/tutorial/security/src"/>
-	<classpathentry kind="src" path="docs/tutorial/service/src"/>
-	<classpathentry kind="src" path="docs/tutorial/singleinheritance/src"/>
-	<classpathentry kind="src" path="docs/tutorial/stateful/src"/>
-	<classpathentry kind="src" path="docs/tutorial/stateful_deployment_descriptor/src"/>
-	<classpathentry kind="src" path="docs/tutorial/stateless/src"/>
-	<classpathentry kind="src" path="docs/tutorial/stateless_deployment_descriptor/src"/>
-	<classpathentry kind="src" path="docs/tutorial/tableperinheritance/src"/>
-	<classpathentry kind="src" path="docs/tutorial/timer/src"/>
 	<classpathentry kind="src" path="/ejb3x"/>
 	<classpathentry kind="src" path="/j2ee"/>
 	<classpathentry kind="lib" path="/thirdparty/trove/lib/trove.jar"/>
@@ -93,7 +48,6 @@
 	<classpathentry kind="lib" path="/thirdparty/jboss/aop/lib/jboss-aop-jdk50.jar"/>
 	<classpathentry kind="lib" path="src/resources/test"/>
 	<classpathentry kind="lib" path="/thirdparty/jboss/jboss-vfs/lib/jboss-vfs.jar" sourcepath="/thirdparty/jboss/jboss-vfs/lib/jboss-vfs-sources.jar"/>
-	<classpathentry combineaccessrules="false" kind="src" path="/embedded"/>
 	<classpathentry kind="lib" path="/thirdparty/jboss/jbossws/lib/jboss-jaxws.jar"/>
 	<classpathentry kind="lib" path="/thirdparty/jboss/jbossws/lib/jboss-saaj.jar"/>
 	<classpathentry kind="lib" path="/thirdparty/jboss/jbossws/lib/jbossws-client.jar"/>

Modified: trunk/ejb3/src/main/org/jboss/ejb3/metamodel/EjbJarDDObjectFactory.java
===================================================================
--- trunk/ejb3/src/main/org/jboss/ejb3/metamodel/EjbJarDDObjectFactory.java	2007-02-23 13:21:39 UTC (rev 60838)
+++ trunk/ejb3/src/main/org/jboss/ejb3/metamodel/EjbJarDDObjectFactory.java	2007-02-23 14:07:05 UTC (rev 60839)
@@ -48,7 +48,7 @@
 import org.jboss.metamodel.descriptor.ResourceEnvRef;
 import org.jboss.metamodel.descriptor.ResourceRef;
 import org.jboss.metamodel.descriptor.RunAs;
-import org.jboss.metamodel.descriptor.ServiceRef;
+import org.jboss.metamodel.descriptor.WebServiceRefMetaData;
 import org.jboss.metamodel.descriptor.SecurityRole;
 import org.jboss.metamodel.descriptor.PersistenceContextRef;
 
@@ -670,7 +670,7 @@
       parent.addResourceRef(envRef);
    }
 
-   public void addChild(MessageDrivenBean parent, ServiceRef envRef, UnmarshallingContext navigator, String namespaceURI, String localName)
+   public void addChild(MessageDrivenBean parent, WebServiceRefMetaData envRef, UnmarshallingContext navigator, String namespaceURI, String localName)
    {
       parent.addServiceRef(envRef);
    }
@@ -771,7 +771,7 @@
    /**
     * Called when parsing character is complete.
     */
-   public void addChild(SessionEnterpriseBean parent, ServiceRef envRef, UnmarshallingContext navigator, String namespaceURI, String localName)
+   public void addChild(SessionEnterpriseBean parent, WebServiceRefMetaData envRef, UnmarshallingContext navigator, String namespaceURI, String localName)
    {
       parent.addServiceRef(envRef);
    }
@@ -1037,7 +1037,7 @@
    /**
     * Called when parsing character is complete.
     */
-   public void addChild(Interceptor parent, ServiceRef ref, UnmarshallingContext navigator, String namespaceURI, String localName)
+   public void addChild(Interceptor parent, WebServiceRefMetaData ref, UnmarshallingContext navigator, String namespaceURI, String localName)
    {
       parent.addServiceRef(ref);
    }

Modified: trunk/ejb3/src/main/org/jboss/ejb3/metamodel/EnterpriseBeans.java
===================================================================
--- trunk/ejb3/src/main/org/jboss/ejb3/metamodel/EnterpriseBeans.java	2007-02-23 13:21:39 UTC (rev 60838)
+++ trunk/ejb3/src/main/org/jboss/ejb3/metamodel/EnterpriseBeans.java	2007-02-23 14:07:05 UTC (rev 60839)
@@ -35,7 +35,7 @@
 import org.jboss.metamodel.descriptor.MessageDestinationRef;
 import org.jboss.metamodel.descriptor.ResourceEnvRef;
 import org.jboss.metamodel.descriptor.ResourceRef;
-import org.jboss.metamodel.descriptor.ServiceRef;
+import org.jboss.metamodel.descriptor.WebServiceRefMetaData;
 
 /**
  * Represents EJB elements of the ejb-jar.xml deployment descriptor for the 1.4
@@ -114,7 +114,7 @@
       currentEjb.mergeMessageDestinationRef(ref);
    }
    
-   public void addServiceRef(ServiceRef ref)
+   public void addServiceRef(WebServiceRefMetaData ref)
    {
       currentEjb.addServiceRef(ref);
    }

Modified: trunk/ejb3/src/main/org/jboss/ejb3/metamodel/Injectable.java
===================================================================
--- trunk/ejb3/src/main/org/jboss/ejb3/metamodel/Injectable.java	2007-02-23 13:21:39 UTC (rev 60838)
+++ trunk/ejb3/src/main/org/jboss/ejb3/metamodel/Injectable.java	2007-02-23 14:07:05 UTC (rev 60839)
@@ -31,7 +31,7 @@
 import org.jboss.metamodel.descriptor.PersistenceUnitRef;
 import org.jboss.metamodel.descriptor.ResourceEnvRef;
 import org.jboss.metamodel.descriptor.ResourceRef;
-import org.jboss.metamodel.descriptor.ServiceRef;
+import org.jboss.metamodel.descriptor.WebServiceRefMetaData;
 import org.jboss.metamodel.descriptor.PersistenceContextRef;
 
 /**
@@ -50,7 +50,7 @@
 
    Collection<ResourceRef> getResourceRefs();
 
-   Collection<ServiceRef> getServiceRefs();
+   Collection<WebServiceRefMetaData> getServiceRefs();
 
    Collection<MessageDestinationRef> getMessageDestinationRefs();
 

Modified: trunk/ejb3/src/main/org/jboss/ejb3/metamodel/JBossClientDDObjectFactory.java
===================================================================
--- trunk/ejb3/src/main/org/jboss/ejb3/metamodel/JBossClientDDObjectFactory.java	2007-02-23 13:21:39 UTC (rev 60838)
+++ trunk/ejb3/src/main/org/jboss/ejb3/metamodel/JBossClientDDObjectFactory.java	2007-02-23 14:07:05 UTC (rev 60839)
@@ -30,7 +30,7 @@
 import org.jboss.metamodel.descriptor.MessageDestinationRef;
 import org.jboss.metamodel.descriptor.ResourceEnvRef;
 import org.jboss.metamodel.descriptor.ResourceRef;
-import org.jboss.metamodel.descriptor.ServiceRef;
+import org.jboss.metamodel.descriptor.WebServiceRefMetaData;
 import org.jboss.util.xml.JBossEntityResolver;
 import org.jboss.xb.binding.JBossXBException;
 import org.jboss.xb.binding.Unmarshaller;
@@ -95,7 +95,7 @@
       dd.updateMessageDestinationRef(ref);
    }
 
-   public void addChild(ApplicationClientDD parent, ServiceRef ref, UnmarshallingContext navigator, String namespaceURI, String localName)
+   public void addChild(ApplicationClientDD parent, WebServiceRefMetaData ref, UnmarshallingContext navigator, String namespaceURI, String localName)
    {
       dd.addServiceRef(ref);
    }

Modified: trunk/ejb3/src/main/org/jboss/ejb3/metamodel/JBossDDObjectFactory.java
===================================================================
--- trunk/ejb3/src/main/org/jboss/ejb3/metamodel/JBossDDObjectFactory.java	2007-02-23 13:21:39 UTC (rev 60838)
+++ trunk/ejb3/src/main/org/jboss/ejb3/metamodel/JBossDDObjectFactory.java	2007-02-23 14:07:05 UTC (rev 60839)
@@ -47,8 +47,8 @@
 import org.jboss.metamodel.descriptor.NameValuePair;
 import org.jboss.metamodel.descriptor.ResourceEnvRef;
 import org.jboss.metamodel.descriptor.ResourceRef;
-import org.jboss.metamodel.descriptor.ServiceRef;
-import org.jboss.metamodel.descriptor.ServiceRef;
+import org.jboss.metamodel.descriptor.WebServiceRefMetaData;
+import org.jboss.metamodel.descriptor.WebServiceRefMetaData;
 
 /**
  * Represents the jboss.xml deployment descriptor for the 2.1 schema
@@ -664,7 +664,7 @@
    /**
     * Called when parsing character is complete.
     */
-   public void addChild(EnterpriseBeans parent, ServiceRef ref, UnmarshallingContext navigator, String namespaceURI, String localName)
+   public void addChild(EnterpriseBeans parent, WebServiceRefMetaData ref, UnmarshallingContext navigator, String namespaceURI, String localName)
    {
       parent.addServiceRef(ref);
    }

Modified: trunk/ejb3/src/main/org/jboss/injection/WebServiceRefHandler.java
===================================================================
--- trunk/ejb3/src/main/org/jboss/injection/WebServiceRefHandler.java	2007-02-23 13:21:39 UTC (rev 60838)
+++ trunk/ejb3/src/main/org/jboss/injection/WebServiceRefHandler.java	2007-02-23 14:07:05 UTC (rev 60839)
@@ -35,7 +35,7 @@
 
 import org.jboss.logging.Logger;
 import org.jboss.metamodel.descriptor.EnvironmentRefGroup;
-import org.jboss.metamodel.descriptor.ServiceRef;
+import org.jboss.metamodel.descriptor.WebServiceRefMetaData;
 
 /**
  * Handle @WebServiceRef annotations
@@ -45,13 +45,13 @@
 public class WebServiceRefHandler implements InjectionHandler
 {
    private static final Logger log = Logger.getLogger(WebServiceRefHandler.class);
-   private Map<String, ServiceRef> srefMap = new HashMap<String, ServiceRef>();
+   private Map<String, WebServiceRefMetaData> srefMap = new HashMap<String, WebServiceRefMetaData>();
 
    public void loadXml(EnvironmentRefGroup xml, InjectionContainer container)
    {
       if (xml == null) return;
       if (xml.getServiceRefs() == null) return;
-      for (ServiceRef sref : xml.getServiceRefs())
+      for (WebServiceRefMetaData sref : xml.getServiceRefs())
       {
          log.debug("@WebServiceRef override: " + sref);
          if (srefMap.get(sref.getServiceRefName()) != null)
@@ -88,7 +88,7 @@
       if (!container.getEncInjectors().containsKey(name))
       {
          String encName = "env/" + name;
-         ServiceRef sref = getServiceRef(name);
+         WebServiceRefMetaData sref = getServiceRef(name);
          container.getEncInjectors().put(name, new WebServiceRefInjector(encName, type, sref));
       }
    }
@@ -109,7 +109,7 @@
       Context encCtx = container.getEnc();
       if (!container.getEncInjectors().containsKey(name))
       {
-         ServiceRef sref = getServiceRef(name);
+         WebServiceRefMetaData sref = getServiceRef(name);
          container.getEncInjectors().put(name, new WebServiceRefInjector(encName, method, sref));
       }
 
@@ -129,20 +129,20 @@
       Context encCtx = container.getEnc();
       if (!container.getEncInjectors().containsKey(name))
       {
-         ServiceRef sref = getServiceRef(name);
+         WebServiceRefMetaData sref = getServiceRef(name);
          container.getEncInjectors().put(name, new WebServiceRefInjector(encName, field, sref));
       }
 
       injectors.put(field, new JndiFieldInjector(field, encName, encCtx));
    }
 
-   private ServiceRef getServiceRef(String name)
+   private WebServiceRefMetaData getServiceRef(String name)
    {
-      ServiceRef sref = srefMap.get(name);
+      WebServiceRefMetaData sref = srefMap.get(name);
       if (sref == null)
       {
          log.debug("No override for @WebServiceRef.name: " + name);
-         sref = new ServiceRef();
+         sref = new WebServiceRefMetaData();
          sref.setServiceRefName(name);
       }
       return sref;

Modified: trunk/ejb3/src/main/org/jboss/injection/WebServiceRefInjector.java
===================================================================
--- trunk/ejb3/src/main/org/jboss/injection/WebServiceRefInjector.java	2007-02-23 13:21:39 UTC (rev 60838)
+++ trunk/ejb3/src/main/org/jboss/injection/WebServiceRefInjector.java	2007-02-23 14:07:05 UTC (rev 60839)
@@ -35,7 +35,7 @@
 import javax.xml.ws.WebServiceException;
 
 import org.jboss.logging.Logger;
-import org.jboss.metamodel.descriptor.ServiceRef;
+import org.jboss.metamodel.descriptor.WebServiceRefMetaData;
 import org.jboss.mx.util.MBeanProxy;
 import org.jboss.mx.util.MBeanServerLocator;
 import org.jboss.mx.util.ObjectNameFactory;
@@ -56,7 +56,7 @@
    private String name;
    private AnnotatedElement anElement;
 
-   private ServiceRef sref;
+   private WebServiceRefMetaData sref;
 
    // The @WebServiceRef handler MBean interface
    // is duplicated here to avoid a binary dependency on JBossWS
@@ -66,7 +66,7 @@
       void setupWebServiceRef(Context encCtx, String encName, AnnotatedElement anElement, VirtualFile vfsRoot, Source metadata) throws NamingException;
    }
 
-   public WebServiceRefInjector(String name, AnnotatedElement anElement, ServiceRef sref)
+   public WebServiceRefInjector(String name, AnnotatedElement anElement, WebServiceRefMetaData sref)
    {
       this.name = name;
       this.anElement = anElement;

Modified: trunk/server/src/main/org/jboss/deployment/ClientDeployer.java
===================================================================
--- trunk/server/src/main/org/jboss/deployment/ClientDeployer.java	2007-02-23 13:21:39 UTC (rev 60838)
+++ trunk/server/src/main/org/jboss/deployment/ClientDeployer.java	2007-02-23 14:07:05 UTC (rev 60839)
@@ -272,7 +272,7 @@
       Iterator serviceRefs = metaData.getServiceReferences().values().iterator();
       ServiceRefHandler refHandler = ServiceRefHandlerFactory.newInstance();
       if (refHandler != null && serviceRefs.hasNext())
-         refHandler.setupServiceRefEnvironment(envCtx, serviceRefs, unit);
+         refHandler.bindServiceRefs(envCtx, serviceRefs, unit);
 
       // Bind resource references
       HashMap resRefs = metaData.getResourceReferences();

Modified: trunk/server/src/main/org/jboss/deployment/EjbJarObjectFactory.java
===================================================================
--- trunk/server/src/main/org/jboss/deployment/EjbJarObjectFactory.java	2007-02-23 13:21:39 UTC (rev 60838)
+++ trunk/server/src/main/org/jboss/deployment/EjbJarObjectFactory.java	2007-02-23 14:07:05 UTC (rev 60839)
@@ -469,7 +469,7 @@
    public void addChild(EntityMetaData parent, ServiceRefMetaData child,
          UnmarshallingContext navigator, String namespaceURI, String localName)
    {
-      parent.addServiceReference(child);
+      parent.addServiceRef(child);
    }
 
    public void addChild(SessionMetaData parent, SecurityIdentityMetaData child,
@@ -523,7 +523,7 @@
    public void addChild(SessionMetaData parent, ServiceRefMetaData child,
          UnmarshallingContext navigator, String namespaceURI, String localName)
    {
-      parent.addServiceReference(child);
+      parent.addServiceRef(child);
    }
 
    public void addChild(RelationMetaData relation, RelationshipRoleMetaData role,
@@ -631,7 +631,7 @@
    public void addChild(MessageDrivenMetaData parent, ServiceRefMetaData child,
          UnmarshallingContext navigator, String namespaceURI, String localName)
    {
-      parent.addServiceReference(child);
+      parent.addServiceRef(child);
    }
 
    public void addChild(MethodPermission parent, MethodMetaData child,

Modified: trunk/server/src/main/org/jboss/deployment/JBossEjbObjectFactory.java
===================================================================
--- trunk/server/src/main/org/jboss/deployment/JBossEjbObjectFactory.java	2007-02-23 13:21:39 UTC (rev 60838)
+++ trunk/server/src/main/org/jboss/deployment/JBossEjbObjectFactory.java	2007-02-23 14:07:05 UTC (rev 60839)
@@ -576,10 +576,18 @@
       ref.setJndiName(child.getJndiName());
    }
 
-   public void addChild(BeanHolder parent, ServiceRefMetaData child,
+   public void addChild(BeanHolder parent, ServiceRefMetaData sourceRef,
          UnmarshallingContext navigator, String namespaceURI, String localName)
    {
-      // TODO merge/add service-ref
+      String refName = sourceRef.getServiceRefName();
+      if (refName == null)
+         throw new IllegalStateException("Invalid service-ref-name: " + refName);
+      
+      ServiceRefMetaData targetRef = parent.metaData.getServiceRef(refName);
+      if (targetRef == null)
+         throw new IllegalStateException("Cannot find service-ref: " + refName);
+      
+      targetRef.merge(sourceRef);
    }
 
    public void addChild(InvokerMetaData parent, InvokerMetaData.EjbRef child,

Modified: trunk/server/src/main/org/jboss/ejb/Container.java
===================================================================
--- trunk/server/src/main/org/jboss/ejb/Container.java	2007-02-23 13:21:39 UTC (rev 60838)
+++ trunk/server/src/main/org/jboss/ejb/Container.java	2007-02-23 14:07:05 UTC (rev 60839)
@@ -1265,10 +1265,10 @@
       }
 
       // Bind service references
-      Iterator serviceRefs = metaData.getServiceReferences().values().iterator();
+      Iterator serviceRefs = metaData.getServiceRefs().values().iterator();
       ServiceRefHandler refHandler = ServiceRefHandlerFactory.newInstance();
       if (refHandler != null && serviceRefs.hasNext())
-         refHandler.setupServiceRefEnvironment(envCtx, serviceRefs, di);
+         refHandler.bindServiceRefs(envCtx, serviceRefs, di);
 
       // Bind resource references
       {

Modified: trunk/server/src/main/org/jboss/metadata/BeanMetaData.java
===================================================================
--- trunk/server/src/main/org/jboss/metadata/BeanMetaData.java	2007-02-23 13:21:39 UTC (rev 60838)
+++ trunk/server/src/main/org/jboss/metadata/BeanMetaData.java	2007-02-23 14:07:05 UTC (rev 60839)
@@ -28,21 +28,23 @@
 import java.util.HashMap;
 import java.util.HashSet;
 import java.util.Iterator;
+import java.util.LinkedHashMap;
 import java.util.LinkedList;
+import java.util.Map;
 import java.util.Set;
 
-import EDU.oswego.cs.dl.util.concurrent.ConcurrentReaderHashMap;
-
 import org.jboss.deployment.DeploymentException;
 import org.jboss.invocation.InvocationType;
-import org.jboss.webservice.metadata.serviceref.ServiceRefMetaData;
 import org.jboss.mx.util.ObjectNameFactory;
 import org.jboss.security.AnybodyPrincipal;
 import org.jboss.security.NobodyPrincipal;
 import org.jboss.security.SimplePrincipal;
+import org.jboss.webservice.metadata.serviceref.ServiceRefMetaData;
 import org.w3c.dom.Element;
 
+import EDU.oswego.cs.dl.util.concurrent.ConcurrentReaderHashMap;
 
+
 /**
  * A common meta data class for the entity, message-driven and session beans.
  *
@@ -115,8 +117,8 @@
    private HashMap ejbReferences = new HashMap();
    /** The ejb-local-ref element(s) info */
    private HashMap ejbLocalReferences = new HashMap();
-   /** The HashMap<ServiceRefMetaData> service-ref element(s) info */
-   private HashMap serviceReferences = new HashMap();
+   /** The HashMap<String, ServiceRefMetaData> service-ref element(s) info */
+   private Map<String, ServiceRefMetaData> serviceRefs = new LinkedHashMap<String, ServiceRefMetaData>();
    /** The security-role-ref element(s) info */
    private ArrayList<SecurityRoleRefMetaData> securityRoleReferences = new ArrayList<SecurityRoleRefMetaData>();
    /** The security-idemtity element info */
@@ -417,19 +419,21 @@
       return (MessageDestinationRefMetaData)messageDestinationReferences.get(refName);
    }
 
-   /**
-    * @return HashMap<ServiceRefMetaData>
-    */
-   public HashMap getServiceReferences()
+   public Map<String, ServiceRefMetaData> getServiceRefs()
    {
-      return serviceReferences;
+      return serviceRefs;
    }
 
-   public void addServiceReference(ServiceRefMetaData ref)
+   public ServiceRefMetaData getServiceRef(String refName)
    {
-      serviceReferences.put(ref.getServiceRefName(), ref);
+      return serviceRefs.get(refName);
    }
 
+   public void addServiceRef(ServiceRefMetaData ref)
+   {
+      serviceRefs.put(ref.getServiceRefName(), ref);
+   }
+
    public String getJndiName()
    {
       // jndiName may be set in jboss.xml
@@ -1033,9 +1037,9 @@
       this.securityRoleReferences = securityRoleReferences;
    }
 
-   public void setServiceReferences(HashMap serviceReferences)
+   public void setServiceRefs(HashMap serviceReferences)
    {
-      this.serviceReferences = serviceReferences;
+      this.serviceRefs = serviceReferences;
    }
 
    public void setTimerPersistence(boolean timerPersistence)
@@ -1118,7 +1122,7 @@
          {
             ServiceRefMetaData refMetaData = new ServiceRefMetaData();
             refMetaData.importStandardXml(serviceRef);
-            serviceReferences.put(refMetaData.getServiceRefName(), refMetaData);
+            serviceRefs.put(refMetaData.getServiceRefName(), refMetaData);
          }
       }
 
@@ -1291,7 +1295,7 @@
       {
          Element serviceRef = (Element)iterator.next();
          String serviceRefName = MetaData.getUniqueChildContent(serviceRef, "service-ref-name");
-         ServiceRefMetaData refMetaData = (ServiceRefMetaData)serviceReferences.get(serviceRefName);
+         ServiceRefMetaData refMetaData = (ServiceRefMetaData)serviceRefs.get(serviceRefName);
          if (refMetaData == null && ServiceRefMetaData.isValidDoctype(serviceRef))
          {
             throw new DeploymentException("service-ref " + serviceRefName + " found in jboss.xml but not in ejb-jar.xml");

Modified: trunk/server/src/main/org/jboss/metadata/DDObjectFactory.java
===================================================================
--- trunk/server/src/main/org/jboss/metadata/DDObjectFactory.java	2007-02-23 13:21:39 UTC (rev 60838)
+++ trunk/server/src/main/org/jboss/metadata/DDObjectFactory.java	2007-02-23 14:07:05 UTC (rev 60839)
@@ -21,26 +21,24 @@
 */ 
 package org.jboss.metadata;
 
+import javax.persistence.PersistenceContextType;
+
+import org.jboss.webservice.metadata.serviceref.HandlerMetaData;
+import org.jboss.webservice.metadata.serviceref.InitParamMetaData;
+import org.jboss.webservice.metadata.serviceref.PortComponentRefMetaData;
 import org.jboss.webservice.metadata.serviceref.ServiceRefMetaData;
 import org.jboss.xb.binding.ObjectModelFactory;
 import org.jboss.xb.binding.UnmarshallingContext;
-
-import org.jboss.logging.Logger;
 import org.xml.sax.Attributes;
 
-import javax.persistence.PersistenceContextType;
-import javax.xml.namespace.QName;
-
 /**
  * @author <a href="mailto:bdecoste at jboss.com">William DeCoste</a>
  * @author Scott.Stark at jboss.org
+ * @author Thomas.Diesler at jboss.org
  * @version <tt>$Revision: 56531 $</tt>
  */
 public abstract class DDObjectFactory implements ObjectModelFactory
 {
-   private static final Logger log = Logger
-   .getLogger(DDObjectFactory.class);
-
    public Object newChild(PersistenceUnitRef ref,
                           UnmarshallingContext navigator, String namespaceURI, String localName,
                           Attributes attrs)
@@ -101,9 +99,13 @@
                           UnmarshallingContext navigator, String namespaceURI, String localName,
                           Attributes attrs)
    {
-      return newRefChild(ref, localName);
-      //
-      
+      Object child = newRefChild(ref, localName);
+      if (localName.equals("port-component-ref"))
+         child = new PortComponentRefMetaData(ref);
+      else if (localName.equals("handler"))
+         child = new HandlerMetaData();
+
+      return child;
    }
 
    public Object newChild(JndiRef ref,
@@ -373,6 +375,7 @@
    public void setValue(ServiceRefMetaData ref, UnmarshallingContext navigator,
                         String namespaceURI, String localName, String value)
    {
+      /* Standard properties */
       if (localName.equals("service-ref-name"))
       {
          ref.setServiceRefName(getValue(localName, value));
@@ -387,8 +390,7 @@
       }
       else if (localName.equals("service-qname"))
       {
-         QName serviceQName = new QName(namespaceURI, value);
-         ref.setServiceQName(serviceQName);
+         ref.setServiceQName(navigator.resolveQName(value));
       }
       else if (localName.equals("wsdl-file"))
       {
@@ -398,12 +400,108 @@
       {
          ref.setMappingFile(getValue(localName, value));
       }
-      else if (localName.equals("mapped-name"))
+      
+      /* JBoss properties */
+      else if (localName.equals("config-name"))
       {
-         ref.setMappedName(getValue(localName, value));
+         ref.setConfigName(value);
       }
+      else if (localName.equals("config-file"))
+      {
+         ref.setConfigFile(value);
+      }
+      else if (localName.equals("wsdl-override"))
+      {
+         ref.setWsdlOverride(value);
+      }
    }
 
+   public void addChild(ServiceRefMetaData parent, PortComponentRefMetaData pcRef, UnmarshallingContext navigator, String namespaceURI, String localName)
+   {
+      parent.addPortComponentRef(pcRef);
+   }
+
+   public void addChild(ServiceRefMetaData parent, HandlerMetaData handler, UnmarshallingContext navigator, String namespaceURI, String localName)
+   {
+      parent.addHandler(handler);
+   }
+
+   public void setValue(PortComponentRefMetaData ref, UnmarshallingContext navigator, String namespaceURI, String localName, String value)
+   {
+      if (localName.equals("service-endpoint-interface"))
+      {
+         ref.setServiceEndpointInterface(value);
+      }
+      else if (localName.equals("port-component-link"))
+      {
+         ref.setPortComponentLink(value);
+      }
+   }
+   
+   public Object newChild(PortComponentRefMetaData ref, UnmarshallingContext navigator, String namespaceURI, String localName, Attributes attrs)
+   {
+      Object child = null;
+      if (localName.equals("call-property"))
+         child = new NameValuePair();
+      
+      return child;
+   }
+
+   public void addChild(PortComponentRefMetaData parent, NameValuePair property, UnmarshallingContext navigator, String namespaceURI, String localName)
+   {
+      parent.addCallProperty(property.getName(), property.getValue());
+   }
+   
+   public void setValue(HandlerMetaData ref, UnmarshallingContext navigator, String namespaceURI, String localName, String value)
+   {
+      if (localName.equals("handler-name"))
+      {
+         ref.setHandlerName(value);
+      }
+      else if (localName.equals("handler-class"))
+      {
+         ref.setHandlerClass(value);
+      }
+      else if (localName.equals("soap-header"))
+      {
+         ref.addSoapHeader(navigator.resolveQName(value));
+      }
+      else if (localName.equals("soap-role"))
+      {
+         ref.addSoapRole(value);
+      }
+      else if (localName.equals("port-name"))
+      {
+         ref.addPortName(value);
+      }
+   }
+   
+   public Object newChild(HandlerMetaData ref, UnmarshallingContext navigator, String namespaceURI, String localName, Attributes attrs)
+   {
+      Object child = null;
+      if (localName.equals("init-param"))
+         child = new InitParamMetaData();
+      
+      return child;
+   }
+
+   public void addChild(HandlerMetaData parent, InitParamMetaData param, UnmarshallingContext navigator, String namespaceURI, String localName)
+   {
+      parent.addInitParam(param);
+   }
+   
+   public void setValue(InitParamMetaData ref, UnmarshallingContext navigator, String namespaceURI, String localName, String value)
+   {
+      if (localName.equals("param-name"))
+      {
+         ref.setParamName(value);
+      }
+      else if (localName.equals("param-value"))
+      {
+         ref.setParamValue(value);
+      }
+   }
+   
    public void setValue(SecurityRoleMetaData role, UnmarshallingContext navigator,
                         String namespaceURI, String localName, String value)
    {

Modified: trunk/server/src/main/org/jboss/metadata/WebMetaData.java
===================================================================
--- trunk/server/src/main/org/jboss/metadata/WebMetaData.java	2007-02-23 13:21:39 UTC (rev 60838)
+++ trunk/server/src/main/org/jboss/metadata/WebMetaData.java	2007-02-23 14:07:05 UTC (rev 60839)
@@ -123,7 +123,7 @@
    /** web.xml ejb-local-refs */
    private HashMap<String, EjbLocalRefMetaData> ejbLocalReferences = new HashMap<String, EjbLocalRefMetaData>();
    /** The web.xml service-refs */
-   private HashMap serviceReferences = new HashMap();
+   private HashMap<String, ServiceRefMetaData> serviceRefs = new HashMap<String, ServiceRefMetaData>();
    /** web.xml security-role-refs <String servlet-name, ArrayList<SecurityRoleRefMetaData>> */
    private HashMap securityRoleReferences = new HashMap();
    /** The web.xml servlet/run-as <String servlet-name, String role> */
@@ -691,19 +691,21 @@
    /** Return an iterator of the service-ref mappings.
     * @return Iterator of ServiceRefMetaData objects
     */
-   public Iterator getServiceReferences()
+   public Iterator getServiceRefs()
    {
-      return serviceReferences.values().iterator();
+      return serviceRefs.values().iterator();
    }
-   /**
-    *
-    * @param serviceReferences - Map<String, ServiceRefMetaData>
-    */
-   public void setServiceReferences(Map serviceReferences)
+   
+   public ServiceRefMetaData getServiceRef(String name)
    {
-      this.serviceReferences.clear();
-      this.serviceReferences.putAll(serviceReferences);
+      ServiceRefMetaData ref = serviceRefs.get(name);
+      return ref;
    }
+   
+   public void addServiceRef(ServiceRefMetaData serviceRef)
+   {
+      this.serviceRefs.put(serviceRef.getServiceRefName(), serviceRef);
+   }
 
    /** This the the jboss-web.xml descriptor context-root and it
     *is only meaningful if a war is deployed outside of an ear.
@@ -1308,12 +1310,12 @@
       {
          Element serviceRef = (Element) iterator.next();
          String serviceRefName = MetaData.getUniqueChildContent(serviceRef, "service-ref-name");
-         ServiceRefMetaData refMetaData = (ServiceRefMetaData)serviceReferences.get(serviceRefName);
+         ServiceRefMetaData refMetaData = (ServiceRefMetaData)serviceRefs.get(serviceRefName);
          if (refMetaData == null)
          {
             log.warn("service-ref " + serviceRefName + " found in jboss-web.xml but not in web.xml");
             refMetaData = new ServiceRefMetaData(serviceRefName);
-            serviceReferences.put(serviceRefName, refMetaData);
+            serviceRefs.put(serviceRefName, refMetaData);
          }
          refMetaData.importJBossXml(serviceRef);
       }

Modified: trunk/server/src/main/org/jboss/metadata/web/JBossWebMetaDataObjectFactory.java
===================================================================
--- trunk/server/src/main/org/jboss/metadata/web/JBossWebMetaDataObjectFactory.java	2007-02-23 13:21:39 UTC (rev 60838)
+++ trunk/server/src/main/org/jboss/metadata/web/JBossWebMetaDataObjectFactory.java	2007-02-23 14:07:05 UTC (rev 60839)
@@ -37,6 +37,7 @@
 import org.jboss.metadata.SecurityRoleMetaData;
 import org.jboss.metadata.WebMetaData;
 import org.jboss.util.xml.JBossEntityResolver;
+import org.jboss.webservice.metadata.serviceref.ServiceRefMetaData;
 import org.jboss.xb.binding.JBossXBException;
 import org.jboss.xb.binding.ObjectModelFactory;
 import org.jboss.xb.binding.Unmarshaller;
@@ -134,7 +135,7 @@
       }
       return child;
    }
-
+   
    public void addChild(WebMetaData parent, ReplicationConfig config,
                         UnmarshallingContext navigator, String namespaceURI, String localName)
    {
@@ -209,6 +210,20 @@
       parent.addSecurityRole(role);
    }
 
+   public void addChild(WebMetaData parent, ServiceRefMetaData sourceRef,
+         UnmarshallingContext navigator, String namespaceURI, String localName)
+   {
+      String refName = sourceRef.getServiceRefName();
+      if (refName == null)
+         throw new IllegalStateException("Invalid service-ref-name: " + refName);
+      
+      ServiceRefMetaData targetRef = parent.getServiceRef(refName);
+      if (targetRef == null)
+         throw new IllegalStateException("Cannot find service-ref: " + refName);
+      
+      targetRef.merge(sourceRef);
+   }
+
    public void addChild(WebMetaData parent, Servlet servlet,
                         UnmarshallingContext navigator, String namespaceURI, String localName)
    {

Modified: trunk/server/src/main/org/jboss/metadata/web/WebMetaDataObjectFactory.java
===================================================================
--- trunk/server/src/main/org/jboss/metadata/web/WebMetaDataObjectFactory.java	2007-02-23 13:21:39 UTC (rev 60838)
+++ trunk/server/src/main/org/jboss/metadata/web/WebMetaDataObjectFactory.java	2007-02-23 14:07:05 UTC (rev 60839)
@@ -41,6 +41,7 @@
 import org.jboss.metadata.WebMetaData;
 import org.jboss.metadata.WebSecurityMetaData;
 import org.jboss.metadata.WebSecurityMetaData.WebResourceCollection;
+import org.jboss.webservice.metadata.serviceref.ServiceRefMetaData;
 import org.jboss.xb.binding.UnmarshallingContext;
 import org.xml.sax.Attributes;
 
@@ -79,13 +80,6 @@
 
    /**
     * Create the web-app child elements
-    * 
-    * @param dd
-    * @param navigator
-    * @param namespaceURI
-    * @param localName
-    * @param attrs
-    * @return
     */
    public Object newChild(WebMetaData dd, UnmarshallingContext navigator,
          String namespaceURI, String localName, Attributes attrs)
@@ -200,13 +194,6 @@
 
    /**
     * web-app/servlet children
-    * 
-    * @param servlet
-    * @param navigator
-    * @param namespaceURI
-    * @param localName
-    * @param attrs
-    * @return
     */
    public Object newChild(Servlet servlet, UnmarshallingContext navigator,
          String namespaceURI, String localName, Attributes attrs)
@@ -270,7 +257,7 @@
 
       return child;
    }
-
+   
    public void addChild(WebMetaData parent, ParamValue pv,
          UnmarshallingContext navigator, String namespaceURI, String localName)
    {
@@ -347,6 +334,12 @@
       parent.addSecurityConstraint(constraint);
    }
 
+   public void addChild(WebMetaData parent, ServiceRefMetaData serviceref,
+         UnmarshallingContext navigator, String namespaceURI, String localName)
+   {
+      parent.addServiceRef(serviceref);
+   }
+
    public void addChild(WebMetaData parent, ErrorPage page,
          UnmarshallingContext navigator, String namespaceURI, String localName)
    {

Modified: trunk/server/src/main/org/jboss/metamodel/descriptor/DDObjectFactory.java
===================================================================
--- trunk/server/src/main/org/jboss/metamodel/descriptor/DDObjectFactory.java	2007-02-23 13:21:39 UTC (rev 60838)
+++ trunk/server/src/main/org/jboss/metamodel/descriptor/DDObjectFactory.java	2007-02-23 14:07:05 UTC (rev 60839)
@@ -75,7 +75,7 @@
       return newRefChild(ref, localName);
    }
 
-   public Object newChild(ServiceRef ref, UnmarshallingContext navigator, String namespaceURI, String localName, Attributes attrs)
+   public Object newChild(WebServiceRefMetaData ref, UnmarshallingContext navigator, String namespaceURI, String localName, Attributes attrs)
    {
       return newServiceRefChild(ref, localName);
    }
@@ -125,7 +125,7 @@
       parent.setInjectionTarget(target);
    }
 
-   public void addChild(ServiceRef parent, InjectionTarget target, UnmarshallingContext navigator, String namespaceURI, String localName)
+   public void addChild(WebServiceRefMetaData parent, InjectionTarget target, UnmarshallingContext navigator, String namespaceURI, String localName)
    {
       parent.setInjectionTarget(target);
    }
@@ -323,7 +323,7 @@
       }
    }
 
-   public void setValue(ServiceRef ref, UnmarshallingContext navigator, String namespaceURI, String localName, String value)
+   public void setValue(WebServiceRefMetaData ref, UnmarshallingContext navigator, String namespaceURI, String localName, String value)
    {
       if (localName.equals("service-ref-name"))
       {
@@ -355,7 +355,7 @@
       }
    }
 
-   private Object newServiceRefChild(ServiceRef ref, String localName)
+   private Object newServiceRefChild(WebServiceRefMetaData ref, String localName)
    {
       Object child = newRefChild(ref, localName);
 
@@ -365,7 +365,7 @@
       return child;
    }
 
-   public void addChild(ServiceRef parent, PortInfo portInfo, UnmarshallingContext navigator, String namespaceURI, String localName)
+   public void addChild(WebServiceRefMetaData parent, PortInfo portInfo, UnmarshallingContext navigator, String namespaceURI, String localName)
    {
       parent.getPortInfos().add(portInfo);
    }
@@ -522,7 +522,7 @@
       }
       else if (localName.equals("service-ref"))
       {
-         child = new ServiceRef();
+         child = new WebServiceRefMetaData();
       }
       else if (localName.equals("jndi-ref"))
       {

Modified: trunk/server/src/main/org/jboss/metamodel/descriptor/EnvironmentRefGroup.java
===================================================================
--- trunk/server/src/main/org/jboss/metamodel/descriptor/EnvironmentRefGroup.java	2007-02-23 13:21:39 UTC (rev 60838)
+++ trunk/server/src/main/org/jboss/metamodel/descriptor/EnvironmentRefGroup.java	2007-02-23 14:07:05 UTC (rev 60839)
@@ -35,7 +35,7 @@
 import org.jboss.metamodel.descriptor.MessageDestinationRef;
 import org.jboss.metamodel.descriptor.ResourceEnvRef;
 import org.jboss.metamodel.descriptor.ResourceRef;
-import org.jboss.metamodel.descriptor.ServiceRef;
+import org.jboss.metamodel.descriptor.WebServiceRefMetaData;
 
 /**
  * @author <a href="mailto:bdecoste at jboss.com">William DeCoste</a>
@@ -53,7 +53,7 @@
    protected HashMap<String, MessageDestinationRef> messageDestinationRefs = new HashMap<String, MessageDestinationRef>();
    /** An index of MessageDestinationRef keyed by message-destination-link values */
    protected HashMap<String, MessageDestinationRef> messageDestinationRefsByLink = new HashMap<String, MessageDestinationRef>();
-   protected HashMap<String, ServiceRef> serviceRefs = new HashMap<String, ServiceRef>();
+   protected HashMap<String, WebServiceRefMetaData> serviceRefs = new HashMap<String, WebServiceRefMetaData>();
    protected HashMap<String, JndiRef> jndiRefs = new HashMap<String, JndiRef>();
    protected List<PersistenceContextRef> persistenceContextRefs = new ArrayList<PersistenceContextRef>();
    protected List<PersistenceUnitRef> persistenceUnitRefs = new ArrayList<PersistenceUnitRef>();
@@ -134,12 +134,12 @@
       jndiRefs.put(ref.getJndiRefName(), ref);
    }
    
-   public Collection<ServiceRef> getServiceRefs()
+   public Collection<WebServiceRefMetaData> getServiceRefs()
    {
       return serviceRefs.values();
    }
 
-   public void addServiceRef(ServiceRef ref)
+   public void addServiceRef(WebServiceRefMetaData ref)
    {
       serviceRefs.put(ref.getServiceRefName(), ref);
    }

Modified: trunk/server/src/main/org/jboss/metamodel/descriptor/PortInfo.java
===================================================================
--- trunk/server/src/main/org/jboss/metamodel/descriptor/PortInfo.java	2007-02-23 13:21:39 UTC (rev 60838)
+++ trunk/server/src/main/org/jboss/metamodel/descriptor/PortInfo.java	2007-02-23 14:07:05 UTC (rev 60839)
@@ -35,19 +35,19 @@
  */
 public class PortInfo
 {
-   private ServiceRef serviceRef;
+   private WebServiceRefMetaData serviceRef;
    private String serviceEndpointInterface;
    private QName portQName;
    private String configName;
    private String configFile;
    private List<NameValuePair> stubProperties = new ArrayList<NameValuePair>();
 
-   public PortInfo(ServiceRef serviceRef)
+   public PortInfo(WebServiceRefMetaData serviceRef)
    {
       this.serviceRef = serviceRef;
    }
    
-   public ServiceRef getServiceRef()
+   public WebServiceRefMetaData getServiceRef()
    {
       return serviceRef;
    }

Deleted: trunk/server/src/main/org/jboss/metamodel/descriptor/ServiceRef.java
===================================================================
--- trunk/server/src/main/org/jboss/metamodel/descriptor/ServiceRef.java	2007-02-23 13:21:39 UTC (rev 60838)
+++ trunk/server/src/main/org/jboss/metamodel/descriptor/ServiceRef.java	2007-02-23 14:07:05 UTC (rev 60839)
@@ -1,163 +0,0 @@
-/*
- * JBoss, Home of Professional Open Source
- * Copyright 2005, JBoss Inc., and individual contributors as indicated
- * by the @authors tag. See the copyright.txt 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.metamodel.descriptor;
-
-import java.util.ArrayList;
-import java.util.List;
-
-import javax.xml.namespace.QName;
-
-// $Id$
-
-/**
- * Represents a <service-ref> element of the jboss.xml, jboss-web.xml, jboss-client.xml deployment descriptor 
- * for the 5.0 schema
- *
- * @author <a href="mailto:bdecoste at jboss.com">William DeCoste</a>
- * @author Thomas.Diesler at jboss.com
- */
-public class ServiceRef extends Ref
-{
-   private String serviceRefName;
-   private String serviceClassName;
-   private QName serviceQName;
-   private String configName;
-   private String configFile;
-   private String handlerChain;
-   private List<PortInfo> portInfos = new ArrayList<PortInfo>();
-   private String wsdlOverride;
-
-   public String getServiceRefName()
-   {
-      return serviceRefName;
-   }
-
-   public void setServiceRefName(String name)
-   {
-      this.serviceRefName = name;
-   }
-
-   public String getServiceClassName()
-   {
-      return serviceClassName;
-   }
-
-   public void setServiceClassName(String serviceClassName)
-   {
-      this.serviceClassName = serviceClassName;
-   }
-
-   public QName getServiceQName()
-   {
-      return serviceQName;
-   }
-
-   public void setServiceQName(QName serviceQName)
-   {
-      this.serviceQName = serviceQName;
-   }
-   
-   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 getHandlerChain()
-   {
-      return handlerChain;
-   }
-
-   public void setHandlerChain(String handlerChain)
-   {
-      this.handlerChain = handlerChain;
-   }
-
-   public List<PortInfo> getPortInfos()
-   {
-      return portInfos;
-   }
-
-   public String getWsdlOverride()
-   {
-      return wsdlOverride;
-   }
-
-   public void setWsdlOverride(String wsdlLocation)
-   {
-      this.wsdlOverride = wsdlLocation;
-   }
-
-   public String toXMLFragment() 
-   {
-      StringBuilder xml = new StringBuilder("<service-ref>");
-      
-      xml.append("<service-ref-name>" + serviceRefName + "</service-ref-name>");
-      
-      if (serviceClassName != null)
-         xml.append("<service-class-name>" + serviceClassName + "</service-class-name>");
-      
-      if (serviceQName != null)
-         xml.append("<service-qname>" + serviceQName + "</service-qname>");
-      
-      if (configName != null)
-         xml.append("<config-name>" + configName + "</config-name>");
-      if (configFile != null)
-         xml.append("<config-file>" + configFile + "</config-file>");
-      
-      if (handlerChain != null)
-         xml.append("<handler-chain>" + handlerChain + "</handler-chain>");
-      
-      for (PortInfo portInfo : portInfos)
-         xml.append(portInfo.toXMLFragment());
-      
-      if (wsdlOverride != null)
-         xml.append("<wsdl-override>" + wsdlOverride + "</wsdl-override>");
-      
-      xml.append("</service-ref>");
-
-      return xml.toString();
-   }
-
-   public String toString()
-   {
-      StringBuffer sb = new StringBuffer(100);
-      sb.append("[");
-      sb.append("name=").append(serviceRefName);
-      sb.append("]");
-      return sb.toString();
-   }
-}

Copied: trunk/server/src/main/org/jboss/metamodel/descriptor/WebServiceRefMetaData.java (from rev 60809, trunk/server/src/main/org/jboss/metamodel/descriptor/ServiceRef.java)
===================================================================
--- trunk/server/src/main/org/jboss/metamodel/descriptor/WebServiceRefMetaData.java	                        (rev 0)
+++ trunk/server/src/main/org/jboss/metamodel/descriptor/WebServiceRefMetaData.java	2007-02-23 14:07:05 UTC (rev 60839)
@@ -0,0 +1,163 @@
+/*
+ * JBoss, Home of Professional Open Source
+ * Copyright 2005, JBoss Inc., and individual contributors as indicated
+ * by the @authors tag. See the copyright.txt 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.metamodel.descriptor;
+
+import java.util.ArrayList;
+import java.util.List;
+
+import javax.xml.namespace.QName;
+
+// $Id$
+
+/**
+ * Represents a <service-ref> element of the jboss.xml, jboss-web.xml, jboss-client.xml deployment descriptor 
+ * for the 5.0 schema
+ *
+ * @author <a href="mailto:bdecoste at jboss.com">William DeCoste</a>
+ * @author Thomas.Diesler at jboss.com
+ */
+public class WebServiceRefMetaData extends Ref
+{
+   private String serviceRefName;
+   private String serviceClassName;
+   private QName serviceQName;
+   private String configName;
+   private String configFile;
+   private String handlerChain;
+   private List<PortInfo> portInfos = new ArrayList<PortInfo>();
+   private String wsdlOverride;
+
+   public String getServiceRefName()
+   {
+      return serviceRefName;
+   }
+
+   public void setServiceRefName(String name)
+   {
+      this.serviceRefName = name;
+   }
+
+   public String getServiceClassName()
+   {
+      return serviceClassName;
+   }
+
+   public void setServiceClassName(String serviceClassName)
+   {
+      this.serviceClassName = serviceClassName;
+   }
+
+   public QName getServiceQName()
+   {
+      return serviceQName;
+   }
+
+   public void setServiceQName(QName serviceQName)
+   {
+      this.serviceQName = serviceQName;
+   }
+   
+   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 getHandlerChain()
+   {
+      return handlerChain;
+   }
+
+   public void setHandlerChain(String handlerChain)
+   {
+      this.handlerChain = handlerChain;
+   }
+
+   public List<PortInfo> getPortInfos()
+   {
+      return portInfos;
+   }
+
+   public String getWsdlOverride()
+   {
+      return wsdlOverride;
+   }
+
+   public void setWsdlOverride(String wsdlLocation)
+   {
+      this.wsdlOverride = wsdlLocation;
+   }
+
+   public String toXMLFragment() 
+   {
+      StringBuilder xml = new StringBuilder("<service-ref>");
+      
+      xml.append("<service-ref-name>" + serviceRefName + "</service-ref-name>");
+      
+      if (serviceClassName != null)
+         xml.append("<service-class-name>" + serviceClassName + "</service-class-name>");
+      
+      if (serviceQName != null)
+         xml.append("<service-qname>" + serviceQName + "</service-qname>");
+      
+      if (configName != null)
+         xml.append("<config-name>" + configName + "</config-name>");
+      if (configFile != null)
+         xml.append("<config-file>" + configFile + "</config-file>");
+      
+      if (handlerChain != null)
+         xml.append("<handler-chain>" + handlerChain + "</handler-chain>");
+      
+      for (PortInfo portInfo : portInfos)
+         xml.append(portInfo.toXMLFragment());
+      
+      if (wsdlOverride != null)
+         xml.append("<wsdl-override>" + wsdlOverride + "</wsdl-override>");
+      
+      xml.append("</service-ref>");
+
+      return xml.toString();
+   }
+
+   public String toString()
+   {
+      StringBuffer sb = new StringBuffer(100);
+      sb.append("[");
+      sb.append("name=").append(serviceRefName);
+      sb.append("]");
+      return sb.toString();
+   }
+}

Modified: trunk/server/src/main/org/jboss/web/AbstractWebDeployer.java
===================================================================
--- trunk/server/src/main/org/jboss/web/AbstractWebDeployer.java	2007-02-23 13:21:39 UTC (rev 60838)
+++ trunk/server/src/main/org/jboss/web/AbstractWebDeployer.java	2007-02-23 14:07:05 UTC (rev 60839)
@@ -24,11 +24,12 @@
 import java.net.MalformedURLException;
 import java.net.URL;
 import java.net.URLClassLoader;
-import java.util.ArrayList; 
+import java.security.Policy;
+import java.util.ArrayList;
 import java.util.HashSet;
-import java.util.Iterator; 
+import java.util.Iterator;
 import java.util.Set;
-import java.security.Policy;
+
 import javax.management.MBeanServer;
 import javax.naming.Context;
 import javax.naming.InitialContext;
@@ -36,7 +37,7 @@
 import javax.naming.NamingException;
 import javax.security.jacc.PolicyConfiguration;
 import javax.security.jacc.PolicyConfigurationFactory;
-import javax.security.jacc.PolicyContextException; 
+import javax.security.jacc.PolicyContextException;
 
 import org.jboss.deployment.DeploymentException;
 import org.jboss.deployment.DeploymentInfo;
@@ -51,17 +52,13 @@
 import org.jboss.metadata.MessageDestinationRefMetaData;
 import org.jboss.metadata.ResourceEnvRefMetaData;
 import org.jboss.metadata.ResourceRefMetaData;
-import org.jboss.metadata.WebMetaData; 
+import org.jboss.metadata.WebMetaData;
 import org.jboss.mx.loading.LoaderRepositoryFactory;
-import org.jboss.mx.util.MBeanProxyExt;
 import org.jboss.naming.NonSerializableFactory;
 import org.jboss.naming.Util;
 import org.jboss.security.AuthorizationManager;
 import org.jboss.security.authorization.PolicyRegistration;
-import org.jboss.security.plugins.AuthorizationManagerServiceMBean;
 import org.jboss.web.AbstractWebContainer.WebDescriptorParser;
-import org.jboss.webservice.ServiceRefHandler;
-import org.jboss.webservice.ServiceRefHandlerFactory;
 import org.omg.CORBA.ORB;
 
 /** A template pattern class for web deployer integration into JBoss. This class
@@ -557,11 +554,11 @@
       Iterator ejbLocalRefs = metaData.getEjbLocalReferences();
       log.debug("linkEjbLocalRefs");
       linkEjbLocalRefs(ejbLocalRefs, envCtx, di);
-      Iterator serviceRefs = metaData.getServiceReferences();
+      Iterator serviceRefs = metaData.getServiceRefs();
       log.debug("linkServiceRefs");
-      ServiceRefHandler refHandler = ServiceRefHandlerFactory.newInstance();
-      if (refHandler != null && serviceRefs.hasNext())
-         refHandler.setupServiceRefEnvironment(envCtx, serviceRefs, di);
+      //ServiceRefHandler refHandler = ServiceRefHandlerFactory.newInstance();
+      //if (refHandler != null && serviceRefs.hasNext())
+      //   refHandler.bindServiceRefs(envCtx, serviceRefs, di);
    }
 
    protected void addEnvEntries(Iterator envEntries, Context envCtx)

Modified: trunk/server/src/main/org/jboss/web/deployers/AbstractWarDeployer.java
===================================================================
--- trunk/server/src/main/org/jboss/web/deployers/AbstractWarDeployer.java	2007-02-23 13:21:39 UTC (rev 60838)
+++ trunk/server/src/main/org/jboss/web/deployers/AbstractWarDeployer.java	2007-02-23 14:07:05 UTC (rev 60839)
@@ -281,13 +281,6 @@
 
       try
       {
-         /* TODO: This needs to be moved to a webservice deployer which updates the WebMetaData
-          // We need to unpack the WAR if it has webservices.xml, because we need
-          // to manipulate th web.xml before deploying to the web container 
-          boolean unpackWebservice = di.localCl.findResource("WEB-INF/webservices.xml") != null;
-          // With JSR-181 annotated JSE endpoints we need to do it as well even if there is no webservices.xml
-          // unpackWebservice |= server.isRegistered(ObjectNameFactory.create("jboss.ws:service=ServiceEndpointManager"));
-          */
          /* Unpack wars to the tmp directory for now until tomcat can use the vfs directly. Since
           * the vfs deals with the distinction between a true directory, the only way we can tell from
           * this level of the api is to look for a url that ends in '/'. Here we assume that the name is

Modified: trunk/server/src/main/org/jboss/web/deployers/AbstractWarDeployment.java
===================================================================
--- trunk/server/src/main/org/jboss/web/deployers/AbstractWarDeployment.java	2007-02-23 13:21:39 UTC (rev 60838)
+++ trunk/server/src/main/org/jboss/web/deployers/AbstractWarDeployment.java	2007-02-23 14:07:05 UTC (rev 60839)
@@ -57,6 +57,8 @@
 import org.jboss.security.AuthorizationManager;
 import org.jboss.security.authorization.PolicyRegistration;
 import org.jboss.web.WebApplication; 
+import org.jboss.webservice.ServiceRefHandler;
+import org.jboss.webservice.ServiceRefHandlerFactory;
 import org.omg.CORBA.ORB;
 
 /**
@@ -507,9 +509,11 @@
       Iterator ejbLocalRefs = metaData.getEjbLocalReferences();
       log.debug("linkEjbLocalRefs");
       linkEjbLocalRefs(unit, ejbLocalRefs, envCtx);
-      Iterator serviceRefs = metaData.getServiceReferences();
+      Iterator serviceRefs = metaData.getServiceRefs();
       log.debug("linkServiceRefs");
-      //WebServiceClientHandler.setupServiceRefEnvironment(envCtx, serviceRefs);
+      ServiceRefHandler refHandler = ServiceRefHandlerFactory.newInstance();
+      if (refHandler != null && serviceRefs.hasNext())
+         refHandler.bindServiceRefs(envCtx, serviceRefs, unit);
    }
 
    protected void addEnvEntries(Iterator envEntries, Context envCtx)

Modified: trunk/server/src/main/org/jboss/webservice/ServiceRefHandler.java
===================================================================
--- trunk/server/src/main/org/jboss/webservice/ServiceRefHandler.java	2007-02-23 13:21:39 UTC (rev 60838)
+++ trunk/server/src/main/org/jboss/webservice/ServiceRefHandler.java	2007-02-23 14:07:05 UTC (rev 60839)
@@ -28,6 +28,7 @@
 import javax.naming.Context;
 
 import org.jboss.deployers.spi.DeploymentException;
+import org.jboss.deployers.spi.deployer.DeploymentUnit;
 
 /**
  * Implemtent to bind JAXRPC ServiceRefs
@@ -42,8 +43,8 @@
     *
     * @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 deployment  The client's deployment unit
+    * @param unit  The client's deployment unit
     * @throws DeploymentException if it goes wrong
     */
-   void setupServiceRefEnvironment(Context envCtx, Iterator serviceRefs, Object deployment);
+   void bindServiceRefs(Context envCtx, Iterator serviceRefs, DeploymentUnit unit);
 }

Modified: trunk/server/src/main/org/jboss/webservice/metadata/serviceref/HandlerMetaData.java
===================================================================
--- trunk/server/src/main/org/jboss/webservice/metadata/serviceref/HandlerMetaData.java	2007-02-23 13:21:39 UTC (rev 60838)
+++ trunk/server/src/main/org/jboss/webservice/metadata/serviceref/HandlerMetaData.java	2007-02-23 14:07:05 UTC (rev 60839)
@@ -117,6 +117,11 @@
       return array;
    }
 
+   public void addPortName(String value)
+   {
+      portNames.add(value);
+   }
+
    public void importStandardXml(Element element)
    {
       handlerName = MetaData.getUniqueChildContent(element, "handler-name");

Modified: trunk/server/src/main/org/jboss/webservice/metadata/serviceref/PortComponentRefMetaData.java
===================================================================
--- trunk/server/src/main/org/jboss/webservice/metadata/serviceref/PortComponentRefMetaData.java	2007-02-23 13:21:39 UTC (rev 60838)
+++ trunk/server/src/main/org/jboss/webservice/metadata/serviceref/PortComponentRefMetaData.java	2007-02-23 14:07:05 UTC (rev 60839)
@@ -75,16 +75,36 @@
       return portComponentLink;
    }
 
+   public void setPortComponentLink(String portComponentLink)
+   {
+      this.portComponentLink = portComponentLink;
+   }
+
    public String getServiceEndpointInterface()
    {
       return serviceEndpointInterface;
    }
+   
+   public void setServiceEndpointInterface(String serviceEndpointInterface)
+   {
+      this.serviceEndpointInterface = serviceEndpointInterface;
+   }
 
    public Properties getCallProperties()
    {
       return callProperties;
    }
+   
+   public void setCallProperties(Properties props)
+   {
+      callProperties = props;
+   }
 
+   public void addCallProperty(String name, String value)
+   {
+      callProperties.setProperty(name, value);
+   }
+
    public void importStandardXml(Element element)
    {
       serviceEndpointInterface = MetaData.getUniqueChildContent(element, "service-endpoint-interface");

Modified: trunk/server/src/main/org/jboss/webservice/metadata/serviceref/ServiceRefMetaData.java
===================================================================
--- trunk/server/src/main/org/jboss/webservice/metadata/serviceref/ServiceRefMetaData.java	2007-02-23 13:21:39 UTC (rev 60838)
+++ trunk/server/src/main/org/jboss/webservice/metadata/serviceref/ServiceRefMetaData.java	2007-02-23 14:07:05 UTC (rev 60839)
@@ -29,6 +29,7 @@
 import java.util.ArrayList;
 import java.util.Iterator;
 import java.util.LinkedHashMap;
+import java.util.Map;
 import java.util.Properties;
 
 import javax.xml.namespace.QName;
@@ -66,7 +67,7 @@
    // The optional <service-qname> element
    private QName serviceQName;
    // The LinkedHashMap<String, PortComponentRefMetaData> for <port-component-ref> elements
-   private LinkedHashMap portComponentRefs = new LinkedHashMap();
+   private Map<String, PortComponentRefMetaData> portComponentRefs = new LinkedHashMap<String, PortComponentRefMetaData>();
    // The optional <handler> elements
    private ArrayList handlers = new ArrayList();
 
@@ -78,7 +79,6 @@
    private URL wsdlOverride;
    /** Arbitrary proxy properties given by <call-property> */
    private Properties callProperties;
-   private String mappedName;
 
    /** Default constructor, used when unmarshalling on the client side
     */
@@ -93,6 +93,27 @@
       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();
+         if (seiName == null)
+            throw new IllegalStateException("Illegal SEI name: " + seiName);
+         
+         PortComponentRefMetaData pcTargetRef = portComponentRefs.get(seiName);
+         if (pcTargetRef == null)
+            throw new IllegalStateException("Cannot find port component ref with SEI name: " + seiName);
+         
+         pcTargetRef.setCallProperties(pcSourceRef.getCallProperties());
+      }
+   }
+   
    public String getMappingFile()
    {
       return mappingFile;
@@ -109,6 +130,17 @@
       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()
    {
@@ -117,6 +149,11 @@
       return array;
    }
 
+   public void addHandler(HandlerMetaData handler)
+   {
+      handlers.add(handler);
+   }
+   
    public String getServiceInterface()
    {
       return serviceInterface;
@@ -182,16 +219,6 @@
       return configName;
    }
 
-   public String getMappedName()
-   {
-      return mappedName;
-   }
-
-   public void setMappedName(String mappedName)
-   {
-      this.mappedName = mappedName;
-   }
-
    public void setConfigName(String configName)
    {
       this.configName = configName;
@@ -201,6 +228,18 @@
    {
       return wsdlOverride;
    }
+   
+   public void setWsdlOverride(String wsdlOverride)
+   {
+      try
+      {
+         this.wsdlOverride = new URL(wsdlOverride);
+      }
+      catch (MalformedURLException e)
+      {
+         throw new IllegalArgumentException("Invalid wsdl-override: " + wsdlOverride);
+      }
+   }
 
    public Properties getCallProperties()
    {

Modified: trunk/server/src/resources/dtd/jboss-client_5_0.dtd
===================================================================
--- trunk/server/src/resources/dtd/jboss-client_5_0.dtd	2007-02-23 13:21:39 UTC (rev 60838)
+++ trunk/server/src/resources/dtd/jboss-client_5_0.dtd	2007-02-23 14:07:05 UTC (rev 60839)
@@ -12,8 +12,8 @@
        "http://www.jboss.org/j2ee/dtd/jboss-client_5_0.dtd">
 -->
 
-<!ENTITY % service-ref SYSTEM "./docs/dtd/service-ref_5_0.dtd"> 
-%service-ref;
+<!ENTITY % webservice-ref SYSTEM "./docs/dtd/webservice-ref_5_0.dtd"> 
+%webservice-ref;
 
 <!-- The jboss-client element is the root element.
 -->

Modified: trunk/server/src/resources/dtd/jboss-web_5_0.dtd
===================================================================
--- trunk/server/src/resources/dtd/jboss-web_5_0.dtd	2007-02-23 13:21:39 UTC (rev 60838)
+++ trunk/server/src/resources/dtd/jboss-web_5_0.dtd	2007-02-23 14:07:05 UTC (rev 60839)
@@ -13,8 +13,8 @@
 
 -->
 
-<!ENTITY % service-ref SYSTEM "./docs/dtd/service-ref_5_0.dtd"> 
-%service-ref;
+<!ENTITY % webservice-ref SYSTEM "./docs/dtd/webservice-ref_5_0.dtd"> 
+%webservice-ref;
 
 <!-- The jboss-web element is the root element.
 -->

Modified: trunk/server/src/resources/dtd/jboss_5_0.dtd
===================================================================
--- trunk/server/src/resources/dtd/jboss_5_0.dtd	2007-02-23 13:21:39 UTC (rev 60838)
+++ trunk/server/src/resources/dtd/jboss_5_0.dtd	2007-02-23 14:07:05 UTC (rev 60839)
@@ -144,8 +144,8 @@
 </jboss>
 -->
 
-<!ENTITY % service-ref SYSTEM "./docs/dtd/service-ref_5_0.dtd"> 
-%service-ref;
+<!ENTITY % webservice-ref SYSTEM "./docs/dtd/webservice-ref_5_0.dtd"> 
+%webservice-ref;
 
 <!--
   The jboss element is the root element of the jboss.xml file. It

Deleted: trunk/server/src/resources/dtd/service-ref_5_0.dtd
===================================================================
--- trunk/server/src/resources/dtd/service-ref_5_0.dtd	2007-02-23 13:21:39 UTC (rev 60838)
+++ trunk/server/src/resources/dtd/service-ref_5_0.dtd	2007-02-23 14:07:05 UTC (rev 60839)
@@ -1,155 +0,0 @@
-<?xml version='1.0' encoding='UTF-8'?>
-
-<!-- 
-	$Id: jboss-client_5_0.dtd 58121 2006-11-04 19:57:58Z thomas.diesler at jboss.com $
--->
-
-<!--
-  WebServiceRef customization
--->
-
-<!--
-  Runtime settings for a web service reference. In the simplest case,
-  there is no runtime information required for a service ref.  Runtime info
-  is only needed in the following cases :
-  
-  * to define the port that should be used to resolve a container-managed port
-  * to define default Stub property settings for Stub objects
-  * to define the URL of a final WSDL document to be used
-
-  Example:
-  
-  <service-ref>
-   <service-ref-name>OrganizationService</service-ref-name>
-   <wsdl-override>file:/wsdlRepository/organization-service.wsdl</wsdl-override>
-  </service-ref>
-
-  <service-ref>
-   <service-ref-name>OrganizationService</service-ref-name>
-   <config-name>Secure Client Config</config-name>
-   <config-file>META-INF/jbossws-client-config.xml</config-file>
-   <handler-chain>META-INF/jbossws-client-handlers.xml</handler-chain>
-  </service-ref>
-  
-  <service-ref>
-   <service-ref-name>SecureService</service-ref-name>
-   <service-class-name>org.jboss.tests.ws.jaxws.webserviceref.SecureEndpointService</service-class-name>
-   <service-qname>{http://org.jboss.ws/wsref}SecureEndpointService</service-qname>
-    <port-info>
-     <service-endpoint-interface>org.jboss.tests.ws.jaxws.webserviceref.SecureEndpoint</service-endpoint-interface>
-     <port-qname>{http://org.jboss.ws/wsref}SecureEndpointPort</port-qname>
-     <stub-property>
-      <name>javax.xml.ws.security.auth.username</name>
-      <value>kermit</value>
-     </stub-property>
-     <stub-property>
-      <name>javax.xml.ws.security.auth.password</name>
-      <value>thefrog</value>
-     </stub-property>
-   </port-info>
-  </service-ref>
--->
-<!ELEMENT service-ref (service-ref-name, service-class-name?, service-qname?, config-name?, config-file?, handler-chain?, port-info*, wsdl-override?)>
-
-<!-- 
-  The service-ref-name element gives the ENC relative name.
-  Overrides @WebServiceRef.name
--->
-<!ELEMENT service-ref-name (#PCDATA)>
-
-<!--
-  Name of the class that implements javax.xml.ws.Service. 
-  Overrides @WebServiceRef.value
--->
-<!ELEMENT service-class-name (#PCDATA)>
-
-<!-- 
-  The service-qname element declares the specific WSDL service element.
-  Specify the qualified service name in the form defined by QName.valueOf()
-  
-  Example: 
-     <service-qname>{http://somensURI}SomeService</service-qname>
--->
-<!ELEMENT service-qname (#PCDATA)>
-
-<!-- 
-  The optional handler-chain element is a URL or resource name to a handler chain configuration.
-  See: @HandlerChain.file
--->
-<!ELEMENT handler-chain (#PCDATA)>
-
-<!-- 
-  Information for a port within a service-reference.
-  
-  Either service-endpoint-interface or wsdl-port or both
-  (service-endpoint-interface and wsdl-port) should be specified.  
-  
-  If both are specified, wsdl-port represents the
-  port the container should choose for container-managed port selection.
-  
-  The same wsdl-port value must not appear in
-  more than one port-info entry within the same service-ref.
-  
-  If a particular service-endpoint-interface is using container-managed port
-  selection, it must not appear in more than one port-info entry
-  within the same service-ref.
--->
-<!ELEMENT port-info (service-endpoint-interface?, port-qname?, config-name?, config-file?, stub-property*)>
-
-<!--
-  Fully qualified name of service endpoint interface
--->
-<!ELEMENT service-endpoint-interface (#PCDATA)>
-
-<!-- 
-  Port used in port-info.  
-  Specify the qualified port name in the form defined by QName.valueOf()
-  
-  Example: 
-     <port-qname>{http://somensURI}SomeService</port-qname>
--->
-<!ELEMENT port-qname (#PCDATA)>
-
-<!-- 
-  The optional config-name element gives the client configuration name that must be present in
-  the configuration given by element config-file. Ports that match this port info will be 
-  configured with this config name.
-
-  The default is: Standard Client
--->
-<!ELEMENT config-name (#PCDATA)>
-
-<!-- 
-  The optional config-file element is a URL or resource name for the client configuration.
-  Ports that match this port info will be configured with this config file.
-  
-  The default is: META-INF/standard-jbossws-client-config.xml
--->
-<!ELEMENT config-file (#PCDATA)>
-
-<!-- 
-  Property values that should be set on a stub before it's returned to 
-  to the web service client.  The property names can be any properties supported
-  by the StubExt or Stub implementation. 
-  
-  See javadoc for org.jboss.ws.core.StubExt, javax.xml.rpc.Stub
--->
-<!ELEMENT stub-property (name, value)>
-
-<!--
-  This text nodes holds a name string.
--->
-<!ELEMENT name (#PCDATA)>
-
-<!--
-  This text nodes holds a value string.
--->
-<!ELEMENT value (#PCDATA)>
-
-<!-- 
-  The wsdl-override element the actual wsdl docuement the web service client
-  uses to connect to the remote service. 
-  
-  Overrides @WebServiceRef.wsdlLocation
--->
-<!ELEMENT wsdl-override (#PCDATA)>

Copied: trunk/server/src/resources/dtd/webservice-ref_5_0.dtd (from rev 60809, trunk/server/src/resources/dtd/service-ref_5_0.dtd)
===================================================================
--- trunk/server/src/resources/dtd/webservice-ref_5_0.dtd	                        (rev 0)
+++ trunk/server/src/resources/dtd/webservice-ref_5_0.dtd	2007-02-23 14:07:05 UTC (rev 60839)
@@ -0,0 +1,155 @@
+<?xml version='1.0' encoding='UTF-8'?>
+
+<!-- 
+	$Id: jboss-client_5_0.dtd 58121 2006-11-04 19:57:58Z thomas.diesler at jboss.com $
+-->
+
+<!--
+  WebServiceRef customization
+-->
+
+<!--
+  Runtime settings for a web service reference. In the simplest case,
+  there is no runtime information required for a service ref.  Runtime info
+  is only needed in the following cases :
+  
+  * to define the port that should be used to resolve a container-managed port
+  * to define default Stub property settings for Stub objects
+  * to define the URL of a final WSDL document to be used
+
+  Example:
+  
+  <webservice-ref>
+   <service-ref-name>OrganizationService</service-ref-name>
+   <wsdl-override>file:/wsdlRepository/organization-service.wsdl</wsdl-override>
+  </webservice-ref>
+
+  <webservice-ref>
+   <service-ref-name>OrganizationService</service-ref-name>
+   <config-name>Secure Client Config</config-name>
+   <config-file>META-INF/jbossws-client-config.xml</config-file>
+   <handler-chain>META-INF/jbossws-client-handlers.xml</handler-chain>
+  </webservice-ref>
+  
+  <webservice-ref>
+   <service-ref-name>SecureService</service-ref-name>
+   <service-class-name>org.jboss.tests.ws.jaxws.webserviceref.SecureEndpointService</service-class-name>
+   <service-qname>{http://org.jboss.ws/wsref}SecureEndpointService</service-qname>
+    <port-info>
+     <service-endpoint-interface>org.jboss.tests.ws.jaxws.webserviceref.SecureEndpoint</service-endpoint-interface>
+     <port-qname>{http://org.jboss.ws/wsref}SecureEndpointPort</port-qname>
+     <stub-property>
+      <name>javax.xml.ws.security.auth.username</name>
+      <value>kermit</value>
+     </stub-property>
+     <stub-property>
+      <name>javax.xml.ws.security.auth.password</name>
+      <value>thefrog</value>
+     </stub-property>
+   </port-info>
+  </webservice-ref>
+-->
+<!ELEMENT webservice-ref (service-ref-name, service-class-name?, service-qname?, config-name?, config-file?, handler-chain?, port-info*, wsdl-override?)>
+
+<!-- 
+  The service-ref-name element gives the ENC relative name.
+  Overrides @WebServiceRef.name
+-->
+<!ELEMENT service-ref-name (#PCDATA)>
+
+<!--
+  Name of the class that implements javax.xml.ws.Service. 
+  Overrides @WebServiceRef.value
+-->
+<!ELEMENT service-class-name (#PCDATA)>
+
+<!-- 
+  The service-qname element declares the specific WSDL service element.
+  Specify the qualified service name in the form defined by QName.valueOf()
+  
+  Example: 
+     <service-qname>{http://somensURI}SomeService</service-qname>
+-->
+<!ELEMENT service-qname (#PCDATA)>
+
+<!-- 
+  The optional handler-chain element is a URL or resource name to a handler chain configuration.
+  See: @HandlerChain.file
+-->
+<!ELEMENT handler-chain (#PCDATA)>
+
+<!-- 
+  Information for a port within a service-reference.
+  
+  Either service-endpoint-interface or wsdl-port or both
+  (service-endpoint-interface and wsdl-port) should be specified.  
+  
+  If both are specified, wsdl-port represents the
+  port the container should choose for container-managed port selection.
+  
+  The same wsdl-port value must not appear in
+  more than one port-info entry within the same service-ref.
+  
+  If a particular service-endpoint-interface is using container-managed port
+  selection, it must not appear in more than one port-info entry
+  within the same service-ref.
+-->
+<!ELEMENT port-info (service-endpoint-interface?, port-qname?, config-name?, config-file?, stub-property*)>
+
+<!--
+  Fully qualified name of service endpoint interface
+-->
+<!ELEMENT service-endpoint-interface (#PCDATA)>
+
+<!-- 
+  Port used in port-info.  
+  Specify the qualified port name in the form defined by QName.valueOf()
+  
+  Example: 
+     <port-qname>{http://somensURI}SomeService</port-qname>
+-->
+<!ELEMENT port-qname (#PCDATA)>
+
+<!-- 
+  The optional config-name element gives the client configuration name that must be present in
+  the configuration given by element config-file. Ports that match this port info will be 
+  configured with this config name.
+
+  The default is: Standard Client
+-->
+<!ELEMENT config-name (#PCDATA)>
+
+<!-- 
+  The optional config-file element is a URL or resource name for the client configuration.
+  Ports that match this port info will be configured with this config file.
+  
+  The default is: META-INF/standard-jbossws-client-config.xml
+-->
+<!ELEMENT config-file (#PCDATA)>
+
+<!-- 
+  Property values that should be set on a stub before it's returned to 
+  to the web service client.  The property names can be any properties supported
+  by the StubExt or Stub implementation. 
+  
+  See javadoc for org.jboss.ws.core.StubExt, javax.xml.rpc.Stub
+-->
+<!ELEMENT stub-property (name, value)>
+
+<!--
+  This text nodes holds a name string.
+-->
+<!ELEMENT name (#PCDATA)>
+
+<!--
+  This text nodes holds a value string.
+-->
+<!ELEMENT value (#PCDATA)>
+
+<!-- 
+  The wsdl-override element the actual wsdl docuement the web service client
+  uses to connect to the remote service. 
+  
+  Overrides @WebServiceRef.wsdlLocation
+-->
+<!ELEMENT wsdl-override (#PCDATA)>

Modified: trunk/tomcat/src/main/org/jboss/web/metamodel/descriptor/JBossWebDDObjectFactory.java
===================================================================
--- trunk/tomcat/src/main/org/jboss/web/metamodel/descriptor/JBossWebDDObjectFactory.java	2007-02-23 13:21:39 UTC (rev 60838)
+++ trunk/tomcat/src/main/org/jboss/web/metamodel/descriptor/JBossWebDDObjectFactory.java	2007-02-23 14:07:05 UTC (rev 60839)
@@ -30,7 +30,7 @@
 import org.jboss.metamodel.descriptor.MessageDestinationRef;
 import org.jboss.metamodel.descriptor.ResourceEnvRef;
 import org.jboss.metamodel.descriptor.ResourceRef;
-import org.jboss.metamodel.descriptor.ServiceRef;
+import org.jboss.metamodel.descriptor.WebServiceRefMetaData;
 import org.jboss.util.xml.JBossEntityResolver;
 import org.jboss.xb.binding.JBossXBException;
 import org.jboss.xb.binding.ObjectModelFactory;
@@ -174,7 +174,7 @@
       parent.updateMessageDestinationRef(ref);
    }
 
-   public void addChild(WebDD parent, ServiceRef ref, UnmarshallingContext navigator, String namespaceURI, String localName)
+   public void addChild(WebDD parent, WebServiceRefMetaData ref, UnmarshallingContext navigator, String namespaceURI, String localName)
    {
       parent.addServiceRef(ref);
    }

Modified: trunk/tomcat/src/main/org/jboss/web/tomcat/tc6/deployers/TomcatDeployment.java
===================================================================
--- trunk/tomcat/src/main/org/jboss/web/tomcat/tc6/deployers/TomcatDeployment.java	2007-02-23 13:21:39 UTC (rev 60838)
+++ trunk/tomcat/src/main/org/jboss/web/tomcat/tc6/deployers/TomcatDeployment.java	2007-02-23 14:07:05 UTC (rev 60839)
@@ -34,7 +34,6 @@
 import java.util.HashMap;
 import java.util.HashSet;
 import java.util.Iterator;
-import java.util.List;
 import java.util.Set;
 import java.util.zip.ZipEntry;
 import java.util.zip.ZipFile;
@@ -60,13 +59,15 @@
 import org.jboss.web.deployers.AbstractWarDeployment;
 import org.jboss.web.tomcat.security.JaccContextValve;
 import org.jboss.web.tomcat.security.RunAsListener;
-import org.jboss.web.tomcat.security.SecurityAssociationValve; 
+import org.jboss.web.tomcat.security.SecurityAssociationValve;
 import org.jboss.web.tomcat.tc6.TomcatInjectionContainer;
 import org.jboss.web.tomcat.tc6.WebAppLoader;
 import org.jboss.web.tomcat.tc6.WebCtxLoader;
 import org.jboss.web.tomcat.tc6.session.AbstractJBossManager;
 import org.jboss.web.tomcat.tc6.session.ClusteringNotSupportedException;
 import org.jboss.web.tomcat.tc6.session.JBossCacheManager;
+import org.jboss.webservice.ServiceRefHandler;
+import org.jboss.webservice.ServiceRefHandlerFactory;
 import org.omg.CORBA.ORB;
 
 /**
@@ -139,7 +140,7 @@
    protected void performDeployInternal(String hostName,
          WebApplication webApp, String warUrl) throws Exception
    {
-
+      DeploymentUnit unit = webApp.getDeploymentUnit();
       WebMetaData metaData = webApp.getMetaData();
       String ctxPath = metaData.getContextRoot();
       if (ctxPath.equals("/") || ctxPath.equals("/ROOT") || ctxPath.equals(""))
@@ -319,7 +320,9 @@
       // Build the ENC
 
       if (injectionContainer == null)
+      {
          super.processEnc(webLoader.getClassLoader(), webApp);
+      }
       else
       {
          Thread currentThread = Thread.currentThread();
@@ -363,6 +366,15 @@
 
             envCtx = envCtx.createSubcontext("env");
             injectionContainer.populateEnc(webLoader.getClassLoader());
+            
+            // TODO: should this be handled differently?
+            // JAX-RPC service refs are not injectable objects
+            Iterator serviceRefs = metaData.getServiceRefs();
+            log.debug("linkServiceRefs");
+            ServiceRefHandler refHandler = ServiceRefHandlerFactory.newInstance();
+            if (refHandler != null && serviceRefs.hasNext())
+               refHandler.bindServiceRefs(envCtx, serviceRefs, unit);
+            
             // TODO: this should be bindings in the metadata
             currentThread.setContextClassLoader(webLoader.getClassLoader());
             String securityDomain = metaData.getSecurityDomain();




More information about the jboss-cvs-commits mailing list