cxf-commits mailing list archives

Site index · List index
Message view « Date » · « Thread »
Top « Date » · « Thread »
From dk...@apache.org
Subject svn commit: r595088 - in /incubator/cxf/branches/2.0.x-fixes: ./ common/xjc/dv-test/src/test/java/org/apache/cxf/xjc/dv/ common/xjc/dv-test/src/test/resources/schemas/configuration/ common/xjc/dv/src/main/java/org/apache/cxf/xjc/dv/
Date Wed, 14 Nov 2007 22:13:36 GMT
Author: dkulp
Date: Wed Nov 14 14:13:34 2007
New Revision: 595088

URL: http://svn.apache.org/viewvc?rev=595088&view=rev
Log:
Merged revisions 594483 via svnmerge from 
https://svn.apache.org/repos/asf/incubator/cxf/trunk

........
  r594483 | mmao | 2007-11-13 06:08:37 -0500 (Tue, 13 Nov 2007) | 4 lines
  
  CXF-1206
    * xjc dv plugin provides default values for complexTypes that contain elements which have
default values
........

Modified:
    incubator/cxf/branches/2.0.x-fixes/   (props changed)
    incubator/cxf/branches/2.0.x-fixes/common/xjc/dv-test/src/test/java/org/apache/cxf/xjc/dv/DefaultValueTest.java
    incubator/cxf/branches/2.0.x-fixes/common/xjc/dv-test/src/test/resources/schemas/configuration/foo.xsd
    incubator/cxf/branches/2.0.x-fixes/common/xjc/dv/src/main/java/org/apache/cxf/xjc/dv/DefaultValuePlugin.java

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

