You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@cxf.apache.org by dk...@apache.org on 2010/11/16 21:43:10 UTC

svn commit: r1035798 - in /cxf/trunk: rt/frontend/jaxws/src/main/java/org/apache/cxf/jaxws/support/ rt/frontend/jaxws/src/test/java/org/apache/cxf/jaxws/ rt/frontend/jaxws/src/test/java/org/apache/cxf/jaxws/service/ systests/jaxrs/src/test/java/org/apa...

Author: dkulp
Date: Tue Nov 16 20:43:10 2010
New Revision: 1035798

URL: http://svn.apache.org/viewvc?rev=1035798&view=rev
Log:
[CXF-3128] Properly enforce where exclude=true is allowed rather than
just ignore it.

Added:
    cxf/trunk/rt/frontend/jaxws/src/test/java/org/apache/cxf/jaxws/service/HelloExcludeImpl.java   (with props)
    cxf/trunk/rt/frontend/jaxws/src/test/java/org/apache/cxf/jaxws/service/HelloExcludeOnInterface.java   (with props)
Modified:
    cxf/trunk/rt/frontend/jaxws/src/main/java/org/apache/cxf/jaxws/support/JaxWsServiceConfiguration.java
    cxf/trunk/rt/frontend/jaxws/src/main/java/org/apache/cxf/jaxws/support/Messages.properties
    cxf/trunk/rt/frontend/jaxws/src/test/java/org/apache/cxf/jaxws/CodeFirstWSDLTest.java
    cxf/trunk/systests/jaxrs/src/test/java/org/apache/cxf/systest/jaxrs/BookStoreJaxrsJaxws.java

Modified: cxf/trunk/rt/frontend/jaxws/src/main/java/org/apache/cxf/jaxws/support/JaxWsServiceConfiguration.java
URL: http://svn.apache.org/viewvc/cxf/trunk/rt/frontend/jaxws/src/main/java/org/apache/cxf/jaxws/support/JaxWsServiceConfiguration.java?rev=1035798&r1=1035797&r2=1035798&view=diff
==============================================================================
--- cxf/trunk/rt/frontend/jaxws/src/main/java/org/apache/cxf/jaxws/support/JaxWsServiceConfiguration.java (original)
+++ cxf/trunk/rt/frontend/jaxws/src/main/java/org/apache/cxf/jaxws/support/JaxWsServiceConfiguration.java Tue Nov 16 20:43:10 2010
@@ -183,8 +183,26 @@ public class JaxWsServiceConfiguration e
         if (Object.class.equals(method.getDeclaringClass())) {
             return false;
         }
+        
+        if (method.getDeclaringClass() == implInfo.getSEIClass()) {
+            WebMethod wm = method.getAnnotation(WebMethod.class);
+            if (wm != null && wm.exclude()) {
+                Message message = new Message("WEBMETHOD_EXCLUDE_NOT_ALLOWED", LOG,
+                                              method.getName());
+                throw new JaxWsConfigurationException(message);
+            }
+        }
+
+        
         Class implClz = implInfo.getImplementorClass();
