Author: jsdelfino
Date: Tue May  9 18:31:29 2006
New Revision: 405588

URL: http://svn.apache.org/viewcvs?rev=405588&view=rev
Log:
Fix for TUSCANY-340 - created ObjectFactories for the different SDO helpers

Added:
    
incubator/tuscany/java/sca/databinding/sdo/src/main/java/org/apache/tuscany/databinding/sdo/helper/
    
incubator/tuscany/java/sca/databinding/sdo/src/main/java/org/apache/tuscany/databinding/sdo/helper/SDOHelper.java
   (with props)
    
incubator/tuscany/java/sca/databinding/sdo/src/main/java/org/apache/tuscany/databinding/sdo/injection/DataFactoryObjectFactory.java
   (with props)
    
incubator/tuscany/java/sca/databinding/sdo/src/main/java/org/apache/tuscany/databinding/sdo/injection/TypeHelperObjectFactory.java
   (with props)
    
incubator/tuscany/java/sca/databinding/sdo/src/main/java/org/apache/tuscany/databinding/sdo/injection/XMLHelperObjectFactory.java
   (with props)
    
incubator/tuscany/java/sca/databinding/sdo/src/main/java/org/apache/tuscany/databinding/sdo/system/SDOServiceImpl.java
   (with props)
Modified:
    
incubator/tuscany/java/sca/databinding/sdo/src/main/java/org/apache/tuscany/databinding/sdo/injection/XSDHelperObjectFactory.java
    
incubator/tuscany/java/sca/databinding/sdo/src/main/java/org/apache/tuscany/databinding/sdo/system/SDOService.java

Added: 
incubator/tuscany/java/sca/databinding/sdo/src/main/java/org/apache/tuscany/databinding/sdo/helper/SDOHelper.java
URL: 
http://svn.apache.org/viewcvs/incubator/tuscany/java/sca/databinding/sdo/src/main/java/org/apache/tuscany/databinding/sdo/helper/SDOHelper.java?rev=405588&view=auto
==============================================================================
--- 
incubator/tuscany/java/sca/databinding/sdo/src/main/java/org/apache/tuscany/databinding/sdo/helper/SDOHelper.java
 (added)
+++ 
incubator/tuscany/java/sca/databinding/sdo/src/main/java/org/apache/tuscany/databinding/sdo/helper/SDOHelper.java
 Tue May  9 18:31:29 2006
@@ -0,0 +1,40 @@
+/**
+ *
+ *  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.databinding.sdo.helper;
+
+import static java.lang.annotation.ElementType.FIELD;
+import static java.lang.annotation.ElementType.METHOD;
+import static java.lang.annotation.RetentionPolicy.RUNTIME;
+
+import java.lang.annotation.Retention;
+import java.lang.annotation.Target;
+
+/**
+ * Annotation used to indicate a field or method that is used to inject an SDO 
helper.
+ * 
+ * The following helpers are supported:
+ * commonj.sdo.helper.TypeHelper
+ * commonj.sdo.helper.DataFactory
+ * commonj.sdo.helper.XSDHelper
+ * commonj.sdo.helper.XMLHelper
+ * 
+ */
[EMAIL PROTECTED]({METHOD, FIELD})
[EMAIL PROTECTED](RUNTIME)
+public @interface SDOHelper {
+
+}

Propchange: 
incubator/tuscany/java/sca/databinding/sdo/src/main/java/org/apache/tuscany/databinding/sdo/helper/SDOHelper.java
------------------------------------------------------------------------------
    svn:eol-style = native

Propchange: 
incubator/tuscany/java/sca/databinding/sdo/src/main/java/org/apache/tuscany/databinding/sdo/helper/SDOHelper.java
------------------------------------------------------------------------------
    svn:keywords = Rev,Date

