Return-Path: Delivered-To: apmail-geronimo-xbean-scm-archive@minotaur.apache.org Received: (qmail 68055 invoked from network); 7 Sep 2009 17:17:09 -0000 Received: from hermes.apache.org (HELO mail.apache.org) (140.211.11.3) by minotaur.apache.org with SMTP; 7 Sep 2009 17:17:09 -0000 Received: (qmail 78153 invoked by uid 500); 7 Sep 2009 17:17:09 -0000 Delivered-To: apmail-geronimo-xbean-scm-archive@geronimo.apache.org Received: (qmail 78131 invoked by uid 500); 7 Sep 2009 17:17:09 -0000 Mailing-List: contact xbean-scm-help@geronimo.apache.org; run by ezmlm Precedence: bulk List-Help: List-Unsubscribe: List-Post: List-Id: Reply-To: xbean-scm@geronimo.apache.org Delivered-To: mailing list xbean-scm@geronimo.apache.org Received: (qmail 78122 invoked by uid 99); 7 Sep 2009 17:17:09 -0000 Received: from nike.apache.org (HELO nike.apache.org) (192.87.106.230) by apache.org (qpsmtpd/0.29) with ESMTP; Mon, 07 Sep 2009 17:17:09 +0000 X-ASF-Spam-Status: No, hits=-2000.0 required=10.0 tests=ALL_TRUSTED X-Spam-Check-By: apache.org Received: from [140.211.11.4] (HELO eris.apache.org) (140.211.11.4) by apache.org (qpsmtpd/0.29) with ESMTP; Mon, 07 Sep 2009 17:17:05 +0000 Received: by eris.apache.org (Postfix, from userid 65534) id B4E2B2388882; Mon, 7 Sep 2009 17:16:44 +0000 (UTC) Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit Subject: svn commit: r812229 - in /geronimo/xbean/trunk/xbean-spring/src: main/java/org/apache/xbean/spring/generator/ test/java/org/apache/xbean/spring/generator/ Date: Mon, 07 Sep 2009 17:16:44 -0000 To: xbean-scm@geronimo.apache.org From: djencks@apache.org X-Mailer: svnmailer-1.0.8 Message-Id: <20090907171644.B4E2B2388882@eris.apache.org> X-Virus-Checked: Checked by ClamAV on apache.org 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(" AttributeTypeDescription"); 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(" " + attributeMapping.getAttributeName() + "" + Utils.getXsdType(type) + "" + attributeMapping.getDescription() + ""); 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(""); out.println(""); 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(" "); + out.println(" "); out.println(" "); out.println(" "); out.println(" "); } else { - out.println(" "); + out.println(" "); } } @@ -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{