Author: ema
Date: Fri Jan 12 00:26:34 2007
New Revision: 495513
URL: http://svn.apache.org/viewvc?view=rev&rev=495513
Log:
[CXF-313]Ported some test cases from WSDLToJavaProcessTest in old tools
Modified:
incubator/cxf/trunk/tools2/common/src/main/java/org/apache/cxf/tools/common/AbstractCXFToolContainer.java
incubator/cxf/trunk/tools2/common/src/main/java/org/apache/cxf/tools/common/ToolConstants.java
incubator/cxf/trunk/tools2/common/src/main/java/org/apache/cxf/tools/common/toolspec/AbstractToolContainer.java
incubator/cxf/trunk/tools2/wsdlto/core/src/main/java/org/apache/cxf/tools/wsdlto/WSDLToJava.java
incubator/cxf/trunk/tools2/wsdlto/core/src/main/java/org/apache/cxf/tools/wsdlto/WSDLToJavaContainer.java
incubator/cxf/trunk/tools2/wsdlto/core/src/main/java/org/apache/cxf/tools/wsdlto/core/PluginLoader.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/customiztion/CustomizationParser.java
incubator/cxf/trunk/tools2/wsdlto/frontend/jaxws/src/main/java/org/apache/cxf/tools/wsdlto/frontend/jaxws/customiztion/JAXWSBindingParser.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/ParameterProcessor.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/test/src/test/java/org/apache/cxf/tools/wsdlto/jaxws/CodeGenTest.java
incubator/cxf/trunk/tools2/wsdlto/test/src/test/resources/wsdl2java_wsdl/hello_world_async.wsdl
Modified:
incubator/cxf/trunk/tools2/common/src/main/java/org/apache/cxf/tools/common/AbstractCXFToolContainer.java
URL:
http://svn.apache.org/viewvc/incubator/cxf/trunk/tools2/common/src/main/java/org/apache/cxf/tools/common/AbstractCXFToolContainer.java?view=diff&rev=495513&r1=495512&r2=495513
==============================================================================
---
incubator/cxf/trunk/tools2/common/src/main/java/org/apache/cxf/tools/common/AbstractCXFToolContainer.java
(original)
+++
incubator/cxf/trunk/tools2/common/src/main/java/org/apache/cxf/tools/common/AbstractCXFToolContainer.java
Fri Jan 12 00:26:34 2007
@@ -48,8 +48,8 @@
private boolean verbose;
private String usage;
private final ErrorVisitor errors = new ErrorVisitor();
-
-
+
+
public AbstractCXFToolContainer(String nm, ToolSpec toolspec) throws
Exception {
super(toolspec);
name = nm;
@@ -61,6 +61,9 @@
}
public boolean hasInfoOption() throws ToolException {
commandDocument = getCommandDocument();
+ if (commandDocument == null) {
+ return false;
+ }
if ((commandDocument.hasParameter("help")) ||
(commandDocument.hasParameter("version"))) {
return true;
}
@@ -75,8 +78,7 @@
if (commandDocument.hasParameter("verbose")) {
verbose = true;
outputFullCommandLine();
- outputVersion();
-
+ outputVersion();
}
checkParams(errors);
}
@@ -111,6 +113,9 @@
public abstract void checkParams(ErrorVisitor err) throws ToolException;
public boolean isVerboseOn() {
+ if (context != null && context.isVerbose()) {
+ return true;
+ }
return verbose;
}
@@ -257,6 +262,9 @@
protected Map<String, Object> getParametersMap(Set stringArrayKeys) {
Map<String, Object> map = new HashMap<String, Object>();
CommandDocument doc = getCommandDocument();
+ if (doc == null) {
+ return map;
+ }
String[] keys = doc.getParameterNames();
if (keys == null) {
return map;
Modified:
incubator/cxf/trunk/tools2/common/src/main/java/org/apache/cxf/tools/common/ToolConstants.java
URL:
http://svn.apache.org/viewvc/incubator/cxf/trunk/tools2/common/src/main/java/org/apache/cxf/tools/common/ToolConstants.java?view=diff&rev=495513&r1=495512&r2=495513
==============================================================================
---
incubator/cxf/trunk/tools2/common/src/main/java/org/apache/cxf/tools/common/ToolConstants.java
(original)
+++
incubator/cxf/trunk/tools2/common/src/main/java/org/apache/cxf/tools/common/ToolConstants.java
Fri Jan 12 00:26:34 2007
@@ -55,6 +55,10 @@
public static final String CFG_DEFAULT_EX = "defaultex";
public static final String CFG_VALIDATE_WSDL = "validate";
+
+ public static final String CFG_FRONTEND = "frontend";
+
+ public static final String CFG_DATABINDING = "db";
// WSDL2Java Constants
Modified:
incubator/cxf/trunk/tools2/common/src/main/java/org/apache/cxf/tools/common/toolspec/AbstractToolContainer.java
URL:
http://svn.apache.org/viewvc/incubator/cxf/trunk/tools2/common/src/main/java/org/apache/cxf/tools/common/toolspec/AbstractToolContainer.java?view=diff&rev=495513&r1=495512&r2=495513
==============================================================================
---
incubator/cxf/trunk/tools2/common/src/main/java/org/apache/cxf/tools/common/toolspec/AbstractToolContainer.java
(original)
+++
incubator/cxf/trunk/tools2/common/src/main/java/org/apache/cxf/tools/common/toolspec/AbstractToolContainer.java
Fri Jan 12 00:26:34 2007
@@ -46,19 +46,26 @@
private OutputStream outOutputStream;
private OutputStream errOutputStream;
-
-
+
+
public class GenericOutputStream extends OutputStream {
public void write(int b) throws IOException {
}
}
+ public AbstractToolContainer() {
+
+ }
+
public AbstractToolContainer(ToolSpec ts) throws BadUsageException {
toolspec = ts;
}
public void setArguments(String[] args) {
+ if (args == null) {
+ return;
+ }
arguments = new String[args.length];
System.arraycopy(args, 0, arguments, 0, args.length);
setMode(args);
Modified:
incubator/cxf/trunk/tools2/wsdlto/core/src/main/java/org/apache/cxf/tools/wsdlto/WSDLToJava.java
URL:
http://svn.apache.org/viewvc/incubator/cxf/trunk/tools2/wsdlto/core/src/main/java/org/apache/cxf/tools/wsdlto/WSDLToJava.java?view=diff&rev=495513&r1=495512&r2=495513
==============================================================================
---
incubator/cxf/trunk/tools2/wsdlto/core/src/main/java/org/apache/cxf/tools/wsdlto/WSDLToJava.java
(original)
+++
incubator/cxf/trunk/tools2/wsdlto/core/src/main/java/org/apache/cxf/tools/wsdlto/WSDLToJava.java
Fri Jan 12 00:26:34 2007
@@ -33,9 +33,11 @@
public class WSDLToJava {
+
+ public static final String DEFAULT_FRONTEND_NAME = "jaxws";
+ public static final String DEFAULT_DATABINDING_NAME = "jaxb";
+
private static String[] args;
- private static final String DEFAULT_FRONTEND_NAME = "jaxws";
- private static final String DEFAULT_DATABINDING_NAME = "jaxb";
private PluginLoader pluginLoader = PluginLoader.getInstance();
@@ -59,10 +61,16 @@
return pluginLoader.getDataBindingProfile(name);
}
- protected void run(ToolContext context) throws Exception {
- context.put(ToolConstants.CFG_CMD_ARG, args);
+ public void run(ToolContext context) throws Exception {
+ FrontEndProfile frontend = null;
+ if (args != null) {
+ context.put(ToolConstants.CFG_CMD_ARG, args);
+ frontend = loadFrontEnd(getFrontEndName(args));
+ } else {
+ frontend = loadFrontEnd("");
+ }
+
- FrontEndProfile frontend = loadFrontEnd(getFrontEndName(args));
context.put(FrontEndProfile.class, frontend);
DataBindingProfile databinding =
loadDataBinding(getDataBindingName(args));
@@ -87,6 +95,9 @@
}
private static boolean isSet(String[] keys) {
+ if (args == null) {
+ return false;
+ }
List<String> pargs = Arrays.asList(args);
for (String key : keys) {
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=495513&r1=495512&r2=495513
==============================================================================
---
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
Fri Jan 12 00:26:34 2007
@@ -52,13 +52,15 @@
import org.apache.cxf.tools.wsdlto.core.AbstractWSDLBuilder;
import org.apache.cxf.tools.wsdlto.core.DataBindingProfile;
import org.apache.cxf.tools.wsdlto.core.FrontEndProfile;
+import org.apache.cxf.tools.wsdlto.core.PluginLoader;
import org.apache.cxf.wsdl11.WSDLServiceBuilder;
public class WSDLToJavaContainer extends AbstractCXFToolContainer {
private static final String DEFAULT_NS2PACKAGE =
"http://www.w3.org/2005/08/addressing";
String toolName;
-
+
+
public WSDLToJavaContainer(String name, ToolSpec toolspec) throws
Exception {
super(name, toolspec);
this.toolName = name;
@@ -83,13 +85,34 @@
@SuppressWarnings("unchecked")
public void execute(boolean exitOnFinish) throws ToolException {
try {
- super.execute(exitOnFinish);
+ if (getArgument() != null) {
+ super.execute(exitOnFinish);
+ }
if (!hasInfoOption()) {
buildToolContext();
validate(context);
FrontEndProfile frontend = context.get(FrontEndProfile.class);
+ if (frontend == null) {
+ String name = WSDLToJava.DEFAULT_FRONTEND_NAME;
+ if (context.get(ToolConstants.CFG_FRONTEND) != null) {
+ name = (String)context.get(ToolConstants.CFG_FRONTEND);
+ }
+ frontend =
PluginLoader.getInstance().getFrontEndProfile(name);
+ context.put(FrontEndProfile.class, frontend);
+ }
+
+ DataBindingProfile dataBindingProfile =
context.get(DataBindingProfile.class);
+ if (dataBindingProfile == null) {
+ String name = WSDLToJava.DEFAULT_DATABINDING_NAME;
+ if (context.get(ToolConstants.CFG_DATABINDING) != null) {
+ name =
(String)context.get(ToolConstants.CFG_DATABINDING);
+ }
+ dataBindingProfile =
PluginLoader.getInstance().getDataBindingProfile(name);
+ context.put(DataBindingProfile.class, dataBindingProfile);
+ }
+
ToolConstants.WSDLVersion version = getWSDLVersion();
ServiceInfo service = null;
@@ -308,9 +331,9 @@
context.put(ToolConstants.CFG_WSDL_VERSION, WSDLVersion.WSDL11);
}
- if (isVerboseOn()) {
+ /*if (isVerboseOn()) {
context.put(ToolConstants.CFG_VERBOSE, Boolean.TRUE);
- }
+ }*/
setExcludePackageAndNamespaces(context);
loadDefaultNSPackageMapping(context);
@@ -388,6 +411,7 @@
if (passthrough()) {
return;
}
- context.get(DataBindingProfile.class).generate(context);
+ DataBindingProfile dataBindingProfile =
context.get(DataBindingProfile.class);
+ dataBindingProfile.generate(context);
}
}
Modified:
incubator/cxf/trunk/tools2/wsdlto/core/src/main/java/org/apache/cxf/tools/wsdlto/core/PluginLoader.java
URL:
http://svn.apache.org/viewvc/incubator/cxf/trunk/tools2/wsdlto/core/src/main/java/org/apache/cxf/tools/wsdlto/core/PluginLoader.java?view=diff&rev=495513&r1=495512&r2=495513
==============================================================================
---
incubator/cxf/trunk/tools2/wsdlto/core/src/main/java/org/apache/cxf/tools/wsdlto/core/PluginLoader.java
(original)
+++
incubator/cxf/trunk/tools2/wsdlto/core/src/main/java/org/apache/cxf/tools/wsdlto/core/PluginLoader.java
Fri Jan 12 00:26:34 2007
@@ -37,7 +37,7 @@
import org.apache.cxf.tools.common.ToolException;
import org.apache.cxf.tools.plugin.DataBinding;
import org.apache.cxf.tools.plugin.FrontEnd;
-//import org.apache.cxf.tools.plugin.Generator;
+import org.apache.cxf.tools.plugin.Generator;
import org.apache.cxf.tools.plugin.Plugin;
public final class PluginLoader {
@@ -147,7 +147,7 @@
return frontend;
}
- /* private String getGeneratorClass(FrontEnd frontend, Generator generator)
{
+ private String getGeneratorClass(FrontEnd frontend, Generator generator) {
String fullPackage = generator.getPackage();
if (StringUtils.isEmpty(fullPackage)) {
fullPackage = frontend.getGenerators().getPackage();
@@ -156,13 +156,13 @@
fullPackage = frontend.getPackage();
}
return fullPackage + "." + generator.getName();
- }*/
+ }
private List<FrontEndGenerator> getFrontEndGenerators(FrontEnd frontend) {
List<FrontEndGenerator> generators = new
ArrayList<FrontEndGenerator>();
- //String fullClzName = null;
- /* try {
+ String fullClzName = null;
+ try {
for (Generator generator :
frontend.getGenerators().getGenerator()) {
fullClzName = getGeneratorClass(frontend, generator);
Class clz =
this.getClass().getClassLoader().loadClass(fullClzName);
@@ -172,7 +172,7 @@
LOG.log(Level.SEVERE, "FRONTEND_PROFILE_LOAD_FAIL", fullClzName);
Message msg = new Message("FRONTEND_PROFILE_LOAD_FAIL", LOG,
fullClzName);
throw new ToolException(msg, e);
- }*/
+ }
return generators;
}
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=495513&r1=495512&r2=495513
==============================================================================
---
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
Fri Jan 12 00:26:34 2007
@@ -18,7 +18,6 @@
*/
package org.apache.cxf.tools.wsdlto.databinding.jaxb;
-
import java.io.File;
import java.io.IOException;
import java.util.Collection;
@@ -64,41 +63,39 @@
env = penv;
serviceInfo = env.get(ServiceInfo.class);
def = (Definition)env.get(Definition.class);
-
- SchemaCompilerImpl schemaCompiler =
(SchemaCompilerImpl)XJC.createSchemaCompiler();
-
+
+ SchemaCompilerImpl schemaCompiler =
(SchemaCompilerImpl)XJC.createSchemaCompiler();
+
ClassCollector classCollector = env.get(ClassCollector.class);
ClassNameAllocatorImpl allocator = new
ClassNameAllocatorImpl(classCollector);
allocator.setInterface(serviceInfo.getInterface(),
env.mapPackageName(def.getTargetNamespace()));
schemaCompiler.setClassNameAllocator(allocator);
-
+
JAXBBindErrorListener listener = new JAXBBindErrorListener(env);
schemaCompiler.setErrorListener(listener);
-
-
+
Collection<SchemaInfo> schemas =
serviceInfo.getTypeInfo().getSchemas();
-
+
Collection<InputSource> jaxbBindings =
env.getJaxbBindingFile().values();
-
+
for (SchemaInfo schema : schemas) {
Element element = schema.getElement();
String tns = element.getAttribute("targetNamespace");
schemaCompiler.parseSchema(tns, element);
}
-
+
for (InputSource binding : jaxbBindings) {
schemaCompiler.parseSchema(binding);
}
-
+
rawJaxbModelGenCode = schemaCompiler.bind();
addedEnumClassToCollector(schemas, allocator);
}
-
-
+
// JAXB bug. JAXB ClassNameCollector may not be invoked when generated
- // class is an enum. We need to use this method to add the missed file
+ // class is an enum. We need to use this method to add the missed file
// to classCollector.
- private void addedEnumClassToCollector(Collection<SchemaInfo> schemaList,
+ private void addedEnumClassToCollector(Collection<SchemaInfo> schemaList,
ClassNameAllocatorImpl allocator) {
for (SchemaInfo schema : schemaList) {
Element schemaElement = schema.getElement();
@@ -112,7 +109,7 @@
}
}
}
-
+
private boolean addedToClassCollector(String packageName) {
ClassCollector classCollector = env.get(ClassCollector.class);
List<String> files =
(List<String>)classCollector.getGeneratedFileInfo();
@@ -123,27 +120,25 @@
return true;
}
}
- return false;
+ return false;
}
-
-
public void generate(ToolContext context) throws ToolException {
initialize(context);
if (rawJaxbModelGenCode == null) {
return;
}
-
+
try {
String dir = (String)env.get(ToolConstants.CFG_OUTPUTDIR);
-
+
TypesCodeWriter fileCodeWriter = new TypesCodeWriter(new
File(dir), env.getExcludePkgList());
if (rawJaxbModelGenCode instanceof S2JJAXBModel) {
S2JJAXBModel schem2JavaJaxbModel =
(S2JJAXBModel)rawJaxbModelGenCode;
- //TODO : enable jaxb plugin
+ // TODO : enable jaxb plugin
JCodeModel jcodeModel = schem2JavaJaxbModel.generateCode(null,
null);
-
+
jcodeModel.build(fileCodeWriter);
env.put(JCodeModel.class, jcodeModel);
for (String str : fileCodeWriter.getExcludeFileList()) {
@@ -152,27 +147,35 @@
}
return;
} catch (IOException e) {
- Message msg = new Message("FAIL_TO_GENERATE_TYPES", LOG);
+ Message msg = new Message("FAIL_TO_GENERATE_TYPES", LOG);
throw new ToolException(msg);
}
}
-
+
public String getType(QName qname) {
Mapping mapping = rawJaxbModelGenCode.get(qname);
- TypeAndAnnotation typeAnno = mapping.getType();
+
+ TypeAndAnnotation typeAnno = null;
+
+ if (mapping != null) {
+ typeAnno = mapping.getType();
+ } else {
+ typeAnno = rawJaxbModelGenCode.getJavaType(qname);
+ }
+
if (typeAnno != null && typeAnno.getTypeClass() != null) {
return typeAnno.getTypeClass().fullName();
}
return null;
-
+
}
-
+
public String getWrappedElementType(QName wrapperElement, QName item) {
Mapping mapping = rawJaxbModelGenCode.get(wrapperElement);
if (mapping != null) {
List<? extends Property> propList =
mapping.getWrapperStyleDrilldown();
for (Property pro : propList) {
- if
(pro.elementName().getNamespaceURI().equals(item.getNamespaceURI())
+ if
(pro.elementName().getNamespaceURI().equals(item.getNamespaceURI())
&&
pro.elementName().getLocalPart().equals(item.getLocalPart())) {
return pro.type().fullName();
}
Modified:
incubator/cxf/trunk/tools2/wsdlto/frontend/jaxws/src/main/java/org/apache/cxf/tools/wsdlto/frontend/jaxws/customiztion/CustomizationParser.java
URL:
http://svn.apache.org/viewvc/incubator/cxf/trunk/tools2/wsdlto/frontend/jaxws/src/main/java/org/apache/cxf/tools/wsdlto/frontend/jaxws/customiztion/CustomizationParser.java?view=diff&rev=495513&r1=495512&r2=495513
==============================================================================
---
incubator/cxf/trunk/tools2/wsdlto/frontend/jaxws/src/main/java/org/apache/cxf/tools/wsdlto/frontend/jaxws/customiztion/CustomizationParser.java
(original)
+++
incubator/cxf/trunk/tools2/wsdlto/frontend/jaxws/src/main/java/org/apache/cxf/tools/wsdlto/frontend/jaxws/customiztion/CustomizationParser.java
Fri Jan 12 00:26:34 2007
@@ -487,5 +487,31 @@
public Set<InputSource> getJaxbBindings() {
return this.jaxbBindings;
- }
+ }
+
+ public static JAXWSBinding mergeJawsBinding(JAXWSBinding binding1,
JAXWSBinding binding2) {
+ if (binding1 != null && binding2 != null) {
+ if (binding2.isEnableAsyncMapping()) {
+ binding1.setEnableAsyncMapping(true);
+ }
+ if (binding2.isEnableWrapperStyle()) {
+ binding1.setEnableWrapperStyle(true);
+ }
+ if (binding2.isEnableMime()) {
+ binding1.setEnableMime(true);
+ }
+
+ if (binding2.getJaxwsClass() != null) {
+ binding1.setJaxwsClass(binding2.getJaxwsClass());
+ }
+
+ if (binding2.getJaxwsPara() != null) {
+ binding1.setJaxwsPara(binding2.getJaxwsPara());
+ }
+ return binding1;
+ }
+
+ return binding1 == null ? binding2 : binding1;
+ }
+
}
Modified:
incubator/cxf/trunk/tools2/wsdlto/frontend/jaxws/src/main/java/org/apache/cxf/tools/wsdlto/frontend/jaxws/customiztion/JAXWSBindingParser.java
URL:
http://svn.apache.org/viewvc/incubator/cxf/trunk/tools2/wsdlto/frontend/jaxws/src/main/java/org/apache/cxf/tools/wsdlto/frontend/jaxws/customiztion/JAXWSBindingParser.java?view=diff&rev=495513&r1=495512&r2=495513
==============================================================================
---
incubator/cxf/trunk/tools2/wsdlto/frontend/jaxws/src/main/java/org/apache/cxf/tools/wsdlto/frontend/jaxws/customiztion/JAXWSBindingParser.java
(original)
+++
incubator/cxf/trunk/tools2/wsdlto/frontend/jaxws/src/main/java/org/apache/cxf/tools/wsdlto/frontend/jaxws/customiztion/JAXWSBindingParser.java
Fri Jan 12 00:26:34 2007
@@ -82,6 +82,7 @@
// other binding
for (int i = 0; i < children.getLength(); i++) {
Node child = children.item(i);
+
if (isAsyncElement(child)) {
jaxwsBinding.setEnableAsyncMapping(getNodeValue(child));
}
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=495513&r1=495512&r2=495513
==============================================================================
---
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
Fri Jan 12 00:26:34 2007
@@ -35,7 +35,6 @@
import org.apache.cxf.tools.common.model.JavaMethod;
import org.apache.cxf.tools.common.model.JavaParameter;
import org.apache.cxf.tools.common.model.JavaReturn;
-
import org.apache.cxf.tools.wsdlto.frontend.jaxws.customiztion.JAXWSBinding;
import
org.apache.cxf.tools.wsdlto.frontend.jaxws.processor.internal.annotator.SoapBindingAnnotator;
import
org.apache.cxf.tools.wsdlto.frontend.jaxws.processor.internal.annotator.WebMethodAnnotator;
@@ -46,8 +45,7 @@
public class OperationProcessor extends AbstractProcessor {
private JavaParameter wrapperRequest;
- private JavaParameter wrapperResponse;
-
+ private JavaParameter wrapperResponse;
public OperationProcessor(ToolContext c) {
super(c);
}
@@ -55,17 +53,11 @@
@SuppressWarnings("unchecked")
public void process(JavaInterface intf, OperationInfo operation) throws
ToolException {
JavaMethod method = new MethodMapper().map(operation);
- method.setInterface(intf);
-
- // TODO: add customizing
-
-
+ method.setInterface(intf);
processMethod(method, operation, null);
Collection<FaultInfo> faults = operation.getFaults();
-
FaultProcessor faultProcessor = new FaultProcessor(context);
faultProcessor.process(method, faults);
-
intf.addMethod(method);
}
Modified:
incubator/cxf/trunk/tools2/wsdlto/frontend/jaxws/src/main/java/org/apache/cxf/tools/wsdlto/frontend/jaxws/processor/internal/ParameterProcessor.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/ParameterProcessor.java?view=diff&rev=495513&r1=495512&r2=495513
==============================================================================
---
incubator/cxf/trunk/tools2/wsdlto/frontend/jaxws/src/main/java/org/apache/cxf/tools/wsdlto/frontend/jaxws/processor/internal/ParameterProcessor.java
(original)
+++
incubator/cxf/trunk/tools2/wsdlto/frontend/jaxws/src/main/java/org/apache/cxf/tools/wsdlto/frontend/jaxws/processor/internal/ParameterProcessor.java
Fri Jan 12 00:26:34 2007
@@ -27,7 +27,6 @@
import javax.wsdl.OperationType;
import javax.xml.namespace.QName;
-
import org.apache.cxf.common.util.StringUtils;
import org.apache.cxf.jaxb.JAXBUtils;
import org.apache.cxf.service.model.MessageInfo;
@@ -146,6 +145,27 @@
addParameter(method, getParameterFromQName(part.getElementQName(),
item,
JavaType.Style.IN, part));
}
+
+ /*Map<String, Part> inputPartsMap = inputMessage.getParts();
+ Collection<Part> inputParts = inputPartsMap.values();
+ if (inputParts.size() > 1) {
+ processInput(method, inputMessage);
+ return;
+ } else if (inputParts.isEmpty()) {
+ return;
+ }
+ Part part = inputParts.iterator().next();
+
+ List<? extends Property> block = dataBinder.getBlock(part);
+ if (block != null) {
+ if (block.size() == 0) {
+ // complete
+ }
+ for (Property item : block) {
+ addParameter(method, getParameterFromProperty(item,
JavaType.Style.IN, part));
+ }
+ }*/
+
}
@SuppressWarnings("unchecked")
@@ -223,7 +243,7 @@
return;
}
method.setReturn(null);
- if (inputWrapElement.size() == 1 && outputWrapElement != null) {
+ if (outputWrapElement.size() == 1 && inputWrapElement != null) {
QName outElement = outputWrapElement.iterator().next();
boolean sameWrapperChild = false;
for (QName inElement : inputWrapElement) {
@@ -294,22 +314,22 @@
MessagePartInfo part) {
String fullJavaName = "";
- String simpleJavaName = "";
+ //String simpleJavaName = "";
fullJavaName = this.dataBinding.getWrappedElementType(wrapperElement,
item);
- simpleJavaName = fullJavaName;
+ //simpleJavaName = fullJavaName;
- int index = fullJavaName.lastIndexOf(".");
+ //int index = fullJavaName.lastIndexOf(".");
- if (index > -1) {
+ /*if (index > -1) {
simpleJavaName = fullJavaName.substring(index);
- }
+ }*/
String targetNamespace = ProcessorUtil.resolvePartNamespace(part);
if (targetNamespace == null) {
targetNamespace = wrapperElement.getNamespaceURI();
}
- JavaParameter parameter = new JavaParameter(simpleJavaName,
fullJavaName, targetNamespace);
+ JavaParameter parameter = new JavaParameter(item.getLocalPart(),
fullJavaName, targetNamespace);
parameter.setStyle(style);
parameter.setQName(item);
if (style == JavaType.Style.OUT || style == JavaType.Style.INOUT) {
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=495513&r1=495512&r2=495513
==============================================================================
---
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
Fri Jan 12 00:26:34 2007
@@ -70,8 +70,13 @@
}
public static String getType(MessagePartInfo part, ToolContext context,
boolean fullname) {
+ String type = "";
DataBindingProfile dataBinding = context.get(DataBindingProfile.class);
- String type = dataBinding.getType(getElementName(part));
+ if (part.isElement()) {
+ type = dataBinding.getType(getElementName(part));
+ } else {
+ type = dataBinding.getType(part.getTypeQName());
+ }
if (type == null) {
type = resolvePartType(part);
}
@@ -115,12 +120,13 @@
return resolvePartType(part);
}
}
- String name = dataBinding.getType(getElementName(part));
- if (name == null) {
- return resolvePartType(part);
+ String name = "";
+ if (part.isElement()) {
+ name = dataBinding.getType(getElementName(part));
+ } else {
+ name = dataBinding.getType(part.getTypeQName());
}
- return name;
-
+ return name;
}
public static String resolvePartNamespace(MessagePartInfo part) {
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=495513&r1=495512&r2=495513
==============================================================================
---
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
Fri Jan 12 00:26:34 2007
@@ -19,29 +19,285 @@
package org.apache.cxf.tools.wsdlto.jaxws;
import java.io.File;
+import java.lang.reflect.Method;
+import java.lang.reflect.Modifier;
+
+import javax.jws.Oneway;
+import javax.jws.WebMethod;
+import javax.jws.WebParam;
+import javax.jws.WebResult;
+import javax.jws.WebService;
+import javax.jws.soap.SOAPBinding;
+import javax.xml.ws.RequestWrapper;
+import javax.xml.ws.ResponseWrapper;
import org.apache.cxf.tools.common.ProcessorTestBase;
-import org.apache.cxf.tools.wsdlto.WSDLToJava;
+import org.apache.cxf.tools.common.ToolConstants;
+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;
public void setUp() throws Exception {
super.setUp();
File classFile = new java.io.File(output.getCanonicalPath() +
"/classes");
classFile.mkdir();
+ System.setProperty("java.class.path", getClassPath() +
classFile.getCanonicalPath()
+ + File.separatorChar);
+ classLoader =
AnnotationUtil.getClassLoader(Thread.currentThread().getContextClassLoader());
+ env.put(ToolConstants.CFG_COMPILE, ToolConstants.CFG_COMPILE);
+ env.put(ToolConstants.CFG_IMPL, "impl");
+ env.put(ToolConstants.CFG_OUTPUTDIR, output.getCanonicalPath());
+ env.put(ToolConstants.CFG_CLASSDIR, output.getCanonicalPath() +
"/classes");
+
+ processor = new WSDLToJavaContainer("jaxws", null);
+
}
public void tearDown() {
super.tearDown();
+ processor = null;
+ }
+
+ public void testRPCLit() throws Exception {
+
+ env.put(ToolConstants.CFG_WSDLURL,
getLocation("/wsdl2java_wsdl/hello_world_rpc_lit.wsdl"));
+ processor.setContext(env);
+ processor.execute(false);
+
+ assertNotNull(output);
+
+ File org = new File(output, "org");
+ assertTrue(org.exists());
+ File apache = new File(org, "apache");
+ assertTrue(apache.exists());
+ File helloworldsoaphttp = new File(apache, "hello_world_rpclit");
+ assertTrue(helloworldsoaphttp.exists());
+ File types = new File(helloworldsoaphttp, "types");
+ assertTrue(types.exists());
+ File[] files = helloworldsoaphttp.listFiles();
+ assertEquals(4, files.length);
+ files = types.listFiles();
+ assertEquals(files.length, 3);
+
+ Class clz =
classLoader.loadClass("org.apache.hello_world_rpclit.GreeterRPCLit");
+
+ javax.jws.WebService ws = AnnotationUtil.getPrivClassAnnotation(clz,
javax.jws.WebService.class);
+ assertTrue("Webservice annotation wsdlLocation should begin with
file", ws.wsdlLocation()
+ .startsWith("file"));
+
+ SOAPBinding soapBindingAnno =
AnnotationUtil.getPrivClassAnnotation(clz, SOAPBinding.class);
+ assertEquals("LITERAL", soapBindingAnno.use().toString());
+ assertEquals("RPC", soapBindingAnno.style().toString());
+
+ assertEquals("Generate operation error", 3, clz.getMethods().length);
+
+ Class paraClass =
classLoader.loadClass("org.apache.hello_world_rpclit.types.MyComplexStruct");
+ Method method = clz.getMethod("sendReceiveData", new Class[]
{paraClass});
+ assertEquals("MyComplexStruct",
method.getReturnType().getSimpleName());
+
+ clz =
classLoader.loadClass("org.apache.hello_world_rpclit.GreeterRPCLitImpl");
+ assertNotNull(clz);
+ ws = AnnotationUtil.getPrivClassAnnotation(clz,
javax.jws.WebService.class);
+ assertNotNull(ws);
+ assertTrue("Webservice annotation wsdlLocation should begin with
file", ws.wsdlLocation()
+ .startsWith("file"));
+ assertEquals("org.apache.hello_world_rpclit.GreeterRPCLit",
ws.endpointInterface());
+ assertEquals("GreeterRPCLit", ws.name());
+
+ }
+
+ public void testAsynMethod() throws Exception {
+ env.put(ToolConstants.CFG_WSDLURL,
getLocation("/wsdl2java_wsdl/hello_world_async.wsdl"));
+ processor.setContext(env);
+ processor.execute(true);
+
+ assertNotNull(output);
+
+ File org = new File(output, "org");
+ assertTrue(org.exists());
+ File apache = new File(org, "apache");
+ assertTrue(apache.exists());
+ File async = new File(apache, "hello_world_async_soap_http");
+ assertTrue(async.exists());
+
+ File[] files = async.listFiles();
+ assertEquals(4, files.length);
+
+ Class clz =
classLoader.loadClass("org.apache.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());
}
+ public void testHelloWorldSoap12() throws Exception {
+ env.put(ToolConstants.CFG_WSDLURL,
getLocation("/wsdl2java_wsdl/hello_world_soap12.wsdl"));
+ processor.setContext(env);
+ processor.execute(true);
+
+ assertNotNull(output);
+
+ File org = new File(output, "org");
+ assertTrue(org.exists());
+ File apache = new File(org, "apache");
+ assertTrue(apache.exists());
+ File helloworldsoaphttp = new File(apache, "hello_world_soap12_http");
+ assertTrue(helloworldsoaphttp.exists());
+ File types = new File(helloworldsoaphttp, "types");
+ assertTrue(types.exists());
+ File[] files = helloworldsoaphttp.listFiles();
+ assertEquals(5, files.length);
+ files = types.listFiles();
+ assertEquals(7, files.length);
+
+ Class clz =
classLoader.loadClass("org.apache.hello_world_soap12_http.Greeter");
+ assertTrue("class " + clz.getName() + " modifier is not public",
Modifier
+ .isPublic(clz.getModifiers()));
+ assertTrue("class " + clz.getName() + " modifier is interface",
Modifier.isInterface(clz
+ .getModifiers()));
+
+ WebService webServiceAnn = AnnotationUtil.getPrivClassAnnotation(clz,
WebService.class);
+ assertEquals("Greeter", webServiceAnn.name());
+
+ Method method = clz.getMethod("sayHi", new Class[] {});
+ WebMethod webMethodAnno =
AnnotationUtil.getPrivMethodAnnotation(method, WebMethod.class);
+ assertEquals(method.getName() + "()" + " Annotation :
WebMethod.operationName ", "sayHi",
+ webMethodAnno.operationName());
+
+ RequestWrapper requestWrapperAnn =
AnnotationUtil.getPrivMethodAnnotation(method,
+
RequestWrapper.class);
+
+ assertEquals("org.apache.hello_world_soap12_http.types.SayHi",
requestWrapperAnn.className());
+
+ ResponseWrapper resposneWrapperAnn =
AnnotationUtil.getPrivMethodAnnotation(method,
+
ResponseWrapper.class);
+
+ assertEquals("sayHiResponse", resposneWrapperAnn.localName());
+
+ WebResult webResultAnno =
AnnotationUtil.getPrivMethodAnnotation(method, WebResult.class);
+
+ assertEquals("responseType", webResultAnno.name());
+
+ method = clz.getMethod("pingMe", new Class[] {});
+ webMethodAnno = AnnotationUtil.getPrivMethodAnnotation(method,
WebMethod.class);
+ assertEquals(method.getName() + "()" + " Annotation :
WebMethod.operationName ", "pingMe",
+ webMethodAnno.operationName());
+ Class[] exceptionCls = method.getExceptionTypes();
+ assertEquals(1, exceptionCls.length);
+ assertEquals("org.apache.hello_world_soap12_http.PingMeFault",
exceptionCls[0].getName());
+ }
+
public void testHelloWorld() throws Exception {
+ env.put(ToolConstants.CFG_WSDLURL,
getLocation("/wsdl2java_wsdl/hello_world.wsdl"));
+ processor.setContext(env);
+ processor.execute(true);
+
+ assertNotNull(output);
+
+ File org = new File(output, "org");
+ assertTrue(org.exists());
+ File apache = new File(org, "apache");
+ assertTrue(apache.exists());
+ File helloworldsoaphttp = new File(apache, "hello_world_soap_http");
+ assertTrue(helloworldsoaphttp.exists());
+ File types = new File(helloworldsoaphttp, "types");
+ assertTrue(types.exists());
+ File[] files = helloworldsoaphttp.listFiles();
+ assertEquals(6, files.length);
+ files = types.listFiles();
+ assertEquals(17, files.length);
+
+ Class clz =
classLoader.loadClass("org.apache.hello_world_soap_http.Greeter");
+ assertTrue("class " + clz.getName() + " modifier is not public",
Modifier
+ .isPublic(clz.getModifiers()));
+ assertTrue("class " + clz.getName() + " modifier is interface",
Modifier.isInterface(clz
+ .getModifiers()));
+
+ WebService webServiceAnn = AnnotationUtil.getPrivClassAnnotation(clz,
WebService.class);
+ assertEquals("Greeter", webServiceAnn.name());
+
+ Method method = clz.getMethod("sayHi", new Class[] {});
+ WebMethod webMethodAnno =
AnnotationUtil.getPrivMethodAnnotation(method, WebMethod.class);
+ assertEquals(method.getName() + "()" + " Annotation :
WebMethod.operationName ", "sayHi",
+ webMethodAnno.operationName());
+
+ RequestWrapper requestWrapperAnn =
AnnotationUtil.getPrivMethodAnnotation(method,
+
RequestWrapper.class);
+
+ assertEquals("org.apache.hello_world_soap_http.types.SayHi",
requestWrapperAnn.className());
+
+ ResponseWrapper resposneWrapperAnn =
AnnotationUtil.getPrivMethodAnnotation(method,
+
ResponseWrapper.class);
+
+ assertEquals("sayHiResponse", resposneWrapperAnn.localName());
+
+ WebResult webResultAnno =
AnnotationUtil.getPrivMethodAnnotation(method, WebResult.class);
+
+ assertEquals("responseType", webResultAnno.name());
+
+ method = clz.getMethod("greetMe", new Class[] {String.class});
+ assertEquals("String", method.getReturnType().getSimpleName());
+ WebParam webParamAnn = AnnotationUtil.getWebParam(method,
"requestType");
+ assertEquals("http://apache.org/hello_world_soap_http/types",
webParamAnn.targetNamespace());
+
+ method = clz.getMethod("greetMeOneWay", new Class[] {String.class});
+ Oneway oneWayAnn = AnnotationUtil.getPrivMethodAnnotation(method,
Oneway.class);
+ assertNotNull("OneWay Annotation is not generated", oneWayAnn);
+ assertEquals("void", method.getReturnType().getSimpleName());
+
+ method = clz.getMethod("greetMeSometime", new Class[] {String.class});
+ assertEquals("String", method.getReturnType().getSimpleName());
+
+ method = clz.getMethod("testDocLitFault", new Class[]
{java.lang.String.class});
+ assertEquals("void", method.getReturnType().getSimpleName());
+ assertEquals("Exception class is not generated ", 2,
method.getExceptionTypes().length);
+
+ method = clz.getMethod("testDocLitBare", new Class[]
{java.lang.String.class});
+ webResultAnno = AnnotationUtil.getPrivMethodAnnotation(method,
WebResult.class);
+ assertEquals("out", webResultAnno.partName());
+ SOAPBinding soapBindingAnno =
AnnotationUtil.getPrivMethodAnnotation(method, SOAPBinding.class);
+ assertEquals("BARE", soapBindingAnno.parameterStyle().toString());
+ assertEquals("BareDocumentResponse",
method.getReturnType().getSimpleName());
+
+ }
- String[] args = new String[] {"-d", output.getCanonicalPath(),
-
getLocation("/wsdl2java_wsdl/hello_world.wsdl")};
- WSDLToJava.main(args);
+
+ public void testDocLitHolder() throws Exception {
+ env.put(ToolConstants.CFG_WSDLURL,
getLocation("/wsdl2java_wsdl/mapping-doc-literal.wsdl"));
+ processor.setContext(env);
+ processor.execute(true);
+ assertNotNull(output);
+ File org = new File(output, "org");
+ assertTrue(org.exists());
+ File apache = new File(org, "apache");
+ assertTrue(apache.exists());
+ File mapping = new File(apache, "mapping");
+ assertTrue(mapping.exists());
+ File[] files = mapping.listFiles();
+ assertEquals(7, files.length);
+ Class clz =
classLoader.loadClass("org.apache.mapping.SomethingServer");
+ Method method = clz.getMethod("doSomething", new Class[] {int.class,
javax.xml.ws.Holder.class,
+
javax.xml.ws.Holder.class});
+ assertEquals("boolean", method.getReturnType().getSimpleName());
+ WebParam webParamAnno = AnnotationUtil.getWebParam(method, "y");
+ assertEquals("INOUT", webParamAnno.mode().name());
+ webParamAnno = AnnotationUtil.getWebParam(method, "z");
+ assertEquals("OUT", webParamAnno.mode().name());
}
+
private String getLocation(String wsdlFile) {
return this.getClass().getResource(wsdlFile).getFile();
Modified:
incubator/cxf/trunk/tools2/wsdlto/test/src/test/resources/wsdl2java_wsdl/hello_world_async.wsdl
URL:
http://svn.apache.org/viewvc/incubator/cxf/trunk/tools2/wsdlto/test/src/test/resources/wsdl2java_wsdl/hello_world_async.wsdl?view=diff&rev=495513&r1=495512&r2=495513
==============================================================================
---
incubator/cxf/trunk/tools2/wsdlto/test/src/test/resources/wsdl2java_wsdl/hello_world_async.wsdl
(original)
+++
incubator/cxf/trunk/tools2/wsdlto/test/src/test/resources/wsdl2java_wsdl/hello_world_async.wsdl
Fri Jan 12 00:26:34 2007
@@ -29,7 +29,7 @@
targetNamespace="http://apache.org/hello_world_async_soap_http"
name="HelloWorld">
<jaxws:bindings>
- <enableAsyncMapping>true</enableAsyncMapping>
+ <jaxws:enableAsyncMapping>true</jaxws:enableAsyncMapping>
</jaxws:bindings>
<wsdl:types>
<schema