Added: 
incubator/tuscany/java/sca/databinding/sdo/src/main/java/org/apache/tuscany/databinding/sdo/injection/DataFactoryObjectFactory.java
URL: 
http://svn.apache.org/viewcvs/incubator/tuscany/java/sca/databinding/sdo/src/main/java/org/apache/tuscany/databinding/sdo/injection/DataFactoryObjectFactory.java?rev=405588&view=auto
==============================================================================
--- 
incubator/tuscany/java/sca/databinding/sdo/src/main/java/org/apache/tuscany/databinding/sdo/injection/DataFactoryObjectFactory.java
 (added)
+++ 
incubator/tuscany/java/sca/databinding/sdo/src/main/java/org/apache/tuscany/databinding/sdo/injection/DataFactoryObjectFactory.java
 Tue May  9 18:31:29 2006
@@ -0,0 +1,50 @@
+package org.apache.tuscany.databinding.sdo.injection;
+
+import org.apache.tuscany.core.builder.ContextResolver;
+import org.apache.tuscany.core.builder.ObjectFactory;
+import org.apache.tuscany.core.context.AutowireContext;
+import org.apache.tuscany.core.context.CompositeContext;
+import org.apache.tuscany.core.injection.ObjectCreationException;
+import org.apache.tuscany.databinding.sdo.system.SDOService;
+
+import commonj.sdo.helper.DataFactory;
+
+/**
+ * @version $$Rev$$ $$Date$$
+ */
+public class DataFactoryObjectFactory implements ObjectFactory<DataFactory> {
+
+
+    private ContextResolver resolver;
+
+    /**
+     * @throws org.apache.tuscany.core.injection.FactoryInitException
+     *
+     */
+    public DataFactoryObjectFactory(ContextResolver resolver) {
+        this.resolver = resolver;
+    }
+
+
+    public DataFactory getInstance() throws ObjectCreationException {
+        CompositeContext parent = resolver.getCurrentContext();
+        if (parent == null) {
+            return null;// FIXME semantic here means required is not followed
+        }
+        if (!(parent instanceof AutowireContext)) {
+            ObjectCreationException e = new ObjectCreationException("Parent 
does not implement "
+                    + AutowireContext.class.getName());
+            e.setIdentifier(parent.getName());
+            throw e;
+        }
+        AutowireContext ctx = (AutowireContext) parent;
+        SDOService sdoService = ctx.resolveInstance(SDOService.class);
+        return sdoService.getDataFactory();
+    }
+
+    public void setContextResolver(ContextResolver resolver) {
+        this.resolver = resolver;
+    }
+
+
+}

Propchange: 
incubator/tuscany/java/sca/databinding/sdo/src/main/java/org/apache/tuscany/databinding/sdo/injection/DataFactoryObjectFactory.java
------------------------------------------------------------------------------
    svn:eol-style = native

Propchange: 
incubator/tuscany/java/sca/databinding/sdo/src/main/java/org/apache/tuscany/databinding/sdo/injection/DataFactoryObjectFactory.java
------------------------------------------------------------------------------
    svn:keywords = Rev,Date

Added: 
incubator/tuscany/java/sca/databinding/sdo/src/main/java/org/apache/tuscany/databinding/sdo/injection/TypeHelperObjectFactory.java
URL: 
http://svn.apache.org/viewcvs/incubator/tuscany/java/sca/databinding/sdo/src/main/java/org/apache/tuscany/databinding/sdo/injection/TypeHelperObjectFactory.java?rev=405588&view=auto
==============================================================================
--- 
incubator/tuscany/java/sca/databinding/sdo/src/main/java/org/apache/tuscany/databinding/sdo/injection/TypeHelperObjectFactory.java
 (added)
+++ 
incubator/tuscany/java/sca/databinding/sdo/src/main/java/org/apache/tuscany/databinding/sdo/injection/TypeHelperObjectFactory.java
 Tue May  9 18:31:29 2006
