You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@cxf.apache.org by se...@apache.org on 2011/05/18 19:49:52 UTC
svn commit: r1124353 - in /cxf/trunk:
rt/frontend/jaxrs/src/main/java/org/apache/cxf/jaxrs/ext/codegen/
tools/wadlto/jaxrs/src/main/java/org/apache/cxf/tools/wadlto/
tools/wadlto/jaxrs/src/main/java/org/apache/cxf/tools/wadlto/jaxb/
tools/wadlto/jaxrs/...
Author: sergeyb
Date: Wed May 18 17:49:52 2011
New Revision: 1124353
URL: http://svn.apache.org/viewvc?rev=1124353&view=rev
Log:
[CXF-3948] Initial support for customizing schema package names
Modified:
cxf/trunk/rt/frontend/jaxrs/src/main/java/org/apache/cxf/jaxrs/ext/codegen/SourceGenerator.java
cxf/trunk/tools/wadlto/jaxrs/src/main/java/org/apache/cxf/tools/wadlto/WadlToolConstants.java
cxf/trunk/tools/wadlto/jaxrs/src/main/java/org/apache/cxf/tools/wadlto/jaxb/CustomizationParser.java
cxf/trunk/tools/wadlto/jaxrs/src/main/java/org/apache/cxf/tools/wadlto/jaxrs/JAXRSContainer.java
cxf/trunk/tools/wadlto/jaxrs/src/test/java/org/apache/cxf/tools/wadlto/jaxrs/JAXRSContainerTest.java
Modified: cxf/trunk/rt/frontend/jaxrs/src/main/java/org/apache/cxf/jaxrs/ext/codegen/SourceGenerator.java
URL: http://svn.apache.org/viewvc/cxf/trunk/rt/frontend/jaxrs/src/main/java/org/apache/cxf/jaxrs/ext/codegen/SourceGenerator.java?rev=1124353&r1=1124352&r2=1124353&view=diff
==============================================================================
--- cxf/trunk/rt/frontend/jaxrs/src/main/java/org/apache/cxf/jaxrs/ext/codegen/SourceGenerator.java (original)
+++ cxf/trunk/rt/frontend/jaxrs/src/main/java/org/apache/cxf/jaxrs/ext/codegen/SourceGenerator.java Wed May 18 17:49:52 2011
@@ -132,6 +132,8 @@ public class SourceGenerator {
private List<String> generatedServiceClasses = new ArrayList<String>();
private List<String> generatedTypeClasses = new ArrayList<String>();
private List<InputSource> bindingFiles = Collections.emptyList();
+ private List<InputSource> schemaPackageFiles = Collections.emptyList();
+ private Map<String, String> schemaPackageMap = Collections.emptyMap();
private Bus bus;
public SourceGenerator() {
@@ -490,7 +492,12 @@ public class SourceGenerator {
}
private String possiblyConvertNamespaceURI(String nsURI, boolean expandedQName) {
- return expandedQName ? PackageUtils.getPackageNameByNameSpaceURI(nsURI) : nsURI;
+ return expandedQName ? getPackageFromNamespace(nsURI) : nsURI;
+ }
+
+ private String getPackageFromNamespace(String nsURI) {
+ return schemaPackageMap.containsKey(nsURI) ? schemaPackageMap.get(nsURI)
+ : PackageUtils.getPackageNameByNameSpaceURI(nsURI);
}
private void generateEmptyMethodBody(StringBuilder sbCode, boolean responseTypeAvailable) {
@@ -638,7 +645,7 @@ public class SourceGenerator {
if (namespace == null) {
return null;
}
- String packageName = PackageUtils.getPackageNameByNameSpaceURI(namespace);
+ String packageName = getPackageFromNamespace(namespace);
String clsName = getSchemaClassName(packageName, gInfo, pair[1], typeClassNames);
if (clsName != null) {
addImport(imports, clsName);
@@ -846,6 +853,10 @@ public class SourceGenerator {
}
private void addSchemas(List<SchemaInfo> schemas, SchemaCompiler compiler) {
+ // handle package customizations first
+ for (int i = 0; i < schemaPackageFiles.size(); i++) {
+ compiler.parseSchema(schemaPackageFiles.get(i));
+ }
for (int i = 0; i < schemas.size(); i++) {
SchemaInfo schema = schemas.get(i);
@@ -909,6 +920,14 @@ public class SourceGenerator {
this.bindingFiles = files;
}
+ public void setSchemaPackageFiles(List<InputSource> files) {
+ this.schemaPackageFiles = files;
+ }
+
+ public void setSchemaPackageMap(Map<String, String> map) {
+ this.schemaPackageMap = map;
+ }
+
public void setBus(Bus bus) {
this.bus = bus;
}
Modified: cxf/trunk/tools/wadlto/jaxrs/src/main/java/org/apache/cxf/tools/wadlto/WadlToolConstants.java
URL: http://svn.apache.org/viewvc/cxf/trunk/tools/wadlto/jaxrs/src/main/java/org/apache/cxf/tools/wadlto/WadlToolConstants.java?rev=1124353&r1=1124352&r2=1124353&view=diff
==============================================================================
--- cxf/trunk/tools/wadlto/jaxrs/src/main/java/org/apache/cxf/tools/wadlto/WadlToolConstants.java (original)
+++ cxf/trunk/tools/wadlto/jaxrs/src/main/java/org/apache/cxf/tools/wadlto/WadlToolConstants.java Wed May 18 17:49:52 2011
@@ -34,6 +34,7 @@ public final class WadlToolConstants {
public static final String CFG_SERVER = ToolConstants.CFG_SERVER;
public static final String CFG_TYPES = ToolConstants.CFG_TYPES;
public static final String CFG_PACKAGENAME = ToolConstants.CFG_PACKAGENAME;
+ public static final String CFG_TYPES_PACKAGENAME = "typesPackagename";
public static final String CFG_RESOURCENAME = "resourcename";
public static final String CFG_CATALOG = ToolConstants.CFG_CATALOG;
Modified: cxf/trunk/tools/wadlto/jaxrs/src/main/java/org/apache/cxf/tools/wadlto/jaxb/CustomizationParser.java
URL: http://svn.apache.org/viewvc/cxf/trunk/tools/wadlto/jaxrs/src/main/java/org/apache/cxf/tools/wadlto/jaxb/CustomizationParser.java?rev=1124353&r1=1124352&r2=1124353&view=diff
==============================================================================
--- cxf/trunk/tools/wadlto/jaxrs/src/main/java/org/apache/cxf/tools/wadlto/jaxb/CustomizationParser.java (original)
+++ cxf/trunk/tools/wadlto/jaxrs/src/main/java/org/apache/cxf/tools/wadlto/jaxb/CustomizationParser.java Wed May 18 17:49:52 2011
@@ -45,27 +45,27 @@ import org.apache.cxf.staxutils.StaxUtil
import org.apache.cxf.tools.common.ToolConstants;
import org.apache.cxf.tools.common.ToolContext;
import org.apache.cxf.tools.common.ToolException;
+import org.apache.cxf.tools.util.JAXBUtils;
import org.apache.cxf.tools.util.URIParserUtil;
import org.apache.cxf.tools.wadlto.WadlToolConstants;
public final class CustomizationParser {
private static final Logger LOG = LogUtils.getL7dLogger(CustomizationParser.class);
private final List<InputSource> jaxbBindings = new ArrayList<InputSource>();
+ private final List<InputSource> packageFiles = new ArrayList<InputSource>();
+
private Bus bus;
- private String[] bindingFiles = new String[]{};
private String wadlPath;
public CustomizationParser(ToolContext env) {
bus = (Bus)env.get(Bus.class);
- Object files = env.get(WadlToolConstants.CFG_BINDING);
- if (files != null) {
- bindingFiles = files instanceof String ? new String[]{(String)files}
- : (String[])files;
- }
wadlPath = (String)env.get(WadlToolConstants.CFG_WADLURL);
}
- public void parse() {
+ public void parse(ToolContext env) {
+ // JAXB schema customizations
+ String[] bindingFiles = getBindingFiles(env);
+
for (int i = 0; i < bindingFiles.length; i++) {
try {
addBinding(bindingFiles[i]);
@@ -74,6 +74,11 @@ public final class CustomizationParser {
throw new ToolException(msg, xse);
}
}
+ // Schema Namespace to Package customizations
+ for (String ns : env.getNamespacePackageMap().keySet()) {
+ File file = JAXBUtils.getPackageMappingSchemaBindingFile(ns, env.mapPackageName(ns));
+ packageFiles.add(new InputSource(file.toURI().toString()));
+ }
}
private void addBinding(String bindingFile) throws XMLStreamException {
@@ -145,9 +150,21 @@ public final class CustomizationParser {
return false;
}
+ private String[] getBindingFiles(ToolContext env) {
+ Object files = env.get(WadlToolConstants.CFG_BINDING);
+ if (files != null) {
+ return files instanceof String ? new String[]{(String)files}
+ : (String[])files;
+ } else {
+ return new String[] {};
+ }
+ }
+
public List<InputSource> getJaxbBindings() {
return this.jaxbBindings;
}
-
+ public List<InputSource> getSchemaPackageFiles() {
+ return this.packageFiles;
+ }
}
Modified: cxf/trunk/tools/wadlto/jaxrs/src/main/java/org/apache/cxf/tools/wadlto/jaxrs/JAXRSContainer.java
URL: http://svn.apache.org/viewvc/cxf/trunk/tools/wadlto/jaxrs/src/main/java/org/apache/cxf/tools/wadlto/jaxrs/JAXRSContainer.java?rev=1124353&r1=1124352&r2=1124353&view=diff
==============================================================================
--- cxf/trunk/tools/wadlto/jaxrs/src/main/java/org/apache/cxf/tools/wadlto/jaxrs/JAXRSContainer.java (original)
+++ cxf/trunk/tools/wadlto/jaxrs/src/main/java/org/apache/cxf/tools/wadlto/jaxrs/JAXRSContainer.java Wed May 18 17:49:52 2011
@@ -81,6 +81,7 @@ public class JAXRSContainer extends Abst
if (context.get(WadlToolConstants.CFG_OUTPUTDIR) == null) {
context.put(WadlToolConstants.CFG_OUTPUTDIR, ".");
}
+ setPackageAndNamespaces();
}
private void processWadl() {
@@ -104,10 +105,16 @@ public class JAXRSContainer extends Abst
sg.setWadlPath(wadlURL);
CustomizationParser parser = new CustomizationParser(context);
- parser.parse();
+ parser.parse(context);
+
List<InputSource> bindingFiles = parser.getJaxbBindings();
sg.setBindingFiles(bindingFiles);
+ List<InputSource> schemaPackageFiles = parser.getSchemaPackageFiles();
+ sg.setSchemaPackageFiles(schemaPackageFiles);
+ sg.setSchemaPackageMap(context.getNamespacePackageMap());
+ // sg.setSchemaPackageName((String)context.get(WadlToolConstants.CFG_TOOLS_PACKAGENAME)));
+
// generate
String codeType = context.optionSet(WadlToolConstants.CFG_TYPES)
? SourceGenerator.CODE_TYPE_GRAMMAR : SourceGenerator.CODE_TYPE_PROXY;
@@ -153,4 +160,30 @@ public class JAXRSContainer extends Abst
context.put(WadlToolConstants.CFG_WADLURL, absoluteWadlURL);
return absoluteWadlURL;
}
+
+ //TODO: this belongs to JAXB Databinding, should we just reuse
+ // org.apache.cxf.tools.wsdlto.databinding.jaxb ?
+ private void setPackageAndNamespaces() {
+ String[] schemaPackageNamespaces = new String[]{};
+ Object value = context.get(WadlToolConstants.CFG_TYPES_PACKAGENAME);
+ if (value != null) {
+ schemaPackageNamespaces = value instanceof String ? new String[]{(String)value}
+ : (String[])value;
+ }
+ for (int i = 0; i < schemaPackageNamespaces.length; i++) {
+ int pos = schemaPackageNamespaces[i].indexOf("=");
+ String packagename = schemaPackageNamespaces[i];
+ if (pos != -1) {
+ String ns = schemaPackageNamespaces[i].substring(0, pos);
+ packagename = schemaPackageNamespaces[i].substring(pos + 1);
+ context.addNamespacePackageMap(ns, packagename);
+ } else {
+ // this is the default schema package name
+ // if CFG_PACKAGENAME is set then it's only used for JAX-RS resource
+ // classes
+ context.put(WadlToolConstants.CFG_TYPES_PACKAGENAME, packagename);
+ }
+ }
+
+ }
}
Modified: cxf/trunk/tools/wadlto/jaxrs/src/test/java/org/apache/cxf/tools/wadlto/jaxrs/JAXRSContainerTest.java
URL: http://svn.apache.org/viewvc/cxf/trunk/tools/wadlto/jaxrs/src/test/java/org/apache/cxf/tools/wadlto/jaxrs/JAXRSContainerTest.java?rev=1124353&r1=1124352&r2=1124353&view=diff
==============================================================================
--- cxf/trunk/tools/wadlto/jaxrs/src/test/java/org/apache/cxf/tools/wadlto/jaxrs/JAXRSContainerTest.java (original)
+++ cxf/trunk/tools/wadlto/jaxrs/src/test/java/org/apache/cxf/tools/wadlto/jaxrs/JAXRSContainerTest.java Wed May 18 17:49:52 2011
@@ -47,8 +47,8 @@ public class JAXRSContainerTest extends
assertNotNull(output.list());
- verifyFiles("java", true, false, "org.apache.cxf.jaxrs.model.wadl");
- verifyFiles("class", true, false, "org.apache.cxf.jaxrs.model.wadl");
+ verifyFiles("java", true, false, "superbooks", "org.apache.cxf.jaxrs.model.wadl");
+ verifyFiles("class", true, false, "superbooks", "org.apache.cxf.jaxrs.model.wadl");
} catch (Exception e) {
e.printStackTrace();
@@ -72,8 +72,8 @@ public class JAXRSContainerTest extends
assertNotNull(output.list());
- verifyFiles("java", true, false, "org.apache.cxf.jaxrs.model.wadl");
- verifyFiles("class", true, false, "org.apache.cxf.jaxrs.model.wadl");
+ verifyFiles("java", true, false, "superbooks", "org.apache.cxf.jaxrs.model.wadl");
+ verifyFiles("class", true, false, "superbooks", "org.apache.cxf.jaxrs.model.wadl");
} catch (Exception e) {
e.printStackTrace();
@@ -96,8 +96,8 @@ public class JAXRSContainerTest extends
assertNotNull(output.list());
- verifyFiles("java", false, false, "org.apache.cxf.jaxrs.model.wadl");
- verifyFiles("class", false, false, "org.apache.cxf.jaxrs.model.wadl");
+ verifyFiles("java", false, false, "superbooks", "org.apache.cxf.jaxrs.model.wadl");
+ verifyFiles("class", false, false, "superbooks", "org.apache.cxf.jaxrs.model.wadl");
} catch (Exception e) {
e.printStackTrace();
@@ -121,8 +121,8 @@ public class JAXRSContainerTest extends
assertNotNull(output.list());
- verifyFiles("java", false, false, "org.apache.cxf.jaxrs.model.wadl");
- verifyFiles("class", false, false, "org.apache.cxf.jaxrs.model.wadl");
+ verifyFiles("java", false, false, "superbooks", "org.apache.cxf.jaxrs.model.wadl");
+ verifyFiles("class", false, false, "superbooks", "org.apache.cxf.jaxrs.model.wadl");
} catch (Exception e) {
e.printStackTrace();
@@ -146,8 +146,8 @@ public class JAXRSContainerTest extends
assertNotNull(output.list());
- verifyFiles("java", false, false, "org.apache.cxf.jaxrs.model.wadl");
- verifyFiles("class", false, false, "org.apache.cxf.jaxrs.model.wadl");
+ verifyFiles("java", false, false, "superbooks", "org.apache.cxf.jaxrs.model.wadl");
+ verifyFiles("class", false, false, "superbooks", "org.apache.cxf.jaxrs.model.wadl");
} catch (Exception e) {
e.printStackTrace();
@@ -200,8 +200,34 @@ public class JAXRSContainerTest extends
assertNotNull(output.list());
- verifyFiles("java", true, false, "custom.books");
- verifyFiles("class", true, false, "custom.books");
+ verifyFiles("java", true, false, "superbooks", "custom.books");
+ verifyFiles("class", true, false, "superbooks", "custom.books");
+
+ } catch (Exception e) {
+ e.printStackTrace();
+ fail();
+ }
+ }
+
+ @Test
+ public void testCodeGenInterfacesCustomPackageForResourcesAndSchemas() {
+ try {
+ JAXRSContainer container = new JAXRSContainer(null);
+
+ ToolContext context = new ToolContext();
+ context.put(WadlToolConstants.CFG_OUTPUTDIR, output.getCanonicalPath());
+ context.put(WadlToolConstants.CFG_WADLURL, getLocation("/wadl/bookstore.xml"));
+ context.put(WadlToolConstants.CFG_PACKAGENAME, "custom.books.service");
+ context.put(WadlToolConstants.CFG_TYPES_PACKAGENAME, "http://superbooks=custom.books.schema");
+ context.put(WadlToolConstants.CFG_COMPILE, "true");
+
+ container.setContext(context);
+ container.execute();
+
+ assertNotNull(output.list());
+
+ verifyFiles("java", true, false, "custom.books.schema", "custom.books.service");
+ verifyFiles("class", true, false, "custom.books.schema", "custom.books.service");
} catch (Exception e) {
e.printStackTrace();
@@ -225,8 +251,8 @@ public class JAXRSContainerTest extends
assertNotNull(output.list());
- verifyFiles("java", true, false, "org.apache.cxf.jaxrs.model.wadl");
- verifyFiles("class", true, false, "org.apache.cxf.jaxrs.model.wadl");
+ verifyFiles("java", true, false, "superbooks", "org.apache.cxf.jaxrs.model.wadl");
+ verifyFiles("class", true, false, "superbooks", "org.apache.cxf.jaxrs.model.wadl");
} catch (Exception e) {
fail();
e.printStackTrace();
@@ -250,8 +276,8 @@ public class JAXRSContainerTest extends
assertNotNull(output.list());
- verifyFiles("java", true, true, "org.apache.cxf.jaxrs.model.wadl");
- verifyFiles("class", true, true, "org.apache.cxf.jaxrs.model.wadl");
+ verifyFiles("java", true, true, "superbooks", "org.apache.cxf.jaxrs.model.wadl");
+ verifyFiles("class", true, true, "superbooks", "org.apache.cxf.jaxrs.model.wadl");
} catch (Exception e) {
fail();
e.printStackTrace();
@@ -273,7 +299,7 @@ public class JAXRSContainerTest extends
assertNotNull(output.list());
- verifyTypes("java");
+ verifyTypes("superbooks", "java");
} catch (Exception e) {
fail();
@@ -282,14 +308,14 @@ public class JAXRSContainerTest extends
}
private void verifyFiles(String ext, boolean subresourceExpected, boolean interfacesAndImpl,
- String resourcePackage) {
+ String schemaPackage, String resourcePackage) {
List<File> files = FileUtils.getFilesRecurse(output, ".+\\." + ext + "$");
int size = interfacesAndImpl ? 9 : 7;
if (!subresourceExpected) {
size--;
}
assertEquals(size, files.size());
- doVerifyTypes(files, ext);
+ doVerifyTypes(files, schemaPackage, ext);
if (subresourceExpected) {
assertTrue(checkContains(files, resourcePackage + ".FormInterface." + ext));
}
@@ -302,18 +328,18 @@ public class JAXRSContainerTest extends
}
}
- private void verifyTypes(String ext) {
+ private void verifyTypes(String schemaPackage, String ext) {
List<File> files = FileUtils.getFilesRecurse(output, ".+\\." + ext + "$");
assertEquals(5, files.size());
- doVerifyTypes(files, ext);
+ doVerifyTypes(files, schemaPackage, ext);
}
- private void doVerifyTypes(List<File> files, String ext) {
- assertTrue(checkContains(files, "superbooks.Book." + ext));
- assertTrue(checkContains(files, "superbooks.Book2." + ext));
- assertTrue(checkContains(files, "superbooks.Chapter." + ext));
- assertTrue(checkContains(files, "superbooks.ObjectFactory." + ext));
- assertTrue(checkContains(files, "superbooks.package-info." + ext));
+ private void doVerifyTypes(List<File> files, String schemaPackage, String ext) {
+ assertTrue(checkContains(files, schemaPackage + ".Book." + ext));
+ assertTrue(checkContains(files, schemaPackage + ".Book2." + ext));
+ assertTrue(checkContains(files, schemaPackage + ".Chapter." + ext));
+ assertTrue(checkContains(files, schemaPackage + ".ObjectFactory." + ext));
+ assertTrue(checkContains(files, schemaPackage + ".package-info." + ext));
}
private boolean checkContains(List<File> clsFiles, String name) {