Author: knoaman
Date: Mon Nov 3 08:01:16 2008
New Revision: 710089
URL: http://svn.apache.org/viewvc?rev=710089&view=rev
Log:
Add support for QT types
Added:
xerces/java/trunk/src/org/apache/xerces/impl/dv/xs/BaseSchemaDVFactory.java
(with props)
xerces/java/trunk/src/org/apache/xerces/impl/dv/xs/ExtendedSchemaDVFactoryImpl.java
(with props)
Modified:
xerces/java/trunk/src/org/apache/xerces/impl/Constants.java
xerces/java/trunk/src/org/apache/xerces/impl/dv/xs/SchemaDVFactoryImpl.java
xerces/java/trunk/src/org/apache/xerces/impl/xs/SchemaGrammar.java
xerces/java/trunk/src/org/apache/xerces/impl/xs/XSModelImpl.java
xerces/java/trunk/src/org/apache/xerces/impl/xs/util/XSGrammarPool.java
Modified: xerces/java/trunk/src/org/apache/xerces/impl/Constants.java
URL:
http://svn.apache.org/viewvc/xerces/java/trunk/src/org/apache/xerces/impl/Constants.java?rev=710089&r1=710088&r2=710089&view=diff
==============================================================================
--- xerces/java/trunk/src/org/apache/xerces/impl/Constants.java (original)
+++ xerces/java/trunk/src/org/apache/xerces/impl/Constants.java Mon Nov 3
08:01:16 2008
@@ -453,6 +453,8 @@
// Constant to enable Schema 1.1 support
public final static boolean SCHEMA_1_1_SUPPORT = false;
+ public final static short SCHEMA_VERSION_1_0 = 1;
+ public final static short SCHEMA_VERSION_1_0_EXTENDED = 2;
// private
Added:
xerces/java/trunk/src/org/apache/xerces/impl/dv/xs/BaseSchemaDVFactory.java
URL:
http://svn.apache.org/viewvc/xerces/java/trunk/src/org/apache/xerces/impl/dv/xs/BaseSchemaDVFactory.java?rev=710089&view=auto
==============================================================================
--- xerces/java/trunk/src/org/apache/xerces/impl/dv/xs/BaseSchemaDVFactory.java
(added)
+++ xerces/java/trunk/src/org/apache/xerces/impl/dv/xs/BaseSchemaDVFactory.java
Mon Nov 3 08:01:16 2008
@@ -0,0 +1,321 @@
+/*
+ * 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.SchemaDVFactory;
+import org.apache.xerces.impl.dv.XSFacets;
+import org.apache.xerces.impl.dv.XSSimpleType;
+import org.apache.xerces.impl.xs.XSDeclarationPool;
+import org.apache.xerces.util.SymbolHash;
+import org.apache.xerces.xs.XSConstants;
+import org.apache.xerces.xs.XSObjectList;
+
+/**
+ * the base factory to create/return built-in schema DVs and create
user-defined DVs
+ *
+ * @xerces.internal
+ *
+ * @author Neeraj Bajaj, Sun Microsystems, inc.
+ * @author Sandy Gao, IBM
+ * @author Khaled Noaman, IBM
+ *
+ * @version $Id$
+ */
+public abstract class BaseSchemaDVFactory extends SchemaDVFactory {
+
+ static final String URI_SCHEMAFORSCHEMA =
"http://www.w3.org/2001/XMLSchema";
+
+ protected XSDeclarationPool fDeclPool = null;
+
+ // create common built-in types
+ protected static void createBuiltInTypes(SymbolHash builtInTypes,
XSSimpleTypeDecl baseAtomicType) {
+ // all schema simple type names
+ final String ANYSIMPLETYPE = "anySimpleType";
+ final String ANYURI = "anyURI";
+ final String BASE64BINARY = "base64Binary";
+ final String BOOLEAN = "boolean";
+ final String BYTE = "byte";
+ final String DATE = "date";
+ final String DATETIME = "dateTime";
+ final String DAY = "gDay";
+ final String DECIMAL = "decimal";
+ final String DOUBLE = "double";
+ final String DURATION = "duration";
+ final String ENTITY = "ENTITY";
+ final String ENTITIES = "ENTITIES";
+ final String FLOAT = "float";
+ final String HEXBINARY = "hexBinary";
+ final String ID = "ID";
+ final String IDREF = "IDREF";
+ final String IDREFS = "IDREFS";
+ final String INT = "int";
+ final String INTEGER = "integer";
+ final String LONG = "long";
+ final String NAME = "Name";
+ final String NEGATIVEINTEGER = "negativeInteger";
+ final String MONTH = "gMonth";
+ final String MONTHDAY = "gMonthDay";
+ final String NCNAME = "NCName";
+ final String NMTOKEN = "NMTOKEN";
+ final String NMTOKENS = "NMTOKENS";
+ final String LANGUAGE = "language";
+ final String NONNEGATIVEINTEGER= "nonNegativeInteger";
+ final String NONPOSITIVEINTEGER= "nonPositiveInteger";
+ final String NORMALIZEDSTRING = "normalizedString";
+ final String NOTATION = "NOTATION";
+ final String POSITIVEINTEGER = "positiveInteger";
+ final String QNAME = "QName";
+ final String SHORT = "short";
+ final String STRING = "string";
+ final String TIME = "time";
+ final String TOKEN = "token";
+ final String UNSIGNEDBYTE = "unsignedByte";
+ final String UNSIGNEDINT = "unsignedInt";
+ final String UNSIGNEDLONG = "unsignedLong";
+ final String UNSIGNEDSHORT = "unsignedShort";
+ final String YEAR = "gYear";
+ final String YEARMONTH = "gYearMonth";
+
+ final XSFacets facets = new XSFacets();
+
+ builtInTypes.put(ANYSIMPLETYPE, XSSimpleTypeDecl.fAnySimpleType);
+
+ XSSimpleTypeDecl stringDV = new XSSimpleTypeDecl(baseAtomicType,
STRING, XSSimpleTypeDecl.DV_STRING, XSSimpleType.ORDERED_FALSE, false, false,
false , true, XSConstants.STRING_DT);
+ builtInTypes.put(STRING, stringDV);
+ builtInTypes.put(BOOLEAN, new XSSimpleTypeDecl(baseAtomicType,
BOOLEAN, XSSimpleTypeDecl.DV_BOOLEAN, XSSimpleType.ORDERED_FALSE, false, true,
false, true, XSConstants.BOOLEAN_DT));
+ XSSimpleTypeDecl decimalDV = new XSSimpleTypeDecl(baseAtomicType,
DECIMAL, XSSimpleTypeDecl.DV_DECIMAL, XSSimpleType.ORDERED_TOTAL, false, false,
true, true, XSConstants.DECIMAL_DT);
+ builtInTypes.put(DECIMAL, decimalDV);
+
+ builtInTypes.put(ANYURI, new XSSimpleTypeDecl(baseAtomicType, ANYURI,
XSSimpleTypeDecl.DV_ANYURI, XSSimpleType.ORDERED_FALSE, false, false, false,
true, XSConstants.ANYURI_DT));
+ builtInTypes.put(BASE64BINARY, new XSSimpleTypeDecl(baseAtomicType,
BASE64BINARY, XSSimpleTypeDecl.DV_BASE64BINARY, XSSimpleType.ORDERED_FALSE,
false, false, false, true, XSConstants.BASE64BINARY_DT));
+
+ XSSimpleTypeDecl durationDV = new XSSimpleTypeDecl(baseAtomicType,
DURATION, XSSimpleTypeDecl.DV_DURATION, XSSimpleType.ORDERED_PARTIAL, false,
false, false, true, XSConstants.DURATION_DT);
+ builtInTypes.put(DURATION, durationDV);
+
+ builtInTypes.put(DATETIME, new XSSimpleTypeDecl(baseAtomicType,
DATETIME, XSSimpleTypeDecl.DV_DATETIME, XSSimpleType.ORDERED_PARTIAL, false,
false, false, true, XSConstants.DATETIME_DT));
+ builtInTypes.put(TIME, new XSSimpleTypeDecl(baseAtomicType, TIME,
XSSimpleTypeDecl.DV_TIME, XSSimpleType.ORDERED_PARTIAL, false, false, false,
true, XSConstants.TIME_DT));
+ builtInTypes.put(DATE, new XSSimpleTypeDecl(baseAtomicType, DATE,
XSSimpleTypeDecl.DV_DATE, XSSimpleType.ORDERED_PARTIAL, false, false, false,
true, XSConstants.DATE_DT));
+ builtInTypes.put(YEARMONTH, new XSSimpleTypeDecl(baseAtomicType,
YEARMONTH, XSSimpleTypeDecl.DV_GYEARMONTH, XSSimpleType.ORDERED_PARTIAL, false,
false, false, true, XSConstants.GYEARMONTH_DT));
+ builtInTypes.put(YEAR, new XSSimpleTypeDecl(baseAtomicType, YEAR,
XSSimpleTypeDecl.DV_GYEAR, XSSimpleType.ORDERED_PARTIAL, false, false, false,
true, XSConstants.GYEAR_DT));
+ builtInTypes.put(MONTHDAY, new XSSimpleTypeDecl(baseAtomicType,
MONTHDAY, XSSimpleTypeDecl.DV_GMONTHDAY, XSSimpleType.ORDERED_PARTIAL, false,
false, false, true, XSConstants.GMONTHDAY_DT));
+ builtInTypes.put(DAY, new XSSimpleTypeDecl(baseAtomicType, DAY,
XSSimpleTypeDecl.DV_GDAY, XSSimpleType.ORDERED_PARTIAL, false, false, false,
true, XSConstants.GDAY_DT));
+ builtInTypes.put(MONTH, new XSSimpleTypeDecl(baseAtomicType, MONTH,
XSSimpleTypeDecl.DV_GMONTH, XSSimpleType.ORDERED_PARTIAL, false, false, false,
true, XSConstants.GMONTH_DT));
+
+ XSSimpleTypeDecl integerDV = new XSSimpleTypeDecl(decimalDV, INTEGER,
XSSimpleTypeDecl.DV_INTEGER, XSSimpleType.ORDERED_TOTAL, false, false, true,
true, XSConstants.INTEGER_DT);
+ builtInTypes.put(INTEGER, integerDV);
+
+ facets.maxInclusive = "0";
+ XSSimpleTypeDecl nonPositiveDV = new XSSimpleTypeDecl(integerDV,
NONPOSITIVEINTEGER, URI_SCHEMAFORSCHEMA, (short)0, false, null,
XSConstants.NONPOSITIVEINTEGER_DT);
+ nonPositiveDV.applyFacets1(facets , XSSimpleType.FACET_MAXINCLUSIVE,
(short)0);
+ builtInTypes.put(NONPOSITIVEINTEGER, nonPositiveDV);
+
+ facets.maxInclusive = "-1";
+ XSSimpleTypeDecl negativeDV = new XSSimpleTypeDecl(nonPositiveDV,
NEGATIVEINTEGER, URI_SCHEMAFORSCHEMA, (short)0, false, null,
XSConstants.NEGATIVEINTEGER_DT);
+ negativeDV.applyFacets1(facets , XSSimpleType.FACET_MAXINCLUSIVE,
(short)0);
+ builtInTypes.put(NEGATIVEINTEGER, negativeDV);
+
+ facets.maxInclusive = "9223372036854775807";
+ facets.minInclusive = "-9223372036854775808";
+ XSSimpleTypeDecl longDV = new XSSimpleTypeDecl(integerDV, LONG,
URI_SCHEMAFORSCHEMA, (short)0, false, null, XSConstants.LONG_DT);
+ longDV.applyFacets1(facets , (short)(XSSimpleType.FACET_MAXINCLUSIVE |
XSSimpleType.FACET_MININCLUSIVE), (short)0 );
+ builtInTypes.put(LONG, longDV);
+
+ facets.maxInclusive = "2147483647";
+ facets.minInclusive = "-2147483648";
+ XSSimpleTypeDecl intDV = new XSSimpleTypeDecl(longDV, INT,
URI_SCHEMAFORSCHEMA, (short)0, false, null, XSConstants.INT_DT);
+ intDV.applyFacets1(facets, (short)(XSSimpleType.FACET_MAXINCLUSIVE |
XSSimpleType.FACET_MININCLUSIVE), (short)0 );
+ builtInTypes.put(INT, intDV);
+
+ facets.maxInclusive = "32767";
+ facets.minInclusive = "-32768";
+ XSSimpleTypeDecl shortDV = new XSSimpleTypeDecl(intDV, SHORT ,
URI_SCHEMAFORSCHEMA, (short)0, false, null, XSConstants.SHORT_DT);
+ shortDV.applyFacets1(facets, (short)(XSSimpleType.FACET_MAXINCLUSIVE |
XSSimpleType.FACET_MININCLUSIVE), (short)0 );
+ builtInTypes.put(SHORT, shortDV);
+
+ facets.maxInclusive = "127";
+ facets.minInclusive = "-128";
+ XSSimpleTypeDecl byteDV = new XSSimpleTypeDecl(shortDV, BYTE ,
URI_SCHEMAFORSCHEMA, (short)0, false, null, XSConstants.BYTE_DT);
+ byteDV.applyFacets1(facets, (short)(XSSimpleType.FACET_MAXINCLUSIVE |
XSSimpleType.FACET_MININCLUSIVE), (short)0 );
+ builtInTypes.put(BYTE, byteDV);
+
+ facets.minInclusive = "0" ;
+ XSSimpleTypeDecl nonNegativeDV = new XSSimpleTypeDecl(integerDV,
NONNEGATIVEINTEGER , URI_SCHEMAFORSCHEMA, (short)0, false, null,
XSConstants.NONNEGATIVEINTEGER_DT);
+ nonNegativeDV.applyFacets1(facets, XSSimpleType.FACET_MININCLUSIVE,
(short)0 );
+ builtInTypes.put(NONNEGATIVEINTEGER, nonNegativeDV);
+
+ facets.maxInclusive = "18446744073709551615" ;
+ XSSimpleTypeDecl unsignedLongDV = new XSSimpleTypeDecl(nonNegativeDV,
UNSIGNEDLONG , URI_SCHEMAFORSCHEMA, (short)0, false, null,
XSConstants.UNSIGNEDLONG_DT);
+ unsignedLongDV.applyFacets1(facets, XSSimpleType.FACET_MAXINCLUSIVE,
(short)0 );
+ builtInTypes.put(UNSIGNEDLONG, unsignedLongDV);
+
+ facets.maxInclusive = "4294967295" ;
+ XSSimpleTypeDecl unsignedIntDV = new XSSimpleTypeDecl(unsignedLongDV,
UNSIGNEDINT , URI_SCHEMAFORSCHEMA, (short)0, false, null,
XSConstants.UNSIGNEDINT_DT);
+ unsignedIntDV.applyFacets1(facets, XSSimpleType.FACET_MAXINCLUSIVE,
(short)0 );
+ builtInTypes.put(UNSIGNEDINT, unsignedIntDV);
+
+ facets.maxInclusive = "65535" ;
+ XSSimpleTypeDecl unsignedShortDV = new XSSimpleTypeDecl(unsignedIntDV,
UNSIGNEDSHORT , URI_SCHEMAFORSCHEMA, (short)0, false, null,
XSConstants.UNSIGNEDSHORT_DT);
+ unsignedShortDV.applyFacets1(facets, XSSimpleType.FACET_MAXINCLUSIVE,
(short)0 );
+ builtInTypes.put(UNSIGNEDSHORT, unsignedShortDV);
+
+ facets.maxInclusive = "255" ;
+ XSSimpleTypeDecl unsignedByteDV = new
XSSimpleTypeDecl(unsignedShortDV, UNSIGNEDBYTE , URI_SCHEMAFORSCHEMA, (short)0,
false, null, XSConstants.UNSIGNEDBYTE_DT);
+ unsignedByteDV.applyFacets1(facets, XSSimpleType.FACET_MAXINCLUSIVE,
(short)0 );
+ builtInTypes.put(UNSIGNEDBYTE, unsignedByteDV);
+
+ facets.minInclusive = "1" ;
+ XSSimpleTypeDecl positiveIntegerDV = new
XSSimpleTypeDecl(nonNegativeDV, POSITIVEINTEGER , URI_SCHEMAFORSCHEMA,
(short)0, false, null, XSConstants.POSITIVEINTEGER_DT);
+ positiveIntegerDV.applyFacets1(facets,
XSSimpleType.FACET_MININCLUSIVE, (short)0 );
+ builtInTypes.put(POSITIVEINTEGER, positiveIntegerDV);
+
+ builtInTypes.put(FLOAT, new XSSimpleTypeDecl(baseAtomicType, FLOAT,
XSSimpleTypeDecl.DV_FLOAT, XSSimpleType.ORDERED_PARTIAL, true, true, true,
true, XSConstants.FLOAT_DT));
+ builtInTypes.put(DOUBLE, new XSSimpleTypeDecl(baseAtomicType, DOUBLE,
XSSimpleTypeDecl.DV_DOUBLE, XSSimpleType.ORDERED_PARTIAL, true, true, true,
true, XSConstants.DOUBLE_DT));
+ builtInTypes.put(HEXBINARY, new XSSimpleTypeDecl(baseAtomicType,
HEXBINARY, XSSimpleTypeDecl.DV_HEXBINARY, XSSimpleType.ORDERED_FALSE, false,
false, false, true, XSConstants.HEXBINARY_DT));
+ builtInTypes.put(NOTATION, new XSSimpleTypeDecl(baseAtomicType,
NOTATION, XSSimpleTypeDecl.DV_NOTATION, XSSimpleType.ORDERED_FALSE, false,
false, false, true, XSConstants.NOTATION_DT));
+
+ facets.whiteSpace = XSSimpleType.WS_REPLACE;
+ XSSimpleTypeDecl normalizedDV = new XSSimpleTypeDecl(stringDV,
NORMALIZEDSTRING , URI_SCHEMAFORSCHEMA, (short)0, false, null,
XSConstants.NORMALIZEDSTRING_DT);
+ normalizedDV.applyFacets1(facets, XSSimpleType.FACET_WHITESPACE,
(short)0 );
+ builtInTypes.put(NORMALIZEDSTRING, normalizedDV);
+
+ facets.whiteSpace = XSSimpleType.WS_COLLAPSE;
+ XSSimpleTypeDecl tokenDV = new XSSimpleTypeDecl(normalizedDV, TOKEN ,
URI_SCHEMAFORSCHEMA, (short)0, false, null, XSConstants.TOKEN_DT);
+ tokenDV.applyFacets1(facets, XSSimpleType.FACET_WHITESPACE, (short)0 );
+ builtInTypes.put(TOKEN, tokenDV);
+
+ facets.whiteSpace = XSSimpleType.WS_COLLAPSE;
+ facets.pattern = "([a-zA-Z]{1,8})(-[a-zA-Z0-9]{1,8})*";
+ XSSimpleTypeDecl languageDV = new XSSimpleTypeDecl(tokenDV, LANGUAGE ,
URI_SCHEMAFORSCHEMA, (short)0, false, null, XSConstants.LANGUAGE_DT);
+ languageDV.applyFacets1(facets, (short)(XSSimpleType.FACET_WHITESPACE
| XSSimpleType.FACET_PATTERN) ,(short)0);
+ builtInTypes.put(LANGUAGE, languageDV);
+
+ facets.whiteSpace = XSSimpleType.WS_COLLAPSE;
+ XSSimpleTypeDecl nameDV = new XSSimpleTypeDecl(tokenDV, NAME ,
URI_SCHEMAFORSCHEMA, (short)0, false, null, XSConstants.NAME_DT);
+ nameDV.applyFacets1(facets, XSSimpleType.FACET_WHITESPACE, (short)0,
XSSimpleTypeDecl.SPECIAL_PATTERN_NAME);
+ builtInTypes.put(NAME, nameDV);
+
+ facets.whiteSpace = XSSimpleType.WS_COLLAPSE;
+ XSSimpleTypeDecl ncnameDV = new XSSimpleTypeDecl(nameDV, NCNAME ,
URI_SCHEMAFORSCHEMA, (short)0, false, null, XSConstants.NCNAME_DT) ;
+ ncnameDV.applyFacets1(facets, XSSimpleType.FACET_WHITESPACE, (short)0,
XSSimpleTypeDecl.SPECIAL_PATTERN_NCNAME);
+ builtInTypes.put(NCNAME, ncnameDV);
+
+ builtInTypes.put(QNAME, new XSSimpleTypeDecl(baseAtomicType, QNAME,
XSSimpleTypeDecl.DV_QNAME, XSSimpleType.ORDERED_FALSE, false, false, false,
true, XSConstants.QNAME_DT));
+
+ builtInTypes.put(ID, new XSSimpleTypeDecl(ncnameDV, ID,
XSSimpleTypeDecl.DV_ID, XSSimpleType.ORDERED_FALSE, false, false, false , true,
XSConstants.ID_DT));
+ XSSimpleTypeDecl idrefDV = new XSSimpleTypeDecl(ncnameDV, IDREF ,
XSSimpleTypeDecl.DV_IDREF, XSSimpleType.ORDERED_FALSE, false, false, false,
true, XSConstants.IDREF_DT);
+ builtInTypes.put(IDREF, idrefDV);
+
+ facets.minLength = 1;
+ XSSimpleTypeDecl tempDV = new XSSimpleTypeDecl(null,
URI_SCHEMAFORSCHEMA, (short)0, idrefDV, true, null);
+ XSSimpleTypeDecl idrefsDV = new XSSimpleTypeDecl(tempDV, IDREFS,
URI_SCHEMAFORSCHEMA, (short)0, false, null);
+ idrefsDV.applyFacets1(facets, XSSimpleType.FACET_MINLENGTH, (short)0);
+ builtInTypes.put(IDREFS, idrefsDV);
+
+ XSSimpleTypeDecl entityDV = new XSSimpleTypeDecl(ncnameDV, ENTITY ,
XSSimpleTypeDecl.DV_ENTITY, XSSimpleType.ORDERED_FALSE, false, false, false,
true, XSConstants.ENTITY_DT);
+ builtInTypes.put(ENTITY, entityDV);
+
+ facets.minLength = 1;
+ tempDV = new XSSimpleTypeDecl(null, URI_SCHEMAFORSCHEMA, (short)0,
entityDV, true, null);
+ XSSimpleTypeDecl entitiesDV = new XSSimpleTypeDecl(tempDV, ENTITIES,
URI_SCHEMAFORSCHEMA, (short)0, false, null);
+ entitiesDV.applyFacets1(facets, XSSimpleType.FACET_MINLENGTH,
(short)0);
+ builtInTypes.put(ENTITIES, entitiesDV);
+
+ facets.whiteSpace = XSSimpleType.WS_COLLAPSE;
+ XSSimpleTypeDecl nmtokenDV = new XSSimpleTypeDecl(tokenDV, NMTOKEN,
URI_SCHEMAFORSCHEMA, (short)0, false, null, XSConstants.NMTOKEN_DT);
+ nmtokenDV.applyFacets1(facets, XSSimpleType.FACET_WHITESPACE,
(short)0, XSSimpleTypeDecl.SPECIAL_PATTERN_NMTOKEN);
+ builtInTypes.put(NMTOKEN, nmtokenDV);
+
+ facets.minLength = 1;
+ tempDV = new XSSimpleTypeDecl(null, URI_SCHEMAFORSCHEMA, (short)0,
nmtokenDV, true, null);
+ XSSimpleTypeDecl nmtokensDV = new XSSimpleTypeDecl(tempDV, NMTOKENS,
URI_SCHEMAFORSCHEMA, (short)0, false, null);
+ nmtokensDV.applyFacets1(facets, XSSimpleType.FACET_MINLENGTH,
(short)0);
+ builtInTypes.put(NMTOKENS, nmtokensDV);
+ } //createBuiltInTypes()
+
+ /**
+ * Create a new simple type which is derived by restriction from another
+ * simple type.
+ *
+ * @param name name of the new type, could be null
+ * @param targetNamespace target namespace of the new type, could be null
+ * @param finalSet value of "final"
+ * @param base base type of the new type
+ * @param annotations set of annotations
+ * @return the newly created simple type
+ */
+ public XSSimpleType createTypeRestriction(String name, String
targetNamespace,
+ short finalSet, XSSimpleType
base, XSObjectList annotations) {
+
+ if (fDeclPool != null) {
+ XSSimpleTypeDecl st= fDeclPool.getSimpleTypeDecl();
+ return st.setRestrictionValues((XSSimpleTypeDecl)base, name,
targetNamespace, finalSet, annotations);
+ }
+ return new XSSimpleTypeDecl((XSSimpleTypeDecl)base, name,
targetNamespace, finalSet, false, annotations);
+ }
+
+ /**
+ * Create a new simple type which is derived by list from another simple
+ * type.
+ *
+ * @param name name of the new type, could be null
+ * @param targetNamespace target namespace of the new type, could be null
+ * @param finalSet value of "final"
+ * @param itemType item type of the list type
+ * @param annotations set of annotations
+ * @return the newly created simple type
+ */
+ public XSSimpleType createTypeList(String name, String targetNamespace,
+ short finalSet, XSSimpleType itemType,
+ XSObjectList annotations) {
+ if (fDeclPool != null) {
+ XSSimpleTypeDecl st= fDeclPool.getSimpleTypeDecl();
+ return st.setListValues(name, targetNamespace, finalSet,
(XSSimpleTypeDecl)itemType, annotations);
+ }
+ return new XSSimpleTypeDecl(name, targetNamespace, finalSet,
(XSSimpleTypeDecl)itemType, false, annotations);
+ }
+
+ /**
+ * Create a new simple type which is derived by union from a list of other
+ * simple types.
+ *
+ * @param name name of the new type, could be null
+ * @param targetNamespace target namespace of the new type, could be null
+ * @param finalSet value of "final"
+ * @param memberTypes member types of the union type
+ * @param annotations set of annotations
+ * @return the newly created simple type
+ */
+ public XSSimpleType createTypeUnion(String name, String targetNamespace,
+ short finalSet, XSSimpleType[]
memberTypes,
+ XSObjectList annotations) {
+ int typeNum = memberTypes.length;
+ XSSimpleTypeDecl[] mtypes = new XSSimpleTypeDecl[typeNum];
+ System.arraycopy(memberTypes, 0, mtypes, 0, typeNum);
+
+ if (fDeclPool != null) {
+ XSSimpleTypeDecl st= fDeclPool.getSimpleTypeDecl();
+ return st.setUnionValues(name, targetNamespace, finalSet, mtypes,
annotations);
+ }
+ return new XSSimpleTypeDecl(name, targetNamespace, finalSet, mtypes,
annotations);
+ }
+
+ public void setDeclPool (XSDeclarationPool declPool){
+ fDeclPool = declPool;
+ }
+
+} //BaseSchemaDVFactory
Propchange:
xerces/java/trunk/src/org/apache/xerces/impl/dv/xs/BaseSchemaDVFactory.java
------------------------------------------------------------------------------
svn:eol-style = native
Propchange:
xerces/java/trunk/src/org/apache/xerces/impl/dv/xs/BaseSchemaDVFactory.java
------------------------------------------------------------------------------
svn:keywords = Author Date Id Revision
Added:
xerces/java/trunk/src/org/apache/xerces/impl/dv/xs/ExtendedSchemaDVFactoryImpl.java
URL:
http://svn.apache.org/viewvc/xerces/java/trunk/src/org/apache/xerces/impl/dv/xs/ExtendedSchemaDVFactoryImpl.java?rev=710089&view=auto
==============================================================================
---
xerces/java/trunk/src/org/apache/xerces/impl/dv/xs/ExtendedSchemaDVFactoryImpl.java
(added)
+++
xerces/java/trunk/src/org/apache/xerces/impl/dv/xs/ExtendedSchemaDVFactoryImpl.java
Mon Nov 3 08:01:16 2008
@@ -0,0 +1,82 @@
+/*
+ * 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.XSSimpleType;
+import org.apache.xerces.util.SymbolHash;
+
+/**
+ * A special factory to create/return built-in schema DVs and create
user-defined DVs
+ * that includes anyAtomicType, yearMonthDuration and dayTimeDuration
+ *
+ * @xerces.internal
+ *
+ * @author Khaled Noaman, IBM
+ *
+ * @version $Id$
+ */
+public class ExtendedSchemaDVFactoryImpl extends BaseSchemaDVFactory {
+
+ static SymbolHash fBuiltInTypes = new SymbolHash();
+ static {
+ createBuiltInTypes();
+ }
+
+ // create all built-in types
+ static void createBuiltInTypes() {
+ final String ANYATOMICTYPE = "anyAtomicType";
+ final String DURATION = "duration";
+ final String YEARMONTHDURATION = "yearMonthDuration";
+ final String DAYTIMEDURATION = "dayTimeDuration";
+
+ createBuiltInTypes(fBuiltInTypes, XSSimpleTypeDecl.fAnyAtomicType);
+
+ // add anyAtomicType
+ fBuiltInTypes.put(ANYATOMICTYPE, XSSimpleTypeDecl.fAnyAtomicType);
+
+ // add 2 duration types
+ 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));
+ } //createBuiltInTypes()
+
+ /**
+ * Get a built-in simple type of the given name
+ * REVISIT: its still not decided within the Schema WG how to define the
+ * ur-types and if all simple types should be derived from a
+ * complex type, so as of now we ignore the fact that
anySimpleType
+ * is derived from anyType, and pass 'null' as the base of
+ * anySimpleType. It needs to be changed as per the decision
taken.
+ *
+ * @param name the name of the datatype
+ * @return the datatype validator of the given name
+ */
+ public XSSimpleType getBuiltInType(String name) {
+ return (XSSimpleType)fBuiltInTypes.get(name);
+ }
+
+ /**
+ * get all built-in simple types, which are stored in a hashtable keyed by
+ * the name
+ *
+ * @return a hashtable which contains all built-in simple types
+ */
+ public SymbolHash getBuiltInTypes() {
+ return (SymbolHash)fBuiltInTypes.makeClone();
+ }
+}
Propchange:
xerces/java/trunk/src/org/apache/xerces/impl/dv/xs/ExtendedSchemaDVFactoryImpl.java
------------------------------------------------------------------------------
svn:eol-style = native
Propchange:
xerces/java/trunk/src/org/apache/xerces/impl/dv/xs/ExtendedSchemaDVFactoryImpl.java
------------------------------------------------------------------------------
svn:keywords = Author Date Id Revision
Modified:
xerces/java/trunk/src/org/apache/xerces/impl/dv/xs/SchemaDVFactoryImpl.java
URL:
http://svn.apache.org/viewvc/xerces/java/trunk/src/org/apache/xerces/impl/dv/xs/SchemaDVFactoryImpl.java?rev=710089&r1=710088&r2=710089&view=diff
==============================================================================
--- xerces/java/trunk/src/org/apache/xerces/impl/dv/xs/SchemaDVFactoryImpl.java
(original)
+++ xerces/java/trunk/src/org/apache/xerces/impl/dv/xs/SchemaDVFactoryImpl.java
Mon Nov 3 08:01:16 2008
@@ -17,35 +17,34 @@
package org.apache.xerces.impl.dv.xs;
-import org.apache.xerces.impl.Constants;
-import org.apache.xerces.impl.dv.SchemaDVFactory;
-import org.apache.xerces.impl.dv.XSFacets;
import org.apache.xerces.impl.dv.XSSimpleType;
-import org.apache.xerces.impl.xs.XSDeclarationPool;
import org.apache.xerces.util.SymbolHash;
-import org.apache.xerces.xs.XSConstants;
-import org.apache.xerces.xs.XSObjectList;
/**
- * the factory to create/return built-in schema DVs and create user-defined DVs
+ * the factory to create/return built-in schema 1.0 DVs and create
user-defined DVs
*
* @xerces.internal
*
* @author Neeraj Bajaj, Sun Microsystems, inc.
* @author Sandy Gao, IBM
+ * @author Khaled Noaman, IBM
*
* @version $Id$
*/
-public class SchemaDVFactoryImpl extends SchemaDVFactory {
-
- static final String URI_SCHEMAFORSCHEMA =
"http://www.w3.org/2001/XMLSchema";
+public class SchemaDVFactoryImpl extends BaseSchemaDVFactory {
static final SymbolHash fBuiltInTypes = new SymbolHash();
+
static {
createBuiltInTypes();
}
- protected XSDeclarationPool fDeclPool = null;
+ // create all built-in types
+ static void createBuiltInTypes() {
+ createBuiltInTypes(fBuiltInTypes, XSSimpleTypeDecl.fAnySimpleType);
+
+ // TODO: move specific 1.0 DV implementation from base
+ } //createBuiltInTypes()
/**
* Get a built-in simple type of the given name
@@ -72,307 +71,4 @@
return (SymbolHash)fBuiltInTypes.makeClone();
}
- /**
- * Create a new simple type which is derived by restriction from another
- * simple type.
- *
- * @param name name of the new type, could be null
- * @param targetNamespace target namespace of the new type, could be null
- * @param finalSet value of "final"
- * @param base base type of the new type
- * @param annotations set of annotations
- * @return the newly created simple type
- */
- public XSSimpleType createTypeRestriction(String name, String
targetNamespace,
- short finalSet, XSSimpleType
base, XSObjectList annotations) {
-
- if (fDeclPool != null) {
- XSSimpleTypeDecl st= fDeclPool.getSimpleTypeDecl();
- return st.setRestrictionValues((XSSimpleTypeDecl)base, name,
targetNamespace, finalSet, annotations);
- }
- return new XSSimpleTypeDecl((XSSimpleTypeDecl)base, name,
targetNamespace, finalSet, false, annotations);
- }
-
- /**
- * Create a new simple type which is derived by list from another simple
- * type.
- *
- * @param name name of the new type, could be null
- * @param targetNamespace target namespace of the new type, could be null
- * @param finalSet value of "final"
- * @param itemType item type of the list type
- * @param annotations set of annotations
- * @return the newly created simple type
- */
- public XSSimpleType createTypeList(String name, String targetNamespace,
- short finalSet, XSSimpleType itemType,
- XSObjectList annotations) {
- if (fDeclPool != null) {
- XSSimpleTypeDecl st= fDeclPool.getSimpleTypeDecl();
- return st.setListValues(name, targetNamespace, finalSet,
(XSSimpleTypeDecl)itemType, annotations);
- }
- return new XSSimpleTypeDecl(name, targetNamespace, finalSet,
(XSSimpleTypeDecl)itemType, false, annotations);
- }
-
- /**
- * Create a new simple type which is derived by union from a list of other
- * simple types.
- *
- * @param name name of the new type, could be null
- * @param targetNamespace target namespace of the new type, could be null
- * @param finalSet value of "final"
- * @param memberTypes member types of the union type
- * @param annotations set of annotations
- * @return the newly created simple type
- */
- public XSSimpleType createTypeUnion(String name, String targetNamespace,
- short finalSet, XSSimpleType[]
memberTypes,
- XSObjectList annotations) {
- int typeNum = memberTypes.length;
- XSSimpleTypeDecl[] mtypes = new XSSimpleTypeDecl[typeNum];
- System.arraycopy(memberTypes, 0, mtypes, 0, typeNum);
-
- if (fDeclPool != null) {
- XSSimpleTypeDecl st= fDeclPool.getSimpleTypeDecl();
- return st.setUnionValues(name, targetNamespace, finalSet, mtypes,
annotations);
- }
- return new XSSimpleTypeDecl(name, targetNamespace, finalSet, mtypes,
annotations);
- }
-
- // create all built-in types
- static void createBuiltInTypes() {
- // all schema simple type names
- final String ANYSIMPLETYPE = "anySimpleType";
- final String ANYATOMICTYPE = "anyAtomicType";
- final String ANYURI = "anyURI";
- final String BASE64BINARY = "base64Binary";
- final String BOOLEAN = "boolean";
- final String BYTE = "byte";
- final String DATE = "date";
- final String DATETIME = "dateTime";
- final String DAY = "gDay";
- final String DECIMAL = "decimal";
- final String DOUBLE = "double";
- final String DURATION = "duration";
- final String ENTITY = "ENTITY";
- final String ENTITIES = "ENTITIES";
- final String FLOAT = "float";
- final String HEXBINARY = "hexBinary";
- final String ID = "ID";
- final String IDREF = "IDREF";
- final String IDREFS = "IDREFS";
- final String INT = "int";
- final String INTEGER = "integer";
- final String LONG = "long";
- final String NAME = "Name";
- final String NEGATIVEINTEGER = "negativeInteger";
- final String MONTH = "gMonth";
- final String MONTHDAY = "gMonthDay";
- final String NCNAME = "NCName";
- final String NMTOKEN = "NMTOKEN";
- final String NMTOKENS = "NMTOKENS";
- final String LANGUAGE = "language";
- final String NONNEGATIVEINTEGER= "nonNegativeInteger";
- final String NONPOSITIVEINTEGER= "nonPositiveInteger";
- final String NORMALIZEDSTRING = "normalizedString";
- final String NOTATION = "NOTATION";
- final String POSITIVEINTEGER = "positiveInteger";
- final String QNAME = "QName";
- final String SHORT = "short";
- final String STRING = "string";
- final String TIME = "time";
- final String TOKEN = "token";
- final String UNSIGNEDBYTE = "unsignedByte";
- final String UNSIGNEDINT = "unsignedInt";
- final String UNSIGNEDLONG = "unsignedLong";
- final String UNSIGNEDSHORT = "unsignedShort";
- final String YEAR = "gYear";
- final String YEARMONTH = "gYearMonth";
- final String YEARMONTHDURATION = "yearMonthDuration";
- final String DAYTIMEDURATION = "dayTimeDuration";
- final String PRECISIONDECIMAL = "precisionDecimal";
-
- final XSFacets facets = new XSFacets();
-
- //REVISIT: passing "anyType" here.
- XSSimpleTypeDecl anySimpleType = XSSimpleTypeDecl.fAnySimpleType;
- XSSimpleTypeDecl anyAtomicType = XSSimpleTypeDecl.fAnyAtomicType;
- XSSimpleTypeDecl baseAtomicType = null;
-
- if (Constants.SCHEMA_1_1_SUPPORT) {
- baseAtomicType = anyAtomicType;
- fBuiltInTypes.put(ANYATOMICTYPE, anyAtomicType);
- }
- else {
- baseAtomicType = anySimpleType;
- }
-
- fBuiltInTypes.put(ANYSIMPLETYPE, anySimpleType);
- XSSimpleTypeDecl stringDV = new XSSimpleTypeDecl(baseAtomicType,
STRING, XSSimpleTypeDecl.DV_STRING, XSSimpleType.ORDERED_FALSE, false, false,
false , true, XSConstants.STRING_DT);
- fBuiltInTypes.put(STRING, stringDV);
- fBuiltInTypes.put(BOOLEAN, new XSSimpleTypeDecl(baseAtomicType,
BOOLEAN, XSSimpleTypeDecl.DV_BOOLEAN, XSSimpleType.ORDERED_FALSE, false, true,
false, true, XSConstants.BOOLEAN_DT));
- XSSimpleTypeDecl decimalDV = new XSSimpleTypeDecl(baseAtomicType,
DECIMAL, XSSimpleTypeDecl.DV_DECIMAL, XSSimpleType.ORDERED_TOTAL, false, false,
true, true, XSConstants.DECIMAL_DT);
- fBuiltInTypes.put(DECIMAL, decimalDV);
-
- fBuiltInTypes.put(ANYURI, new XSSimpleTypeDecl(baseAtomicType, ANYURI,
XSSimpleTypeDecl.DV_ANYURI, XSSimpleType.ORDERED_FALSE, false, false, false,
true, XSConstants.ANYURI_DT));
- fBuiltInTypes.put(BASE64BINARY, new XSSimpleTypeDecl(baseAtomicType,
BASE64BINARY, XSSimpleTypeDecl.DV_BASE64BINARY, XSSimpleType.ORDERED_FALSE,
false, false, false, true, XSConstants.BASE64BINARY_DT));
-
- XSSimpleTypeDecl durationDV = new XSSimpleTypeDecl(baseAtomicType,
DURATION, XSSimpleTypeDecl.DV_DURATION, XSSimpleType.ORDERED_PARTIAL, false,
false, false, true, XSConstants.DURATION_DT);
- fBuiltInTypes.put(DURATION, durationDV);
-
- if (Constants.SCHEMA_1_1_SUPPORT) {
- 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));
- fBuiltInTypes.put(PRECISIONDECIMAL, new
XSSimpleTypeDecl(anySimpleType, PRECISIONDECIMAL,
XSSimpleTypeDecl.DV_PRECISIONDECIMAL, XSSimpleType.ORDERED_PARTIAL, false,
false, true, true, XSSimpleTypeDecl.PRECISIONDECIMAL_DT));
- }
-
- fBuiltInTypes.put(DATETIME, new XSSimpleTypeDecl(baseAtomicType,
DATETIME, XSSimpleTypeDecl.DV_DATETIME, XSSimpleType.ORDERED_PARTIAL, false,
false, false, true, XSConstants.DATETIME_DT));
- fBuiltInTypes.put(TIME, new XSSimpleTypeDecl(baseAtomicType, TIME,
XSSimpleTypeDecl.DV_TIME, XSSimpleType.ORDERED_PARTIAL, false, false, false,
true, XSConstants.TIME_DT));
- fBuiltInTypes.put(DATE, new XSSimpleTypeDecl(baseAtomicType, DATE,
XSSimpleTypeDecl.DV_DATE, XSSimpleType.ORDERED_PARTIAL, false, false, false,
true, XSConstants.DATE_DT));
- fBuiltInTypes.put(YEARMONTH, new XSSimpleTypeDecl(baseAtomicType,
YEARMONTH, XSSimpleTypeDecl.DV_GYEARMONTH, XSSimpleType.ORDERED_PARTIAL, false,
false, false, true, XSConstants.GYEARMONTH_DT));
- fBuiltInTypes.put(YEAR, new XSSimpleTypeDecl(baseAtomicType, YEAR,
XSSimpleTypeDecl.DV_GYEAR, XSSimpleType.ORDERED_PARTIAL, false, false, false,
true, XSConstants.GYEAR_DT));
- fBuiltInTypes.put(MONTHDAY, new XSSimpleTypeDecl(baseAtomicType,
MONTHDAY, XSSimpleTypeDecl.DV_GMONTHDAY, XSSimpleType.ORDERED_PARTIAL, false,
false, false, true, XSConstants.GMONTHDAY_DT));
- fBuiltInTypes.put(DAY, new XSSimpleTypeDecl(baseAtomicType, DAY,
XSSimpleTypeDecl.DV_GDAY, XSSimpleType.ORDERED_PARTIAL, false, false, false,
true, XSConstants.GDAY_DT));
- fBuiltInTypes.put(MONTH, new XSSimpleTypeDecl(baseAtomicType, MONTH,
XSSimpleTypeDecl.DV_GMONTH, XSSimpleType.ORDERED_PARTIAL, false, false, false,
true, XSConstants.GMONTH_DT));
-
- XSSimpleTypeDecl integerDV = new XSSimpleTypeDecl(decimalDV, INTEGER,
XSSimpleTypeDecl.DV_INTEGER, XSSimpleType.ORDERED_TOTAL, false, false, true,
true, XSConstants.INTEGER_DT);
- fBuiltInTypes.put(INTEGER, integerDV);
-
- facets.maxInclusive = "0";
- XSSimpleTypeDecl nonPositiveDV = new XSSimpleTypeDecl(integerDV,
NONPOSITIVEINTEGER, URI_SCHEMAFORSCHEMA, (short)0, false, null,
XSConstants.NONPOSITIVEINTEGER_DT);
- nonPositiveDV.applyFacets1(facets , XSSimpleType.FACET_MAXINCLUSIVE,
(short)0);
- fBuiltInTypes.put(NONPOSITIVEINTEGER, nonPositiveDV);
-
- facets.maxInclusive = "-1";
- XSSimpleTypeDecl negativeDV = new XSSimpleTypeDecl(nonPositiveDV,
NEGATIVEINTEGER, URI_SCHEMAFORSCHEMA, (short)0, false, null,
XSConstants.NEGATIVEINTEGER_DT);
- negativeDV.applyFacets1(facets , XSSimpleType.FACET_MAXINCLUSIVE,
(short)0);
- fBuiltInTypes.put(NEGATIVEINTEGER, negativeDV);
-
- facets.maxInclusive = "9223372036854775807";
- facets.minInclusive = "-9223372036854775808";
- XSSimpleTypeDecl longDV = new XSSimpleTypeDecl(integerDV, LONG,
URI_SCHEMAFORSCHEMA, (short)0, false, null, XSConstants.LONG_DT);
- longDV.applyFacets1(facets , (short)(XSSimpleType.FACET_MAXINCLUSIVE |
XSSimpleType.FACET_MININCLUSIVE), (short)0 );
- fBuiltInTypes.put(LONG, longDV);
-
-
- facets.maxInclusive = "2147483647";
- facets.minInclusive = "-2147483648";
- XSSimpleTypeDecl intDV = new XSSimpleTypeDecl(longDV, INT,
URI_SCHEMAFORSCHEMA, (short)0, false, null, XSConstants.INT_DT);
- intDV.applyFacets1(facets, (short)(XSSimpleType.FACET_MAXINCLUSIVE |
XSSimpleType.FACET_MININCLUSIVE), (short)0 );
- fBuiltInTypes.put(INT, intDV);
-
- facets.maxInclusive = "32767";
- facets.minInclusive = "-32768";
- XSSimpleTypeDecl shortDV = new XSSimpleTypeDecl(intDV, SHORT ,
URI_SCHEMAFORSCHEMA, (short)0, false, null, XSConstants.SHORT_DT);
- shortDV.applyFacets1(facets, (short)(XSSimpleType.FACET_MAXINCLUSIVE |
XSSimpleType.FACET_MININCLUSIVE), (short)0 );
- fBuiltInTypes.put(SHORT, shortDV);
-
- facets.maxInclusive = "127";
- facets.minInclusive = "-128";
- XSSimpleTypeDecl byteDV = new XSSimpleTypeDecl(shortDV, BYTE ,
URI_SCHEMAFORSCHEMA, (short)0, false, null, XSConstants.BYTE_DT);
- byteDV.applyFacets1(facets, (short)(XSSimpleType.FACET_MAXINCLUSIVE |
XSSimpleType.FACET_MININCLUSIVE), (short)0 );
- fBuiltInTypes.put(BYTE, byteDV);
-
- facets.minInclusive = "0" ;
- XSSimpleTypeDecl nonNegativeDV = new XSSimpleTypeDecl(integerDV,
NONNEGATIVEINTEGER , URI_SCHEMAFORSCHEMA, (short)0, false, null,
XSConstants.NONNEGATIVEINTEGER_DT);
- nonNegativeDV.applyFacets1(facets, XSSimpleType.FACET_MININCLUSIVE,
(short)0 );
- fBuiltInTypes.put(NONNEGATIVEINTEGER, nonNegativeDV);
-
- facets.maxInclusive = "18446744073709551615" ;
- XSSimpleTypeDecl unsignedLongDV = new XSSimpleTypeDecl(nonNegativeDV,
UNSIGNEDLONG , URI_SCHEMAFORSCHEMA, (short)0, false, null,
XSConstants.UNSIGNEDLONG_DT);
- unsignedLongDV.applyFacets1(facets, XSSimpleType.FACET_MAXINCLUSIVE,
(short)0 );
- fBuiltInTypes.put(UNSIGNEDLONG, unsignedLongDV);
-
- facets.maxInclusive = "4294967295" ;
- XSSimpleTypeDecl unsignedIntDV = new XSSimpleTypeDecl(unsignedLongDV,
UNSIGNEDINT , URI_SCHEMAFORSCHEMA, (short)0, false, null,
XSConstants.UNSIGNEDINT_DT);
- unsignedIntDV.applyFacets1(facets, XSSimpleType.FACET_MAXINCLUSIVE,
(short)0 );
- fBuiltInTypes.put(UNSIGNEDINT, unsignedIntDV);
-
- facets.maxInclusive = "65535" ;
- XSSimpleTypeDecl unsignedShortDV = new XSSimpleTypeDecl(unsignedIntDV,
UNSIGNEDSHORT , URI_SCHEMAFORSCHEMA, (short)0, false, null,
XSConstants.UNSIGNEDSHORT_DT);
- unsignedShortDV.applyFacets1(facets, XSSimpleType.FACET_MAXINCLUSIVE,
(short)0 );
- fBuiltInTypes.put(UNSIGNEDSHORT, unsignedShortDV);
-
- facets.maxInclusive = "255" ;
- XSSimpleTypeDecl unsignedByteDV = new
XSSimpleTypeDecl(unsignedShortDV, UNSIGNEDBYTE , URI_SCHEMAFORSCHEMA, (short)0,
false, null, XSConstants.UNSIGNEDBYTE_DT);
- unsignedByteDV.applyFacets1(facets, XSSimpleType.FACET_MAXINCLUSIVE,
(short)0 );
- fBuiltInTypes.put(UNSIGNEDBYTE, unsignedByteDV);
-
- facets.minInclusive = "1" ;
- XSSimpleTypeDecl positiveIntegerDV = new
XSSimpleTypeDecl(nonNegativeDV, POSITIVEINTEGER , URI_SCHEMAFORSCHEMA,
(short)0, false, null, XSConstants.POSITIVEINTEGER_DT);
- positiveIntegerDV.applyFacets1(facets,
XSSimpleType.FACET_MININCLUSIVE, (short)0 );
- fBuiltInTypes.put(POSITIVEINTEGER, positiveIntegerDV);
-
-
- fBuiltInTypes.put(FLOAT, new XSSimpleTypeDecl(baseAtomicType, FLOAT,
XSSimpleTypeDecl.DV_FLOAT, XSSimpleType.ORDERED_PARTIAL, true, true, true,
true, XSConstants.FLOAT_DT));
- fBuiltInTypes.put(DOUBLE, new XSSimpleTypeDecl(baseAtomicType, DOUBLE,
XSSimpleTypeDecl.DV_DOUBLE, XSSimpleType.ORDERED_PARTIAL, true, true, true,
true, XSConstants.DOUBLE_DT));
- fBuiltInTypes.put(HEXBINARY, new XSSimpleTypeDecl(baseAtomicType,
HEXBINARY, XSSimpleTypeDecl.DV_HEXBINARY, XSSimpleType.ORDERED_FALSE, false,
false, false, true, XSConstants.HEXBINARY_DT));
- fBuiltInTypes.put(NOTATION, new XSSimpleTypeDecl(baseAtomicType,
NOTATION, XSSimpleTypeDecl.DV_NOTATION, XSSimpleType.ORDERED_FALSE, false,
false, false, true, XSConstants.NOTATION_DT));
-
-
- facets.whiteSpace = XSSimpleType.WS_REPLACE;
- XSSimpleTypeDecl normalizedDV = new XSSimpleTypeDecl(stringDV,
NORMALIZEDSTRING , URI_SCHEMAFORSCHEMA, (short)0, false, null,
XSConstants.NORMALIZEDSTRING_DT);
- normalizedDV.applyFacets1(facets, XSSimpleType.FACET_WHITESPACE,
(short)0 );
- fBuiltInTypes.put(NORMALIZEDSTRING, normalizedDV);
-
- facets.whiteSpace = XSSimpleType.WS_COLLAPSE;
- XSSimpleTypeDecl tokenDV = new XSSimpleTypeDecl(normalizedDV, TOKEN ,
URI_SCHEMAFORSCHEMA, (short)0, false, null, XSConstants.TOKEN_DT);
- tokenDV.applyFacets1(facets, XSSimpleType.FACET_WHITESPACE, (short)0 );
- fBuiltInTypes.put(TOKEN, tokenDV);
-
- facets.whiteSpace = XSSimpleType.WS_COLLAPSE;
- facets.pattern = "([a-zA-Z]{1,8})(-[a-zA-Z0-9]{1,8})*";
- XSSimpleTypeDecl languageDV = new XSSimpleTypeDecl(tokenDV, LANGUAGE ,
URI_SCHEMAFORSCHEMA, (short)0, false, null, XSConstants.LANGUAGE_DT);
- languageDV.applyFacets1(facets, (short)(XSSimpleType.FACET_WHITESPACE
| XSSimpleType.FACET_PATTERN) ,(short)0);
- fBuiltInTypes.put(LANGUAGE, languageDV);
-
-
- facets.whiteSpace = XSSimpleType.WS_COLLAPSE;
- XSSimpleTypeDecl nameDV = new XSSimpleTypeDecl(tokenDV, NAME ,
URI_SCHEMAFORSCHEMA, (short)0, false, null, XSConstants.NAME_DT);
- nameDV.applyFacets1(facets, XSSimpleType.FACET_WHITESPACE, (short)0,
XSSimpleTypeDecl.SPECIAL_PATTERN_NAME);
- fBuiltInTypes.put(NAME, nameDV);
-
- facets.whiteSpace = XSSimpleType.WS_COLLAPSE;
- XSSimpleTypeDecl ncnameDV = new XSSimpleTypeDecl(nameDV, NCNAME ,
URI_SCHEMAFORSCHEMA, (short)0, false, null, XSConstants.NCNAME_DT) ;
- ncnameDV.applyFacets1(facets, XSSimpleType.FACET_WHITESPACE, (short)0,
XSSimpleTypeDecl.SPECIAL_PATTERN_NCNAME);
- fBuiltInTypes.put(NCNAME, ncnameDV);
-
- fBuiltInTypes.put(QNAME, new XSSimpleTypeDecl(baseAtomicType, QNAME,
XSSimpleTypeDecl.DV_QNAME, XSSimpleType.ORDERED_FALSE, false, false, false,
true, XSConstants.QNAME_DT));
-
- fBuiltInTypes.put(ID, new XSSimpleTypeDecl(ncnameDV, ID,
XSSimpleTypeDecl.DV_ID, XSSimpleType.ORDERED_FALSE, false, false, false , true,
XSConstants.ID_DT));
- XSSimpleTypeDecl idrefDV = new XSSimpleTypeDecl(ncnameDV, IDREF ,
XSSimpleTypeDecl.DV_IDREF, XSSimpleType.ORDERED_FALSE, false, false, false,
true, XSConstants.IDREF_DT);
- fBuiltInTypes.put(IDREF, idrefDV);
-
- facets.minLength = 1;
- XSSimpleTypeDecl tempDV = new XSSimpleTypeDecl(null,
URI_SCHEMAFORSCHEMA, (short)0, idrefDV, true, null);
- XSSimpleTypeDecl idrefsDV = new XSSimpleTypeDecl(tempDV, IDREFS,
URI_SCHEMAFORSCHEMA, (short)0, false, null);
- idrefsDV.applyFacets1(facets, XSSimpleType.FACET_MINLENGTH, (short)0);
- fBuiltInTypes.put(IDREFS, idrefsDV);
-
- XSSimpleTypeDecl entityDV = new XSSimpleTypeDecl(ncnameDV, ENTITY ,
XSSimpleTypeDecl.DV_ENTITY, XSSimpleType.ORDERED_FALSE, false, false, false,
true, XSConstants.ENTITY_DT);
- fBuiltInTypes.put(ENTITY, entityDV);
-
- facets.minLength = 1;
- tempDV = new XSSimpleTypeDecl(null, URI_SCHEMAFORSCHEMA, (short)0,
entityDV, true, null);
- XSSimpleTypeDecl entitiesDV = new XSSimpleTypeDecl(tempDV, ENTITIES,
URI_SCHEMAFORSCHEMA, (short)0, false, null);
- entitiesDV.applyFacets1(facets, XSSimpleType.FACET_MINLENGTH,
(short)0);
- fBuiltInTypes.put(ENTITIES, entitiesDV);
-
-
- facets.whiteSpace = XSSimpleType.WS_COLLAPSE;
- XSSimpleTypeDecl nmtokenDV = new XSSimpleTypeDecl(tokenDV, NMTOKEN,
URI_SCHEMAFORSCHEMA, (short)0, false, null, XSConstants.NMTOKEN_DT);
- nmtokenDV.applyFacets1(facets, XSSimpleType.FACET_WHITESPACE,
(short)0, XSSimpleTypeDecl.SPECIAL_PATTERN_NMTOKEN);
- fBuiltInTypes.put(NMTOKEN, nmtokenDV);
-
- facets.minLength = 1;
- tempDV = new XSSimpleTypeDecl(null, URI_SCHEMAFORSCHEMA, (short)0,
nmtokenDV, true, null);
- XSSimpleTypeDecl nmtokensDV = new XSSimpleTypeDecl(tempDV, NMTOKENS,
URI_SCHEMAFORSCHEMA, (short)0, false, null);
- nmtokensDV.applyFacets1(facets, XSSimpleType.FACET_MINLENGTH,
(short)0);
- fBuiltInTypes.put(NMTOKENS, nmtokensDV);
- }//createBuiltInTypes()
-
- public void setDeclPool (XSDeclarationPool declPool){
- fDeclPool = declPool;
- }
-
}//SchemaDVFactoryImpl
Modified: xerces/java/trunk/src/org/apache/xerces/impl/xs/SchemaGrammar.java
URL:
http://svn.apache.org/viewvc/xerces/java/trunk/src/org/apache/xerces/impl/xs/SchemaGrammar.java?rev=710089&r1=710088&r2=710089&view=diff
==============================================================================
--- xerces/java/trunk/src/org/apache/xerces/impl/xs/SchemaGrammar.java
(original)
+++ xerces/java/trunk/src/org/apache/xerces/impl/xs/SchemaGrammar.java Mon Nov
3 08:01:16 2008
@@ -153,14 +153,23 @@
// this class makes sure the static, built-in schema grammars
// are immutable.
public static class BuiltinSchemaGrammar extends SchemaGrammar {
+
+ private static final String EXTENDED_SCHEMA_FACTORY_CLASS =
"org.apache.xerces.impl.dv.xs.ExtendedSchemaDVFactoryImpl";
+
/**
* Special constructor to create the grammars for the schema namespaces
*
* @param grammar
*/
- public BuiltinSchemaGrammar(int grammar) {
- SchemaDVFactory schemaFactory = SchemaDVFactory.getInstance();
-
+ public BuiltinSchemaGrammar(int grammar, short schemaVersion) {
+ SchemaDVFactory schemaFactory;
+ if (schemaVersion == Constants.SCHEMA_VERSION_1_0) {
+ schemaFactory = SchemaDVFactory.getInstance();
+ }
+ else {
+ schemaFactory =
SchemaDVFactory.getInstance(EXTENDED_SCHEMA_FACTORY_CLASS);
+ }
+
if (grammar == GRAMMAR_XS) {
// target namespace
fTargetNamespace = SchemaSymbols.URI_SCHEMAFORSCHEMA;
@@ -974,12 +983,22 @@
} // class BuiltinAttrDecl
// the grammars to hold components of the schema namespace
- public final static BuiltinSchemaGrammar SG_SchemaNS = new
BuiltinSchemaGrammar(GRAMMAR_XS);
+ public final static BuiltinSchemaGrammar SG_SchemaNS = new
BuiltinSchemaGrammar(GRAMMAR_XS, Constants.SCHEMA_VERSION_1_0);
+ private final static BuiltinSchemaGrammar SG_SchemaNSExtended = new
BuiltinSchemaGrammar(GRAMMAR_XS, Constants.SCHEMA_VERSION_1_0_EXTENDED);
public final static XSSimpleType fAnySimpleType =
(XSSimpleType)SG_SchemaNS.getGlobalTypeDecl(SchemaSymbols.ATTVAL_ANYSIMPLETYPE);
// the grammars to hold components of the schema-instance namespace
- public final static BuiltinSchemaGrammar SG_XSI = new
BuiltinSchemaGrammar(GRAMMAR_XSI);
+ public final static BuiltinSchemaGrammar SG_XSI = new
BuiltinSchemaGrammar(GRAMMAR_XSI, Constants.SCHEMA_VERSION_1_0);
+
+ public static SchemaGrammar getS4SGrammar(short schemaVersion) {
+ if (schemaVersion == Constants.SCHEMA_VERSION_1_0) {
+ return SG_SchemaNS;
+ }
+ else {
+ return SG_SchemaNSExtended;
+ }
+ }
static final XSComplexTypeDecl[] resize(XSComplexTypeDecl[] oldArray, int
newSize) {
XSComplexTypeDecl[] newArray = new XSComplexTypeDecl[newSize];
Modified: xerces/java/trunk/src/org/apache/xerces/impl/xs/XSModelImpl.java
URL:
http://svn.apache.org/viewvc/xerces/java/trunk/src/org/apache/xerces/impl/xs/XSModelImpl.java?rev=710089&r1=710088&r2=710089&view=diff
==============================================================================
--- xerces/java/trunk/src/org/apache/xerces/impl/xs/XSModelImpl.java (original)
+++ xerces/java/trunk/src/org/apache/xerces/impl/xs/XSModelImpl.java Mon Nov 3
08:01:16 2008
@@ -19,6 +19,7 @@
import java.util.Vector;
+import org.apache.xerces.impl.Constants;
import org.apache.xerces.impl.xs.util.StringListImpl;
import org.apache.xerces.impl.xs.util.XSNamedMap4Types;
import org.apache.xerces.impl.xs.util.XSNamedMapImpl;
@@ -103,6 +104,10 @@
* @param grammars the array of schema grammars
*/
public XSModelImpl(SchemaGrammar[] grammars) {
+ this(grammars, Constants.SCHEMA_VERSION_1_0);
+ }
+
+ public XSModelImpl(SchemaGrammar[] grammars, short s4sVersion) {
// copy namespaces/grammars from the array to our arrays
int len = grammars.length;
final int initialSize = Math.max(len+1, 5);
@@ -121,7 +126,7 @@
// If a schema for the schema namespace isn't included, include it
here.
if (!hasS4S) {
namespaces[len] = SchemaSymbols.URI_SCHEMAFORSCHEMA;
- grammarList[len++] = SchemaGrammar.SG_SchemaNS;
+ grammarList[len++] = SchemaGrammar.getS4SGrammar(s4sVersion);
}
SchemaGrammar sg1, sg2;
Modified:
xerces/java/trunk/src/org/apache/xerces/impl/xs/util/XSGrammarPool.java
URL:
http://svn.apache.org/viewvc/xerces/java/trunk/src/org/apache/xerces/impl/xs/util/XSGrammarPool.java?rev=710089&r1=710088&r2=710089&view=diff
==============================================================================
--- xerces/java/trunk/src/org/apache/xerces/impl/xs/util/XSGrammarPool.java
(original)
+++ xerces/java/trunk/src/org/apache/xerces/impl/xs/util/XSGrammarPool.java Mon
Nov 3 08:01:16 2008
@@ -19,6 +19,7 @@
import java.util.ArrayList;
+import org.apache.xerces.impl.Constants;
import org.apache.xerces.impl.xs.SchemaGrammar;
import org.apache.xerces.impl.xs.XSModelImpl;
import org.apache.xerces.util.XMLGrammarPoolImpl;
@@ -34,7 +35,7 @@
* @version $Id$
*/
public class XSGrammarPool extends XMLGrammarPoolImpl {
-
+
/**
* Return an <code>XSModel</code> that represents components in
* the schema grammars in this pool implementation.
@@ -42,6 +43,10 @@
* @return an <code>XSModel</code> representing this schema grammar
*/
public XSModel toXSModel() {
+ return toXSModel(Constants.SCHEMA_VERSION_1_0);
+ }
+
+ public XSModel toXSModel(short schemaVersion) {
ArrayList list = new ArrayList();
for (int i = 0; i < fGrammars.length; i++) {
for (Entry entry = fGrammars[i] ; entry != null ; entry =
entry.next) {
@@ -54,7 +59,7 @@
return new XSModelImpl(new SchemaGrammar[0]);
}
SchemaGrammar[] gs = (SchemaGrammar[])list.toArray(new
SchemaGrammar[size]);
- return new XSModelImpl(gs);
+ return new XSModelImpl(gs, schemaVersion);
}
} // class XSGrammarPool
---------------------------------------------------------------------
To unsubscribe, e-mail: [EMAIL PROTECTED]
For additional commands, e-mail: [EMAIL PROTECTED]