You are viewing a plain text version of this content. The canonical link for it is here.
Posted to jaxme-dev@ws.apache.org by jo...@apache.org on 2005/08/19 23:10:39 UTC

svn commit: r233557 - in /webservices/jaxme/branches/MAVEN: ./ .settings/ common-build/ projects/api/ projects/jm/ projects/jm/src/main/java/org/apache/ws/jaxme/generator/sg/ projects/jm/src/main/java/org/apache/ws/jaxme/generator/sg/impl/ projects/jm/...

Author: jochen
Date: Fri Aug 19 14:10:00 2005
New Revision: 233557

URL: http://svn.apache.org/viewcvs?rev=233557&view=rev
Log:
Merged in changes from trunk.

Modified:
    webservices/jaxme/branches/MAVEN/.classpath
    webservices/jaxme/branches/MAVEN/.settings/org.eclipse.jdt.core.prefs
    webservices/jaxme/branches/MAVEN/common-build/project.xml
    webservices/jaxme/branches/MAVEN/projects/api/project.xml
    webservices/jaxme/branches/MAVEN/projects/jm/maven.xml
    webservices/jaxme/branches/MAVEN/projects/jm/project.xml
    webservices/jaxme/branches/MAVEN/projects/jm/src/main/java/org/apache/ws/jaxme/generator/sg/AtomicTypeSG.java
    webservices/jaxme/branches/MAVEN/projects/jm/src/main/java/org/apache/ws/jaxme/generator/sg/SchemaSG.java
    webservices/jaxme/branches/MAVEN/projects/jm/src/main/java/org/apache/ws/jaxme/generator/sg/SimpleTypeSG.java
    webservices/jaxme/branches/MAVEN/projects/jm/src/main/java/org/apache/ws/jaxme/generator/sg/impl/AtomicTypeSGImpl.java
    webservices/jaxme/branches/MAVEN/projects/jm/src/main/java/org/apache/ws/jaxme/generator/sg/impl/JAXBSchemaSG.java
    webservices/jaxme/branches/MAVEN/projects/jm/src/main/java/org/apache/ws/jaxme/generator/sg/impl/JaxMeSchemaReader.java
    webservices/jaxme/branches/MAVEN/projects/jm/src/main/java/org/apache/ws/jaxme/generator/sg/impl/ccsg/HandlerSGImpl.java
    webservices/jaxme/branches/MAVEN/projects/jm/src/main/java/org/apache/ws/jaxme/generator/types/ListTypeSGImpl.java
    webservices/jaxme/branches/MAVEN/projects/jm/src/main/java/org/apache/ws/jaxme/generator/types/SimpleTypeSGImpl.java
    webservices/jaxme/branches/MAVEN/projects/jm/src/main/java/org/apache/ws/jaxme/generator/types/StringSG.java
    webservices/jaxme/branches/MAVEN/projects/jm/src/main/java/org/apache/ws/jaxme/impl/PassThroughXMLWriter.java
    webservices/jaxme/branches/MAVEN/projects/jm/src/test/java/org/apache/ws/jaxme/junit/BaseTestCase.java
    webservices/jaxme/branches/MAVEN/projects/jm/src/test/java/org/apache/ws/jaxme/junit/JiraTest.java
    webservices/jaxme/branches/MAVEN/projects/jm/src/test/java/org/apache/ws/jaxme/junit/MarshallerTest.java
    webservices/jaxme/branches/MAVEN/projects/jm/src/test/resources/types.xsd
    webservices/jaxme/branches/MAVEN/projects/js/project.xml
    webservices/jaxme/branches/MAVEN/projects/pm/project.xml
    webservices/jaxme/branches/MAVEN/projects/pm/src/main/java/org/apache/ws/jaxme/pm/generator/jdbc/JdbcSchemaSG.java
    webservices/jaxme/branches/MAVEN/projects/xs/project.xml
    webservices/jaxme/branches/MAVEN/projects/xs/src/main/java/org/apache/ws/jaxme/xs/XSAtomicType.java
    webservices/jaxme/branches/MAVEN/projects/xs/src/main/java/org/apache/ws/jaxme/xs/impl/XSAtomicTypeRestrictionImpl.java
    webservices/jaxme/branches/MAVEN/projects/xs/src/main/java/org/apache/ws/jaxme/xs/types/AbstractAtomicType.java
    webservices/jaxme/branches/MAVEN/status.xml

Modified: webservices/jaxme/branches/MAVEN/.classpath
URL: http://svn.apache.org/viewcvs/webservices/jaxme/branches/MAVEN/.classpath?rev=233557&r1=233556&r2=233557&view=diff
==============================================================================
--- webservices/jaxme/branches/MAVEN/.classpath (original)
+++ webservices/jaxme/branches/MAVEN/.classpath Fri Aug 19 14:10:00 2005
@@ -20,5 +20,6 @@
 	<classpathentry kind="var" path="MAVEN_REPO/antlr/jars/antlr-2.7.5.jar"/>
 	<classpathentry kind="var" path="MAVEN_REPO/xmldb/jars/xmldb-api-20021118.jar"/>
 	<classpathentry kind="var" path="MAVEN_REPO/servletapi/jars/servletapi-2.3.jar"/>
+	<classpathentry kind="var" path="MAVEN_REPO/xerces/jars/xercesImpl-2.5.0.jar"/>
 	<classpathentry kind="output" path="bin"/>
 </classpath>

Modified: webservices/jaxme/branches/MAVEN/.settings/org.eclipse.jdt.core.prefs
URL: http://svn.apache.org/viewcvs/webservices/jaxme/branches/MAVEN/.settings/org.eclipse.jdt.core.prefs?rev=233557&r1=233556&r2=233557&view=diff
==============================================================================
Binary files - no diff available.

Modified: webservices/jaxme/branches/MAVEN/common-build/project.xml
URL: http://svn.apache.org/viewcvs/webservices/jaxme/branches/MAVEN/common-build/project.xml?rev=233557&r1=233556&r2=233557&view=diff
==============================================================================
--- webservices/jaxme/branches/MAVEN/common-build/project.xml (original)
+++ webservices/jaxme/branches/MAVEN/common-build/project.xml Fri Aug 19 14:10:00 2005
@@ -22,7 +22,7 @@
     <artifactId>jaxme2</artifactId>
     <name>JaxMe2</name>
     <groupId>jaxme</groupId>
-    <currentVersion>0.5</currentVersion>
+    <currentVersion>0.6-dev</currentVersion>
     <organization>
         <name>The Apache Software Foundation</name>
         <url>http://apache.org/</url>

Modified: webservices/jaxme/branches/MAVEN/projects/api/project.xml
URL: http://svn.apache.org/viewcvs/webservices/jaxme/branches/MAVEN/projects/api/project.xml?rev=233557&r1=233556&r2=233557&view=diff
==============================================================================
--- webservices/jaxme/branches/MAVEN/projects/api/project.xml (original)
+++ webservices/jaxme/branches/MAVEN/projects/api/project.xml Fri Aug 19 14:10:00 2005
@@ -17,8 +17,6 @@
 	
 -->
 <project>
-    <pomVersion>3</pomVersion>
-    <groupId>jaxme</groupId>
     <build />
     <extend>../../common-build/project.xml</extend>
     <id>jaxme:jaxmeapi</id>

Modified: webservices/jaxme/branches/MAVEN/projects/jm/maven.xml
URL: http://svn.apache.org/viewcvs/webservices/jaxme/branches/MAVEN/projects/jm/maven.xml?rev=233557&r1=233556&r2=233557&view=diff
==============================================================================
--- webservices/jaxme/branches/MAVEN/projects/jm/maven.xml (original)
+++ webservices/jaxme/branches/MAVEN/projects/jm/maven.xml Fri Aug 19 14:10:00 2005
@@ -144,1104 +144,3 @@
                        
 </postGoal>
 </project>
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-

