summaryrefslogtreecommitdiffstats
path: root/tags/java-stable-20060304/sdo/impl/src/main/java/org/apache/tuscany/sdo/helper/XSDHelperImpl.java
diff options
context:
space:
mode:
Diffstat (limited to 'tags/java-stable-20060304/sdo/impl/src/main/java/org/apache/tuscany/sdo/helper/XSDHelperImpl.java')
-rw-r--r--tags/java-stable-20060304/sdo/impl/src/main/java/org/apache/tuscany/sdo/helper/XSDHelperImpl.java273
1 files changed, 0 insertions, 273 deletions
diff --git a/tags/java-stable-20060304/sdo/impl/src/main/java/org/apache/tuscany/sdo/helper/XSDHelperImpl.java b/tags/java-stable-20060304/sdo/impl/src/main/java/org/apache/tuscany/sdo/helper/XSDHelperImpl.java
deleted file mode 100644
index 3173601861..0000000000
--- a/tags/java-stable-20060304/sdo/impl/src/main/java/org/apache/tuscany/sdo/helper/XSDHelperImpl.java
+++ /dev/null
@@ -1,273 +0,0 @@
-/**
- *
- * Copyright 2005 The Apache Software Foundation or its licensors, as applicable.
- *
- * Licensed 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.tuscany.sdo.helper;
-
-
-import java.io.ByteArrayInputStream;
-import java.io.InputStream;
-import java.io.Reader;
-import java.util.Collection;
-import java.util.Iterator;
-import java.util.List;
-import java.util.Map;
-import java.util.Set;
-
-import org.apache.tuscany.sdo.impl.DynamicDataObjectImpl;
-import org.apache.tuscany.sdo.util.DataObjectUtil;
-import org.eclipse.emf.common.util.URI;
-import org.eclipse.emf.ecore.EClass;
-import org.eclipse.emf.ecore.EClassifier;
-import org.eclipse.emf.ecore.EModelElement;
-import org.eclipse.emf.ecore.EPackage;
-import org.eclipse.emf.ecore.EStructuralFeature;
-import org.eclipse.emf.ecore.EcorePackage;
-import org.eclipse.emf.ecore.resource.Resource;
-import org.eclipse.emf.ecore.resource.ResourceSet;
-import org.eclipse.emf.ecore.util.EcoreUtil;
-import org.eclipse.emf.ecore.util.ExtendedMetaData;
-import org.eclipse.xsd.XSDConcreteComponent;
-import org.eclipse.xsd.XSDSchema;
-import org.eclipse.xsd.XSDTypeDefinition;
-import org.eclipse.xsd.ecore.XSDEcoreBuilder;
-import org.eclipse.xsd.util.XSDResourceImpl;
-import org.w3c.dom.Element;
-import org.xml.sax.InputSource;
-
-import commonj.sdo.Property;
-import commonj.sdo.Type;
-import commonj.sdo.helper.TypeHelper;
-import commonj.sdo.helper.XSDHelper;
-
-
-/**
- * Provides access to additional information when the
- * Type or Property is defined by an XML Schema (XSD).
- * Methods return null/false otherwise or if the information is unavailable.
- * Defines Types from an XSD.
- */
-public class XSDHelperImpl implements XSDHelper
-{
- private XSDEcoreBuilder ecoreBuilder;
-
- private ExtendedMetaData extendedMetaData;
-
- public XSDHelperImpl(ExtendedMetaData extendedMetaData)
- {
- this.extendedMetaData = extendedMetaData;
- ecoreBuilder = new SDOXSDEcoreBuilder(extendedMetaData);
- }
-
- public XSDHelperImpl(TypeHelper typeHelper)
- {
- this(((TypeHelperImpl)typeHelper).extendedMetaData);
- }
-
- public String getLocalName(Type type)
- {
- return extendedMetaData.getName((EClassifier)type);
- }
-
- public String getLocalName(Property property)
- {
- return extendedMetaData.getName((EStructuralFeature)property);
- }
-
- public String getNamespaceURI(Property property)
- {
- return extendedMetaData.getNamespace((EStructuralFeature)property);
- }
-
- public boolean isAttribute(Property property)
- {
- return extendedMetaData.getFeatureKind((EStructuralFeature)property) == ExtendedMetaData.ATTRIBUTE_FEATURE;
- }
-
- public boolean isElement(Property property)
- {
- return extendedMetaData.getFeatureKind((EStructuralFeature)property) == ExtendedMetaData.ELEMENT_FEATURE;
- }
-
- public boolean isMixed(Type type)
- {
- if (type instanceof EClass)
- {
- return extendedMetaData.getContentKind((EClass)type) == ExtendedMetaData.MIXED_CONTENT;
- }
- else
- {
- return false;
- }
- }
-
- public boolean isXSD(Type type)
- {
- return ((EModelElement)type).getEAnnotation(ExtendedMetaData.ANNOTATION_URI) != null;
- }
-
- public Property getGlobalProperty(String uri, String propertyName, boolean isElement)
- {
- if (isElement)
- {
- return (Property)extendedMetaData.getElement(uri, propertyName);
- }
- else
- {
- return (Property)extendedMetaData.getAttribute(uri, propertyName);
- }
- }
-
- public String getAppinfo(Type type, String source)
- {
- return getAppinfo((EModelElement)type, source);
- }
-
- public String getAppinfo(Property property, String source)
- {
- return getAppinfo((EModelElement)property, source);
- }
-
- protected String getAppinfo(EModelElement eModelElement, String source)
- {
- return (String)eModelElement.getEAnnotation(source).getDetails().get("appinfo");
- }
-
- public List /*Type*/define(String xsd)
- {
- InputStream inputStream = new ByteArrayInputStream(xsd.getBytes());
- return define(inputStream, "*.xsd");
-
- }
-
- public List /*Type*/define(Reader xsdReader, String schemaLocation)
- {
-
- InputSource inputSource = new InputSource(xsdReader);
- return define(inputSource, schemaLocation);
-
- }
-
- public List /*Type*/define(InputStream xsdInputStream, String schemaLocation)
- {
- InputSource inputSource = new InputSource(xsdInputStream);
- return define(inputSource, schemaLocation);
- }
-
- protected List /*Type*/define(InputSource inputSource, String schemaLocation)
- {
- try
- {
- ResourceSet resourceSet = DataObjectUtil.createResourceSet();
- Resource model = resourceSet.createResource(URI.createURI(schemaLocation != null ? schemaLocation : "null.xsd"));
- ((XSDResourceImpl)model).load(inputSource, null);
- XSDSchema schema = (XSDSchema)model.getContents().get(0);
-
- // If define() is called more than once for the same XMLSchema, return the existing defined types
- //FIXME ... need to rethink this design
- //if (!ecoreBuilder.getTargetNamespaceToEPackageMap().containsKey(schema.getTargetNamespace()))
- // also return generated types registered via SDOUtil.registerStaticTypes()
- EPackage ePackage = extendedMetaData.getPackage(schema.getTargetNamespace());
- if (ePackage == null)
- {
- ecoreBuilder.generate(schema);
- Collection newEPackages = ecoreBuilder.getTargetNamespaceToEPackageMap().values();
-
- for (Iterator iter = newEPackages.iterator(); iter.hasNext();)
- {
- EPackage currentPackage = (EPackage)iter.next();
- currentPackage.setEFactoryInstance(new DynamicDataObjectImpl.FactoryImpl());
- EcoreUtil.freeze(currentPackage);
- }
- }
- ePackage = extendedMetaData.getPackage(schema.getTargetNamespace());
- return ePackage.getEClassifiers();
- }
- catch (Exception e)
- {
- throw new IllegalArgumentException();
- }
- }
-
- public String generate(List /*Type*/types)
- {
- throw new UnsupportedOperationException(); //TODO
- }
-
- public String generate(List /*Type*/types, Map /*String, String*/namespaceToSchemaLocation)
- {
- throw new UnsupportedOperationException(); //TODO
- }
-
- protected static class SDOXSDEcoreBuilder extends XSDEcoreBuilder
- {
- public SDOXSDEcoreBuilder(ExtendedMetaData extendedMetaData)
- {
- super(extendedMetaData);
- }
-
- protected String getEcoreAttribute(Element element, String attribute)
- {
- String sdoAttribute = null;
-
- if ("name".equals(attribute))
- sdoAttribute = "name";
- else if ("opposite".equals(attribute))
- sdoAttribute = "oppositeProperty";
- else if ("mixed".equals(attribute))
- sdoAttribute = "sequence";
-
- if (sdoAttribute != null)
- {
- return
- element != null && element.hasAttributeNS("commonj.sdo/xml", sdoAttribute) ?
- element.getAttributeNS("commonj.sdo/xml", sdoAttribute) :
- null;
- }
-
- if ("package".equals(attribute))
- sdoAttribute = "package";
- else if ("instanceClass".equals(attribute))
- sdoAttribute = "instanceClass";
-
- if (sdoAttribute != null)
- {
- return
- element != null && element.hasAttributeNS("commonj.sdo/java", sdoAttribute) ?
- element.getAttributeNS("commonj.sdo/java", sdoAttribute) :
- null;
- }
-
- return super.getEcoreAttribute(element, attribute);
- }
-
- protected XSDTypeDefinition getEcoreTypeQNameAttribute(XSDConcreteComponent xsdConcreteComponent, String attribute)
- {
- String sdoAttribute = null;
-
- if ("reference".equals(attribute)) sdoAttribute = "propertyType";
-
- if (sdoAttribute != null)
- {
- Element element = xsdConcreteComponent.getElement();
- return element == null ? null : getEcoreTypeQNameAttribute(xsdConcreteComponent, element, "commonj.sdo/xml", sdoAttribute);
- }
-
- return super.getEcoreTypeQNameAttribute(xsdConcreteComponent, attribute);
- }
-
- }
-
-}