Author: jmarino
Date: Tue May  9 20:55:24 2006
New Revision: 405621

URL: http://svn.apache.org/viewcvs?rev=405621&view=rev
Log:
SDOHelper support; still needs testing

Added:
    incubator/tuscany/java/sca/core/src/main/java/org/apache/tuscany/core/sdo/
    
incubator/tuscany/java/sca/core/src/main/java/org/apache/tuscany/core/sdo/DataFactoryObjectFactory.java
   (with props)
    
incubator/tuscany/java/sca/core/src/main/java/org/apache/tuscany/core/sdo/TypeHelperObjectFactory.java
   (with props)
    
incubator/tuscany/java/sca/core/src/main/java/org/apache/tuscany/core/sdo/XMLHelperObjectFactory.java
   (with props)
    
incubator/tuscany/java/sca/core/src/main/java/org/apache/tuscany/core/sdo/XSDHelperObjectFactory.java
    
incubator/tuscany/java/sca/core/src/main/java/org/apache/tuscany/core/sdo/helper/
    
incubator/tuscany/java/sca/core/src/main/java/org/apache/tuscany/core/sdo/helper/SDOHelper.java
   (with props)
    
incubator/tuscany/java/sca/core/src/main/java/org/apache/tuscany/core/sdo/helper/SDOHelperExtensibilityElement.java
    
incubator/tuscany/java/sca/core/src/main/java/org/apache/tuscany/core/sdo/helper/SDOHelperProcessor.java
Removed:
    
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/injection/
    
incubator/tuscany/java/sca/databinding/sdo/src/main/java/org/apache/tuscany/databinding/sdo/system/
Modified:
    
incubator/tuscany/java/sca/containers/container.java/src/test/java/org/apache/tuscany/container/java/integration/HelloWorldMCImpl.java
    
incubator/tuscany/java/sca/containers/container.java/src/test/java/org/apache/tuscany/container/java/integration/HelloWorldMCTestCase.java
    
incubator/tuscany/java/sca/core/src/main/java/org/apache/tuscany/core/client/TuscanyRuntime.java
    
incubator/tuscany/java/sca/core/src/main/java/org/apache/tuscany/core/config/processor/ProcessorUtils.java
    
incubator/tuscany/java/sca/core/src/main/java/org/apache/tuscany/core/context/CompositeContext.java
    
incubator/tuscany/java/sca/core/src/main/java/org/apache/tuscany/core/context/impl/AbstractCompositeContext.java
    
incubator/tuscany/java/sca/core/src/main/java/org/apache/tuscany/core/runtime/RuntimeContextImpl.java
    
incubator/tuscany/java/sca/samples/customerinfo/src/main/java/customerinfo/CustomerInfoServiceImpl.java
    
incubator/tuscany/java/sca/tomcat/src/main/java/org/apache/tuscany/tomcat/TuscanyContextListener.java

Modified: 
incubator/tuscany/java/sca/containers/container.java/src/test/java/org/apache/tuscany/container/java/integration/HelloWorldMCImpl.java
URL: 
http://svn.apache.org/viewcvs/incubator/tuscany/java/sca/containers/container.java/src/test/java/org/apache/tuscany/container/java/integration/HelloWorldMCImpl.java?rev=405621&r1=405620&r2=405621&view=diff
==============================================================================
--- 
incubator/tuscany/java/sca/containers/container.java/src/test/java/org/apache/tuscany/container/java/integration/HelloWorldMCImpl.java
 (original)
+++ 
incubator/tuscany/java/sca/containers/container.java/src/test/java/org/apache/tuscany/container/java/integration/HelloWorldMCImpl.java
 Tue May  9 20:55:24 2006
@@ -19,6 +19,9 @@
 import org.osoa.sca.annotations.Property;
 import org.osoa.sca.annotations.Reference;
 import org.osoa.sca.annotations.Service;
+import org.apache.tuscany.core.sdo.helper.SDOHelper;
+import commonj.sdo.helper.TypeHelper;
+import commonj.sdo.helper.DataFactory;
 
 /**
  * @version $Rev$ $Date$
@@ -53,5 +56,6 @@
     public String getGreetings(String name) {
         return greetingProvider2.getGreeting(name, locale);
     }
+
 
 }

Modified: 
incubator/tuscany/java/sca/containers/container.java/src/test/java/org/apache/tuscany/container/java/integration/HelloWorldMCTestCase.java
URL: 
http://svn.apache.org/viewcvs/incubator/tuscany/java/sca/containers/container.java/src/test/java/org/apache/tuscany/container/java/integration/HelloWorldMCTestCase.java?rev=405621&r1=405620&r2=405621&view=diff
==============================================================================
--- 
incubator/tuscany/java/sca/containers/container.java/src/test/java/org/apache/tuscany/container/java/integration/HelloWorldMCTestCase.java
 (original)
+++ 
incubator/tuscany/java/sca/containers/container.java/src/test/java/org/apache/tuscany/container/java/integration/HelloWorldMCTestCase.java
 Tue May  9 20:55:24 2006
@@ -20,11 +20,10 @@
 import java.net.URLClassLoader;
 
 import junit.framework.TestCase;
+import org.apache.tuscany.core.client.TuscanyRuntime;
 import org.osoa.sca.CurrentModuleContext;
 import org.osoa.sca.ModuleContext;
 
-import org.apache.tuscany.core.client.TuscanyRuntime;
-
 /**
  * @version $Rev$ $Date$
  */
