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 2013/02/03 21:28:58 UTC

svn commit: r1441960 - in /cxf/branches/2.5.x-fixes: ./ tools/wadlto/jaxrs/ 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/src/main/java/org/apache/cxf...

Author: sergeyb
Date: Sun Feb  3 20:28:58 2013
New Revision: 1441960

URL: http://svn.apache.org/viewvc?rev=1441960&view=rev
Log:
Merged revisions 1441952 via svnmerge from 
https://svn.apache.org/repos/asf/cxf/branches/2.6.x-fixes

................
  r1441952 | sergeyb | 2013-02-03 18:55:27 +0000 (Sun, 03 Feb 2013) | 16 lines
  
  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.5.x-fixes/   (props changed)
    cxf/branches/2.5.x-fixes/tools/wadlto/jaxrs/pom.xml
    cxf/branches/2.5.x-fixes/tools/wadlto/jaxrs/src/main/java/org/apache/cxf/tools/wadlto/WadlToolConstants.java
    cxf/branches/2.5.x-fixes/tools/wadlto/jaxrs/src/main/java/org/apache/cxf/tools/wadlto/jaxb/CustomizationParser.java
    cxf/branches/2.5.x-fixes/tools/wadlto/jaxrs/src/main/java/org/apache/cxf/tools/wadlto/jaxrs/JAXRSContainer.java
    cxf/branches/2.5.x-fixes/tools/wadlto/jaxrs/src/main/java/org/apache/cxf/tools/wadlto/jaxrs/jaxrs-toolspec.xml
    cxf/branches/2.5.x-fixes/tools/wadlto/jaxrs/src/test/java/org/apache/cxf/tools/wadlto/jaxrs/WADLToJavaTest.java

Propchange: cxf/branches/2.5.x-fixes/
------------------------------------------------------------------------------
  Merged /cxf/branches/2.7.x-fixes:r1440719
  Merged /cxf/trunk:r1440386
  Merged /cxf/branches/2.6.x-fixes:r1441952

Propchange: cxf/branches/2.5.x-fixes/
------------------------------------------------------------------------------
Binary property 'svnmerge-integrated' - no diff available.

Modified: cxf/branches/2.5.x-fixes/tools/wadlto/jaxrs/pom.xml
URL: http://svn.apache.org/viewvc/cxf/branches/2.5.x-fixes/tools/wadlto/jaxrs/pom.xml?rev=1441960&r1=1441959&r2=1441960&view=diff
==============================================================================
--- cxf/branches/2.5.x-fixes/tools/wadlto/jaxrs/pom.xml (original)
+++ cxf/branches/2.5.x-fixes/tools/wadlto/jaxrs/pom.xml Sun Feb  3 20:28:58 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.5.x-fixes/tools/wadlto/jaxrs/src/main/java/org/apache/cxf/tools/wadlto/WadlToolConstants.java
URL: http://svn.apache.org/viewvc/cxf/branches/2.5.x-fixes/tools/wadlto/jaxrs/src/main/java/org/apache/cxf/tools/wadlto/WadlToolConstants.java?rev=1441960&r1=1441959&r2=1441960&view=diff
==============================================================================
--- cxf/branches/2.5.x-fixes/tools/wadlto/jaxrs/src/main/java/org/apache/cxf/tools/wadlto/WadlToolConstants.java (original)
+++ cxf/branches/2.5.x-fixes/tools/wadlto/jaxrs/src/main/java/org/apache/cxf/tools/wadlto/WadlToolConstants.java Sun Feb  3 20:28:58 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.5.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.5.x-fixes/tools/wadlto/jaxrs/src/main/java/org/apache/cxf/tools/wadlto/jaxb/CustomizationParser.java?rev=1441960&r1=1441959&r2=1441960&view=diff
==============================================================================
--- cxf/branches/2.5.x-fixes/tools/wadlto/jaxrs/src/main/java/org/apache/cxf/tools/wadlto/jaxb/CustomizationParser.java (original)
+++ cxf/branches/2.5.x-fixes/tools/wadlto/jaxrs/src/main/java/org/apache/cxf/tools/wadlto/jaxb/CustomizationParser.java Sun Feb  3 20:28:58 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;
 
@@ -88,6 +89,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.5.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.5.x-fixes/tools/wadlto/jaxrs/src/main/java/org/apache/cxf/tools/wadlto/jaxrs/JAXRSContainer.java?rev=1441960&r1=1441959&r2=1441960&view=diff
==============================================================================
--- cxf/branches/2.5.x-fixes/tools/wadlto/jaxrs/src/main/java/org/apache/cxf/tools/wadlto/jaxrs/JAXRSContainer.java (original)
+++ cxf/branches/2.5.x-fixes/tools/wadlto/jaxrs/src/main/java/org/apache/cxf/tools/wadlto/jaxrs/JAXRSContainer.java Sun Feb  3 20:28:58 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.5.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.5.x-fixes/tools/wadlto/jaxrs/src/main/java/org/apache/cxf/tools/wadlto/jaxrs/jaxrs-toolspec.xml?rev=1441960&r1=1441959&r2=1441960&view=diff
==============================================================================
--- cxf/branches/2.5.x-fixes/tools/wadlto/jaxrs/src/main/java/org/apache/cxf/tools/wadlto/jaxrs/jaxrs-toolspec.xml (original)
+++ cxf/branches/2.5.x-fixes/tools/wadlto/jaxrs/src/main/java/org/apache/cxf/tools/wadlto/jaxrs/jaxrs-toolspec.xml Sun Feb  3 20:28:58 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 &lt;xjc arguments&gt; 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 &lt;xjc arguments&gt; 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.5.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.5.x-fixes/tools/wadlto/jaxrs/src/test/java/org/apache/cxf/tools/wadlto/jaxrs/WADLToJavaTest.java?rev=1441960&r1=1441959&r2=1441960&view=diff
==============================================================================
--- cxf/branches/2.5.x-fixes/tools/wadlto/jaxrs/src/test/java/org/apache/cxf/tools/wadlto/jaxrs/WADLToJavaTest.java (original)
+++ cxf/branches/2.5.x-fixes/tools/wadlto/jaxrs/src/test/java/org/apache/cxf/tools/wadlto/jaxrs/WADLToJavaTest.java Sun Feb  3 20:28:58 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();
     }