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 2012/08/22 16:35:02 UTC
svn commit: r1376072 - in /cxf/trunk/tools/wadlto/jaxrs/src:
main/java/org/apache/cxf/tools/wadlto/
main/java/org/apache/cxf/tools/wadlto/jaxrs/
test/java/org/apache/cxf/tools/wadlto/jaxrs/
Author: sergeyb
Date: Wed Aug 22 14:35:01 2012
New Revision: 1376072
URL: http://svn.apache.org/viewvc?rev=1376072&view=rev
Log:
[CXF-4477] Restoring schemaTypeMap, adding notypes option
Modified:
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/jaxrs/JAXRSContainer.java
cxf/trunk/tools/wadlto/jaxrs/src/main/java/org/apache/cxf/tools/wadlto/jaxrs/SourceGenerator.java
cxf/trunk/tools/wadlto/jaxrs/src/main/java/org/apache/cxf/tools/wadlto/jaxrs/jaxrs-toolspec.xml
cxf/trunk/tools/wadlto/jaxrs/src/test/java/org/apache/cxf/tools/wadlto/jaxrs/JAXRSContainerTest.java
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=1376072&r1=1376071&r2=1376072&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 Aug 22 14:35:01 2012
@@ -37,13 +37,14 @@ public final class WadlToolConstants {
public static final String CFG_SCHEMA_PACKAGENAME = "schemaPackagename";
public static final String CFG_RESOURCENAME = "resourcename";
- public static final String CFG_TYPE_MAP = "typeMap";
+ public static final String CFG_SCHEMA_TYPE_MAP = "schemaTypeMap";
public static final String CFG_MEDIA_TYPE_MAP = "mediaTypeMap";
public static final String CFG_MULTIPLE_XML_REPS = "supportMultipleXmlReps";
public static final String CFG_CATALOG = ToolConstants.CFG_CATALOG;
public static final String CFG_BINDING = ToolConstants.CFG_BINDING;
+ public static final String CFG_NO_TYPES = ToolConstants.CFG_NO_TYPES;
public static final String CFG_NO_ADDRESS_BINDING = ToolConstants.CFG_NO_ADDRESS_BINDING;
public static final String CFG_WADL_NAMESPACE = "wadlNamespace";
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=1376072&r1=1376071&r2=1376072&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 Aug 22 14:35:01 2012
@@ -45,12 +45,12 @@ import org.apache.cxf.tools.wadlto.WadlT
import org.apache.cxf.tools.wadlto.jaxb.CustomizationParser;
public class JAXRSContainer extends AbstractCXFToolContainer {
- private static final Map<String, String> DEFAULT_TYPES_MAP;
+ private static final Map<String, String> DEFAULT_JAVA_TYPE_MAP;
private static final String TOOL_NAME = "wadl2java";
private static final String EPR_TYPE_KEY = "org.w3._2005._08.addressing.EndpointReference";
static {
- DEFAULT_TYPES_MAP = Collections.singletonMap(EPR_TYPE_KEY,
+ DEFAULT_JAVA_TYPE_MAP = Collections.singletonMap(EPR_TYPE_KEY,
"javax.xml.ws.wsaddressing.W3CEndpointReference");
}
@@ -102,7 +102,7 @@ public class JAXRSContainer extends Abst
Set<String> set = new HashSet<String>();
set.add(WadlToolConstants.CFG_BINDING);
set.add(WadlToolConstants.CFG_SCHEMA_PACKAGENAME);
- set.add(WadlToolConstants.CFG_TYPE_MAP);
+ set.add(WadlToolConstants.CFG_SCHEMA_TYPE_MAP);
set.add(WadlToolConstants.CFG_MEDIA_TYPE_MAP);
return set;
}
@@ -145,12 +145,14 @@ public class JAXRSContainer extends Abst
sg.setSchemaPackageFiles(schemaPackageFiles);
sg.setSchemaPackageMap(context.getNamespacePackageMap());
- sg.setJavaTypeMap(getCustomTypeMap());
+ sg.setJavaTypeMap(DEFAULT_JAVA_TYPE_MAP);
+ sg.setSchemaTypeMap(getSchemaTypeMap());
sg.setMediaTypeMap(getMediaTypeMap());
if (context.optionSet(WadlToolConstants.CFG_GENERATE_ENUMS)) {
sg.setGenerateEnums(true);
}
+ sg.setSkipSchemaGeneration(context.optionSet(WadlToolConstants.CFG_NO_TYPES));
// generate
String codeType = context.optionSet(WadlToolConstants.CFG_TYPES)
@@ -225,12 +227,8 @@ public class JAXRSContainer extends Abst
}
- private Map<String, String> getCustomTypeMap() {
- Map<String, String> typeMap = getMap(WadlToolConstants.CFG_TYPE_MAP);
- if (!typeMap.containsKey(EPR_TYPE_KEY)) {
- typeMap.put(EPR_TYPE_KEY, DEFAULT_TYPES_MAP.get(EPR_TYPE_KEY));
- }
- return typeMap;
+ private Map<String, String> getSchemaTypeMap() {
+ return getMap(WadlToolConstants.CFG_SCHEMA_TYPE_MAP);
}
private Map<String, String> getMediaTypeMap() {
Modified: cxf/trunk/tools/wadlto/jaxrs/src/main/java/org/apache/cxf/tools/wadlto/jaxrs/SourceGenerator.java
URL: http://svn.apache.org/viewvc/cxf/trunk/tools/wadlto/jaxrs/src/main/java/org/apache/cxf/tools/wadlto/jaxrs/SourceGenerator.java?rev=1376072&r1=1376071&r2=1376072&view=diff
==============================================================================
--- cxf/trunk/tools/wadlto/jaxrs/src/main/java/org/apache/cxf/tools/wadlto/jaxrs/SourceGenerator.java (original)
+++ cxf/trunk/tools/wadlto/jaxrs/src/main/java/org/apache/cxf/tools/wadlto/jaxrs/SourceGenerator.java Wed Aug 22 14:35:01 2012
@@ -175,6 +175,7 @@ public class SourceGenerator {
private String wadlPath;
private String wadlNamespace = WadlGenerator.WADL_NS;
private boolean generateEnums;
+ private boolean skipSchemaGeneration;
private Map<String, String> properties;
@@ -185,6 +186,7 @@ public class SourceGenerator {
private List<String> compilerArgs = new ArrayList<String>();
private Map<String, String> schemaPackageMap = Collections.emptyMap();
private Map<String, String> javaTypeMap = Collections.emptyMap();
+ private Map<String, String> schemaTypeMap = Collections.emptyMap();
private Map<String, String> mediaTypesMap = Collections.emptyMap();
private Bus bus;
private boolean supportMultipleXmlReps;
@@ -215,6 +217,10 @@ public class SourceGenerator {
this.generateEnums = generate;
}
+ public void setSkipSchemaGeneration(boolean skip) {
+ this.skipSchemaGeneration = skip;
+ }
+
private String getClassPackageName(String wadlPackageName) {
if (resourcePackageName != null) {
return resourcePackageName;
@@ -247,8 +253,9 @@ public class SourceGenerator {
private GrammarInfo generateSchemaCodeAndInfo(Application app, Set<String> typeClassNames,
File srcDir) {
+
List<SchemaInfo> schemaElements = getSchemaElements(app);
- if (schemaElements != null && !schemaElements.isEmpty()) {
+ if (!skipSchemaGeneration && schemaElements != null && !schemaElements.isEmpty()) {
// generate classes from schema
JCodeModel codeModel = createCodeModel(schemaElements, typeClassNames);
if (codeModel != null) {
@@ -1030,25 +1037,29 @@ public class SourceGenerator {
}
private String getPrimitiveType(Element paramEl, ContextInfo info, Set<String> imports) {
+ final String defaultValue = "String";
String type = paramEl.getAttribute("type");
if (type.length() == 0) {
- return "String";
+ return defaultValue;
}
+
String[] pair = type.split(":");
- String value = pair.length == 2 ? pair[1] : type;
- if (XSD_SPECIFIC_TYPE_MAP.containsKey(value)) {
- String theType = XSD_SPECIFIC_TYPE_MAP.get(value);
- if (javaTypeMap.containsKey(theType)) {
- theType = javaTypeMap.get(theType);
+ if (pair.length == 2) {
+ if (XSD_SPECIFIC_TYPE_MAP.containsKey(pair[1])) {
+ String expandedName = "{" + XmlSchemaConstants.XSD_NAMESPACE_URI + "}" + pair[1];
+ if (schemaTypeMap.containsKey(expandedName)) {
+ return schemaTypeMap.get(expandedName);
+ }
+
+ return XSD_SPECIFIC_TYPE_MAP.get(pair[1]);
}
- return theType;
+
+ String value = pair[1].replaceAll("[\\-\\_]", "");
+ return convertRefToClassName(pair[0], value, defaultValue, info, imports);
} else {
- String actualValue = value.replaceAll("[\\-\\_]", "");
- if (pair.length > 1) {
- actualValue = convertRefToClassName(pair[0], actualValue, "String", info, imports);
- }
- return actualValue;
+ return type;
}
+
}
private String convertRefToClassName(String prefix,
@@ -1060,9 +1071,14 @@ public class SourceGenerator {
if (gInfo != null) {
String namespace = gInfo.getNsMap().get(prefix);
if (namespace != null) {
+
String packageName = getPackageFromNamespace(namespace);
String clsName = getSchemaClassName(packageName, gInfo, actualValue,
info.getTypeClassNames());
+
+ if (clsName == null) {
+ clsName = schemaTypeMap.get("{" + namespace + "}" + actualValue);
+ }
if (clsName != null) {
addImport(imports, clsName);
int index = clsName.lastIndexOf(".");
@@ -1425,6 +1441,10 @@ public class SourceGenerator {
this.javaTypeMap = map;
}
+ public void setSchemaTypeMap(Map<String, String> map) {
+ this.schemaTypeMap = map;
+ }
+
public void setMediaTypeMap(Map<String, String> map) {
this.mediaTypesMap = map;
}
Modified: cxf/trunk/tools/wadlto/jaxrs/src/main/java/org/apache/cxf/tools/wadlto/jaxrs/jaxrs-toolspec.xml
URL: http://svn.apache.org/viewvc/cxf/trunk/tools/wadlto/jaxrs/src/main/java/org/apache/cxf/tools/wadlto/jaxrs/jaxrs-toolspec.xml?rev=1376072&r1=1376071&r2=1376072&view=diff
==============================================================================
--- cxf/trunk/tools/wadlto/jaxrs/src/main/java/org/apache/cxf/tools/wadlto/jaxrs/jaxrs-toolspec.xml (original)
+++ cxf/trunk/tools/wadlto/jaxrs/src/main/java/org/apache/cxf/tools/wadlto/jaxrs/jaxrs-toolspec.xml Wed Aug 22 14:35:01 2012
@@ -67,16 +67,15 @@ Examples:
</associatedArgument>
</option>
- <option id="typeMap" maxOccurs="unbounded">
+ <option id="schemaTypeMap" maxOccurs="unbounded">
<annotation>
- Specifies the optional mapping between default Java types
- representing WADL representation or parameter types
- and custom Java types.
+ Specifies the optional mapping between WADL parameter
+ or representation schema type and custom Java type.
</annotation>
<switch>tMap</switch>
<associatedArgument placement="afterSpace">
<valuetype>NamingSpacePackageString</valuetype>
- <annotation>default-java-type=preferred-java-type</annotation>
+ <annotation>schema-type=java-type</annotation>
</associatedArgument>
</option>
@@ -171,6 +170,11 @@ Examples:
<switch>generateEnums</switch>
</option>
+ <option id="notypes" maxOccurs="1">
+ <annotation>Turns off generating types</annotation>
+ <switch>noTypes</switch>
+ </option>
+
<option id="noAddressBinding" maxOccurs="1">
<annotation>
Specifies that the generator should not use the address jaxb binding file to map wsa:EndpointReferenceType
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=1376072&r1=1376071&r2=1376072&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 Aug 22 14:35:01 2012
@@ -181,7 +181,8 @@ public class JAXRSContainerTest extends
ToolContext context = new ToolContext();
context.put(WadlToolConstants.CFG_OUTPUTDIR, output.getCanonicalPath());
context.put(WadlToolConstants.CFG_WADLURL, getLocation("/wadl/resourceWithEPR.xml"));
- context.put(WadlToolConstants.CFG_TYPE_MAP, "java.util.Date=javax.xml.datatype.XMLGregorianCalendar");
+ context.put(WadlToolConstants.CFG_SCHEMA_TYPE_MAP,
+ "{http://www.w3.org/2001/XMLSchema}date=javax.xml.datatype.XMLGregorianCalendar");
context.put(WadlToolConstants.CFG_COMPILE, "true");
container.setContext(context);
@@ -201,6 +202,36 @@ public class JAXRSContainerTest extends
}
}
+ @Test
+ public void testResourceWithEPRNoSchemaGen() {
+ try {
+ JAXRSContainer container = new JAXRSContainer(null);
+
+ ToolContext context = new ToolContext();
+ context.put(WadlToolConstants.CFG_OUTPUTDIR, output.getCanonicalPath());
+ context.put(WadlToolConstants.CFG_WADLURL, getLocation("/wadl/resourceWithEPR.xml"));
+ context.put(WadlToolConstants.CFG_SCHEMA_TYPE_MAP,
+ "{http://www.w3.org/2005/08/addressing}EndpointReferenceType="
+ + "javax.xml.ws.wsaddressing.W3CEndpointReference");
+ context.put(WadlToolConstants.CFG_NO_ADDRESS_BINDING, "true");
+ context.put(WadlToolConstants.CFG_NO_TYPES, "true");
+
+ context.put(WadlToolConstants.CFG_COMPILE, "true");
+
+ container.setContext(context);
+ container.execute();
+
+ assertNotNull(output.list());
+
+ List<File> files = FileUtils.getFilesRecurse(output, ".+\\." + "class" + "$");
+ assertEquals(1, files.size());
+ assertTrue(checkContains(files, "application" + ".BookstoreResource.class"));
+ } catch (Exception e) {
+ e.printStackTrace();
+ fail();
+ }
+ }
+
@Test
public void testCodeGenWithImportedSchemaAndResourceSet() {
try {