@@ -33,16 +32,15 @@
 
     public void testHelloWorld() throws Exception {
         TuscanyRuntime tuscany = new TuscanyRuntime("test", "foo");
-        tuscany.start();                     
+        tuscany.start();
         ModuleContext moduleContext = CurrentModuleContext.getContext();
         assertNotNull(moduleContext);
-        assertEquals("foo",moduleContext.getURI());
+        assertEquals("foo", moduleContext.getURI());
         HelloWorldService helloworldService = (HelloWorldService) 
moduleContext.locateService("HelloWorld");
         assertNotNull(helloworldService);
 
         String value = helloworldService .getGreetings("World");
         assertEquals("Hello World", value);
-
         tuscany.stop();
     }
 

Modified: 
incubator/tuscany/java/sca/core/src/main/java/org/apache/tuscany/core/client/TuscanyRuntime.java
URL: 
http://svn.apache.org/viewcvs/incubator/tuscany/java/sca/core/src/main/java/org/apache/tuscany/core/client/TuscanyRuntime.java?rev=405621&r1=405620&r2=405621&view=diff
==============================================================================
--- 
incubator/tuscany/java/sca/core/src/main/java/org/apache/tuscany/core/client/TuscanyRuntime.java
 (original)
+++ 
incubator/tuscany/java/sca/core/src/main/java/org/apache/tuscany/core/client/TuscanyRuntime.java
 Tue May  9 20:55:24 2006
@@ -105,6 +105,8 @@
         if (moduleContext.getURI() == null){
             moduleContext.setURI(uri);
         }
+        //TODO remove hack
+        moduleContext.setAssemblyContext(modelContext);        
     }
 
     /**

Modified: 
incubator/tuscany/java/sca/core/src/main/java/org/apache/tuscany/core/config/processor/ProcessorUtils.java
URL: 
http://svn.apache.org/viewcvs/incubator/tuscany/java/sca/core/src/main/java/org/apache/tuscany/core/config/processor/ProcessorUtils.java?rev=405621&r1=405620&r2=405621&view=diff
==============================================================================
--- 
incubator/tuscany/java/sca/core/src/main/java/org/apache/tuscany/core/config/processor/ProcessorUtils.java
 (original)
+++ 
incubator/tuscany/java/sca/core/src/main/java/org/apache/tuscany/core/config/processor/ProcessorUtils.java
 Tue May  9 20:55:24 2006
@@ -22,6 +22,7 @@
 import org.apache.tuscany.core.system.config.processor.ParentContextProcessor;
 import org.apache.tuscany.core.config.ComponentTypeIntrospector;
 import org.apache.tuscany.core.config.impl.Java5ComponentTypeIntrospector;
+import org.apache.tuscany.core.sdo.helper.SDOHelperProcessor;
 import org.apache.tuscany.model.assembly.AssemblyFactory;
 
 /**
@@ -48,6 +49,7 @@
         processors.add(new AutowireProcessor());
         processors.add(new MonitorProcessor());
         processors.add(new ParentContextProcessor());
+        processors.add(new SDOHelperProcessor());
         return processors;
     }
 

Modified: 
incubator/tuscany/java/sca/core/src/main/java/org/apache/tuscany/core/context/CompositeContext.java
URL: 
http://svn.apache.org/viewcvs/incubator/tuscany/java/sca/core/src/main/java/org/apache/tuscany/core/context/CompositeContext.java?rev=405621&r1=405620&r2=405621&view=diff
==============================================================================
--- 
incubator/tuscany/java/sca/core/src/main/java/org/apache/tuscany/core/context/CompositeContext.java
 (original)
+++ 
incubator/tuscany/java/sca/core/src/main/java/org/apache/tuscany/core/context/CompositeContext.java
 Tue May  9 20:55:24 2006
@@ -4,6 +4,7 @@
 import org.apache.tuscany.model.assembly.Composite;
 import org.apache.tuscany.model.assembly.Part;
 import org.apache.tuscany.model.assembly.Extensible;
+import org.apache.tuscany.model.assembly.AssemblyContext;
 
 import java.util.List;
 
@@ -17,6 +18,12 @@
     public String getURI();
 
     public void setURI(String uri);
+
+    /**
+     * TODO remove this method
+     * @deprecated
+     */
+    public void setAssemblyContext(AssemblyContext context);
 
     /**
      * Returns the parent context, or null if the context does not have one

Modified: 
incubator/tuscany/java/sca/core/src/main/java/org/apache/tuscany/core/context/impl/AbstractCompositeContext.java
URL: 
http://svn.apache.org/viewcvs/incubator/tuscany/java/sca/core/src/main/java/org/apache/tuscany/core/context/impl/AbstractCompositeContext.java?rev=405621&r1=405620&r2=405621&view=diff
==============================================================================
--- 
incubator/tuscany/java/sca/core/src/main/java/org/apache/tuscany/core/context/impl/AbstractCompositeContext.java
 (original)
+++ 
incubator/tuscany/java/sca/core/src/main/java/org/apache/tuscany/core/context/impl/AbstractCompositeContext.java
 Tue May  9 20:55:24 2006
@@ -13,10 +13,22 @@
  */
 package org.apache.tuscany.core.context.impl;
 
