Many resources are needed to download a project. Please understand that we have to compensate our server costs. Thank you in advance. Project price only 1 $
You can buy this project and download/modify it how often you want.
/*
* DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
*
* Copyright (c) 1997-2014 Oracle and/or its affiliates. All rights reserved.
*
* The contents of this file are subject to the terms of either the GNU
* General Public License Version 2 only ("GPL") or the Common Development
* and Distribution License("CDDL") (collectively, the "License"). You
* may not use this file except in compliance with the License. You can
* obtain a copy of the License at
* http://glassfish.java.net/public/CDDL+GPL_1_1.html
* or packager/legal/LICENSE.txt. See the License for the specific
* language governing permissions and limitations under the License.
*
* When distributing the software, include this License Header Notice in each
* file and include the License file at packager/legal/LICENSE.txt.
*
* GPL Classpath Exception:
* Oracle designates this particular file as subject to the "Classpath"
* exception as provided by Oracle in the GPL Version 2 section of the License
* file that accompanied this code.
*
* Modifications:
* If applicable, add the following below the License Header, with the fields
* enclosed by brackets [] replaced by your own identifying information:
* "Portions Copyright [year] [name of copyright owner]"
*
* Contributor(s):
* If you wish your version of this file to be governed by only the CDDL or
* only the GPL Version 2, indicate your decision by adding "[Contributor]
* elects to include this software in this distribution under the [CDDL or GPL
* Version 2] license." If you don't indicate a single choice of license, a
* recipient has the option to distribute your version of this file under
* either the CDDL, the GPL Version 2 or to extend the choice of license to
* its licensees as provided above. However, if you add GPL Version 2 code
* and therefore, elected the GPL Version 2 license, then the option applies
* only if the new code is made subject to such option by the copyright
* holder.
*/
package com.sun.xml.xsom.impl;
import com.sun.xml.xsom.ForeignAttributes;
import com.sun.xml.xsom.SCD;
import com.sun.xml.xsom.XSAnnotation;
import com.sun.xml.xsom.XSAttGroupDecl;
import com.sun.xml.xsom.XSAttributeDecl;
import com.sun.xml.xsom.XSComplexType;
import com.sun.xml.xsom.XSComponent;
import com.sun.xml.xsom.XSElementDecl;
import com.sun.xml.xsom.XSIdentityConstraint;
import com.sun.xml.xsom.XSModelGroupDecl;
import com.sun.xml.xsom.XSNotation;
import com.sun.xml.xsom.XSSchema;
import com.sun.xml.xsom.XSSimpleType;
import com.sun.xml.xsom.XSType;
import com.sun.xml.xsom.parser.SchemaDocument;
import com.sun.xml.xsom.visitor.XSFunction;
import com.sun.xml.xsom.visitor.XSVisitor;
import org.xml.sax.Locator;
import javax.xml.namespace.NamespaceContext;
import java.text.ParseException;
import java.util.ArrayList;
import java.util.Collection;
import java.util.Collections;
import java.util.HashMap;
import java.util.Iterator;
import java.util.LinkedHashMap;
import java.util.List;
import java.util.Map;
public class SchemaImpl implements XSSchema
{
public SchemaImpl(SchemaSetImpl _parent, Locator loc, String tns) {
if (tns == null)
// the empty string must be used.
throw new IllegalArgumentException();
this.targetNamespace = tns;
this.parent = _parent;
this.locator = loc;
}
public SchemaDocument getSourceDocument() {
return null;
}
public SchemaSetImpl getRoot() {
return parent;
}
protected final SchemaSetImpl parent;
private final String targetNamespace;
public String getTargetNamespace() {
return targetNamespace;
}
public XSSchema getOwnerSchema() {
return this;
}
private XSAnnotation annotation;
public void setAnnotation(XSAnnotation a) {
annotation = a;
}
public XSAnnotation getAnnotation() {
return annotation;
}
public XSAnnotation getAnnotation(boolean createIfNotExist) {
if(createIfNotExist && annotation==null)
annotation = new AnnotationImpl();
return annotation;
}
// it's difficult to determine the source location for the schema
// component as one schema can be defined across multiple files.
// so this locator might not correctly reflect all the locations
// where the schema is defined.
// but partial information would be better than nothing.
private final Locator locator;
public Locator getLocator() {
return locator;
}
private final Map atts = new HashMap();
private final Map attsView = Collections.unmodifiableMap(atts);
public void addAttributeDecl(XSAttributeDecl newDecl) {
atts.put(newDecl.getName(), newDecl);
}
public Map getAttributeDecls() {
return attsView;
}
public XSAttributeDecl getAttributeDecl(String name) {
return atts.get(name);
}
public Iterator iterateAttributeDecls() {
return atts.values().iterator();
}
private final Map elems = new LinkedHashMap();
private final Map elemsView = Collections.unmodifiableMap(elems);
public void addElementDecl(XSElementDecl newDecl) {
elems.put(newDecl.getName(), newDecl);
}
public Map getElementDecls() {
return elemsView;
}
public XSElementDecl getElementDecl(String name) {
return elems.get(name);
}
public Iterator iterateElementDecls() {
return elems.values().iterator();
}
private final Map attGroups = new HashMap();
private final Map attGroupsView = Collections.unmodifiableMap(attGroups);
public void addAttGroupDecl(XSAttGroupDecl newDecl, boolean overwrite) {
if(overwrite || !attGroups.containsKey(newDecl.getName()))
attGroups.put(newDecl.getName(), newDecl);
}
public Map getAttGroupDecls() {
return attGroupsView;
}
public XSAttGroupDecl getAttGroupDecl(String name) {
return attGroups.get(name);
}
public Iterator iterateAttGroupDecls() {
return attGroups.values().iterator();
}
private final Map notations = new HashMap();
private final Map notationsView = Collections.unmodifiableMap(notations);
public void addNotation( XSNotation newDecl ) {
notations.put( newDecl.getName(), newDecl );
}
public Map getNotations() {
return notationsView;
}
public XSNotation getNotation( String name ) {
return notations.get(name);
}
public Iterator iterateNotations() {
return notations.values().iterator();
}
private final Map modelGroups = new HashMap();
private final Map modelGroupsView = Collections.unmodifiableMap(modelGroups);
public void addModelGroupDecl(XSModelGroupDecl newDecl, boolean overwrite) {
if(overwrite || !modelGroups.containsKey(newDecl.getName()))
modelGroups.put(newDecl.getName(), newDecl);
}
public Map getModelGroupDecls() {
return modelGroupsView;
}
public XSModelGroupDecl getModelGroupDecl(String name) {
return modelGroups.get(name);
}
public Iterator iterateModelGroupDecls() {
return modelGroups.values().iterator();
}
private final Map idConstraints = new HashMap();
private final Map idConstraintsView = Collections.unmodifiableMap(idConstraints);
protected void addIdentityConstraint(IdentityConstraintImpl c) {
idConstraints.put(c.getName(),c);
}
public Map getIdentityConstraints() {
return idConstraintsView;
}
public XSIdentityConstraint getIdentityConstraint(String localName) {
return idConstraints.get(localName);
}
private final Map allTypes = new LinkedHashMap();
private final Map allTypesView = Collections.unmodifiableMap(allTypes);
private final Map simpleTypes = new HashMap();
private final Map simpleTypesView = Collections.unmodifiableMap(simpleTypes);
public void addSimpleType(XSSimpleType newDecl, boolean overwrite) {
if(overwrite || !simpleTypes.containsKey(newDecl.getName())) {
simpleTypes.put(newDecl.getName(), newDecl);
allTypes.put(newDecl.getName(), newDecl);
}
}
public Map getSimpleTypes() {
return simpleTypesView;
}
public XSSimpleType getSimpleType(String name) {
return simpleTypes.get(name);
}
public Iterator iterateSimpleTypes() {
return simpleTypes.values().iterator();
}
private final Map complexTypes = new HashMap();
private final Map complexTypesView = Collections.unmodifiableMap(complexTypes);
public void addComplexType(XSComplexType newDecl, boolean overwrite) {
if(overwrite || !complexTypes.containsKey(newDecl.getName())) {
complexTypes.put(newDecl.getName(), newDecl);
allTypes.put(newDecl.getName(), newDecl);
}
}
public Map getComplexTypes() {
return complexTypesView;
}
public XSComplexType getComplexType(String name) {
return complexTypes.get(name);
}
public Iterator iterateComplexTypes() {
return complexTypes.values().iterator();
}
public Map getTypes() {
return allTypesView;
}
public XSType getType(String name) {
return allTypes.get(name);
}
public Iterator iterateTypes() {
return allTypes.values().iterator();
}
public void visit(XSVisitor visitor) {
visitor.schema(this);
}
public Object apply(XSFunction function) {
return function.schema(this);
}
/**
* Lazily created list of {@link ForeignAttributesImpl}s.
*/
private List foreignAttributes = null;
private List readOnlyForeignAttributes = null;
public void addForeignAttributes(ForeignAttributesImpl fa) {
if(foreignAttributes==null)
foreignAttributes = new ArrayList();
foreignAttributes.add(fa);
}
public List getForeignAttributes() {
if(readOnlyForeignAttributes==null) {
if(foreignAttributes==null)
readOnlyForeignAttributes = Collections.EMPTY_LIST;
else
readOnlyForeignAttributes = Collections.unmodifiableList(foreignAttributes);
}
return readOnlyForeignAttributes;
}
public String getForeignAttribute(String nsUri, String localName) {
for( ForeignAttributes fa : getForeignAttributes() ) {
String v = fa.getValue(nsUri,localName);
if(v!=null) return v;
}
return null;
}
public Collection select(String scd, NamespaceContext nsContext) {
try {
return SCD.create(scd,nsContext).select(this);
} catch (ParseException e) {
throw new IllegalArgumentException(e);
}
}
public XSComponent selectSingle(String scd, NamespaceContext nsContext) {
try {
return SCD.create(scd,nsContext).selectSingle(this);
} catch (ParseException e) {
throw new IllegalArgumentException(e);
}
}
}