< prev index next >

jaxws/src/jdk.xml.bind/share/classes/com/sun/xml/internal/xsom/impl/ElementDecl.java

Print this page


   1 /*
   2  * Copyright (c) 1997, 2012, Oracle and/or its affiliates. All rights reserved.
   3  * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
   4  *
   5  * This code is free software; you can redistribute it and/or modify it
   6  * under the terms of the GNU General Public License version 2 only, as
   7  * published by the Free Software Foundation.  Oracle designates this
   8  * particular file as subject to the "Classpath" exception as provided
   9  * by Oracle in the LICENSE file that accompanied this code.
  10  *
  11  * This code is distributed in the hope that it will be useful, but WITHOUT
  12  * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
  13  * FITNESS FOR A PARTICULAR PURPOSE.  See the GNU General Public License
  14  * version 2 for more details (a copy is included in the LICENSE file that
  15  * accompanied this code).
  16  *
  17  * You should have received a copy of the GNU General Public License version
  18  * 2 along with this work; if not, write to the Free Software Foundation,
  19  * Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA.
  20  *
  21  * Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA
  22  * or visit www.oracle.com if you need additional information or have any


  53         AnnotationImpl _annon, Locator _loc, ForeignAttributesImpl fa,
  54         String _tns, String _name, boolean _anonymous,
  55 
  56         XmlString _defv, XmlString _fixedv,
  57         boolean _nillable, boolean _abstract, Boolean _form,
  58         Ref.Type _type, Ref.Element _substHead,
  59         int _substDisallowed, int _substExcluded,
  60         List<IdentityConstraintImpl> idConstraints) {
  61 
  62         super(owner,_annon,_loc,fa,_tns,_name,_anonymous);
  63 
  64         this.defaultValue = _defv;
  65         this.fixedValue = _fixedv;
  66         this.nillable = _nillable;
  67         this._abstract = _abstract;
  68         this.form = _form;
  69         this.type = _type;
  70         this.substHead = _substHead;
  71         this.substDisallowed = _substDisallowed;
  72         this.substExcluded = _substExcluded;
  73         this.idConstraints = Collections.unmodifiableList((List<? extends XSIdentityConstraint>)idConstraints);
  74 
  75         for (IdentityConstraintImpl idc : idConstraints)
  76             idc.setParent(this);
  77 
  78         if(type==null)
  79             throw new IllegalArgumentException();
  80     }
  81 
  82     private XmlString defaultValue;

  83     public XmlString getDefaultValue() { return defaultValue; }
  84 
  85     private XmlString fixedValue;

  86     public XmlString getFixedValue() { return fixedValue; }
  87 
  88     private boolean nillable;

  89     public boolean isNillable() { return nillable; }
  90 
  91     private boolean _abstract;

  92     public boolean isAbstract() { return _abstract; }
  93 
  94     private Ref.Type type;

  95     public XSType getType() { return type.getType(); }
  96 
  97     private Ref.Element substHead;

  98     public XSElementDecl getSubstAffiliation() {
  99         if(substHead==null)     return null;
 100         return substHead.get();
 101     }
 102 
 103     private int substDisallowed;

 104     public boolean isSubstitutionDisallowed( int method ) {
 105         return (substDisallowed&method)!=0;
 106     }
 107 
 108     private int substExcluded;

 109     public boolean isSubstitutionExcluded( int method ) {
 110         return (substExcluded&method)!=0;
 111     }
 112 
 113     private final List<XSIdentityConstraint> idConstraints;

 114     public List<XSIdentityConstraint> getIdentityConstraints() {
 115         return idConstraints;
 116     }
 117 
 118     private Boolean form;

 119     public Boolean getForm() {
 120         return form;
 121     }
 122 
 123 
 124     /**
 125      * @deprecated
 126      */

 127     public XSElementDecl[] listSubstitutables() {
 128         Set<? extends XSElementDecl> s = getSubstitutables();
 129         return s.toArray(new XSElementDecl[s.size()]);
 130     }
 131 
 132     /** Set that represents element decls that can substitute this element. */
 133     private Set<XSElementDecl> substitutables = null;
 134 
 135     /** Unmodifieable view of {@link #substitutables}. */
 136     private Set<XSElementDecl> substitutablesView = null;
 137 

 138     public Set<? extends XSElementDecl> getSubstitutables() {
 139         if( substitutables==null ) {
 140             // if the field is null by the time this method
 141             // is called, it means this element is substitutable by itself only.
 142             substitutables = substitutablesView = Collections.singleton((XSElementDecl)this);
 143         }
 144         return substitutablesView;
 145     }
 146 
 147     protected void addSubstitutable( ElementDecl decl ) {
 148         if( substitutables==null ) {
 149             substitutables = new HashSet<XSElementDecl>();
 150             substitutables.add(this);
 151             substitutablesView = Collections.unmodifiableSet(substitutables);
 152         }
 153         substitutables.add(decl);
 154     }
 155 
 156 
 157     public void updateSubstitutabilityMap() {


 177                 else                                                eused = true;
 178 
 179                 type = type.getBaseType();
 180                 if(type==null)  // parentType and type doesn't share the common base type. a bug in the schema.
 181                     break;
 182 
 183                 if( type.isComplexType() ) {
 184                     rd |= type.asComplexType().isSubstitutionProhibited(XSType.RESTRICTION);
 185                     ed |= type.asComplexType().isSubstitutionProhibited(XSType.EXTENSION);
 186                 }
 187                 if (getRoot().getAnyType().equals(type)) break;
 188             }
 189 
 190             if( (rd && rused) || ( ed && eused ) )   continue;
 191 
 192             // this element can substitute "parent"
 193             parent.addSubstitutable(this);
 194         }
 195     }
 196 

 197     public boolean canBeSubstitutedBy(XSElementDecl e) {
 198         return getSubstitutables().contains(e);
 199     }
 200 

 201     public boolean isWildcard()                 { return false; }

 202     public boolean isModelGroupDecl()           { return false; }

 203     public boolean isModelGroup()               { return false; }

 204     public boolean isElementDecl()              { return true; }
 205 

 206     public XSWildcard asWildcard()              { return null; }

 207     public XSModelGroupDecl asModelGroupDecl()  { return null; }

 208     public XSModelGroup asModelGroup()          { return null; }

 209     public XSElementDecl asElementDecl()        { return this; }
 210 
 211 
 212 
 213 

 214     public void visit( XSVisitor visitor ) {
 215         visitor.elementDecl(this);
 216     }

 217     public void visit( XSTermVisitor visitor ) {
 218         visitor.elementDecl(this);
 219     }

 220     public Object apply( XSTermFunction function ) {
 221         return function.elementDecl(this);
 222     }
 223 

 224     public <T,P> T apply(XSTermFunctionWithParam<T, P> function, P param) {
 225         return function.elementDecl(this,param);
 226     }
 227 

 228     public Object apply( XSFunction function ) {
 229         return function.elementDecl(this);
 230     }
 231 
 232 
 233     // Ref.Term implementation

 234     public XSTerm getTerm() { return this; }
 235 }
   1 /*
   2  * Copyright (c) 1997, 2017, Oracle and/or its affiliates. All rights reserved.
   3  * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
   4  *
   5  * This code is free software; you can redistribute it and/or modify it
   6  * under the terms of the GNU General Public License version 2 only, as
   7  * published by the Free Software Foundation.  Oracle designates this
   8  * particular file as subject to the "Classpath" exception as provided
   9  * by Oracle in the LICENSE file that accompanied this code.
  10  *
  11  * This code is distributed in the hope that it will be useful, but WITHOUT
  12  * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
  13  * FITNESS FOR A PARTICULAR PURPOSE.  See the GNU General Public License
  14  * version 2 for more details (a copy is included in the LICENSE file that
  15  * accompanied this code).
  16  *
  17  * You should have received a copy of the GNU General Public License version
  18  * 2 along with this work; if not, write to the Free Software Foundation,
  19  * Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA.
  20  *
  21  * Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA
  22  * or visit www.oracle.com if you need additional information or have any


  53         AnnotationImpl _annon, Locator _loc, ForeignAttributesImpl fa,
  54         String _tns, String _name, boolean _anonymous,
  55 
  56         XmlString _defv, XmlString _fixedv,
  57         boolean _nillable, boolean _abstract, Boolean _form,
  58         Ref.Type _type, Ref.Element _substHead,
  59         int _substDisallowed, int _substExcluded,
  60         List<IdentityConstraintImpl> idConstraints) {
  61 
  62         super(owner,_annon,_loc,fa,_tns,_name,_anonymous);
  63 
  64         this.defaultValue = _defv;
  65         this.fixedValue = _fixedv;
  66         this.nillable = _nillable;
  67         this._abstract = _abstract;
  68         this.form = _form;
  69         this.type = _type;
  70         this.substHead = _substHead;
  71         this.substDisallowed = _substDisallowed;
  72         this.substExcluded = _substExcluded;
  73         this.idConstraints = (List<XSIdentityConstraint>) Collections.unmodifiableList((List<? extends XSIdentityConstraint>)idConstraints);
  74 
  75         for (IdentityConstraintImpl idc : idConstraints)
  76             idc.setParent(this);
  77 
  78         if(type==null)
  79             throw new IllegalArgumentException();
  80     }
  81 
  82     private XmlString defaultValue;
  83     @Override
  84     public XmlString getDefaultValue() { return defaultValue; }
  85 
  86     private XmlString fixedValue;
  87     @Override
  88     public XmlString getFixedValue() { return fixedValue; }
  89 
  90     private boolean nillable;
  91     @Override
  92     public boolean isNillable() { return nillable; }
  93 
  94     private boolean _abstract;
  95     @Override
  96     public boolean isAbstract() { return _abstract; }
  97 
  98     private Ref.Type type;
  99     @Override
 100     public XSType getType() { return type.getType(); }
 101 
 102     private Ref.Element substHead;
 103     @Override
 104     public XSElementDecl getSubstAffiliation() {
 105         if(substHead==null)     return null;
 106         return substHead.get();
 107     }
 108 
 109     private int substDisallowed;
 110     @Override
 111     public boolean isSubstitutionDisallowed( int method ) {
 112         return (substDisallowed&method)!=0;
 113     }
 114 
 115     private int substExcluded;
 116     @Override
 117     public boolean isSubstitutionExcluded( int method ) {
 118         return (substExcluded&method)!=0;
 119     }
 120 
 121     private final List<XSIdentityConstraint> idConstraints;
 122     @Override
 123     public List<XSIdentityConstraint> getIdentityConstraints() {
 124         return idConstraints;
 125     }
 126 
 127     private Boolean form;
 128     @Override
 129     public Boolean getForm() {
 130         return form;
 131     }
 132 
 133 
 134     /**
 135      * @deprecated
 136      */
 137     @Override
 138     public XSElementDecl[] listSubstitutables() {
 139         Set<? extends XSElementDecl> s = getSubstitutables();
 140         return s.toArray(new XSElementDecl[s.size()]);
 141     }
 142 
 143     /** Set that represents element decls that can substitute this element. */
 144     private Set<XSElementDecl> substitutables = null;
 145 
 146     /** Unmodifieable view of {@link #substitutables}. */
 147     private Set<XSElementDecl> substitutablesView = null;
 148 
 149     @Override
 150     public Set<? extends XSElementDecl> getSubstitutables() {
 151         if( substitutables==null ) {
 152             // if the field is null by the time this method
 153             // is called, it means this element is substitutable by itself only.
 154             substitutables = substitutablesView = Collections.singleton((XSElementDecl)this);
 155         }
 156         return substitutablesView;
 157     }
 158 
 159     protected void addSubstitutable( ElementDecl decl ) {
 160         if( substitutables==null ) {
 161             substitutables = new HashSet<XSElementDecl>();
 162             substitutables.add(this);
 163             substitutablesView = Collections.unmodifiableSet(substitutables);
 164         }
 165         substitutables.add(decl);
 166     }
 167 
 168 
 169     public void updateSubstitutabilityMap() {


 189                 else                                                eused = true;
 190 
 191                 type = type.getBaseType();
 192                 if(type==null)  // parentType and type doesn't share the common base type. a bug in the schema.
 193                     break;
 194 
 195                 if( type.isComplexType() ) {
 196                     rd |= type.asComplexType().isSubstitutionProhibited(XSType.RESTRICTION);
 197                     ed |= type.asComplexType().isSubstitutionProhibited(XSType.EXTENSION);
 198                 }
 199                 if (getRoot().getAnyType().equals(type)) break;
 200             }
 201 
 202             if( (rd && rused) || ( ed && eused ) )   continue;
 203 
 204             // this element can substitute "parent"
 205             parent.addSubstitutable(this);
 206         }
 207     }
 208 
 209     @Override
 210     public boolean canBeSubstitutedBy(XSElementDecl e) {
 211         return getSubstitutables().contains(e);
 212     }
 213 
 214     @Override
 215     public boolean isWildcard()                 { return false; }
 216     @Override
 217     public boolean isModelGroupDecl()           { return false; }
 218     @Override
 219     public boolean isModelGroup()               { return false; }
 220     @Override
 221     public boolean isElementDecl()              { return true; }
 222 
 223     @Override
 224     public XSWildcard asWildcard()              { return null; }
 225     @Override
 226     public XSModelGroupDecl asModelGroupDecl()  { return null; }
 227     @Override
 228     public XSModelGroup asModelGroup()          { return null; }
 229     @Override
 230     public XSElementDecl asElementDecl()        { return this; }
 231 
 232 
 233 
 234 
 235     @Override
 236     public void visit( XSVisitor visitor ) {
 237         visitor.elementDecl(this);
 238     }
 239     @Override
 240     public void visit( XSTermVisitor visitor ) {
 241         visitor.elementDecl(this);
 242     }
 243     @Override
 244     public Object apply( XSTermFunction function ) {
 245         return function.elementDecl(this);
 246     }
 247 
 248     @Override
 249     public <T,P> T apply(XSTermFunctionWithParam<T, P> function, P param) {
 250         return function.elementDecl(this,param);
 251     }
 252 
 253     @Override
 254     public Object apply( XSFunction function ) {
 255         return function.elementDecl(this);
 256     }
 257 
 258 
 259     // Ref.Term implementation
 260     @Override
 261     public XSTerm getTerm() { return this; }
 262 }
< prev index next >