Package org.apache.tuscany.sdo.util

Source Code of org.apache.tuscany.sdo.util.SDOUtil

/**
*
*  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.tuscany.sdo.util;

import java.io.IOException;
import java.io.InputStream;
import java.io.ObjectInputStream;
import java.io.ObjectOutputStream;
import java.io.OutputStream;
import java.lang.reflect.Field;
import java.security.AccessController;
import java.security.PrivilegedExceptionAction;
import java.util.Iterator;
import java.util.List;
import java.util.Map;

import org.apache.tuscany.sdo.api.SDOHelper.XMLOptions;
import org.apache.tuscany.sdo.helper.HelperContextImpl;
import org.apache.tuscany.sdo.helper.SDOExtendedMetaDataImpl;
import org.apache.tuscany.sdo.helper.TypeHelperImpl;
import org.apache.tuscany.sdo.helper.XMLStreamHelper;
import org.eclipse.emf.ecore.EPackage;
import org.eclipse.emf.ecore.impl.EPackageImpl;
import org.eclipse.emf.ecore.impl.EPackageRegistryImpl;
import org.eclipse.emf.ecore.util.ExtendedMetaData;

import commonj.sdo.DataGraph;
import commonj.sdo.DataObject;
import commonj.sdo.Property;
import commonj.sdo.Sequence;
import commonj.sdo.Type;
import commonj.sdo.helper.CopyHelper;
import commonj.sdo.helper.DataFactory;
import commonj.sdo.helper.HelperContext;
import commonj.sdo.helper.TypeHelper;
import commonj.sdo.helper.XMLHelper;
import commonj.sdo.helper.XSDHelper;

/**
* This class provides some useful static utility functions which are not specified in the SDO
*  specification itself. Use of the functions in this class is recommended, instead of resorting
*  to low-level implementation-specific APIs.
@deprecated
@see {@link org.apache.tuscany.sdo.api.SDOUtil}.
@see {@link org.apache.tuscany.sdo.api.SDOHelper.XMLOptions}.
*/
public final class SDOUtil
{
  /**
   * Line Break String such as "\n", "\r\n", "\r" and "", absence/null is the default (line.separator System Property)
   *  @deprecated see {@link org.apache.tuscany.sdo.api.SDOHelper.XMLOptions}.
   */
  static public final String XML_SAVE_LineBreak = XMLOptions.XML_SAVE_LINE_BREAK,
  /**
   * Indent String such as "\t", "", etc. absence/null is the default ("  ")
   */
  XML_SAVE_INDENT = XMLOptions.XML_SAVE_INDENT,
  /**
   * Margin String such as " ", "\t\t", etc. Absence/null/"" is the default (no margin)
   */
  XML_SAVE_MARGIN = XMLOptions.XML_SAVE_MARGIN,
  /**
   * Attribute formatting that exceeds the specified width as Integer will cause a line break so that formatting will continue indented on the next line
   */
  XML_SAVE_LineWidth = XMLOptions.XML_SAVE_LINE_WIDTH,
  /**
   * Boolean to save a doctype declaration
   */
  XML_SAVE_DocType = XMLOptions.XML_SAVE_DOCTYPE,
  /**
   * Boolean to process the schemaLocation/noNamespaceSchemaLocation attributes occurring in the instance document to {@link XSDHelper#define convert XSD(s) to Types}
   */
  XML_LOAD_SCHEMA = XMLOptions.XML_LOAD_SCHEMA,
  /**
   * To tolerate malformed elements and attributes (default unless set by System property XML.load.form.lax). 0 not to. 
   */
  XML_LOAD_LaxForm = XMLOptions.XML_LOAD_LAX_FORM;

