You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@xerces.apache.org by kn...@apache.org on 2009/12/02 20:18:55 UTC

svn commit: r886273 - in /xerces/java/branches/xml-schema-1.1-dev/src/org/apache/xerces/impl: dv/ dv/xs/ msg/ xs/ xs/traversers/

Author: knoaman
Date: Wed Dec  2 19:18:54 2009
New Revision: 886273

URL: http://svn.apache.org/viewvc?rev=886273&view=rev
Log:
Add support for dateTimeStamp simple type and explicitTimezone facet. Patch by Ken Cai with minor modifications by Khaled Noaman.

Added:
    xerces/java/branches/xml-schema-1.1-dev/src/org/apache/xerces/impl/dv/xs/DateTimeStampDV.java   (with props)
Modified:
    xerces/java/branches/xml-schema-1.1-dev/src/org/apache/xerces/impl/dv/XSFacets.java
    xerces/java/branches/xml-schema-1.1-dev/src/org/apache/xerces/impl/dv/XSSimpleType.java
    xerces/java/branches/xml-schema-1.1-dev/src/org/apache/xerces/impl/dv/xs/Schema11DVFactoryImpl.java
    xerces/java/branches/xml-schema-1.1-dev/src/org/apache/xerces/impl/dv/xs/TypeValidator.java
    xerces/java/branches/xml-schema-1.1-dev/src/org/apache/xerces/impl/dv/xs/XSSimpleTypeDecl.java
    xerces/java/branches/xml-schema-1.1-dev/src/org/apache/xerces/impl/msg/XMLSchemaMessages.properties
    xerces/java/branches/xml-schema-1.1-dev/src/org/apache/xerces/impl/xs/SchemaSymbols.java
    xerces/java/branches/xml-schema-1.1-dev/src/org/apache/xerces/impl/xs/traversers/XSAttributeChecker.java
    xerces/java/branches/xml-schema-1.1-dev/src/org/apache/xerces/impl/xs/traversers/XSDAbstractTraverser.java

Modified: xerces/java/branches/xml-schema-1.1-dev/src/org/apache/xerces/impl/dv/XSFacets.java
URL: http://svn.apache.org/viewvc/xerces/java/branches/xml-schema-1.1-dev/src/org/apache/xerces/impl/dv/XSFacets.java?rev=886273&r1=886272&r2=886273&view=diff
==============================================================================
--- xerces/java/branches/xml-schema-1.1-dev/src/org/apache/xerces/impl/dv/XSFacets.java (original)
+++ xerces/java/branches/xml-schema-1.1-dev/src/org/apache/xerces/impl/dv/XSFacets.java Wed Dec  2 19:18:54 2009
@@ -53,6 +53,11 @@
      * value of whiteSpace facet.
      */
     public short whiteSpace;
+    
+    /**
+     * value of explicitTimezone facet.
+     */
+    public short explicitTimezone;
 
     /**
      * value of totalDigits facet.
@@ -119,6 +124,7 @@
     public XSAnnotation maxExclusiveAnnotation;
     public XSAnnotation minInclusiveAnnotation;
     public XSAnnotation minExclusiveAnnotation;
+    public XSAnnotation explicitTimezoneAnnotation; //XML schema 1.1
     
     // the annotations of the assertions are stored in XSAssertImpl objects
     // stored in the 'assertFacets' Vector. 
@@ -137,5 +143,6 @@
         minInclusiveAnnotation = null;
         minExclusiveAnnotation = null;
         assertFacets = null;
+        explicitTimezoneAnnotation = null; //XML Schema 1.1
     }
 }

Modified: xerces/java/branches/xml-schema-1.1-dev/src/org/apache/xerces/impl/dv/XSSimpleType.java
URL: http://svn.apache.org/viewvc/xerces/java/branches/xml-schema-1.1-dev/src/org/apache/xerces/impl/dv/XSSimpleType.java?rev=886273&r1=886272&r2=886273&view=diff
==============================================================================
--- xerces/java/branches/xml-schema-1.1-dev/src/org/apache/xerces/impl/dv/XSSimpleType.java (original)
+++ xerces/java/branches/xml-schema-1.1-dev/src/org/apache/xerces/impl/dv/XSSimpleType.java Wed Dec  2 19:18:54 2009
@@ -45,7 +45,20 @@
     public static final short WS_REPLACE  = 1;
     /** collapse the white spaces */
     public static final short WS_COLLAPSE = 2;