Modified: webservices/jaxme/branches/MAVEN/projects/jm/project.xml
URL: http://svn.apache.org/viewcvs/webservices/jaxme/branches/MAVEN/projects/jm/project.xml?rev=233557&r1=233556&r2=233557&view=diff
==============================================================================
--- webservices/jaxme/branches/MAVEN/projects/jm/project.xml (original)
+++ webservices/jaxme/branches/MAVEN/projects/jm/project.xml Fri Aug 19 14:10:00 2005
@@ -130,6 +130,12 @@
             <version>1.5.4</version>
             <type>jar</type>
         </dependency>
+        <dependency>
+        	<groupId>xerces</groupId>
+        	<artifactId>xercesImpl</artifactId>
+        	<version>2.5.0</version>
+        	<type>jar</type>
+        </dependency>
     </dependencies>
 </project>
 

Modified: webservices/jaxme/branches/MAVEN/projects/jm/src/main/java/org/apache/ws/jaxme/generator/sg/AtomicTypeSG.java
URL: http://svn.apache.org/viewcvs/webservices/jaxme/branches/MAVEN/projects/jm/src/main/java/org/apache/ws/jaxme/generator/sg/AtomicTypeSG.java?rev=233557&r1=233556&r2=233557&view=diff
==============================================================================
--- webservices/jaxme/branches/MAVEN/projects/jm/src/main/java/org/apache/ws/jaxme/generator/sg/AtomicTypeSG.java (original)
+++ webservices/jaxme/branches/MAVEN/projects/jm/src/main/java/org/apache/ws/jaxme/generator/sg/AtomicTypeSG.java Fri Aug 19 14:10:00 2005
@@ -56,4 +56,8 @@
    * is not set.</p>
    */
   public Long getTotalDigits();
+    /** Returns the values of the "pattern" facets. Null,
+     * if the facet is not set.
+     */
+  	public String[] getPatterns();
 }

Modified: webservices/jaxme/branches/MAVEN/projects/jm/src/main/java/org/apache/ws/jaxme/generator/sg/SchemaSG.java
URL: http://svn.apache.org/viewcvs/webservices/jaxme/branches/MAVEN/projects/jm/src/main/java/org/apache/ws/jaxme/generator/sg/SchemaSG.java?rev=233557&r1=233556&r2=233557&view=diff
==============================================================================
--- webservices/jaxme/branches/MAVEN/projects/jm/src/main/java/org/apache/ws/jaxme/generator/sg/SchemaSG.java (original)
+++ webservices/jaxme/branches/MAVEN/projects/jm/src/main/java/org/apache/ws/jaxme/generator/sg/SchemaSG.java Fri Aug 19 14:10:00 2005
@@ -16,7 +16,7 @@
  */
 package org.apache.ws.jaxme.generator.sg;
 
-import java.util.List;
+import java.util.Map;
 
 import org.apache.ws.jaxme.js.JavaSourceFactory;
 import org.apache.ws.jaxme.xs.jaxb.JAXBJavaType;
@@ -26,6 +26,7 @@
 import org.apache.ws.jaxme.generator.sg.SGItem;
 import org.apache.ws.jaxme.generator.sg.TypeSG;
 import org.w3c.dom.Document;
+import org.w3c.dom.Element;
 import org.xml.sax.SAXException;
 
 
@@ -129,14 +130,32 @@
    */
   public XsQName[] getTypesafeEnumBase();
 
-  /** <p>Generates the "Configuration.xml" file as a DOM node. Event
-   * handlers may modify the DOM node.</p>
-   * @param pPackageName The package, for which a configuration is being generated.
-   * @param pContextList A list of objects generated in the package.
-   */
-  public Document getConfigFile(String pPackageName, List pContextList) throws SAXException;
-
-  /** <p>Creates the "jaxb.properties" file.</p>
-   */
-  public void generateJaxbProperties() throws SAXException;
+    /** <p>Creates the "jaxb.properties" file.</p>
+     */
+  	public void generateJaxbProperties() throws SAXException;
+
+    /** Generates the "Configuration.xml" files.
+     */
+    public void generateConfigFiles() throws SAXException;
+    /** Called by {@link #generateConfigFiles()} to generate the
+     * config files.
+     * @return A map of config files. The map keys are the package
+     * names. The map values are instances of {@link org.w3c.dom.Document}
+     * with the config file contents.
+     */
+    public Map getConfigFiles() throws SAXException;
+    /** Called by {@link #generateConfigFiles()} for actually
+     * creating the config files.
+     * @param pPackageName A package name, which has been returned
+     * by {@link #getConfigFiles()} as a map key.
+     * @param pDoc A document, which has been returned by
+     * {@link #getConfigFiles()} as the package names value.
+     */
+    public void generateConfigFile(String pPackageName, Document pDoc) throws SAXException;
+    /** Called for customizing an elements manager.
+     */
+    public void createConfigFile(ObjectSG pElement, Element pManager);
+    /** Called for customizing a types manager.
+     */
+	public void createConfigFile(TypeSG pType, Element pManager);
 }

Modified: webservices/jaxme/branches/MAVEN/projects/jm/src/main/java/org/apache/ws/jaxme/generator/sg/SimpleTypeSG.java
URL: http://svn.apache.org/viewcvs/webservices/jaxme/branches/MAVEN/projects/jm/src/main/java/org/apache/ws/jaxme/generator/sg/SimpleTypeSG.java?rev=233557&r1=233556&r2=233557&view=diff
==============================================================================
--- webservices/jaxme/branches/MAVEN/projects/jm/src/main/java/org/apache/ws/jaxme/generator/sg/SimpleTypeSG.java (original)
+++ webservices/jaxme/branches/MAVEN/projects/jm/src/main/java/org/apache/ws/jaxme/generator/sg/SimpleTypeSG.java Fri Aug 19 14:10:00 2005
@@ -156,6 +156,11 @@
    */
   public void addValidation(JavaMethod pMethod, DirectAccessible pValue) throws SAXException;
 
+  	/** Adds code for validating the value <code>pValue</code> within the
+  	 * handler.
+  	 */
+	public void addHandlerValidation(JavaMethod pJm, TypedValue pValue) throws SAXException;
+
 	/** Returns, whether the simple type is an instance of
 	 * <code>xs:id</code>.
 	 */

Modified: webservices/jaxme/branches/MAVEN/projects/jm/src/main/java/org/apache/ws/jaxme/generator/sg/impl/AtomicTypeSGImpl.java
URL: http://svn.apache.org/viewcvs/webservices/jaxme/branches/MAVEN/projects/jm/src/main/java/org/apache/ws/jaxme/generator/sg/impl/AtomicTypeSGImpl.java?rev=233557&r1=233556&r2=233557&view=diff
==============================================================================
--- webservices/jaxme/branches/MAVEN/projects/jm/src/main/java/org/apache/ws/jaxme/generator/sg/impl/AtomicTypeSGImpl.java (original)
+++ webservices/jaxme/branches/MAVEN/projects/jm/src/main/java/org/apache/ws/jaxme/generator/sg/impl/AtomicTypeSGImpl.java Fri Aug 19 14:10:00 2005
@@ -23,30 +23,34 @@
  * @author <a href="mailto:joe@ispsoft.de">Jochen Wiedmann</a>
  */
 public class AtomicTypeSGImpl implements AtomicTypeSG {
-  private final String maxExclusive, maxInclusive;
-  private final String minExclusive, minInclusive;
-  private final Long fractionDigits, totalDigits;
-  private final Long length, maxLength, minLength;
+	private final String maxExclusive, maxInclusive;
+	private final String minExclusive, minInclusive;
+	private final Long fractionDigits, totalDigits;
+	private final Long length, maxLength, minLength;
+	private final String[] patterns;
 
-  public AtomicTypeSGImpl(XSAtomicType xsAtomicType) {
-    maxExclusive = xsAtomicType.getMaxExclusive();
-    maxInclusive = xsAtomicType.getMaxInclusive();
-    minExclusive = xsAtomicType.getMinExclusive();
-    minInclusive = xsAtomicType.getMinInclusive();
-    fractionDigits = xsAtomicType.getFractionDigits();
-    totalDigits = xsAtomicType.getTotalDigits();
-    length = xsAtomicType.getLength();
-    maxLength = xsAtomicType.getMaxLength();
-    minLength = xsAtomicType.getMinLength();
-  }
+	public AtomicTypeSGImpl(XSAtomicType xsAtomicType) {
+		maxExclusive = xsAtomicType.getMaxExclusive();
+		maxInclusive = xsAtomicType.getMaxInclusive();
+		minExclusive = xsAtomicType.getMinExclusive();
+		minInclusive = xsAtomicType.getMinInclusive();
+		fractionDigits = xsAtomicType.getFractionDigits();
+		totalDigits = xsAtomicType.getTotalDigits();
+		length = xsAtomicType.getLength();
+		maxLength = xsAtomicType.getMaxLength();
+		minLength = xsAtomicType.getMinLength();
+		String[] myPatterns = xsAtomicType.getPatterns();
+		patterns = (myPatterns == null  ||  myPatterns.length == 0) ? null : myPatterns;
+	}
 
-  public String getMaxExclusive() { return maxExclusive; }
-  public String getMaxInclusive() { return maxInclusive; }
-  public String getMinExclusive() { return minExclusive; }
-  public String getMinInclusive() { return minInclusive; }
-  public Long getFractionDigits() { return fractionDigits; }
-  public Long getTotalDigits() { return totalDigits; }
-  public Long getLength() { return length; }
-  public Long getMaxLength() { return maxLength; }
-  public Long getMinLength() { return minLength; }
+	public String getMaxExclusive() { return maxExclusive; }
+	public String getMaxInclusive() { return maxInclusive; }
+	public String getMinExclusive() { return minExclusive; }
+	public String getMinInclusive() { return minInclusive; }
+	public Long getFractionDigits() { return fractionDigits; }
+	public Long getTotalDigits() { return totalDigits; }
+	public Long getLength() { return length; }
+	public Long getMaxLength() { return maxLength; }
+	public Long getMinLength() { return minLength; }
+	public String[] getPatterns() { return patterns; }
 }

