You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@tomee.apache.org by db...@apache.org on 2007/04/18 06:50:50 UTC

svn commit: r529864 - /incubator/openejb/trunk/openejb3/container/openejb-core/src/main/java/org/apache/openejb/config/AnnotationDeployer.java

Author: dblevins
Date: Tue Apr 17 21:50:49 2007
New Revision: 529864

URL: http://svn.apache.org/viewvc?view=rev&rev=529864
Log:
Patch from Jarek Gawor OPENEJB-562: WebServiceRef annotation processing does not check for existing service-ref elements in DD
Thanks Jarek!

Modified:
    incubator/openejb/trunk/openejb3/container/openejb-core/src/main/java/org/apache/openejb/config/AnnotationDeployer.java

Modified: incubator/openejb/trunk/openejb3/container/openejb-core/src/main/java/org/apache/openejb/config/AnnotationDeployer.java
URL: http://svn.apache.org/viewvc/incubator/openejb/trunk/openejb3/container/openejb-core/src/main/java/org/apache/openejb/config/AnnotationDeployer.java?view=diff&rev=529864&r1=529863&r2=529864
==============================================================================
--- incubator/openejb/trunk/openejb3/container/openejb-core/src/main/java/org/apache/openejb/config/AnnotationDeployer.java (original)
+++ incubator/openejb/trunk/openejb3/container/openejb-core/src/main/java/org/apache/openejb/config/AnnotationDeployer.java Tue Apr 17 21:50:49 2007
@@ -1066,14 +1066,26 @@
 
         private void buildWebServiceRef(JndiConsumer consumer, WebServiceRef webService, Member member) {
 
-            ServiceRef serviceRef = new ServiceRef();
+            ServiceRef serviceRef = null;
 
             String refName = webService.name();
             if (refName.equals("")) {
                 refName = (member == null) ? null : member.getDeclaringClass().getName() + "/" + member.getName();
             }
-            serviceRef.setServiceRefName(refName);
+            
+            List<ServiceRef> serviceRefEntries = consumer.getServiceRef();
+            for (ServiceRef serviceRefEntry : serviceRefEntries) {
+                if (serviceRefEntry.getName().equals(refName)) {
+                    serviceRef = serviceRefEntry;
+                    break;
+                }
+            }
 
+            if (serviceRef == null) {
+                serviceRef = new ServiceRef();
+                serviceRef.setServiceRefName(refName);
+                serviceRefEntries.add(serviceRef);
+            }
 
             if (member != null) {
                 // Set the member name where this will be injected
@@ -1083,31 +1095,35 @@
                 serviceRef.getInjectionTarget().add(target);
             }
 
-            Class<?> interfce = webService.type();
-            if (interfce.equals(Object.class)) {
-                if (member != null) {
-                    interfce = member.getType();
-                } else {
-                    interfce = webService.value();
+            // Set service interface
+            if (serviceRef.getServiceInterface() == null) {
+                Class<?> interfce = webService.type();
+                if (interfce.equals(Object.class)) {
+                    if (member != null) {
+                        interfce = member.getType();
+                    } else {
+                        interfce = webService.value();
+                    }
                 }
+                serviceRef.setServiceInterface(interfce.getName());
             }
-            serviceRef.setServiceInterface(interfce.getName());
 
-            // Set the mappedName, if any
-            String mappedName = webService.mappedName();
-            if (mappedName.equals("")) {
-                mappedName = null;
+            // Set the mappedName
+            if (serviceRef.getMappedName() == null) {
+                String mappedName = webService.mappedName();
+                if (mappedName.equals("")) {
+                    mappedName = null;
+                }
+                serviceRef.setMappedName(mappedName);
             }
-            serviceRef.setMappedName(mappedName);
-
-
-            String wsdlLocation = webService.wsdlLocation();
-            if (!wsdlLocation.equals("")) {
-                serviceRef.setWsdlFile(wsdlLocation);
+            
+            // Set wsdl file
+            if (serviceRef.getWsdlFile() == null) {
+                String wsdlLocation = webService.wsdlLocation();
+                if (!wsdlLocation.equals("")) {
+                    serviceRef.setWsdlFile(wsdlLocation);
+                }
             }
-
-            consumer.getServiceRef().add(serviceRef);
-
         }
 
         /**