-
+    
+    /**
+     * constants defined for the value of 'explicitTimezone' facet.
+     * see <a href='http://www.w3.org/TR/xmlschema11-2/#rf-explicitTimezone'> XML Schema
+     * Part 2: Datatypes </a>
+     */
+    
+    // optional the explicit timezone
+    public static final short ET_OPTIONAL = 0;
+    // required the explicit timezone
+    public static final short ET_REQUIRED = 1;
+    // prohibited the explicit timezone
+    public static final short ET_PROHIBITED = 2;  
+    
     /**
      * Constant defined for the primitive built-in simple tpyes.
      * see <a href='http://www.w3.org/TR/xmlschema-2/#built-in-primitive-datatypes'>

Added: xerces/java/branches/xml-schema-1.1-dev/src/org/apache/xerces/impl/dv/xs/DateTimeStampDV.java
URL: http://svn.apache.org/viewvc/xerces/java/branches/xml-schema-1.1-dev/src/org/apache/xerces/impl/dv/xs/DateTimeStampDV.java?rev=886273&view=auto
==============================================================================
--- xerces/java/branches/xml-schema-1.1-dev/src/org/apache/xerces/impl/dv/xs/DateTimeStampDV.java (added)
+++ xerces/java/branches/xml-schema-1.1-dev/src/org/apache/xerces/impl/dv/xs/DateTimeStampDV.java Wed Dec  2 19:18:54 2009
@@ -0,0 +1,46 @@
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one or more
+ * contributor license agreements.  See the NOTICE file distributed with
+ * this work for additional information regarding copyright ownership.
+ * The ASF licenses this file to You 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.xerces.impl.dv.xs;
+
+import org.apache.xerces.impl.dv.InvalidDatatypeValueException;
+import org.apache.xerces.impl.dv.ValidationContext;
+
+/**
+ * Validator for &lt;dateTimeStamp&gt; datatype (W3C Schema Datatypes)
+ *
+ * @xerces.internal  
+ * 
+ * @version $Id$
+ */
+public class DateTimeStampDV extends DateTimeDV {
+
+    public Object getActualValue(String content, ValidationContext context) throws InvalidDatatypeValueException {
+        try{
+            return parse(content);
+        } catch(Exception ex){
+            throw new InvalidDatatypeValueException("cvc-datatype-valid.1.2.1", new Object[]{content, "dateTimeStamp"});
+        }
+    }
+      
+    protected void validateDateTime (DateTimeData data){
+        super.validateDateTime(data);
+        if (data.utc == 0)
+            throw new RuntimeException("dateTimeStamp must have timezone");
+    }
+    
+}

Propchange: xerces/java/branches/xml-schema-1.1-dev/src/org/apache/xerces/impl/dv/xs/DateTimeStampDV.java
------------------------------------------------------------------------------
    svn:eol-style = native

Propchange: xerces/java/branches/xml-schema-1.1-dev/src/org/apache/xerces/impl/dv/xs/DateTimeStampDV.java
------------------------------------------------------------------------------
    svn:keywords = Author Date Id Revision

Modified: xerces/java/branches/xml-schema-1.1-dev/src/org/apache/xerces/impl/dv/xs/Schema11DVFactoryImpl.java
URL: http://svn.apache.org/viewvc/xerces/java/branches/xml-schema-1.1-dev/src/org/apache/xerces/impl/dv/xs/Schema11DVFactoryImpl.java?rev=886273&r1=886272&r2=886273&view=diff
==============================================================================
--- xerces/java/branches/xml-schema-1.1-dev/src/org/apache/xerces/impl/dv/xs/Schema11DVFactoryImpl.java (original)
+++ xerces/java/branches/xml-schema-1.1-dev/src/org/apache/xerces/impl/dv/xs/Schema11DVFactoryImpl.java Wed Dec  2 19:18:54 2009
@@ -45,7 +45,9 @@
         final String DAYTIMEDURATION   = "dayTimeDuration";
         final String PRECISIONDECIMAL  = "precisionDecimal";
         final String ERROR             = "error";
-
+        final String DATETIMESTAMP     = "dateTimeStamp"; 
+        final String DATETIME          = "dateTime";
+        
     	createBuiltInTypes(fBuiltInTypes, XSSimpleTypeDecl.fAnyAtomicType);
 
         // add anyAtomicType
@@ -58,7 +60,11 @@
         XSSimpleTypeDecl durationDV = (XSSimpleTypeDecl)fBuiltInTypes.get(DURATION);
         fBuiltInTypes.put(YEARMONTHDURATION, new XSSimpleTypeDecl(durationDV, YEARMONTHDURATION, XSSimpleTypeDecl.DV_YEARMONTHDURATION, XSSimpleType.ORDERED_PARTIAL, false, false, false, true, XSSimpleTypeDecl.YEARMONTHDURATION_DT));
         fBuiltInTypes.put(DAYTIMEDURATION, new XSSimpleTypeDecl(durationDV, DAYTIMEDURATION, XSSimpleTypeDecl.DV_DAYTIMEDURATION, XSSimpleType.ORDERED_PARTIAL, false, false, false, true, XSSimpleTypeDecl.DAYTIMEDURATION_DT));
-
+        
+        //add dateTimeStamp
+        XSSimpleTypeDecl dateTimeDV = (XSSimpleTypeDecl)fBuiltInTypes.get(DATETIME);
+        fBuiltInTypes.put(DATETIMESTAMP, new XSSimpleTypeDecl(dateTimeDV, DATETIMESTAMP, XSSimpleTypeDecl.DV_DATETIMESTAMP, XSSimpleTypeDecl.ORDERED_PARTIAL, false, false, false, true, XSSimpleTypeDecl.DATETIMESTAMP_DT));
+                
         // add precision decimal
         fBuiltInTypes.put(PRECISIONDECIMAL, new XSSimpleTypeDecl(XSSimpleTypeDecl.fAnyAtomicType, PRECISIONDECIMAL, XSSimpleTypeDecl.DV_PRECISIONDECIMAL, XSSimpleType.ORDERED_PARTIAL, false, false, true, true, XSSimpleTypeDecl.PRECISIONDECIMAL_DT));
     } //createBuiltInTypes()