Modified: webservices/jaxme/branches/MAVEN/projects/jm/src/main/java/org/apache/ws/jaxme/generator/sg/impl/JAXBSchemaSG.java
URL: http://svn.apache.org/viewcvs/webservices/jaxme/branches/MAVEN/projects/jm/src/main/java/org/apache/ws/jaxme/generator/sg/impl/JAXBSchemaSG.java?rev=233557&r1=233556&r2=233557&view=diff
==============================================================================
--- webservices/jaxme/branches/MAVEN/projects/jm/src/main/java/org/apache/ws/jaxme/generator/sg/impl/JAXBSchemaSG.java (original)
+++ webservices/jaxme/branches/MAVEN/projects/jm/src/main/java/org/apache/ws/jaxme/generator/sg/impl/JAXBSchemaSG.java Fri Aug 19 14:10:00 2005
@@ -28,7 +28,6 @@
 import javax.xml.XMLConstants;
 import javax.xml.bind.JAXBContext;
 import javax.xml.bind.JAXBException;
-import javax.xml.parsers.DocumentBuilder;
 import javax.xml.parsers.DocumentBuilderFactory;
 import javax.xml.parsers.ParserConfigurationException;
 
@@ -233,6 +232,7 @@
       objects[i].generate();
     }
 
+    pController.generateConfigFiles();
     pController.generateJaxbProperties();
   }
 
@@ -422,82 +422,6 @@
 	  }
   }
 
-  public Document getConfigFile(SchemaSG pController, String pPackageName, List pContextList)
-      throws SAXException {
-    final DocumentBuilderFactory dbf = DocumentBuilderFactory.newInstance();
-    dbf.setNamespaceAware(true);
-    dbf.setValidating(false);
-    final DocumentBuilder db;
-    try {
-      db = dbf.newDocumentBuilder();
-    } catch (ParserConfigurationException e) {
-      throw new SAXException("Failed to create a DocumentBuilder: " + e.getMessage(), e);
-    }
-    final Document doc = db.newDocument();
-    final String uri = JAXBContextImpl.CONFIGURATION_URI;
-    final Element root = doc.createElementNS(uri, "Configuration");
-    root.setAttributeNS(XMLConstants.XMLNS_ATTRIBUTE_NS_URI, "xmlns", uri);
-    doc.appendChild(root);
-
-    AttributeIdGenerator attrIdGen = new AttributeIdGenerator(pController.getJavaSourceFactory());
-    new SchemaWalker(attrIdGen).walk(pController);
-
-    for (Iterator iter = pContextList.iterator();  iter.hasNext();  ) {
-      Object o = iter.next();
-      Context ctx, typeCtx;
-      if (o instanceof ObjectSG) {
-		  ObjectSG oSG = (ObjectSG) o;
-		  ctx = oSG.getClassContext();
-		  typeCtx = oSG.getTypeSG().getComplexTypeSG().getClassContext();
-      } else {
-		  TypeSG tSG = (TypeSG) o;
-		  ctx = typeCtx = tSG.getComplexTypeSG().getClassContext();
-      }
-
-      String packageName = ctx.getXMLInterfaceName().getPackageName();
-      if (packageName == null) {
-        packageName = "";
-      }
-      if (!packageName.equals(pPackageName)) {
-        continue;
-      }
-
-      JavaQName implQName = ctx.getXMLImplementationName();
-      JavaQName jmSaxDriverControllerClass = attrIdGen.getJMSAXDriverControllerClass(implQName.getPackageName());
-
-      Element manager = doc.createElementNS(uri, "Manager");
-      root.appendChild(manager);
-      manager.setAttributeNS(null, "elementInterface", ctx.getXMLInterfaceName().toString());
-      manager.setAttributeNS(null, "elementClass", implQName.toString());
-      manager.setAttributeNS(null, "handlerClass", typeCtx.getXMLHandlerName().toString());
-      manager.setAttributeNS(null, "driverClass", typeCtx.getXMLSerializerName().toString());
-      manager.setAttributeNS(null, "driverControllerClass", jmSaxDriverControllerClass.toString());
-      manager.setAttributeNS(null, "validatorClass", ctx.getXMLValidatorName().toString());
-      if (o instanceof ObjectSG) {
-		  XsQName name = ((ObjectSG) o).getName();
-		  manager.setAttributeNS(null, "qName", name.toString());
-		  if (name.getPrefix() != null) {
-			  manager.setAttributeNS(null, "prefix", name.getPrefix());
-		  }
-      }
-    }
-    return doc;
-  }
-
-  protected String generateConfigFile(SchemaSG pController, String pPackageName, List pContextList) throws SAXException {
-    Document doc = pController.getConfigFile(pPackageName, pContextList);
-    StringWriter sw = new StringWriter();
-    XMLWriter xw = new XMLWriterImpl();
-    try {
-      xw.setWriter(sw);
-    } catch (JAXBException e) {
-      throw new SAXException(e);
-    }
-    DOMSerializer ds = new DOMSerializer();
-    ds.serialize(doc, xw);
-    return sw.toString();
-  }
-
   public void generateJaxbProperties(SchemaSG pController) throws SAXException {
     List contextList = new ArrayList();
     ObjectSG[] elements = pController.getElements();
@@ -532,10 +456,6 @@
       textFile.addLine(JAXBContext.JAXB_CONTEXT_FACTORY + "=" + JAXBContextImpl.class.getName());
       packages.add(packageName);
 
-      String configFile = generateConfigFile(pController, packageName, contextList);
-      TextFile confFile = pController.getJavaSourceFactory().newTextFile(packageName, "Configuration.xml");
-      confFile.setContents(configFile);
-
       getObjectFactory(pController, packageName, contextList);
     }
   }
@@ -685,5 +605,115 @@
 		createMethod.addLine("return (", resultName, ") newInstance(", resultName, ".class);");
 	}
 	return result;