  /**
   * Create a new TypeHelper instance. The returned type helper will have visibility of types registered
   *  directly by calling a define method on it or by calling define on an associated XSDHelper. It will
   *  also have visibility of static types registered by calling SDOUtil.registerStaticTypes in the
   *  same classLoader scope.
   * @return the new TypeHelper.
   * @deprecated see {@link org.apache.tuscany.sdo.api.SDOUtil#createHelperContext}
   */
  public static TypeHelper createTypeHelper()
  {
    EPackage.Registry registry = new EPackageRegistryImpl(EPackage.Registry.INSTANCE);
    ExtendedMetaData extendedMetaData = new SDOExtendedMetaDataImpl(registry); //TODO create subclass that makes demand() methods synchronous
    //return new TypeHelperImpl(extendedMetaData);
    return (new HelperContextImpl(extendedMetaData, false)).getTypeHelper();
  }

  /**
   * Create a new DataFactory, with visibility to types in the specified TypeHelper scope.
   * @param scope the TypeHelper to use for locating types.
   * @return the new DataFactory.
   * @deprecated see {@link org.apache.tuscany.sdo.api.SDOUtil#createDataFactory(HelperContext)}
   */
  public static DataFactory createDataFactory(TypeHelper scope)
  {
    return ((TypeHelperImpl)scope).getHelperContext().getDataFactory();
  }

  /**
   * Create a new XMLHelper, with visibility to types in the specified TypeHelper scope.
   * @param scope the TypeHelper to use for locating types.
   * @return the new XMLHelper.
   * @deprecated see {@link org.apache.tuscany.sdo.api.SDOUtil#createXMLHelper(HelperContext)}
   */
  public static XMLHelper createXMLHelper(TypeHelper scope)
  {
    return ((TypeHelperImpl)scope).getHelperContext().getXMLHelper();
  }
 
  /**
   * Create a new XSDHelper, with visibility to types in the specified TypeHelper scope.
   * @param scope the TypeHelper to use for locating and populating types.
   * @return the new XSDHelper.
   * @deprecated see {@link org.apache.tuscany.sdo.api.SDOUtil#createHelperContext}
   */
  public static XSDHelper createXSDHelper(TypeHelper scope)
  {
    return ((TypeHelperImpl)scope).getHelperContext().getXSDHelper();
  }
 
  /**
   * @deprecated see {@link org.apache.tuscany.sdo.api.SDOUtil#addTypeInstanceProperty(Type, Property, Object}
   */
  public static void addTypeInstanceProperties(Type definedType, DataObject modeledType)
  {
    List instanceProperties = getOpenContentProperties(modeledType);
    for (Iterator iter = instanceProperties.iterator(); iter.hasNext(); )
    {
      Property property = (Property)iter.next();
      org.apache.tuscany.sdo.api.SDOUtil.addTypeInstanceProperty(definedType, property, modeledType.get(property));
    }
  }

  /**
   * @deprecated see {@link org.apache.tuscany.sdo.api.SDOUtil#addPropertyInstanceProperty(Property, Property, Object}
   */
  public static void addPropertyInstanceProperties(Property definedProperty, DataObject modeledProperty)
  {
    List instanceProperties = getOpenContentProperties(modeledProperty);
    for (Iterator iter = instanceProperties.iterator(); iter.hasNext(); )
    {
      Property property = (Property)iter.next();
      org.apache.tuscany.sdo.api.SDOUtil.addPropertyInstanceProperty(definedProperty, property, modeledProperty.get(property));
    }
  }
  /**
   * Register and initialize the SDO types supported by the specified generated factory class.
   *  This function must be called before instances of the generated types can be created/used.
   *  The registered types will be visible in all TypeHelper's created in the same classLoader
   *  scope as the call to this function.
   * @param factoryClass the generated factory class.
   * @deprecated see the register(HelperContext) metods on generated Factory classes
   */
  public static void registerStaticTypes(Class factoryClass)
  {
    //TODO this implementation is temporary, until the SDO generated factory pattern is decided
    //TODO might want to clean this implementation in the light of the requirement to regenerate all classes
    //after noEMF became the default, so we have no compatibility requirements (unless we
    //cater for the simple hand edit that would make M2 generated classes work) -- as this is
    //deprecated I'm going to do nothing for now
    //
    String temp = factoryClass.getName().replaceFirst("Factory$", "PackageImpl");
    int lastDot = temp.lastIndexOf('.');
    String packageName = temp.substring(0, lastDot) + ".impl" + temp.substring(lastDot);
   
    try // this case handles the old style EMF pattern
    {
      Class javaClass = getPackageClass(factoryClass, packageName);
      Field field = javaClass.getField("eINSTANCE");
      EPackageImpl pkg = (EPackageImpl)field.get(null);
      EPackage.Registry.INSTANCE.put(pkg.getNsURI(), pkg);
    }
    catch (Exception e1)
    {
      packageName = factoryClass.getName().replaceFirst("Factory$", "Package");
      try // this case handles the EMF -noInterfaces generator pattern
      {
        Class javaClass = getPackageClass(factoryClass, packageName);
        Field field = javaClass.getField("eINSTANCE");
        EPackageImpl pkg = (EPackageImpl)field.get(null);
        EPackage.Registry.INSTANCE.put(pkg.getNsURI(), pkg);
      }
      catch (Exception e2)
      {
        try // this case handles the default (was -noEMF) generator pattern
        {
          Field field = factoryClass.getField("INSTANCE");
          EPackageImpl pkg = (EPackageImpl)field.get(null);
          EPackage.Registry.INSTANCE.put(pkg.getNsURI(), pkg);
          // TODO -- decide if we should block global initialization of Factories with the new register method.
        }
        catch (Exception e3)
        {
          e3.printStackTrace();
        }
      }
    }
  }