Modified: xerces/java/branches/xml-schema-1.1-dev/src/org/apache/xerces/impl/dv/xs/TypeValidator.java
URL: http://svn.apache.org/viewvc/xerces/java/branches/xml-schema-1.1-dev/src/org/apache/xerces/impl/dv/xs/TypeValidator.java?rev=886273&r1=886272&r2=886273&view=diff
==============================================================================
--- xerces/java/branches/xml-schema-1.1-dev/src/org/apache/xerces/impl/dv/xs/TypeValidator.java (original)
+++ xerces/java/branches/xml-schema-1.1-dev/src/org/apache/xerces/impl/dv/xs/TypeValidator.java Wed Dec  2 19:18:54 2009
@@ -102,4 +102,8 @@
         return isDigit(ch) ? ch - '0' : -1;
     }
     
+    public boolean hasTimeZone(Object value){
+        return false;
+    }
+    
 } // interface TypeValidator

Modified: xerces/java/branches/xml-schema-1.1-dev/src/org/apache/xerces/impl/dv/xs/XSSimpleTypeDecl.java
URL: http://svn.apache.org/viewvc/xerces/java/branches/xml-schema-1.1-dev/src/org/apache/xerces/impl/dv/xs/XSSimpleTypeDecl.java?rev=886273&r1=886272&r2=886273&view=diff
==============================================================================
--- xerces/java/branches/xml-schema-1.1-dev/src/org/apache/xerces/impl/dv/xs/XSSimpleTypeDecl.java (original)
+++ xerces/java/branches/xml-schema-1.1-dev/src/org/apache/xerces/impl/dv/xs/XSSimpleTypeDecl.java Wed Dec  2 19:18:54 2009
@@ -92,6 +92,7 @@
     protected static final short DV_DAYTIMEDURATION	  = DV_NOTATION + 8;
     protected static final short DV_ANYATOMICTYPE     = DV_NOTATION + 9;
     protected static final short DV_ERROR             = DV_NOTATION + 10;
+    protected static final short DV_DATETIMESTAMP     = DV_NOTATION + 11;
 
     private static final TypeValidator[] gDVs = {
         new AnySimpleDV(),
@@ -124,7 +125,8 @@
         new YearMonthDurationDV(), // XML Schema 1.1 type
         new DayTimeDurationDV(), // XML Schema 1.1 type
         new AnyAtomicDV(), // XML Schema 1.1 type
-        new ErrorDV() // XML Schema 1.1 type
+        new ErrorDV(), // XML Schema 1.1 type
+        new DateTimeStampDV() //XML Schema 1.1 type
     };
 
     static final short NORMALIZE_NONE = 0;
@@ -162,6 +164,7 @@
         NORMALIZE_TRIM, //DayTimeDurationDV() (Schema 1.1)
         NORMALIZE_NONE, //AnyAtomicDV() (Schema 1.1)
         NORMALIZE_NONE, //ErrorDV() (Schema 1.1)
+        NORMALIZE_TRIM, //DateTimeStampDV(), (Schema 1.1)
     };
 
     static final short SPECIAL_PATTERN_NONE     = 0;
@@ -177,6 +180,10 @@
         "preserve", "replace", "collapse"
     };
 
+    static final String[] ET_FACET_STRING = {
+        "optional", "required", "prohibited"
+    };
+    
     static final String URI_SCHEMAFORSCHEMA = "http://www.w3.org/2001/XMLSchema";
     static final String ANY_TYPE = "anyType";
 
@@ -186,6 +193,7 @@
     public static final short PRECISIONDECIMAL_DT       = 48;
     public static final short ANYATOMICTYPE_DT          = 49;
     public static final short ERROR_DT                  = 50;
+    public static final short DATETIMESTAMP_DT          = 51;
 
     // DOM Level 3 TypeInfo Derivation Method constants
     static final int DERIVATION_ANY = 0;
@@ -268,6 +276,7 @@
 
     //for constraining facets
     private short fWhiteSpace = 0;
+    private short fExplicitTimezone = ET_OPTIONAL; //for XML Schema 1.1
     private int fLength = -1;
     private int fMinLength = -1;
     private int fMaxLength = -1;
@@ -302,6 +311,7 @@
     public XSAnnotation maxExclusiveAnnotation;
     public XSAnnotation minInclusiveAnnotation;
     public XSAnnotation minExclusiveAnnotation;
+    public XSAnnotation explicitTimezoneAnnotation;
 
     // facets as objects
     private XSObjectListImpl fFacets;
@@ -406,6 +416,7 @@
         fPatternType = fBase.fPatternType;
         fFixedFacet = fBase.fFixedFacet;
         fFacetsDefined = fBase.fFacetsDefined;
+        fExplicitTimezone = fBase.fExplicitTimezone;
 
         // always inherit facet annotations in case applyFacets is not called.
         lengthAnnotation = fBase.lengthAnnotation;
