You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@cxf.apache.org by dk...@apache.org on 2010/02/03 13:48:11 UTC

svn commit: r906033 - in /cxf/trunk/common/xjc: boolean-test/ dv-test/ dv/src/main/java/org/apache/cxf/xjc/dv/ ts-test/ ts/src/main/java/com/sun/tools/xjc/addon/apache_cxf/ts/ ts/src/main/java/org/apache/cxf/xjc/ts/ wsdlextension-test/ wsdlextension/ w...

Author: dkulp
Date: Wed Feb  3 12:47:47 2010
New Revision: 906033

URL: http://svn.apache.org/viewvc?rev=906033&view=rev
Log:
Work toward making the xjc things a little more self standing

Modified:
    cxf/trunk/common/xjc/boolean-test/pom.xml
    cxf/trunk/common/xjc/dv-test/pom.xml
    cxf/trunk/common/xjc/dv/src/main/java/org/apache/cxf/xjc/dv/DefaultValuePlugin.java
    cxf/trunk/common/xjc/ts-test/pom.xml
    cxf/trunk/common/xjc/ts/src/main/java/com/sun/tools/xjc/addon/apache_cxf/ts/ToStringPlugin.java
    cxf/trunk/common/xjc/ts/src/main/java/org/apache/cxf/xjc/ts/ToStringPlugin.java
    cxf/trunk/common/xjc/wsdlextension-test/pom.xml
    cxf/trunk/common/xjc/wsdlextension/pom.xml
    cxf/trunk/common/xjc/wsdlextension/src/main/java/org/apache/cxf/xjc/wsdlextension/WSDLExtension.java

Modified: cxf/trunk/common/xjc/boolean-test/pom.xml
URL: http://svn.apache.org/viewvc/cxf/trunk/common/xjc/boolean-test/pom.xml?rev=906033&r1=906032&r2=906033&view=diff
==============================================================================
--- cxf/trunk/common/xjc/boolean-test/pom.xml (original)
+++ cxf/trunk/common/xjc/boolean-test/pom.xml Wed Feb  3 12:47:47 2010
@@ -63,11 +63,6 @@
 			<artifactId>junit</artifactId>
 			<scope>test</scope>
 		</dependency>
-		<dependency>
-			<groupId>org.apache.cxf</groupId>
-			<artifactId>cxf-common-utilities</artifactId>
-			<version>${project.version}</version>
-		</dependency>
 	</dependencies>
 
 	<build>

Modified: cxf/trunk/common/xjc/dv-test/pom.xml
URL: http://svn.apache.org/viewvc/cxf/trunk/common/xjc/dv-test/pom.xml?rev=906033&r1=906032&r2=906033&view=diff
==============================================================================
--- cxf/trunk/common/xjc/dv-test/pom.xml (original)
+++ cxf/trunk/common/xjc/dv-test/pom.xml Wed Feb  3 12:47:47 2010
@@ -58,11 +58,6 @@
             <artifactId>junit</artifactId>
             <scope>test</scope>
         </dependency>
-        <dependency>
-            <groupId>org.apache.cxf</groupId>
-            <artifactId>cxf-common-utilities</artifactId>
-            <version>${project.version}</version>
-        </dependency>
     </dependencies>
 
     <build>

Modified: cxf/trunk/common/xjc/dv/src/main/java/org/apache/cxf/xjc/dv/DefaultValuePlugin.java
URL: http://svn.apache.org/viewvc/cxf/trunk/common/xjc/dv/src/main/java/org/apache/cxf/xjc/dv/DefaultValuePlugin.java?rev=906033&r1=906032&r2=906033&view=diff
==============================================================================
--- cxf/trunk/common/xjc/dv/src/main/java/org/apache/cxf/xjc/dv/DefaultValuePlugin.java (original)
+++ cxf/trunk/common/xjc/dv/src/main/java/org/apache/cxf/xjc/dv/DefaultValuePlugin.java Wed Feb  3 12:47:47 2010
@@ -24,6 +24,8 @@
 
 import javax.xml.bind.DatatypeConverter;
 import javax.xml.bind.annotation.adapters.HexBinaryAdapter;
+import javax.xml.datatype.DatatypeConfigurationException;
+import javax.xml.datatype.DatatypeFactory;
 import javax.xml.namespace.NamespaceContext;
 import javax.xml.namespace.QName;
 
@@ -39,6 +41,7 @@
 import com.sun.codemodel.JFieldVar;
 import com.sun.codemodel.JMethod;
 import com.sun.codemodel.JOp;
+import com.sun.codemodel.JTryBlock;
 import com.sun.codemodel.JType;
 import com.sun.tools.xjc.Options;
 import com.sun.tools.xjc.outline.ClassOutline;