  /**
   * @deprecated
   */
  private static Class getPackageClass(Class factoryClass, String packageName) throws Exception
  {
    final Class factoryClassTemp = factoryClass;
    final String packageNameTemp = packageName;
    return (Class)AccessController.doPrivileged(new PrivilegedExceptionAction() {
        public Object run() throws Exception {
          return factoryClassTemp.getClassLoader().loadClass(packageNameTemp);
        }
      });
  }
 
  /**
   * @see {@link org.apache.tuscany.sdo.api.SDOHelper#createDataTypeWrapper(Type, Object)}.
   * @deprecated
   */
  public static DataObject createDataTypeWrapper(Type dataType, Object value)
  {
    return org.apache.tuscany.sdo.api.SDOUtil.createDataTypeWrapper(dataType, value);
  }
 
  /**
   * @see {@link org.apache.tuscany.sdo.api.SDOHelper#createFromString(Type, String)}.
   * @deprecated
   */
  public static Object createFromString(Type dataType, String literal)
  {
    return org.apache.tuscany.sdo.api.SDOUtil.createFromString(dataType, literal);
  }
 
  /**
   * @see {@link org.apache.tuscany.sdo.api.SDOHelper#convertToString(Type, Object)}.
   * @deprecated
   */
  public static String convertToString(Type dataType, Object value)
  {
    return org.apache.tuscany.sdo.api.SDOUtil.convertToString(dataType, value);
  }

  /**
   * @see {@link org.apache.tuscany.sdo.api.SDOHelper#getXSDSDOType(String)}.
   * @deprecated
   */
  public static Type getXSDSDOType(String xsdType)
  {   
    return org.apache.tuscany.sdo.api.SDOUtil.getXSDSDOType(xsdType);
  }
 
  /**
   * @see {@link org.apache.tuscany.sdo.api.SDOHelper#getSubstitutionValues(DataObject, Property)}.
   * @deprecated
   */
  public static Sequence getSubstitutionValues(DataObject dataObject, Property head)
  {
    return org.apache.tuscany.sdo.api.SDOUtil.getSubstitutionValues(dataObject, head);
  }
 
  /**
   * @see {@link org.apache.tuscany.sdo.api.SDOHelper#getJavaSDOType(Class)}.
   * @deprecated
   */
  public static Type getJavaSDOType(Class javaClass)
  {   
    return org.apache.tuscany.sdo.api.SDOUtil.getJavaSDOType(javaClass);
  }

  /**
   * @see {@link org.apache.tuscany.sdo.api.SDOHelper#isRequired(Property)}.
   * @deprecated
   */
  public static boolean isRequired(Property property)
  {
    return org.apache.tuscany.sdo.api.SDOUtil.isRequired(property);
  }
 