@@ -420,6 +431,7 @@
         minInclusiveAnnotation = fBase.minInclusiveAnnotation;
         totalDigitsAnnotation = fBase.totalDigitsAnnotation;
         fractionDigitsAnnotation = fBase.fractionDigitsAnnotation;
+        explicitTimezoneAnnotation = fBase.explicitTimezoneAnnotation;
 
         //we also set fundamental facets information in case applyFacets is not called.
         calcFundamentalFacets();
@@ -527,6 +539,7 @@
         fPatternType = fBase.fPatternType;
         fFixedFacet = fBase.fFixedFacet;
         fFacetsDefined = fBase.fFacetsDefined;
+        fExplicitTimezone = fBase.fExplicitTimezone;
 
         //we also set fundamental facets information in case applyFacets is not called.
         calcFundamentalFacets();
@@ -928,6 +941,19 @@
                 fFixedFacet |= FACET_ASSERT;
         }
 
+        //explicitTimezone
+        if ((presentFacet & FACET_EXPLICITTIMEZONE) != 0) {
+            if ((allowedFacet & FACET_EXPLICITTIMEZONE) == 0) {
+                reportError("cos-applicable-facets", new Object[]{"explicitTimezone", fTypeName});
+            } else {
+                fExplicitTimezone = facets.explicitTimezone;
+                explicitTimezoneAnnotation = facets.explicitTimezoneAnnotation;
+                fFacetsDefined |= FACET_EXPLICITTIMEZONE;
+                if ((fixedFacet & FACET_EXPLICITTIMEZONE) != 0)
+                    fFixedFacet |= FACET_EXPLICITTIMEZONE;
+            }
+        }
+        
         // maxInclusive
         if ((presentFacet & FACET_MAXINCLUSIVE) != 0) {
             if ((allowedFacet & FACET_MAXINCLUSIVE) == 0) {
@@ -1450,6 +1476,26 @@
                     reportError( "whiteSpace-valid-restriction.2", new Object[]{fTypeName});
                 }
             }
+
+            if ((fFacetsDefined & FACET_EXPLICITTIMEZONE) != 0) {
+                if ((fBase.fFacetsDefined & FACET_EXPLICITTIMEZONE ) != 0 && fExplicitTimezone != fBase.fExplicitTimezone){
+                    final String explicitTZStr = explicitTimezoneValue(fExplicitTimezone);
+                    final String baseExplicitTZStr = explicitTimezoneValue(fBase.fExplicitTimezone);
+                    if ((fBase.fFixedFacet & FACET_EXPLICITTIMEZONE) != 0) {
+                        reportError( "FixedFacetValue", new Object[]{"explicitTimezone", explicitTZStr, baseExplicitTZStr, fTypeName});
+                    }
+                    //check 4.3.16.4 error:
+                    //(explicitTimezone != prohibited && fBase.explicitTimezone = prohibited)
+                    //or (explicitTimezone != required && fBase.explicitTimezone = required)
+                    if (fBase.fExplicitTimezone != ET_OPTIONAL) {
+                        reportError("timezone-valid-restriction", new Object[]{fTypeName, explicitTZStr, baseExplicitTZStr});
+                    }                
+                }
+                if ( (fValidationDV == DV_DATETIMESTAMP) && fExplicitTimezone != XSSimpleType.ET_REQUIRED){
+                    reportError( "FixedFacetValue", new Object[]{"explicitTimezone", explicitTimezoneValue(fExplicitTimezone), explicitTimezoneValue(ET_REQUIRED), fTypeName});
+                }
+            }
+            
         }//fFacetsDefined != null
 
         // step 4: inherit other facets from base (including fTokeyType)
@@ -1503,6 +1549,14 @@
             fWhiteSpace = fBase.fWhiteSpace;
             whiteSpaceAnnotation = fBase.whiteSpaceAnnotation;
         }
+        
+        //inherit explicitTimezone
+        if ( (fFacetsDefined & FACET_EXPLICITTIMEZONE) == 0 &&  (fBase.fFacetsDefined & FACET_EXPLICITTIMEZONE) != 0 ) {
+            fFacetsDefined |= FACET_EXPLICITTIMEZONE;
+            fExplicitTimezone = fBase.fExplicitTimezone;
+            explicitTimezoneAnnotation = fBase.explicitTimezoneAnnotation;
+        }
+        
         // inherit enumeration
         if ((fFacetsDefined & FACET_ENUMERATION) == 0 && (fBase.fFacetsDefined & FACET_ENUMERATION) != 0) {
             fFacetsDefined |= FACET_ENUMERATION;
@@ -1763,6 +1817,22 @@
             }
         }
 
+        
+        //explicitTimezone
+        if ( ( fFacetsDefined & FACET_EXPLICITTIMEZONE) !=0 ) {
+            boolean hasTimezone = fDVs[fValidationDV].hasTimeZone(ob);
+            if (hasTimezone) {
+                if (fExplicitTimezone == ET_PROHIBITED ) {
+                    throw new InvalidDatatypeValueException("cvc-explicitTimezone-valid",
+                        new Object[] {content, "prohibited", fTypeName});
+                }
+            }
+            else if (fExplicitTimezone == ET_REQUIRED) {
+                throw new InvalidDatatypeValueException("cvc-explicitTimezone-valid",
+                        new Object[] {content, "required", fTypeName});
+            }
+        }
+        
         int compare;
 
         //maxinclusive
