You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@cxf.apache.org by mm...@apache.org on 2008/01/09 07:05:04 UTC
svn commit: r610277 - in /incubator/cxf/trunk/tools:
common/src/main/java/org/apache/cxf/tools/common/model/
common/src/test/java/org/apache/cxf/tools/common/model/
javato/ws/src/main/java/org/apache/cxf/tools/java2wsdl/processor/internal/jaxws/
javato...
Author: mmao
Date: Tue Jan 8 22:04:56 2008
New Revision: 610277
URL: http://svn.apache.org/viewvc?rev=610277&view=rev
Log:
CXF-1359
* Fix the Holder in the generated Wrapper beans
* Use the field name for the getter/setter in the wrapper beans
Added:
incubator/cxf/trunk/tools/javato/ws/src/test/java/org/apache/cxf/tools/fortest/addr/
incubator/cxf/trunk/tools/javato/ws/src/test/java/org/apache/cxf/tools/fortest/addr/AddressingFeatureException.java
incubator/cxf/trunk/tools/javato/ws/src/test/java/org/apache/cxf/tools/fortest/addr/WSAImpl2.java
Modified:
incubator/cxf/trunk/tools/common/src/main/java/org/apache/cxf/tools/common/model/JavaClass.java
incubator/cxf/trunk/tools/common/src/test/java/org/apache/cxf/tools/common/model/JavaClassTest.java
incubator/cxf/trunk/tools/javato/ws/src/main/java/org/apache/cxf/tools/java2wsdl/processor/internal/jaxws/RequestWrapper.java
incubator/cxf/trunk/tools/javato/ws/src/main/java/org/apache/cxf/tools/java2wsdl/processor/internal/jaxws/ResponseWrapper.java
incubator/cxf/trunk/tools/javato/ws/src/test/java/org/apache/cxf/tools/java2wsdl/processor/JavaToProcessorTest.java
Modified: incubator/cxf/trunk/tools/common/src/main/java/org/apache/cxf/tools/common/model/JavaClass.java
URL: http://svn.apache.org/viewvc/incubator/cxf/trunk/tools/common/src/main/java/org/apache/cxf/tools/common/model/JavaClass.java?rev=610277&r1=610276&r2=610277&view=diff
==============================================================================
--- incubator/cxf/trunk/tools/common/src/main/java/org/apache/cxf/tools/common/model/JavaClass.java (original)
+++ incubator/cxf/trunk/tools/common/src/main/java/org/apache/cxf/tools/common/model/JavaClass.java Tue Jan 8 22:04:56 2008
@@ -44,7 +44,7 @@
}
public JavaMethod appendGetter(JavaField field) {
- String getterName = "get" + StringUtils.capitalize(field.getParaName());
+ String getterName = "get" + StringUtils.capitalize(field.getName());
JavaMethod jMethod = new JavaMethod(this);
jMethod.setName(getterName);
jMethod.setReturn(new JavaReturn(field.getParaName(),
@@ -63,7 +63,7 @@
}
public JavaMethod appendSetter(JavaField field) {
- String setterName = "set" + StringUtils.capitalize(field.getParaName());
+ String setterName = "set" + StringUtils.capitalize(field.getName());
JavaMethod jMethod = new JavaMethod(this);
jMethod.setReturn(new JavaReturn("return", "void", null));
String paramName = getSetterParamName(field.getParaName());
Modified: incubator/cxf/trunk/tools/common/src/test/java/org/apache/cxf/tools/common/model/JavaClassTest.java
URL: http://svn.apache.org/viewvc/incubator/cxf/trunk/tools/common/src/test/java/org/apache/cxf/tools/common/model/JavaClassTest.java?rev=610277&r1=610276&r2=610277&view=diff
==============================================================================
--- incubator/cxf/trunk/tools/common/src/test/java/org/apache/cxf/tools/common/model/JavaClassTest.java (original)
+++ incubator/cxf/trunk/tools/common/src/test/java/org/apache/cxf/tools/common/model/JavaClassTest.java Tue Jan 8 22:04:56 2008
@@ -74,13 +74,13 @@
clz = new JavaClass();
clz.setFullClassName("org.apache.cxf.tools.fortest.withannotation.doc.jaxws.SayHiResponse");
getter = clz.appendGetter(field);
- assertEquals("get_return", getter.getName());
+ assertEquals("getReturn", getter.getName());
assertEquals("String[]",
getter.getReturn().getClassName());
assertEquals("_return", getter.getReturn().getName());
setter = clz.appendSetter(field);
- assertEquals("set_return", setter.getName());
+ assertEquals("setReturn", setter.getName());
assertEquals("void", setter.getReturn().getClassName());
assertEquals("_return", getter.getReturn().getName());
assertEquals("String[]",
Modified: incubator/cxf/trunk/tools/javato/ws/src/main/java/org/apache/cxf/tools/java2wsdl/processor/internal/jaxws/RequestWrapper.java
URL: http://svn.apache.org/viewvc/incubator/cxf/trunk/tools/javato/ws/src/main/java/org/apache/cxf/tools/java2wsdl/processor/internal/jaxws/RequestWrapper.java?rev=610277&r1=610276&r2=610277&view=diff
==============================================================================
--- incubator/cxf/trunk/tools/javato/ws/src/main/java/org/apache/cxf/tools/java2wsdl/processor/internal/jaxws/RequestWrapper.java (original)
+++ incubator/cxf/trunk/tools/javato/ws/src/main/java/org/apache/cxf/tools/java2wsdl/processor/internal/jaxws/RequestWrapper.java Tue Jan 8 22:04:56 2008
@@ -21,6 +21,8 @@
import java.lang.annotation.Annotation;
import java.lang.reflect.Method;
+import java.lang.reflect.ParameterizedType;
+import java.lang.reflect.Type;
import java.util.ArrayList;
import java.util.List;
@@ -61,24 +63,36 @@
protected List<JavaField> buildFields(final Method method, final MessageInfo message) {
List<JavaField> fields = new ArrayList<JavaField>();
String name;
- String type;
+ String type = "Object";
- final Class[] paramClasses = method.getParameterTypes();
+ final Type[] paramClasses = method.getGenericParameterTypes();
for (MessagePartInfo mpi : message.getMessageParts()) {
int idx = mpi.getIndex();
name = mpi.getName().getLocalPart();
- Class clz = paramClasses[idx];
- if (clz.isArray()) {
- if (isBuiltInTypes(clz.getComponentType())) {
- type = clz.getComponentType().getSimpleName() + "[]";
+ Type t = paramClasses[idx];
+
+
+ if (t instanceof Class) {
+ Class clz = (Class) t;
+ if (clz.isArray()) {
+ if (isBuiltInTypes(clz.getComponentType())) {
+ type = clz.getComponentType().getSimpleName() + "[]";
+ } else {
+ type = clz.getComponentType().getName() + "[]";
+ }
} else {
- type = clz.getComponentType().getName() + "[]";
+ type = clz.getName();
+ }
+ } else if (t instanceof ParameterizedType) {
+ ParameterizedType pt = (ParameterizedType) t;
+ if (pt.getActualTypeArguments().length > 0
+ && pt.getActualTypeArguments()[0] instanceof Class) {
+ type = ((Class)pt.getActualTypeArguments()[0]).getName();
}
- } else {
- type = clz.getName();
}
+
JavaField field = new JavaField(name, type, "");
- field.setTargetNamespace("");
+ field.setTargetNamespace("");
List<Annotation> jaxbAnns = WrapperUtil.getJaxbAnnotations(method, idx);
field.setJaxbAnnotations(jaxbAnns.toArray(new Annotation[jaxbAnns.size()]));
fields.add(field);
Modified: incubator/cxf/trunk/tools/javato/ws/src/main/java/org/apache/cxf/tools/java2wsdl/processor/internal/jaxws/ResponseWrapper.java
URL: http://svn.apache.org/viewvc/incubator/cxf/trunk/tools/javato/ws/src/main/java/org/apache/cxf/tools/java2wsdl/processor/internal/jaxws/ResponseWrapper.java?rev=610277&r1=610276&r2=610277&view=diff
==============================================================================
--- incubator/cxf/trunk/tools/javato/ws/src/main/java/org/apache/cxf/tools/java2wsdl/processor/internal/jaxws/ResponseWrapper.java (original)
+++ incubator/cxf/trunk/tools/javato/ws/src/main/java/org/apache/cxf/tools/java2wsdl/processor/internal/jaxws/ResponseWrapper.java Tue Jan 8 22:04:56 2008
@@ -21,6 +21,8 @@
import java.lang.annotation.Annotation;
import java.lang.reflect.Method;
+import java.lang.reflect.ParameterizedType;
+import java.lang.reflect.Type;
import java.util.ArrayList;
import java.util.List;
@@ -33,7 +35,7 @@
import org.apache.cxf.tools.java2wsdl.generator.wsdl11.model.WrapperBeanClass;
-public final class ResponseWrapper extends Wrapper {
+public final class ResponseWrapper extends Wrapper {
@Override
public void setOperationInfo(final OperationInfo op) {
super.setOperationInfo(op);
@@ -41,13 +43,13 @@
setClassName((String)op.getOutput().getMessageParts().get(0)
.getProperty("RESPONSE.WRAPPER.CLASSNAME"));
}
-
+
@Override
public boolean isWrapperAbsent(final Method method) {
javax.xml.ws.ResponseWrapper resWrapper = method.getAnnotation(javax.xml.ws.ResponseWrapper.class);
return getClassName() == null && (resWrapper == null || StringUtils.isEmpty(resWrapper.className()));
}
-
+
public String getWrapperTns(Method method) {
javax.xml.ws.RequestWrapper reqWrapper = method.getAnnotation(javax.xml.ws.RequestWrapper.class);
if (reqWrapper != null) {
@@ -55,25 +57,29 @@
}
return null;
}
-
+
@Override
protected List<JavaField> buildFields() {
return buildFields(getMethod(), getOperationInfo().getUnwrappedOperation().getOutput());
}
-
+
protected List<JavaField> buildFields(final Method method, final MessageInfo message) {
List<JavaField> fields = new ArrayList<JavaField>();
-
+
final Class<?> returnType = method.getReturnType();
JavaField field = new JavaField();
if (CollectionUtils.isEmpty(message.getMessageParts())) {
return fields;
}
MessagePartInfo part = message.getMessageParts().get(0);
+
field.setName(part.getName().getLocalPart());
-
+
+ boolean hasReturnType = false;
+
if (!returnType.isAssignableFrom(void.class)) {
- String type;
+ hasReturnType = true;
+ String type;
if (returnType.isArray()) {
if (isBuiltInTypes(returnType.getComponentType())) {
type = returnType.getComponentType().getSimpleName() + "[]";
@@ -87,34 +93,45 @@
field.setType(type);
field.setJaxbAnnotations(jaxbAnns.toArray(new Annotation[jaxbAnns.size()]));
field.setTargetNamespace("");
-
+
}
fields.add(field);
-
- final Class[] paramClasses = method.getParameterTypes();
+
+ final Type[] paramClasses = method.getGenericParameterTypes();
for (MessagePartInfo mpi : message.getMessageParts()) {
- int idx = mpi.getIndex();
- if (idx > 0) {
+ int idx = hasReturnType ? mpi.getIndex() - 1 : mpi.getIndex();
+ if (idx >= 0) {
String name = mpi.getName().getLocalPart();
- String type;
- Class clz = paramClasses[idx - 1];
- if (clz.isArray()) {
- if (isBuiltInTypes(clz.getComponentType())) {
- type = clz.getComponentType().getSimpleName() + "[]";
+ String type = "Object";
+
+ Type t = paramClasses[idx];
+ if (t instanceof Class) {
+ Class clz = (Class) t;
+ if (clz.isArray()) {
+ if (isBuiltInTypes(clz.getComponentType())) {
+ type = clz.getComponentType().getSimpleName() + "[]";
+ } else {
+ type = clz.getComponentType().getName() + "[]";
+ }
} else {
- type = clz.getComponentType().getName() + "[]";
+ type = clz.getName();
+ }
+ } else if (t instanceof ParameterizedType) {
+ ParameterizedType pt = (ParameterizedType) t;
+ if (pt.getActualTypeArguments().length > 0
+ && pt.getActualTypeArguments()[0] instanceof Class) {
+ type = ((Class)pt.getActualTypeArguments()[0]).getName();
}
- } else {
- type = clz.getName();
}
+
JavaField jf = new JavaField(name, type, "");
List<Annotation> jaxbAnns = WrapperUtil.getJaxbAnnotations(method, idx - 1);
jf.setJaxbAnnotations(jaxbAnns.toArray(new Annotation[jaxbAnns.size()]));
fields.add(new JavaField(name, type, ""));
-
+
}
}
-
+
return fields;
}
@@ -123,24 +140,24 @@
javax.xml.ws.ResponseWrapper resWrapper = method.getAnnotation(javax.xml.ws.ResponseWrapper.class);
String resClassName = getClassName();
String resNs = null;
-
+
if (resWrapper != null) {
resClassName = resWrapper.className().length() > 0 ? resWrapper.className() : resClassName;
resNs = resWrapper.targetNamespace().length() > 0 ? resWrapper.targetNamespace() : null;
- }
+ }
if (resClassName == null) {
- resClassName = getPackageName(method) + ".jaxws."
+ resClassName = getPackageName(method) + ".jaxws."
+ StringUtils.capitalize(method.getName())
+ "Response";
}
-
+
WrapperBeanClass jClass = new WrapperBeanClass();
jClass.setFullClassName(resClassName);
jClass.setNamespace(resNs);
return jClass;
}
-
-
-
+
+
+
}
Added: incubator/cxf/trunk/tools/javato/ws/src/test/java/org/apache/cxf/tools/fortest/addr/AddressingFeatureException.java
URL: http://svn.apache.org/viewvc/incubator/cxf/trunk/tools/javato/ws/src/test/java/org/apache/cxf/tools/fortest/addr/AddressingFeatureException.java?rev=610277&view=auto
==============================================================================
--- incubator/cxf/trunk/tools/javato/ws/src/test/java/org/apache/cxf/tools/fortest/addr/AddressingFeatureException.java (added)
+++ incubator/cxf/trunk/tools/javato/ws/src/test/java/org/apache/cxf/tools/fortest/addr/AddressingFeatureException.java Tue Jan 8 22:04:56 2008
@@ -0,0 +1,39 @@
+/**
+ * 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.tools.fortest.addr;
+
+import javax.xml.ws.WebServiceException;
+
+public class AddressingFeatureException extends WebServiceException {
+ String detail;
+
+ public AddressingFeatureException(String message) {
+ super(message);
+ }
+
+ public AddressingFeatureException(String message, String detail) {
+ super(message);
+ this.detail = detail;
+ }
+
+ public String getDetail() {
+ return detail;
+ }
+}
Added: incubator/cxf/trunk/tools/javato/ws/src/test/java/org/apache/cxf/tools/fortest/addr/WSAImpl2.java
URL: http://svn.apache.org/viewvc/incubator/cxf/trunk/tools/javato/ws/src/test/java/org/apache/cxf/tools/fortest/addr/WSAImpl2.java?rev=610277&view=auto
==============================================================================
--- incubator/cxf/trunk/tools/javato/ws/src/test/java/org/apache/cxf/tools/fortest/addr/WSAImpl2.java (added)
+++ incubator/cxf/trunk/tools/javato/ws/src/test/java/org/apache/cxf/tools/fortest/addr/WSAImpl2.java Tue Jan 8 22:04:56 2008
@@ -0,0 +1,48 @@
+/**
+ * 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.tools.fortest.addr;
+
+import javax.jws.WebService;
+import javax.xml.ws.Action;
+import javax.xml.ws.BindingType;
+import javax.xml.ws.Holder;
+import javax.xml.ws.soap.Addressing;
+import javax.xml.ws.soap.SOAPBinding;
+
+@WebService(
+ name = "AddressingFeatureTest2",
+ portName = "AddressingFeatureTest2Port",
+ targetNamespace = "http://addressingfeatureservice.org/wsdl",
+ serviceName = "AddressingFeatureTest2Service"
+)
+
+@BindingType(value = SOAPBinding.SOAP11HTTP_BINDING)
+@Addressing(enabled = true, required = true)
+
+public class WSAImpl2 {
+ @Action(input = "inputAction", output = "outputAction")
+ public int addNumbers(Holder<String> testname, int number1, int number2) {
+ if (number1 < 0 || number2 < 0) {
+ new AddressingFeatureException("One of the numbers received was negative:"
+ + number1 + ", " + number2);
+ }
+ return number1 + number2;
+ }
+}
Modified: incubator/cxf/trunk/tools/javato/ws/src/test/java/org/apache/cxf/tools/java2wsdl/processor/JavaToProcessorTest.java
URL: http://svn.apache.org/viewvc/incubator/cxf/trunk/tools/javato/ws/src/test/java/org/apache/cxf/tools/java2wsdl/processor/JavaToProcessorTest.java?rev=610277&r1=610276&r2=610277&view=diff
==============================================================================
--- incubator/cxf/trunk/tools/javato/ws/src/test/java/org/apache/cxf/tools/java2wsdl/processor/JavaToProcessorTest.java (original)
+++ incubator/cxf/trunk/tools/javato/ws/src/test/java/org/apache/cxf/tools/java2wsdl/processor/JavaToProcessorTest.java Tue Jan 8 22:04:56 2008
@@ -470,4 +470,65 @@
String expectedFile = getClass().getResource("expected/add_numbers_expected.wsdl").getFile();
assertWsdlEquals(new File(expectedFile), wsdlFile);
}
+
+ // Test the Holder Parameter in the RequestWrapperBean and ResponseWrapperBean
+ @Test
+ public void testWSAImpl2() throws Exception {
+ env.put(ToolConstants.CFG_OUTPUTFILE, output.getPath() + "/add_numbers_2.wsdl");
+ env.put(ToolConstants.CFG_CLASSNAME, "org.apache.cxf.tools.fortest.addr.WSAImpl2");
+ env.put(ToolConstants.CFG_VERBOSE, ToolConstants.CFG_VERBOSE);
+ env.put(ToolConstants.CFG_WRAPPERBEAN, ToolConstants.CFG_WRAPPERBEAN);
+ env.put(ToolConstants.CFG_CREATE_XSD_IMPORTS, ToolConstants.CFG_CREATE_XSD_IMPORTS);
+ try {
+ processor.setEnvironment(env);
+ processor.process();
+ } catch (Exception e) {
+ e.printStackTrace();
+ }
+ //File wsdlFile = new File(output, "add_numbers.wsdl");
+ //assertTrue("Generate Wsdl Fail", wsdlFile.exists());
+ //String expectedFile = getClass().getResource("expected/add_numbers_expected.wsdl").getFile();
+ //assertWsdlEquals(new File(expectedFile), wsdlFile);
+
+ String pkgBase = "org/apache/cxf/tools/fortest/addr/jaxws";
+ File requestWrapperClass = new File(output, pkgBase + "/AddNumbers.java");
+ File responseWrapperClass = new File(output, pkgBase + "/AddNumbersResponse.java");
+ assertTrue(requestWrapperClass.exists());
+ assertTrue(responseWrapperClass.exists());
+
+ assertTrue(getStringFromFile(requestWrapperClass).indexOf("String arg0") != -1);
+ assertTrue(getStringFromFile(requestWrapperClass).indexOf("Holder") == -1);
+ assertTrue(getStringFromFile(responseWrapperClass).indexOf("String arg0") != -1);
+ assertTrue(getStringFromFile(responseWrapperClass).indexOf("Holder") == -1);
+ }
+
+// @Test
+// public void testInherit() throws Exception {
+// env.put(ToolConstants.CFG_OUTPUTFILE, output.getPath() + "/inherit.wsdl");
+// env.put(ToolConstants.CFG_CLASSNAME, "org.apache.cxf.tools.fortest.inherit.A");
+// env.put(ToolConstants.CFG_VERBOSE, ToolConstants.CFG_VERBOSE);
+// env.put(ToolConstants.CFG_WRAPPERBEAN, ToolConstants.CFG_WRAPPERBEAN);
+// //env.put(ToolConstants.CFG_CREATE_XSD_IMPORTS, ToolConstants.CFG_CREATE_XSD_IMPORTS);
+// try {
+// processor.setEnvironment(env);
+// processor.process();
+// } catch (Exception e) {
+// e.printStackTrace();
+// }
+// }
+
+// @Test
+// public void testWSARefParam() throws Exception {
+// env.put(ToolConstants.CFG_OUTPUTFILE, output.getPath() + "/refparam.wsdl");
+// env.put(ToolConstants.CFG_CLASSNAME, "org.apache.cxf.tools.fortest.refparam.AddNumbersImpl");
+// env.put(ToolConstants.CFG_VERBOSE, ToolConstants.CFG_VERBOSE);
+// env.put(ToolConstants.CFG_WRAPPERBEAN, ToolConstants.CFG_WRAPPERBEAN);
+// try {
+// processor.setEnvironment(env);
+// processor.process();
+// } catch (Exception e) {
+// e.printStackTrace();
+// }
+// }
+
}