  /**
   * @see {@link org.apache.tuscany.sdo.api.SDOHelper#getUpperBound(Property)}.
   * @deprecated
   */
  public static int getUpperBound(Property property)
  {
    return org.apache.tuscany.sdo.api.SDOUtil.getUpperBound(property);
  }

  /**
   * @see {@link org.apache.tuscany.sdo.api.SDOHelper#isMany(Property, DataObject)}.
   * @deprecated
   */
  public static boolean isMany(Property property, DataObject context)
  {
    return org.apache.tuscany.sdo.api.SDOUtil.isMany(property, context);
  }

  /**
   * @see {@link org.apache.tuscany.sdo.api.SDOHelper#createDataGraph}.
   * @deprecated
   */
  public static DataGraph createDataGraph()
  {
    return org.apache.tuscany.sdo.api.SDOUtil.createDataGraph();
  }
 
  /**
   * @see {@link org.apache.tuscany.sdo.api.SDOHelper#setRootObject(DataGraph, DataObject)}.
   * @deprecated
   */
  public static void setRootObject(DataGraph dataGraph, DataObject rootObject)
  {
    org.apache.tuscany.sdo.api.SDOUtil.setRootObject(dataGraph, rootObject);
  }
 
  /**
   * @see {@link org.apache.tuscany.sdo.api.SDOHelper#loadDataGraph(InputStream, Map, HelperContext)}.
   * @deprecated
   */
  public static DataGraph loadDataGraph(InputStream inputStream, Map options) throws IOException
  {
    return org.apache.tuscany.sdo.api.SDOUtil.loadDataGraph(inputStream, options, (HelperContext)null);
  }
 
  /**
   * @see {@link org.apache.tuscany.sdo.api.SDOHelper#loadDataGraph(InputStream, Map, HelperContext)}.
   * @deprecated
   */
  public static DataGraph loadDataGraph(InputStream inputStream, Map options, TypeHelper scope) throws IOException
  {
    return org.apache.tuscany.sdo.api.SDOUtil.loadDataGraph(inputStream, options, ((TypeHelperImpl)scope).getHelperContext());
  }
 
  /**
   * @see {@link org.apache.tuscany.sdo.api.SDOHelper#saveDataGraph(DataGraph, OutputStream, Map)}.
   * @deprecated
   */
  public static void saveDataGraph(DataGraph dataGraph, OutputStream outputStream, Map options) throws IOException
  {
    org.apache.tuscany.sdo.api.SDOUtil.saveDataGraph(dataGraph, outputStream, options);
  }
 
  /**
   * @see {@link org.apache.tuscany.sdo.api.SDOHelper#registerDataGraphTypes(DataGraph, List)}.
   * @deprecated
   */
  public static void registerDataGraphTypes(DataGraph dataGraph, List/*Type*/ types)
  {
    org.apache.tuscany.sdo.api.SDOUtil.registerDataGraphTypes(dataGraph, types);
  }
 
  /**
   * @see {@link org.apache.tuscany.sdo.api.SDOHelper#createHelperContext(boolean)}.
   * @deprecated
   */
  public static HelperContext createHelperContext(boolean extensibleNamespaces)
  {
    return org.apache.tuscany.sdo.api.SDOUtil.createHelperContext(extensibleNamespaces);
  }
 
  /**
   * @see {@link org.apache.tuscany.sdo.api.SDOHelper#createHelperContext}.
   * @deprecated
   */
  public static HelperContext createHelperContext()
  {
    return org.apache.tuscany.sdo.api.SDOUtil.createHelperContext();
  }
 
  /**
   * @see {@link org.apache.tuscany.sdo.api.SDOHelper#createCrossScopeCopyHelper(HelperContext)}.
   * @deprecated
   */
  public static CopyHelper createCrossScopeCopyHelper(TypeHelper targetScope)
  {
    return org.apache.tuscany.sdo.api.SDOUtil.createCrossScopeCopyHelper(((TypeHelperImpl)targetScope).getHelperContext());
  }
 