+  }
+
+  private class ConfigFileGenerator extends SchemaVisitorImpl {
+	private final AttributeIdGenerator attrIdGen;
+	private final Map packages = new HashMap();
+	private final SchemaSG controller;
+	ConfigFileGenerator(SchemaSG pController) throws SAXException {
+		attrIdGen = new AttributeIdGenerator(pController.getJavaSourceFactory());
+		new SchemaWalker(attrIdGen).walk(pController);
+		controller = pController;
+	}
+	public void visit(ObjectSG pElement) throws SAXException {
+		if (pElement.isGlobal()  &&  pElement.getTypeSG().isComplex()) {
+			Context ctx = pElement.getClassContext();
+			Document doc = getDocument(ctx);
+			Context typeCtx = pElement.getTypeSG().getComplexTypeSG().getClassContext();
+			Element manager = generate(doc, ctx, typeCtx);
+			XsQName name = pElement.getName();
+			manager.setAttributeNS(null, "qName", name.toString());
+			if (name.getPrefix() != null) {
+				manager.setAttributeNS(null, "prefix", name.getPrefix());
+			}
+			controller.createConfigFile(pElement, manager);
+		}
+	}
+
+	public void visit(TypeSG pType) throws SAXException {
+		if (pType.isGlobalType()  &&  pType.isComplex()) {
+			Context ctx = pType.getComplexTypeSG().getClassContext();
+			Document doc = getDocument(ctx);
+			Element manager = generate(doc, ctx, ctx);
+			controller.createConfigFile(pType, manager);
+		}
+	}
+
+	private Element generate(Document pDoc, Context pContext, Context pTypeContext) throws SAXException {
+		JavaQName implQName = pContext.getXMLImplementationName();
+		JavaQName jmSaxDriverControllerClass = attrIdGen.getJMSAXDriverControllerClass(implQName.getPackageName());
+		Element manager = pDoc.createElementNS(JAXBContextImpl.CONFIGURATION_URI, "Manager");
+		pDoc.getDocumentElement().appendChild(manager);
+		manager.setAttributeNS(null, "elementInterface", pContext.getXMLInterfaceName().toString());
+		manager.setAttributeNS(null, "elementClass", implQName.toString());
+		manager.setAttributeNS(null, "handlerClass", pTypeContext.getXMLHandlerName().toString());
+		manager.setAttributeNS(null, "driverClass", pTypeContext.getXMLSerializerName().toString());
+		manager.setAttributeNS(null, "driverControllerClass", jmSaxDriverControllerClass.toString());
+		manager.setAttributeNS(null, "validatorClass", pContext.getXMLValidatorName().toString());
+		return manager;
+	}
+
+	private Document getDocument(Context ctx) throws SAXException {
+		String packageName = ctx.getXMLInterfaceName().getPackageName();
+		if (packageName == null) {
+			packageName = "";
+		}
+		Document doc = (Document) packages.get(packageName);
+		if (doc == null) {
+			try {
+				DocumentBuilderFactory dbf = DocumentBuilderFactory.newInstance();
+				dbf.setNamespaceAware(true);
+				dbf.setValidating(false);
+				doc = dbf.newDocumentBuilder().newDocument();
+			} catch (ParserConfigurationException e) {
+				throw new SAXException(e);
+			}
+			packages.put(packageName, doc);
+		    final Element root = doc.createElementNS(JAXBContextImpl.CONFIGURATION_URI, "Configuration");
+		    root.setAttributeNS(XMLConstants.XMLNS_ATTRIBUTE_NS_URI, "xmlns", JAXBContextImpl.CONFIGURATION_URI);
+		    doc.appendChild(root);
+		}
+		return doc;
+	}
+	Map getPackages() { return packages; }
+  }
+
+  public void generateConfigFiles(SchemaSG pController) throws SAXException {
+	  Map map = pController.getConfigFiles();
+	  for (Iterator iter = map.entrySet().iterator();  iter.hasNext();  ) {
+		  Map.Entry entry = (Map.Entry) iter.next();
+		  String packageName = (String) entry.getKey();
+		  Document doc = (Document) entry.getValue();
+		  pController.generateConfigFile(packageName, doc);
+	  }
+  }
+  
+  public Map getConfigFiles(SchemaSG pController) throws SAXException {
+	  ConfigFileGenerator gen = new ConfigFileGenerator(pController);
+	  new SchemaWalker(gen).walk(pController);
+	  return gen.getPackages();
+  }
+  
+  public void generateConfigFile(SchemaSG pController, String pPackageName, Document pDoc) throws SAXException {
+	  StringWriter sw = new StringWriter();
+	  XMLWriter xw = new XMLWriterImpl();
+	  try {
+	      xw.setWriter(sw);
+	  } catch (JAXBException e) {
+		  throw new SAXException(e);
+	  }
+	  DOMSerializer ds = new DOMSerializer();
+	  ds.serialize(pDoc, xw);
+      TextFile confFile = pController.getJavaSourceFactory().newTextFile(pPackageName, "Configuration.xml");
+      confFile.setContents(sw.toString());
+  }
+
+  public void createConfigFile(SchemaSG pController, ObjectSG pElement, Element pManager) {
+	// Does nothing, for overwriting by subclasses only
+  }
+
+  public void createConfigFile(SchemaSG pController, TypeSG pType, Element pManager) {
+	// Does nothing, for overwriting by subclasses only
   }
 }

Modified: webservices/jaxme/branches/MAVEN/projects/jm/src/main/java/org/apache/ws/jaxme/generator/sg/impl/JaxMeSchemaReader.java
URL: http://svn.apache.org/viewcvs/webservices/jaxme/branches/MAVEN/projects/jm/src/main/java/org/apache/ws/jaxme/generator/sg/impl/JaxMeSchemaReader.java?rev=233557&r1=233556&r2=233557&view=diff
==============================================================================
--- webservices/jaxme/branches/MAVEN/projects/jm/src/main/java/org/apache/ws/jaxme/generator/sg/impl/JaxMeSchemaReader.java (original)
+++ webservices/jaxme/branches/MAVEN/projects/jm/src/main/java/org/apache/ws/jaxme/generator/sg/impl/JaxMeSchemaReader.java Fri Aug 19 14:10:00 2005
@@ -41,11 +41,17 @@
  * @author <a href="mailto:joe@ispsoft.de">Jochen Wiedmann</a>
  */
 public class JaxMeSchemaReader extends JAXBSchemaReader {
-    public static final String JAXME_SCHEMA_URI = "http://ws.apache.org/jaxme/namespaces/jaxme2";
+	/** The namespace URI of JaxMe vendor extensions for JAXB.
+	 */
+	public static final String JAXME_SCHEMA_URI = "http://ws.apache.org/jaxme/namespaces/jaxme2";
+	/** The namespace URI of the JAXB RI's vendor extensions for JAXB.
+	 */
     public static final String XJC_SCHEMA_URI = "http://java.sun.com/xml/ns/jaxb/xjc";
     private XjcSerializable xjcSerializable;
     private List xsObjectCreators = new ArrayList();
 
+    /** Creates a new instance.
+     */
     public JaxMeSchemaReader() {
         setSupportingExtensions(true);
     }
@@ -69,6 +75,9 @@
         return (XsObjectCreator[]) myXsObjectCreators.toArray(new XsObjectCreator[myXsObjectCreators.size()]);
     }
 
+    /** An extension of JAXBAppInfoImpl with support for
+     * <code>xjc:serializable</code>.
+     */
     public class JaxMeAppinfoImpl extends JAXBAppinfoImpl {
         JaxMeAppinfoImpl(XsObject pParent) {
             super(pParent);
@@ -79,6 +88,10 @@
         }
     }
 
