ankitp      2004/12/14 12:45:20

  Modified:    java/src/org/apache/xerces/impl/dv/xs XSSimpleTypeDecl.java
  Log:
  provide access to item type info (for LIST and LISTOFUNION types) for 
enumeration values.
  
  Revision  Changes    Path
  1.63      +37 -2     
xml-xerces/java/src/org/apache/xerces/impl/dv/xs/XSSimpleTypeDecl.java
  
  Index: XSSimpleTypeDecl.java
  ===================================================================
  RCS file: 
/home/cvs/xml-xerces/java/src/org/apache/xerces/impl/dv/xs/XSSimpleTypeDecl.java,v
  retrieving revision 1.62
  retrieving revision 1.63
  diff -u -r1.62 -r1.63
  --- XSSimpleTypeDecl.java     9 Dec 2004 02:40:00 -0000       1.62
  +++ XSSimpleTypeDecl.java     14 Dec 2004 20:45:20 -0000      1.63
  @@ -245,7 +245,9 @@
        private Vector fPatternStr;
        private Vector fEnumeration;
        private short[] fEnumerationType;
  -     private ShortList fEnumerationTypeList;
  +     private ShortList[] fEnumerationItemType;   // used in case 
fenumerationType value is LIST or LISTOFUNION 
  +    private ShortList fEnumerationTypeList;
  +    private ObjectList fEnumerationItemTypeList;
        private StringList fLexicalPattern;
        private StringList fLexicalEnumeration;
        private ObjectList fActualEnumeration;
  @@ -793,6 +795,7 @@
                                fEnumeration = new Vector();
                                Vector enumVals = facets.enumeration;
                                fEnumerationType = new short[enumVals.size()];
  +                fEnumerationItemType = new ShortList[enumVals.size()];
                                Vector enumNSDecls = facets.enumNSDecls;
                                ValidationContextImpl ctx = new 
ValidationContextImpl(context);
                                enumerationAnnotations = facets.enumAnnotations;
  @@ -804,6 +807,7 @@
                                                // check 4.3.5.c0 must: 
enumeration values from the value space of base
                                                
fEnumeration.addElement(info.actualValue);
                                                fEnumerationType[i] = 
info.actualValueType;
  +                        fEnumerationItemType[i] = info.itemValueTypes;
                                        } catch (InvalidDatatypeValueException 
ide) {
                                                
reportError("enumeration-valid-restriction", new 
Object[]{enumVals.elementAt(i), this.getBaseType().getName()});
                                        }
  @@ -2110,6 +2114,37 @@
                }
                return fActualEnumeration;
        }
  +    
  +    /**
  +     * A list of enumeration type values (as a list of ShortList objects) if 
it exists, otherwise returns
  +     * null
  +     */
  +    public ObjectList getEnumerationItemTypeList() {
  +        if (fEnumerationItemTypeList == null) {
  +            if(fEnumerationItemType == null)
  +                return null;
  +            fEnumerationItemTypeList = new ObjectList () {
  +                public int getLength() {
  +                    return (fEnumerationItemType != null) ? 
fEnumerationItemType.length : 0;
  +                }
  +                public boolean contains(Object item) {
  +                   if(fEnumerationItemType == null || !(item instanceof 
ShortList))
  +                       return false;
  +                   for(int i = 0;i < fEnumerationItemType.length; i++)
  +                       if(fEnumerationItemType[i] == item)
  +                           return true;
  +                   return false;
  +                }
  +                public Object item(int index) {
  +                    if (index < 0 || index >= getLength()) {
  +                        return null;
  +                    }
  +                    return fEnumerationItemType[index];
  +                }
  +            };
  +        }
  +        return fEnumerationItemTypeList;
  +    }
        
        public ShortList getEnumerationTypeList() {
                if (fEnumerationTypeList == null) {
  
  
  

---------------------------------------------------------------------
To unsubscribe, e-mail: [EMAIL PROTECTED]
For additional commands, e-mail: [EMAIL PROTECTED]

Reply via email to