Author: jochen Date: Thu Aug 18 14:34:47 2005 New Revision: 233384 URL: http://svn.apache.org/viewcvs?rev=233384&view=rev Log: Added support for xs:pattern.
Added: webservices/jaxme/trunk/src/jaxme/org/apache/ws/jaxme/impl/Java5REHandler.java webservices/jaxme/trunk/src/jaxme/org/apache/ws/jaxme/impl/REFactory.java webservices/jaxme/trunk/src/jaxme/org/apache/ws/jaxme/impl/REHandler.java webservices/jaxme/trunk/src/jaxme/org/apache/ws/jaxme/impl/XercesREHandler.java Modified: webservices/jaxme/trunk/.classpath webservices/jaxme/trunk/src/jaxme/org/apache/ws/jaxme/generator/sg/AtomicTypeSG.java webservices/jaxme/trunk/src/jaxme/org/apache/ws/jaxme/generator/sg/SimpleTypeSG.java webservices/jaxme/trunk/src/jaxme/org/apache/ws/jaxme/generator/sg/impl/AtomicTypeSGImpl.java webservices/jaxme/trunk/src/jaxme/org/apache/ws/jaxme/generator/sg/impl/ccsg/HandlerSGImpl.java webservices/jaxme/trunk/src/jaxme/org/apache/ws/jaxme/generator/types/ListTypeSGImpl.java webservices/jaxme/trunk/src/jaxme/org/apache/ws/jaxme/generator/types/SimpleTypeSGImpl.java webservices/jaxme/trunk/src/jaxme/org/apache/ws/jaxme/generator/types/StringSG.java webservices/jaxme/trunk/src/jaxme/org/apache/ws/jaxme/impl/PassThroughXMLWriter.java webservices/jaxme/trunk/src/test/jaxb/types.xsd webservices/jaxme/trunk/src/xs/org/apache/ws/jaxme/xs/XSAtomicType.java webservices/jaxme/trunk/src/xs/org/apache/ws/jaxme/xs/impl/XSAtomicTypeRestrictionImpl.java webservices/jaxme/trunk/src/xs/org/apache/ws/jaxme/xs/types/AbstractAtomicType.java Modified: webservices/jaxme/trunk/.classpath URL: http://svn.apache.org/viewcvs/webservices/jaxme/trunk/.classpath?rev=233384&r1=233383&r2=233384&view=diff ============================================================================== --- webservices/jaxme/trunk/.classpath (original) +++ webservices/jaxme/trunk/.classpath Thu Aug 18 14:34:47 2005 @@ -19,5 +19,6 @@ <classpathentry kind="src" path="src/webapp/java"/> <classpathentry exported="true" kind="lib" path="prerequisites/servlet.jar"/> <classpathentry exported="true" kind="lib" path="prerequisites/antlr.jar"/> + <classpathentry kind="lib" path="prerequisites/xercesImpl.jar"/> <classpathentry kind="output" path="bin"/> </classpath> Modified: webservices/jaxme/trunk/src/jaxme/org/apache/ws/jaxme/generator/sg/AtomicTypeSG.java URL: http://svn.apache.org/viewcvs/webservices/jaxme/trunk/src/jaxme/org/apache/ws/jaxme/generator/sg/AtomicTypeSG.java?rev=233384&r1=233383&r2=233384&view=diff ============================================================================== --- webservices/jaxme/trunk/src/jaxme/org/apache/ws/jaxme/generator/sg/AtomicTypeSG.java (original) +++ webservices/jaxme/trunk/src/jaxme/org/apache/ws/jaxme/generator/sg/AtomicTypeSG.java Thu Aug 18 14:34:47 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/trunk/src/jaxme/org/apache/ws/jaxme/generator/sg/SimpleTypeSG.java URL: http://svn.apache.org/viewcvs/webservices/jaxme/trunk/src/jaxme/org/apache/ws/jaxme/generator/sg/SimpleTypeSG.java?rev=233384&r1=233383&r2=233384&view=diff ============================================================================== --- webservices/jaxme/trunk/src/jaxme/org/apache/ws/jaxme/generator/sg/SimpleTypeSG.java (original) +++ webservices/jaxme/trunk/src/jaxme/org/apache/ws/jaxme/generator/sg/SimpleTypeSG.java Thu Aug 18 14:34:47 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/trunk/src/jaxme/org/apache/ws/jaxme/generator/sg/impl/AtomicTypeSGImpl.java URL: http://svn.apache.org/viewcvs/webservices/jaxme/trunk/src/jaxme/org/apache/ws/jaxme/generator/sg/impl/AtomicTypeSGImpl.java?rev=233384&r1=233383&r2=233384&view=diff ============================================================================== --- webservices/jaxme/trunk/src/jaxme/org/apache/ws/jaxme/generator/sg/impl/AtomicTypeSGImpl.java (original) +++ webservices/jaxme/trunk/src/jaxme/org/apache/ws/jaxme/generator/sg/impl/AtomicTypeSGImpl.java Thu Aug 18 14:34:47 2005 @@ -23,30 +23,34 @@ * @author <a href="mailto:[EMAIL PROTECTED]">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/trunk/src/jaxme/org/apache/ws/jaxme/generator/sg/impl/ccsg/HandlerSGImpl.java URL: http://svn.apache.org/viewcvs/webservices/jaxme/trunk/src/jaxme/org/apache/ws/jaxme/generator/sg/impl/ccsg/HandlerSGImpl.java?rev=233384&r1=233383&r2=233384&view=diff ============================================================================== --- webservices/jaxme/trunk/src/jaxme/org/apache/ws/jaxme/generator/sg/impl/ccsg/HandlerSGImpl.java (original) +++ webservices/jaxme/trunk/src/jaxme/org/apache/ws/jaxme/generator/sg/impl/ccsg/HandlerSGImpl.java Thu Aug 18 14:34:47 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/trunk/src/jaxme/org/apache/ws/jaxme/generator/types/ListTypeSGImpl.java URL: http://svn.apache.org/viewcvs/webservices/jaxme/trunk/src/jaxme/org/apache/ws/jaxme/generator/types/ListTypeSGImpl.java?rev=233384&r1=233383&r2=233384&view=diff ============================================================================== --- webservices/jaxme/trunk/src/jaxme/org/apache/ws/jaxme/generator/types/ListTypeSGImpl.java (original) +++ webservices/jaxme/trunk/src/jaxme/org/apache/ws/jaxme/generator/types/ListTypeSGImpl.java Thu Aug 18 14:34:47 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/trunk/src/jaxme/org/apache/ws/jaxme/generator/types/SimpleTypeSGImpl.java URL: http://svn.apache.org/viewcvs/webservices/jaxme/trunk/src/jaxme/org/apache/ws/jaxme/generator/types/SimpleTypeSGImpl.java?rev=233384&r1=233383&r2=233384&view=diff ============================================================================== --- webservices/jaxme/trunk/src/jaxme/org/apache/ws/jaxme/generator/types/SimpleTypeSGImpl.java (original) +++ webservices/jaxme/trunk/src/jaxme/org/apache/ws/jaxme/generator/types/SimpleTypeSGImpl.java Thu Aug 18 14:34:47 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/trunk/src/jaxme/org/apache/ws/jaxme/generator/types/StringSG.java URL: http://svn.apache.org/viewcvs/webservices/jaxme/trunk/src/jaxme/org/apache/ws/jaxme/generator/types/StringSG.java?rev=233384&r1=233383&r2=233384&view=diff ============================================================================== --- webservices/jaxme/trunk/src/jaxme/org/apache/ws/jaxme/generator/types/StringSG.java (original) +++ webservices/jaxme/trunk/src/jaxme/org/apache/ws/jaxme/generator/types/StringSG.java Thu Aug 18 14:34:47 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) Added: webservices/jaxme/trunk/src/jaxme/org/apache/ws/jaxme/impl/Java5REHandler.java URL: http://svn.apache.org/viewcvs/webservices/jaxme/trunk/src/jaxme/org/apache/ws/jaxme/impl/Java5REHandler.java?rev=233384&view=auto ============================================================================== --- webservices/jaxme/trunk/src/jaxme/org/apache/ws/jaxme/impl/Java5REHandler.java (added) +++ webservices/jaxme/trunk/src/jaxme/org/apache/ws/jaxme/impl/Java5REHandler.java Thu Aug 18 14:34:47 2005 @@ -0,0 +1,34 @@ +/* + * Copyright 2003, 2004 The Apache Software Foundation + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * 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; + +import com.sun.org.apache.xerces.internal.impl.xpath.regex.RegularExpression; + + +/** Default implementation of [EMAIL PROTECTED] REHandler}, using + * the builtin Xerces from Java 5. + */ +public class Java5REHandler implements REHandler { + public Matcher getMatcher(final String pPattern) { + final RegularExpression re = new RegularExpression(pPattern, "X"); + return new Matcher(){ + public String getPattern() { return pPattern; } + public synchronized boolean matches(String pValue) { + return re.matches(pValue); + } + }; + } +} Modified: webservices/jaxme/trunk/src/jaxme/org/apache/ws/jaxme/impl/PassThroughXMLWriter.java URL: http://svn.apache.org/viewcvs/webservices/jaxme/trunk/src/jaxme/org/apache/ws/jaxme/impl/PassThroughXMLWriter.java?rev=233384&r1=233383&r2=233384&view=diff ============================================================================== --- webservices/jaxme/trunk/src/jaxme/org/apache/ws/jaxme/impl/PassThroughXMLWriter.java (original) +++ webservices/jaxme/trunk/src/jaxme/org/apache/ws/jaxme/impl/PassThroughXMLWriter.java Thu Aug 18 14:34:47 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; Added: webservices/jaxme/trunk/src/jaxme/org/apache/ws/jaxme/impl/REFactory.java URL: http://svn.apache.org/viewcvs/webservices/jaxme/trunk/src/jaxme/org/apache/ws/jaxme/impl/REFactory.java?rev=233384&view=auto ============================================================================== --- webservices/jaxme/trunk/src/jaxme/org/apache/ws/jaxme/impl/REFactory.java (added) +++ webservices/jaxme/trunk/src/jaxme/org/apache/ws/jaxme/impl/REFactory.java Thu Aug 18 14:34:47 2005 @@ -0,0 +1,82 @@ +/* + * Copyright 2003, 2004 The Apache Software Foundation + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * 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; + + +/** The REFactory is used for creating instances of + * [EMAIL PROTECTED] REHandler.Matcher}. It provides access to a single + * instance of [EMAIL PROTECTED] REHandler}. + */ +public class REFactory { + private static final REHandler reHandler; + + static { + REHandler reh = null; + String p = System.getProperty(REFactory.class.getName() + ".Implementation"); + if (p != null) { + try { + Class c = Class.forName(p); + reh = (REHandler) c.newInstance(); + } catch (Throwable t) { + } + } + if (p == null) { + p = REFactory.class.getName(); + p = p.substring(0, p.lastIndexOf('.')+1); + try { + Class c = Class.forName(p + "Java5REHandler"); + reh = (REHandler) c.newInstance(); + } catch (Throwable t1) { + try { + Class c = Class.forName(p + "XercerREHandler"); + reh = (REHandler) c.newInstance(); + } catch (Throwable t2) { + reh = new DummyREHandler(); + } + } + } + reHandler = reh; + } + + /** Returns the singleton [EMAIL PROTECTED] REHandler}. The instance is + * created as follows: + * <ol> + * <li>If the system property + * <code>org.apache.ws.jaxme.impl.REFactory.Implementation</code> + * is set, and contains the name of a valid REHandler class, + * then that class is instantiated.</li> + * <li>An instance of [EMAIL PROTECTED] Java5REHandler} is created, + * if possible. This is the case, when running under + * Java 5.</li> + * <li>Otherwise, an instance of [EMAIL PROTECTED] XercesREHandler} + * is created, if possible. This is the case, when + * Xerces-J is available.</li> + * <li>Otherwise, an instance of [EMAIL PROTECTED] DummyREHandler} + * is created. This is an REHandler, which matches + * always. In other words, patterns are ignored.</li> + * </ol> + */ + public static REHandler getREHandler() { return reHandler; } + + private static class DummyREHandler implements REHandler { + public Matcher getMatcher(final String pPattern) { + return new REHandler.Matcher() { + public String getPattern() { return pPattern; } + public boolean matches(String pValue) { return true; } + }; + } + } +} Added: webservices/jaxme/trunk/src/jaxme/org/apache/ws/jaxme/impl/REHandler.java URL: http://svn.apache.org/viewcvs/webservices/jaxme/trunk/src/jaxme/org/apache/ws/jaxme/impl/REHandler.java?rev=233384&view=auto ============================================================================== --- webservices/jaxme/trunk/src/jaxme/org/apache/ws/jaxme/impl/REHandler.java (added) +++ webservices/jaxme/trunk/src/jaxme/org/apache/ws/jaxme/impl/REHandler.java Thu Aug 18 14:34:47 2005 @@ -0,0 +1,42 @@ +/* + * Copyright 2003, 2004 The Apache Software Foundation + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * 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; + +/** An instance of RE is able to evaluate, whether + * a given regular expression is matched by a + * certain string.<br> + * JaxMe doesn't actually implement RE handling. It supports + * a set of implementations, basically Xerces and Java 5. + * Upon startup, an attempt is made to load an RE implementation. + */ +public interface REHandler { + /** An RE matcher is a compiled regular expression. + * Its method + */ + public interface Matcher { + /** Returns the regular expressions pattern. + */ + String getPattern(); + /** Returns, whether the given string is matched + * by the regular expression. + */ + boolean matches(String pValue); + } + + /** Creates a thread safe RE matcher. + */ + Matcher getMatcher(String pPattern); +} Added: webservices/jaxme/trunk/src/jaxme/org/apache/ws/jaxme/impl/XercesREHandler.java URL: http://svn.apache.org/viewcvs/webservices/jaxme/trunk/src/jaxme/org/apache/ws/jaxme/impl/XercesREHandler.java?rev=233384&view=auto ============================================================================== --- webservices/jaxme/trunk/src/jaxme/org/apache/ws/jaxme/impl/XercesREHandler.java (added) +++ webservices/jaxme/trunk/src/jaxme/org/apache/ws/jaxme/impl/XercesREHandler.java Thu Aug 18 14:34:47 2005 @@ -0,0 +1,34 @@ +/* + * Copyright 2003, 2004 The Apache Software Foundation + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * 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; + +import org.apache.xerces.impl.xpath.regex.RegularExpression; + + +/** Default implementation of [EMAIL PROTECTED] REHandler}, using + * the builtin Xerces from Java 5. + */ +public class XercesREHandler implements REHandler { + public Matcher getMatcher(final String pPattern) { + final RegularExpression re = new RegularExpression(pPattern, "X"); + return new Matcher(){ + public String getPattern() { return pPattern; } + public synchronized boolean matches(String pValue) { + return re.matches(pValue); + } + }; + } +} Modified: webservices/jaxme/trunk/src/test/jaxb/types.xsd URL: http://svn.apache.org/viewcvs/webservices/jaxme/trunk/src/test/jaxb/types.xsd?rev=233384&r1=233383&r2=233384&view=diff ============================================================================== Binary files - no diff available. Modified: webservices/jaxme/trunk/src/xs/org/apache/ws/jaxme/xs/XSAtomicType.java URL: http://svn.apache.org/viewcvs/webservices/jaxme/trunk/src/xs/org/apache/ws/jaxme/xs/XSAtomicType.java?rev=233384&r1=233383&r2=233384&view=diff ============================================================================== --- webservices/jaxme/trunk/src/xs/org/apache/ws/jaxme/xs/XSAtomicType.java (original) +++ webservices/jaxme/trunk/src/xs/org/apache/ws/jaxme/xs/XSAtomicType.java Thu Aug 18 14:34:47 2005 @@ -68,4 +68,8 @@ * replacing.</p> */ public boolean isCollapsing(); + + /** Returns the patterns, which are restricting this type. + */ + public String[] getPatterns(); } Modified: webservices/jaxme/trunk/src/xs/org/apache/ws/jaxme/xs/impl/XSAtomicTypeRestrictionImpl.java URL: http://svn.apache.org/viewcvs/webservices/jaxme/trunk/src/xs/org/apache/ws/jaxme/xs/impl/XSAtomicTypeRestrictionImpl.java?rev=233384&r1=233383&r2=233384&view=diff ============================================================================== --- webservices/jaxme/trunk/src/xs/org/apache/ws/jaxme/xs/impl/XSAtomicTypeRestrictionImpl.java (original) +++ webservices/jaxme/trunk/src/xs/org/apache/ws/jaxme/xs/impl/XSAtomicTypeRestrictionImpl.java Thu Aug 18 14:34:47 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:[EMAIL PROTECTED]">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/trunk/src/xs/org/apache/ws/jaxme/xs/types/AbstractAtomicType.java URL: http://svn.apache.org/viewcvs/webservices/jaxme/trunk/src/xs/org/apache/ws/jaxme/xs/types/AbstractAtomicType.java?rev=233384&r1=233383&r2=233384&view=diff ============================================================================== --- webservices/jaxme/trunk/src/xs/org/apache/ws/jaxme/xs/types/AbstractAtomicType.java (original) +++ webservices/jaxme/trunk/src/xs/org/apache/ws/jaxme/xs/types/AbstractAtomicType.java Thu Aug 18 14:34:47 2005 @@ -23,7 +23,8 @@ * @author <a href="mailto:[EMAIL PROTECTED]">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; } } --------------------------------------------------------------------- To unsubscribe, e-mail: [EMAIL PROTECTED] For additional commands, e-mail: [EMAIL PROTECTED]