+    /** An extension of
+     * {@link org.apache.ws.jaxme.xs.jaxb.impl.JAXBGlobalBindingsImpl}
+     * with support for <code>xjc:serializable</code>.
+     */
     public class JaxMeGlobalBindingsImpl extends JAXBGlobalBindingsImpl {
         protected JaxMeGlobalBindingsImpl(XsObject pParent) {
             super(pParent);
@@ -88,7 +101,6 @@
             return append(super.getXsObjectCreators());
         }
 
-
         protected XsObject getBeanByParent(XsObject pParent, Locator pLocator, XsQName pQName)
         		throws SAXException {
             if (XJC_SCHEMA_URI.equals(pQName.getNamespaceURI())) {
@@ -105,6 +117,9 @@
         }
     }
 
+    /** An extension of {@link JAXBXsObjectFactoryImpl} with support
+     * for {@link JaxMeGlobalBindingsImpl} and {@link JaxMeAppinfoImpl}.
+     */
     public class JaxMeXsObjectFactory extends JAXBXsObjectFactoryImpl {
         public XsEAppinfo newXsEAppinfo(XsObject pParent) {
             return new JaxMeAppinfoImpl(pParent);

Modified: webservices/jaxme/branches/MAVEN/projects/jm/src/main/java/org/apache/ws/jaxme/generator/sg/impl/ccsg/HandlerSGImpl.java
URL: http://svn.apache.org/viewcvs/webservices/jaxme/branches/MAVEN/projects/jm/src/main/java/org/apache/ws/jaxme/generator/sg/impl/ccsg/HandlerSGImpl.java?rev=233557&r1=233556&r2=233557&view=diff
==============================================================================
--- webservices/jaxme/branches/MAVEN/projects/jm/src/main/java/org/apache/ws/jaxme/generator/sg/impl/ccsg/HandlerSGImpl.java (original)
+++ webservices/jaxme/branches/MAVEN/projects/jm/src/main/java/org/apache/ws/jaxme/generator/sg/impl/ccsg/HandlerSGImpl.java Fri Aug 19 14:10:00 2005
@@ -39,7 +39,6 @@
 import org.apache.ws.jaxme.js.Parameter;
 import org.apache.ws.jaxme.js.TypedValue;
 import org.apache.ws.jaxme.js.impl.TypedValueImpl;
-import org.apache.ws.jaxme.xs.xml.XsQName;
 import org.xml.sax.Attributes;
 import org.xml.sax.Locator;
 import org.xml.sax.SAXException;
@@ -286,14 +285,17 @@
 			pJm.addTry();
 		}
 		Object s = new Object[]{"(", StringSG.STRING_TYPE, ") ", pValue};
+		pType.getSimpleTypeSG().addHandlerValidation(pJm, pValue);
 		TypedValue result = new TypedValueImpl(pType.getSimpleTypeSG().getCastFromString(pJm, s, "getHandler()"),
 							   				   pType.getSimpleTypeSG().getRuntimeType());
 		pPropertySG.addValue(pJm, pElement, result, null);
 		if (causingParseConversionEvent) {
 			DirectAccessible e = pJm.addCatch(Exception.class);
 			pJm.addLine("getHandler().parseConversionEvent(",
-						JavaSource.getQuoted("Failed to convert value of " + pName + ": "),
-						" + ", pValue, ", ", e, ");");
+						JavaSource.getQuoted("Failed to convert value "),
+						" + ", pValue, " + ",
+						JavaSource.getQuoted(" for " +  pName + ": "),
+						" + ", e, ".getMessage(), ", e, ");");
 			pJm.addEndTry();
 		}
 	}

Modified: webservices/jaxme/branches/MAVEN/projects/jm/src/main/java/org/apache/ws/jaxme/generator/types/ListTypeSGImpl.java
URL: http://svn.apache.org/viewcvs/webservices/jaxme/branches/MAVEN/projects/jm/src/main/java/org/apache/ws/jaxme/generator/types/ListTypeSGImpl.java?rev=233557&r1=233556&r2=233557&view=diff
==============================================================================
--- webservices/jaxme/branches/MAVEN/projects/jm/src/main/java/org/apache/ws/jaxme/generator/types/ListTypeSGImpl.java (original)
+++ webservices/jaxme/branches/MAVEN/projects/jm/src/main/java/org/apache/ws/jaxme/generator/types/ListTypeSGImpl.java Fri Aug 19 14:10:00 2005
@@ -198,4 +198,8 @@
     public boolean isCausingParseConversionEvent(SimpleTypeSG pController) {
 		return itemType.getSimpleTypeSG().isCausingParseConversionEvent();
 	}
+
+	public void addHandlerValidation(SimpleTypeSG pController, JavaMethod pJm, TypedValue pValue) throws SAXException {
+		itemType.getSimpleTypeSG().addHandlerValidation(pJm, pValue);
+	}
 }

Modified: webservices/jaxme/branches/MAVEN/projects/jm/src/main/java/org/apache/ws/jaxme/generator/types/SimpleTypeSGImpl.java
URL: http://svn.apache.org/viewcvs/webservices/jaxme/branches/MAVEN/projects/jm/src/main/java/org/apache/ws/jaxme/generator/types/SimpleTypeSGImpl.java?rev=233557&r1=233556&r2=233557&view=diff
==============================================================================
--- webservices/jaxme/branches/MAVEN/projects/jm/src/main/java/org/apache/ws/jaxme/generator/types/SimpleTypeSGImpl.java (original)
+++ webservices/jaxme/branches/MAVEN/projects/jm/src/main/java/org/apache/ws/jaxme/generator/types/SimpleTypeSGImpl.java Fri Aug 19 14:10:00 2005
@@ -29,6 +29,7 @@
 import org.apache.ws.jaxme.js.JavaMethod;
 import org.apache.ws.jaxme.js.JavaQNameImpl;
 import org.apache.ws.jaxme.js.JavaSource;
+import org.apache.ws.jaxme.js.TypedValue;
 import org.apache.ws.jaxme.xs.XSType;
 import org.xml.sax.Locator;
 import org.xml.sax.SAXException;
@@ -128,4 +129,8 @@
 
   public void addValidation(SimpleTypeSG pController, JavaMethod pMethod, DirectAccessible pValue) throws SAXException {
   }
+
+	public void addHandlerValidation(SimpleTypeSG pController, JavaMethod pJm, TypedValue pValue)
+			throws SAXException {
+	}
 }

Modified: webservices/jaxme/branches/MAVEN/projects/jm/src/main/java/org/apache/ws/jaxme/generator/types/StringSG.java
URL: http://svn.apache.org/viewcvs/webservices/jaxme/branches/MAVEN/projects/jm/src/main/java/org/apache/ws/jaxme/generator/types/StringSG.java?rev=233557&r1=233556&r2=233557&view=diff
==============================================================================
--- webservices/jaxme/branches/MAVEN/projects/jm/src/main/java/org/apache/ws/jaxme/generator/types/StringSG.java (original)
+++ webservices/jaxme/branches/MAVEN/projects/jm/src/main/java/org/apache/ws/jaxme/generator/types/StringSG.java Fri Aug 19 14:10:00 2005
@@ -21,7 +21,10 @@
 import org.apache.ws.jaxme.generator.sg.SGlet;
 import org.apache.ws.jaxme.generator.sg.SchemaSG;
 import org.apache.ws.jaxme.generator.sg.SimpleTypeSG;
+import org.apache.ws.jaxme.impl.REFactory;
+import org.apache.ws.jaxme.impl.REHandler;
 import org.apache.ws.jaxme.js.DirectAccessible;
+import org.apache.ws.jaxme.js.JavaField;
 import org.apache.ws.jaxme.js.JavaMethod;
 import org.apache.ws.jaxme.js.JavaQName;
 import org.apache.ws.jaxme.js.JavaQNameImpl;
@@ -83,7 +86,36 @@
 		 */
 		return atomicType.getLength() != null
 		   ||  atomicType.getMinLength() != null
-		   ||  atomicType.getMaxLength() != null;
+		   ||  atomicType.getMaxLength() != null
+		   ||  atomicType.getPatterns() != null;
+  	}
+
+	public void addHandlerValidation(SimpleTypeSG pController, JavaMethod pJm, TypedValue pValue)
+			throws SAXException {
+  		String[] patterns = pController.getAtomicType().getPatterns();
+  		if (patterns == null) {
+  			return;
+  		}
+  		JavaSource js = pJm.getJavaSource();
+  		int i = 0;
+  		for (;;) {
+  			String name = "_re_" + i;
+  			JavaField jf = js.getField(name);
+  			if (jf == null) {
+  				break;
+  			}
+  		}
+  		for (int j = 0;  j < patterns.length;  j++) {
+  			String name = "_re_" + i++;
+  			JavaField jf = js.newJavaField(name, REHandler.Matcher.class);
+  			jf.addLine(REFactory.class, ".getREHandler().getMatcher(",
+  					   JavaSource.getQuoted(patterns[j]), ")");
+  			pJm.addIf("!", jf, ".matches(", pValue, ")");
+  			pJm.addThrowNew(IllegalArgumentException.class,
+  							JavaSource.getQuoted("Value doesn't match pattern "),
+  								" + ", jf, ".getPattern()");
+  			pJm.addEndIf();
+  		}
   	}
 
     public void addValidation(SimpleTypeSG pController, JavaMethod pMethod, DirectAccessible pValue)