+import java.util.ArrayList;
+import java.util.Collections;
+import java.util.EnumMap;
+import java.util.HashMap;
+import java.util.List;
+import java.util.Map;
+import java.util.concurrent.ConcurrentHashMap;
+import java.util.concurrent.CountDownLatch;
+import java.util.concurrent.TimeUnit;
+
+import org.apache.tuscany.common.TuscanyRuntimeException;
 import org.apache.tuscany.core.builder.BuilderConfigException;
 import org.apache.tuscany.core.builder.ContextFactory;
 import org.apache.tuscany.core.config.ConfigurationException;
 import org.apache.tuscany.core.context.AutowireContext;
+import org.apache.tuscany.core.context.AutowireResolutionException;
 import org.apache.tuscany.core.context.CompositeContext;
 import org.apache.tuscany.core.context.ConfigurationContext;
 import org.apache.tuscany.core.context.Context;
@@ -26,55 +38,44 @@
 import org.apache.tuscany.core.context.EntryPointContext;
 import org.apache.tuscany.core.context.EventContext;
 import org.apache.tuscany.core.context.EventException;
+import org.apache.tuscany.core.context.Lifecycle;
+import org.apache.tuscany.core.context.MissingContextFactoryException;
+import org.apache.tuscany.core.context.MissingImplementationException;
+import org.apache.tuscany.core.context.MissingScopeException;
+import org.apache.tuscany.core.context.ProxyConfigurationException;
 import org.apache.tuscany.core.context.QualifiedName;
 import org.apache.tuscany.core.context.ScopeAwareContext;
 import org.apache.tuscany.core.context.ScopeContext;
 import org.apache.tuscany.core.context.ScopeStrategy;
 import org.apache.tuscany.core.context.TargetException;
-import org.apache.tuscany.core.context.MissingImplementationException;
-import org.apache.tuscany.core.context.MissingContextFactoryException;
-import org.apache.tuscany.core.context.ProxyConfigurationException;
-import org.apache.tuscany.core.context.MissingScopeException;
-import org.apache.tuscany.core.context.AutowireResolutionException;
-import org.apache.tuscany.core.context.Lifecycle;
-import org.apache.tuscany.core.context.event.RequestEnd;
 import org.apache.tuscany.core.context.event.Event;
+import org.apache.tuscany.core.context.event.RequestEnd;
 import org.apache.tuscany.core.context.event.SessionBound;
 import org.apache.tuscany.core.context.event.SessionEvent;
 import org.apache.tuscany.core.context.scope.DefaultScopeStrategy;
+import org.apache.tuscany.core.system.annotation.Autowire;
+import org.apache.tuscany.core.system.annotation.ParentContext;
+import org.apache.tuscany.core.system.assembly.SystemBinding;
 import org.apache.tuscany.core.wire.InvocationConfiguration;
+import org.apache.tuscany.core.wire.SourceWireFactory;
+import org.apache.tuscany.core.wire.TargetWireFactory;
 import org.apache.tuscany.core.wire.WireConfiguration;
 import org.apache.tuscany.core.wire.WireFactory;
 import org.apache.tuscany.core.wire.WireFactoryInitException;
