Author: ema
Date: Mon Jan 29 00:18:26 2007
New Revision: 500963
URL: http://svn.apache.org/viewvc?view=rev&rev=500963
Log:
Added more test cases for wsdl2java
Modified:
incubator/cxf/trunk/tools2/wsdlto/core/src/main/java/org/apache/cxf/tools/wsdlto/WSDLToJavaContainer.java
incubator/cxf/trunk/tools2/wsdlto/databinding/jaxb/src/main/java/org/apache/cxf/tools/wsdlto/databinding/jaxb/JAXBDataBinding.java
incubator/cxf/trunk/tools2/wsdlto/frontend/jaxws/src/main/java/org/apache/cxf/tools/wsdlto/frontend/jaxws/processor/internal/OperationProcessor.java
incubator/cxf/trunk/tools2/wsdlto/frontend/jaxws/src/main/java/org/apache/cxf/tools/wsdlto/frontend/jaxws/processor/internal/ProcessorUtil.java
incubator/cxf/trunk/tools2/wsdlto/frontend/jaxws/src/main/java/org/apache/cxf/tools/wsdlto/frontend/jaxws/processor/internal/ServiceProcessor.java
incubator/cxf/trunk/tools2/wsdlto/test/src/test/java/org/apache/cxf/tools/wsdlto/jaxws/CodeGenTest.java
incubator/cxf/trunk/tools2/wsdlto/test/src/test/resources/wsdl2java_wsdl/Invoice.xsd
incubator/cxf/trunk/tools2/wsdlto/test/src/test/resources/wsdl2java_wsdl/invalid_mep.wsdl
Modified:
incubator/cxf/trunk/tools2/wsdlto/core/src/main/java/org/apache/cxf/tools/wsdlto/WSDLToJavaContainer.java
URL:
http://svn.apache.org/viewvc/incubator/cxf/trunk/tools2/wsdlto/core/src/main/java/org/apache/cxf/tools/wsdlto/WSDLToJavaContainer.java?view=diff&rev=500963&r1=500962&r2=500963
==============================================================================
---
incubator/cxf/trunk/tools2/wsdlto/core/src/main/java/org/apache/cxf/tools/wsdlto/WSDLToJavaContainer.java
(original)
+++
incubator/cxf/trunk/tools2/wsdlto/core/src/main/java/org/apache/cxf/tools/wsdlto/WSDLToJavaContainer.java
Mon Jan 29 00:18:26 2007
@@ -126,14 +126,17 @@
AbstractWSDLBuilder<Definition> builder =
(AbstractWSDLBuilder<Definition>)
frontend.getWSDLBuilder();
builder.setContext(context);
- Definition definition = builder.build(wsdlURL);
+ //TODO: Modify builder api, let customized definition make
sense.
+ builder.build(wsdlURL);
builder.customize();
- context.put(Definition.class, builder.getWSDLModel());
+ Definition definition = builder.getWSDLModel();
+
+ context.put(Definition.class, definition);
if (context.optionSet(ToolConstants.CFG_VALIDATE_WSDL)) {
builder.validate(definition);
}
-
+
WSDLServiceBuilder serviceBuilder = new
WSDLServiceBuilder(getBus());
service = serviceBuilder.buildService(definition,
getServiceQName(definition));
context.put(ClassCollector.class, new ClassCollector());
Modified:
incubator/cxf/trunk/tools2/wsdlto/databinding/jaxb/src/main/java/org/apache/cxf/tools/wsdlto/databinding/jaxb/JAXBDataBinding.java
URL:
http://svn.apache.org/viewvc/incubator/cxf/trunk/tools2/wsdlto/databinding/jaxb/src/main/java/org/apache/cxf/tools/wsdlto/databinding/jaxb/JAXBDataBinding.java?view=diff&rev=500963&r1=500962&r2=500963
==============================================================================
---
incubator/cxf/trunk/tools2/wsdlto/databinding/jaxb/src/main/java/org/apache/cxf/tools/wsdlto/databinding/jaxb/JAXBDataBinding.java
(original)
+++
incubator/cxf/trunk/tools2/wsdlto/databinding/jaxb/src/main/java/org/apache/cxf/tools/wsdlto/databinding/jaxb/JAXBDataBinding.java
Mon Jan 29 00:18:26 2007
@@ -22,7 +22,9 @@
import java.io.IOException;
import java.util.ArrayList;
import java.util.Collection;
+import java.util.HashMap;
import java.util.List;
+import java.util.Map;
import java.util.logging.Logger;
import javax.wsdl.Definition;
@@ -30,6 +32,8 @@
import org.w3c.dom.Document;
import org.w3c.dom.Element;
+import org.w3c.dom.Node;
+import org.w3c.dom.NodeList;
import org.xml.sax.InputSource;
@@ -44,7 +48,6 @@
import org.apache.cxf.common.i18n.Message;
import org.apache.cxf.common.logging.LogUtils;
import org.apache.cxf.common.util.StringUtils;
-
import org.apache.cxf.service.model.SchemaInfo;
import org.apache.cxf.service.model.ServiceInfo;
import org.apache.cxf.tools.common.ToolConstants;
@@ -60,7 +63,7 @@
private ToolContext env;
private ServiceInfo serviceInfo;
private Definition def;
- private List<String> schemaSystemIds = new ArrayList<String>();
+ private Map<String, Element> sysIdSchemeMap = new HashMap<String,
Element>();
@SuppressWarnings("unchecked")
private void initialize(ToolContext penv) throws ToolException {
@@ -88,14 +91,27 @@
Document[] docs = schema.getSchema().getAllSchemas();
for (int i = 0; i < docs.length; i++) {
Element ele = docs[i].getDocumentElement();
+ this.removeImportElement(ele);
+
String systemId = schema.getElement().getBaseURI();
+ if (systemId == null) {
+ systemId = def.getDocumentBaseURI();
+ }
String tns = ele.getAttribute("targetNamespace");
if (StringUtils.isEmpty(tns)) {
continue;
}
- if
(schemaSystemIds.contains(schema.getElement().getBaseURI())) {
+
+ if
(sysIdSchemeMap.containsKey(schema.getElement().getBaseURI())) {
systemId = schema.getElement().getBaseURI() + "#" + tns;
- }
+ int index = 0;
+ while (sysIdSchemeMap.containsKey(systemId)) {
+ systemId = systemId + index++;
+ }
+
+ }
+
+ sysIdSchemeMap.put(systemId, ele);
schemaCompiler.parseSchema(systemId, ele);
}
@@ -199,5 +215,22 @@
}
}
return null;
+ }
+
+
+ private void removeImportElement(Element element) {
+ NodeList nodeList =
element.getElementsByTagNameNS(ToolConstants.SCHEMA_URI, "import");
+ List<Node> ns = new ArrayList<Node>();
+ for (int tmp = 0; tmp < nodeList.getLength(); tmp++) {
+
+ Node importNode = nodeList.item(tmp);
+ ns.add(importNode);
+ }
+ for (Node item : ns) {
+ Node schemaNode = item.getParentNode();
+ schemaNode.removeChild(item);
+ }
+
}
+
}
Modified:
incubator/cxf/trunk/tools2/wsdlto/frontend/jaxws/src/main/java/org/apache/cxf/tools/wsdlto/frontend/jaxws/processor/internal/OperationProcessor.java
URL:
http://svn.apache.org/viewvc/incubator/cxf/trunk/tools2/wsdlto/frontend/jaxws/src/main/java/org/apache/cxf/tools/wsdlto/frontend/jaxws/processor/internal/OperationProcessor.java?view=diff&rev=500963&r1=500962&r2=500963
==============================================================================
---
incubator/cxf/trunk/tools2/wsdlto/frontend/jaxws/src/main/java/org/apache/cxf/tools/wsdlto/frontend/jaxws/processor/internal/OperationProcessor.java
(original)
+++
incubator/cxf/trunk/tools2/wsdlto/frontend/jaxws/src/main/java/org/apache/cxf/tools/wsdlto/frontend/jaxws/processor/internal/OperationProcessor.java
Mon Jan 29 00:18:26 2007
@@ -21,6 +21,7 @@
import java.util.Collection;
import java.util.Iterator;
+import java.util.List;
import java.util.logging.Level;
import org.apache.cxf.service.model.FaultInfo;
@@ -64,6 +65,9 @@
@SuppressWarnings("unchecked")
public void processMethod(JavaMethod method, OperationInfo operation,
JAXWSBinding globalBinding) throws ToolException
{
+ if (isAsynCMethod(method)) {
+ return;
+ }
MessageInfo inputMessage = operation.getInput();
MessageInfo outputMessage = operation.getOutput();
@@ -99,9 +103,14 @@
|| opBinding != null && opBinding.isEnableAsyncMapping()) {
enableAsync = true;
}
- if (!method.isOneWay() && enableAsync) {
+
+
+ if (!method.isOneWay()
+ && enableAsync && !isAddedAsyMethod(method)) {
addAsyncMethod(method);
}
+
+
}
@@ -136,10 +145,17 @@
}
}
+ private boolean isAsynCMethod(JavaMethod method) {
+ if (method.getName().toLowerCase()
+ .equals((method.getOperationName() +
ToolConstants.ASYNC_METHOD_SUFFIX).toLowerCase())) {
+ return true;
+ }
+ return false;
+ }
+
private void addAsyncMethod(JavaMethod method) throws ToolException {
addPollingMethod(method);
addCallbackMethod(method);
-
method.getInterface().addImport("javax.xml.ws.AsyncHandler");
method.getInterface().addImport("java.util.concurrent.Future");
method.getInterface().addImport("javax.xml.ws.Response");
@@ -219,5 +235,16 @@
sb.append(response);
sb.append(">");
return sb.toString();
+ }
+
+ private boolean isAddedAsyMethod(JavaMethod method) {
+ List<JavaMethod> jmethods = method.getInterface().getMethods();
+ for (JavaMethod jm : jmethods) {
+ if
(!jm.getName().toLowerCase().equals(jm.getOperationName().toLowerCase())) {
+ return true;
+
+ }
+ }
+ return false;
}
}
Modified:
incubator/cxf/trunk/tools2/wsdlto/frontend/jaxws/src/main/java/org/apache/cxf/tools/wsdlto/frontend/jaxws/processor/internal/ProcessorUtil.java
URL:
http://svn.apache.org/viewvc/incubator/cxf/trunk/tools2/wsdlto/frontend/jaxws/src/main/java/org/apache/cxf/tools/wsdlto/frontend/jaxws/processor/internal/ProcessorUtil.java?view=diff&rev=500963&r1=500962&r2=500963
==============================================================================
---
incubator/cxf/trunk/tools2/wsdlto/frontend/jaxws/src/main/java/org/apache/cxf/tools/wsdlto/frontend/jaxws/processor/internal/ProcessorUtil.java
(original)
+++
incubator/cxf/trunk/tools2/wsdlto/frontend/jaxws/src/main/java/org/apache/cxf/tools/wsdlto/frontend/jaxws/processor/internal/ProcessorUtil.java
Mon Jan 29 00:18:26 2007
@@ -222,7 +222,7 @@
}
if (jtype == null) {
- if (!type.equals(resolvePartType(part))) {
+ if (!resolvePartType(part).equals(type)) {
jtype = resolvePartType(part, context, true);
} else {
jtype = parsePackageName(namespace, userPackage) + "." + type;
Modified:
incubator/cxf/trunk/tools2/wsdlto/frontend/jaxws/src/main/java/org/apache/cxf/tools/wsdlto/frontend/jaxws/processor/internal/ServiceProcessor.java
URL:
http://svn.apache.org/viewvc/incubator/cxf/trunk/tools2/wsdlto/frontend/jaxws/src/main/java/org/apache/cxf/tools/wsdlto/frontend/jaxws/processor/internal/ServiceProcessor.java?view=diff&rev=500963&r1=500962&r2=500963
==============================================================================
---
incubator/cxf/trunk/tools2/wsdlto/frontend/jaxws/src/main/java/org/apache/cxf/tools/wsdlto/frontend/jaxws/processor/internal/ServiceProcessor.java
(original)
+++
incubator/cxf/trunk/tools2/wsdlto/frontend/jaxws/src/main/java/org/apache/cxf/tools/wsdlto/frontend/jaxws/processor/internal/ServiceProcessor.java
Mon Jan 29 00:18:26 2007
@@ -110,7 +110,7 @@
}
//customizing
- JAXWSBinding serviceBinding = service.getExtensor(JAXWSBinding.class);
+ JAXWSBinding serviceBinding =
service.getDescription().getExtensor(JAXWSBinding.class);
//TODO : Handle service customized class
if (serviceBinding != null) {
Modified:
incubator/cxf/trunk/tools2/wsdlto/test/src/test/java/org/apache/cxf/tools/wsdlto/jaxws/CodeGenTest.java
URL:
http://svn.apache.org/viewvc/incubator/cxf/trunk/tools2/wsdlto/test/src/test/java/org/apache/cxf/tools/wsdlto/jaxws/CodeGenTest.java?view=diff&rev=500963&r1=500962&r2=500963
==============================================================================
---
incubator/cxf/trunk/tools2/wsdlto/test/src/test/java/org/apache/cxf/tools/wsdlto/jaxws/CodeGenTest.java
(original)
+++
incubator/cxf/trunk/tools2/wsdlto/test/src/test/java/org/apache/cxf/tools/wsdlto/jaxws/CodeGenTest.java
Mon Jan 29 00:18:26 2007
@@ -22,8 +22,6 @@
import java.lang.reflect.Method;
import java.lang.reflect.Modifier;
-
-//import javax.jws.HandlerChain;
import javax.jws.HandlerChain;
import javax.jws.Oneway;
import javax.jws.WebMethod;
@@ -41,8 +39,6 @@
import org.apache.cxf.tools.util.AnnotationUtil;
import org.apache.cxf.tools.wsdlto.WSDLToJavaContainer;
-
-
public class CodeGenTest extends ProcessorTestBase {
private WSDLToJavaContainer processor;
private ClassLoader classLoader;
@@ -307,7 +303,7 @@
public void testSchemaImport() throws Exception {
env.put(ToolConstants.CFG_WSDLURL,
getLocation("/wsdl2java_wsdl/hello_world_schema_import.wsdl"));
-
+
processor.setContext(env);
processor.execute();
@@ -492,12 +488,11 @@
}
-
public void testWSAddress() throws Exception {
env.addNamespacePackageMap("http://apache.org/hello_world_soap_http",
"ws.address");
env.put(ToolConstants.CFG_BINDING,
getLocation("/wsdl2java_wsdl/ws_address_binding.wsdl"));
env.put(ToolConstants.CFG_WSDLURL,
getLocation("/wsdl2java_wsdl/hello_world_addr.wsdl"));
-
+
processor.setContext(env);
processor.execute();
@@ -516,36 +511,14 @@
Class clz = classLoader.loadClass("ws.address.Greeter");
HandlerChain handlerChainAnno =
AnnotationUtil.getPrivClassAnnotation(clz, HandlerChain.class);
assertEquals("Greeter_handler.xml", handlerChainAnno.file());
- assertNotNull("Handler chain xml generate fail!",
-
classLoader.getResource("ws/address/Greeter_handler.xml"));
+ assertNotNull("Handler chain xml generate fail!", classLoader
+ .getResource("ws/address/Greeter_handler.xml"));
}
-
-
- public void testSupportXMLBindingBare() throws Exception {
- env.put(ToolConstants.CFG_WSDLURL,
getLocation("/wsdl2java_wsdl/xml_http_bare.wsdl"));
- processor.setContext(env);
- processor.execute();
- }
-
-
- public void testSupportXMLBindingWrapped() throws Exception {
- env.put(ToolConstants.CFG_WSDLURL,
getLocation("/wsdl2java_wsdl/xml_http_wrapped.wsdl"));
- processor.setContext(env);
- processor.execute();
- }
-
-
- public void testRouterWSDL() throws Exception {
- env.put(ToolConstants.CFG_WSDLURL,
getLocation("/wsdl2java_wsdl/router.wsdl"));
- processor.setContext(env);
- processor.execute();
- }
-
public void testVoidInOutMethod() throws Exception {
env.put(ToolConstants.CFG_WSDLURL,
getLocation("/wsdl2java_wsdl/interoptestdoclit.wsdl"));
processor.setContext(env);
- processor.execute(true);
+ processor.execute();
assertNotNull(output);
@@ -574,7 +547,7 @@
public void testWsdlImport() throws Exception {
env.put(ToolConstants.CFG_WSDLURL,
getLocation("/wsdl2java_wsdl/hello_world_wsdl_import.wsdl"));
processor.setContext(env);
- processor.execute(true);
+ processor.execute();
assertNotNull(output);
@@ -600,7 +573,7 @@
public void testWebFault() throws Exception {
env.put(ToolConstants.CFG_WSDLURL,
getLocation("/wsdl2java_wsdl/InvoiceServer-issue305570.wsdl"));
processor.setContext(env);
- processor.execute(true);
+ processor.execute();
assertNotNull(output);
@@ -619,8 +592,115 @@
}
-
-
+ public void testMultiSchemaParsing() throws Exception {
+ env.put(ToolConstants.CFG_WSDLURL,
getLocation("/wsdl2java_wsdl/multi_schema.wsdl"));
+
+ processor.setContext(env);
+ processor.execute();
+
+ assertNotNull(output);
+ File org = new File(output, "org");
+ assertTrue(org.exists());
+ File tempuri = new File(org, "tempuri");
+ assertTrue(tempuri.exists());
+ File header = new File(tempuri, "header");
+ assertTrue(header.exists());
+
+ File[] files = header.listFiles();
+ assertEquals(3, files.length);
+ }
+
+ public void testDefaultParameterOrder() throws Exception {
+ env.put(ToolConstants.CFG_WSDLURL,
getLocation("/wsdl2java_wsdl/bug161/header2.wsdl"));
+ processor.setContext(env);
+ processor.execute(true);
+ Class clz = classLoader.loadClass("org.apache.header2.Header2Test");
+ Class header = classLoader.loadClass("org.apache.header2.Header");
+ Method method = clz.getMethod("headerMethod", new Class[]
{Holder.class, header});
+ assertNotNull("method should be generated", method);
+ }
+
+ public void testSupportXMLBindingBare() throws Exception {
+ env.put(ToolConstants.CFG_WSDLURL,
getLocation("/wsdl2java_wsdl/xml_http_bare.wsdl"));
+ processor.setContext(env);
+ processor.execute();
+
+ Class clz =
classLoader.loadClass("org.apache.xml_http_bare.GreetingPortType");
+
+ Method method = clz.getMethod("sayHello", new Class[]
{java.lang.String.class});
+ assertNotNull("sayHello is not be generated", method);
+
+ SOAPBinding soapBindingAnn =
(SOAPBinding)clz.getAnnotation(SOAPBinding.class);
+ assertEquals(soapBindingAnn.parameterStyle(),
SOAPBinding.ParameterStyle.BARE);
+
+ }
+
+ public void testSupportXMLBindingWrapped() throws Exception {
+ env.put(ToolConstants.CFG_WSDLURL,
getLocation("/wsdl2java_wsdl/xml_http_wrapped.wsdl"));
+ processor.setContext(env);
+ processor.execute();
+ Class clz =
classLoader.loadClass("org.apache.xml_http_wrapped.GreetingPortType");
+
+ Method method = clz.getMethod("sayHello", new Class[]
{java.lang.String.class});
+ assertNotNull("sayHello is not be generated", method);
+
+ javax.xml.ws.RequestWrapper reqAnno =
method.getAnnotation(javax.xml.ws.RequestWrapper.class);
+ assertNotNull("WrapperBean Annotation could not be found", reqAnno);
+ }
+
+ public void testRouterWSDL() throws Exception {
+ env.put(ToolConstants.CFG_WSDLURL,
getLocation("/wsdl2java_wsdl/router.wsdl"));
+ processor.setContext(env);
+ processor.execute();
+
+ Class clz =
classLoader.loadClass("org.apache.hello_world_doc_lit.Greeter");
+
+ Method method = clz.getMethod("greetMe", new Class[]
{java.lang.String.class});
+ assertNotNull("greetMe is not be generated", method);
+
+ javax.xml.ws.RequestWrapper reqAnno =
method.getAnnotation(javax.xml.ws.RequestWrapper.class);
+ assertNotNull("WrapperBean Annotation could not be found", reqAnno);
+
+ clz =
classLoader.loadClass("org.apache.hwrouter.HTTPSoapServiceDestination");
+ assertNotNull("HTTPSoapServiceDestination is not be generated", clz);
+
+ }
+
+ public void testWSDLContainsJavaKeywords() throws Exception {
+
+ env.put(ToolConstants.CFG_WSDLURL,
+
getLocation("/wsdl2java_wsdl/hello_world_with_keywords_operation.wsdl"));
+
+ processor.setContext(env);
+ processor.execute(true);
+
+ Class clz =
classLoader.loadClass("org.apache.hello_world_soap_http.Greeter");
+ Class sayHi =
classLoader.loadClass("org.apache.hello_world_soap_http.types.SayHi");
+ Method method = clz.getMethod("_do", new Class[] {sayHi});
+ assertNotNull("method which name contains java keywords is not be
generated", method);
+
+ }
+
+ public void testInvalidMepOperation() throws Exception {
+ try {
+ env.put(ToolConstants.CFG_WSDLURL,
getLocation("/wsdl2java_wsdl/invalid_mep.wsdl"));
+ processor.setContext(env);
+ processor.execute(true);
+ } catch (Exception e) {
+ assertTrue("Invalid wsdl should be diagnosed", e.getMessage()
+ .indexOf("Invalid WSDL,wsdl:operation") > -1);
+ }
+
+ }
+
+ public void testWSDLWithEnumType() throws Exception {
+ env.put(ToolConstants.CFG_WSDLURL,
getLocation("/wsdl2java_wsdl/hello_world_with_enum_type.wsdl"));
+ processor.setContext(env);
+ processor.execute(true);
+ Class clz =
classLoader.loadClass("org.apache.hello_world_soap_http.types.ActionType");
+ assertNotNull("Enum class could not be found", clz);
+ }
+
private String getLocation(String wsdlFile) {
return this.getClass().getResource(wsdlFile).getFile();
}
Modified:
incubator/cxf/trunk/tools2/wsdlto/test/src/test/resources/wsdl2java_wsdl/Invoice.xsd
URL:
http://svn.apache.org/viewvc/incubator/cxf/trunk/tools2/wsdlto/test/src/test/resources/wsdl2java_wsdl/Invoice.xsd?view=diff&rev=500963&r1=500962&r2=500963
==============================================================================
---
incubator/cxf/trunk/tools2/wsdlto/test/src/test/resources/wsdl2java_wsdl/Invoice.xsd
(original)
+++
incubator/cxf/trunk/tools2/wsdlto/test/src/test/resources/wsdl2java_wsdl/Invoice.xsd
Mon Jan 29 00:18:26 2007
@@ -17,8 +17,7 @@
specific language governing permissions and limitations
under the License.
-->
-<!--XSD file template-->
-<!--Created by IONA Artix Designer-->
+
<schema targetNamespace="http://apache.org/Invoice"
xmlns="http://www.w3.org/2001/XMLSchema"
xmlns:soap="http://schemas.xmlsoap.org/wsdl/soap/"
Modified:
incubator/cxf/trunk/tools2/wsdlto/test/src/test/resources/wsdl2java_wsdl/invalid_mep.wsdl
URL:
http://svn.apache.org/viewvc/incubator/cxf/trunk/tools2/wsdlto/test/src/test/resources/wsdl2java_wsdl/invalid_mep.wsdl?view=diff&rev=500963&r1=500962&r2=500963
==============================================================================
---
incubator/cxf/trunk/tools2/wsdlto/test/src/test/resources/wsdl2java_wsdl/invalid_mep.wsdl
(original)
+++
incubator/cxf/trunk/tools2/wsdlto/test/src/test/resources/wsdl2java_wsdl/invalid_mep.wsdl
Mon Jan 29 00:18:26 2007
@@ -40,7 +40,7 @@
</wsdl:operation>
</wsdl:portType>
- <wsdl:binding name="EchoNotifyBinding" type="EchoNotification">
+ <wsdl:binding name="EchoNotifyBinding" type="tns:EchoNotification">
<soap:binding style="document"
transport="http://schemas.xmlsoap.org/soap/http" />
<wsdl:operation name="notify">
@@ -51,7 +51,7 @@
</wsdl:operation>
</wsdl:binding>
<wsdl:service name="EchoService">
- <wsdl:port name="EchoNotify" binding="EchoNotifyBinding">
+ <wsdl:port name="EchoNotify" binding="tns:EchoNotifyBinding">
<soap:address location="www.exampleLocation.com/Port1"
/>
</wsdl:port>
</wsdl:service>