@@ -0,0 +1,50 @@
+package org.apache.tuscany.databinding.sdo.injection;
+
+import org.apache.tuscany.core.builder.ContextResolver;
+import org.apache.tuscany.core.builder.ObjectFactory;
+import org.apache.tuscany.core.context.AutowireContext;
+import org.apache.tuscany.core.context.CompositeContext;
+import org.apache.tuscany.core.injection.ObjectCreationException;
+import org.apache.tuscany.databinding.sdo.system.SDOService;
+
+import commonj.sdo.helper.TypeHelper;
+
+/**
+ * @version $$Rev$$ $$Date$$
+ */
+public class TypeHelperObjectFactory implements ObjectFactory<TypeHelper> {
+
+
+    private ContextResolver resolver;
+
+    /**
+     * @throws org.apache.tuscany.core.injection.FactoryInitException
+     *
+     */
+    public TypeHelperObjectFactory(ContextResolver resolver) {
+        this.resolver = resolver;
+    }
+
+
+    public TypeHelper getInstance() throws ObjectCreationException {
+        CompositeContext parent = resolver.getCurrentContext();
+        if (parent == null) {
+            return null;// FIXME semantic here means required is not followed
+        }
+        if (!(parent instanceof AutowireContext)) {
+            ObjectCreationException e = new ObjectCreationException("Parent 
does not implement "
+                    + AutowireContext.class.getName());
+            e.setIdentifier(parent.getName());
+            throw e;
+        }
+        AutowireContext ctx = (AutowireContext) parent;
+        SDOService sdoService = ctx.resolveInstance(SDOService.class);
+        return sdoService.getTypeHelper();
+    }
+
+    public void setContextResolver(ContextResolver resolver) {
+        this.resolver = resolver;
+    }
+
+
+}

Propchange: 
incubator/tuscany/java/sca/databinding/sdo/src/main/java/org/apache/tuscany/databinding/sdo/injection/TypeHelperObjectFactory.java
------------------------------------------------------------------------------
    svn:eol-style = native

Propchange: 
incubator/tuscany/java/sca/databinding/sdo/src/main/java/org/apache/tuscany/databinding/sdo/injection/TypeHelperObjectFactory.java
------------------------------------------------------------------------------
    svn:keywords = Rev,Date

Added: 
incubator/tuscany/java/sca/databinding/sdo/src/main/java/org/apache/tuscany/databinding/sdo/injection/XMLHelperObjectFactory.java
URL: 
http://svn.apache.org/viewcvs/incubator/tuscany/java/sca/databinding/sdo/src/main/java/org/apache/tuscany/databinding/sdo/injection/XMLHelperObjectFactory.java?rev=405588&view=auto
==============================================================================
--- 
incubator/tuscany/java/sca/databinding/sdo/src/main/java/org/apache/tuscany/databinding/sdo/injection/XMLHelperObjectFactory.java
 (added)
+++ 
incubator/tuscany/java/sca/databinding/sdo/src/main/java/org/apache/tuscany/databinding/sdo/injection/XMLHelperObjectFactory.java
 Tue May  9 18:31:29 2006
@@ -0,0 +1,50 @@
+package org.apache.tuscany.databinding.sdo.injection;
+
+import org.apache.tuscany.core.builder.ContextResolver;
+import org.apache.tuscany.core.builder.ObjectFactory;
+import org.apache.tuscany.core.context.AutowireContext;
+import org.apache.tuscany.core.context.CompositeContext;
+import org.apache.tuscany.core.injection.ObjectCreationException;
+import org.apache.tuscany.databinding.sdo.system.SDOService;
+
+import commonj.sdo.helper.XMLHelper;
+
+/**
+ * @version $$Rev$$ $$Date$$
+ */
+public class XMLHelperObjectFactory implements ObjectFactory<XMLHelper> {
+
+
+    private ContextResolver resolver;
+
+    /**
+     * @throws org.apache.tuscany.core.injection.FactoryInitException
+     *
+     */
+    public XMLHelperObjectFactory(ContextResolver resolver) {
+        this.resolver = resolver;
+    }
+
+
+    public XMLHelper getInstance() throws ObjectCreationException {
+        CompositeContext parent = resolver.getCurrentContext();
+        if (parent == null) {
+            return null;// FIXME semantic here means required is not followed
+        }
+        if (!(parent instanceof AutowireContext)) {
+            ObjectCreationException e = new ObjectCreationException("Parent 
does not implement "
+                    + AutowireContext.class.getName());
+            e.setIdentifier(parent.getName());
+            throw e;
+        }
+        AutowireContext ctx = (AutowireContext) parent;
+        SDOService sdoService = ctx.resolveInstance(SDOService.class);
+        return sdoService.getXMLHelper();
+    }
+
+    public void setContextResolver(ContextResolver resolver) {
+        this.resolver = resolver;
+    }
+
+
+}