-import org.apache.tuscany.core.wire.SourceWireFactory;
-import org.apache.tuscany.core.wire.TargetWireFactory;
-import org.apache.tuscany.core.system.annotation.Autowire;
-import org.apache.tuscany.core.system.annotation.ParentContext;
-import org.apache.tuscany.core.system.assembly.SystemBinding;
-import org.apache.tuscany.model.assembly.Composite;
+import org.apache.tuscany.model.assembly.AssemblyContext;
+import org.apache.tuscany.model.assembly.AssemblyObject;
+import org.apache.tuscany.model.assembly.Binding;
 import org.apache.tuscany.model.assembly.Component;
-import org.apache.tuscany.model.assembly.Implementation;
+import org.apache.tuscany.model.assembly.Composite;
 import org.apache.tuscany.model.assembly.EntryPoint;
 import org.apache.tuscany.model.assembly.Extensible;
 import org.apache.tuscany.model.assembly.ExternalService;
+import org.apache.tuscany.model.assembly.Implementation;
 import org.apache.tuscany.model.assembly.Module;
-import org.apache.tuscany.model.assembly.Scope;
-import org.apache.tuscany.model.assembly.Binding;
 import org.apache.tuscany.model.assembly.ModuleComponent;
+import org.apache.tuscany.model.assembly.Scope;
 import org.apache.tuscany.model.assembly.Service;
-import org.apache.tuscany.model.assembly.AssemblyObject;
 import org.apache.tuscany.model.assembly.impl.AssemblyFactoryImpl;
