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 2007/10/31 12:56:17 UTC
svn commit: r590631 - in /incubator/cxf/branches/2.0.x-fixes: ./
api/src/main/java/org/apache/cxf/service/model/
rt/frontend/simple/src/main/java/org/apache/cxf/service/factory/
systests/src/test/java/org/apache/cxf/systest/jaxws/
Author: dkulp
Date: Wed Oct 31 04:56:16 2007
New Revision: 590631
URL: http://svn.apache.org/viewvc?rev=590631&view=rev
Log:
Merged revisions 590451 via svnmerge from
https://svn.apache.org/repos/asf/incubator/cxf/trunk
........
r590451 | dkulp | 2007-10-30 16:52:52 -0400 (Tue, 30 Oct 2007) | 2 lines
CXF-940 - Allow services to work if they don't have methods for some of the operations in the wsdl. The methods it does have will work.
........
Added:
incubator/cxf/branches/2.0.x-fixes/systests/src/test/java/org/apache/cxf/systest/jaxws/DocLitWrappedCodeFirstServiceMissingOps.java
- copied unchanged from r590451, incubator/cxf/trunk/systests/src/test/java/org/apache/cxf/systest/jaxws/DocLitWrappedCodeFirstServiceMissingOps.java
Modified:
incubator/cxf/branches/2.0.x-fixes/ (props changed)
incubator/cxf/branches/2.0.x-fixes/api/src/main/java/org/apache/cxf/service/model/BindingInfo.java
incubator/cxf/branches/2.0.x-fixes/api/src/main/java/org/apache/cxf/service/model/InterfaceInfo.java
incubator/cxf/branches/2.0.x-fixes/rt/frontend/simple/src/main/java/org/apache/cxf/service/factory/ReflectionServiceFactoryBean.java
incubator/cxf/branches/2.0.x-fixes/rt/frontend/simple/src/main/java/org/apache/cxf/service/factory/SimpleMessages.properties
incubator/cxf/branches/2.0.x-fixes/systests/src/test/java/org/apache/cxf/systest/jaxws/ClientServerMiscTest.java
Propchange: incubator/cxf/branches/2.0.x-fixes/
------------------------------------------------------------------------------
Binary property 'svnmerge-integrated' - no diff available.
Modified: incubator/cxf/branches/2.0.x-fixes/api/src/main/java/org/apache/cxf/service/model/BindingInfo.java
URL: http://svn.apache.org/viewvc/incubator/cxf/branches/2.0.x-fixes/api/src/main/java/org/apache/cxf/service/model/BindingInfo.java?rev=590631&r1=590630&r2=590631&view=diff
==============================================================================
--- incubator/cxf/branches/2.0.x-fixes/api/src/main/java/org/apache/cxf/service/model/BindingInfo.java (original)
+++ incubator/cxf/branches/2.0.x-fixes/api/src/main/java/org/apache/cxf/service/model/BindingInfo.java Wed Oct 31 04:56:16 2007
@@ -101,6 +101,20 @@
operations.put(operation.getName(), operation);
}
+
+ /**
+ * Removes an operation from this service.
+ *
+ * @param operation the operation.
+ */
+ public void removeOperation(BindingOperationInfo operation) {
+ if (operation.getName() == null) {
+ throw new NullPointerException(
+ new Message("BINDING.OPERATION.NAME.NOT.NULL", LOG).toString());
+ }
+
+ operations.remove(operation.getName());
+ }
/**
* Returns the operation info with the given name, if found.
Modified: incubator/cxf/branches/2.0.x-fixes/api/src/main/java/org/apache/cxf/service/model/InterfaceInfo.java
URL: http://svn.apache.org/viewvc/incubator/cxf/branches/2.0.x-fixes/api/src/main/java/org/apache/cxf/service/model/InterfaceInfo.java?rev=590631&r1=590630&r2=590631&view=diff
==============================================================================
--- incubator/cxf/branches/2.0.x-fixes/api/src/main/java/org/apache/cxf/service/model/InterfaceInfo.java (original)
+++ incubator/cxf/branches/2.0.x-fixes/api/src/main/java/org/apache/cxf/service/model/InterfaceInfo.java Wed Oct 31 04:56:16 2007
@@ -85,6 +85,15 @@
void addOperation(OperationInfo operation) {
operations.put(operation.getName(), operation);
}
+
+ /**
+ * Removes an operation from this service.
+ *
+ * @param operation the operation.
+ */
+ public void removeOperation(OperationInfo operation) {
+ operations.remove(operation.getName());
+ }
/**
* Returns the operation info with the given name, if found.
Modified: incubator/cxf/branches/2.0.x-fixes/rt/frontend/simple/src/main/java/org/apache/cxf/service/factory/ReflectionServiceFactoryBean.java
URL: http://svn.apache.org/viewvc/incubator/cxf/branches/2.0.x-fixes/rt/frontend/simple/src/main/java/org/apache/cxf/service/factory/ReflectionServiceFactoryBean.java?rev=590631&r1=590630&r2=590631&view=diff
==============================================================================
--- incubator/cxf/branches/2.0.x-fixes/rt/frontend/simple/src/main/java/org/apache/cxf/service/factory/ReflectionServiceFactoryBean.java (original)
+++ incubator/cxf/branches/2.0.x-fixes/rt/frontend/simple/src/main/java/org/apache/cxf/service/factory/ReflectionServiceFactoryBean.java Wed Oct 31 04:56:16 2007
@@ -294,6 +294,7 @@
}
protected void initializeWSDLOperations() {
+ List<OperationInfo> removes = new ArrayList<OperationInfo>();
Method[] methods = serviceClass.getMethods();
Arrays.sort(methods, new MethodComparator());
@@ -320,17 +321,29 @@
}
if (selected == null) {
- throw new ServiceConstructionException(new Message("NO_METHOD_FOR_OP", LOG, o.getName()));
+ LOG.log(Level.WARNING, "NO_METHOD_FOR_OP", o.getName());
+ removes.add(o);
+ } else {
+ initializeWSDLOperation(intf, o, selected);
}
-
- initializeWSDLOperation(intf, o, selected);
+ }
+ for (OperationInfo op : removes) {
+ intf.removeOperation(op);
}
//Some of the operations may have switched from unwrapped to wrapped. Update the bindings.
for (ServiceInfo service : getService().getServiceInfos()) {
for (BindingInfo bi : service.getBindings()) {
+ List<BindingOperationInfo> biremoves = new ArrayList<BindingOperationInfo>();
for (BindingOperationInfo binfo : bi.getOperations()) {
- binfo.updateUnwrappedOperation();
+ if (removes.contains(binfo.getOperationInfo())) {
+ biremoves.add(binfo);
+ } else {
+ binfo.updateUnwrappedOperation();
+ }
+ }
+ for (BindingOperationInfo binfo : biremoves) {
+ bi.removeOperation(binfo);
}
}
}
Modified: incubator/cxf/branches/2.0.x-fixes/rt/frontend/simple/src/main/java/org/apache/cxf/service/factory/SimpleMessages.properties
URL: http://svn.apache.org/viewvc/incubator/cxf/branches/2.0.x-fixes/rt/frontend/simple/src/main/java/org/apache/cxf/service/factory/SimpleMessages.properties?rev=590631&r1=590630&r2=590631&view=diff
==============================================================================
--- incubator/cxf/branches/2.0.x-fixes/rt/frontend/simple/src/main/java/org/apache/cxf/service/factory/SimpleMessages.properties (original)
+++ incubator/cxf/branches/2.0.x-fixes/rt/frontend/simple/src/main/java/org/apache/cxf/service/factory/SimpleMessages.properties Wed Oct 31 04:56:16 2007
@@ -19,7 +19,7 @@
#
#
COULD_NOT_FIND_PORTTYPE = Could not find portType named {0}
-NO_METHOD_FOR_OP = Could not find a matching method for operation {0}
+NO_METHOD_FOR_OP = Could not find a matching method for operation {0}. Operation will be unavailable.
COULD_NOT_SET_WRAPPER_STYLE = Service class: {0} contains overloaded operation can not use wrapper style
USING_PROXY_FOR_SERVICE = Service class: {0} is a java.lang.reflect.Proxy instance. This is known not to work well as \
annotations on the real instance are not available. We suggest overriding the ServiceClass via spring config or \
Modified: incubator/cxf/branches/2.0.x-fixes/systests/src/test/java/org/apache/cxf/systest/jaxws/ClientServerMiscTest.java
URL: http://svn.apache.org/viewvc/incubator/cxf/branches/2.0.x-fixes/systests/src/test/java/org/apache/cxf/systest/jaxws/ClientServerMiscTest.java?rev=590631&r1=590630&r2=590631&view=diff
==============================================================================
--- incubator/cxf/branches/2.0.x-fixes/systests/src/test/java/org/apache/cxf/systest/jaxws/ClientServerMiscTest.java (original)
+++ incubator/cxf/branches/2.0.x-fixes/systests/src/test/java/org/apache/cxf/systest/jaxws/ClientServerMiscTest.java Wed Oct 31 04:56:16 2007
@@ -198,6 +198,23 @@
}
@Test
+ public void testMissingMethods() throws Exception {
+ QName portName = new QName("http://cxf.apache.org/systest/jaxws/DocLitWrappedCodeFirstService",
+ "DocLitWrappedCodeFirstServicePort");
+ QName servName = new QName("http://cxf.apache.org/systest/jaxws/DocLitWrappedCodeFirstService",
+ "DocLitWrappedCodeFirstService");
+
+ Service service = Service.create(new URL(ServerMisc.DOCLIT_CODEFIRST_URL + "?wsdl"),
+ servName);
+ DocLitWrappedCodeFirstServiceMissingOps port = service.getPort(portName,
+ DocLitWrappedCodeFirstServiceMissingOps.class);
+
+ int[] ret = port.echoIntArray(new int[] {1, 2});
+ assertNotNull(ret);
+ //port.arrayOutput();
+ }
+
+ @Test
public void testStringListOutDocLitNoWsdl() throws Exception {
QName portName = new QName("http://cxf.apache.org/systest/jaxws/DocLitWrappedCodeFirstService",
"DocLitWrappedCodeFirstServicePort");