[Date Prev] | [Thread Prev] | [Thread Next] | [Date Next] -- [Date Index] | [Thread Index] | [List Home]
Subject: Re: AW: [sdo] New HelperProvider implementation
Hi Frank,
I agree with the points that HelperProvider should continue to work and
that introducing (or at least re-purposing) HelperProviderImpl is wrong.
I do not see a benefit in having HelperProvider extend
HelperContextFactory as SDO implementors would just need to extend their
implementations of HelperProvider, instead they should be creating
implementations of HelperContextFactory.
Instead I have attached a new version of HelperProvider that I feel is
very compatible with the new cleaner model.
-Blaise
Frank Budinsky wrote:
> Hi Blaise,
>
> I think it is necessary for the deprecated HelperProvider to still
> continue to work. I don't think your proposal to add a new subclass
> (HelperProviderImpl) to the spec is the right approach though. I think a
> better approach would be to change HelperProvider to extend
> HelperContextFactory, similar to the way I had proposed making it a
> subclass of SDOImplementation (see my earlier attachments). I think this
> way, if an implementation has a HelperProvider implementation subclass of
> its own, it will continue to work until they decide to switch to the
> cleaner model.
>
> Frank
>
>
>
>
> Blaise Doughan <blaise.doughan@oracle.com>
> 02/12/2009 03:41 PM
>
> To
> "sdo@lists.oasis-open.org >> \"sdo@lists.oasis-open.org\""
> <sdo@lists.oasis-open.org>
> cc
>
> Subject
> Re: AW: [sdo] New HelperProvider implementation
>
>
>
>
>
>
> Hello All,
>
> If there are expectations that even though deprecated HelperProvider still
> continue to work in a reasonable manner, then the attached version of
> HelperProviderImpl could be used.
>
> I have also attached slightly updated versions of SDO and
> HelperContextFactory.
>
> -Blaise
>
> Blaise Doughan wrote:
> Hi Frank,
>
> Attached is a variant of SDOImplementation. I have taken this class and
> split it into two classes: SDO and HelperContextFactory (in
> commonj.sdo.helper). SDO implementors would be responsible for providing
> a subclass of HelperContextFactory.
>
> To create a HelperContext, a user would need to do the following:
> HelperContext hc =
> SDO.getHelperContextFactory(String).createHelperContext();
>
> This has a similar feel to JPA where users do the following:
> EntityManager em =
> Persistence.createEntityManagerFactory(String).createEntityManager();
>
> -Blaise
>
>
> Blaise Doughan wrote:
> Hi Frank,
>
> I'm still looking for ways to have the default resolver handle OSGi
> (nothing to propose yet). The pluggable resolver approach is something I
> have borrowed from the EclipseLink JPA team.
>
> Thinking about the SDOImplementation class more, I think it requires some
> additional createHelperContext methods. I have attached the updated
> class, the new create methods are also shown below:
>
> /**
> * Create a new HelperContext in this implementation.
> * @param properties - Properties required to initialize the
> HelperContext.
> * @return a HelperContext object
> */
> public abstract HelperContext createHelperContext(Map properties);
>
> /**
> * Create a new HelperContext in this implementation.
> * @param classLoader - The class loader for the generated static classes
> (if any).
> * @return a HelperContext object
> */
> public abstract HelperContext createHelperContext(ClassLoader
> classLoader);
>
> /**
> * Create a new HelperContext in this implementation.
> * @param classLoader - The class loader for the generated static classes
> (if any).
> * @param properties - Properties required to initialize the
> HelperContext.
> * @return a HelperContext object
> */
> public abstract HelperContext createHelperContext(ClassLoader
> classLoader, Map properties);
>
>
> -Blaise
>
> Frank Budinsky wrote:
> Hi Blaise,
>
> I think that the added flexibility of a pluggable resolver approach sounds
> good. I also think we should also try to make the default resolver handle
> all the cases we can think of so that needing to plug in a custom resolver
> will be less likely. Is there something else that we should/could do in
> the default resolver to handle the OSGi case?
>
> Thanks,
> Frank
>
>
>
>
> Blaise Doughan <blaise.doughan@oracle.com> 02/06/2009 12:13 PM
>
> To
> Frank Budinsky/Toronto/IBM@IBMCA
> cc
> sdo@lists.oasis-open.org
> Subject
> Re: AW: [sdo] New HelperProvider implementation
>
>
>
>
>
>
> Hi Frank,
>
> What about making the implementation look-up more pluggable? Attached is
> a modified version of SDOImplementation that provides a plug-in mechanism
> for looking up implementations (ImplmentationResolver). By default it
> behaves exactly as what you proposed. The plugin-mechanism would allow
> the behaviour to be changed for other environments such as OSGi.
>
> -Blaise
>
> Blaise Doughan wrote: Hi Frank,
>
> Along with your proposed changes the following would be required to
> ExternalizableDelegator (also attached).
>
> public ExternalizableDelegator()
> {
> delegate = SDOImplementation.getInstance().resolvable();
> }
>
> public ExternalizableDelegator(Object target)
> {
> delegate = SDOImplementation.getInstance().resolvable(target);
> }
>
>
> I think in general this means that the HelperContext used for
> deserialization will become:
> SDOImplementation.getInstance().getDefaultContext();
>
> As opposed to:
> HelperProvider.getDefaultContext();
>
> -Blaise
>
>
>
> Frank Budinsky wrote: Hi Guys,
>
> Since we'd like to get rid of all the INSTANCE fields for SDO-96, I was
> thinking that all the static getXXXHelper() methods in HelperProvider
> should also go. Once we remove all this, I think we're not left with much
> interesting content in HelperProvider, so I think that maybe we should
> just deprecate the entire class HelperProvider, and replace it with a
> clean new API. I've attached my first pass at this, class
> SDOImplementation. I've deprecated HelperProvider, but made it a subclass
> of SDOImplementation, for backward compatibility. Comments welcome.
>
> Thanks,
> Frank.
>
>
>
>
>
>
>
> Frank Budinsky/Toronto/IBM@IBMCA 01/13/2009 10:51 AM
>
> To
> sdo@lists.oasis-open.org
> cc
>
> Subject
> Re: AW: [sdo] New HelperProvider implementation
>
>
>
>
>
>
> Hi Ron,
> Thanks for looking at it. You're right that is is a partial resolution to
> SDO-96. My thinking was that SDO-96 is one of the issues that we can
> resolve in the virtual F2F, but I wanted to get some starting material for
>
>
> discussion on the table before that. I think there are several aspects to
> the issue that we'll want to discuss in detail.
> One thing that I definitely had intended this class to do, but forgot, was
>
>
> to allow more that one impl/service to be located. I've attached a
> slightly modified version here.
>
>
>
> Thanks,
> Frank.
>
>
>
>
> "Barack, Ron" <ron.barack@sap.com> 01/13/2009 10:01 AM
>
> To
> Frank Budinsky/Toronto/IBM@IBMCA, <sdo@lists.oasis-open.org>
> cc
>
> Subject
> AW: [sdo] New HelperProvider implementation
>
>
>
>
>
>
> Hi Frank,
>
> I'm guessing that this is a partial resolution to SDO-96, is that right?
> If not, what is the issue that is being addressed here.
>
> I think holding the information in a file in meta-inf is OK, certainly an
> improvement over what we have now, but in order to handle the
> bootstrapping problem, I think we need some additional options. The
> problem with having things in a file in meta-inf is that it doesn't really
>
>
> change the situation about having only one SDO on the classpath, which the
>
>
> user always gets, no matter what.
>
> A lot of systems allow specifying the implementation class through the
> API... InitialContext is a famous example of this. Others allow
> configuration through system properties ("-D"s). I think SDO should allow
>
>
> for all 3 configuration options, with the API given highest priority,
> System properties second, the mechanism which you provide third, and the
> fallback solution should be the fixed class name constant, as you have
> given it.
>
> Best Regards,
> Ron
>
>
> -----Urspr�ngliche Nachricht-----
> Von: Frank Budinsky [mailto:frankb@ca.ibm.com] Gesendet: Montag, 12.
> Januar 2009 22:57
> An: sdo@lists.oasis-open.org
> Betreff: [sdo] New HelperProvider implementation
>
> Hi Guys,
>
> Attached is a proposed new implementation for class HelperProvider. The
> advantages of this impl are:
>
> 1. It allows SDO implementations be registered as a Java Service Provider
> -
> http://java.sun.com/j2se/1.4.2/docs/guide/jar/jar.html#Service%20Provider
> 2. Implementations should not need to replace this impl, but instead
> simply plug in an subclass with necessary overrides.
> 3. I believe it's backward compatible with the previous version.
>
> Please take a look at this impl, and let me know what you think. Maybe we
> can discuss in tomorrow's call?
>
> Thanks,
> Frank.
>
>
> ---------------------------------------------------------------------
> To unsubscribe from this mail list, you must leave the OASIS TC that
> generates this mail. Follow this link to all your TCs in OASIS at:
> https://www.oasis-open.org/apps/org/workgroup/portal/my_workgroups.php
>
> [attachment "HelperProvider.java" deleted by Frank Budinsky/Toronto/IBM]
> ---------------------------------------------------------------------
> To unsubscribe from this mail list, you must leave the OASIS TC that
> generates this mail. Follow this link to all your TCs in OASIS at:
> https://www.oasis-open.org/apps/org/workgroup/portal/my_workgroups.php
>
> ---------------------------------------------------------------------
> To unsubscribe from this mail list, you must leave the OASIS TC that
> generates this mail. Follow this link to all your TCs in OASIS at:
> https://www.oasis-open.org/apps/org/workgroup/portal/my_workgroups.php
>
> ---------------------------------------------------------------------
> To unsubscribe from this mail list, you must leave the OASIS TC that
> generates this mail. Follow this link to all your TCs in OASIS at:
> https://www.oasis-open.org/apps/org/workgroup/portal/my_workgroups.php /**
>
> * <copyright>
> *
> * Service Data Objects
> * Version 3.0
> * Licensed Materials
> *
> * (c) Copyright BEA Systems, Inc., International Business Machines
> Corporation,
> * Oracle Corporation, Primeton Technologies Ltd., Rogue Wave Software,
> SAP AG.,
> * Software AG., Sun Microsystems, Sybase Inc., Xcalia, Zend Technologies,
>
> * 2005-2008. All rights reserved.
> *
> * </copyright>
> *
> */
>
> package commonj.sdo.impl;
>
> import java.io.BufferedReader;
> import java.io.IOException;
> import java.io.InputStream;
> import java.io.InputStreamReader;
> import java.security.AccessController;
> import java.security.PrivilegedAction;
> import java.util.HashMap;
>
> import commonj.sdo.helper.HelperContext;
> import commonj.sdo.impl.ExternalizableDelegator.Resolvable;
>
> /**
> * Central access to an implementation of SDO.
> */
> public abstract class SDOImplementation
> {
> /**
> * Gets the implementation's default HelperContext.
> * @return a HelperContext object
> */
> public abstract HelperContext getDefaultHelperContext();
>
> /**
> * Create a new HelperContext in this implementation.
> * @return a HelperContext object
> */
> public abstract HelperContext createHelperContext();
>
> private static ImplementationResolver implementationResolver;
>
> public static ImplementationResolver getImplementationResolver() {
> if(null == implementationResolver) {
> implementationResolver = new DefaultImplementationResolver();
> }
> return implementationResolver;
> }
>
> public static void setImplementationResolver(ImplementationResolver
> anImplementationResolver) {
> implementationResolver = anImplementationResolver;
> }
>
> public static SDOImplementation getInstance() {
> return getImplementationResolver().getInstance();
> }
>
> public static SDOImplementation getInstance(String implName) {
> return getImplementationResolver().getInstance(implName);
> }
>
> protected SDOImplementation()
> {
> }
>
> protected abstract Resolvable resolvable();
>
> protected abstract Resolvable resolvable(Object target);
>
> public static interface ImplementationResolver {
>
> /**
> * The name of the system property that will be checked for an
> implementation name.
> */
> static final String PROPERTY_NAME =
> "commonj.sdo.impl.SDOImplementation";
>
> /**
> * The name of the resource that is used for service location.
> */
> static final String SERVICE_RESOURCE_NAME =
> "META-INF/services/commonj.sdo.impl.SDOImplementation";
>
> SDOImplementation getInstance();
>
> SDOImplementation getInstance(String implName);
>
> }
>
> private static class DefaultImplementationResolver implements
> ImplementationResolver {
>
> /**
> * Locate and instantiate the default SDOImplementation.
> * @see getInstance(String)
> */
> public SDOImplementation getInstance()
> {
> return getInstance(null);
> }
>
> /**
> * Locate and instantiate an SDOImplementation.
> * <p/>
> * If the specified implName is not null, attempt to instantiate an
> implementation
> * class with that name. If implName is null, then the name of the
> implementation to use
> * is determined by the value of the
> "commonj.sdo.impl.SDOImplementation" system property.
> * If this is not set or this code does not have permission to read
> it then the name
> * will be retrieved from the
> META-INF/services/commonj.sdo.impl.SDOImplementation resource.
> * <p/>
> * Name lookup and class loading is done using first the Thread's
> current context classloader
> * and then, if that is not set, not readable, or does not provide
> an implementation,
> * using the classloader used to load the SDOImplementation class
> itself.
> * <p/>
> * @param implName The name of the implementation class.
> * @return A singleton instance of the selected SDOImplementation.
> */
> public SDOImplementation getInstance(String implName)
> {
> if (implName == null) {
> implName = getImplementationName();
> }
> ClassLoader cl = getContextClassLoader();
> if (cl != null) {
> SDOImplementation impl = getInstance(cl, implName);
> if (impl != null) {
> return impl;
> }
> }
> cl = SDOImplementation.class.getClassLoader();
> SDOImplementation impl = getInstance(cl, implName);
> if (impl != null) {
> return impl;
> }
> return null;
> }
>
> /**
> * Map from implementation classes to their corresponding singleton
> instances.
> */
> protected final HashMap<Class, SDOImplementation> instanceMap = new
> HashMap<Class, SDOImplementation>();
>
> protected SDOImplementation getInstance(ClassLoader cl, String
> implName)
> {
> try {
> if (implName == null) {
> implName = getImplementationName(cl);
> if (implName == null)
> return null;
> }
> Class instanceClass = cl.loadClass(implName);
> SDOImplementation instance = instanceMap.get(instanceClass);
>
> if (instance == null) {
> instance =
> (SDOImplementation)instanceClass.newInstance();
> instanceMap.put(instanceClass, instance);
> }
> return instance;
> }
> catch (Exception e)
> {
> return null;
> }
> }
>
> protected String getImplementationName(ClassLoader cl) throws
> IOException
> {
> InputStream is = cl.getResourceAsStream(SERVICE_RESOURCE_NAME);
> if (is == null) return null;
> InputStreamReader in = new InputStreamReader(is, "UTF-8");
> BufferedReader reader = new BufferedReader(in, 128);
> try {
> String line;
> while ((line = reader.readLine()) != null) {
> int i = line.indexOf('#');
> if (i != -1) {
> line = line.substring(0, i);
> }
> line = line.trim();
> if (line.length() > 0) return line;
> }
> return null;
> } finally {
> reader.close();
> }
> }
>
> protected String getImplementationName() {
> try {
> return (String)AccessController.doPrivileged(new
> PrivilegedAction() {
> public Object run() {
> return System.getProperty(PROPERTY_NAME);
> }
> });
> } catch (SecurityException e) {
> return null;
> }
> }
>
> protected ClassLoader getContextClassLoader() {
> try {
> return (ClassLoader)AccessController.doPrivileged(new
> PrivilegedAction() {
> public Object run() {
> return
> Thread.currentThread().getContextClassLoader();
> }
> });
> } catch (SecurityException e) {
> return null;
> }
> }
>
> }
>
> }
>
>
>
> ---------------------------------------------------------------------
> To unsubscribe from this mail list, you must leave the OASIS TC that
> generates this mail. Follow this link to all your TCs in OASIS at:
> https://www.oasis-open.org/apps/org/workgroup/portal/my_workgroups.php
>
>
> ---------------------------------------------------------------------
> To unsubscribe from this mail list, you must leave the OASIS TC that
> generates this mail. Follow this link to all your TCs in OASIS at:
> https://www.oasis-open.org/apps/org/workgroup/portal/my_workgroups.php
>
>
> ---------------------------------------------------------------------
> To unsubscribe from this mail list, you must leave the OASIS TC that
> generates this mail. Follow this link to all your TCs in OASIS at:
> https://www.oasis-open.org/apps/org/workgroup/portal/my_workgroups.php /**
> * <copyright>
> *
> * Service Data Objects
> * Version 3.0
> * Licensed Materials
> *
> * (c) Copyright BEA Systems, Inc., International Business Machines
> Corporation,
> * Oracle Corporation, Primeton Technologies Ltd., Rogue Wave Software,
> SAP AG.,
> * Software AG., Sun Microsystems, Sybase Inc., Xcalia, Zend Technologies,
> * 2005-2008. All rights reserved.
> *
> * </copyright>
> *
> */
> package commonj.sdo.helper;
>
> import java.io.BufferedReader;
> import java.io.IOException;
> import java.io.InputStream;
> import java.io.InputStreamReader;
> import java.security.AccessController;
> import java.security.PrivilegedAction;
> import java.util.HashMap;
>
> public class SDO {
>
> private static ImplementationResolver implementationResolver;
>
> public static ImplementationResolver getImplementationResolver() {
> if (null == implementationResolver) {
> implementationResolver = new DefaultImplementationResolver();
> }
> return implementationResolver;
> }
>
> public static void setImplementationResolver(ImplementationResolver
> anImplementationResolver) {
> implementationResolver = anImplementationResolver;
> }
>
> public static HelperContextFactory getHelperContextFactory() {
> return getImplementationResolver().getHelperContextFactory();
> }
>
> public static HelperContextFactory getHelperContextFactory(String
> implName) {
> return
> getImplementationResolver().getHelperContextFactory(implName);
> }
>
> public static interface ImplementationResolver {
>
> /**
> * The name of the system property that will be checked for an
> implementation name.
> */
> static final String PROPERTY_NAME =
> "commonj.sdo.helper.HelperContextFactory";
>
> /**
> * The name of the resource that is used for service location.
> */
> static final String SERVICE_RESOURCE_NAME = "META-INF/services/" +
> PROPERTY_NAME;
>
> HelperContextFactory getHelperContextFactory();
>
> HelperContextFactory getHelperContextFactory(String implName);
>
> }
>
> private static class DefaultImplementationResolver implements
> ImplementationResolver {
>
> /**
> * Locate and instantiate the default HelperContextFactory.
> *
> * @see getInstance(String)
> */
> public HelperContextFactory getHelperContextFactory() {
> return getHelperContextFactory(null);
> }
>
> /**
> * Locate and instantiate a HelperContextFactory. <p/> If the
> specified
> * implName is not null, attempt to instantiate an implementation
> class
> * with that name. If implName is null, then the name of the
> * implementation to use is determined by the value of the
> * "commonj.sdo.helper.HelperContextFactory" system property. If
> this is not
> * set or this code does not have permission to read it then the
> name
> * will be retrieved from the
> * META-INF/services/commonj.sdo.helper.HelperContextFactory
> resource. <p/>
> * Name lookup and class loading is done using first the Thread's
> * current context classloader and then, if that is not set, not
> * readable, or does not provide an implementation, using the
> * classloader used to load the HelperContextFactory class itself.
> <p/>
> *
> * @param implName
> * The name of the implementation class.
> * @return A singleton instance of the selected
> HelperContextFactory.
> */
> public HelperContextFactory getHelperContextFactory(String
> implName) {
> if (implName == null) {
> implName = getImplementationName();
> }
> ClassLoader cl = getContextClassLoader();
> if (cl != null) {
> HelperContextFactory impl = getHelperContextFactory(cl,
> implName);
> if (impl != null) {
> return impl;
> }
> }
> cl = HelperContextFactory.class.getClassLoader();
> HelperContextFactory impl = getHelperContextFactory(cl,
> implName);
> if (impl != null) {
> return impl;
> }
> return null;
> }
>
> /**
> * Map from implementation classes to their corresponding
> singleton instances.
> */
> protected final HashMap<Class, HelperContextFactory> instanceMap =
> new HashMap<Class, HelperContextFactory>();
>
> protected HelperContextFactory getHelperContextFactory(ClassLoader
> cl, String implName) {
> try {
> if (implName == null) {
> implName = getImplementationName(cl);
> if (implName == null)
> return null;
> }
> Class instanceClass = cl.loadClass(implName);
> HelperContextFactory instance =
> instanceMap.get(instanceClass);
> if (instance == null) {
> instance = (HelperContextFactory)
> instanceClass.newInstance();
> instanceMap.put(instanceClass, instance);
> }
> return instance;
> } catch (Exception e) {
> return null;
> }
> }
>
> protected String getImplementationName(ClassLoader cl) throws
> IOException {
> InputStream is =
> cl.getResourceAsStream(SERVICE_RESOURCE_NAME);
> if (is == null) return null;
> InputStreamReader in = new InputStreamReader(is, "UTF-8");
> BufferedReader reader = new BufferedReader(in, 128);
> try {
> String line;
> while ((line = reader.readLine()) != null) {
> int i = line.indexOf('#');
> if (i != -1) {
> line = line.substring(0, i);
> }
> line = line.trim();
> if (line.length() > 0) return line;
> }
> return null;
> } finally {
> reader.close();
> }
> }
>
> protected String getImplementationName() {
> try {
> return (String)AccessController.doPrivileged(new
> PrivilegedAction() {
> public Object run() {
> return System.getProperty(PROPERTY_NAME);
> }
> });
> } catch (SecurityException e) {
> return null;
> }
> }
>
> protected ClassLoader getContextClassLoader() {
> try {
> return (ClassLoader)AccessController.doPrivileged(new
> PrivilegedAction() {
> public Object run() {
> return
> Thread.currentThread().getContextClassLoader();
> }
> });
> } catch (SecurityException e) {
> return null;
> }
> }
>
> }
>
> }
> /**
> * <copyright>
> *
> * Service Data Objects
> * Version 3.0
> * Licensed Materials
> *
> * (c) Copyright BEA Systems, Inc., International Business Machines
> Corporation,
> * Oracle Corporation, Primeton Technologies Ltd., Rogue Wave Software,
> SAP AG.,
> * Software AG., Sun Microsystems, Sybase Inc., Xcalia, Zend Technologies,
> * 2005-2008. All rights reserved.
> *
> * </copyright>
> *
> */
> package commonj.sdo.helper;
>
> import java.util.Map;
>
> import commonj.sdo.helper.HelperContext;
> import commonj.sdo.impl.ExternalizableDelegator.Resolvable;
>
> public abstract class HelperContextFactory {
>
> public HelperContextFactory() {
> }
>
> /**
> * Gets the implementation's default HelperContext.
> * @return a HelperContext object
> */
> public abstract HelperContext getDefaultHelperContext();
>
> /**
> * Create a new HelperContext in this implementation.
> * @return a HelperContext object
> */
> public abstract HelperContext createHelperContext();
>
> /**
> * Create a new HelperContext in this implementation.
> * @param properties - Properties required to initialize the
> HelperContext.
> * @return a HelperContext object
> */
> public abstract HelperContext createHelperContext(Map properties);
>
> /**
> * Create a new HelperContext in this implementation.
> * @param classLoader - The class loader for the generated static
> classes (if any).
> * @return a HelperContext object
> */
> public abstract HelperContext createHelperContext(ClassLoader
> classLoader);
>
> /**
> * Create a new HelperContext in this implementation.
> * @param classLoader - The class loader for the generated static
> classes (if any).
> * @param properties - Properties required to initialize the
> HelperContext.
> * @return a HelperContext object
> */
> public abstract HelperContext createHelperContext(ClassLoader
> classLoader, Map properties);
>
> public abstract Resolvable createResolvable();
>
> public abstract Resolvable createResolvable(Object target);
>
> }
> /**
> * <copyright>
> *
> * Service Data Objects
> * Version 3.0
> * Licensed Materials
> *
> * (c) Copyright BEA Systems, Inc., International Business Machines
> Corporation,
> * Oracle Corporation, Primeton Technologies Ltd., Rogue Wave Software,
> SAP AG.,
> * Software AG., Sun Microsystems, Sybase Inc., Xcalia, Zend Technologies,
> * 2005-2008. All rights reserved.
> *
> * </copyright>
> *
> */
> package commonj.sdo.impl;
>
> import commonj.sdo.helper.CopyHelper;
> import commonj.sdo.helper.DataFactory;
> import commonj.sdo.helper.DataHelper;
> import commonj.sdo.helper.EqualityHelper;
> import commonj.sdo.helper.HelperContext;
> import commonj.sdo.helper.SDO;
> import commonj.sdo.helper.TypeHelper;
> import commonj.sdo.helper.XMLHelper;
> import commonj.sdo.helper.XSDHelper;
>
> public class HelperProviderImpl extends HelperProvider {
>
> private static final HelperContext defaultHelperContext =
> SDO.getHelperContextFactory().getDefaultHelperContext();
>
> public HelperProviderImpl() {
> super();
> }
>
> public CopyHelper copyHelper() {
> return defaultHelperContext.getCopyHelper();
> }
>
> public DataFactory dataFactory() {
> return defaultHelperContext.getDataFactory();
> }
>
> public DataHelper dataHelper() {
> return defaultHelperContext.getDataHelper();
> }
>
> public EqualityHelper equalityHelper() {
> return defaultHelperContext.getEqualityHelper();
> }
>
> public TypeHelper typeHelper() {
> return defaultHelperContext.getTypeHelper();
> }
>
> public XMLHelper xmlHelper() {
> return defaultHelperContext.getXMLHelper();
> }
>
> public XSDHelper xsdHelper() {
> return defaultHelperContext.getXSDHelper();
> }
>
> public ExternalizableDelegator.Resolvable resolvable() {
> return SDO.getHelperContextFactory().createResolvable();
> }
>
> public ExternalizableDelegator.Resolvable resolvable(Object target) {
> return SDO.getHelperContextFactory().createResolvable(target);
> }
> }
> /**
> * <copyright>
> *
> * Service Data Objects
> * Version 2.1.1
> * Licensed Materials
> *
> * (c) Copyright BEA Systems, Inc., International Business Machines
> Corporation,
> * Oracle Corporation, Primeton Technologies Ltd., Rogue Wave Software,
> SAP AG.,
> * Software AG., Sun Microsystems, Sybase Inc., Xcalia, Zend Technologies,
>
> * 2005-2008. All rights reserved.
> *
> * </copyright>
> *
> */
>
> package commonj.sdo.impl;
>
>
> import commonj.sdo.helper.CopyHelper;
> import commonj.sdo.helper.DataFactory;
> import commonj.sdo.helper.DataHelper;
> import commonj.sdo.helper.EqualityHelper;
> import commonj.sdo.helper.HelperContext;
> import commonj.sdo.helper.TypeHelper;
> import commonj.sdo.helper.XMLHelper;
> import commonj.sdo.helper.XSDHelper;
> import commonj.sdo.impl.ExternalizableDelegator.Resolvable;
>
> /**
> * This class instantiates a HelperProviderImpl that returns concrete
> helpers.
> * This class may be replaced by another implementation.
> * @deprecated
> */
> public abstract class HelperProvider
> {
> static HelperProvider INSTANCE = getHelperProviderImpl();
>
> static HelperProvider getHelperProviderImpl()
> {
> try
> {
> return
> (HelperProvider)Class.forName("commonj.sdo.impl.HelperProviderImpl").newInstance();
> } catch (Exception e)
> {
> throw new RuntimeException(e);
> }
> } // end method getHelperProvider()
>
> HelperProvider()
> {
> }
>
> /**
> * Gets a CopyHelper
> * @return a CopyHelper object
> */
> public static CopyHelper getCopyHelper()
> {
> return INSTANCE.copyHelper();
> }
>
> /**
> * Gets a DataFactory
> * @return a DataFactory object
> */
> public static DataFactory getDataFactory()
> {
> return INSTANCE.dataFactory();
> }
>
> /**
> * Gets a DataHelper
> * @return a DataHelper object
> */
> public static DataHelper getDataHelper()
> {
> return INSTANCE.dataHelper();
> }
>
> /**
> * Gets an EqualityHelper
> * @return an EqualityHelper object
> */
> public static EqualityHelper getEqualityHelper()
> {
> return INSTANCE.equalityHelper();
> }
>
> /**
> * Gets a TypeHelper
> * @return a TypeHelper object
> */
> public static TypeHelper getTypeHelper()
> {
> return INSTANCE.typeHelper();
> }
>
> /**
> * Gets an XMLHelper
> * @return an XMLHelper object
> */
> public static XMLHelper getXMLHelper()
> {
> return INSTANCE.xmlHelper();
> }
>
> /**
> * Gets an XSDHelper
> * @return an XSDHelper object
> */
> public static XSDHelper getXSDHelper()
> {
> return INSTANCE.xsdHelper();
> }
>
> /**
> * Gets a Resolvable
> * @return a Resolvable object
> * @see ExternalizableDelegator
> */
> public static Resolvable createResolvable()
> {
> return INSTANCE.resolvable();
> }
>
> /**
> * Gets a Resolvable
> * @param target the target object for the Resolvable
> * @return a Resolvable object
> * @see ExternalizableDelegator
> */
> public static Resolvable createResolvable(Object target)
> {
> return INSTANCE.resolvable(target);
> }
>
> abstract CopyHelper copyHelper();
> abstract DataFactory dataFactory();
> abstract DataHelper dataHelper();
> abstract EqualityHelper equalityHelper();
> abstract TypeHelper typeHelper();
> abstract XMLHelper xmlHelper();
> abstract XSDHelper xsdHelper();
> abstract Resolvable resolvable();
> abstract Resolvable resolvable(Object target);
>
>
> ////////////////////////////////////////////////////////////////////////////////////////////////////
> // New in SDO 2.1
>
> ////////////////////////////////////////////////////////////////////////////////////////////////////
>
> /**
> * Gets the default HelperContext
> * @return a HelperContext object
> */
> public static HelperContext getDefaultContext()
> {
> return INSTANCE.helperContext();
> }
>
> HelperContext helperContext()
> {
> return defaultContext;
> }
>
> static HelperContext defaultContext = new DefaultHelperContext();
>
> static class DefaultHelperContext implements HelperContext
> {
> public CopyHelper getCopyHelper() { return INSTANCE.copyHelper(); }
> public DataFactory getDataFactory() { return INSTANCE.dataFactory(); }
> public DataHelper getDataHelper() { return INSTANCE.dataHelper(); }
> public EqualityHelper getEqualityHelper() { return
> INSTANCE.equalityHelper(); }
> public TypeHelper getTypeHelper() { return INSTANCE.typeHelper(); }
> public XMLHelper getXMLHelper() { return INSTANCE.xmlHelper(); }
> public XSDHelper getXSDHelper() { return INSTANCE.xsdHelper(); }
> }
>
> }
>
> ---------------------------------------------------------------------
> To unsubscribe from this mail list, you must leave the OASIS TC that
> generates this mail. Follow this link to all your TCs in OASIS at:
> https://www.oasis-open.org/apps/org/workgroup/portal/my_workgroups.php
>
>
> ---------------------------------------------------------------------
> To unsubscribe from this mail list, you must leave the OASIS TC that
> generates this mail. Follow this link to all your TCs in OASIS at:
> https://www.oasis-open.org/apps/org/workgroup/portal/my_workgroups.php
>
>
/**
* <copyright>
*
* Service Data Objects
* Version 2.1.1
* Licensed Materials
*
* (c) Copyright BEA Systems, Inc., International Business Machines Corporation,
* Oracle Corporation, Primeton Technologies Ltd., Rogue Wave Software, SAP AG.,
* Software AG., Sun Microsystems, Sybase Inc., Xcalia, Zend Technologies,
* 2005-2008. All rights reserved.
*
* </copyright>
*
*/
package commonj.sdo.impl;
import commonj.sdo.helper.CopyHelper;
import commonj.sdo.helper.DataFactory;
import commonj.sdo.helper.DataHelper;
import commonj.sdo.helper.EqualityHelper;
import commonj.sdo.helper.HelperContext;
import commonj.sdo.helper.SDO;
import commonj.sdo.helper.TypeHelper;
import commonj.sdo.helper.XMLHelper;
import commonj.sdo.helper.XSDHelper;
import commonj.sdo.impl.ExternalizableDelegator.Resolvable;
/**
* This class instantiates a HelperProviderImpl that returns concrete helpers.
* This class may be replaced by another implementation.
* @deprecated
*/
public class HelperProvider
{
static final HelperContext DEFAULT_HELPER_CONTEXT = SDO.getHelperContextFactory().getDefaultHelperContext();
HelperProvider()
{
}
/**
* Gets a CopyHelper
* @return a CopyHelper object
*/
public static CopyHelper getCopyHelper()
{
return DEFAULT_HELPER_CONTEXT.getCopyHelper();
}
/**
* Gets a DataFactory
* @return a DataFactory object
*/
public static DataFactory getDataFactory()
{
return DEFAULT_HELPER_CONTEXT.getDataFactory();
}
/**
* Gets a DataHelper
* @return a DataHelper object
*/
public static DataHelper getDataHelper()
{
return DEFAULT_HELPER_CONTEXT.getDataHelper();
}
/**
* Gets an EqualityHelper
* @return an EqualityHelper object
*/
public static EqualityHelper getEqualityHelper()
{
return DEFAULT_HELPER_CONTEXT.getEqualityHelper();
}
/**
* Gets a TypeHelper
* @return a TypeHelper object
*/
public static TypeHelper getTypeHelper()
{
return DEFAULT_HELPER_CONTEXT.getTypeHelper();
}
/**
* Gets an XMLHelper
* @return an XMLHelper object
*/
public static XMLHelper getXMLHelper()
{
return DEFAULT_HELPER_CONTEXT.getXMLHelper();
}
/**
* Gets an XSDHelper
* @return an XSDHelper object
*/
public static XSDHelper getXSDHelper()
{
return DEFAULT_HELPER_CONTEXT.getXSDHelper();
}
/**
* Gets a Resolvable
* @return a Resolvable object
* @see ExternalizableDelegator
*/
public static Resolvable createResolvable()
{
return SDO.getHelperContextFactory().createResolvable();
}
/**
* Gets a Resolvable
* @param target the target object for the Resolvable
* @return a Resolvable object
* @see ExternalizableDelegator
*/
public static Resolvable createResolvable(Object target)
{
return SDO.getHelperContextFactory().createResolvable(target);
}
////////////////////////////////////////////////////////////////////////////////////////////////////
// New in SDO 2.1
////////////////////////////////////////////////////////////////////////////////////////////////////
/**
* Gets the default HelperContext
* @return a HelperContext object
*/
public static HelperContext getDefaultContext()
{
return DEFAULT_HELPER_CONTEXT;
}
}
[Date Prev] | [Thread Prev] | [Thread Next] | [Date Next] -- [Date Index] | [Thread Index] | [List Home]