@@ -159,8 +162,12 @@
                     
                     updateSetter(co, f, co.implClass);
                     updateGetter(co, f, co.implClass, dvExpr, true);                    
-                    
                 } else if (null == dvExpr) {
+                    JType type = f.getRawType();
+                    String typeName = type.fullName();
+                    if ("javax.xml.datatype.Duration".equals(typeName)) {
+                        updateDurationGetter(co, f, co.implClass, xmlDefaultValue, outline);
+                    }
                     continue;
                 } else {
                     updateGetter(co, f, co.implClass, dvExpr, false);                    
@@ -172,6 +179,42 @@
     }
     
     
+    private void updateDurationGetter(ClassOutline co, FieldOutline fo, JDefinedClass dc,
+                                      XmlString xmlDefaultValue, Outline outline) {
+        String fieldName = fo.getPropertyInfo().getName(false);
+
+        String getterName = "get" + fo.getPropertyInfo().getName(true);
+
+        JMethod method = dc.getMethod(getterName, new JType[0]);
+        JDocComment doc = method.javadoc();
+        int mods = method.mods().getValue();
+        JType mtype = method.type();
+
+        if (LOG.isLoggable(Level.FINE)) {
+            LOG.fine("Updating getter: " + getterName);
+        }
+        // remove existing method and define new one
+
+        dc.methods().remove(method);
+
+        method = dc.method(mods, mtype, getterName);
+        method.javadoc().append(doc);
+
+        JFieldRef fr = JExpr.ref(fieldName);
+        if (xmlDefaultValue != null) {
+            JExpression test = JOp.eq(JExpr._null(), fr);
+            JConditional jc =  method.body()._if(test);
+            JTryBlock b = jc._then()._try();
+            b.body()._return(outline.getCodeModel().ref(DatatypeFactory.class)
+                .staticInvoke("newInstance").invoke("newDuration").arg(JExpr.lit(xmlDefaultValue.value)));
+            b._catch(outline.getCodeModel().ref(DatatypeConfigurationException.class));
+            method.body()._return(fr);
+        } else {
+            method.body()._return(fr);
+        }
+
+    }
+
     JExpression getDefaultValueExpression(FieldOutline f,
                                           ClassOutline co,
                                           Outline outline,
@@ -235,8 +278,7 @@
                 .arg(qn.getLocalPart())
                 .arg(qn.getPrefix());
         } else if ("javax.xml.datatype.Duration".equals(typeName)) {
-            dv = outline.getCodeModel().ref("org.apache.cxf.jaxb.DatatypeFactory")
-                .staticInvoke("createDuration").arg(defaultValue);
+            dv = null;
         } else if (type instanceof JDefinedClass) {
             JDefinedClass cls = (JDefinedClass)type;
             if (cls.getClassType() == ClassType.ENUM) {
@@ -306,10 +348,8 @@
             JExpression test = JOp.eq(JExpr._null(), fr);
             JConditional jc =  method.body()._if(test);
             jc._then()._return(dvExpr);
-            jc._else()._return(fr);
-        } else {
-            method.body()._return(fr);
         }
+        method.body()._return(fr);
     }
     private void updateSetter(ClassOutline co, FieldOutline fo, 
                               JDefinedClass dc) {

Modified: cxf/trunk/common/xjc/ts-test/pom.xml
URL: http://svn.apache.org/viewvc/cxf/trunk/common/xjc/ts-test/pom.xml?rev=906033&r1=906032&r2=906033&view=diff
==============================================================================
--- cxf/trunk/common/xjc/ts-test/pom.xml (original)
+++ cxf/trunk/common/xjc/ts-test/pom.xml Wed Feb  3 12:47:47 2010
@@ -52,11 +52,6 @@
             <scope>test</scope>
         </dependency>
         <dependency>
-            <groupId>org.apache.cxf</groupId>
-            <artifactId>cxf-common-utilities</artifactId>
-            <version>${project.version}</version>
-        </dependency>
-        <dependency>
             <groupId>commons-lang</groupId>
             <artifactId>commons-lang</artifactId>
         </dependency>
@@ -78,7 +73,7 @@
                 <configuration>
                     <outputDirectory>${basedir}/target/generated/src/test/java</outputDirectory>
                     <schemaDirectory>${basedir}/src/test/resources/schemas/configuration</schemaDirectory>
-                    <arguments>-Xts</arguments>
+                    <arguments>-Xts:style:org.apache.commons.lang.builder.ToStringStyle.DEFAULT_STYLE</arguments>
                     <extension>true</extension>
                     <quiet>true</quiet>
                 </configuration>

Modified: cxf/trunk/common/xjc/ts/src/main/java/com/sun/tools/xjc/addon/apache_cxf/ts/ToStringPlugin.java
URL: http://svn.apache.org/viewvc/cxf/trunk/common/xjc/ts/src/main/java/com/sun/tools/xjc/addon/apache_cxf/ts/ToStringPlugin.java?rev=906033&r1=906032&r2=906033&view=diff
==============================================================================
--- cxf/trunk/common/xjc/ts/src/main/java/com/sun/tools/xjc/addon/apache_cxf/ts/ToStringPlugin.java (original)
+++ cxf/trunk/common/xjc/ts/src/main/java/com/sun/tools/xjc/addon/apache_cxf/ts/ToStringPlugin.java Wed Feb  3 12:47:47 2010
@@ -62,6 +62,11 @@
         return impl.run(outline, opt, errorHandler);
     }
 
