blob: 8c695e2aa92c126efebb937fd0c4abb60f16eed6 [file] [log] [blame]
/*
* 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.vxquery.context;
import java.util.List;
import java.util.Map;
import javax.xml.namespace.QName;
import org.apache.vxquery.collations.CodepointCollation;
import org.apache.vxquery.collations.Collation;
import org.apache.vxquery.functions.BuiltinFunctions;
import org.apache.vxquery.functions.Function;
import org.apache.vxquery.types.AttributeType;
import org.apache.vxquery.types.BuiltinTypeRegistry;
import org.apache.vxquery.types.ElementType;
import org.apache.vxquery.types.ItemType;
import org.apache.vxquery.types.SchemaType;
import org.apache.vxquery.types.SequenceType;
import org.apache.vxquery.xmlquery.query.XQueryConstants;
public final class RootStaticContextImpl extends StaticContextImpl {
public static final StaticContext INSTANCE;
static {
INSTANCE = new RootStaticContextImpl();
// Namespaces
INSTANCE.registerNamespaceUri(XQueryConstants.XML_PREFIX, XQueryConstants.XML_NSURI);
INSTANCE.registerNamespaceUri(XQueryConstants.XS_PREFIX, XQueryConstants.XS_NSURI);
INSTANCE.registerNamespaceUri(XQueryConstants.XSEXT_PREFIX, XQueryConstants.XSEXT_NSURI);
INSTANCE.registerNamespaceUri(XQueryConstants.XSI_PREFIX, XQueryConstants.XSI_NSURI);
INSTANCE.registerNamespaceUri(XQueryConstants.FN_PREFIX, XQueryConstants.FN_NSURI);
INSTANCE.registerNamespaceUri(XQueryConstants.LOCAL_PREFIX, XQueryConstants.LOCAL_NSURI);
INSTANCE.registerNamespaceUri(XQueryConstants.JS_PREFIX, XQueryConstants.JS_NSURI);
INSTANCE.registerNamespaceUri(XQueryConstants.JN_PREFIX, XQueryConstants.JN_NSURI);
INSTANCE.registerNamespaceUri(XQueryConstants.JDM_PREFIX, XQueryConstants.JDM_NSURI);
INSTANCE.setBaseUri(".");
INSTANCE.setDefaultFunctionNamespaceUri(XQueryConstants.FN_NSURI);
// Types
for (Map.Entry<QName, SchemaType> e : BuiltinTypeRegistry.TYPE_MAP.entrySet()) {
QName typeName = e.getKey();
SchemaType type = e.getValue();
INSTANCE.registerSchemaType(typeName, type);
}
for (Map.Entry<ItemType, SequenceType[]> e : SequenceType.BUILTIN_SEQ_TYPES.entrySet()) {
for (SequenceType st : e.getValue()) {
INSTANCE.encodeSequenceType(st);
}
}
// Functions
for (Function fn : BuiltinFunctions.FUNCTION_COLLECTION) {
INSTANCE.registerFunction(fn);
}
INSTANCE.registerCollation(CodepointCollation.URI, CodepointCollation.INSTANCE);
INSTANCE.setDefaultCollation(CodepointCollation.URI);
((RootStaticContextImpl) INSTANCE).sealed = true;
}
private boolean sealed;
private RootStaticContextImpl() {
super(null);
}
private void checkSealed() {
if (sealed) {
throw new IllegalStateException();
}
}
@Override
public void registerAttributeDeclaration(QName name, AttributeType attrDecl) {
checkSealed();
super.registerAttributeDeclaration(name, attrDecl);
}
@Override
public void registerCollation(String collationName, Collation collation) {
checkSealed();
super.registerCollation(collationName, collation);
}
@Override
public void registerCollectionType(String collectionUri, SequenceType type) {
checkSealed();
super.registerCollectionType(collectionUri, type);
}
@Override
public void registerDocumentType(String docUri, SequenceType type) {
checkSealed();
super.registerDocumentType(docUri, type);
}
@Override
public void registerElementDeclaration(QName name, ElementType elemDecl) {
checkSealed();
super.registerElementDeclaration(name, elemDecl);
}
@Override
public void registerFunction(Function function) {
checkSealed();
super.registerFunction(function);
}
@Override
public void registerNamespaceUri(String prefix, String uri) {
checkSealed();
super.registerNamespaceUri(prefix, uri);
}
@Override
public void registerModuleImport(String uri, List<String> locations) {
checkSealed();
super.registerModuleImport(uri, locations);
}
@Override
public void registerSchemaImport(String uri, List<String> locations) {
checkSealed();
super.registerSchemaImport(uri, locations);
}
@Override
public void registerSchemaType(QName name, SchemaType type) {
checkSealed();
super.registerSchemaType(name, type);
}
@Override
public int encodeSequenceType(SequenceType type) {
checkSealed();
return super.encodeSequenceType(type);
}
@Override
public void setBaseUri(String baseUri) {
checkSealed();
super.setBaseUri(baseUri);
}
@Override
public void setBoundarySpaceProperty(BoundarySpaceProperty boundarySpaceProperty) {
checkSealed();
super.setBoundarySpaceProperty(boundarySpaceProperty);
}
@Override
public void setConstructionModeProperty(ConstructionModeProperty constructionMode) {
checkSealed();
super.setConstructionModeProperty(constructionMode);
}
@Override
public void setCopyNamespacesModeProperty(CopyNamespacesModeProperty copyNamespacesMode) {
checkSealed();
super.setCopyNamespacesModeProperty(copyNamespacesMode);
}
@Override
public void setDefaultCollation(String defaultCollation) {
checkSealed();
super.setDefaultCollation(defaultCollation);
}
@Override
public void setDefaultCollectionType(SequenceType type) {
checkSealed();
super.setDefaultCollectionType(type);
}
@Override
public void setDefaultElementNamespaceUri(String uri) {
checkSealed();
super.setDefaultElementNamespaceUri(uri);
}
@Override
public void setDefaultFunctionNamespaceUri(String uri) {
checkSealed();
super.setDefaultFunctionNamespaceUri(uri);
}
@Override
public void setEmptyOrderProperty(EmptyOrderProperty emptyOrder) {
checkSealed();
super.setEmptyOrderProperty(emptyOrder);
}
@Override
public void setOrderingModeProperty(OrderingModeProperty orderingMode) {
checkSealed();
super.setOrderingModeProperty(orderingMode);
}
@Override
public IStaticContextFactory createFactory() {
return RootStaticContextFactory.INSTANCE;
}
}