Author: sergeyb Date: Sun Feb 3 18:55:27 2013 New Revision: 1441952 URL: http://svn.apache.org/viewvc?rev=1441952&view=rev Log: Merged revisions 1440719 via svnmerge from https://svn.apache.org/repos/asf/cxf/branches/2.7.x-fixes
................ r1440719 | sergeyb | 2013-01-30 22:37:36 +0000 (Wed, 30 Jan 2013) | 9 lines Merged revisions 1440386 via svnmerge from https://svn.apache.org/repos/asf/cxf/trunk ........ r1440386 | sergeyb | 2013-01-30 13:09:53 +0000 (Wed, 30 Jan 2013) | 1 line [CXF-4791] Get WADL to Java generator to support JAXB compiler arguments, patch from Artur Chyży applied ........ ................ Modified: cxf/branches/2.6.x-fixes/ (props changed) cxf/branches/2.6.x-fixes/tools/wadlto/jaxrs/pom.xml cxf/branches/2.6.x-fixes/tools/wadlto/jaxrs/src/main/java/org/apache/cxf/tools/wadlto/WadlToolConstants.java cxf/branches/2.6.x-fixes/tools/wadlto/jaxrs/src/main/java/org/apache/cxf/tools/wadlto/jaxb/CustomizationParser.java cxf/branches/2.6.x-fixes/tools/wadlto/jaxrs/src/main/java/org/apache/cxf/tools/wadlto/jaxrs/JAXRSContainer.java cxf/branches/2.6.x-fixes/tools/wadlto/jaxrs/src/main/java/org/apache/cxf/tools/wadlto/jaxrs/jaxrs-toolspec.xml cxf/branches/2.6.x-fixes/tools/wadlto/jaxrs/src/test/java/org/apache/cxf/tools/wadlto/jaxrs/WADLToJavaTest.java Propchange: cxf/branches/2.6.x-fixes/ ------------------------------------------------------------------------------ Merged /cxf/branches/2.7.x-fixes:r1440719 Merged /cxf/trunk:r1440386 Propchange: cxf/branches/2.6.x-fixes/ ------------------------------------------------------------------------------ Binary property 'svnmerge-integrated' - no diff available. Modified: cxf/branches/2.6.x-fixes/tools/wadlto/jaxrs/pom.xml URL: http://svn.apache.org/viewvc/cxf/branches/2.6.x-fixes/tools/wadlto/jaxrs/pom.xml?rev=1441952&r1=1441951&r2=1441952&view=diff ============================================================================== --- cxf/branches/2.6.x-fixes/tools/wadlto/jaxrs/pom.xml (original) +++ cxf/branches/2.6.x-fixes/tools/wadlto/jaxrs/pom.xml Sun Feb 3 18:55:27 2013 @@ -68,6 +68,12 @@ </exclusion> </exclusions> </dependency> + <dependency> + <groupId>org.jvnet.jaxb2_commons</groupId> + <artifactId>jaxb2-basics</artifactId> + <version>0.6.4</version> + <scope>test</scope> + </dependency> </dependencies> Modified: cxf/branches/2.6.x-fixes/tools/wadlto/jaxrs/src/main/java/org/apache/cxf/tools/wadlto/WadlToolConstants.java URL: http://svn.apache.org/viewvc/cxf/branches/2.6.x-fixes/tools/wadlto/jaxrs/src/main/java/org/apache/cxf/tools/wadlto/WadlToolConstants.java?rev=1441952&r1=1441951&r2=1441952&view=diff ============================================================================== --- cxf/branches/2.6.x-fixes/tools/wadlto/jaxrs/src/main/java/org/apache/cxf/tools/wadlto/WadlToolConstants.java (original) +++ cxf/branches/2.6.x-fixes/tools/wadlto/jaxrs/src/main/java/org/apache/cxf/tools/wadlto/WadlToolConstants.java Sun Feb 3 18:55:27 2013 @@ -26,6 +26,7 @@ public final class WadlToolConstants { public static final String CFG_OUTPUTDIR = ToolConstants.CFG_OUTPUTDIR; public static final String CFG_COMPILE = ToolConstants.CFG_COMPILE; public static final String CFG_CLASSDIR = ToolConstants.CFG_CLASSDIR; + public static final String CFG_XJC_ARGS = ToolConstants.CFG_XJC_ARGS; /** * Default Modified: cxf/branches/2.6.x-fixes/tools/wadlto/jaxrs/src/main/java/org/apache/cxf/tools/wadlto/jaxb/CustomizationParser.java URL: http://svn.apache.org/viewvc/cxf/branches/2.6.x-fixes/tools/wadlto/jaxrs/src/main/java/org/apache/cxf/tools/wadlto/jaxb/CustomizationParser.java?rev=1441952&r1=1441951&r2=1441952&view=diff ============================================================================== --- cxf/branches/2.6.x-fixes/tools/wadlto/jaxrs/src/main/java/org/apache/cxf/tools/wadlto/jaxb/CustomizationParser.java (original) +++ cxf/branches/2.6.x-fixes/tools/wadlto/jaxrs/src/main/java/org/apache/cxf/tools/wadlto/jaxb/CustomizationParser.java Sun Feb 3 18:55:27 2013 @@ -22,6 +22,7 @@ import java.io.File; import java.io.FileOutputStream; import java.net.URL; import java.util.ArrayList; +import java.util.Arrays; import java.util.List; import java.util.logging.Logger; @@ -87,6 +88,14 @@ public final class CustomizationParser { InputSource ins = new InputSource(bindingFileUrl.toString()); jaxbBindings.add(ins); } + + //pass additional JAXB compiler arguments + Object jaxbCompilerArgs = env.get(WadlToolConstants.CFG_XJC_ARGS); + if (jaxbCompilerArgs != null) { + String[] jaxbArgs = jaxbCompilerArgs instanceof String + ? new String[]{(String)jaxbCompilerArgs} : (String[])jaxbCompilerArgs; + compilerArgs.addAll(Arrays.asList(jaxbArgs)); + } // Schema Namespace to Package customizations for (String ns : env.getNamespacePackageMap().keySet()) { Modified: cxf/branches/2.6.x-fixes/tools/wadlto/jaxrs/src/main/java/org/apache/cxf/tools/wadlto/jaxrs/JAXRSContainer.java URL: http://svn.apache.org/viewvc/cxf/branches/2.6.x-fixes/tools/wadlto/jaxrs/src/main/java/org/apache/cxf/tools/wadlto/jaxrs/JAXRSContainer.java?rev=1441952&r1=1441951&r2=1441952&view=diff ============================================================================== --- cxf/branches/2.6.x-fixes/tools/wadlto/jaxrs/src/main/java/org/apache/cxf/tools/wadlto/jaxrs/JAXRSContainer.java (original) +++ cxf/branches/2.6.x-fixes/tools/wadlto/jaxrs/src/main/java/org/apache/cxf/tools/wadlto/jaxrs/JAXRSContainer.java Sun Feb 3 18:55:27 2013 @@ -104,6 +104,7 @@ public class JAXRSContainer extends Abst set.add(WadlToolConstants.CFG_SCHEMA_PACKAGENAME); set.add(WadlToolConstants.CFG_SCHEMA_TYPE_MAP); set.add(WadlToolConstants.CFG_MEDIA_TYPE_MAP); + set.add(WadlToolConstants.CFG_XJC_ARGS); return set; } Modified: cxf/branches/2.6.x-fixes/tools/wadlto/jaxrs/src/main/java/org/apache/cxf/tools/wadlto/jaxrs/jaxrs-toolspec.xml URL: http://svn.apache.org/viewvc/cxf/branches/2.6.x-fixes/tools/wadlto/jaxrs/src/main/java/org/apache/cxf/tools/wadlto/jaxrs/jaxrs-toolspec.xml?rev=1441952&r1=1441951&r2=1441952&view=diff ============================================================================== --- cxf/branches/2.6.x-fixes/tools/wadlto/jaxrs/src/main/java/org/apache/cxf/tools/wadlto/jaxrs/jaxrs-toolspec.xml (original) +++ cxf/branches/2.6.x-fixes/tools/wadlto/jaxrs/src/main/java/org/apache/cxf/tools/wadlto/jaxrs/jaxrs-toolspec.xml Sun Feb 3 18:55:27 2013 @@ -308,23 +308,23 @@ TODO: consider implementing most of the </annotation> <switch>keep</switch> </option> - +--> <option id="xjc" maxOccurs="unbounded"> <annotation> Specifies a comma separated list of arguments that are passed directly to XJC when the - JAXB data binding is used. This option causes XJC to load additional plugins that - augment code generation. For example to load the toString(ts) plugin that will add a toString() - method to all generated types the following <xjc arguments> would + JAXB data binding is used. This option causes XJC to load additional plugins that + augment code generation. For example to load the toString(ts) plugin that will add a toString() + method to all generated types the following <xjc arguments> would be used: -xjc-Xts - A list of available XJC plugins can be obtained by using -xjc-X. + A list of available XJC plugins can be obtained by using -xjc-X. </annotation> <associatedArgument placement="immediate"> <annotation>xjc-arguments</annotation> </associatedArgument> <switch>xjc</switch> </option> ---> + </optionGroup> <optionGroup id="common_options"> <option id="help" maxOccurs="1"> Modified: cxf/branches/2.6.x-fixes/tools/wadlto/jaxrs/src/test/java/org/apache/cxf/tools/wadlto/jaxrs/WADLToJavaTest.java URL: http://svn.apache.org/viewvc/cxf/branches/2.6.x-fixes/tools/wadlto/jaxrs/src/test/java/org/apache/cxf/tools/wadlto/jaxrs/WADLToJavaTest.java?rev=1441952&r1=1441951&r2=1441952&view=diff ============================================================================== --- cxf/branches/2.6.x-fixes/tools/wadlto/jaxrs/src/test/java/org/apache/cxf/tools/wadlto/jaxrs/WADLToJavaTest.java (original) +++ cxf/branches/2.6.x-fixes/tools/wadlto/jaxrs/src/test/java/org/apache/cxf/tools/wadlto/jaxrs/WADLToJavaTest.java Sun Feb 3 18:55:27 2013 @@ -21,6 +21,9 @@ package org.apache.cxf.tools.wadlto.jaxr import java.io.File; import java.net.URISyntaxException; +import java.net.URL; +import java.net.URLClassLoader; +import java.util.ArrayList; import java.util.List; import org.apache.cxf.helpers.FileUtils; @@ -55,6 +58,89 @@ public class WADLToJavaTest extends Proc fail(); } } + + @Test + public void testGenerateJAXBToString() throws Exception { + + try { + String[] args = new String[] { + "-d", + output.getCanonicalPath(), + "-p", + "custom.service", + "-compile", + "-xjc-XtoString", + getLocation("/wadl/bookstore.xml"), + }; + + WADLToJava tool = new WADLToJava(args); + tool.run(new ToolContext()); + assertNotNull(output.list()); + + verifyFiles("java", true, false, "superbooks", "custom.service"); + verifyFiles("class", true, false, "superbooks", "custom.service"); + + List<Class<?>> schemaClassFiles = getSchemaClassFiles(); + assertEquals(4, schemaClassFiles.size()); + for (Class<?> c : schemaClassFiles) { + c.getMethod("toString"); + } + } catch (Exception e) { + e.printStackTrace(); + fail(); + } + } + + private List<Class<?>> getSchemaClassFiles() throws Exception { + ClassLoader cl = new URLClassLoader(new URL[] {output.toURI().toURL()}, + Thread.currentThread().getContextClassLoader()); + + List<Class<?>> files = new ArrayList<Class<?>>(4); + files.add(cl.loadClass("superbooks.EnumType")); + files.add(cl.loadClass("superbooks.Book")); + files.add(cl.loadClass("superbooks.TheBook2")); + files.add(cl.loadClass("superbooks.Chapter")); + return files; + } + + @Test + public void testGenerateJAXBToStringAndEqualsAndHashCode() throws Exception { + + try { + String[] args = new String[] { + "-d", + output.getCanonicalPath(), + "-p", + "custom.service", + "-compile", + "-xjc-XtoString", + "-xjc-Xequals", + "-xjc-XhashCode", + getLocation("/wadl/bookstore.xml"), + }; + + WADLToJava tool = new WADLToJava(args); + tool.run(new ToolContext()); + assertNotNull(output.list()); + + verifyFiles("java", true, false, "superbooks", "custom.service"); + verifyFiles("class", true, false, "superbooks", "custom.service"); + + List<Class<?>> schemaClassFiles = getSchemaClassFiles(); + assertEquals(4, schemaClassFiles.size()); + for (Class<?> c : schemaClassFiles) { + c.getMethod("toString"); + c.getMethod("hashCode"); + c.getMethod("equals", Object.class); + } + + } catch (Exception e) { + e.printStackTrace(); + fail(); + } + } + + private void verifyFiles(String ext, boolean subresourceExpected, boolean interfacesAndImpl, String schemaPackage, String resourcePackage) { @@ -88,13 +174,17 @@ public class WADLToJavaTest extends Proc private boolean checkContains(List<File> clsFiles, String name) { for (File f : clsFiles) { - if (f.getAbsolutePath().replace(File.separatorChar, '.').endsWith(name)) { + if (checkFileContains(f, name)) { return true; } } return false; } + private boolean checkFileContains(File f, String name) { + return f.getAbsolutePath().replace(File.separatorChar, '.').endsWith(name); + } + protected String getLocation(String wsdlFile) throws URISyntaxException { return getClass().getResource(wsdlFile).toString(); }
