Repository: cxf
Updated Branches:
  refs/heads/master 5a2aa10e3 -> d88cd9e42


Update to cxf frontend to create/use special Proxy interfaces that implement 
Closeable, BindingProvider, Client to work very nicely with Java7.


Project: http://git-wip-us.apache.org/repos/asf/cxf/repo
Commit: http://git-wip-us.apache.org/repos/asf/cxf/commit/1c7a34e3
Tree: http://git-wip-us.apache.org/repos/asf/cxf/tree/1c7a34e3
Diff: http://git-wip-us.apache.org/repos/asf/cxf/diff/1c7a34e3

Branch: refs/heads/master
Commit: 1c7a34e313062edff246c2c1943d43b71b0f8aa7
Parents: 5a2aa10
Author: Daniel Kulp <dk...@apache.org>
Authored: Thu Apr 9 15:51:15 2015 -0400
Committer: Daniel Kulp <dk...@apache.org>
Committed: Thu Apr 9 15:51:15 2015 -0400

----------------------------------------------------------------------
 .../ws/addr_fromwsdl/WSAFromWSDLTest.java       | 92 ++++++++++----------
 .../tools/wsdlto/core/AbstractGenerator.java    |  6 ++
 .../jaxws/generators/ServiceGenerator.java      | 12 ++-
 .../wsdlto/frontend/jaxws/template/service.vm   | 19 ++++
 4 files changed, 84 insertions(+), 45 deletions(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/cxf/blob/1c7a34e3/systests/ws-specs/src/test/java/org/apache/cxf/systest/ws/addr_fromwsdl/WSAFromWSDLTest.java
----------------------------------------------------------------------
diff --git 
a/systests/ws-specs/src/test/java/org/apache/cxf/systest/ws/addr_fromwsdl/WSAFromWSDLTest.java
 
b/systests/ws-specs/src/test/java/org/apache/cxf/systest/ws/addr_fromwsdl/WSAFromWSDLTest.java
index f0994a6..3c8fbcd 100644
--- 
a/systests/ws-specs/src/test/java/org/apache/cxf/systest/ws/addr_fromwsdl/WSAFromWSDLTest.java
+++ 
b/systests/ws-specs/src/test/java/org/apache/cxf/systest/ws/addr_fromwsdl/WSAFromWSDLTest.java
@@ -31,6 +31,7 @@ import org.apache.cxf.systest.ws.AbstractWSATestBase;
 import org.apache.cxf.systest.ws.addr_feature.AddNumbersFault_Exception;
 import org.apache.cxf.systest.ws.addr_feature.AddNumbersPortType;
 import org.apache.cxf.systest.ws.addr_feature.AddNumbersService;
+import 
org.apache.cxf.systest.ws.addr_feature.AddNumbersService.AddNumbersPortTypeProxy;
 import org.apache.cxf.ws.addressing.AddressingProperties;
 import org.apache.cxf.ws.addressing.AttributedURIType;
 import org.apache.cxf.ws.addressing.EndpointReferenceType;
@@ -137,67 +138,70 @@ public class WSAFromWSDLTest extends AbstractWSATestBase {
         ByteArrayOutputStream input = setupInLogging();
         ByteArrayOutputStream output = setupOutLogging();
 
-        AddNumbersPortType port = getPort();
+        try (AddNumbersPortTypeProxy port = getPort()) {
 
-        try {
-            port.addNumbers3(-1, 2);
-        } catch (AddNumbersFault_Exception ex) {
-            assert true;
-        } catch (Exception e) {
-            e.printStackTrace();
-            assert false;
+            try {
+                port.addNumbers3(-1, 2);
+            } catch (AddNumbersFault_Exception ex) {
+                assert true;
+            } catch (Exception e) {
+                e.printStackTrace();
+                assert false;
+            }
+    
+            String expectedOut = "3in";
+            String expectedIn = "3fault";
+    
+            assertTrue(output.toString().indexOf(expectedOut) != -1);
+            assertTrue(input.toString().indexOf(expectedIn) != -1);
         }
-
-        String expectedOut = "3in";
-        String expectedIn = "3fault";
-
-        assertTrue(output.toString().indexOf(expectedOut) != -1);
-        assertTrue(input.toString().indexOf(expectedIn) != -1);
     }
     
     @Test
     public void testAnonToNonAnon() throws Exception {
-        AddNumbersPortType port = getPort();
-        ((BindingProvider)port).getRequestContext()
-            .put(BindingProvider.ENDPOINT_ADDRESS_PROPERTY,
-                 "http://localhost:"; + PORT + "/jaxws/addNonAnon");
-        try {
-            port.addNumbers3(-1, 2);
-        } catch (SOAPFaultException e) {
-            
assertTrue(e.getFault().getFaultCode().contains("OnlyNonAnonymousAddressSupported"));
+        try (AddNumbersPortTypeProxy port = getPort()) {
+            port.getRequestContext()
+                .put(BindingProvider.ENDPOINT_ADDRESS_PROPERTY,
+                     "http://localhost:"; + PORT + "/jaxws/addNonAnon");
+            try {
+                port.addNumbers3(-1, 2);
+            } catch (SOAPFaultException e) {
+                
assertTrue(e.getFault().getFaultCode().contains("OnlyNonAnonymousAddressSupported"));
+            }
         }
     } 
     @Test
     public void testNonAnonToAnon() throws Exception {
-        AddNumbersPortType port = getPort();
-        ((BindingProvider)port).getRequestContext()
-            .put(BindingProvider.ENDPOINT_ADDRESS_PROPERTY,
-                 "http://localhost:"; + PORT + "/jaxws/addAnon");
-        
-        AddressingProperties maps = new AddressingProperties();
-        EndpointReferenceType ref = new EndpointReferenceType();
-        AttributedURIType add = new AttributedURIType();
-        add.setValue("http://localhost:"; + INVALID_PORT + "/not/a/real/url");
-        ref.setAddress(add);
-        maps.setReplyTo(ref);
-        maps.setFaultTo(ref);
-
-        ((BindingProvider)port).getRequestContext()
-            .put("javax.xml.ws.addressing.context", maps);
-
-        try {
-            port.addNumbers3(-1, 2);
-        } catch (SOAPFaultException e) {
-            
assertTrue(e.getFault().getFaultCode().contains("OnlyAnonymousAddressSupported"));
+        try (AddNumbersPortTypeProxy port = getPort()) {
+            port.getRequestContext()
+                .put(BindingProvider.ENDPOINT_ADDRESS_PROPERTY,
+                     "http://localhost:"; + PORT + "/jaxws/addAnon");
+            
+            AddressingProperties maps = new AddressingProperties();
+            EndpointReferenceType ref = new EndpointReferenceType();
+            AttributedURIType add = new AttributedURIType();
+            add.setValue("http://localhost:"; + INVALID_PORT + 
"/not/a/real/url");
+            ref.setAddress(add);
+            maps.setReplyTo(ref);
+            maps.setFaultTo(ref);
+    
+            port.getRequestContext()
+                .put("javax.xml.ws.addressing.context", maps);
+    
+            try {
+                port.addNumbers3(-1, 2);
+            } catch (SOAPFaultException e) {
+                
assertTrue(e.getFault().getFaultCode().contains("OnlyAnonymousAddressSupported"));
+            }
         }
     }
-    private AddNumbersPortType getPort()throws Exception {
+    private AddNumbersPortTypeProxy getPort()throws Exception {
         URL wsdl = 
getClass().getResource("/wsdl_systest_wsspec/add_numbers.wsdl");
         assertNotNull("WSDL is null", wsdl);
 
         AddNumbersService service = new AddNumbersService(wsdl, serviceName);
         assertNotNull("Service is null ", service);
-        AddNumbersPortType port = service.getAddNumbersPort(new 
AddressingFeature());
+        AddNumbersPortTypeProxy port = service.getAddNumbersPort(new 
AddressingFeature());
         updateAddressPort(port, PORT);
         return port;
     }

http://git-wip-us.apache.org/repos/asf/cxf/blob/1c7a34e3/tools/wsdlto/core/src/main/java/org/apache/cxf/tools/wsdlto/core/AbstractGenerator.java
----------------------------------------------------------------------
diff --git 
a/tools/wsdlto/core/src/main/java/org/apache/cxf/tools/wsdlto/core/AbstractGenerator.java
 
b/tools/wsdlto/core/src/main/java/org/apache/cxf/tools/wsdlto/core/AbstractGenerator.java
index e9e2ea9..0c1950d 100644
--- 
a/tools/wsdlto/core/src/main/java/org/apache/cxf/tools/wsdlto/core/AbstractGenerator.java
+++ 
b/tools/wsdlto/core/src/main/java/org/apache/cxf/tools/wsdlto/core/AbstractGenerator.java
@@ -117,6 +117,12 @@ public abstract class AbstractGenerator implements 
FrontEndGenerator {
         setAttributes("fullversion", Version.getCompleteVersionString());
         setAttributes("name", Version.getName());
         setAttributes("mark-generated", 
env.optionSet(ToolConstants.CFG_MARK_GENERATED));
+        if (env.optionSet(ToolConstants.CFG_FRONTEND)) {
+            setAttributes("frontend", env.get(ToolConstants.CFG_FRONTEND));
+        }
+        if (env.optionSet(ToolConstants.CFG_DATABINDING)) {
+            setAttributes("databinding", 
env.get(ToolConstants.CFG_DATABINDING));
+        }
     }
 
     protected void clearAttributes() {

http://git-wip-us.apache.org/repos/asf/cxf/blob/1c7a34e3/tools/wsdlto/frontend/jaxws/src/main/java/org/apache/cxf/tools/wsdlto/frontend/jaxws/generators/ServiceGenerator.java
----------------------------------------------------------------------
diff --git 
a/tools/wsdlto/frontend/jaxws/src/main/java/org/apache/cxf/tools/wsdlto/frontend/jaxws/generators/ServiceGenerator.java
 
b/tools/wsdlto/frontend/jaxws/src/main/java/org/apache/cxf/tools/wsdlto/frontend/jaxws/generators/ServiceGenerator.java
index 1715d4c..44345c7 100644
--- 
a/tools/wsdlto/frontend/jaxws/src/main/java/org/apache/cxf/tools/wsdlto/frontend/jaxws/generators/ServiceGenerator.java
+++ 
b/tools/wsdlto/frontend/jaxws/src/main/java/org/apache/cxf/tools/wsdlto/frontend/jaxws/generators/ServiceGenerator.java
@@ -21,12 +21,16 @@ package 
org.apache.cxf.tools.wsdlto.frontend.jaxws.generators;
 
 import java.net.MalformedURLException;
 import java.net.URL;
+import java.util.HashSet;
 import java.util.Map;
+import java.util.Set;
 
 import javax.jws.HandlerChain;
 import javax.xml.namespace.QName;
+import javax.xml.ws.BindingProvider;
 
 import org.apache.cxf.common.i18n.Message;
+import org.apache.cxf.endpoint.Client;
 import org.apache.cxf.helpers.CastUtils;
 import org.apache.cxf.service.model.ServiceInfo;
 import org.apache.cxf.tools.common.ToolConstants;
@@ -106,11 +110,17 @@ public class ServiceGenerator extends 
AbstractJAXWSGenerator {
                     
                 }
     
+                Set<String> portNames = new HashSet<>();
                 for (JavaPort port : js.getPorts()) {
                     if (!port.getPackageName().equals(js.getPackageName())
                         && !port.getInterfaceClass().equals(js.getName())) {
                         js.addImport(port.getFullClassName());
                     }
+                    portNames.add(port.getInterfaceClass());
+                }
+                if ("cxf".equals(env.get(ToolConstants.CFG_FRONTEND))) {
+                    js.addImport(BindingProvider.class.getName());
+                    js.addImport(Client.class.getName());
                 }
     
                 String url = (String)env.get(ToolConstants.CFG_WSDLURL);
@@ -136,7 +146,7 @@ public class ServiceGenerator extends 
AbstractJAXWSGenerator {
                     useGetResource = true;
                 }
                 
-                
+                setAttributes("cxfPortClassnames", portNames.toArray(new 
String[portNames.size()]));
                 setAttributes("service", js);
                 setAttributes("wsdlLocation", location);
                 setAttributes("useGetResource", useGetResource);

http://git-wip-us.apache.org/repos/asf/cxf/blob/1c7a34e3/tools/wsdlto/frontend/jaxws/src/main/java/org/apache/cxf/tools/wsdlto/frontend/jaxws/template/service.vm
----------------------------------------------------------------------
diff --git 
a/tools/wsdlto/frontend/jaxws/src/main/java/org/apache/cxf/tools/wsdlto/frontend/jaxws/template/service.vm
 
b/tools/wsdlto/frontend/jaxws/src/main/java/org/apache/cxf/tools/wsdlto/frontend/jaxws/template/service.vm
index 2363a64..e22e7cb 100644
--- 
a/tools/wsdlto/frontend/jaxws/src/main/java/org/apache/cxf/tools/wsdlto/frontend/jaxws/template/service.vm
+++ 
b/tools/wsdlto/frontend/jaxws/src/main/java/org/apache/cxf/tools/wsdlto/frontend/jaxws/template/service.vm
@@ -199,11 +199,30 @@ public class ${service.Name} extends ${serviceSuperclass} 
{
     }    
 #end
 
+#if ($frontend == "cxf")
+#foreach ($portClassName in $cxfPortClassnames)
+    /**
+     * Proxy interface the extends ${portClassName} to also provide useful 
methods
+     * without having to cast to the appropriate interface. 
+     */
+#if ($mark-generated == "true")
+    @Generated(value = "org.apache.cxf.tools.wsdlto.WSDLToJava", date = 
"$currentdate")
+#end
+    public interface ${portClassName}Proxy extends ${portClassName}, 
AutoCloseable, BindingProvider, Client {
+    }
+#end
+#end
+
 #foreach ($port in $service.Ports)
 #set($portClassName = ${port.InterfaceClass})
 #if ($portClassName == ${service.Name}) 
 #set($portClassName = ${port.fullClassName})
 #end
+
+#if ($frontend == "cxf")
+#set($portClassName = "${portClassName}Proxy")
+#end
+
     /**
 #if ($port.javaDoc != "")
 $port.javaDoc

Reply via email to