Modified: incubator/cxf/branches/2.0.x-fixes/common/xjc/dv-test/src/test/java/org/apache/cxf/xjc/dv/DefaultValueTest.java
URL: http://svn.apache.org/viewvc/incubator/cxf/branches/2.0.x-fixes/common/xjc/dv-test/src/test/java/org/apache/cxf/xjc/dv/DefaultValueTest.java?rev=595088&r1=595087&r2=595088&view=diff
==============================================================================
--- incubator/cxf/branches/2.0.x-fixes/common/xjc/dv-test/src/test/java/org/apache/cxf/xjc/dv/DefaultValueTest.java
(original)
+++ incubator/cxf/branches/2.0.x-fixes/common/xjc/dv-test/src/test/java/org/apache/cxf/xjc/dv/DefaultValueTest.java
Wed Nov 14 14:13:34 2007
@@ -149,6 +149,11 @@
     }
     
     private void assertDefaultElementValues(Foo foo) {
+        assertEquals("Unexpected value for element pageColor.background", "red", 
+                     foo.getPageColor().getBackground());
+        assertEquals("Unexpected value for element pageColor.foreground", "blue", 
+                     foo.getPageColor().getForeground());
+
         assertEquals("Unexpected value for element driving",
                      "LeftTurn", foo.getDriving().value());
         assertEquals("Unexpected value for element stringElem",

Modified: incubator/cxf/branches/2.0.x-fixes/common/xjc/dv-test/src/test/resources/schemas/configuration/foo.xsd
URL: http://svn.apache.org/viewvc/incubator/cxf/branches/2.0.x-fixes/common/xjc/dv-test/src/test/resources/schemas/configuration/foo.xsd?rev=595088&r1=595087&r2=595088&view=diff
==============================================================================
--- incubator/cxf/branches/2.0.x-fixes/common/xjc/dv-test/src/test/resources/schemas/configuration/foo.xsd
(original)
+++ incubator/cxf/branches/2.0.x-fixes/common/xjc/dv-test/src/test/resources/schemas/configuration/foo.xsd
Wed Nov 14 14:13:34 2007
@@ -41,8 +41,16 @@
     	</xs:restriction>
     </xs:simpleType>
 
+    <xs:complexType name="pageColor">
+	<xs:sequence>
+	    <xs:element name="background" type="xs:string" default="red"/>
+	    <xs:element name="foreground" type="xs:string" default="blue"/>
+    	</xs:sequence>
+    </xs:complexType>
+
     <xs:complexType name="foo">        
         <xs:sequence>
+	    <xs:element name="pageColor" type="tns:pageColor" minOccurs="0"></xs:element>
             <xs:element name="driving" type="tns:drivingDecision" default="LeftTurn" minOccurs="0"></xs:element>
             <xs:element name="stringElem" type="xs:string" default="hello" minOccurs="0"></xs:element>
             <xs:element name="booleanElem" type="xs:boolean" default="true" minOccurs="0"></xs:element>

Modified: incubator/cxf/branches/2.0.x-fixes/common/xjc/dv/src/main/java/org/apache/cxf/xjc/dv/DefaultValuePlugin.java
URL: http://svn.apache.org/viewvc/incubator/cxf/branches/2.0.x-fixes/common/xjc/dv/src/main/java/org/apache/cxf/xjc/dv/DefaultValuePlugin.java?rev=595088&r1=595087&r2=595088&view=diff
==============================================================================
--- incubator/cxf/branches/2.0.x-fixes/common/xjc/dv/src/main/java/org/apache/cxf/xjc/dv/DefaultValuePlugin.java
(original)
+++ incubator/cxf/branches/2.0.x-fixes/common/xjc/dv/src/main/java/org/apache/cxf/xjc/dv/DefaultValuePlugin.java
Wed Nov 14 14:13:34 2007
@@ -36,6 +36,7 @@
 import com.sun.codemodel.JExpr;
 import com.sun.codemodel.JExpression;
 import com.sun.codemodel.JFieldRef;
+import com.sun.codemodel.JFieldVar;
 import com.sun.codemodel.JMethod;
 import com.sun.codemodel.JOp;
 import com.sun.codemodel.JType;
@@ -74,6 +75,29 @@
         return "  -Xdv                 : Initialize fields mapped from elements with their
default values";
     }
 
+    private boolean containsDefaultValue(Outline outline, FieldOutline field) {
+        ClassOutline fClass = null;
+        for (ClassOutline classOutline : outline.getClasses()) {
+            if (classOutline.implClass == field.getRawType()) {
+                fClass = classOutline;
+                break;
+            }
+        }
+
+        for (FieldOutline f : fClass.getDeclaredFields()) {
+            if (f.getPropertyInfo().getSchemaComponent() instanceof XSParticle) {
+                XSParticle particle = (XSParticle)f.getPropertyInfo().getSchemaComponent();
+                XSTerm term = particle.getTerm();
+                if (term.isElementDecl()) {
+                    if (term.asElementDecl().getDefaultValue() != null) {
+                        return true;
+                    }
+                }
+            }
+        }
+        return false;
+    }
+
     public boolean run(Outline outline, Options opt, ErrorHandler errorHandler) {
         LOG.fine("Running default value plugin.");
         for (ClassOutline co : outline.getClasses()) {
@@ -103,6 +127,21 @@
                     XSAttributeDecl decl = attributeUse.getDecl();
                     xmlDefaultValue = decl.getDefaultValue();                        
                     xsType = decl.getType();
+                }
+
+                
+                if (xsType != null && xsType.isComplexType() && containsDefaultValue(outline,
f)) {
+                    String varName = f.getPropertyInfo().getName(false);
+                    JFieldVar var = co.implClass.fields().get(varName);
+                    if (var != null) {
+                        co.implClass.removeField(var);
+
+                        JFieldVar newVar = co.implClass.field(var.mods().getValue(), 
+                                                              var.type(), 
+                                                              var.name(), 
+                                                              JExpr._new(f.getRawType()));
+                        newVar.javadoc().append(var.javadoc());
+                    }
                 }
 
                 if (null == xmlDefaultValue || null == xmlDefaultValue.value) {



Mime
View raw message