Author: dain
Date: Mon Nov  5 19:57:34 2007
New Revision: 592257

URL: http://svn.apache.org/viewvc?rev=592257&view=rev
Log:
Extract ejb bind location from wsdl file

Modified:
    
openejb/trunk/openejb3/container/openejb-core/src/main/java/org/apache/openejb/config/SunConversion.java
    
openejb/trunk/openejb3/container/openejb-core/src/main/java/org/apache/openejb/config/WsDeployer.java
    
openejb/trunk/openejb3/container/openejb-core/src/main/java/org/apache/openejb/core/webservices/JaxWsUtils.java
    
openejb/trunk/openejb3/container/openejb-jee/src/main/java/org/apache/openejb/jee/sun/Ejb.java
    
openejb/trunk/openejb3/container/openejb-jee/src/main/java/org/apache/openejb/jee/sun/EnterpriseBeans.java
    
openejb/trunk/openejb3/container/openejb-jee/src/main/java/org/apache/openejb/jee/sun/Servlet.java
    
openejb/trunk/openejb3/container/openejb-jee/src/main/java/org/apache/openejb/jee/sun/WebserviceDescription.java
    
openejb/trunk/openejb3/container/openejb-jee/src/main/java/org/apache/openejb/jee/sun/WebserviceEndpoint.java
    
openejb/trunk/openejb3/container/openejb-jee/src/test/resources/application-client-example.xml
    
openejb/trunk/openejb3/container/openejb-jee/src/test/resources/ejb-jar-example1.xml

Modified: 
openejb/trunk/openejb3/container/openejb-core/src/main/java/org/apache/openejb/config/SunConversion.java
URL: 
http://svn.apache.org/viewvc/openejb/trunk/openejb3/container/openejb-core/src/main/java/org/apache/openejb/config/SunConversion.java?rev=592257&r1=592256&r2=592257&view=diff
==============================================================================
--- 
openejb/trunk/openejb3/container/openejb-core/src/main/java/org/apache/openejb/config/SunConversion.java
 (original)
+++ 
openejb/trunk/openejb3/container/openejb-core/src/main/java/org/apache/openejb/config/SunConversion.java
 Mon Nov  5 19:57:34 2007
@@ -16,30 +16,20 @@
  */
 package org.apache.openejb.config;
 
-import java.io.ByteArrayInputStream;
-import java.net.URL;
-import java.util.ArrayList;
-import java.util.Arrays;
-import java.util.Collection;
-import java.util.Collections;
-import java.util.LinkedList;
-import java.util.List;
-import java.util.Map;
-import java.util.StringTokenizer;
-import java.util.TreeMap;
-
+import org.apache.openejb.jee.ApplicationClient;
 import org.apache.openejb.jee.CmpField;
 import org.apache.openejb.jee.EjbJar;
 import org.apache.openejb.jee.EnterpriseBean;
 import org.apache.openejb.jee.EntityBean;
-import org.apache.openejb.jee.PersistenceType;
-import org.apache.openejb.jee.ApplicationClient;
 import org.apache.openejb.jee.JndiReference;
-import org.apache.openejb.jee.WebApp;
-import org.apache.openejb.jee.ServiceRef;
+import org.apache.openejb.jee.PersistenceType;
+import org.apache.openejb.jee.PortComponent;
 import org.apache.openejb.jee.PortComponentRef;
+import org.apache.openejb.jee.ServiceRef;
+import org.apache.openejb.jee.WebApp;
 import org.apache.openejb.jee.WebserviceDescription;
-import org.apache.openejb.jee.PortComponent;
+import org.apache.openejb.jee.ServiceImplBean;
+import org.apache.openejb.jee.jpa.AttributeOverride;
 import org.apache.openejb.jee.jpa.Attributes;
 import org.apache.openejb.jee.jpa.Basic;
 import org.apache.openejb.jee.jpa.Column;
@@ -57,10 +47,9 @@
 import org.apache.openejb.jee.jpa.RelationField;
 import org.apache.openejb.jee.jpa.SecondaryTable;
 import org.apache.openejb.jee.jpa.Table;
