All Downloads are FREE. Search and download functionalities are using the official Maven repository.

com.sun.org.apache.xerces.internal.impl.dv.SchemaDVFactory Maven / Gradle / Ivy

The newest version!
/*
 * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
 *
 * Copyright (c) 1997-2010 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
 * https://glassfish.dev.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.
 *
 *
 * This file incorporates work covered by the following copyright and
 * permission notice:
 *
 * 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 com.sun.org.apache.xerces.internal.impl.dv;

import com.sun.org.apache.xerces.internal.util.SymbolHash;
import com.sun.org.apache.xerces.internal.xs.XSObjectList;

/**
 * Defines a factory API that enables applications to 

* 1. to get the instance of specified SchemaDVFactory implementation

* 2. to create/return built-in schema simple types

* 3. to create user defined simple types.

* * Implementations of this abstract class can be used to get built-in simple * types and create user-defined simle types.

* * The implementation should store the built-in datatypes in static data, so * that they can be shared by multiple parser instance, and multiple threads. * * @xerces.internal * * @author Sandy Gao, IBM * * @version $Id: SchemaDVFactory.java,v 1.6 2010-11-01 04:39:43 joehw Exp $ */ public abstract class SchemaDVFactory { private static final String DEFAULT_FACTORY_CLASS = "com.sun.org.apache.xerces.internal.impl.dv.xs.SchemaDVFactoryImpl"; /** * Get a default instance of SchemaDVFactory implementation. * * @return an instance of SchemaDVFactory implementation * @exception DVFactoryException cannot create an instance of the specified * class name or the default class name */ public static synchronized final SchemaDVFactory getInstance() throws DVFactoryException { return getInstance(DEFAULT_FACTORY_CLASS); } //getInstance(): SchemaDVFactory /** * Get an instance of SchemaDVFactory implementation. * * @param factoryClass name of the schema factory implementation to instantiate. * @return an instance of SchemaDVFactory implementation * @exception DVFactoryException cannot create an instance of the specified * class name or the default class name */ public static synchronized final SchemaDVFactory getInstance(String factoryClass) throws DVFactoryException { try { // if the class name is not specified, use the default one return (SchemaDVFactory)(ObjectFactory.newInstance( factoryClass, ObjectFactory.findClassLoader(), true)); } catch (ClassCastException e4) { throw new DVFactoryException("Schema factory class " + factoryClass + " does not extend from SchemaDVFactory."); } } // can't create a new object of this class protected SchemaDVFactory(){} /** * 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 abstract XSSimpleType getBuiltInType(String name); /** * get all built-in simple types, which are stored in a SymbolHash keyed by * the name * * @return a SymbolHash which contains all built-in simple types */ public abstract SymbolHash getBuiltInTypes(); /** * 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 abstract XSSimpleType createTypeRestriction(String name, String targetNamespace, short finalSet, XSSimpleType base, XSObjectList 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 abstract XSSimpleType createTypeList(String name, String targetNamespace, short finalSet, XSSimpleType itemType, XSObjectList 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 abstract XSSimpleType createTypeUnion(String name, String targetNamespace, short finalSet, XSSimpleType[] memberTypes, XSObjectList annotations); }





© 2015 - 2024 Weber Informatics LLC | Privacy Policy