Propchange: 
incubator/tuscany/java/sca/databinding/sdo/src/main/java/org/apache/tuscany/databinding/sdo/injection/XMLHelperObjectFactory.java
------------------------------------------------------------------------------
    svn:eol-style = native

Propchange: 
incubator/tuscany/java/sca/databinding/sdo/src/main/java/org/apache/tuscany/databinding/sdo/injection/XMLHelperObjectFactory.java
------------------------------------------------------------------------------
    svn:keywords = Rev,Date

Modified: 
incubator/tuscany/java/sca/databinding/sdo/src/main/java/org/apache/tuscany/databinding/sdo/injection/XSDHelperObjectFactory.java
URL: 
http://svn.apache.org/viewcvs/incubator/tuscany/java/sca/databinding/sdo/src/main/java/org/apache/tuscany/databinding/sdo/injection/XSDHelperObjectFactory.java?rev=405588&r1=405587&r2=405588&view=diff
==============================================================================
--- 
incubator/tuscany/java/sca/databinding/sdo/src/main/java/org/apache/tuscany/databinding/sdo/injection/XSDHelperObjectFactory.java
 (original)
+++ 
incubator/tuscany/java/sca/databinding/sdo/src/main/java/org/apache/tuscany/databinding/sdo/injection/XSDHelperObjectFactory.java
 Tue May  9 18:31:29 2006
@@ -37,8 +37,8 @@
             throw e;
         }
         AutowireContext ctx = (AutowireContext) parent;
