Author: sergeyb
Date: Tue Sep 30 08:47:51 2008
New Revision: 700507

URL: http://svn.apache.org/viewvc?rev=700507&view=rev
Log:
Updating EndpointReferenceUtils.setPortName to recognize DOM Elements and 
getServiceName to accept the older ServiceName namespace 

Modified:
    cxf/trunk/api/src/main/java/org/apache/cxf/wsdl/EndpointReferenceUtils.java
    
cxf/trunk/rt/ws/addr/src/test/java/org/apache/cxf/ws/addressing/VersionTransformerTest.java

Modified: 
cxf/trunk/api/src/main/java/org/apache/cxf/wsdl/EndpointReferenceUtils.java
URL: 
http://svn.apache.org/viewvc/cxf/trunk/api/src/main/java/org/apache/cxf/wsdl/EndpointReferenceUtils.java?rev=700507&r1=700506&r2=700507&view=diff
==============================================================================
--- cxf/trunk/api/src/main/java/org/apache/cxf/wsdl/EndpointReferenceUtils.java 
(original)
+++ cxf/trunk/api/src/main/java/org/apache/cxf/wsdl/EndpointReferenceUtils.java 
Tue Sep 30 08:47:51 2008
@@ -177,6 +177,7 @@
 
     private static final Logger LOG = 
LogUtils.getL7dLogger(EndpointReferenceUtils.class);
 
+    private static final String NS_WSAW_2005 = 
"http://www.w3.org/2005/02/addressing/wsdl";;
     private static final String WSDL_INSTANCE_NAMESPACE = 
         "http://www.w3.org/2006/01/wsdl-instance";;
     
@@ -268,7 +269,8 @@
         for (Object obj : metadata.getAny()) {
             if (obj instanceof Element) {
                 Node node = (Element)obj;
-                if (node.getNamespaceURI().equals(JAXWSAConstants.NS_WSAW) 
+                if ((node.getNamespaceURI().equals(JAXWSAConstants.NS_WSAW)
+                    || node.getNamespaceURI().equals(NS_WSAW_2005))
                     && node.getLocalName().equals("ServiceName")) {
                     String content = node.getTextContent();
                     String namespaceURI = 
node.getFirstChild().getNamespaceURI();
@@ -309,9 +311,11 @@
             for (Object obj : metadata.getAny()) {
                 if (obj instanceof Element) {
                     Node node = (Element)obj;
-                    if (node.getNamespaceURI().equals(JAXWSAConstants.NS_WSAW)
+                    if ((node.getNamespaceURI().equals(JAXWSAConstants.NS_WSAW)
+                        || node.getNamespaceURI().equals(NS_WSAW_2005))
                         && node.getNodeName().contains("ServiceName")) {
-                        return 
node.getAttributes().getNamedItem("EndpointName").getTextContent();
+                        Node item = 
node.getAttributes().getNamedItem("EndpointName");
+                        return item != null ? item.getTextContent() : null;
                     }
                 } else if (obj instanceof JAXBElement) {
                     Object val = ((JAXBElement)obj).getValue();
@@ -335,7 +339,14 @@
         MetadataType metadata = ref.getMetadata();
         if (metadata != null) {
             for (Object obj : metadata.getAny()) {
-                if (obj instanceof JAXBElement) {
+                if (obj instanceof Element) {
+                    Element node = (Element)obj;
+                    if (node.getNodeName().contains("ServiceName")
+                        && 
(node.getNamespaceURI().equals(JAXWSAConstants.NS_WSAW)
+                        || node.getNamespaceURI().equals(NS_WSAW_2005))) {
+                        node.setAttribute(JAXWSAConstants.WSAW_ENDPOINT_NAME, 
portName);
+                    }
+                } else if (obj instanceof JAXBElement) {
                     Object val = ((JAXBElement)obj).getValue();
                     if (val instanceof ServiceNameType) {
                         ((ServiceNameType)val).setEndpointName(portName);

Modified: 
cxf/trunk/rt/ws/addr/src/test/java/org/apache/cxf/ws/addressing/VersionTransformerTest.java
URL: 
http://svn.apache.org/viewvc/cxf/trunk/rt/ws/addr/src/test/java/org/apache/cxf/ws/addressing/VersionTransformerTest.java?rev=700507&r1=700506&r2=700507&view=diff
==============================================================================
--- 
cxf/trunk/rt/ws/addr/src/test/java/org/apache/cxf/ws/addressing/VersionTransformerTest.java
 (original)
+++ 
cxf/trunk/rt/ws/addr/src/test/java/org/apache/cxf/ws/addressing/VersionTransformerTest.java
 Tue Sep 30 08:47:51 2008
@@ -20,6 +20,7 @@
 package org.apache.cxf.ws.addressing;
 
 import java.io.InputStream;
+import java.util.List;
 
 import javax.xml.bind.JAXBContext;
 import javax.xml.bind.JAXBException;
@@ -31,6 +32,7 @@
 import javax.xml.ws.wsaddressing.W3CEndpointReference;
 
 import org.w3c.dom.Document;
+import org.w3c.dom.Element;
 
 import org.apache.cxf.helpers.XMLUtils;
 import org.apache.cxf.wsdl.EndpointReferenceUtils;
@@ -38,7 +40,6 @@
 import org.junit.Test;
 
 
-
 public class VersionTransformerTest extends Assert {
     
     @Test
@@ -54,6 +55,18 @@
         assertEquals("http://localhost:8080/test";, 
ert.getAddress().getValue());
         assertEquals(new QName("http://apache.org/hello_world_soap_http";, 
"SOAPService"), 
                                EndpointReferenceUtils.getServiceName(ert, 
null));
+        
+        // VersionTransformer.convertToInternal produces metadata extensions 
of type 
+        // DOM Element hence we're testing the relevant 
EndpointReferenceUtils.setPortName
+        // code path here
+        
+        List<Object> metadata = ert.getMetadata().getAny();
+        assertEquals("Single metadata extension expected", 1, metadata.size());
+        assertTrue("Metadata extension of type DOM Element expected", 
+                   metadata.get(0) instanceof Element);
+        assertNull("No portName has been set yet", 
EndpointReferenceUtils.getPortName(ert));
+        EndpointReferenceUtils.setPortName(ert, "Greeter");
+        assertEquals("No portName has been set", "Greeter", 
EndpointReferenceUtils.getPortName(ert));
     }
     
     private EndpointReference readEndpointReference(Source eprInfoset) {


Reply via email to