@@ -2127,6 +2197,10 @@
         return WS_FACET_STRING[ws];
     }
 
+    private String explicitTimezoneValue(short et){
+        return ET_FACET_STRING[et];
+    }
+    
     /**
      *  Fundamental Facet: ordered.
      */
@@ -2238,6 +2312,8 @@
                 return (fMinInclusive == null)?null:fMinInclusive.toString();
             case FACET_TOTALDIGITS:
                 return (fTotalDigits == -1)?null:Integer.toString(fTotalDigits);
+            case FACET_EXPLICITTIMEZONE:
+                return ET_FACET_STRING[fExplicitTimezone];
             case FACET_FRACTIONDIGITS:
                 if (fValidationDV == DV_INTEGER) {
                     return "0";
@@ -3013,6 +3089,7 @@
 
         //for constraining facets
         fWhiteSpace = 0;
+        fExplicitTimezone = ET_OPTIONAL;
         fLength = -1;
         fMinLength = -1;
         fMaxLength = -1;
@@ -3041,6 +3118,7 @@
         maxExclusiveAnnotation = null;
         minInclusiveAnnotation = null;
         minExclusiveAnnotation = null;
+        explicitTimezoneAnnotation = null;
 
         fPatternType = SPECIAL_PATTERN_NONE;
         fAnnotations = null;
@@ -3077,7 +3155,7 @@
         if (fFacets == null &&
                 (fFacetsDefined != 0 || fValidationDV == DV_INTEGER)) {
 
-            XSFacetImpl[] facets = new XSFacetImpl[10];
+            XSFacetImpl[] facets = new XSFacetImpl[11];
             int count = 0;
             if ((fFacetsDefined & FACET_WHITESPACE) != 0) {
                 facets[count] =
@@ -3178,6 +3256,15 @@
                             minInclusiveAnnotation);
                 count++;
             }
+            if ((fFacetsDefined & FACET_EXPLICITTIMEZONE) != 0) {
+                facets[count] = 
+                    new XSFacetImpl (
+                            FACET_EXPLICITTIMEZONE,
+                            ET_FACET_STRING[fExplicitTimezone],
+                            (fFixedFacet & FACET_EXPLICITTIMEZONE) != 0,
+                            explicitTimezoneAnnotation);
+                count++;
+            }
             fFacets = new XSObjectListImpl(facets, count);
         }
         return (fFacets != null) ? fFacets : XSObjectListImpl.EMPTY_LIST;

Modified: xerces/java/branches/xml-schema-1.1-dev/src/org/apache/xerces/impl/msg/XMLSchemaMessages.properties
URL: http://svn.apache.org/viewvc/xerces/java/branches/xml-schema-1.1-dev/src/org/apache/xerces/impl/msg/XMLSchemaMessages.properties?rev=886273&r1=886272&r2=886273&view=diff
==============================================================================
--- xerces/java/branches/xml-schema-1.1-dev/src/org/apache/xerces/impl/msg/XMLSchemaMessages.properties (original)
+++ xerces/java/branches/xml-schema-1.1-dev/src/org/apache/xerces/impl/msg/XMLSchemaMessages.properties Wed Dec  2 19:18:54 2009
@@ -300,6 +300,9 @@
         whiteSpace-valid-restriction.1 = whiteSpace-valid-restriction.1: In the definition of {0}, the value ''{1}'' for the facet ''whitespace'' is invalid, because the value for ''whitespace'' has been set to ''collapse'' in one of the ancestor types.
         whiteSpace-valid-restriction.2 = whiteSpace-valid-restriction.2: In the definition of {0}, the value ''preserve'' for the facet ''whitespace'' is invalid, because the value for ''whitespace'' has been set to ''replace'' in one of the ancestor types.
 
+		cvc-explicitTimezone-valid = cvc-explicitTimezone-valid: Value ''{0}'' is not facet-valid with respect to explicitTimezone ''{1}'' for type ''{2}''.  
+		timezone-valid-restriction = timezone-valid-restriction: In the definition of {0}, the value ''{1}'' for the facet ''explicitTimezone'' is invalid, because the value for ''explicitTimezone'' has been set to ''{2}'' in one of the ancestor types.
+	
 #schema for Schemas
 
         s4s-att-invalid-value = s4s-att-invalid-value: Invalid attribute value for ''{1}'' in element ''{0}''. Recorded reason: {2}

Modified: xerces/java/branches/xml-schema-1.1-dev/src/org/apache/xerces/impl/xs/SchemaSymbols.java
URL: http://svn.apache.org/viewvc/xerces/java/branches/xml-schema-1.1-dev/src/org/apache/xerces/impl/xs/SchemaSymbols.java?rev=886273&r1=886272&r2=886273&view=diff
==============================================================================
--- xerces/java/branches/xml-schema-1.1-dev/src/org/apache/xerces/impl/xs/SchemaSymbols.java (original)
+++ xerces/java/branches/xml-schema-1.1-dev/src/org/apache/xerces/impl/xs/SchemaSymbols.java Wed Dec  2 19:18:54 2009
@@ -66,6 +66,7 @@
     public static final String ELT_DOCUMENTATION          = "documentation".intern();
     public static final String ELT_ELEMENT                = "element".intern();
     public static final String ELT_ENUMERATION            = "enumeration".intern();