-import org.apache.tuscany.common.TuscanyRuntimeException;
-
-import java.util.ArrayList;
-import java.util.Collections;
-import java.util.HashMap;
-import java.util.List;
-import java.util.Map;
-import java.util.EnumMap;
-import java.util.concurrent.ConcurrentHashMap;
-import java.util.concurrent.CountDownLatch;
-import java.util.concurrent.TimeUnit;
 
 /**
  * The base implementation of a composite context
@@ -86,6 +87,8 @@
 
     public static final int DEFAULT_WAIT = 1000 * 60;
 
+    protected AssemblyContext assemblyContext;
+
     protected CompositeContext parentContext;
 
     // The parent configuration context, if one exists
@@ -147,6 +150,10 @@
         module = new AssemblyFactoryImpl().createModule();
     }
 
+    public void setAssemblyContext(AssemblyContext assemblyContext) {
+        this.assemblyContext = assemblyContext;
+    }
+
     private String uri;
 
     public String getURI() {
@@ -161,10 +168,10 @@
     public void start() {
         synchronized (lock) {
             try {
-                if (lifecycleState == STOPPED){
+                if (lifecycleState == STOPPED) {
                     throw new IllegalStateException("Context cannot be 
restarted - create a new one");
-                }else if (lifecycleState != UNINITIALIZED) {
-                        throw new IllegalStateException("Context not in 
UNINITIALIZED state");
+                } else if (lifecycleState != UNINITIALIZED) {
+                    throw new IllegalStateException("Context not in 
UNINITIALIZED state");
                 }
 
                 lifecycleState = INITIALIZING;
@@ -199,7 +206,8 @@
                 for (ExternalService es : module.getExternalServices()) {
                     registerAutowire(es);
                 }
-                for (Map.Entry<Scope, List<ContextFactory<Context>>> entries : 
configurationsByScope.entrySet()) {
+                for (Map.Entry<Scope, List<ContextFactory<Context>>> entries : 
configurationsByScope.entrySet())
+                {
                     // register configurations with scope contexts
                     ScopeContext scope = scopeContexts.get(entries.getKey());
                     scope.registerFactories(entries.getValue());
@@ -270,7 +278,7 @@
     }
 
     @ParentContext
-    public void setParent(CompositeContext parent){
+    public void setParent(CompositeContext parent) {
         parentContext = parent;
     }
 
@@ -350,7 +358,8 @@
                     contextFactory.prepare(this);
                     try {
                         if (contextFactory.getSourceWireFactories() != null) {
-                            for (SourceWireFactory sourceWireFactory : 
contextFactory.getSourceWireFactories()) {
+                            for (SourceWireFactory sourceWireFactory : 
contextFactory.getSourceWireFactories())
+                            {
                                 sourceWireFactory.initialize();
                             }
                         }
@@ -374,7 +383,8 @@
                     contextFactory.prepare(this);
                     try {
                         if (contextFactory.getSourceWireFactories() != null) {
-                            for (SourceWireFactory sourceWireFactory : 
contextFactory.getSourceWireFactories()) {
+                            for (SourceWireFactory sourceWireFactory : 
contextFactory.getSourceWireFactories())
+                            {
                                 sourceWireFactory.initialize();
                             }
                         }
@@ -398,7 +408,8 @@
                     contextFactory.prepare(this);
                     try {
                         if (contextFactory.getSourceWireFactories() != null) {
-                            for (SourceWireFactory sourceWireFactory : 
contextFactory.getSourceWireFactories()) {
+                            for (SourceWireFactory sourceWireFactory : 
contextFactory.getSourceWireFactories())
+                            {
                                 sourceWireFactory.initialize();
                             }
                         }
@@ -505,12 +516,12 @@
         throw new UnsupportedOperationException();
     }
 
-    public void publish(Event event){
+    public void publish(Event event) {
         checkInit();
         if (event instanceof SessionBound) {
             SessionEvent sessionEvent = ((SessionBound) event);
             // update context
-            eventContext.setIdentifier(sessionEvent.getSessionTypeIdentifier() 
,sessionEvent.getId());
+            
eventContext.setIdentifier(sessionEvent.getSessionTypeIdentifier(), 
sessionEvent.getId());
         } else if (event instanceof RequestEnd) {
             // be very careful with pooled threads, ensuring threadlocals are 
cleaned up
             eventContext.clearIdentifiers();
@@ -555,9 +566,9 @@
      * Blocks until the module context has been initialized
      */
     protected void checkInit() {
-        if (lifecycleState == STOPPED){
+        if (lifecycleState == STOPPED) {
             throw new IllegalStateException("Context cannot be restarted - 
create a new one");
-        }        
+        }
         if (!initialized) {
             try {
                 /* block until the module has initialized */
@@ -678,6 +689,8 @@
             return instanceInterface.cast(this);
         } else if (AutowireContext.class.equals(instanceInterface)) {
             return instanceInterface.cast(this);
+        } else if (AssemblyContext.class.equals(instanceInterface)) {
+            return instanceInterface.cast(assemblyContext);
         }
 
         NameToScope nts = autowireInternal.get(instanceInterface);
@@ -804,7 +817,7 @@
     }
 
     public void connect(SourceWireFactory sourceFactory, TargetWireFactory 
targetFactory, Class targetType, boolean downScope,
-            ScopeContext targetScopeContext) throws BuilderConfigException {
+                        ScopeContext targetScopeContext) throws 
BuilderConfigException {
         if (configurationContext != null) {
             try {
                 configurationContext.connect(sourceFactory, targetFactory, 
targetType, downScope, targetScopeContext);

Modified: 
incubator/tuscany/java/sca/core/src/main/java/org/apache/tuscany/core/runtime/RuntimeContextImpl.java
URL: 
http://svn.apache.org/viewcvs/incubator/tuscany/java/sca/core/src/main/java/org/apache/tuscany/core/runtime/RuntimeContextImpl.java?rev=405621&r1=405620&r2=405621&view=diff
==============================================================================
--- 
incubator/tuscany/java/sca/core/src/main/java/org/apache/tuscany/core/runtime/RuntimeContextImpl.java
 (original)
+++ 
incubator/tuscany/java/sca/core/src/main/java/org/apache/tuscany/core/runtime/RuntimeContextImpl.java
 Tue May  9 20:55:24 2006
@@ -41,6 +41,7 @@
 import org.apache.tuscany.core.system.context.SystemScopeStrategy;
 import org.apache.tuscany.core.wire.SourceWireFactory;
 import org.apache.tuscany.core.wire.TargetWireFactory;
+import org.apache.tuscany.model.assembly.AssemblyContext;
 import org.apache.tuscany.model.assembly.AssemblyObject;
 import org.apache.tuscany.model.assembly.Composite;
 import org.apache.tuscany.model.assembly.Extensible;
@@ -144,6 +145,10 @@
     }
 
     public void setURI(String uri) {
+    }
+
+    public void setAssemblyContext(AssemblyContext context) {
+
     }
 
     //TODO remove

Added: 
incubator/tuscany/java/sca/core/src/main/java/org/apache/tuscany/core/sdo/DataFactoryObjectFactory.java
URL: 
http://svn.apache.org/viewcvs/incubator/tuscany/java/sca/core/src/main/java/org/apache/tuscany/core/sdo/DataFactoryObjectFactory.java?rev=405621&view=auto
==============================================================================
--- 
incubator/tuscany/java/sca/core/src/main/java/org/apache/tuscany/core/sdo/DataFactoryObjectFactory.java
 (added)
+++ 
incubator/tuscany/java/sca/core/src/main/java/org/apache/tuscany/core/sdo/DataFactoryObjectFactory.java
 Tue May  9 20:55:24 2006
@@ -0,0 +1,45 @@
+package org.apache.tuscany.core.sdo;
+
+import commonj.sdo.helper.DataFactory;
+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.model.assembly.AssemblyContext;
+import org.apache.tuscany.sdo.util.SDOUtil;
+
+/**
+ * @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;
+        AssemblyContext assemblyContext = 
ctx.resolveInstance(AssemblyContext.class);
+        return SDOUtil.createDataFactory(assemblyContext.getTypeHelper());
+    }
+
+
+}

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

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

Added: 
incubator/tuscany/java/sca/core/src/main/java/org/apache/tuscany/core/sdo/TypeHelperObjectFactory.java
URL: 
http://svn.apache.org/viewcvs/incubator/tuscany/java/sca/core/src/main/java/org/apache/tuscany/core/sdo/TypeHelperObjectFactory.java?rev=405621&view=auto
==============================================================================
--- 
incubator/tuscany/java/sca/core/src/main/java/org/apache/tuscany/core/sdo/TypeHelperObjectFactory.java
 (added)
+++ 
incubator/tuscany/java/sca/core/src/main/java/org/apache/tuscany/core/sdo/TypeHelperObjectFactory.java
 Tue May  9 20:55:24 2006
@@ -0,0 +1,45 @@
+package org.apache.tuscany.core.sdo;
+
+import commonj.sdo.helper.TypeHelper;
+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.model.assembly.AssemblyContext;
+
+/**
+ * @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;
+        AssemblyContext assemblyContext = 
ctx.resolveInstance(AssemblyContext.class);
+        return assemblyContext.getTypeHelper();
+    }
+
+
+}

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

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

Added: 
incubator/tuscany/java/sca/core/src/main/java/org/apache/tuscany/core/sdo/XMLHelperObjectFactory.java
URL: 
http://svn.apache.org/viewcvs/incubator/tuscany/java/sca/core/src/main/java/org/apache/tuscany/core/sdo/XMLHelperObjectFactory.java?rev=405621&view=auto
==============================================================================
--- 
incubator/tuscany/java/sca/core/src/main/java/org/apache/tuscany/core/sdo/XMLHelperObjectFactory.java
 (added)
+++ 
incubator/tuscany/java/sca/core/src/main/java/org/apache/tuscany/core/sdo/XMLHelperObjectFactory.java
 Tue May  9 20:55:24 2006
@@ -0,0 +1,45 @@
+package org.apache.tuscany.core.sdo;
+
+import commonj.sdo.helper.XMLHelper;
+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.model.assembly.AssemblyContext;
+import org.apache.tuscany.sdo.util.SDOUtil;
+
+/**
+ * @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;
+        AssemblyContext assemblyContext = 
ctx.resolveInstance(AssemblyContext.class);
+        return SDOUtil.createXMLHelper(assemblyContext.getTypeHelper());
+    }
+
+}

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

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

Added: 
incubator/tuscany/java/sca/core/src/main/java/org/apache/tuscany/core/sdo/XSDHelperObjectFactory.java
URL: 
http://svn.apache.org/viewcvs/incubator/tuscany/java/sca/core/src/main/java/org/apache/tuscany/core/sdo/XSDHelperObjectFactory.java?rev=405621&view=auto
==============================================================================
--- 
incubator/tuscany/java/sca/core/src/main/java/org/apache/tuscany/core/sdo/XSDHelperObjectFactory.java
 (added)
+++ 
incubator/tuscany/java/sca/core/src/main/java/org/apache/tuscany/core/sdo/XSDHelperObjectFactory.java
 Tue May  9 20:55:24 2006
@@ -0,0 +1,46 @@
+package org.apache.tuscany.core.sdo;
+
+import commonj.sdo.helper.XSDHelper;
+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.model.assembly.AssemblyContext;
+import org.apache.tuscany.sdo.util.SDOUtil;
+
+/**
+ * @version $$Rev$$ $$Date$$
+ */
+public class XSDHelperObjectFactory implements ObjectFactory<XSDHelper> {
+
+
+    private ContextResolver resolver;
+
+    /**
+     * @throws org.apache.tuscany.core.injection.FactoryInitException
+     *
+     */
+    public XSDHelperObjectFactory(ContextResolver resolver) {
+        this.resolver = resolver;
+    }
+
+
+    public XSDHelper 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;
+        AssemblyContext assemblyContext = 
ctx.resolveInstance(AssemblyContext.class);
+        return SDOUtil.createXSDHelper(assemblyContext.getTypeHelper());
+    }
+
+
+}

Added: 
incubator/tuscany/java/sca/core/src/main/java/org/apache/tuscany/core/sdo/helper/SDOHelper.java
URL: 
http://svn.apache.org/viewcvs/incubator/tuscany/java/sca/core/src/main/java/org/apache/tuscany/core/sdo/helper/SDOHelper.java?rev=405621&view=auto
==============================================================================
--- 
incubator/tuscany/java/sca/core/src/main/java/org/apache/tuscany/core/sdo/helper/SDOHelper.java
 (added)
+++ 
incubator/tuscany/java/sca/core/src/main/java/org/apache/tuscany/core/sdo/helper/SDOHelper.java
 Tue May  9 20:55:24 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.core.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/core/src/main/java/org/apache/tuscany/core/sdo/helper/SDOHelper.java
------------------------------------------------------------------------------
    svn:eol-style = native

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

Added: 
incubator/tuscany/java/sca/core/src/main/java/org/apache/tuscany/core/sdo/helper/SDOHelperExtensibilityElement.java
URL: 
http://svn.apache.org/viewcvs/incubator/tuscany/java/sca/core/src/main/java/org/apache/tuscany/core/sdo/helper/SDOHelperExtensibilityElement.java?rev=405621&view=auto
==============================================================================
--- 
incubator/tuscany/java/sca/core/src/main/java/org/apache/tuscany/core/sdo/helper/SDOHelperExtensibilityElement.java
 (added)
+++ 
incubator/tuscany/java/sca/core/src/main/java/org/apache/tuscany/core/sdo/helper/SDOHelperExtensibilityElement.java
 Tue May  9 20:55:24 2006
@@ -0,0 +1,64 @@
+package org.apache.tuscany.core.sdo.helper;
+
+import java.lang.reflect.Field;
+import java.lang.reflect.Method;
+
+import commonj.sdo.helper.DataFactory;
+import commonj.sdo.helper.TypeHelper;
+import commonj.sdo.helper.XMLHelper;
+import commonj.sdo.helper.XSDHelper;
+import org.apache.tuscany.core.builder.ContextResolver;
+import org.apache.tuscany.core.builder.ObjectFactory;
+import org.apache.tuscany.core.extension.config.InjectorExtensibilityElement;
+import org.apache.tuscany.core.injection.FieldInjector;
+import org.apache.tuscany.core.injection.Injector;
+import org.apache.tuscany.core.injection.MethodInjector;
+import org.apache.tuscany.core.injection.ObjectCreationException;
+import org.apache.tuscany.core.sdo.DataFactoryObjectFactory;
+import org.apache.tuscany.core.sdo.TypeHelperObjectFactory;
+import org.apache.tuscany.core.sdo.XMLHelperObjectFactory;
+import org.apache.tuscany.core.sdo.XSDHelperObjectFactory;
+
+/**
+ * @version $$Rev$$ $$Date$$
+ */
+public class SDOHelperExtensibilityElement implements 
InjectorExtensibilityElement {
+
+    private Method method;
+    private Field field;
+    private Class<?> type;
+
+    public SDOHelperExtensibilityElement(Method m) {
+        method = m;
+        assert(method != null);
+        assert(method.getParameterTypes().length == 1);
+        type = method.getParameterTypes()[0];
+    }
+
+    public SDOHelperExtensibilityElement(Field field) {
+        assert (field != null);
+        this.field = field;
+        this.type = field.getType();
+    }
+
+    public Injector<?> getInjector(ContextResolver resolver) {
+        ObjectFactory<?> factory;
+        if (TypeHelper.class.equals(type)) {
+            factory = new TypeHelperObjectFactory(resolver);
+        } else if (DataFactory.class.equals(type)) {
+            factory = new DataFactoryObjectFactory(resolver);
+        } else if (XSDHelper.class.equals(type)) {
+            factory = new XSDHelperObjectFactory(resolver);
+        } else if (XMLHelper.class.equals(type)) {
+            factory = new XMLHelperObjectFactory(resolver);
+        } else {
+            ObjectCreationException e = new ObjectCreationException("Unknown 
type");
+            e.setIdentifier(type.getName());
+            throw e;
+        }
+        if (method != null) {
+            return new MethodInjector(method, factory);
+        }
+        return new FieldInjector(field, factory);
+    }
+}

Added: 
incubator/tuscany/java/sca/core/src/main/java/org/apache/tuscany/core/sdo/helper/SDOHelperProcessor.java
URL: 
http://svn.apache.org/viewcvs/incubator/tuscany/java/sca/core/src/main/java/org/apache/tuscany/core/sdo/helper/SDOHelperProcessor.java?rev=405621&view=auto
==============================================================================
--- 
incubator/tuscany/java/sca/core/src/main/java/org/apache/tuscany/core/sdo/helper/SDOHelperProcessor.java
 (added)
+++ 
incubator/tuscany/java/sca/core/src/main/java/org/apache/tuscany/core/sdo/helper/SDOHelperProcessor.java
 Tue May  9 20:55:24 2006
@@ -0,0 +1,62 @@
+package org.apache.tuscany.core.sdo.helper;
+
+import java.lang.reflect.Field;
+import java.lang.reflect.Method;
+import java.lang.reflect.Modifier;
+
+import org.apache.tuscany.core.config.ConfigurationLoadException;
+import org.apache.tuscany.core.config.InvalidSetterException;
+import org.apache.tuscany.core.config.processor.ImplementationProcessorSupport;
+import org.apache.tuscany.model.assembly.ComponentType;
+import org.osoa.sca.annotations.Scope;
+
+/**
+ * @version $$Rev$$ $$Date$$
+ */
[EMAIL PROTECTED]("Module")
+public class SDOHelperProcessor extends ImplementationProcessorSupport {
+
+    @Override
+    public void visitMethod(Method method, ComponentType type) throws 
ConfigurationLoadException {
+        if (method.getDeclaringClass().equals(Object.class)) {
+            return;
+        }
+        SDOHelper annotation = method.getAnnotation(SDOHelper.class);
+        if (annotation != null) {
+            if (!Modifier.isPublic(method.getModifiers())) {
+                InvalidSetterException e = new InvalidSetterException("SDO 
setter method is not public");
+                e.setIdentifier(method.toString());
+                throw e;
+            }
+            Class<?>[] params = method.getParameterTypes();
+            if (params.length != 1) {
+                InvalidSetterException e = new InvalidSetterException("SDO 
setter method must have one parameter");
+                e.setIdentifier(method.toString());
+                throw e;
+            }
+            type.getExtensibilityElements().add(new 
SDOHelperExtensibilityElement(method));
+
+        }
+
+
+    }
+
+    @Override
+    public void visitField(Field field, ComponentType type) throws 
ConfigurationLoadException {
+        if (field.getDeclaringClass().equals(Object.class)) {
+            return;
+        }
+        int modifiers = field.getModifiers();
+        SDOHelper annotation = field.getAnnotation(SDOHelper.class);
+        if (annotation != null) {
+            if (!Modifier.isPublic(modifiers) && 
!Modifier.isProtected(modifiers)) {
+                InvalidSetterException e = new 
InvalidSetterException("Property field is not public or protected");
+                e.setIdentifier(field.getName());
+                throw e;
+            }
+            type.getExtensibilityElements().add(new 
SDOHelperExtensibilityElement(field));
+        }
+    }
+
+
+}

Modified: 
incubator/tuscany/java/sca/samples/customerinfo/src/main/java/customerinfo/CustomerInfoServiceImpl.java
URL: 
http://svn.apache.org/viewcvs/incubator/tuscany/java/sca/samples/customerinfo/src/main/java/customerinfo/CustomerInfoServiceImpl.java?rev=405621&r1=405620&r2=405621&view=diff
==============================================================================
--- 
incubator/tuscany/java/sca/samples/customerinfo/src/main/java/customerinfo/CustomerInfoServiceImpl.java
 (original)
+++ 
incubator/tuscany/java/sca/samples/customerinfo/src/main/java/customerinfo/CustomerInfoServiceImpl.java
 Tue May  9 20:55:24 2006
@@ -1,6 +1,6 @@
 package customerinfo;
 
-import org.apache.tuscany.databinding.sdo.helper.SDOHelper;
+import org.apache.tuscany.core.sdo.helper.SDOHelper;
 
 import commonj.sdo.DataObject;
 import commonj.sdo.helper.DataFactory;

Modified: 
incubator/tuscany/java/sca/tomcat/src/main/java/org/apache/tuscany/tomcat/TuscanyContextListener.java
URL: 
http://svn.apache.org/viewcvs/incubator/tuscany/java/sca/tomcat/src/main/java/org/apache/tuscany/tomcat/TuscanyContextListener.java?rev=405621&r1=405620&r2=405621&view=diff
==============================================================================
--- 
incubator/tuscany/java/sca/tomcat/src/main/java/org/apache/tuscany/tomcat/TuscanyContextListener.java
 (original)
+++ 
incubator/tuscany/java/sca/tomcat/src/main/java/org/apache/tuscany/tomcat/TuscanyContextListener.java
 Tue May  9 20:55:24 2006
@@ -124,6 +124,9 @@
             CompositeContext rootContext = runtime.getRootContext();
             rootContext.registerModelObject(moduleComponent);
             moduleContext = (CompositeContext) 
rootContext.getContext(moduleComponent.getName());
+            //TODO remove the hack below
+            moduleContext.setAssemblyContext(modelContext);
+
         } finally {
             Thread.currentThread().setContextClassLoader(oldCl);
         }


Reply via email to