You are viewing a plain text version of this content. The canonical link for it is here.
Posted to xbean-scm@geronimo.apache.org by dj...@apache.org on 2009/09/07 19:16:44 UTC
svn commit: r812229 - in /geronimo/xbean/trunk/xbean-spring/src:
main/java/org/apache/xbean/spring/generator/
test/java/org/apache/xbean/spring/generator/
Author: djencks
Date: Mon Sep 7 17:16:43 2009
New Revision: 812229
URL: http://svn.apache.org/viewvc?rev=812229&view=rev
Log:
XBEAN-136 use property editor when applicable, patch from Gary Tully
Modified:
geronimo/xbean/trunk/xbean-spring/src/main/java/org/apache/xbean/spring/generator/DocumentationGenerator.java
geronimo/xbean/trunk/xbean-spring/src/main/java/org/apache/xbean/spring/generator/WikiDocumentationGenerator.java
geronimo/xbean/trunk/xbean-spring/src/main/java/org/apache/xbean/spring/generator/XsdGenerator.java
geronimo/xbean/trunk/xbean-spring/src/test/java/org/apache/xbean/spring/generator/CheeseService.java
geronimo/xbean/trunk/xbean-spring/src/test/java/org/apache/xbean/spring/generator/ModelTest.java
Modified: geronimo/xbean/trunk/xbean-spring/src/main/java/org/apache/xbean/spring/generator/DocumentationGenerator.java
URL: http://svn.apache.org/viewvc/geronimo/xbean/trunk/xbean-spring/src/main/java/org/apache/xbean/spring/generator/DocumentationGenerator.java?rev=812229&r1=812228&r2=812229&view=diff
==============================================================================
--- geronimo/xbean/trunk/xbean-spring/src/main/java/org/apache/xbean/spring/generator/DocumentationGenerator.java (original)
+++ geronimo/xbean/trunk/xbean-spring/src/main/java/org/apache/xbean/spring/generator/DocumentationGenerator.java Mon Sep 7 17:16:43 2009
@@ -136,7 +136,7 @@
out.println(" <tr><th>Attribute</th><th>Type</th><th>Description</th>");
for (Iterator iterator = element.getAttributes().iterator(); iterator.hasNext();) {
AttributeMapping attributeMapping = (AttributeMapping) iterator.next();
- Type type = attributeMapping.getType();
+ Type type = attributeMapping.getPropertyEditor() != null ? Type.newSimpleType(String.class.getName()) : attributeMapping.getType();
if (namespaceMapping.isSimpleType(type)) {
out.println(" <tr><td>" + attributeMapping.getAttributeName() + "</td><td>" + Utils.getXsdType(type)
+ "</td><td>" + attributeMapping.getDescription() + "</td></tr>");
Modified: geronimo/xbean/trunk/xbean-spring/src/main/java/org/apache/xbean/spring/generator/WikiDocumentationGenerator.java
URL: http://svn.apache.org/viewvc/geronimo/xbean/trunk/xbean-spring/src/main/java/org/apache/xbean/spring/generator/WikiDocumentationGenerator.java?rev=812229&r1=812228&r2=812229&view=diff
==============================================================================
--- geronimo/xbean/trunk/xbean-spring/src/main/java/org/apache/xbean/spring/generator/WikiDocumentationGenerator.java (original)
+++ geronimo/xbean/trunk/xbean-spring/src/main/java/org/apache/xbean/spring/generator/WikiDocumentationGenerator.java Mon Sep 7 17:16:43 2009
@@ -182,7 +182,7 @@
for ( Iterator iterator = element.getAttributes().iterator(); iterator.hasNext(); ) {
AttributeMapping attribute = (AttributeMapping) iterator.next();
- Type type = attribute.getType();
+ Type type = attribute.getPropertyEditor() != null ? Type.newSimpleType(String.class.getName()): attribute.getType();
out.println(" | " + attribute.getAttributeName() + " | "+getTypeLink(type, refercencedTypes)+" | {html}"+attribute.getDescription()+"{html} |");
}
}
Modified: geronimo/xbean/trunk/xbean-spring/src/main/java/org/apache/xbean/spring/generator/XsdGenerator.java
URL: http://svn.apache.org/viewvc/geronimo/xbean/trunk/xbean-spring/src/main/java/org/apache/xbean/spring/generator/XsdGenerator.java?rev=812229&r1=812228&r2=812229&view=diff
==============================================================================
--- geronimo/xbean/trunk/xbean-spring/src/main/java/org/apache/xbean/spring/generator/XsdGenerator.java (original)
+++ geronimo/xbean/trunk/xbean-spring/src/main/java/org/apache/xbean/spring/generator/XsdGenerator.java Mon Sep 7 17:16:43 2009
@@ -48,7 +48,7 @@
}
}
- private void generateSchema(PrintWriter out, NamespaceMapping namespaceMapping) {
+ public void generateSchema(PrintWriter out, NamespaceMapping namespaceMapping) {
out.println("<?xml version='1.0'?>");
out.println("<!-- NOTE: this file is autogenerated by Apache XBean -->");
out.println();
@@ -142,8 +142,11 @@
}
private void generateElementMappingSimpleProperty(PrintWriter out, AttributeMapping attributeMapping) {
+ // types with property editors need to be xs:string in the schema to validate
+ String type = attributeMapping.getPropertyEditor() != null ?
+ Utils.getXsdType(Type.newSimpleType(String.class.getName())) : Utils.getXsdType(attributeMapping.getType());
if (!isEmptyString(attributeMapping.getDescription())) {
- out.println(" <xs:attribute name='" + attributeMapping.getAttributeName() + "' type='" + Utils.getXsdType(attributeMapping.getType()) + "'>");
+ out.println(" <xs:attribute name='" + attributeMapping.getAttributeName() + "' type='" + type + "'>");
out.println(" <xs:annotation>");
out.println(" <xs:documentation><![CDATA[");
out.println(" " + attributeMapping.getDescription());
@@ -151,7 +154,7 @@
out.println(" </xs:annotation>");
out.println(" </xs:attribute>");
} else {
- out.println(" <xs:attribute name='" + attributeMapping.getAttributeName() + "' type='" + Utils.getXsdType(attributeMapping.getType()) + "'/>");
+ out.println(" <xs:attribute name='" + attributeMapping.getAttributeName() + "' type='" + type + "'/>");
}
}
@@ -210,4 +213,5 @@
public void setLog(LogFacade log) {
this.log = log;
}
+
}
Modified: geronimo/xbean/trunk/xbean-spring/src/test/java/org/apache/xbean/spring/generator/CheeseService.java
URL: http://svn.apache.org/viewvc/geronimo/xbean/trunk/xbean-spring/src/test/java/org/apache/xbean/spring/generator/CheeseService.java?rev=812229&r1=812228&r2=812229&view=diff
==============================================================================
--- geronimo/xbean/trunk/xbean-spring/src/test/java/org/apache/xbean/spring/generator/CheeseService.java (original)
+++ geronimo/xbean/trunk/xbean-spring/src/test/java/org/apache/xbean/spring/generator/CheeseService.java Mon Sep 7 17:16:43 2009
@@ -28,6 +28,8 @@
private String id;
private String name;
+ private long volume;
+
public CheeseService(String id, String name) {
this.id = id;
this.name = name;
@@ -40,4 +42,15 @@
public String getName() {
return name;
}
+
+ public long getVolumeWithPropertyEditor() {
+ return volume;
+ }
+
+ /**
+ * @org.apache.xbean.Property propertyEditor="org.apache.xbean.spring.example.MilliLittersPropertyEditor"
+ */
+ public void setVolumeWithPropertyEditor(long volume) {
+ this.volume = volume;
+ }
}
Modified: geronimo/xbean/trunk/xbean-spring/src/test/java/org/apache/xbean/spring/generator/ModelTest.java
URL: http://svn.apache.org/viewvc/geronimo/xbean/trunk/xbean-spring/src/test/java/org/apache/xbean/spring/generator/ModelTest.java?rev=812229&r1=812228&r2=812229&view=diff
==============================================================================
--- geronimo/xbean/trunk/xbean-spring/src/test/java/org/apache/xbean/spring/generator/ModelTest.java (original)
+++ geronimo/xbean/trunk/xbean-spring/src/test/java/org/apache/xbean/spring/generator/ModelTest.java Mon Sep 7 17:16:43 2009
@@ -19,12 +19,14 @@
import java.beans.PropertyEditorManager;
import java.io.File;
import java.io.IOException;
+import java.io.PrintWriter;
import java.util.Arrays;
import java.util.Iterator;
import java.util.LinkedList;
import java.util.List;
import java.util.Map;
import java.util.Set;
+import java.util.concurrent.atomic.AtomicBoolean;
import junit.framework.TestCase;
import org.apache.xbean.spring.example.BeerService;
@@ -61,6 +63,29 @@
Map flatCollections = recipeService.getFlatCollections();
assertNotNull(flatCollections);
assertEquals(1, flatCollections.size());
+
+ ElementMapping cheese = defaultNamespace.getElement("cheese");
+ assertNotNull(cheese);
+ AttributeMapping volume = cheese.getAttribute("volumeWithPropertyEditor");
+ assertNotNull(volume);
+ assertNotNull(volume.getPropertyEditor());
+ assertEquals(volume.getType().getName(), "long");
+
+ // validate xsd has string for attribute VolumeWithPropertyEditor
+ final AtomicBoolean gotExpected = new AtomicBoolean(false);
+ XsdGenerator generator = new XsdGenerator(null);
+ generator.generateSchema(new PrintWriter("dummy") {
+
+ @Override
+ public void println(String x) {
+ if (x.indexOf("volumeWithPropertyEditor") != -1) {
+ if (x.indexOf("xs:string") != -1) {
+ gotExpected.set(true);
+ }
+ }
+ }}, defaultNamespace);
+
+ assertTrue("xsd with string got genereated", gotExpected.get());
}
public void testQdoxExcludeClass() throws Exception{