Modified: webservices/jaxme/branches/MAVEN/projects/jm/src/main/java/org/apache/ws/jaxme/impl/PassThroughXMLWriter.java
URL: http://svn.apache.org/viewcvs/webservices/jaxme/branches/MAVEN/projects/jm/src/main/java/org/apache/ws/jaxme/impl/PassThroughXMLWriter.java?rev=233557&r1=233556&r2=233557&view=diff
==============================================================================
--- webservices/jaxme/branches/MAVEN/projects/jm/src/main/java/org/apache/ws/jaxme/impl/PassThroughXMLWriter.java (original)
+++ webservices/jaxme/branches/MAVEN/projects/jm/src/main/java/org/apache/ws/jaxme/impl/PassThroughXMLWriter.java Fri Aug 19 14:10:00 2005
@@ -12,7 +12,6 @@
  * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
  * See the License for the specific language governing permissions and
  * limitations under the License.
-
  */
 package org.apache.ws.jaxme.impl;
 

Modified: webservices/jaxme/branches/MAVEN/projects/jm/src/test/java/org/apache/ws/jaxme/junit/BaseTestCase.java
URL: http://svn.apache.org/viewcvs/webservices/jaxme/branches/MAVEN/projects/jm/src/test/java/org/apache/ws/jaxme/junit/BaseTestCase.java?rev=233557&r1=233556&r2=233557&view=diff
==============================================================================
--- webservices/jaxme/branches/MAVEN/projects/jm/src/test/java/org/apache/ws/jaxme/junit/BaseTestCase.java (original)
+++ webservices/jaxme/branches/MAVEN/projects/jm/src/test/java/org/apache/ws/jaxme/junit/BaseTestCase.java Fri Aug 19 14:10:00 2005
@@ -23,13 +23,16 @@
 import javax.xml.bind.JAXBException;
 import javax.xml.bind.Marshaller;
 import javax.xml.bind.Unmarshaller;
+import javax.xml.bind.ValidationEvent;
+import javax.xml.bind.ValidationEventHandler;
+
+import junit.framework.TestCase;
 
 import org.apache.ws.jaxme.JMElement;
 import org.apache.ws.jaxme.impl.JMMarshallerImpl;
+import org.apache.ws.jaxme.impl.ValidationEventImpl;
 import org.xml.sax.InputSource;
 
-import junit.framework.TestCase;
-
 
 /** <p>A base class for JUnit tests.</p>
  *
@@ -37,6 +40,18 @@
  * @version $Id$
  */
 public abstract class BaseTestCase extends TestCase {
+	protected static class EventDetector implements ValidationEventHandler {
+		private ValidationEvent event;
+		public boolean handleEvent(ValidationEvent pEvent) {
+			if (event == null) {
+				event = pEvent;
+			}
+			return true;
+		}
+		boolean isSuccess() { return event == null; }
+		ValidationEventImpl getEvent() { return (ValidationEventImpl) event; }
+	}
+
     protected BaseTestCase() {
     }
 

Modified: webservices/jaxme/branches/MAVEN/projects/jm/src/test/java/org/apache/ws/jaxme/junit/JiraTest.java
URL: http://svn.apache.org/viewcvs/webservices/jaxme/branches/MAVEN/projects/jm/src/test/java/org/apache/ws/jaxme/junit/JiraTest.java?rev=233557&r1=233556&r2=233557&view=diff
==============================================================================
--- webservices/jaxme/branches/MAVEN/projects/jm/src/test/java/org/apache/ws/jaxme/junit/JiraTest.java (original)
+++ webservices/jaxme/branches/MAVEN/projects/jm/src/test/java/org/apache/ws/jaxme/junit/JiraTest.java Fri Aug 19 14:10:00 2005
@@ -7,8 +7,6 @@
 import javax.xml.bind.JAXBContext;
 import javax.xml.bind.JAXBException;
 import javax.xml.bind.Unmarshaller;
-import javax.xml.bind.ValidationEvent;
-import javax.xml.bind.ValidationEventHandler;
 
 import magoffin.matt.ieat.domain.impl.IngredientImpl;
 import net.dspc.commons.activitymodel.TransmissionData;
@@ -23,7 +21,6 @@
 import org.apache.ws.jaxme.generator.sg.SchemaSG;
 import org.apache.ws.jaxme.generator.sg.impl.JAXBSchemaReader;
 import org.apache.ws.jaxme.generator.util.JavaNamer;
-import org.apache.ws.jaxme.impl.ValidationEventImpl;
 import org.apache.ws.jaxme.test.jira.jaxme58.AuthorType;
 import org.apache.ws.jaxme.test.jira.jaxme58.BookType;
 import org.apache.ws.jaxme.test.jira.jaxme58.Booklist;
@@ -178,18 +175,6 @@
 			runFacetTest(i, "c", i == 4);
 		}
 	}
-
-	private static class EventDetector implements ValidationEventHandler {
-		private ValidationEvent event;
-		public boolean handleEvent(ValidationEvent pEvent) {
-			if (event == null) {
-				event = pEvent;
-			}
-			return true;
-		}
-		boolean isSuccess() { return event == null; }
-		ValidationEventImpl getEvent() { return (ValidationEventImpl) event; }
-	};
 
 	private void runFacetTest(int i, String pAttrName, boolean pSuccess) throws JAXBException {
 		JAXBContext ctx = super.getJAXBContext(Jira62.class);

Modified: webservices/jaxme/branches/MAVEN/projects/jm/src/test/java/org/apache/ws/jaxme/junit/MarshallerTest.java
URL: http://svn.apache.org/viewcvs/webservices/jaxme/branches/MAVEN/projects/jm/src/test/java/org/apache/ws/jaxme/junit/MarshallerTest.java?rev=233557&r1=233556&r2=233557&view=diff
==============================================================================
--- webservices/jaxme/branches/MAVEN/projects/jm/src/test/java/org/apache/ws/jaxme/junit/MarshallerTest.java (original)
+++ webservices/jaxme/branches/MAVEN/projects/jm/src/test/java/org/apache/ws/jaxme/junit/MarshallerTest.java Fri Aug 19 14:10:00 2005
@@ -44,6 +44,7 @@
 import org.apache.ws.jaxme.impl.DatatypeConverterImpl;
 import org.apache.ws.jaxme.impl.JAXBContextImpl;
 import org.apache.ws.jaxme.impl.JMMarshallerImpl;
+import org.apache.ws.jaxme.impl.REFactory;
 import org.apache.ws.jaxme.test.misc.address.Address;
 import org.apache.ws.jaxme.test.misc.address.AddressType;
 import org.apache.ws.jaxme.test.misc.types.AllElement;
@@ -52,6 +53,7 @@
 import org.apache.ws.jaxme.test.misc.types.Author;
 import org.apache.ws.jaxme.test.misc.types.Html;
 import org.apache.ws.jaxme.test.misc.types.ObjectFactory;
+import org.apache.ws.jaxme.test.misc.types.Patterns;
 import org.apache.ws.jaxme.test.misc.types.impl.AllElementImpl;
 import org.apache.ws.jaxme.test.misc.types.impl.AllSimpleTypesImpl;
 import org.apache.ws.jaxme.test.misc.types.impl.AllTypesElementImpl;
@@ -638,5 +640,33 @@
 		m.marshal(htmlElem, sw);
 		String got = sw.toString();
 		assertEquals(html, got);
+	}
+
+	private void testPattern(boolean pSuccess, String pValue) throws Exception {
+		boolean patternTestingAvailable = !(REFactory.getREHandler() instanceof REFactory.DummyREHandler);
+		final String prefix = "<ex:patterns xmlns:ex='http://ws.apache.org/jaxme/test/misc/types' foo='";
+		final String suffix = "'/>";
+		final String xml1 = prefix + pValue + suffix;
+		JAXBContext ctx = getJAXBContext(Patterns.class);
+		Unmarshaller u = ctx.createUnmarshaller();
+		EventDetector ed = new EventDetector();
+		u.setEventHandler(ed);
+		Patterns patterns = (Patterns) u.unmarshal(new InputSource(new StringReader(xml1)));
+		if (pSuccess  ||  !patternTestingAvailable) {
+			assertTrue(ed.isSuccess());
+			assertEquals(pValue, patterns.getFoo());
+		} else {
+			assertTrue(!ed.isSuccess());
+			assertNull(patterns.getFoo());
+		}
+	}
+
+	/** Tests, whether patterns are evaluated while unmarshalling.
+	 */
+	public void testPatterns() throws Exception {
+		testPattern(true, "xY01");
+		testPattern(false, "xY");
+		testPattern(false, "xY0123");
+		testPattern(false, "x012");
 	}
 }

