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 2008/12/09 15:58:15 UTC
svn commit: r724727 - in /cxf/branches/2.0.x-fixes: ./
tools/wsdlto/frontend/jaxws/src/main/java/org/apache/cxf/tools/wsdlto/frontend/jaxws/customization/
tools/wsdlto/frontend/jaxws/src/main/java/org/apache/cxf/tools/wsdlto/frontend/jaxws/processor/in...
Author: dkulp
Date: Tue Dec 9 06:58:14 2008
New Revision: 724727
URL: http://svn.apache.org/viewvc?rev=724727&view=rev
Log:
Merged revisions 724486 via svnmerge from
https://svn.apache.org/repos/asf/cxf/branches/2.1.x-fixes
................
r724486 | dkulp | 2008-12-08 16:15:33 -0500 (Mon, 08 Dec 2008) | 9 lines
Merged revisions 724481 via svnmerge from
https://svn.apache.org/repos/asf/cxf/trunk
........
r724481 | dkulp | 2008-12-08 16:04:41 -0500 (Mon, 08 Dec 2008) | 2 lines
[CXF-1935] Bunch of issues with enableAsyncMapping not being picked up all the time.
........
................
Added:
cxf/branches/2.0.x-fixes/tools/wsdlto/test/src/test/resources/wsdl2java_wsdl/hello_world_async_noservice.wsdl
- copied unchanged from r724486, cxf/branches/2.1.x-fixes/tools/wsdlto/test/src/test/resources/wsdl2java_wsdl/hello_world_async_noservice.wsdl
Modified:
cxf/branches/2.0.x-fixes/ (props changed)
cxf/branches/2.0.x-fixes/tools/wsdlto/frontend/jaxws/src/main/java/org/apache/cxf/tools/wsdlto/frontend/jaxws/customization/JAXWSBinding.java
cxf/branches/2.0.x-fixes/tools/wsdlto/frontend/jaxws/src/main/java/org/apache/cxf/tools/wsdlto/frontend/jaxws/processor/internal/OperationProcessor.java
cxf/branches/2.0.x-fixes/tools/wsdlto/frontend/jaxws/src/main/java/org/apache/cxf/tools/wsdlto/frontend/jaxws/processor/internal/ServiceProcessor.java
cxf/branches/2.0.x-fixes/tools/wsdlto/test/src/test/java/org/apache/cxf/tools/wsdlto/jaxws/CodeGenBugTest.java
cxf/branches/2.0.x-fixes/tools/wsdlto/test/src/test/java/org/apache/cxf/tools/wsdlto/jaxws/CodeGenTest.java
Propchange: cxf/branches/2.0.x-fixes/
------------------------------------------------------------------------------
--- svn:mergeinfo (original)
+++ svn:mergeinfo Tue Dec 9 06:58:14 2008
@@ -1,3 +1,3 @@
-/cxf/branches/2.1.x-fixes:673548,674485,674547,674551,674562,674601,674649,674764,674887,675644,675653,677048,677385,678004,678009,678559,678629,678808,678852,678891,678893,679248,679597,680435,681060,681165,681813,681816,682902,682951,683089,683290,683318,684099,684790-684793,684842,684862,684895-684918,685205,685253,686237,686283,686299,686333-686364,686765,686827,687097,687464-687465,689109,689112,689122,691316,691357,691491,691711,691715,691745,692162-692163,692468,692500,694466-694469,694472,694717,694748-694749,694870,695503,695509,695553,695555,695563,695875-695877,695940,695980,696436,696455,696721,697086,698129,701526,701634,702275,702443,702527,702582,702604,702610,702642-702643,702649,702760,702870,702873,702959,703193,703242,703523,704303,704587,704738,704998,705153,705280-705449,705455,709357,709641,709644,710177,710184,711736,712199,712225,712275,712600,712896,713083,713410,713413,713594,713599,713808,713901,714169-714171,718622,718929,719211,719221-719223,7192
96,719300-719301,719303,719308,719332,719356,719363,719369-719383,719650,719695,720124,723545,724403-724404,724421,724448,724451
-/cxf/trunk:651669-686342,686344-686363,686764,686820,687096,687387,687463,688086,688102,688735,691271,691355,691488,691602,691706,691728,692116,692157,692466,692499,693653,693819,694179,694263,694417,694716,694744,694747,694869,695396,695484,695537,695552,695561,695619,695684,695835,695935,695977,696094,696433,696720,697085,698128,700261,700602,701783,701830,701862,702267,702580,702602,702609,702616,702656,702957,703191,703239,703501,704584,704997,705150,705274,705340,705446,708550,708554,709353-709354,709425,710150,712194,712198,712272,712312,712670,712893,713082,713584,713597,713804,713899,714167-714168,718281,718565,718620,718640,718665,719017,719210,719215-719218,719222,719273,719327-719354,719362,719368,719382,719649,719680,720119-720217,723338,723717-723791,724334-724371,724433-724438,724449
+/cxf/branches/2.1.x-fixes:673548,674485,674547,674551,674562,674601,674649,674764,674887,675644,675653,677048,677385,678004,678009,678559,678629,678808,678852,678891,678893,679248,679597,680435,681060,681165,681813,681816,682902,682951,683089,683290,683318,684099,684790-684793,684842,684862,684895-684918,685205,685253,686237,686283,686299,686333-686364,686765,686827,687097,687464-687465,689109,689112,689122,691316,691357,691491,691711,691715,691745,692162-692163,692468,692500,694466-694469,694472,694717,694748-694749,694870,695503,695509,695553,695555,695563,695875-695877,695940,695980,696436,696455,696721,697086,698129,701526,701634,702275,702443,702527,702582,702604,702610,702642-702643,702649,702760,702870,702873,702959,703193,703242,703523,704303,704587,704738,704998,705153,705280-705449,705455,709357,709641,709644,710177,710184,711736,712199,712225,712275,712600,712896,713083,713410,713413,713594,713599,713808,713901,714169-714171,718622,718929,719211,719221-719223,7192
96,719300-719301,719303,719308,719332,719356,719363,719369-719383,719650,719695,720124,723545,724403-724404,724421,724448,724451,724486
+/cxf/trunk:651669-686342,686344-686363,686764,686820,687096,687387,687463,688086,688102,688735,691271,691355,691488,691602,691706,691728,692116,692157,692466,692499,693653,693819,694179,694263,694417,694716,694744,694747,694869,695396,695484,695537,695552,695561,695619,695684,695835,695935,695977,696094,696433,696720,697085,698128,700261,700602,701783,701830,701862,702267,702580,702602,702609,702616,702656,702957,703191,703239,703501,704584,704997,705150,705274,705340,705446,708550,708554,709353-709354,709425,710150,712194,712198,712272,712312,712670,712893,713082,713584,713597,713804,713899,714167-714168,718281,718565,718620,718640,718665,719017,719210,719215-719218,719222,719273,719327-719354,719362,719368,719382,719649,719680,720119-720217,723338,723717-723791,724334-724371,724433-724438,724449,724481
/incubator/cxf/trunk:434594-651668
Propchange: cxf/branches/2.0.x-fixes/
------------------------------------------------------------------------------
Binary property 'svnmerge-integrated' - no diff available.
Modified: cxf/branches/2.0.x-fixes/tools/wsdlto/frontend/jaxws/src/main/java/org/apache/cxf/tools/wsdlto/frontend/jaxws/customization/JAXWSBinding.java
URL: http://svn.apache.org/viewvc/cxf/branches/2.0.x-fixes/tools/wsdlto/frontend/jaxws/src/main/java/org/apache/cxf/tools/wsdlto/frontend/jaxws/customization/JAXWSBinding.java?rev=724727&r1=724726&r2=724727&view=diff
==============================================================================
--- cxf/branches/2.0.x-fixes/tools/wsdlto/frontend/jaxws/src/main/java/org/apache/cxf/tools/wsdlto/frontend/jaxws/customization/JAXWSBinding.java (original)
+++ cxf/branches/2.0.x-fixes/tools/wsdlto/frontend/jaxws/src/main/java/org/apache/cxf/tools/wsdlto/frontend/jaxws/customization/JAXWSBinding.java Tue Dec 9 06:58:14 2008
@@ -28,15 +28,14 @@
public class JAXWSBinding implements ExtensibilityElement, Serializable {
- private boolean enableAsyncMapping;
-
- private boolean enableMime;
+ private Boolean enableAsyncMapping;
+ private Boolean enableWrapperStyle;
+ private Boolean enableMime;
private Element element;
private boolean required;
private QName elementType;
- private boolean enableWrapperStyle = true;
private String documentBaseURI;
@@ -81,25 +80,31 @@
}
public boolean isEnableMime() {
- return enableMime;
+ return enableMime == null ? false : enableMime;
+ }
+ public boolean isSetEnableMime() {
+ return enableMime != null;
}
-
public void setEnableMime(boolean enableMime) {
this.enableMime = enableMime;
}
public boolean isEnableAsyncMapping() {
- return this.enableAsyncMapping;
+ return enableAsyncMapping == null ? false : enableAsyncMapping;
+ }
+ public boolean isSetEnableAsyncMapping() {
+ return enableAsyncMapping != null;
}
-
public void setEnableAsyncMapping(boolean enableAsync) {
this.enableAsyncMapping = enableAsync;
}
public boolean isEnableWrapperStyle() {
- return enableWrapperStyle;
+ return enableWrapperStyle == null ? true : enableWrapperStyle;
+ }
+ public boolean isSetEnableWrapperStyle() {
+ return enableWrapperStyle != null;
}
-
public void setEnableWrapperStyle(boolean pEnableWrapperStyle) {
this.enableWrapperStyle = pEnableWrapperStyle;
}
Modified: cxf/branches/2.0.x-fixes/tools/wsdlto/frontend/jaxws/src/main/java/org/apache/cxf/tools/wsdlto/frontend/jaxws/processor/internal/OperationProcessor.java
URL: http://svn.apache.org/viewvc/cxf/branches/2.0.x-fixes/tools/wsdlto/frontend/jaxws/src/main/java/org/apache/cxf/tools/wsdlto/frontend/jaxws/processor/internal/OperationProcessor.java?rev=724727&r1=724726&r2=724727&view=diff
==============================================================================
--- cxf/branches/2.0.x-fixes/tools/wsdlto/frontend/jaxws/src/main/java/org/apache/cxf/tools/wsdlto/frontend/jaxws/processor/internal/OperationProcessor.java (original)
+++ cxf/branches/2.0.x-fixes/tools/wsdlto/frontend/jaxws/src/main/java/org/apache/cxf/tools/wsdlto/frontend/jaxws/processor/internal/OperationProcessor.java Tue Dec 9 06:58:14 2008
@@ -58,7 +58,9 @@
public void process(JavaInterface intf, OperationInfo operation) throws ToolException {
JavaMethod method = new MethodMapper().map(operation);
method.setInterface(intf);
- processMethod(method, operation, null);
+
+ processMethod(method, operation);
+
Collection<FaultInfo> faults = operation.getFaults();
FaultProcessor faultProcessor = new FaultProcessor(context);
faultProcessor.process(method, faults);
@@ -66,8 +68,8 @@
intf.addMethod(method);
}
- void processMethod(JavaMethod method, OperationInfo operation,
- JAXWSBinding globalBinding) throws ToolException {
+ void processMethod(JavaMethod method,
+ OperationInfo operation) throws ToolException {
if (isAsyncMethod(method)) {
return;
}
@@ -99,21 +101,43 @@
method.annotate(new WebResultAnnotator());
JAXWSBinding opBinding = (JAXWSBinding)operation.getExtensor(JAXWSBinding.class);
-
+ JAXWSBinding ptBinding = operation.getInterface().getExtensor(JAXWSBinding.class);
+ JAXWSBinding defBinding = operation.getInterface().getService()
+ .getDescription().getExtensor(JAXWSBinding.class);
+
boolean enableAsync = false;
- if (globalBinding != null && globalBinding.isEnableAsyncMapping()
- || opBinding != null && opBinding.isEnableAsyncMapping()) {
- enableAsync = true;
+ boolean enableMime = false;
+ if (defBinding != null) {
+ if (defBinding.isSetEnableMime()) {
+ enableMime = defBinding.isEnableMime();
+ }
+ if (defBinding.isSetEnableAsyncMapping()) {
+ enableAsync = defBinding.isEnableAsyncMapping();
+ }
}
-
-
+ if (ptBinding != null) {
+ if (ptBinding.isSetEnableMime()) {
+ enableMime = ptBinding.isEnableMime();
+ }
+ if (ptBinding.isSetEnableAsyncMapping()) {
+ enableAsync = ptBinding.isEnableAsyncMapping();
+ }
+ }
+ if (opBinding != null) {
+ if (opBinding.isSetEnableMime()) {
+ enableMime = opBinding.isEnableMime();
+ }
+ if (opBinding.isSetEnableAsyncMapping()) {
+ enableAsync = opBinding.isEnableAsyncMapping();
+ }
+ }
+
if (!method.isOneWay()
- && enableAsync && !isAddedAsyMethod(method)) {
+ && enableAsync && !isAddedAsycMethod(method)) {
addAsyncMethod(method);
}
- if (globalBinding != null && globalBinding.isEnableMime()
- || opBinding != null && opBinding.isEnableMime()) {
+ if (enableMime) {
method.setMimeEnable(true);
}
}
@@ -151,9 +175,14 @@
}
private boolean isAsyncMethod(JavaMethod method) {
- if (method.getName().toLowerCase()
- .equals((method.getOperationName() + ToolConstants.ASYNC_METHOD_SUFFIX).toLowerCase())) {
- return true;
+ if (method.getName().endsWith(ToolConstants.ASYNC_METHOD_SUFFIX)) {
+ if (method.getReturn().getClassName().startsWith("Response<")) {
+ return true;
+ } else if (method.getParameterCount() > 0
+ && method.getParameters().get(method.getParameterCount() - 1)
+ .getClassName().startsWith("AsyncHandler<")) {
+ return true;
+ }
}
return false;
}
@@ -252,7 +281,7 @@
return sb.toString();
}
- private boolean isAddedAsyMethod(JavaMethod method) {
+ private boolean isAddedAsycMethod(JavaMethod method) {
List<JavaMethod> jmethods = method.getInterface().getMethods();
int counter = 0;
for (JavaMethod jm : jmethods) {
Modified: cxf/branches/2.0.x-fixes/tools/wsdlto/frontend/jaxws/src/main/java/org/apache/cxf/tools/wsdlto/frontend/jaxws/processor/internal/ServiceProcessor.java
URL: http://svn.apache.org/viewvc/cxf/branches/2.0.x-fixes/tools/wsdlto/frontend/jaxws/src/main/java/org/apache/cxf/tools/wsdlto/frontend/jaxws/processor/internal/ServiceProcessor.java?rev=724727&r1=724726&r2=724727&view=diff
==============================================================================
--- cxf/branches/2.0.x-fixes/tools/wsdlto/frontend/jaxws/src/main/java/org/apache/cxf/tools/wsdlto/frontend/jaxws/processor/internal/ServiceProcessor.java (original)
+++ cxf/branches/2.0.x-fixes/tools/wsdlto/frontend/jaxws/src/main/java/org/apache/cxf/tools/wsdlto/frontend/jaxws/processor/internal/ServiceProcessor.java Tue Dec 9 06:58:14 2008
@@ -370,12 +370,12 @@
// changed wrapper style
jm.setWrapperStyle(false);
- processor.processMethod(jm, bop.getOperationInfo(), jaxwsBinding);
+ processor.processMethod(jm, bop.getOperationInfo());
jm.getAnnotationMap().remove("ResponseWrapper");
jm.getAnnotationMap().remove("RequestWrapper");
} else {
- processor.processMethod(jm, bop.getOperationInfo(), jaxwsBinding);
+ processor.processMethod(jm, bop.getOperationInfo());
}
Modified: cxf/branches/2.0.x-fixes/tools/wsdlto/test/src/test/java/org/apache/cxf/tools/wsdlto/jaxws/CodeGenBugTest.java
URL: http://svn.apache.org/viewvc/cxf/branches/2.0.x-fixes/tools/wsdlto/test/src/test/java/org/apache/cxf/tools/wsdlto/jaxws/CodeGenBugTest.java?rev=724727&r1=724726&r2=724727&view=diff
==============================================================================
--- cxf/branches/2.0.x-fixes/tools/wsdlto/test/src/test/java/org/apache/cxf/tools/wsdlto/jaxws/CodeGenBugTest.java (original)
+++ cxf/branches/2.0.x-fixes/tools/wsdlto/test/src/test/java/org/apache/cxf/tools/wsdlto/jaxws/CodeGenBugTest.java Tue Dec 9 06:58:14 2008
@@ -551,7 +551,11 @@
env.put(ToolConstants.CFG_WSDLURL, getLocation("/wsdl2java_wsdl/bug627/hello_world.wsdl"));
env.put(ToolConstants.CFG_BINDING, getLocation("/wsdl2java_wsdl/bug627/async_binding.xml"));
processor.setContext(env);
- processor.execute();
+ try {
+ processor.execute();
+ } catch (Exception ex) {
+ //ignore
+ }
Class clz = classLoader.loadClass("org.apache.hello_world_soap_http.Greeter");
Modified: cxf/branches/2.0.x-fixes/tools/wsdlto/test/src/test/java/org/apache/cxf/tools/wsdlto/jaxws/CodeGenTest.java
URL: http://svn.apache.org/viewvc/cxf/branches/2.0.x-fixes/tools/wsdlto/test/src/test/java/org/apache/cxf/tools/wsdlto/jaxws/CodeGenTest.java?rev=724727&r1=724726&r2=724727&view=diff
==============================================================================
--- cxf/branches/2.0.x-fixes/tools/wsdlto/test/src/test/java/org/apache/cxf/tools/wsdlto/jaxws/CodeGenTest.java (original)
+++ cxf/branches/2.0.x-fixes/tools/wsdlto/test/src/test/java/org/apache/cxf/tools/wsdlto/jaxws/CodeGenTest.java Tue Dec 9 06:58:14 2008
@@ -311,7 +311,7 @@
}
@Test
- public void testAsynMethod() throws Exception {
+ public void testAsyncMethod() throws Exception {
env.put(ToolConstants.CFG_WSDLURL, getLocation("/wsdl2java_wsdl/hello_world_async.wsdl"));
processor.setContext(env);
processor.execute();
@@ -346,6 +346,81 @@
}
@Test
+ public void testAsyncMethodNoService() throws Exception {
+ env.put(ToolConstants.CFG_WSDLURL, getLocation("/wsdl2java_wsdl/hello_world_async_noservice.wsdl"));
+ processor.setContext(env);
+ processor.execute();
+
+ assertNotNull(output);
+
+ File org = new File(output, "org");
+ assertTrue(org.exists());
+ File apache = new File(org, "apache");
+ assertTrue(apache.exists());
+ File cxf = new File(apache, "cxf");
+ assertTrue(cxf.exists());
+ File w2j = new File(cxf, "w2j");
+ assertTrue(w2j.exists());
+ File async = new File(w2j, "hello_world_async_soap_http");
+ assertTrue(async.exists());
+
+ File[] files = async.listFiles();
+ assertEquals(Arrays.asList(files).toString(), 9, files.length);
+
+ Class<?> clz = classLoader.loadClass("org.apache.cxf.w2j.hello_world_async_soap_http.GreeterAsync");
+
+ Method method1 = clz.getMethod("greetMeSometimeAsync", new Class[] {java.lang.String.class,
+ javax.xml.ws.AsyncHandler.class});
+ WebMethod webMethodAnno1 = AnnotationUtil.getPrivMethodAnnotation(method1, WebMethod.class);
+
+ assertEquals(method1.getName() + "()" + " Annotation : WebMethod.operationName ", "greetMeSometime",
+ webMethodAnno1.operationName());
+
+ java.lang.reflect.Method method2 = clz.getMethod("greetMeSometimeAsync",
+ new Class[] {java.lang.String.class});
+ WebMethod webMethodAnno2 = AnnotationUtil.getPrivMethodAnnotation(method2, WebMethod.class);
+ assertEquals(method2.getName() + "()" + " Annotation : WebMethod.operationName ", "greetMeSometime",
+ webMethodAnno2.operationName());
+
+ method1 = clz.getMethod("greetMeSometimeAsync", new Class[] {java.lang.String.class,
+ javax.xml.ws.AsyncHandler.class});
+ try {
+ method1 = clz.getMethod("testIntAsync", new Class[] {Integer.TYPE,
+ javax.xml.ws.AsyncHandler.class});
+ fail("Should not have generated testIntAsync");
+ } catch (NoSuchMethodException ex) {
+ //ignore
+ }
+
+
+ clz = classLoader.loadClass("org.apache.cxf.w2j.hello_world_async_soap_http.GreeterDAsync");
+ method1 = clz.getMethod("greetMeSometimeAsync", new Class[] {java.lang.String.class,
+ javax.xml.ws.AsyncHandler.class});
+
+ clz = classLoader.loadClass("org.apache.cxf.w2j.hello_world_async_soap_http.GreeterCAsync");
+ try {
+ method1 = clz.getMethod("greetMeSometimeAsync", new Class[] {java.lang.String.class,
+ javax.xml.ws.AsyncHandler.class});
+ fail("Should not have generated greetMeSometimeAsync");
+ } catch (NoSuchMethodException ex) {
+ //ignore
+ }
+ method1 = clz.getMethod("testIntAsync", new Class[] {Integer.TYPE,
+ javax.xml.ws.AsyncHandler.class});
+
+ clz = classLoader.loadClass("org.apache.cxf.w2j.hello_world_async_soap_http.GreeterBAsync");
+ try {
+ method1 = clz.getMethod("greetMeSometimeAsync", new Class[] {java.lang.String.class,
+ javax.xml.ws.AsyncHandler.class});
+ fail("Should not have generated greetMeSometimeAsync");
+ } catch (NoSuchMethodException ex) {
+ //ignore
+ }
+ method1 = clz.getMethod("testIntAsync", new Class[] {Integer.TYPE,
+ javax.xml.ws.AsyncHandler.class});
+ }
+
+ @Test
public void testHelloWorldSoap12() throws Exception {
env.put(ToolConstants.CFG_WSDLURL, getLocation("/wsdl2java_wsdl/hello_world_soap12.wsdl"));
processor.setContext(env);