+    public static final String ELT_EXPLICITTIMEZONE       = "explicitTimezone".intern();
     public static final String ELT_EXTENSION              = "extension".intern();
     public static final String ELT_FIELD                  = "field".intern();
     public static final String ELT_FRACTIONDIGITS         = "fractionDigits".intern();

Modified: xerces/java/branches/xml-schema-1.1-dev/src/org/apache/xerces/impl/xs/traversers/XSAttributeChecker.java
URL: http://svn.apache.org/viewvc/xerces/java/branches/xml-schema-1.1-dev/src/org/apache/xerces/impl/xs/traversers/XSAttributeChecker.java?rev=886273&r1=886272&r2=886273&view=diff
==============================================================================
--- xerces/java/branches/xml-schema-1.1-dev/src/org/apache/xerces/impl/xs/traversers/XSAttributeChecker.java (original)
+++ xerces/java/branches/xml-schema-1.1-dev/src/org/apache/xerces/impl/xs/traversers/XSAttributeChecker.java Wed Dec  2 19:18:54 2009
@@ -153,6 +153,9 @@
     private static final XInt INT_WS_PRESERVE     = fXIntPool.getXInt(XSSimpleType.WS_PRESERVE);
     private static final XInt INT_WS_REPLACE      = fXIntPool.getXInt(XSSimpleType.WS_REPLACE);
     private static final XInt INT_WS_COLLAPSE     = fXIntPool.getXInt(XSSimpleType.WS_COLLAPSE);
+    private static final XInt INT_ET_OPTION       = fXIntPool.getXInt(XSSimpleType.ET_OPTIONAL);
+    private static final XInt INT_ET_REQUIRED     = fXIntPool.getXInt(XSSimpleType.ET_REQUIRED);
+    private static final XInt INT_ET_PROHIBITED   = fXIntPool.getXInt(XSSimpleType.ET_PROHIBITED);
     private static final XInt INT_UNBOUNDED       = fXIntPool.getXInt(SchemaSymbols.OCCURRENCE_UNBOUNDED);
     private static final XInt INT_MODE_NONE       = fXIntPool.getXInt(XSOpenContentDecl.MODE_NONE);
     private static final XInt INT_MODE_INTERLEAVE = fXIntPool.getXInt(XSOpenContentDecl.MODE_INTERLEAVE);
@@ -170,7 +173,7 @@
     // for 15 global elements
     private static final Hashtable fEleAttrs11MapG = new Hashtable(31);
     // for 47 local elements
-    private static final Hashtable fEleAttrs11MapL = new Hashtable(97);
+    private static final Hashtable fEleAttrs11MapL = new Hashtable(102);
 
     // used to initialize fEleAttrsMap
     // step 1: all possible data types
@@ -237,6 +240,7 @@
     protected static final int DT_MODE1            = -20;
     protected static final int DT_NOTNAMESPACE     = -21;
     protected static final int DT_NOTQNAME         = -22;
+    protected static final int DT_EXPLICITTIMEZONE = -24;
 
     static {
         // step 2: all possible attributes for all elements
@@ -302,6 +306,7 @@
         int ATT_NOTQNAME_N           = attCount++;
         int ATT_TEST_XPATH_R         = attCount++;
         int ATT_INHERITABLE_N        = attCount++;
+        int ATT_VALUE_ET_N           = attCount++;
 
         // step 3: store all these attributes in an array
         OneAttr[] allAttrs = new OneAttr[attCount];
@@ -543,6 +548,10 @@
                                                         DT_BOOLEAN,
                                                         ATTIDX_INHERITABLE,
                                                         Boolean.FALSE);
+        allAttrs[ATT_VALUE_ET_N]           = new OneAttr(SchemaSymbols.ATT_VALUE,
+                                                        DT_EXPLICITTIMEZONE,
+                                                        ATTIDX_VALUE,
+                                                        null);
 
         // step 4: for each element, make a list of possible attributes
         Container attrList;
@@ -1125,6 +1134,16 @@
         fEleAttrs11MapL.put(SchemaSymbols.ELT_MINEXCLUSIVE, attrList);
 
 
+        // for element "explicitTimezone" - local
+        attrList = Container.getContainer(3);
+        // id = ID
+        attrList.put(SchemaSymbols.ATT_ID, allAttrs[ATT_ID_N]);
+        // value = optional | required | prohibited
+        attrList.put(SchemaSymbols.ATT_VALUE, allAttrs[ATT_VALUE_ET_N]);
+        // fixed = boolean : false
+        attrList.put(SchemaSymbols.ATT_FIXED, allAttrs[ATT_FIXED_D]);        
+        // XML Schema 1.1 - same list
+        fEleAttrs11MapL.put(SchemaSymbols.ELT_EXPLICITTIMEZONE, attrList);
         // XML Schema 1.1
         // same components - modified representation
 