Modified: webservices/jaxme/branches/MAVEN/projects/jm/src/test/resources/types.xsd
URL: http://svn.apache.org/viewcvs/webservices/jaxme/branches/MAVEN/projects/jm/src/test/resources/types.xsd?rev=233557&r1=233556&r2=233557&view=diff
==============================================================================
Binary files - no diff available.

Modified: webservices/jaxme/branches/MAVEN/projects/js/project.xml
URL: http://svn.apache.org/viewcvs/webservices/jaxme/branches/MAVEN/projects/js/project.xml?rev=233557&r1=233556&r2=233557&view=diff
==============================================================================
--- webservices/jaxme/branches/MAVEN/projects/js/project.xml (original)
+++ webservices/jaxme/branches/MAVEN/projects/js/project.xml Fri Aug 19 14:10:00 2005
@@ -18,11 +18,9 @@
 -->
 <project>
     <extend>../../common-build/project.xml</extend>
-    <pomVersion>3</pomVersion>
     <id>jaxme:jaxmejs</id>
     <artifactId>jaxmejs</artifactId>
     <name>JaxMeJS</name>
-    <groupId>jaxme</groupId>
     <package>org.apache.ws.jaxme.js</package>
     <description>This is a framework for generating Java sources. It is based on an abstraction of the Java sources. For instance, there is an object called JavaSource. This object can have embedded instances of JavaMethod or JavaField, it can have inner classes, constructors, and so on. You get the idea. Compared to a basic approach of just using Writer.write(String), the framework has the obvious disadvantage of additional complexity and overhead.</description>
     <contributors>

Modified: webservices/jaxme/branches/MAVEN/projects/pm/project.xml
URL: http://svn.apache.org/viewcvs/webservices/jaxme/branches/MAVEN/projects/pm/project.xml?rev=233557&r1=233556&r2=233557&view=diff
==============================================================================
--- webservices/jaxme/branches/MAVEN/projects/pm/project.xml (original)
+++ webservices/jaxme/branches/MAVEN/projects/pm/project.xml Fri Aug 19 14:10:00 2005
@@ -17,11 +17,9 @@
 	
 -->
 <project>
-    <pomVersion>3</pomVersion>
     <id>jaxme:jaxmepm</id>
     <artifactId>jaxmepm</artifactId>
     <name>JaxMePM</name>
-    <groupId>jaxme</groupId>
     <package>org.apache.ws.jaxme.pm</package>
     <description>JaxMe Persistence Management means the ability to read JaxMe objects from, insert them into, update them in, or delete them from the database. These operations are supported by JaxMe's persistence managers.&#xD;
 &#xD;
@@ -32,6 +30,14 @@
     * Native XML databases via proprietary API's or protocols; currently this only includes Tamino via the InoManager.</description>
     <url>http://ws.apache.org/jaxme/pm/</url>
     <extend>../../common-build/project.xml</extend>
+    <dependencies>
+        <dependency>
+            <groupId>xmldb</groupId>
+            <artifactId>xmldb-api</artifactId>
+            <version>20021118</version>
+            <type>jar</type>
+        </dependency>
+    </dependencies>
     <shortDescription>The JaxMe Persistence Management</shortDescription>
 </project>
 

Modified: webservices/jaxme/branches/MAVEN/projects/pm/src/main/java/org/apache/ws/jaxme/pm/generator/jdbc/JdbcSchemaSG.java
URL: http://svn.apache.org/viewcvs/webservices/jaxme/branches/MAVEN/projects/pm/src/main/java/org/apache/ws/jaxme/pm/generator/jdbc/JdbcSchemaSG.java?rev=233557&r1=233556&r2=233557&view=diff
==============================================================================
--- webservices/jaxme/branches/MAVEN/projects/pm/src/main/java/org/apache/ws/jaxme/pm/generator/jdbc/JdbcSchemaSG.java (original)
+++ webservices/jaxme/branches/MAVEN/projects/pm/src/main/java/org/apache/ws/jaxme/pm/generator/jdbc/JdbcSchemaSG.java Fri Aug 19 14:10:00 2005
@@ -16,9 +16,6 @@
  
 package org.apache.ws.jaxme.pm.generator.jdbc;
 
-import java.util.Iterator;
-import java.util.List;
-
 import org.apache.ws.jaxme.generator.sg.Context;
 import org.apache.ws.jaxme.generator.sg.ObjectSG;
 import org.apache.ws.jaxme.generator.sg.SchemaSG;
@@ -26,10 +23,7 @@
 import org.apache.ws.jaxme.generator.sg.TypeSG;
 import org.apache.ws.jaxme.generator.sg.impl.SchemaSGChainImpl;
 import org.apache.ws.jaxme.impl.JAXBContextImpl;
-import org.w3c.dom.Document;
 import org.w3c.dom.Element;