  /**
   * @see {@link org.apache.tuscany.sdo.api.SDOHelper#createXMLStreamHelper(HelperContext)}.
   * @deprecated
   */
  public static XMLStreamHelper createXMLStreamHelper(TypeHelper scope)
  {
    return (XMLStreamHelper)org.apache.tuscany.sdo.api.SDOUtil.createXMLStreamHelper(((TypeHelperImpl)scope).getHelperContext());
  }
 
  /**
   * @see {@link org.apache.tuscany.sdo.api.SDOHelper#createObjectInputStream(InputStream, HelperContext)}.
   * @deprecated
   */
  public static ObjectInputStream createObjectInputStream(InputStream inputStream, HelperContext helperContext) throws IOException
  {
    return org.apache.tuscany.sdo.api.SDOUtil.createObjectInputStream(inputStream, helperContext);
  }
 
  /**
   * @see {@link org.apache.tuscany.sdo.api.SDOHelper#createObjectOutputStream(OutputStream, HelperContext)}.
   * @deprecated
   */
  public static ObjectOutputStream createObjectOutputStream(OutputStream outputStream, HelperContext helperContext) throws IOException
  {
    return org.apache.tuscany.sdo.api.SDOUtil.createObjectOutputStream(outputStream, helperContext);
  }
 
  /**
   * @see {@link org.apache.tuscany.sdo.api.SDOHelper#getTypes(HelperContext, String)}.
   * @deprecated
   */
  public static List getTypes(TypeHelper scope, String uri) {

    return org.apache.tuscany.sdo.api.SDOUtil.getTypes(((TypeHelperImpl)scope).getHelperContext(), uri);
  }
 
  /**
   * @see {@link org.apache.tuscany.sdo.api.SDOHelper#getOpenContentProperties(DataObject)}.
   * @deprecated
   */
  public static List getOpenContentProperties(DataObject dataObject)
  {
    return org.apache.tuscany.sdo.api.SDOUtil.getOpenContentProperties(dataObject);
  }

  /**
   * @see {@link org.apache.tuscany.sdo.api.SDOHelper#isDocumentRoot(Type)}.
   * @deprecated
   */
  public static boolean isDocumentRoot(Type type)
  {
    return org.apache.tuscany.sdo.api.SDOUtil.isDocumentRoot(type);
  }
 
  /**
   * @see {@link org.apache.tuscany.sdo.api.SDOHelper.MetaDataBuilder#createType(HelperContext, String, String, boolean)}.
   * @deprecated
   */
  public static Type createType(TypeHelper scope, String uri, String name, boolean isDataType)
  {
    return org.apache.tuscany.sdo.api.SDOUtil.createType(((TypeHelperImpl)scope).getHelperContext(), uri, name, isDataType);
  }
 
  /**
   * @see {@link org.apache.tuscany.sdo.api.SDOHelper.MetaDataBuilder#addBaseType(Type, Type)}.
   * @deprecated
   */
  public static void addBaseType(Type type, Type baseType)
  {
    org.apache.tuscany.sdo.api.SDOUtil.addBaseType(type, baseType);
  }
 
  /**
   * @see {@link org.apache.tuscany.sdo.api.SDOHelper.MetaDataBuilder#addAliasName(Type, String)}.
   * @deprecated
   */
  public static void addAliasName(Type type, String aliasName)
  {
    org.apache.tuscany.sdo.api.SDOUtil.addAliasName(type, aliasName);
  }
 
  /**
   * @see {@link org.apache.tuscany.sdo.api.SDOHelper.MetaDataBuilder#setOpen(Type, boolean)}.
   * @deprecated
   */
  public static void setOpen(Type type, boolean isOpen)
  {
    org.apache.tuscany.sdo.api.SDOUtil.setOpen(type, isOpen);
  }
 
  /**
   * @see {@link org.apache.tuscany.sdo.api.SDOHelper.MetaDataBuilder#setSequenced(Type, boolean)}.
   * @deprecated
   */
  public static void setSequenced(Type type, boolean isSequenced)
  {
    org.apache.tuscany.sdo.api.SDOUtil.setSequenced(type, isSequenced);
  }
 