-        if (isWebMethod(getDeclaredMethod(implClz, method))) {
+        Method m = getDeclaredMethod(implClz, method);
+        if (m != null) {
+            WebMethod wm = m.getAnnotation(WebMethod.class);
+            if (wm != null && wm.exclude()) {
+                return Boolean.FALSE;
+            }
+        }
+        if (isWebMethod(m)) {
             return true;
         }
         return isWebMethod(getDeclaredMethod(method));

Modified: cxf/trunk/rt/frontend/jaxws/src/main/java/org/apache/cxf/jaxws/support/Messages.properties
URL: http://svn.apache.org/viewvc/cxf/trunk/rt/frontend/jaxws/src/main/java/org/apache/cxf/jaxws/support/Messages.properties?rev=1035798&r1=1035797&r2=1035798&view=diff
==============================================================================
--- cxf/trunk/rt/frontend/jaxws/src/main/java/org/apache/cxf/jaxws/support/Messages.properties (original)
+++ cxf/trunk/rt/frontend/jaxws/src/main/java/org/apache/cxf/jaxws/support/Messages.properties Tue Nov 16 20:43:10 2010
@@ -31,3 +31,4 @@ INVALID_REQUEST_WRAPPER = @RequestWrappe
 INVALID_RESPONSE_WRAPPER = @ResponseWrapper class {0} is the same as the actual return class {1}.  This is likely not to work. 
 SERVICECLASS_MUST_BE_SET = serviceClass must be set to a valid service interface or class
 XMLSEEALSO_NULL_CLASS = A class listed in the XmlSeeAlso annotation of the service class %s cannot be found on the classpath. Index: %d of XmlSeeAlso class list.
+WEBMETHOD_EXCLUDE_NOT_ALLOWED = The @javax.jws.WebMethod(exclude=true) cannot be used on a service endpoint interface. Method: {0}

Modified: cxf/trunk/rt/frontend/jaxws/src/test/java/org/apache/cxf/jaxws/CodeFirstWSDLTest.java
URL: http://svn.apache.org/viewvc/cxf/trunk/rt/frontend/jaxws/src/test/java/org/apache/cxf/jaxws/CodeFirstWSDLTest.java?rev=1035798&r1=1035797&r2=1035798&view=diff
==============================================================================
--- cxf/trunk/rt/frontend/jaxws/src/test/java/org/apache/cxf/jaxws/CodeFirstWSDLTest.java (original)
+++ cxf/trunk/rt/frontend/jaxws/src/test/java/org/apache/cxf/jaxws/CodeFirstWSDLTest.java Tue Nov 16 20:43:10 2010
@@ -27,6 +27,7 @@ import org.apache.cxf.Bus;
 import org.apache.cxf.frontend.ServerFactoryBean;
 import org.apache.cxf.jaxws.service.Hello2;
 import org.apache.cxf.jaxws.service.Hello3;
+import org.apache.cxf.jaxws.service.HelloExcludeImpl;
 import org.apache.cxf.jaxws.support.JaxWsImplementorInfo;
 import org.apache.cxf.jaxws.support.JaxWsServiceFactoryBean;
 import org.apache.cxf.service.Service;
@@ -114,5 +115,20 @@ public class CodeFirstWSDLTest extends A
         assertNotNull(portType);
         assertEquals(4, portType.getOperations().size());
     }
-
+    @Test
+    public void testExcludeOnInterface() throws Exception {
+        try {
+            JaxWsImplementorInfo info = new JaxWsImplementorInfo(HelloExcludeImpl.class);
+            ReflectionServiceFactoryBean bean = new JaxWsServiceFactoryBean(info);
+
+            Bus bus = getBus();
+            bean.setBus(bus);
+            
+            bean.create();
+            
+            fail("WebMethod(exclude=true) is not allowed");
+        } catch (JaxWsConfigurationException e) {
+            assertTrue(e.getMessage().contains("WebMethod"));
+        }
+    }
 }

Added: cxf/trunk/rt/frontend/jaxws/src/test/java/org/apache/cxf/jaxws/service/HelloExcludeImpl.java
URL: http://svn.apache.org/viewvc/cxf/trunk/rt/frontend/jaxws/src/test/java/org/apache/cxf/jaxws/service/HelloExcludeImpl.java?rev=1035798&view=auto
==============================================================================
--- cxf/trunk/rt/frontend/jaxws/src/test/java/org/apache/cxf/jaxws/service/HelloExcludeImpl.java (added)
+++ cxf/trunk/rt/frontend/jaxws/src/test/java/org/apache/cxf/jaxws/service/HelloExcludeImpl.java Tue Nov 16 20:43:10 2010
@@ -0,0 +1,55 @@
+/**
+ * Licensed to the Apache Software Foundation (ASF) under one
+ * or more contributor license agreements. See the NOTICE file
+ * distributed with this work for additional information
+ * regarding copyright ownership. The ASF licenses this file
+ * to you under the Apache License, Version 2.0 (the
+ * "License"); you may not use this file except in compliance
+ * with the License. You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing,
+ * software distributed under the License is distributed on an
+ * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+ * KIND, either express or implied. See the License for the
+ * specific language governing permissions and limitations
+ * under the License.
+ */
+package org.apache.cxf.jaxws.service;
+
+import java.util.ArrayList;
+import java.util.List;
+
+import javax.jws.WebService;
+
+@WebService(endpointInterface = "org.apache.cxf.jaxws.service.HelloExcludeOnInterface")
+public class HelloExcludeImpl implements HelloExcludeOnInterface {
+
+    public String sayHi(String text) {
+        return text;
+    }
+    
+    public List<String> getGreetings() {
+        List<String> strings = new ArrayList<String>();
+        strings.add("Hello");
+        strings.add("Bonjour");
+        return strings;
+    }
+
+    public void sayGoodbye() {
+    }
+
+    public String[] getStringArray(String[] strs) {
+        return null;
+    }
+
+    public List<String> getStringList(List<String> list) {
+        return null;
+    }
+
+    public int echoExcluded(int i) {
+        return 0;
+    }
+
+}

