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 2007/04/18 07:56:45 UTC
svn commit: r529881 - in /incubator/cxf/trunk:
rt/frontend/simple/src/main/java/org/apache/cxf/service/factory/
tools/common/src/main/java/org/apache/cxf/tools/common/
tools/javato/src/main/java/org/apache/cxf/tools/java2wsdl/processor/
tools/wsdlto/co...
Author: mmao
Date: Tue Apr 17 22:56:42 2007
New Revision: 529881
URL: http://svn.apache.org/viewvc?view=rev&rev=529881
Log:
* Suppress code generation if we set the CFG_SUPPRESS_GEN, in this case there will have no code generated, what you get is the java code model.
* Add jaxws/JAXWSContainerTest.java unit test to show how wsdlto tools work in a programmatic way.
Added:
incubator/cxf/trunk/tools/wsdlto/test/src/test/java/org/apache/cxf/tools/wsdlto/jaxws/JAXWSContainerTest.java
Modified:
incubator/cxf/trunk/rt/frontend/simple/src/main/java/org/apache/cxf/service/factory/ReflectionServiceFactoryBean.java
incubator/cxf/trunk/tools/common/src/main/java/org/apache/cxf/tools/common/ToolConstants.java
incubator/cxf/trunk/tools/javato/src/main/java/org/apache/cxf/tools/java2wsdl/processor/JavaToProcessor.java
incubator/cxf/trunk/tools/wsdlto/core/src/main/java/org/apache/cxf/tools/wsdlto/WSDLToJavaContainer.java
incubator/cxf/trunk/tools/wsdlto/databinding/jaxb/src/main/java/org/apache/cxf/tools/wsdlto/databinding/jaxb/JAXBDataBinding.java
Modified: incubator/cxf/trunk/rt/frontend/simple/src/main/java/org/apache/cxf/service/factory/ReflectionServiceFactoryBean.java
URL: http://svn.apache.org/viewvc/incubator/cxf/trunk/rt/frontend/simple/src/main/java/org/apache/cxf/service/factory/ReflectionServiceFactoryBean.java?view=diff&rev=529881&r1=529880&r2=529881
==============================================================================
--- incubator/cxf/trunk/rt/frontend/simple/src/main/java/org/apache/cxf/service/factory/ReflectionServiceFactoryBean.java (original)
+++ incubator/cxf/trunk/rt/frontend/simple/src/main/java/org/apache/cxf/service/factory/ReflectionServiceFactoryBean.java Tue Apr 17 22:56:42 2007
@@ -66,6 +66,7 @@
import org.apache.cxf.service.model.SchemaInfo;
import org.apache.cxf.service.model.ServiceInfo;
import org.apache.cxf.service.model.UnwrappedOperationInfo;
+import org.apache.cxf.wsdl.WSDLConstants;
import org.apache.cxf.wsdl11.WSDLServiceFactory;
import org.apache.ws.commons.schema.XmlSchema;
import org.apache.ws.commons.schema.XmlSchemaCollection;
@@ -375,7 +376,7 @@
serviceInfo.setXmlSchemaCollection(col);
NamespaceMap nsMap = new NamespaceMap();
- nsMap.add("xsd", "http://www.w3.org/2001/XMLSchema");
+ nsMap.add(WSDLConstants.NP_SCHEMA_XSD, WSDLConstants.NU_SCHEMA_XSD);
schema.setNamespaceContext(nsMap);
for (OperationInfo op : serviceInfo.getInterface().getOperations()) {
Modified: incubator/cxf/trunk/tools/common/src/main/java/org/apache/cxf/tools/common/ToolConstants.java
URL: http://svn.apache.org/viewvc/incubator/cxf/trunk/tools/common/src/main/java/org/apache/cxf/tools/common/ToolConstants.java?view=diff&rev=529881&r1=529880&r2=529881
==============================================================================
--- incubator/cxf/trunk/tools/common/src/main/java/org/apache/cxf/tools/common/ToolConstants.java (original)
+++ incubator/cxf/trunk/tools/common/src/main/java/org/apache/cxf/tools/common/ToolConstants.java Tue Apr 17 22:56:42 2007
@@ -188,5 +188,8 @@
public static final String FRONTEND_PLUGIN = "frontend";
public static final String DATABINDING_PLUGIN = "databinding";
- public static final String CFG_WSDL_VERSION = "wsdlversion";
+ public static final String CFG_WSDL_VERSION = "wsdlversion";
+
+ // Suppress the code generation, in this case you can just get the generated code model
+ public static final String CFG_SUPPRESS_GEN = "suppress";
}
Modified: incubator/cxf/trunk/tools/javato/src/main/java/org/apache/cxf/tools/java2wsdl/processor/JavaToProcessor.java
URL: http://svn.apache.org/viewvc/incubator/cxf/trunk/tools/javato/src/main/java/org/apache/cxf/tools/java2wsdl/processor/JavaToProcessor.java?view=diff&rev=529881&r1=529880&r2=529881
==============================================================================
--- incubator/cxf/trunk/tools/javato/src/main/java/org/apache/cxf/tools/java2wsdl/processor/JavaToProcessor.java (original)
+++ incubator/cxf/trunk/tools/javato/src/main/java/org/apache/cxf/tools/java2wsdl/processor/JavaToProcessor.java Tue Apr 17 22:56:42 2007
@@ -46,7 +46,6 @@
public class JavaToProcessor implements Processor {
private static final Logger LOG = LogUtils.getL7dLogger(JavaToProcessor.class);
- //private static final String DEFAULT_TRANSPORT_ID = WSDLConstants.SOAP11_NAMESPACE;
private static final String DEFAULT_ADDRESS = "http://localhost:9090/hello";
private ToolContext context;
Modified: incubator/cxf/trunk/tools/wsdlto/core/src/main/java/org/apache/cxf/tools/wsdlto/WSDLToJavaContainer.java
URL: http://svn.apache.org/viewvc/incubator/cxf/trunk/tools/wsdlto/core/src/main/java/org/apache/cxf/tools/wsdlto/WSDLToJavaContainer.java?view=diff&rev=529881&r1=529880&r2=529881
==============================================================================
--- incubator/cxf/trunk/tools/wsdlto/core/src/main/java/org/apache/cxf/tools/wsdlto/WSDLToJavaContainer.java (original)
+++ incubator/cxf/trunk/tools/wsdlto/core/src/main/java/org/apache/cxf/tools/wsdlto/WSDLToJavaContainer.java Tue Apr 17 22:56:42 2007
@@ -106,12 +106,6 @@
throw new ToolException(msg);
}
- DataBindingProfile dataBindingProfile = context.get(DataBindingProfile.class);
- if (dataBindingProfile == null) {
- Message msg = new Message("FOUND_NO_DATABINDING", LOG);
- throw new ToolException(msg);
- }
-
WSDLConstants.WSDLVersion version = getWSDLVersion();
String wsdlURL = (String)context.get(ToolConstants.CFG_WSDLURL);
@@ -182,9 +176,12 @@
processor.setEnvironment(context);
processor.process();
- // Generate artifacts
- for (FrontEndGenerator generator : frontend.getGenerators()) {
- generator.generate(context);
+
+ if (!isSuppressCodeGen()) {
+ // Generate artifacts
+ for (FrontEndGenerator generator : frontend.getGenerators()) {
+ generator.generate(context);
+ }
}
}
@@ -204,6 +201,10 @@
}
+ private boolean isSuppressCodeGen() {
+ return context.optionSet(ToolConstants.CFG_SUPPRESS_GEN);
+ }
+
public void execute(boolean exitOnFinish) throws ToolException {
try {
if (getArgument() != null) {
@@ -463,7 +464,12 @@
if (passthrough()) {
return;
}
+
DataBindingProfile dataBindingProfile = context.get(DataBindingProfile.class);
+ if (dataBindingProfile == null) {
+ Message msg = new Message("FOUND_NO_DATABINDING", LOG);
+ throw new ToolException(msg);
+ }
dataBindingProfile.generate(context);
}
Modified: incubator/cxf/trunk/tools/wsdlto/databinding/jaxb/src/main/java/org/apache/cxf/tools/wsdlto/databinding/jaxb/JAXBDataBinding.java
URL: http://svn.apache.org/viewvc/incubator/cxf/trunk/tools/wsdlto/databinding/jaxb/src/main/java/org/apache/cxf/tools/wsdlto/databinding/jaxb/JAXBDataBinding.java?view=diff&rev=529881&r1=529880&r2=529881
==============================================================================
--- incubator/cxf/trunk/tools/wsdlto/databinding/jaxb/src/main/java/org/apache/cxf/tools/wsdlto/databinding/jaxb/JAXBDataBinding.java (original)
+++ incubator/cxf/trunk/tools/wsdlto/databinding/jaxb/src/main/java/org/apache/cxf/tools/wsdlto/databinding/jaxb/JAXBDataBinding.java Tue Apr 17 22:56:42 2007
@@ -62,23 +62,23 @@
private static final Logger LOG = LogUtils.getL7dLogger(JAXBDataBinding.class);
private S2JJAXBModel rawJaxbModelGenCode;
- private ToolContext env;
+ private ToolContext context;
@SuppressWarnings("unchecked")
- private void initialize(ToolContext penv) throws ToolException {
- env = penv;
+ private void initialize(ToolContext c) throws ToolException {
+ this.context = c;
SchemaCompilerImpl schemaCompiler = (SchemaCompilerImpl)XJC.createSchemaCompiler();
- ClassCollector classCollector = env.get(ClassCollector.class);
+ ClassCollector classCollector = context.get(ClassCollector.class);
ClassNameAllocatorImpl allocator = new ClassNameAllocatorImpl(classCollector);
schemaCompiler.setClassNameAllocator(allocator);
- JAXBBindErrorListener listener = new JAXBBindErrorListener(env);
+ JAXBBindErrorListener listener = new JAXBBindErrorListener(context);
schemaCompiler.setErrorListener(listener);
// Collection<SchemaInfo> schemas = serviceInfo.getSchemas();
- List<InputSource> jaxbBindings = env.getJaxbBindingFile();
- Map<String, Element> schemaLists = (Map<String, Element>)env.get(ToolConstants.SCHEMA_MAP);
+ List<InputSource> jaxbBindings = context.getJaxbBindingFile();
+ Map<String, Element> schemaLists = (Map<String, Element>)context.get(ToolConstants.SCHEMA_MAP);
Set<String> keys = schemaLists.keySet();
for (String key : keys) {
@@ -89,12 +89,12 @@
continue;
}
String excludePkg = null;
- if (env.hasExcludeNamespace(tns)) {
- excludePkg = env.getExcludePackageName(tns);
+ if (context.hasExcludeNamespace(tns)) {
+ excludePkg = context.getExcludePackageName(tns);
if (excludePkg != null) {
- env.getExcludePkgList().add(excludePkg);
+ context.getExcludePkgList().add(excludePkg);
} else {
- env.getExcludePkgList().add(URIParserUtil.getPackageName(tns));
+ context.getExcludePkgList().add(URIParserUtil.getPackageName(tns));
}
}
schemaCompiler.parseSchema(key, ele);
@@ -107,10 +107,10 @@
}
- if (env.getPackageName() != null) {
- schemaCompiler.forcePackageName(env.getPackageName());
+ if (context.getPackageName() != null) {
+ schemaCompiler.forcePackageName(context.getPackageName());
} else {
- Map<String, String> nsPkgMap = env.getNamespacePackageMap();
+ Map<String, String> nsPkgMap = context.getNamespacePackageMap();
for (String ns : nsPkgMap.keySet()) {
File file = getCustomizedSchemaElement(ns, nsPkgMap.get(ns));
InputSource ins = new InputSource(file.toURI().toString());
@@ -135,7 +135,7 @@
if (StringUtils.isEmpty(targetNamespace)) {
continue;
}
- String packageName = env.mapPackageName(targetNamespace);
+ String packageName = context.mapPackageName(targetNamespace);
if (!addedToClassCollector(packageName)) {
allocator.assignClassName(packageName, "*");
}
@@ -143,7 +143,7 @@
}
private boolean addedToClassCollector(String packageName) {
- ClassCollector classCollector = env.get(ClassCollector.class);
+ ClassCollector classCollector = context.get(ClassCollector.class);
List<String> files = (List<String>)classCollector.getGeneratedFileInfo();
for (String file : files) {
int dotIndex = file.lastIndexOf(".");
@@ -155,26 +155,33 @@
return false;
}
- public void generate(ToolContext context) throws ToolException {
- initialize(context);
+ private boolean isSuppressCodeGen() {
+ return context.optionSet(ToolConstants.CFG_SUPPRESS_GEN);
+ }
+
+ public void generate(ToolContext c) throws ToolException {
+ initialize(c);
if (rawJaxbModelGenCode == null) {
return;
}
try {
- String dir = (String)env.get(ToolConstants.CFG_OUTPUTDIR);
+ String dir = (String)context.get(ToolConstants.CFG_OUTPUTDIR);
- TypesCodeWriter fileCodeWriter = new TypesCodeWriter(new File(dir), env.getExcludePkgList());
+ TypesCodeWriter fileCodeWriter = new TypesCodeWriter(new File(dir), context.getExcludePkgList());
if (rawJaxbModelGenCode instanceof S2JJAXBModel) {
S2JJAXBModel schem2JavaJaxbModel = (S2JJAXBModel)rawJaxbModelGenCode;
// TODO : enable jaxb plugin
JCodeModel jcodeModel = schem2JavaJaxbModel.generateCode(null, null);
- jcodeModel.build(fileCodeWriter);
- env.put(JCodeModel.class, jcodeModel);
+ if (!isSuppressCodeGen()) {
+ jcodeModel.build(fileCodeWriter);
+ }
+
+ context.put(JCodeModel.class, jcodeModel);
for (String str : fileCodeWriter.getExcludeFileList()) {
- env.getExcludeFileList().add(str);
+ context.getExcludeFileList().add(str);
}
}
return;
Added: incubator/cxf/trunk/tools/wsdlto/test/src/test/java/org/apache/cxf/tools/wsdlto/jaxws/JAXWSContainerTest.java
URL: http://svn.apache.org/viewvc/incubator/cxf/trunk/tools/wsdlto/test/src/test/java/org/apache/cxf/tools/wsdlto/jaxws/JAXWSContainerTest.java?view=auto&rev=529881
==============================================================================
--- incubator/cxf/trunk/tools/wsdlto/test/src/test/java/org/apache/cxf/tools/wsdlto/jaxws/JAXWSContainerTest.java (added)
+++ incubator/cxf/trunk/tools/wsdlto/test/src/test/java/org/apache/cxf/tools/wsdlto/jaxws/JAXWSContainerTest.java Tue Apr 17 22:56:42 2007
@@ -0,0 +1,172 @@
+/**
+ * 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.wsdlto.jaxws;
+
+import java.io.File;
+import java.net.URISyntaxException;
+import java.util.Arrays;
+import java.util.List;
+import java.util.Map;
+
+import org.apache.cxf.tools.common.FrontEndGenerator;
+import org.apache.cxf.tools.common.ProcessorTestBase;
+import org.apache.cxf.tools.common.ToolConstants;
+import org.apache.cxf.tools.common.ToolContext;
+import org.apache.cxf.tools.common.model.JavaInterface;
+import org.apache.cxf.tools.common.model.JavaMethod;
+import org.apache.cxf.tools.common.model.JavaModel;
+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.tools.wsdlto.frontend.jaxws.JAXWSContainer;
+import org.junit.Test;
+
+public class JAXWSContainerTest extends ProcessorTestBase {
+
+ @Test
+ public void testCodeGen() {
+ try {
+ JAXWSContainer container = new JAXWSContainer(null);
+ ToolContext context = new ToolContext();
+
+ // By default we only generate the SEI/Types/Exception classes/Service Class(client stub)
+ // Uncomment to generate the impl class
+ // context.put(ToolConstants.CFG_IMPL, "impl");
+
+ // Uncomment to compile the generated classes
+ // context.put(ToolConstants.CFG_COMPILE, ToolConstants.CFG_COMPILE);
+
+ // Where to put the compiled classes
+ // context.put(ToolConstants.CFG_CLASSDIR, output.getCanonicalPath() + "/classes");
+
+ // Where to put the generated source code
+ context.put(ToolConstants.CFG_OUTPUTDIR, output.getCanonicalPath());
+
+ context.put(ToolConstants.CFG_WSDLURL, getLocation("/wsdl2java_wsdl/hello_world.wsdl"));
+
+ // Delegate jaxb to generate the type classes
+ context.put(DataBindingProfile.class, PluginLoader.getInstance().getDataBindingProfile("jaxb"));
+ context.put(FrontEndProfile.class, PluginLoader.getInstance().getFrontEndProfile("jaxws"));
+
+ // In case you want to remove some generators
+ List<String> generatorNames = Arrays.asList(new String[]{ToolConstants.CLT_GENERATOR,
+ ToolConstants.SVR_GENERATOR,
+ ToolConstants.IMPL_GENERATOR,
+ ToolConstants.ANT_GENERATOR,
+ ToolConstants.SERVICE_GENERATOR,
+ ToolConstants.FAULT_GENERATOR,
+ ToolConstants.SEI_GENERATOR});
+ FrontEndProfile frontend = context.get(FrontEndProfile.class);
+ List<FrontEndGenerator> generators = frontend.getGenerators();
+ for (FrontEndGenerator generator : generators) {
+ assertTrue(generatorNames.contains(generator.getName()));
+ }
+
+ container.setContext(context);
+ // Now shoot
+ container.execute();
+
+ // At this point you should be able to get the
+ // SEI/Service(Client stub)/Exception classes/Types classes
+ assertNotNull(output.list());
+ assertEquals(1, output.list().length);
+
+ assertTrue(new File(output, "org/apache/hello_world_soap_http/Greeter.java").exists());
+ assertTrue(new File(output, "org/apache/hello_world_soap_http/SOAPService.java").exists());
+ assertTrue(new File(output, "org/apache/hello_world_soap_http/NoSuchCodeLitFault.java").exists());
+ assertTrue(new File(output, "org/apache/hello_world_soap_http/types/SayHi.java").exists());
+ assertTrue(new File(output,
+ "org/apache/hello_world_soap_http/types/GreetMe.java").exists());
+
+ // Now you can get the JavaModel from the context.
+ JavaModel javaModel = context.get(JavaModel.class);
+
+ Map<String, JavaInterface> interfaces = javaModel.getInterfaces();
+ assertEquals(1, interfaces.size());
+
+ JavaInterface intf = interfaces.values().iterator().next();
+ assertEquals("http://apache.org/hello_world_soap_http", intf.getNamespace());
+ assertEquals("Greeter", intf.getName());
+ assertEquals("org.apache.hello_world_soap_http", intf.getPackageName());
+
+ List<JavaMethod> methods = intf.getMethods();
+ assertEquals(6, methods.size());
+ JavaMethod m1 = methods.get(0);
+ assertEquals("testDocLitFault", m1.getName());
+ } catch (Exception e) {
+ e.printStackTrace();
+ }
+ }
+
+ @Test
+ public void testSuppressCodeGen() {
+ try {
+ JAXWSContainer container = new JAXWSContainer(null);
+ ToolContext context = new ToolContext();
+
+ // Do not generate any artifacts, we just want the code model.
+ context.put(ToolConstants.CFG_SUPPRESS_GEN, "suppress");
+
+ // Where to put the generated source code
+ context.put(ToolConstants.CFG_OUTPUTDIR, output.getCanonicalPath());
+
+ context.put(ToolConstants.CFG_WSDLURL, getLocation("/wsdl2java_wsdl/hello_world.wsdl"));
+
+ // Delegate jaxb to generate the type classes
+ context.put(DataBindingProfile.class, PluginLoader.getInstance().getDataBindingProfile("jaxb"));
+ context.put(FrontEndProfile.class, PluginLoader.getInstance().getFrontEndProfile("jaxws"));
+
+ container.setContext(context);
+ // Now shoot
+ container.execute();
+
+ // At this point you should be able to get the
+ // SEI/Service(Client stub)/Exception classes/Types classes
+ assertNotNull(output.list());
+ assertEquals(0, output.list().length);
+
+ // Now you can get the JavaModel from the context.
+ JavaModel javaModel = context.get(JavaModel.class);
+
+ Map<String, JavaInterface> interfaces = javaModel.getInterfaces();
+ assertEquals(1, interfaces.size());
+
+ JavaInterface intf = interfaces.values().iterator().next();
+ assertEquals("http://apache.org/hello_world_soap_http", intf.getNamespace());
+ assertEquals("Greeter", intf.getName());
+ assertEquals("org.apache.hello_world_soap_http", intf.getPackageName());
+
+ List<JavaMethod> methods = intf.getMethods();
+ assertEquals(6, methods.size());
+ JavaMethod m1 = methods.get(0);
+ assertEquals("testDocLitFault", m1.getName());
+
+ assertEquals(2, m1.getExceptions().size());
+ assertEquals("BadRecordLitFault", m1.getExceptions().get(0).getName());
+ assertEquals("NoSuchCodeLitFault", m1.getExceptions().get(1).getName());
+ } catch (Exception e) {
+ e.printStackTrace();
+ }
+ }
+
+ protected String getLocation(String wsdlFile) throws URISyntaxException {
+ return getClass().getResource(wsdlFile).toString();
+ }
+}