-        SDOService assemblyCtx = ctx.resolveInstance(SDOService.class);
-        return assemblyCtx.getHelper();
+        SDOService sdoService = ctx.resolveInstance(SDOService.class);
+        return sdoService.getXSDHelper();
     }
 
     public void setContextResolver(ContextResolver resolver) {

Modified: 
incubator/tuscany/java/sca/databinding/sdo/src/main/java/org/apache/tuscany/databinding/sdo/system/SDOService.java
URL: 
http://svn.apache.org/viewcvs/incubator/tuscany/java/sca/databinding/sdo/src/main/java/org/apache/tuscany/databinding/sdo/system/SDOService.java?rev=405588&r1=405587&r2=405588&view=diff
==============================================================================
--- 
incubator/tuscany/java/sca/databinding/sdo/src/main/java/org/apache/tuscany/databinding/sdo/system/SDOService.java
 (original)
+++ 
incubator/tuscany/java/sca/databinding/sdo/src/main/java/org/apache/tuscany/databinding/sdo/system/SDOService.java
 Tue May  9 18:31:29 2006
@@ -1,5 +1,7 @@
 package org.apache.tuscany.databinding.sdo.system;
 
+import commonj.sdo.helper.TypeHelper;
+import commonj.sdo.helper.XMLHelper;
 import commonj.sdo.helper.XSDHelper;
 import commonj.sdo.helper.DataFactory;
 
@@ -8,8 +10,28 @@
  */
 public interface SDOService {
 
-    public XSDHelper getHelper();
+    /**
+     * Returns a Type helper
+     * @return
+     */
+    public TypeHelper getTypeHelper();
 
+    /**
+     * Returns an XML helper
+     * @return
+     */
+    public XMLHelper getXMLHelper();
+
+    /**
+     * Returns an XSD helper
+     * @return
+     */
+    public XSDHelper getXSDHelper();
+
+    /**
+     * Returns a DataFactory
+     * @return
+     */
     public DataFactory getDataFactory();
     
 }

Added: 
incubator/tuscany/java/sca/databinding/sdo/src/main/java/org/apache/tuscany/databinding/sdo/system/SDOServiceImpl.java
URL: 
http://svn.apache.org/viewcvs/incubator/tuscany/java/sca/databinding/sdo/src/main/java/org/apache/tuscany/databinding/sdo/system/SDOServiceImpl.java?rev=405588&view=auto
==============================================================================
--- 
incubator/tuscany/java/sca/databinding/sdo/src/main/java/org/apache/tuscany/databinding/sdo/system/SDOServiceImpl.java
 (added)
+++ 
incubator/tuscany/java/sca/databinding/sdo/src/main/java/org/apache/tuscany/databinding/sdo/system/SDOServiceImpl.java
 Tue May  9 18:31:29 2006
@@ -0,0 +1,87 @@
+/**
+ *
+ *  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.databinding.sdo.system;
+
+import org.apache.tuscany.sdo.util.SDOUtil;
+
+import commonj.sdo.helper.DataFactory;
+import commonj.sdo.helper.TypeHelper;
+import commonj.sdo.helper.XMLHelper;
+import commonj.sdo.helper.XSDHelper;
+
+/**
+ * Implementation of the SDO service.
+ */
+public class SDOServiceImpl implements SDOService {
+
+    private TypeHelper typeHelper;
+
+    private DataFactory dataFactory;
+
+    private XSDHelper xsdHelper;
+
+    private XMLHelper xmlHelper;
+    
+    //FIXME We need one instance of this service per application (SCA 
composite instance), using
+    // the TypeHelper created for this particular composite instance. The type 
helper to use is a
+    // property of the AssemblyContext in use in the particular composite 
instance.
+
+    /**
+     * Constructs a new SDOServiceImpl.
+     * 
+     * @param typeHelper
+     */
+    public SDOServiceImpl(TypeHelper typeHelper) {
+        this.typeHelper = typeHelper;
+        dataFactory = SDOUtil.createDataFactory(typeHelper);
+        xsdHelper = SDOUtil.createXSDHelper(typeHelper);
+        xmlHelper = SDOUtil.createXMLHelper(typeHelper);
+    }
+
+    /**
+     * Constructs a new SDOServiceImpl.
+     * 
+     * @param typeHelper
+     * @param dataFactory
+     * @param xsdHelper
+     * @param xmlHelper
+     */
+    public SDOServiceImpl(TypeHelper typeHelper, DataFactory dataFactory,
+                                                XSDHelper xsdHelper, XMLHelper 
xmlHelper) {
+        this.typeHelper = typeHelper;
+        this.dataFactory = dataFactory;
+        this.xsdHelper = xsdHelper;
+        this.xmlHelper = xmlHelper;
+    }
+
+    public TypeHelper getTypeHelper() {
+        return typeHelper;
+    }
+
+    public DataFactory getDataFactory() {
+        return dataFactory;
+    }
+
+    public XMLHelper getXMLHelper() {
+        return xmlHelper;
+    }
+
+    public XSDHelper getXSDHelper() {
+        return xsdHelper;
+    }
+
+}

Propchange: 
incubator/tuscany/java/sca/databinding/sdo/src/main/java/org/apache/tuscany/databinding/sdo/system/SDOServiceImpl.java
------------------------------------------------------------------------------
    svn:eol-style = native

Propchange: 
incubator/tuscany/java/sca/databinding/sdo/src/main/java/org/apache/tuscany/databinding/sdo/system/SDOServiceImpl.java
------------------------------------------------------------------------------
    svn:keywords = Rev,Date


Reply via email to