Propchange: cxf/trunk/rt/frontend/jaxws/src/test/java/org/apache/cxf/jaxws/service/HelloExcludeImpl.java
------------------------------------------------------------------------------
    svn:eol-style = native

Propchange: cxf/trunk/rt/frontend/jaxws/src/test/java/org/apache/cxf/jaxws/service/HelloExcludeImpl.java
------------------------------------------------------------------------------
    svn:keywords = Rev Date

Added: cxf/trunk/rt/frontend/jaxws/src/test/java/org/apache/cxf/jaxws/service/HelloExcludeOnInterface.java
URL: http://svn.apache.org/viewvc/cxf/trunk/rt/frontend/jaxws/src/test/java/org/apache/cxf/jaxws/service/HelloExcludeOnInterface.java?rev=1035798&view=auto
==============================================================================
--- cxf/trunk/rt/frontend/jaxws/src/test/java/org/apache/cxf/jaxws/service/HelloExcludeOnInterface.java (added)
+++ cxf/trunk/rt/frontend/jaxws/src/test/java/org/apache/cxf/jaxws/service/HelloExcludeOnInterface.java Tue Nov 16 20:43:10 2010
@@ -0,0 +1,40 @@
+/**
+ * Licensed to the Apache Software Foundation (ASF) under one
+ * or more contributor license agreements. See the NOTICE file
+ * distributed with this work for additional information
+ * regarding copyright ownership. The ASF licenses this file
+ * to you under the Apache License, Version 2.0 (the
+ * "License"); you may not use this file except in compliance
+ * with the License. You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing,
+ * software distributed under the License is distributed on an
+ * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+ * KIND, either express or implied. See the License for the
+ * specific language governing permissions and limitations
+ * under the License.
+ */
+package org.apache.cxf.jaxws.service;
+
+import java.util.List;
+
+import javax.jws.WebMethod;
+import javax.jws.WebService;
+
+@WebService
+public interface HelloExcludeOnInterface {
+    @WebMethod
+    String sayHi(String text);
+    @WebMethod
+    List<String> getGreetings();
+
+    String[] getStringArray(String[] strs);
+    
+    List<String> getStringList(List<String> list);
+    
+    
+    @WebMethod(exclude = true)
+    int echoExcluded(int i);
+}

Propchange: cxf/trunk/rt/frontend/jaxws/src/test/java/org/apache/cxf/jaxws/service/HelloExcludeOnInterface.java
------------------------------------------------------------------------------
    svn:eol-style = native

Propchange: cxf/trunk/rt/frontend/jaxws/src/test/java/org/apache/cxf/jaxws/service/HelloExcludeOnInterface.java
------------------------------------------------------------------------------
    svn:keywords = Rev Date

Modified: cxf/trunk/systests/jaxrs/src/test/java/org/apache/cxf/systest/jaxrs/BookStoreJaxrsJaxws.java
URL: http://svn.apache.org/viewvc/cxf/trunk/systests/jaxrs/src/test/java/org/apache/cxf/systest/jaxrs/BookStoreJaxrsJaxws.java?rev=1035798&r1=1035797&r2=1035798&view=diff
==============================================================================
--- cxf/trunk/systests/jaxrs/src/test/java/org/apache/cxf/systest/jaxrs/BookStoreJaxrsJaxws.java (original)
+++ cxf/trunk/systests/jaxrs/src/test/java/org/apache/cxf/systest/jaxrs/BookStoreJaxrsJaxws.java Tue Nov 16 20:43:10 2010
@@ -47,23 +47,19 @@ public interface BookStoreJaxrsJaxws {
     Book addBook(@WebParam(name = "book") Book book);
     
     @Path("/books/{id}")
-    @WebMethod(exclude = true)
     BookSubresource getBookSubresource(@PathParam("id") String id);
     
     @Path("/thestore/{id}")
-    @WebMethod(exclude = true)
     BookStoreJaxrsJaxws getBookStore(@PathParam("id") String id);
     
     @POST
     @Path("/fastinfoset")
     @Consumes({"text/xml" })
     @Produces({"application/fastinfoset", "text/xml", "application/xml" })
-    @WebMethod(exclude = true)
     Book addFastinfoBook(Book book);
     
     @GET
     @Path("/fastinfoset2")
     @Produces({"application/fastinfoset", "text/xml", "application/xml" })
-    @WebMethod(exclude = true)
     Book getFastinfoBook();
 }