@@ -1541,7 +1560,7 @@
                                 attrValues[ATTIDX_SUBSGROUP] = new Vector();
                             }
                             if (fSchemaHandler.fSchemaVersion == Constants.SCHEMA_VERSION_1_1) {
-                                StringTokenizer st = new StringTokenizer(attrVal, " ");
+                                StringTokenizer st = new StringTokenizer(attrVal, " \n\t\r");
                                 while (st.hasMoreTokens()) {
                                     Object avalue = dv.validate(st.nextToken(), schemaDoc.fValidationContext, null);
                                     ((Vector)attrValues[ATTIDX_SUBSGROUP]).addElement(avalue);
@@ -2015,8 +2034,19 @@
                 }
             }
             break;
+        case DT_EXPLICITTIMEZONE:
+            // value = optional | required | prohibited
+            if (value.equals (SchemaSymbols.ATTVAL_OPTIONAL))
+                retValue = INT_ET_OPTION;
+            else if (value.equals (SchemaSymbols.ATTVAL_REQUIRED))
+                retValue = INT_ET_REQUIRED;
+            else if (value.equals (SchemaSymbols.ATTVAL_PROHIBITED))
+                retValue = INT_ET_PROHIBITED;
+            else
+                throw new InvalidDatatypeValueException("cvc-enumeration-valid",
+                                                        new Object[]{value, "(optional | required | prohibited)"});
+            break;
         }
-
         return retValue;
     }
 

Modified: xerces/java/branches/xml-schema-1.1-dev/src/org/apache/xerces/impl/xs/traversers/XSDAbstractTraverser.java
URL: http://svn.apache.org/viewvc/xerces/java/branches/xml-schema-1.1-dev/src/org/apache/xerces/impl/xs/traversers/XSDAbstractTraverser.java?rev=886273&r1=886272&r2=886273&view=diff
==============================================================================
--- xerces/java/branches/xml-schema-1.1-dev/src/org/apache/xerces/impl/xs/traversers/XSDAbstractTraverser.java (original)
+++ xerces/java/branches/xml-schema-1.1-dev/src/org/apache/xerces/impl/xs/traversers/XSDAbstractTraverser.java Wed Dec  2 19:18:54 2009
@@ -557,6 +557,9 @@
                 else if (facet.equals(SchemaSymbols.ELT_LENGTH)) {
                     currentFacet = XSSimpleType.FACET_LENGTH;
                 }
+                else if (facet.equals(SchemaSymbols.ELT_EXPLICITTIMEZONE)){
+                    currentFacet = XSSimpleType.FACET_EXPLICITTIMEZONE;
+                }
                 else {
                     break;   // a non-facet
                 }
@@ -623,6 +626,9 @@
                 case XSSimpleType.FACET_LENGTH:
                     xsFacets.length = ((XInt)attrs[XSAttributeChecker.ATTIDX_VALUE]).intValue();
                     break;
+                case XSSimpleType.FACET_EXPLICITTIMEZONE:
+                    xsFacets.explicitTimezone = ((XInt)attrs[XSAttributeChecker.ATTIDX_VALUE]).shortValue();
+                    break;
                 }
                 
                 Element child = DOMUtil.getFirstChildElement( content );
@@ -670,6 +676,9 @@
                 case XSSimpleType.FACET_LENGTH:
                     xsFacets.lengthAnnotation = annotation;
                 break;