-import org.w3c.dom.Node;
-import org.xml.sax.SAXException;
 
 /**
  * @author <a href="mailto:joe@ispsoft.de">Jochen Wiedmann</a>
@@ -52,49 +46,32 @@
     return element;
   }
 
-  public Document getConfigFile(SchemaSG pController, String pPackageName, List pContextList)
-      throws SAXException {
-    final String uri = JAXBContextImpl.CONFIGURATION_URI;
-    final Document doc = super.getConfigFile(pController, pPackageName, pContextList);
-    final Element root = doc.getDocumentElement();
-    final Iterator iter = pContextList.iterator();
-    for (Node node = root.getFirstChild();  node != null;  node = node.getNextSibling()) {
-      if (node.getNodeType() == Node.ELEMENT_NODE
-          &&  JAXBContextImpl.CONFIGURATION_URI.equals(node.getNamespaceURI())
-          &&  "Manager".equals(node.getLocalName())) {
-        final ObjectSG objectSG = (ObjectSG) iter.next();
-        final TypeSG typeSG = objectSG.getTypeSG();
-        if (typeSG.isComplex()) {
-          final CustomTableData customTableData = (CustomTableData) typeSG.getProperty(jdbcSG.getKey());
-          if (customTableData != null) {
-            Element manager = (Element) node;
-            final Context ctx = typeSG.getComplexTypeSG().getClassContext();
-            manager.setAttributeNS(uri, "pmClass", ctx.getPMName().toString());
-
-            final TableDetails tableDetails = customTableData.getTableDetails();
-            final String driver = tableDetails.getDriver();
-            if (driver != null) {
-              createProperty(manager, "jdbc.driver", driver);
-            }
-            final String url = tableDetails.getUrl();
-            if (url != null) {
-              createProperty(manager, "jdbc.url", url);
-            }
-            final String user = tableDetails.getUser();
-            if (user != null) {
-              createProperty(manager, "jdbc.user", user);
-            }
-            final String password = tableDetails.getPassword();
-            if (password != null) {
-              createProperty(manager, "jdbc.password", password);
-            }
+  public void createConfigFile(SchemaSG pController, ObjectSG pElement, Element pManager) {
+      final TypeSG typeSG = pElement.getTypeSG();
+      if (typeSG.isComplex()) {
+        final CustomTableData customTableData = (CustomTableData) typeSG.getProperty(jdbcSG.getKey());
+        if (customTableData != null) {
+          final Context ctx = typeSG.getComplexTypeSG().getClassContext();
+          pManager.setAttributeNS(JAXBContextImpl.CONFIGURATION_URI, "pmClass", ctx.getPMName().toString());
+
+          final TableDetails tableDetails = customTableData.getTableDetails();
+          final String driver = tableDetails.getDriver();
+          if (driver != null) {
+            createProperty(pManager, "jdbc.driver", driver);
+          }
+          final String url = tableDetails.getUrl();
+          if (url != null) {
+            createProperty(pManager, "jdbc.url", url);
+          }
+          final String user = tableDetails.getUser();
+          if (user != null) {
+            createProperty(pManager, "jdbc.user", user);
+          }
+          final String password = tableDetails.getPassword();
+          if (password != null) {
+            createProperty(pManager, "jdbc.password", password);
           }
         }
       }
-    }
-    if (iter.hasNext()) {
-      throw new IllegalStateException("More managers expected than found");
-    }
-    return doc;
   }
 }

Modified: webservices/jaxme/branches/MAVEN/projects/xs/project.xml
URL: http://svn.apache.org/viewcvs/webservices/jaxme/branches/MAVEN/projects/xs/project.xml?rev=233557&r1=233556&r2=233557&view=diff
==============================================================================
--- webservices/jaxme/branches/MAVEN/projects/xs/project.xml (original)
+++ webservices/jaxme/branches/MAVEN/projects/xs/project.xml Fri Aug 19 14:10:00 2005
@@ -17,11 +17,9 @@
 	
 -->
 <project>
-    <pomVersion>3</pomVersion>
     <id>jaxmexs:jaxmexs</id>
     <artifactId>jaxmexs</artifactId>
     <name>JaxMeXS</name>
-    <groupId>jaxmexs</groupId>
     <package>org.apache.ws.jaxme.xs</package>
     <description>This is JaxMeXS, a parser for XML schema. Yet another one, to be precise. As there are a lot of other parsers around, the question arises: What makes it different? What advantages does it have?&#xD;
 &#xD;

Modified: webservices/jaxme/branches/MAVEN/projects/xs/src/main/java/org/apache/ws/jaxme/xs/XSAtomicType.java
URL: http://svn.apache.org/viewcvs/webservices/jaxme/branches/MAVEN/projects/xs/src/main/java/org/apache/ws/jaxme/xs/XSAtomicType.java?rev=233557&r1=233556&r2=233557&view=diff
==============================================================================
--- webservices/jaxme/branches/MAVEN/projects/xs/src/main/java/org/apache/ws/jaxme/xs/XSAtomicType.java (original)
+++ webservices/jaxme/branches/MAVEN/projects/xs/src/main/java/org/apache/ws/jaxme/xs/XSAtomicType.java Fri Aug 19 14:10:00 2005
@@ -68,4 +68,8 @@
    * replacing.</p>
    */
   public boolean isCollapsing();
+
+  	/** Returns the patterns, which are restricting this type.
+  	 */
+    public String[] getPatterns();
 }

Modified: webservices/jaxme/branches/MAVEN/projects/xs/src/main/java/org/apache/ws/jaxme/xs/impl/XSAtomicTypeRestrictionImpl.java
URL: http://svn.apache.org/viewcvs/webservices/jaxme/branches/MAVEN/projects/xs/src/main/java/org/apache/ws/jaxme/xs/impl/XSAtomicTypeRestrictionImpl.java?rev=233557&r1=233556&r2=233557&view=diff
==============================================================================
--- webservices/jaxme/branches/MAVEN/projects/xs/src/main/java/org/apache/ws/jaxme/xs/impl/XSAtomicTypeRestrictionImpl.java (original)
+++ webservices/jaxme/branches/MAVEN/projects/xs/src/main/java/org/apache/ws/jaxme/xs/impl/XSAtomicTypeRestrictionImpl.java Fri Aug 19 14:10:00 2005
@@ -26,6 +26,7 @@
 import org.apache.ws.jaxme.xs.xml.XsEMinExclusive;
 import org.apache.ws.jaxme.xs.xml.XsEMinInclusive;
 import org.apache.ws.jaxme.xs.xml.XsEMinLength;
+import org.apache.ws.jaxme.xs.xml.XsEPattern;
 import org.apache.ws.jaxme.xs.xml.XsETotalDigits;
 import org.apache.ws.jaxme.xs.xml.XsEWhiteSpace;
 import org.apache.ws.jaxme.xs.xml.XsGSimpleRestrictionModel;
@@ -35,7 +36,8 @@
  * @author <a href="mailto:joe@ispsoft.de">Jochen Wiedmann</a>
  */
 public class XSAtomicTypeRestrictionImpl extends XSSimpleTypeRestrictionImpl implements XSAtomicType {
-  private final XSAtomicType atomicBaseType;
+	private static final String[] ZERO_PATTERNS = new String[0];
+	private final XSAtomicType atomicBaseType;
 
   /** Creates a new atomic type restricting <code>pBaseType</code>
    * with the constraints <code>pRestriction</code>.
@@ -150,5 +152,18 @@
     } else {
       return whiteSpace.isCollapsing();
     }
+  }
+
+  public String[] getPatterns() {
+	  XsEPattern[] patterns = getRestriction().getPatterns();
+	  if (patterns == null  ||  patterns.length == 0) {
+		  return ZERO_PATTERNS;
+	  } else {
+		  String[] result = new String[patterns.length];
+		  for (int i = 0;  i < patterns.length;  i++) {
+			  result[i] = patterns[i].getValue();
+		  }
+		  return result;
+	  }
   }
 }

Modified: webservices/jaxme/branches/MAVEN/projects/xs/src/main/java/org/apache/ws/jaxme/xs/types/AbstractAtomicType.java
URL: http://svn.apache.org/viewcvs/webservices/jaxme/branches/MAVEN/projects/xs/src/main/java/org/apache/ws/jaxme/xs/types/AbstractAtomicType.java?rev=233557&r1=233556&r2=233557&view=diff
==============================================================================
--- webservices/jaxme/branches/MAVEN/projects/xs/src/main/java/org/apache/ws/jaxme/xs/types/AbstractAtomicType.java (original)
+++ webservices/jaxme/branches/MAVEN/projects/xs/src/main/java/org/apache/ws/jaxme/xs/types/AbstractAtomicType.java Fri Aug 19 14:10:00 2005
@@ -23,7 +23,8 @@
  * @author <a href="mailto:joe@ispsoft.de">Jochen Wiedmann</a>
  */
 public abstract class AbstractAtomicType extends AbstractSimpleType implements XSAtomicType {
-  public boolean isAtomic() { return true; }
+	private static final String[] ZERO_PATTERNS = new String[0];
+	public boolean isAtomic() { return true; }
 
   public XSAtomicType getAtomicType() { return this; }
 
@@ -39,4 +40,5 @@
   public boolean isReplacing() { return false; }
   public boolean isCollapsing() { return false; }
   public boolean isBuiltin() { return true; }
+  	public String[] getPatterns() { return ZERO_PATTERNS; }
 }

Modified: webservices/jaxme/branches/MAVEN/status.xml
URL: http://svn.apache.org/viewcvs/webservices/jaxme/branches/MAVEN/status.xml?rev=233557&r1=233556&r2=233557&view=diff
==============================================================================
--- webservices/jaxme/branches/MAVEN/status.xml (original)
+++ webservices/jaxme/branches/MAVEN/status.xml Fri Aug 19 14:10:00 2005
@@ -50,6 +50,9 @@
         build scripts. (JAXME-67, Boris Gruschke,
         <boris at gruschke.de>)
       </action>
+      <action dev="JW" type="enhancement" context="generator">
+        Added support for xs:pattern.
+      </action>
     </release>
 	<release version="0.5" date="2005-Aug-08">
       <action dev="JW" type="enhancement" context="js">



---------------------------------------------------------------------
To unsubscribe, e-mail: jaxme-dev-unsubscribe@ws.apache.org
For additional commands, e-mail: jaxme-dev-help@ws.apache.org