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) {