+                case XSSimpleType.FACET_EXPLICITTIMEZONE:    //XML Schema 1.1
+                    xsFacets.explicitTimezoneAnnotation = annotation;
+                break;
                 }
                 if (child != null) {
                     reportSchemaError("s4s-elt-must-match.1", new Object[]{facet, "(annotation?)", DOMUtil.getLocalName(child)}, child);



---------------------------------------------------------------------
To unsubscribe, e-mail: commits-unsubscribe@xerces.apache.org
For additional commands, e-mail: commits-help@xerces.apache.org


Re: JIRA Issue XERCESJ-1370 (was: svn commit: r886273 - in /xerces/java/branches/xml-schema-1.1-dev/src/org/apache/xerces/impl: dv/ dv/xs/ msg/ xs/ xs/traversers/)

Posted by Khaled Noaman <kn...@ca.ibm.com>.
Hi Michael,

I have marked the Jira bug as resolved. The dateTimeStamp and 
explicitTimezone are already checked in and no more changes are pending.

Khaled





Michael Glavassevich/Toronto/IBM@IBMCA 
12/14/2009 12:45 AM
Please respond to
j-dev@xerces.apache.org


To
j-dev@xerces.apache.org
cc
Khaled Noaman/Toronto/IBM@IBMCA, Ken Cai/Toronto/IBM@IBMCA
Subject
JIRA Issue XERCESJ-1370 (was: svn commit: r886273 - in 
/xerces/java/branches/xml-schema-1.1-dev/src/org/apache/xerces/impl: dv/ 
dv/xs/ msg/ xs/ xs/traversers/)






Hi Khaled,

Was a bit confused to see changes for precisionDecimal attached to this 
JIRA issue. Is this all of Ken's patch? Can we mark XERCESJ-1370 [1] as 
resolved or are there still other changes pending?

Thanks.

[1] http://issues.apache.org/jira/browse/XERCESJ-1370

Michael Glavassevich
XML Parser Development
IBM Toronto Lab
E-mail: mrglavas@ca.ibm.com
E-mail: mrglavas@apache.org

knoaman@apache.org wrote on 12/02/2009 02:18:55 PM:

> Author: knoaman
> Date: Wed Dec  2 19:18:54 2009
> New Revision: 886273
> 
> URL: http://svn.apache.org/viewvc?rev=886273&view=rev
> Log:
> Add support for dateTimeStamp simple type and explicitTimezone 
> facet. Patch by Ken Cai with minor modifications by Khaled Noaman.
> 
> Added:
>     xerces/java/branches/xml-schema-1.1-dev/src/org/apache/xerces/
> impl/dv/xs/DateTimeStampDV.java   (with props)
> Modified:
>     xerces/java/branches/xml-schema-1.1-dev/src/org/apache/xerces/
> impl/dv/XSFacets.java
>     xerces/java/branches/xml-schema-1.1-dev/src/org/apache/xerces/
> impl/dv/XSSimpleType.java
>     xerces/java/branches/xml-schema-1.1-dev/src/org/apache/xerces/
> impl/dv/xs/Schema11DVFactoryImpl.java
>     xerces/java/branches/xml-schema-1.1-dev/src/org/apache/xerces/
> impl/dv/xs/TypeValidator.java
>     xerces/java/branches/xml-schema-1.1-dev/src/org/apache/xerces/
> impl/dv/xs/XSSimpleTypeDecl.java
>     xerces/java/branches/xml-schema-1.1-dev/src/org/apache/xerces/
> impl/msg/XMLSchemaMessages.properties
>     xerces/java/branches/xml-schema-1.1-dev/src/org/apache/xerces/
> impl/xs/SchemaSymbols.java
>     xerces/java/branches/xml-schema-1.1-dev/src/org/apache/xerces/
> impl/xs/traversers/XSAttributeChecker.java
>     xerces/java/branches/xml-schema-1.1-dev/src/org/apache/xerces/
> impl/xs/traversers/XSDAbstractTraverser.java

<snip/>

> ---------------------------------------------------------------------
> To unsubscribe, e-mail: commits-unsubscribe@xerces.apache.org
> For additional commands, e-mail: commits-help@xerces.apache.org

JIRA Issue XERCESJ-1370 (was: svn commit: r886273 - in /xerces/java/branches/xml-schema-1.1-dev/src/org/apache/xerces/impl: dv/ dv/xs/ msg/ xs/ xs/traversers/)

Posted by Michael Glavassevich <mr...@ca.ibm.com>.
Hi Khaled,

Was a bit confused to see changes for precisionDecimal attached to this
JIRA issue. Is this all of Ken's patch? Can we mark XERCESJ-1370 [1] as
resolved or are there still other changes pending?

Thanks.

[1] http://issues.apache.org/jira/browse/XERCESJ-1370

Michael Glavassevich
XML Parser Development
IBM Toronto Lab
E-mail: mrglavas@ca.ibm.com
E-mail: mrglavas@apache.org

knoaman@apache.org wrote on 12/02/2009 02:18:55 PM:

> Author: knoaman
> Date: Wed Dec  2 19:18:54 2009
> New Revision: 886273
>
> URL: http://svn.apache.org/viewvc?rev=886273&view=rev
> Log:
> Add support for dateTimeStamp simple type and explicitTimezone
> facet. Patch by Ken Cai with minor modifications by Khaled Noaman.
>
> Added:
>     xerces/java/branches/xml-schema-1.1-dev/src/org/apache/xerces/
> impl/dv/xs/DateTimeStampDV.java   (with props)
> Modified:
>     xerces/java/branches/xml-schema-1.1-dev/src/org/apache/xerces/
> impl/dv/XSFacets.java
>     xerces/java/branches/xml-schema-1.1-dev/src/org/apache/xerces/
> impl/dv/XSSimpleType.java
>     xerces/java/branches/xml-schema-1.1-dev/src/org/apache/xerces/
> impl/dv/xs/Schema11DVFactoryImpl.java
>     xerces/java/branches/xml-schema-1.1-dev/src/org/apache/xerces/
> impl/dv/xs/TypeValidator.java
>     xerces/java/branches/xml-schema-1.1-dev/src/org/apache/xerces/
> impl/dv/xs/XSSimpleTypeDecl.java
>     xerces/java/branches/xml-schema-1.1-dev/src/org/apache/xerces/
> impl/msg/XMLSchemaMessages.properties
>     xerces/java/branches/xml-schema-1.1-dev/src/org/apache/xerces/
> impl/xs/SchemaSymbols.java
>     xerces/java/branches/xml-schema-1.1-dev/src/org/apache/xerces/
> impl/xs/traversers/XSAttributeChecker.java
>     xerces/java/branches/xml-schema-1.1-dev/src/org/apache/xerces/
> impl/xs/traversers/XSDAbstractTraverser.java

<snip/>

> ---------------------------------------------------------------------
> To unsubscribe, e-mail: commits-unsubscribe@xerces.apache.org
> For additional commands, e-mail: commits-help@xerces.apache.org