  /**
   * @see {@link org.apache.tuscany.sdo.api.SDOHelper.MetaDataBuilder#setAbstract(Type, boolean)}.
   * @deprecated
   */
  public static void setAbstract(Type type, boolean isAbstract)
  {
    org.apache.tuscany.sdo.api.SDOUtil.setAbstract(type, isAbstract);
  }
 
  /**
   * @see {@link org.apache.tuscany.sdo.api.SDOHelper.MetaDataBuilder#setJavaClassName(Type, String)}.
   * @deprecated
   */
  public static void setJavaClassName(Type type, String javaClassName)
  {
    org.apache.tuscany.sdo.api.SDOUtil.setJavaClassName(type, javaClassName);
  }
 
  /**
   * @see {@link org.apache.tuscany.sdo.api.SDOHelper.MetaDataBuilder#createProperty(Type, String, Type)}.
    * @deprecated
  */
  public static Property createProperty(Type containingType, String name, Type propertyType)
  {
    return org.apache.tuscany.sdo.api.SDOUtil.createProperty(containingType, name, propertyType);
  }
 
  /**
   * @see {@link org.apache.tuscany.sdo.api.SDOHelper.MetaDataBuilder#createGlobalProperty(HelperContext, String, String, Type)}.
   * @deprecated
   */
  public static Property createGlobalProperty(TypeHelper scope, String uri, String name, Type type)
  {
    return org.apache.tuscany.sdo.api.SDOUtil.createOpenContentProperty(((TypeHelperImpl)scope).getHelperContext(), uri, name, type);
  }
 
  /**
   * @see {@link org.apache.tuscany.sdo.api.SDOHelper.MetaDataBuilder#addAliasName(Property, String)}.
   * @deprecated
   */
  public static void addAliasName(Property property, String aliasName)
  {
    org.apache.tuscany.sdo.api.SDOUtil.addAliasName(property, aliasName);
  }
  /**
   * @see {@link org.apache.tuscany.sdo.api.SDOHelper.MetaDataBuilder#setMany(Property, boolean)}.
   * @deprecated
   */
  public static void setMany(Property property, boolean isMany)
  {
    org.apache.tuscany.sdo.api.SDOUtil.setMany(property, isMany);
  }
 
  /**
   * @see {@link org.apache.tuscany.sdo.api.SDOHelper.MetaDataBuilder#setContainment(Property, boolean)}.
   * @deprecated
   */
  public static void setContainment(Property property, boolean isContainment)
  {
    org.apache.tuscany.sdo.api.SDOUtil.setContainment(property, isContainment);
  }

  /**
   * @see {@link org.apache.tuscany.sdo.api.SDOHelper.MetaDataBuilder#setDefault(Property, String)}.
   * @deprecated
   */
  public static void setDefault(Property property, String defaultValue)
  {
    org.apache.tuscany.sdo.api.SDOUtil.setDefault(property, defaultValue);
  }
 
  /**
   * @see {@link org.apache.tuscany.sdo.api.SDOHelper.MetaDataBuilder#setReadOnly(Property, boolean)}.
   * @deprecated
   */
  public static void setReadOnly(Property property, boolean isReadOnly)
  {
    org.apache.tuscany.sdo.api.SDOUtil.setReadOnly(property, isReadOnly);
  }
 
  /**
   * @see {@link org.apache.tuscany.sdo.api.SDOHelper.MetaDataBuilder#setOpposite(Property, Property)}.
   * @deprecated
   */
  public static void setOpposite(Property property, Property opposite)
  {
    org.apache.tuscany.sdo.api.SDOUtil.setOpposite(property, opposite);
  }
   
}
TOP

Related Classes of org.apache.tuscany.sdo.util.SDOUtil

TOP
Copyright © 2018 www.massapi.com. All rights reserved.
All source code are property of their respective owners. Java is a trademark of Sun Microsystems, Inc and owned by ORACLE Inc. Contact coftware#gmail.com.