+    public void onActivated(Options opts) throws BadCommandLineException {
+        impl.onActivated(opts);
+    }
+
+    
     /* (non-Javadoc)
      * @see com.sun.tools.xjc.Plugin#parseArgument(com.sun.tools.xjc.Options, java.lang.String[], int)
      */

Modified: cxf/trunk/common/xjc/ts/src/main/java/org/apache/cxf/xjc/ts/ToStringPlugin.java
URL: http://svn.apache.org/viewvc/cxf/trunk/common/xjc/ts/src/main/java/org/apache/cxf/xjc/ts/ToStringPlugin.java?rev=906033&r1=906032&r2=906033&view=diff
==============================================================================
--- cxf/trunk/common/xjc/ts/src/main/java/org/apache/cxf/xjc/ts/ToStringPlugin.java (original)
+++ cxf/trunk/common/xjc/ts/src/main/java/org/apache/cxf/xjc/ts/ToStringPlugin.java Wed Feb  3 12:47:47 2010
@@ -46,38 +46,59 @@
     private static final Logger LOG = Logger.getLogger(ToStringPlugin.class.getName()); //NOPMD
 
     private String styleFieldName = "DEFAULT_STYLE";
+    private String styleClassName = "org.apache.cxf.jaxb.JAXBToStringStyle";
+    private boolean active;
+    
     public String getOptionName() {
         return "Xts";
     }
 
     public String getUsage() {
         return "  -Xts                 : Activate plugin to add a toString() method to generated classes\n"
+            +  "         equivalent to: -Xts:style:org.apache.cxf.jaxb.JAXBToStringStyle.DEFAULT_STYLE\n"
             +  "  -Xts:style:multiline : Have toString produce multi line output\n"
-            +  "  -Xts:style:simple    : Have toString produce single line terse output";
+            +  "         equivalent to: -Xts:style:org.apache.cxf.jaxb.JAXBToStringStyle.MULTI_LINE_STYLE\n"
+            +  "  -Xts:style:simple    : Have toString produce single line terse output\n"
+            +  "         equivalent to: -Xts:style:org.apache.cxf.jaxb.JAXBToStringStyle.SIMPLE_STYLE\n"
+            +  "  -Xts:style:org.apache.commons.lang.builder.ToStringStyle.FIELD : The full class+field\n"
+            +  "         name of the ToStringStyle to use.";
     }
 
     public int parseArgument(Options opt, String[] args, int index, com.sun.tools.xjc.Plugin plugin) 
         throws BadCommandLineException, IOException {
         int ret = 0;
-        if (args[index].equals("-Xts:style:multiline")) {
-            styleFieldName = "MULTI_LINE_STYLE";
-            ret = 1;
-        } else if (args[index].equals("-Xts:style:simple")) {
-            styleFieldName = "SIMPLE_STYLE";
-            ret = 1;
-        }
-        if (!opt.activePlugins.contains(plugin)) {
-            opt.activePlugins.add(plugin);
+        
+        if (args[index].startsWith("-Xts")) {
+            ret = 1;                    
+            if (args[index].startsWith("-Xts:style:")) {
+                String v = args[index].substring("-Xts:style:".length());
+                if ("multiline".equals(v)) {
+                    styleFieldName = "MULTI_LINE_STYLE";
+                } else if ("simple".equals(v)) {
+                    styleFieldName = "SIMPLE_STYLE";                    
+                } else {
+                    int idx = v.lastIndexOf('.');
+                    styleFieldName = v.substring(idx + 1);
+                    styleClassName = v.substring(0, idx);
+                }
+            }
+            if (!opt.activePlugins.contains(plugin)) {
+                opt.activePlugins.add(plugin);
+            }
+            active = true;
         }
         return ret;
     }
     
     public boolean run(Outline outline, Options opt, ErrorHandler errorHandler) {
         LOG.fine("Running toString() plugin.");
-        
+        if (!active) {
+            return true;
+        }
+
         final JClass toStringDelegateImpl = outline.getCodeModel()
-            .ref("org.apache.cxf.jaxb.JAXBToStringBuilder");
-        final JClass styleClass = outline.getCodeModel().ref("org.apache.cxf.jaxb.JAXBToStringStyle");
+            .ref("org.apache.commons.lang.builder.ToStringBuilder");
+        final JClass styleClass = outline.getCodeModel().ref(styleClassName);
         final JFieldRef toStringDelegateStyleParam = styleClass.staticRef(styleFieldName);
         
         for (ClassOutline co : outline.getClasses()) {
@@ -91,8 +112,9 @@
                                    JClass delegateImpl, 
                                    JFieldRef toStringDelegateStyleParam) {
         final JDefinedClass implementation = co.implClass;
+        
         final JMethod toStringMethod = implementation.method(JMod.PUBLIC, String.class, "toString");
-        final JInvocation invoke = delegateImpl.staticInvoke("valueOf");
+        final JInvocation invoke = delegateImpl.staticInvoke("reflectionToString");
         invoke.arg(JExpr._this());
         invoke.arg(toStringDelegateStyleParam);
         toStringMethod.body()._return(invoke);
@@ -102,4 +124,8 @@
         doc.add("\nThis is an extension method, produced by the 'ts' xjc plugin");
         toStringMethod.annotate(Override.class);
     }
+
+    public void onActivated(Options opts) {
+        active = true;
+    }
 }

Modified: cxf/trunk/common/xjc/wsdlextension-test/pom.xml
URL: http://svn.apache.org/viewvc/cxf/trunk/common/xjc/wsdlextension-test/pom.xml?rev=906033&r1=906032&r2=906033&view=diff
==============================================================================
--- cxf/trunk/common/xjc/wsdlextension-test/pom.xml (original)
+++ cxf/trunk/common/xjc/wsdlextension-test/pom.xml Wed Feb  3 12:47:47 2010
@@ -52,14 +52,13 @@
             <scope>test</scope>
         </dependency>
         <dependency>
-            <groupId>org.apache.cxf</groupId>
-            <artifactId>cxf-common-utilities</artifactId>
-            <version>${project.version}</version>
-        </dependency>
-        <dependency>
            <groupId>commons-lang</groupId>
            <artifactId>commons-lang</artifactId>
         </dependency>
+        <dependency>
+           <groupId>wsdl4j</groupId>
+           <artifactId>wsdl4j</artifactId>
+        </dependency>
     </dependencies>
 
     <build>

Modified: cxf/trunk/common/xjc/wsdlextension/pom.xml
URL: http://svn.apache.org/viewvc/cxf/trunk/common/xjc/wsdlextension/pom.xml?rev=906033&r1=906032&r2=906033&view=diff
==============================================================================
--- cxf/trunk/common/xjc/wsdlextension/pom.xml (original)
+++ cxf/trunk/common/xjc/wsdlextension/pom.xml Wed Feb  3 12:47:47 2010
@@ -38,11 +38,6 @@
 
     <dependencies>
         <dependency>
-            <groupId>org.apache.cxf</groupId>
-            <artifactId>cxf-common-utilities</artifactId>
-            <version>${project.version}</version>
-        </dependency>
-        <dependency>
             <groupId>com.sun.xml.bind</groupId>
             <artifactId>jaxb-xjc</artifactId>
         </dependency>
@@ -54,6 +49,10 @@
             <groupId>commons-lang</groupId>
             <artifactId>commons-lang</artifactId>
         </dependency>
+        <dependency>
+            <groupId>wsdl4j</groupId>
+            <artifactId>wsdl4j</artifactId>
+        </dependency>
     </dependencies>
 
 </project>

Modified: cxf/trunk/common/xjc/wsdlextension/src/main/java/org/apache/cxf/xjc/wsdlextension/WSDLExtension.java
URL: http://svn.apache.org/viewvc/cxf/trunk/common/xjc/wsdlextension/src/main/java/org/apache/cxf/xjc/wsdlextension/WSDLExtension.java?rev=906033&r1=906032&r2=906033&view=diff
==============================================================================
--- cxf/trunk/common/xjc/wsdlextension/src/main/java/org/apache/cxf/xjc/wsdlextension/WSDLExtension.java (original)
+++ cxf/trunk/common/xjc/wsdlextension/src/main/java/org/apache/cxf/xjc/wsdlextension/WSDLExtension.java Wed Feb  3 12:47:47 2010
@@ -41,11 +41,9 @@
 import com.sun.tools.xjc.outline.ClassOutline;
 import com.sun.tools.xjc.outline.Outline;
 
-import org.apache.cxf.common.logging.LogUtils;
-
 public class WSDLExtension {
 
-    private static final Logger LOG = LogUtils.getL7dLogger(WSDLExtension.class);
+    private static final Logger LOG = Logger.getLogger(WSDLExtension.class.getName()); //NOPMD
 
     public String getOptionName() {
         return "Xwsdlextension";