-import org.apache.openejb.jee.jpa.AttributeOverride;
-import org.apache.openejb.jee.oejb3.OpenejbJar;
 import org.apache.openejb.jee.oejb3.EjbDeployment;
 import org.apache.openejb.jee.oejb3.EjbLink;
+import org.apache.openejb.jee.oejb3.OpenejbJar;
 import org.apache.openejb.jee.oejb3.ResourceLink;
 import org.apache.openejb.jee.sun.Cmp;
 import org.apache.openejb.jee.sun.CmpFieldMapping;
@@ -68,21 +57,35 @@
 import org.apache.openejb.jee.sun.ColumnName;
 import org.apache.openejb.jee.sun.ColumnPair;
 import org.apache.openejb.jee.sun.Ejb;
+import org.apache.openejb.jee.sun.EjbRef;
 import org.apache.openejb.jee.sun.EntityMapping;
 import org.apache.openejb.jee.sun.Finder;
 import org.apache.openejb.jee.sun.JaxbSun;
+import org.apache.openejb.jee.sun.MessageDestinationRef;
 import org.apache.openejb.jee.sun.OneOneFinders;
+import org.apache.openejb.jee.sun.PortInfo;
+import org.apache.openejb.jee.sun.ResourceEnvRef;
+import org.apache.openejb.jee.sun.ResourceRef;
+import org.apache.openejb.jee.sun.StubProperty;
+import org.apache.openejb.jee.sun.SunApplicationClient;
 import org.apache.openejb.jee.sun.SunCmpMapping;
 import org.apache.openejb.jee.sun.SunCmpMappings;
 import org.apache.openejb.jee.sun.SunEjbJar;
-import org.apache.openejb.jee.sun.EjbRef;
-import org.apache.openejb.jee.sun.SunApplicationClient;
-import org.apache.openejb.jee.sun.ResourceEnvRef;
-import org.apache.openejb.jee.sun.MessageDestinationRef;
-import org.apache.openejb.jee.sun.ResourceRef;
 import org.apache.openejb.jee.sun.SunWebApp;
-import org.apache.openejb.jee.sun.PortInfo;
-import org.apache.openejb.jee.sun.StubProperty;
+import org.apache.openejb.jee.sun.WebserviceEndpoint;
+
+import java.io.ByteArrayInputStream;
+import java.net.URL;
+import java.util.ArrayList;
+import java.util.Arrays;
+import java.util.Collection;
+import java.util.Collections;
+import java.util.HashMap;
+import java.util.LinkedList;
+import java.util.List;
+import java.util.Map;
+import java.util.StringTokenizer;
+import java.util.TreeMap;
 
 //
 // Note to developer:  the best doc on what the sun-cmp-mappings element mean 
can be foudn here
@@ -461,6 +464,7 @@
         if (sunEjbJar == null) return;
         if (sunEjbJar.getEnterpriseBeans() == null) return;
 
+        Map<String,Map<String, WebserviceEndpoint>> endpointMap = new 
HashMap<String,Map<String, WebserviceEndpoint>>();
         for (Ejb ejb : sunEjbJar.getEnterpriseBeans().getEjb()) {
             EjbDeployment deployment = 
openejbJar.getDeploymentsByEjbName().get(ejb.getEjbName());
             if (deployment == null) {
@@ -570,19 +574,36 @@
                 deployment.setContainerId(resourceAdapterId);
             }
 
+            endpointMap.put(ejb.getEjbName(), ejb.getWebserviceEndpointMap());
+        }
 
