Author: mukulg
Date: Sat Feb 19 15:46:25 2011
New Revision: 1072361
URL: http://svn.apache.org/viewvc?rev=1072361&view=rev
Log:
improving upon dateTime and dateTimeStamp type implementations. dateTime in XML
Schema 1.1 allows the year 0000 -- this change improves upon this. I've added
methods in ValidationContext interface to support this change (essentially to
set schemaLanguage version from the traverser layer).
Modified:
xerces/java/branches/xml-schema-1.1-dev/src/org/apache/xerces/impl/dv/ValidationContext.java
xerces/java/branches/xml-schema-1.1-dev/src/org/apache/xerces/impl/dv/xs/AbstractDateTimeDV.java
xerces/java/branches/xml-schema-1.1-dev/src/org/apache/xerces/impl/dv/xs/DateTimeDV.java
xerces/java/branches/xml-schema-1.1-dev/src/org/apache/xerces/impl/dv/xs/DateTimeStampDV.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/validation/ValidationState.java
xerces/java/branches/xml-schema-1.1-dev/src/org/apache/xerces/impl/xs/XMLSchemaValidator.java
xerces/java/branches/xml-schema-1.1-dev/src/org/apache/xerces/impl/xs/traversers/XSDComplexTypeTraverser.java
xerces/java/branches/xml-schema-1.1-dev/src/org/apache/xerces/impl/xs/traversers/XSDSimpleTypeTraverser.java
Modified:
xerces/java/branches/xml-schema-1.1-dev/src/org/apache/xerces/impl/dv/ValidationContext.java
URL:
http://svn.apache.org/viewvc/xerces/java/branches/xml-schema-1.1-dev/src/org/apache/xerces/impl/dv/ValidationContext.java?rev=1072361&r1=1072360&r2=1072361&view=diff
==============================================================================
---
xerces/java/branches/xml-schema-1.1-dev/src/org/apache/xerces/impl/dv/ValidationContext.java
(original)
+++
xerces/java/branches/xml-schema-1.1-dev/src/org/apache/xerces/impl/dv/ValidationContext.java
Sat Feb 19 15:46:25 2011
@@ -65,4 +65,8 @@ public interface ValidationContext {
// TypeValidatorHelper
public TypeValidatorHelper getTypeValidatorHelper();
+
+ // indicating XML Schema 1.1 support
+ public void setIsSchema11Context(boolean isSchema11Type);
+ public boolean getIsSchema11Context();
}
Modified:
xerces/java/branches/xml-schema-1.1-dev/src/org/apache/xerces/impl/dv/xs/AbstractDateTimeDV.java
URL:
http://svn.apache.org/viewvc/xerces/java/branches/xml-schema-1.1-dev/src/org/apache/xerces/impl/dv/xs/AbstractDateTimeDV.java?rev=1072361&r1=1072360&r2=1072361&view=diff
==============================================================================
---
xerces/java/branches/xml-schema-1.1-dev/src/org/apache/xerces/impl/dv/xs/AbstractDateTimeDV.java
(original)
+++
xerces/java/branches/xml-schema-1.1-dev/src/org/apache/xerces/impl/dv/xs/AbstractDateTimeDV.java
Sat Feb 19 15:46:25 2011
@@ -413,14 +413,6 @@ public abstract class AbstractDateTimeDV
//REVISIT: should we throw an exception for not valid dates
// or reporting an error message should be sufficient?
- /**
- * XML Schema 1.1 - RQ-123: Allow year 0000 in date related
types.
- */
- if (!Constants.SCHEMA_1_1_SUPPORT && data.year==0 ) {
- throw new RuntimeException("The year \"0000\" is an
illegal year value");
-
- }
-
if ( data.month<1 || data.month>12 ) {
throw new RuntimeException("The month must have values
1 to 12");
@@ -477,6 +469,18 @@ public abstract class AbstractDateTimeDV
}
+ protected void validateDateTime (DateTimeData data, boolean
isSchema11Type) {
+ /**
+ * XML Schema 1.1: Allow year 0000 in date related types.
+ */
+ if (isSchema11Type) {
+ validateDateTime(data);
+ }
+ else if (!isSchema11Type && data.year==0) {
+ throw new RuntimeException("The year \"0000\" is an illegal year
value");
+ }
+ }
+
/**
* Return index of UTC char: 'Z', '+', '-'
*
Modified:
xerces/java/branches/xml-schema-1.1-dev/src/org/apache/xerces/impl/dv/xs/DateTimeDV.java
URL:
http://svn.apache.org/viewvc/xerces/java/branches/xml-schema-1.1-dev/src/org/apache/xerces/impl/dv/xs/DateTimeDV.java?rev=1072361&r1=1072360&r2=1072361&view=diff
==============================================================================
---
xerces/java/branches/xml-schema-1.1-dev/src/org/apache/xerces/impl/dv/xs/DateTimeDV.java
(original)
+++
xerces/java/branches/xml-schema-1.1-dev/src/org/apache/xerces/impl/dv/xs/DateTimeDV.java
Sat Feb 19 15:46:25 2011
@@ -37,8 +37,11 @@ import org.apache.xerces.impl.dv.Validat
*/
public class DateTimeDV extends AbstractDateTimeDV {
+ private boolean fIsSchema11Context = false;
+
public Object getActualValue(String content, ValidationContext context)
throws InvalidDatatypeValueException {
try{
+ fIsSchema11Context = context.getIsSchema11Context();
return parse(content);
} catch(Exception ex){
throw new
InvalidDatatypeValueException("cvc-datatype-valid.1.2.1", new Object[]{content,
"dateTime"});
@@ -73,7 +76,7 @@ public class DateTimeDV extends Abstract
//validate and normalize
//REVISIT: do we need SchemaDateTimeException?
- validateDateTime(date);
+ validateDateTime(date, fIsSchema11Context);
//save unnormalized values
saveUnnormalized(date);
@@ -84,6 +87,10 @@ public class DateTimeDV extends Abstract
return date;
}
+ protected void setIsSchema11Context(boolean isSchema11Context) {
+ fIsSchema11Context = isSchema11Context;
+ }
+
protected XMLGregorianCalendar getXMLGregorianCalendar(DateTimeData date) {
return
datatypeFactory.newXMLGregorianCalendar(BigInteger.valueOf(date.unNormYear),
date.unNormMonth,
date.unNormDay, date.unNormHour, date.unNormMinute,
Modified:
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=1072361&r1=1072360&r2=1072361&view=diff
==============================================================================
---
xerces/java/branches/xml-schema-1.1-dev/src/org/apache/xerces/impl/dv/xs/DateTimeStampDV.java
(original)
+++
xerces/java/branches/xml-schema-1.1-dev/src/org/apache/xerces/impl/dv/xs/DateTimeStampDV.java
Sat Feb 19 15:46:25 2011
@@ -36,11 +36,16 @@ public class DateTimeStampDV extends Dat
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)
+
+ protected DateTimeData parse(String str) throws SchemaDateTimeException {
+ setIsSchema11Context(true);
+ DateTimeData parsedDateTime = super.parse(str);
+ if (parsedDateTime.utc == 0) {
throw new RuntimeException("dateTimeStamp must have timezone");
+ }
+ else {
+ return parsedDateTime;
+ }
}
}
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=1072361&r1=1072360&r2=1072361&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
Sat Feb 19 15:46:25 2011
@@ -243,6 +243,13 @@ public class XSSimpleTypeDecl implements
public TypeValidatorHelper getTypeValidatorHelper() {
return
TypeValidatorHelper.getInstance(Constants.SCHEMA_VERSION_1_0);
}
+ public boolean getIsSchema11Context() {
+ // TODO Auto-generated method stub
+ return false;
+ }
+ public void setIsSchema11Context(boolean isSchema11Type) {
+ // TODO Auto-generated method stub
+ }
};
protected static TypeValidator[] getGDVs() {
@@ -817,7 +824,7 @@ public class XSSimpleTypeDecl implements
*/
void applyFacets(XSFacets facets, int presentFacet, int fixedFacet, short
patternType, ValidationContext context)
throws InvalidDatatypeFacetException {
-
+
// if the object is immutable, should not apply facets...
if(fIsImmutable) return;
ValidatedInfo tempInfo = new ValidatedInfo();
@@ -2046,8 +2053,7 @@ public class XSSimpleTypeDecl implements
//we can still return object for internal use.
private Object getActualValue(Object content, ValidationContext context,
ValidatedInfo validatedInfo, boolean needNormalize)
- throws InvalidDatatypeValueException{
-
+ throws InvalidDatatypeValueException{
String nvalue;
if (needNormalize) {
nvalue = normalize(content, fWhiteSpace);
@@ -2092,7 +2098,7 @@ public class XSSimpleTypeDecl implements
}
}
- validatedInfo.normalizedValue = nvalue;
+ validatedInfo.normalizedValue = nvalue;
Object avalue = fDVs[fValidationDV].getActualValue(nvalue,
context);
validatedInfo.actualValue = avalue;
validatedInfo.actualValueType = fBuiltInKind;
@@ -3155,6 +3161,15 @@ public class XSSimpleTypeDecl implements
public TypeValidatorHelper getTypeValidatorHelper() {
return
TypeValidatorHelper.getInstance(Constants.SCHEMA_VERSION_1_0);
}
+
+ public boolean getIsSchema11Context() {
+ // TODO Auto-generated method stub
+ return false;
+ }
+
+ public void setIsSchema11Context(boolean isSchema11Type) {
+ // TODO Auto-generated method stub
+ }
};
private boolean fAnonymous = false;
@@ -3231,6 +3246,15 @@ public class XSSimpleTypeDecl implements
public TypeValidatorHelper getTypeValidatorHelper() {
return fExternal.getTypeValidatorHelper();
}
+
+ public boolean getIsSchema11Context() {
+ // TODO Auto-generated method stub
+ return false;
+ }
+
+ public void setIsSchema11Context(boolean isSchema11Type) {
+ // TODO Auto-generated method stub
+ }
}
public void reset(){
Modified:
xerces/java/branches/xml-schema-1.1-dev/src/org/apache/xerces/impl/validation/ValidationState.java
URL:
http://svn.apache.org/viewvc/xerces/java/branches/xml-schema-1.1-dev/src/org/apache/xerces/impl/validation/ValidationState.java?rev=1072361&r1=1072360&r2=1072361&view=diff
==============================================================================
---
xerces/java/branches/xml-schema-1.1-dev/src/org/apache/xerces/impl/validation/ValidationState.java
(original)
+++
xerces/java/branches/xml-schema-1.1-dev/src/org/apache/xerces/impl/validation/ValidationState.java
Sat Feb 19 15:46:25 2011
@@ -56,6 +56,8 @@ public class ValidationState implements
private final static Object fNullValue = new Object();
private TypeValidatorHelper fTypeValidatorHelper = null;
+
+ private boolean fIsSchema11Context = false;
//
// public methods
@@ -215,4 +217,12 @@ public class ValidationState implements
public TypeValidatorHelper getTypeValidatorHelper() {
return fTypeValidatorHelper;
}
+
+ public boolean getIsSchema11Context() {
+ return fIsSchema11Context;
+ }
+
+ public void setIsSchema11Context(boolean isSchema11Context) {
+ fIsSchema11Context = isSchema11Context;
+ }
}
Modified:
xerces/java/branches/xml-schema-1.1-dev/src/org/apache/xerces/impl/xs/XMLSchemaValidator.java
URL:
http://svn.apache.org/viewvc/xerces/java/branches/xml-schema-1.1-dev/src/org/apache/xerces/impl/xs/XMLSchemaValidator.java?rev=1072361&r1=1072360&r2=1072361&view=diff
==============================================================================
---
xerces/java/branches/xml-schema-1.1-dev/src/org/apache/xerces/impl/xs/XMLSchemaValidator.java
(original)
+++
xerces/java/branches/xml-schema-1.1-dev/src/org/apache/xerces/impl/xs/XMLSchemaValidator.java
Sat Feb 19 15:46:25 2011
@@ -749,6 +749,7 @@ public class XMLSchemaValidator
throws XNIException {
fValidationState.setNamespaceSupport(namespaceContext);
+ fValidationState.setIsSchema11Context(fSchemaVersion ==
Constants.SCHEMA_VERSION_1_1);
fState4XsiType.setNamespaceSupport(namespaceContext);
fState4ApplyDefault.setNamespaceSupport(namespaceContext);
fLocator = locator;
Modified:
xerces/java/branches/xml-schema-1.1-dev/src/org/apache/xerces/impl/xs/traversers/XSDComplexTypeTraverser.java
URL:
http://svn.apache.org/viewvc/xerces/java/branches/xml-schema-1.1-dev/src/org/apache/xerces/impl/xs/traversers/XSDComplexTypeTraverser.java?rev=1072361&r1=1072360&r2=1072361&view=diff
==============================================================================
---
xerces/java/branches/xml-schema-1.1-dev/src/org/apache/xerces/impl/xs/traversers/XSDComplexTypeTraverser.java
(original)
+++
xerces/java/branches/xml-schema-1.1-dev/src/org/apache/xerces/impl/xs/traversers/XSDComplexTypeTraverser.java
Sat Feb 19 15:46:25 2011
@@ -763,6 +763,7 @@ class XSDComplexTypeTraverser extends X
fXSSimpleType =
fSchemaHandler.fDVFactory.createTypeRestriction(name,schemaDoc.fTargetNamespace,(short)0,baseValidator,null);
try{
fValidationState.setNamespaceSupport(schemaDoc.fNamespaceSupport);
+
fValidationState.setIsSchema11Context(fSchemaHandler.fSchemaVersion ==
Constants.SCHEMA_VERSION_1_1);
fXSSimpleType.applyFacets(facetData, presentFacets,
fixedFacets, fValidationState);
}catch(InvalidDatatypeFacetException ex){
reportSchemaError(ex.getKey(), ex.getArgs(), simpleContent);
Modified:
xerces/java/branches/xml-schema-1.1-dev/src/org/apache/xerces/impl/xs/traversers/XSDSimpleTypeTraverser.java
URL:
http://svn.apache.org/viewvc/xerces/java/branches/xml-schema-1.1-dev/src/org/apache/xerces/impl/xs/traversers/XSDSimpleTypeTraverser.java?rev=1072361&r1=1072360&r2=1072361&view=diff
==============================================================================
---
xerces/java/branches/xml-schema-1.1-dev/src/org/apache/xerces/impl/xs/traversers/XSDSimpleTypeTraverser.java
(original)
+++
xerces/java/branches/xml-schema-1.1-dev/src/org/apache/xerces/impl/xs/traversers/XSDSimpleTypeTraverser.java
Sat Feb 19 15:46:25 2011
@@ -436,6 +436,7 @@ class XSDSimpleTypeTraverser extends XSD
try {
fValidationState.setNamespaceSupport(schemaDoc.fNamespaceSupport);
+
fValidationState.setIsSchema11Context(fSchemaHandler.fSchemaVersion ==
Constants.SCHEMA_VERSION_1_1);
newDecl.applyFacets(fi.facetdata, fi.fPresentFacets,
fi.fFixedFacets, fValidationState);
} catch (InvalidDatatypeFacetException ex) {
reportSchemaError(ex.getKey(), ex.getArgs(), child);
---------------------------------------------------------------------
To unsubscribe, e-mail: [email protected]
For additional commands, e-mail: [email protected]