-            // map wsdl locations
-            if (ejbModule.getWebservices() != null) {
-                Map<String, WebserviceDescription> descriptions = 
ejbModule.getWebservices().getWebserviceDescriptionMap();
-                for (org.apache.openejb.jee.sun.WebserviceDescription 
sunDescription : sunEjbJar.getEnterpriseBeans().getWebserviceDescription()) {
-                    WebserviceDescription description = 
descriptions.get(sunDescription.getWebserviceDescriptionName());
-                    if (description == null) continue;
+        // map wsdl locations
+        if (ejbModule.getWebservices() != null) {
+            Map<String, org.apache.openejb.jee.sun.WebserviceDescription> 
sunDescriptions = sunEjbJar.getEnterpriseBeans().getWebserviceDescriptionMap();
+            for (WebserviceDescription description : 
ejbModule.getWebservices().getWebserviceDescription()) {
+                org.apache.openejb.jee.sun.WebserviceDescription 
sunDescription = 
sunDescriptions.get(description.getWebserviceDescriptionName());
+
+                // get the portId if specified
+                String portId = null;
+                if (sunDescription != null) {
+                    portId = 
extractPortId(sunDescription.getWsdlPublishLocation(), 
description.getWsdlFile());
+                }
 
-                    String portId = 
extractPortId(sunDescription.getWsdlPublishLocation(), 
description.getWsdlFile());
+                for (PortComponent port : description.getPortComponent()) {
+                    // set the portId
                     if (portId != null) {
-                        for (PortComponent portComponent : 
description.getPortComponent()) {
-                            // this could be a problem multiple port 
components used at runtime
-                            portComponent.setId(portId);
+                        port.setId(portId);
+                    }
+
+                    // set the bind location
+                    ServiceImplBean bean = port.getServiceImplBean();
+                    if (bean != null && bean.getEjbLink() != null) {
+                        Map<String, WebserviceEndpoint> endpoints = 
endpointMap.get(bean.getEjbLink());
+                        if (endpoints != null) {
+                            WebserviceEndpoint endpoint = 
endpoints.get(port.getPortComponentName());
+                            if (endpoint != null && 
endpoint.getEndpointAddressUri() != null) {
+                                
port.setLocation(endpoint.getEndpointAddressUri());
+                            }
                         }
                     }
                 }

Modified: 
openejb/trunk/openejb3/container/openejb-core/src/main/java/org/apache/openejb/config/WsDeployer.java
URL: 
http://svn.apache.org/viewvc/openejb/trunk/openejb3/container/openejb-core/src/main/java/org/apache/openejb/config/WsDeployer.java?rev=592257&r1=592256&r2=592257&view=diff
==============================================================================
--- 
openejb/trunk/openejb3/container/openejb-core/src/main/java/org/apache/openejb/config/WsDeployer.java
 (original)
+++ 
openejb/trunk/openejb3/container/openejb-core/src/main/java/org/apache/openejb/config/WsDeployer.java
 Mon Nov  5 19:57:34 2007
@@ -35,15 +35,19 @@
 import org.apache.openejb.util.LogCategory;
 import org.apache.openejb.util.Logger;
 
-import javax.xml.namespace.QName;
 import javax.wsdl.Definition;
+import javax.wsdl.Port;
+import javax.wsdl.extensions.http.HTTPAddress;
+import javax.wsdl.extensions.soap.SOAPAddress;
+import javax.xml.namespace.QName;
 import java.io.File;
 import java.net.MalformedURLException;
+import java.net.URI;
 import java.net.URL;
 import java.util.HashMap;
 import java.util.Map;
-import java.util.TreeMap;
 import java.util.Set;
+import java.util.TreeMap;
 
 public class WsDeployer implements DynamicDeployer {
     public static final Logger logger = 
Logger.getInstance(LogCategory.OPENEJB_STARTUP, 
WsDeployer.class.getPackage().getName());
@@ -165,6 +169,7 @@
                     if (portComponent == null) {
                         // create port
                         portComponent = new PortComponent();
+                        
portComponent.setPortComponentName(JaxWsUtils.getName(clazz));
                         ServiceImplBean serviceImplBean = new 
ServiceImplBean();
                         serviceImplBean.setServletLink(className);
                         portComponent.setServiceImplBean(serviceImplBean);
@@ -191,9 +196,6 @@
                     if (portComponent.getServiceEndpointInterface() == null) {
                         
portComponent.setServiceEndpointInterface(JaxWsUtils.getServiceInterface(clazz));
                     }
-                    if (portComponent.getPortComponentName() == null) {
-                        
portComponent.setPortComponentName(JaxWsUtils.getName(clazz));
-                    }
                     if (portComponent.getWsdlPort() == null) {
                         
portComponent.setWsdlPort(JaxWsUtils.getPortQName(clazz));
                     }
@@ -225,9 +227,25 @@
             }
         }
 
+        URL baseURL = null;
+        try {
+            File file = new File(ejbModule.getJarLocation());
+            if (file.exists()) {
+                baseURL = file.toURL();
+                if (file.isFile()) {
+                    baseURL = new URL("jar", null, baseURL.toExternalForm() + 
"!/");
+                }
+            } else {
+                baseURL = new URL(ejbModule.getJarLocation());
+            }
+        } catch (MalformedURLException e) {
+            logger.error("Invalid module location " + 
ejbModule.getJarLocation());
+        }
+
         Map<String, EjbDeployment> deploymentsByEjbName = 
ejbModule.getOpenejbJar().getDeploymentsByEjbName();
 
         WebserviceDescription webserviceDescription = null;
+        Definition definition = null;
         for (EnterpriseBean enterpriseBean : 
ejbModule.getEjbJar().getEnterpriseBeans()) {
             // skip if this is not a webservices endpoint
             if (!(enterpriseBean instanceof SessionBean)) continue;
@@ -235,16 +253,20 @@
             if (sessionBean.getSessionType() != SessionType.STATELESS) 
continue;
             if (sessionBean.getServiceEndpoint() == null) continue;
 
+
             EjbDeployment deployment = 
deploymentsByEjbName.get(sessionBean.getEjbName());
             if (deployment == null) continue;
 
-            Class<?> ejbClass = null;
+            Class<?> ejbClass;
             try {
                 ejbClass = 
ejbModule.getClassLoader().loadClass(sessionBean.getEjbClass());
             } catch (ClassNotFoundException e) {
                 throw new OpenEJBException("Unable to load ejb class: " + 
sessionBean.getEjbClass(), e);
             }
 
+            // for now, skip all non jaxws beans
+            if (!JaxWsUtils.isWebService(ejbClass)) continue;
+
             // create webservices dd if not defined
             if (webservices == null) {
                 webservices = new Webservices();
@@ -264,6 +286,7 @@
             PortComponent portComponent = 
portMap.get(sessionBean.getEjbName());
             if (portComponent == null) {
                 portComponent = new PortComponent();
+                
portComponent.setPortComponentName(JaxWsUtils.getName(ejbClass));
                 webserviceDescription.getPortComponent().add(portComponent);
 
                 ServiceImplBean serviceImplBean = new ServiceImplBean();
@@ -283,9 +306,6 @@
 
             // default location is /@WebService.serviceName/@WebService.name
             if (JaxWsUtils.isWebService(ejbClass)) {
-                if (portComponent.getPortComponentName() == null) {
-                    
portComponent.setPortComponentName(JaxWsUtils.getName(ejbClass));
-                }
                 if (portComponent.getWsdlPort() == null) {
                     
portComponent.setWsdlPort(JaxWsUtils.getPortQName(ejbClass));
                 }
@@ -295,9 +315,47 @@
                 if (webserviceDescription.getWsdlFile() == null) {
                     
webserviceDescription.setWsdlFile(JaxWsUtils.getServiceWsdlLocation(ejbClass, 
ejbModule.getClassLoader()));
                 }
+                if (portComponent.getLocation() == null && 
webserviceDescription.getWsdlFile() != null && baseURL != null) {
+                    if (definition == null) {
+                        try {
+                            definition = ReadDescriptors.readWsdl(new 
URL(baseURL, webserviceDescription.getWsdlFile()));
+                        } catch (Exception e) {
+                        }
+                    }
+
+                    // set location based on wsdl port
+                    String locationURI = getLocationFromWsdl(definition, 
portComponent);
+                    portComponent.setLocation(locationURI);
+                }
             } else {
                 // todo location JAX-RPC services comes from wsdl file
             }
         }
+    }
+
+    private String getLocationFromWsdl(Definition definition, PortComponent 
portComponent) {
+        if (definition == null) return null;
+
+        try {
+            javax.wsdl.Service service = 
definition.getService(portComponent.getWsdlService());
+            if (service == null) return null;
+
+            Port port = 
service.getPort(portComponent.getWsdlPort().getLocalPart());
+            if (port == null) return null;
+
+            for (Object element : port.getExtensibilityElements()) {
+                if (element instanceof SOAPAddress) {
+                    SOAPAddress soapAddress = (SOAPAddress) element;
+                    URI uri = new URI(soapAddress.getLocationURI());
+                    return uri.getPath();
+                } else if (element instanceof HTTPAddress) {
+                    HTTPAddress httpAddress = (HTTPAddress) element;
+                    URI uri = new URI(httpAddress.getLocationURI());
+                    return uri.getPath();
+                }
+            }
+        } catch (Exception e) {
+        }
+        return null;
     }
 }

Modified: 
openejb/trunk/openejb3/container/openejb-core/src/main/java/org/apache/openejb/core/webservices/JaxWsUtils.java
URL: 
http://svn.apache.org/viewvc/openejb/trunk/openejb3/container/openejb-core/src/main/java/org/apache/openejb/core/webservices/JaxWsUtils.java?rev=592257&r1=592256&r2=592257&view=diff
==============================================================================
--- 
openejb/trunk/openejb3/container/openejb-core/src/main/java/org/apache/openejb/core/webservices/JaxWsUtils.java
 (original)
+++ 
openejb/trunk/openejb3/container/openejb-core/src/main/java/org/apache/openejb/core/webservices/JaxWsUtils.java
 Mon Nov  5 19:57:34 2007
@@ -196,7 +196,7 @@
 
         WebServiceProvider webServiceProvider = 
clazz.getAnnotation(WebServiceProvider.class);
         if (webServiceProvider != null) {
-            return clazz.getSimpleName();
+            return clazz.getName();
         }
 
         throw new IllegalArgumentException("The " + clazz.getName() + " is not 
annotated");

Modified: 
openejb/trunk/openejb3/container/openejb-jee/src/main/java/org/apache/openejb/jee/sun/Ejb.java
URL: 
http://svn.apache.org/viewvc/openejb/trunk/openejb3/container/openejb-jee/src/main/java/org/apache/openejb/jee/sun/Ejb.java?rev=592257&r1=592256&r2=592257&view=diff
==============================================================================
--- 
openejb/trunk/openejb3/container/openejb-jee/src/main/java/org/apache/openejb/jee/sun/Ejb.java
 (original)
+++ 
openejb/trunk/openejb3/container/openejb-jee/src/main/java/org/apache/openejb/jee/sun/Ejb.java
 Mon Nov  5 19:57:34 2007
@@ -16,6 +16,8 @@
  */
 package org.apache.openejb.jee.sun;
 
+import org.apache.openejb.jee.KeyedCollection;
+
 import javax.xml.bind.annotation.XmlAccessType;
 import javax.xml.bind.annotation.XmlAccessorType;
 import javax.xml.bind.annotation.XmlAttribute;
@@ -24,7 +26,9 @@
 import javax.xml.bind.annotation.adapters.NormalizedStringAdapter;
 import javax.xml.bind.annotation.adapters.XmlJavaTypeAdapter;
 import java.util.ArrayList;
+import java.util.Collection;
 import java.util.List;
+import java.util.Map;
 
 @XmlAccessorType(XmlAccessType.FIELD)
 @XmlType(name = "", propOrder = {
@@ -105,7 +109,7 @@
     @XmlElement(name = "mdb-resource-adapter")
     protected MdbResourceAdapter mdbResourceAdapter;
     @XmlElement(name = "webservice-endpoint")
-    protected List<WebserviceEndpoint> webserviceEndpoint;
+    protected KeyedCollection<String,WebserviceEndpoint> webserviceEndpoint;
     @XmlElement(name = "flush-at-end-of-method")
     protected FlushAtEndOfMethod flushAtEndOfMethod;
     @XmlElement(name = "checkpointed-methods")
@@ -300,11 +304,18 @@
         this.mdbResourceAdapter = value;
     }
 
-    public List<WebserviceEndpoint> getWebserviceEndpoint() {
+    public Collection<WebserviceEndpoint> getWebserviceEndpoint() {
         if (webserviceEndpoint == null) {
-            webserviceEndpoint = new ArrayList<WebserviceEndpoint>();
+            webserviceEndpoint = new 
KeyedCollection<String,WebserviceEndpoint>();
         }
         return this.webserviceEndpoint;
+    }
+
+    public Map<String,WebserviceEndpoint> getWebserviceEndpointMap() {
+        if (webserviceEndpoint == null) {
+            webserviceEndpoint = new 
KeyedCollection<String,WebserviceEndpoint>();
+        }
+        return this.webserviceEndpoint.toMap();
     }
 
     public FlushAtEndOfMethod getFlushAtEndOfMethod() {

Modified: 
openejb/trunk/openejb3/container/openejb-jee/src/main/java/org/apache/openejb/jee/sun/EnterpriseBeans.java
URL: 
http://svn.apache.org/viewvc/openejb/trunk/openejb3/container/openejb-jee/src/main/java/org/apache/openejb/jee/sun/EnterpriseBeans.java?rev=592257&r1=592256&r2=592257&view=diff
==============================================================================
--- 
openejb/trunk/openejb3/container/openejb-jee/src/main/java/org/apache/openejb/jee/sun/EnterpriseBeans.java
 (original)
+++ 
openejb/trunk/openejb3/container/openejb-jee/src/main/java/org/apache/openejb/jee/sun/EnterpriseBeans.java
 Mon Nov  5 19:57:34 2007
@@ -16,12 +16,16 @@
  */
 package org.apache.openejb.jee.sun;
 
+import org.apache.openejb.jee.KeyedCollection;
+
 import javax.xml.bind.annotation.XmlAccessType;
 import javax.xml.bind.annotation.XmlAccessorType;
 import javax.xml.bind.annotation.XmlElement;
 import javax.xml.bind.annotation.XmlType;
 import java.util.ArrayList;
+import java.util.Collection;
 import java.util.List;
+import java.util.Map;
 
 @XmlAccessorType(XmlAccessType.FIELD)
 @XmlType(name = "", propOrder = {
@@ -45,7 +49,7 @@
     @XmlElement(name = "message-destination")
     protected List<MessageDestination> messageDestination;
     @XmlElement(name = "webservice-description")
-    protected List<WebserviceDescription> webserviceDescription;
+    protected KeyedCollection<String, WebserviceDescription> 
webserviceDescription;
 
     public String getName() {
         return name;
@@ -93,10 +97,17 @@
         return this.messageDestination;
     }
 
-    public List<WebserviceDescription> getWebserviceDescription() {
+    public Collection<WebserviceDescription> getWebserviceDescription() {
         if (webserviceDescription == null) {
-            webserviceDescription = new ArrayList<WebserviceDescription>();
+            webserviceDescription = new 
KeyedCollection<String,WebserviceDescription>();
         }
         return this.webserviceDescription;
+    }
+
+    public Map<String,WebserviceDescription> getWebserviceDescriptionMap() {
+        if (webserviceDescription == null) {
+            webserviceDescription = new 
KeyedCollection<String,WebserviceDescription>();
+        }
+        return this.webserviceDescription.toMap();
     }
 }

Modified: 
openejb/trunk/openejb3/container/openejb-jee/src/main/java/org/apache/openejb/jee/sun/Servlet.java
URL: 
http://svn.apache.org/viewvc/openejb/trunk/openejb3/container/openejb-jee/src/main/java/org/apache/openejb/jee/sun/Servlet.java?rev=592257&r1=592256&r2=592257&view=diff
==============================================================================
--- 
openejb/trunk/openejb3/container/openejb-jee/src/main/java/org/apache/openejb/jee/sun/Servlet.java
 (original)
+++ 
openejb/trunk/openejb3/container/openejb-jee/src/main/java/org/apache/openejb/jee/sun/Servlet.java
 Mon Nov  5 19:57:34 2007
@@ -16,12 +16,14 @@
  */
 package org.apache.openejb.jee.sun;
 
+import org.apache.openejb.jee.KeyedCollection;
+
 import javax.xml.bind.annotation.XmlAccessType;
 import javax.xml.bind.annotation.XmlAccessorType;
 import javax.xml.bind.annotation.XmlElement;
 import javax.xml.bind.annotation.XmlType;
-import java.util.ArrayList;
-import java.util.List;
+import java.util.Collection;
+import java.util.Map;
 
 @XmlAccessorType(XmlAccessType.FIELD)
 @XmlType(name = "", propOrder = {
@@ -35,7 +37,7 @@
     @XmlElement(name = "principal-name")
     protected PrincipalName principalName;
     @XmlElement(name = "webservice-endpoint")
-    protected List<WebserviceEndpoint> webserviceEndpoint;
+    protected KeyedCollection<String,WebserviceEndpoint> webserviceEndpoint;
 
     public ServletName getServletName() {
         return servletName;
@@ -53,10 +55,17 @@
         this.principalName = value;
     }
 
-    public List<WebserviceEndpoint> getWebserviceEndpoint() {
+    public Collection<WebserviceEndpoint> getWebserviceEndpoint() {
         if (webserviceEndpoint == null) {
-            webserviceEndpoint = new ArrayList<WebserviceEndpoint>();
+            webserviceEndpoint = new 
KeyedCollection<String,WebserviceEndpoint>();
         }
         return this.webserviceEndpoint;
+    }
+
+    public Map<String,WebserviceEndpoint> getWebserviceEndpointMap() {
+        if (webserviceEndpoint == null) {
+            webserviceEndpoint = new 
KeyedCollection<String,WebserviceEndpoint>();
+        }
+        return this.webserviceEndpoint.toMap();
     }
 }

Modified: 
openejb/trunk/openejb3/container/openejb-jee/src/main/java/org/apache/openejb/jee/sun/WebserviceDescription.java
URL: 
http://svn.apache.org/viewvc/openejb/trunk/openejb3/container/openejb-jee/src/main/java/org/apache/openejb/jee/sun/WebserviceDescription.java?rev=592257&r1=592256&r2=592257&view=diff
==============================================================================
--- 
openejb/trunk/openejb3/container/openejb-jee/src/main/java/org/apache/openejb/jee/sun/WebserviceDescription.java
 (original)
+++ 
openejb/trunk/openejb3/container/openejb-jee/src/main/java/org/apache/openejb/jee/sun/WebserviceDescription.java
 Mon Nov  5 19:57:34 2007
@@ -16,6 +16,8 @@
  */
 package org.apache.openejb.jee.sun;
 
+import org.apache.openejb.jee.Keyable;
+
 import javax.xml.bind.annotation.XmlAccessType;
 import javax.xml.bind.annotation.XmlAccessorType;
 import javax.xml.bind.annotation.XmlElement;
@@ -26,11 +28,15 @@
     "webserviceDescriptionName",
     "wsdlPublishLocation"
 })
-public class WebserviceDescription {
+public class WebserviceDescription implements Keyable<String> {
     @XmlElement(name = "webservice-description-name", required = true)
     protected String webserviceDescriptionName;
     @XmlElement(name = "wsdl-publish-location")
     protected String wsdlPublishLocation;
+
+    public String getKey() {
+        return webserviceDescriptionName;
+    }
 
     public String getWebserviceDescriptionName() {
         return webserviceDescriptionName;

Modified: 
openejb/trunk/openejb3/container/openejb-jee/src/main/java/org/apache/openejb/jee/sun/WebserviceEndpoint.java
URL: 
http://svn.apache.org/viewvc/openejb/trunk/openejb3/container/openejb-jee/src/main/java/org/apache/openejb/jee/sun/WebserviceEndpoint.java?rev=592257&r1=592256&r2=592257&view=diff
==============================================================================
--- 
openejb/trunk/openejb3/container/openejb-jee/src/main/java/org/apache/openejb/jee/sun/WebserviceEndpoint.java
 (original)
+++ 
openejb/trunk/openejb3/container/openejb-jee/src/main/java/org/apache/openejb/jee/sun/WebserviceEndpoint.java
 Mon Nov  5 19:57:34 2007
@@ -16,6 +16,8 @@
  */
 package org.apache.openejb.jee.sun;
 
+import org.apache.openejb.jee.Keyable;
+
 import javax.xml.bind.annotation.XmlAccessType;
 import javax.xml.bind.annotation.XmlAccessorType;
 import javax.xml.bind.annotation.XmlElement;
@@ -35,7 +37,7 @@
     "servletImplClass",
     "debuggingEnabled"
 })
-public class WebserviceEndpoint {
+public class WebserviceEndpoint implements Keyable<String> {
     @XmlElement(name = "port-component-name", required = true)
     protected String portComponentName;
     @XmlElement(name = "endpoint-address-uri")
@@ -55,6 +57,10 @@
     protected String servletImplClass;
     @XmlElement(name = "debugging-enabled")
     protected String debuggingEnabled;
+
+    public String getKey() {
+        return portComponentName;
+    }
 
     public String getPortComponentName() {
         return portComponentName;

Modified: 
openejb/trunk/openejb3/container/openejb-jee/src/test/resources/application-client-example.xml
URL: 
http://svn.apache.org/viewvc/openejb/trunk/openejb3/container/openejb-jee/src/test/resources/application-client-example.xml?rev=592257&r1=592256&r2=592257&view=diff
==============================================================================
--- 
openejb/trunk/openejb3/container/openejb-jee/src/test/resources/application-client-example.xml
 (original)
+++ 
openejb/trunk/openejb3/container/openejb-jee/src/test/resources/application-client-example.xml
 Mon Nov  5 19:57:34 2007
@@ -42,7 +42,7 @@
         <service-ref-type>token</service-ref-type>
         <wsdl-file>http://www.altova.com</wsdl-file>
         <jaxrpc-mapping-file>token</jaxrpc-mapping-file>
-        <service-qname>q:name</service-qname>
+        <service-qname 
xmlns:q="http://examples.org/wsdl";>q:name</service-qname>
         <port-component-ref>
             <service-endpoint-interface>token</service-endpoint-interface>
             <enable-mtom>true</enable-mtom>

Modified: 
openejb/trunk/openejb3/container/openejb-jee/src/test/resources/ejb-jar-example1.xml
URL: 
http://svn.apache.org/viewvc/openejb/trunk/openejb3/container/openejb-jee/src/test/resources/ejb-jar-example1.xml?rev=592257&r1=592256&r2=592257&view=diff
==============================================================================
--- 
openejb/trunk/openejb3/container/openejb-jee/src/test/resources/ejb-jar-example1.xml
 (original)
+++ 
openejb/trunk/openejb3/container/openejb-jee/src/test/resources/ejb-jar-example1.xml
 Mon Nov  5 19:57:34 2007
@@ -154,7 +154,7 @@
                 <service-ref-type>token1</service-ref-type>
                 <wsdl-file>http://www.altova.com</wsdl-file>
                 <jaxrpc-mapping-file>token</jaxrpc-mapping-file>
-                <service-qname>q:name</service-qname>
+                <service-qname 
xmlns:q="http://examples.org/wsdl";>q:name</service-qname>
                 <port-component-ref>
                     
<service-endpoint-interface>token</service-endpoint-interface>
                     <enable-mtom>true</enable-mtom>
@@ -196,7 +196,7 @@
                 <service-ref-type>token2</service-ref-type>
                 <wsdl-file>http://www.altova.com</wsdl-file>
                 <jaxrpc-mapping-file>token</jaxrpc-mapping-file>
-                <service-qname>q:name</service-qname>
+                <service-qname 
xmlns:q="http://examples.org/wsdl";>q:name</service-qname>
                 <port-component-ref>
                     
<service-endpoint-interface>token</service-endpoint-interface>
                     <port-component-link>token</port-component-link>
@@ -369,7 +369,7 @@
                 <service-ref-type>token</service-ref-type>
                 <wsdl-file>http://www.altova.com</wsdl-file>
                 <jaxrpc-mapping-file>token</jaxrpc-mapping-file>
-                <service-qname>q:name</service-qname>
+                <service-qname 
xmlns:q="http://examples.org/wsdl";>q:name</service-qname>
                 <port-component-ref>
                     
<service-endpoint-interface>token</service-endpoint-interface>
                     <enable-mtom>true</enable-mtom>


Reply via email to