You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@tuscany.apache.org by rf...@apache.org on 2007/03/09 19:38:11 UTC

svn commit: r516501 - in /incubator/tuscany/branches/sca-java-integration: sca/kernel/core/src/main/java/org/apache/tuscany/core/builder/ sca/kernel/core/src/main/java/org/apache/tuscany/core/implementation/composite/ sca/kernel/spi/src/main/java/org/a...

Author: rfeng
Date: Fri Mar  9 10:38:09 2007
New Revision: 516501

URL: http://svn.apache.org/viewvc?view=rev&rev=516501
Log:
[sca-integration-branch] Add the generic builder to support SCDL extensibility elements and switch import.sdo to this capability

Added:
    incubator/tuscany/branches/sca-java-integration/sca/kernel/spi/src/main/java/org/apache/tuscany/spi/builder/GenericBuilder.java   (with props)
    incubator/tuscany/branches/sca-java-integration/sca/kernel/spi/src/main/java/org/apache/tuscany/spi/extension/GenericBuilderExtension.java   (with props)
    incubator/tuscany/branches/sca-java-integration/sca/services/databinding/databinding-sdo/src/main/java/org/apache/tuscany/databinding/sdo/ImportSDO.java   (with props)
    incubator/tuscany/branches/sca-java-integration/sca/services/databinding/databinding-sdo/src/main/java/org/apache/tuscany/databinding/sdo/ImportSDOBuilder.java   (with props)
    incubator/tuscany/branches/sca-java-integration/sca/services/databinding/databinding-sdo/src/main/java/org/apache/tuscany/databinding/sdo/SDOContextHelper.java
      - copied, changed from r515726, incubator/tuscany/branches/sca-java-integration/sca/services/databinding/databinding-sdo/src/main/java/org/apache/tuscany/databinding/sdo/SDODataTypeHelper.java
    incubator/tuscany/branches/sca-java-integration/sca/services/databinding/databinding-sdo/src/main/java/org/apache/tuscany/databinding/sdo/SDOHelperContext.java   (with props)
Removed:
    incubator/tuscany/branches/sca-java-integration/sca/services/databinding/databinding-sdo/src/main/java/org/apache/tuscany/databinding/sdo/SDODataTypeHelper.java
    incubator/tuscany/branches/sca-java-integration/sca/services/databinding/databinding-sdo/src/main/java/org/apache/tuscany/databinding/sdo/SDOObjectFactory.java
Modified:
    incubator/tuscany/branches/sca-java-integration/sca/kernel/core/src/main/java/org/apache/tuscany/core/builder/BuilderRegistryImpl.java
    incubator/tuscany/branches/sca-java-integration/sca/kernel/core/src/main/java/org/apache/tuscany/core/implementation/composite/AbstractCompositeBuilder.java
    incubator/tuscany/branches/sca-java-integration/sca/kernel/core/src/main/java/org/apache/tuscany/core/implementation/composite/CompositeLoader.java
    incubator/tuscany/branches/sca-java-integration/sca/kernel/spi/src/main/java/org/apache/tuscany/spi/builder/Builder.java
    incubator/tuscany/branches/sca-java-integration/sca/kernel/spi/src/main/java/org/apache/tuscany/spi/builder/BuilderRegistry.java
    incubator/tuscany/branches/sca-java-integration/sca/kernel/spi/src/main/java/org/apache/tuscany/spi/model/CompositeComponentType.java
    incubator/tuscany/branches/sca-java-integration/sca/services/databinding/databinding-sdo-axiom/src/main/java/org/apache/tuscany/databinding/sdo2om/DataObject2OMElement.java
    incubator/tuscany/branches/sca-java-integration/sca/services/databinding/databinding-sdo-axiom/src/main/java/org/apache/tuscany/databinding/sdo2om/XMLDocument2OMElement.java
    incubator/tuscany/branches/sca-java-integration/sca/services/databinding/databinding-sdo/src/main/java/org/apache/tuscany/databinding/sdo/DataObject2String.java
    incubator/tuscany/branches/sca-java-integration/sca/services/databinding/databinding-sdo/src/main/java/org/apache/tuscany/databinding/sdo/DataObject2XMLStreamReader.java
    incubator/tuscany/branches/sca-java-integration/sca/services/databinding/databinding-sdo/src/main/java/org/apache/tuscany/databinding/sdo/DataObjectLoader.java
    incubator/tuscany/branches/sca-java-integration/sca/services/databinding/databinding-sdo/src/main/java/org/apache/tuscany/databinding/sdo/ImportSDOLoader.java
    incubator/tuscany/branches/sca-java-integration/sca/services/databinding/databinding-sdo/src/main/java/org/apache/tuscany/databinding/sdo/ModelDataObject.java
    incubator/tuscany/branches/sca-java-integration/sca/services/databinding/databinding-sdo/src/main/java/org/apache/tuscany/databinding/sdo/SDOSimpleTypeMapper.java
    incubator/tuscany/branches/sca-java-integration/sca/services/databinding/databinding-sdo/src/main/java/org/apache/tuscany/databinding/sdo/SDOWrapperHandler.java
    incubator/tuscany/branches/sca-java-integration/sca/services/databinding/databinding-sdo/src/main/java/org/apache/tuscany/databinding/sdo/String2DataObject.java
    incubator/tuscany/branches/sca-java-integration/sca/services/databinding/databinding-sdo/src/main/java/org/apache/tuscany/databinding/sdo/XMLDocument2String.java
    incubator/tuscany/branches/sca-java-integration/sca/services/databinding/databinding-sdo/src/main/java/org/apache/tuscany/databinding/sdo/XMLDocument2XMLStreamReader.java
    incubator/tuscany/branches/sca-java-integration/sca/services/databinding/databinding-sdo/src/main/java/org/apache/tuscany/databinding/sdo/XMLStreamReader2DataObject.java
    incubator/tuscany/branches/sca-java-integration/sca/services/databinding/databinding-sdo/src/main/java/org/apache/tuscany/databinding/sdo/XMLStreamReader2XMLDocument.java
    incubator/tuscany/branches/sca-java-integration/sca/services/databinding/databinding-sdo/src/main/resources/META-INF/sca/databinding.sdo.scdl
    incubator/tuscany/branches/sca-java-integration/sca/services/databinding/databinding-sdo/src/test/java/org/apache/tuscany/databinding/sdo/DataObjectLoaderTestCase.java
    incubator/tuscany/branches/sca-java-integration/sca/services/databinding/databinding-sdo/src/test/java/org/apache/tuscany/databinding/sdo/ImportSDOLoaderTestCase.java
    incubator/tuscany/branches/sca-java-integration/sca/services/databinding/pom.xml
    incubator/tuscany/branches/sca-java-integration/testing/sca/itest/databindings/transformers/src/test/java/org/apache/tuscany/databinding/TransformationTestCase.java

Modified: incubator/tuscany/branches/sca-java-integration/sca/kernel/core/src/main/java/org/apache/tuscany/core/builder/BuilderRegistryImpl.java
URL: http://svn.apache.org/viewvc/incubator/tuscany/branches/sca-java-integration/sca/kernel/core/src/main/java/org/apache/tuscany/core/builder/BuilderRegistryImpl.java?view=diff&rev=516501&r1=516500&r2=516501
==============================================================================
--- incubator/tuscany/branches/sca-java-integration/sca/kernel/core/src/main/java/org/apache/tuscany/core/builder/BuilderRegistryImpl.java (original)
+++ incubator/tuscany/branches/sca-java-integration/sca/kernel/core/src/main/java/org/apache/tuscany/core/builder/BuilderRegistryImpl.java Fri Mar  9 10:38:09 2007
@@ -22,14 +22,16 @@
 import java.util.HashMap;
 import java.util.Map;
 
-import org.osoa.sca.annotations.EagerInit;
-
+import org.apache.tuscany.core.binding.local.LocalBindingDefinition;
+import org.apache.tuscany.core.implementation.composite.ReferenceImpl;
+import org.apache.tuscany.core.implementation.composite.ServiceImpl;
 import org.apache.tuscany.spi.QualifiedName;
 import org.apache.tuscany.spi.annotation.Autowire;
 import org.apache.tuscany.spi.builder.BindingBuilder;
 import org.apache.tuscany.spi.builder.BuilderException;
 import org.apache.tuscany.spi.builder.BuilderRegistry;
 import org.apache.tuscany.spi.builder.ComponentBuilder;
+import org.apache.tuscany.spi.builder.GenericBuilder;
 import org.apache.tuscany.spi.builder.MissingWireTargetException;
 import org.apache.tuscany.spi.builder.ScopeNotFoundException;
 import org.apache.tuscany.spi.component.AtomicComponent;
@@ -37,6 +39,7 @@
 import org.apache.tuscany.spi.component.CompositeComponent;
 import org.apache.tuscany.spi.component.Reference;
 import org.apache.tuscany.spi.component.ReferenceBinding;
+import org.apache.tuscany.spi.component.SCAObject;
 import org.apache.tuscany.spi.component.ScopeContainer;
 import org.apache.tuscany.spi.component.ScopeRegistry;
 import org.apache.tuscany.spi.component.Service;
@@ -47,19 +50,17 @@
 import org.apache.tuscany.spi.model.ComponentType;
 import org.apache.tuscany.spi.model.Implementation;
 import org.apache.tuscany.spi.model.InteractionScope;
+import org.apache.tuscany.spi.model.ModelObject;
 import org.apache.tuscany.spi.model.ReferenceDefinition;
 import org.apache.tuscany.spi.model.Scope;
 import org.apache.tuscany.spi.model.ServiceContract;
 import org.apache.tuscany.spi.model.ServiceDefinition;
 import org.apache.tuscany.spi.wire.WireService;
-
-import org.apache.tuscany.core.binding.local.LocalBindingDefinition;
-import org.apache.tuscany.core.implementation.composite.ReferenceImpl;
-import org.apache.tuscany.core.implementation.composite.ServiceImpl;
+import org.osoa.sca.annotations.EagerInit;
 
 /**
  * The default builder registry in the runtime
- *
+ * 
  * @version $Rev$ $Date$
  */
 @EagerInit
@@ -67,11 +68,12 @@
     protected WireService wireService;
     protected ScopeRegistry scopeRegistry;
 
-    private final Map<Class<? extends Implementation<?>>, ComponentBuilder<? extends Implementation<?>>>
-    componentBuilders =
+    private final Map<Class<? extends Implementation<?>>, ComponentBuilder<? extends Implementation<?>>> componentBuilders =
         new HashMap<Class<? extends Implementation<?>>, ComponentBuilder<? extends Implementation<?>>>();
     private final Map<Class<? extends BindingDefinition>, BindingBuilder<? extends BindingDefinition>> bindingBuilders =
         new HashMap<Class<? extends BindingDefinition>, BindingBuilder<? extends BindingDefinition>>();
+    private final Map<Class<? extends ModelObject>, GenericBuilder<? extends SCAObject, ? extends ModelObject>> genericBuilders =
+        new HashMap<Class<? extends ModelObject>, GenericBuilder<? extends SCAObject, ? extends ModelObject>>();
 
     public BuilderRegistryImpl(@Autowire
     ScopeRegistry scopeRegistry, @Autowire
@@ -84,7 +86,7 @@
         componentBuilders.put(implClass, builder);
     }
 
-    public <I extends Implementation<?>> void unregister(Class<I> implClass) {
+    public <I extends Implementation<?>> void unregisterComponentBuilder(Class<I> implClass) {
         componentBuilders.remove(implClass);
     }
 
@@ -98,7 +100,7 @@
                                                          DeploymentContext context) throws BuilderException {
         Class<?> implClass = componentDefinition.getImplementation().getClass();
         // noinspection SuspiciousMethodCalls
-        ComponentBuilder<I> componentBuilder = (ComponentBuilder<I>) componentBuilders.get(implClass);
+        ComponentBuilder<I> componentBuilder = (ComponentBuilder<I>)componentBuilders.get(implClass);
         try {
             if (componentBuilder == null) {
                 String name = implClass.getName();
@@ -128,14 +130,15 @@
                         if (!hasConversationalContract) {
                             Map<String, ReferenceDefinition> references = componentType.getReferences();
                             for (ReferenceDefinition refDef : references.values()) {
-                                // TODO check for a conversational callback contract
+                                // TODO check for a conversational callback
+                                // contract
                                 // refDef.getServiceContract() ...
                             }
                         }
                         if (!hasConversationalContract) {
                             String name = implClass.getName();
-                            throw new NoConversationalContractException(
-                                "No conversational contract for conversational implementation", name);
+                            throw new NoConversationalContractException("No conversational contract for conversational implementation",
+                                                                        name);
                         }
                     }
                     // Now it's ok to set the scope container
@@ -150,8 +153,12 @@
             assert componentType != null : "Component type must be set";
             // create wires for the component
             if (wireService != null && component instanceof AtomicComponent) {
-                wireService.createWires((AtomicComponent) component, componentDefinition);
+                wireService.createWires((AtomicComponent)component, componentDefinition);
             }
+            // FIXME: Can we merge all the extensions at the component level?
+            buildExtensions(component, componentType, context);
+            buildExtensions(component, componentDefinition.getImplementation(), context);
+            buildExtensions(component, componentDefinition, context);
             return component;
         } catch (BuilderException e) {
             e.addContextName(componentDefinition.getName());
@@ -169,7 +176,8 @@
             // if no bindings are configured, default to the local binding.
             // this should be changed to allow runtime selection
             if (serviceDefinition.getBindings().isEmpty()) {
-                // TODO JFM implement capability for the runtime to choose a binding
+                // TODO JFM implement capability for the runtime to choose a
+                // binding
                 serviceDefinition.addBinding(new LocalBindingDefinition());
             }
         }
@@ -183,8 +191,7 @@
             if (bindingBuilder == null) {
                 throw new NoRegisteredBuilderException("No builder registered for type", bindingClass.getName());
             }
-            ServiceBinding binding =
-                bindingBuilder.build(parent, serviceDefinition, definition, deploymentContext);
+            ServiceBinding binding = bindingBuilder.build(parent, serviceDefinition, definition, deploymentContext);
             if (wireService != null) {
                 URI uri = serviceDefinition.getTarget();
                 if (uri == null) {
@@ -194,22 +201,26 @@
                 ServiceContract<?> contract = serviceDefinition.getServiceContract();
                 wireService.createWires(binding, contract, path);
             }
+            buildExtensions(binding, definition, deploymentContext);
             service.addServiceBinding(binding);
         }
+        buildExtensions(service, serviceDefinition, deploymentContext);
         return service;
     }
 
     @SuppressWarnings("unchecked")
-    public Reference build(CompositeComponent parent,
-                           ReferenceDefinition referenceDefinition,
-                           DeploymentContext context) throws BuilderException {
+    public Reference build(CompositeComponent parent, 
+                           ReferenceDefinition referenceDefinition, 
+                           DeploymentContext context)
+        throws BuilderException {
         String name = referenceDefinition.getName();
         ServiceContract<?> contract = referenceDefinition.getServiceContract();
         if (referenceDefinition.getBindings().isEmpty()) {
             // if no bindings are configured, default to the local binding.
             // this should be changed to allow runtime selection
             if (referenceDefinition.getBindings().isEmpty()) {
-                // TODO JFM implement capability for the runtime to choose a binding
+                // TODO JFM implement capability for the runtime to choose a
+                // binding
                 referenceDefinition.addBinding(new LocalBindingDefinition());
             }
         }
@@ -231,10 +242,50 @@
                 wireService.createWires(binding, contract, targetName);
 
             }
+            buildExtensions(binding, bindingDefinition, context);
             reference.addReferenceBinding(binding);
 
         }
+        buildExtensions(reference, referenceDefinition, context);
         return reference;
+    }
+
+    @SuppressWarnings("unchecked")
+    public SCAObject build(SCAObject parent, ModelObject modelObject, DeploymentContext context)
+        throws BuilderException {
+        if (modelObject != null) {
+            GenericBuilder builder = genericBuilders.get(modelObject.getClass());
+            if (builder != null) {
+                return builder.build(parent, modelObject, context);
+            }
+        }
+        return null;
+    }
+    
+    // We need to include all the extensions from the include
+    private void buildExtensions(SCAObject parent, ModelObject model, DeploymentContext deploymentContext)
+        throws BuilderException {
+        for (Object o : model.getExtensions().values()) {
+            if (o instanceof ModelObject) {
+                SCAObject scaObject = build(parent, (ModelObject)o, deploymentContext);
+                if (scaObject != null) {
+                    parent.getExtensions().put(scaObject.getName(), scaObject);
+                }
+            }
+        }
+    }    
+
+    public <S extends SCAObject, M extends ModelObject> void register(Class<M> modelClass, 
+                                                                      GenericBuilder<S, M> builder) {
+        genericBuilders.put(modelClass, builder);
+    }
+
+    public <B extends BindingDefinition> void unregisterBindingBuilder(Class<B> implClass) {
+        bindingBuilders.remove(implClass);
+    }
+
+    public <M extends ModelObject> void unregisterGenericBuilder(Class<M> modelClass) {
+        genericBuilders.remove(modelClass);
     }
 
 }

Modified: incubator/tuscany/branches/sca-java-integration/sca/kernel/core/src/main/java/org/apache/tuscany/core/implementation/composite/AbstractCompositeBuilder.java
URL: http://svn.apache.org/viewvc/incubator/tuscany/branches/sca-java-integration/sca/kernel/core/src/main/java/org/apache/tuscany/core/implementation/composite/AbstractCompositeBuilder.java?view=diff&rev=516501&r1=516500&r2=516501
==============================================================================
--- incubator/tuscany/branches/sca-java-integration/sca/kernel/core/src/main/java/org/apache/tuscany/core/implementation/composite/AbstractCompositeBuilder.java (original)
+++ incubator/tuscany/branches/sca-java-integration/sca/kernel/core/src/main/java/org/apache/tuscany/core/implementation/composite/AbstractCompositeBuilder.java Fri Mar  9 10:38:09 2007
@@ -6,23 +6,24 @@
 import org.apache.tuscany.spi.component.ComponentRegistrationException;
 import org.apache.tuscany.spi.component.CompositeComponent;
 import org.apache.tuscany.spi.component.Reference;
+import org.apache.tuscany.spi.component.SCAObject;
 import org.apache.tuscany.spi.component.Service;
 import org.apache.tuscany.spi.deployer.DeploymentContext;
 import org.apache.tuscany.spi.extension.ComponentBuilderExtension;
 import org.apache.tuscany.spi.model.ComponentDefinition;
 import org.apache.tuscany.spi.model.CompositeComponentType;
 import org.apache.tuscany.spi.model.Implementation;
-import org.apache.tuscany.spi.model.Include;
+import org.apache.tuscany.spi.model.ModelObject;
 import org.apache.tuscany.spi.model.ReferenceDefinition;
 import org.apache.tuscany.spi.model.ServiceDefinition;
 
 /**
  * Abstract builder for composites
- *
+ * 
  * @version $Rev$ $Date$
  */
-public abstract class AbstractCompositeBuilder<T extends Implementation<CompositeComponentType>>
-    extends ComponentBuilderExtension<T> {
+public abstract class AbstractCompositeBuilder<T extends Implementation<CompositeComponentType>> extends
+    ComponentBuilderExtension<T> {
 
     public CompositeComponent build(CompositeComponent parent,
                                     CompositeComponent component,
@@ -53,16 +54,7 @@
                 throw new BuilderInstantiationException("Error registering reference", e);
             }
         }
-        addExtensions(component, componentType);
         return component;
-    }
-    
-    // We need to include all the extensions from the include
-    private void addExtensions(CompositeComponent component, CompositeComponentType<?, ?, ?> componentType) {
-        component.getExtensions().putAll(componentType.getExtensions());
-        for (Include include : componentType.getIncludes().values()) {
-            addExtensions(component, include.getIncluded());
-        }
     }
 
 }

Modified: incubator/tuscany/branches/sca-java-integration/sca/kernel/core/src/main/java/org/apache/tuscany/core/implementation/composite/CompositeLoader.java
URL: http://svn.apache.org/viewvc/incubator/tuscany/branches/sca-java-integration/sca/kernel/core/src/main/java/org/apache/tuscany/core/implementation/composite/CompositeLoader.java?view=diff&rev=516501&r1=516500&r2=516501
==============================================================================
--- incubator/tuscany/branches/sca-java-integration/sca/kernel/core/src/main/java/org/apache/tuscany/core/implementation/composite/CompositeLoader.java (original)
+++ incubator/tuscany/branches/sca-java-integration/sca/kernel/core/src/main/java/org/apache/tuscany/core/implementation/composite/CompositeLoader.java Fri Mar  9 10:38:09 2007
@@ -121,7 +121,7 @@
                     } else {
                         // add as an unknown model extension
                         if (o != null) {
-                            composite.getExtensions().put(o.getClass(), o);
+                            composite.getDeclaredExtensions().put(o.getClass(), o);
                         }
                     }
                     reader.next();

Modified: incubator/tuscany/branches/sca-java-integration/sca/kernel/spi/src/main/java/org/apache/tuscany/spi/builder/Builder.java
URL: http://svn.apache.org/viewvc/incubator/tuscany/branches/sca-java-integration/sca/kernel/spi/src/main/java/org/apache/tuscany/spi/builder/Builder.java?view=diff&rev=516501&r1=516500&r2=516501
==============================================================================
--- incubator/tuscany/branches/sca-java-integration/sca/kernel/spi/src/main/java/org/apache/tuscany/spi/builder/Builder.java (original)
+++ incubator/tuscany/branches/sca-java-integration/sca/kernel/spi/src/main/java/org/apache/tuscany/spi/builder/Builder.java Fri Mar  9 10:38:09 2007
@@ -21,10 +21,12 @@
 import org.apache.tuscany.spi.component.Component;
 import org.apache.tuscany.spi.component.CompositeComponent;
 import org.apache.tuscany.spi.component.Reference;
+import org.apache.tuscany.spi.component.SCAObject;
 import org.apache.tuscany.spi.component.Service;
 import org.apache.tuscany.spi.deployer.DeploymentContext;
 import org.apache.tuscany.spi.model.ComponentDefinition;
 import org.apache.tuscany.spi.model.Implementation;
+import org.apache.tuscany.spi.model.ModelObject;
 import org.apache.tuscany.spi.model.ReferenceDefinition;
 import org.apache.tuscany.spi.model.ServiceDefinition;
 
@@ -71,4 +73,14 @@
     Reference build(CompositeComponent parent, ReferenceDefinition definition, DeploymentContext context)
         throws BuilderException;
 
+    /**
+     * Builds a <code>SCAObject</code>
+     * @param parent
+     * @param modelObject
+     * @param context
+     * @return
+     * @throws BuilderException
+     */
+    SCAObject build(SCAObject parent, ModelObject modelObject, DeploymentContext context) 
+        throws BuilderException;
 }

Modified: incubator/tuscany/branches/sca-java-integration/sca/kernel/spi/src/main/java/org/apache/tuscany/spi/builder/BuilderRegistry.java
URL: http://svn.apache.org/viewvc/incubator/tuscany/branches/sca-java-integration/sca/kernel/spi/src/main/java/org/apache/tuscany/spi/builder/BuilderRegistry.java?view=diff&rev=516501&r1=516500&r2=516501
==============================================================================
--- incubator/tuscany/branches/sca-java-integration/sca/kernel/spi/src/main/java/org/apache/tuscany/spi/builder/BuilderRegistry.java (original)
+++ incubator/tuscany/branches/sca-java-integration/sca/kernel/spi/src/main/java/org/apache/tuscany/spi/builder/BuilderRegistry.java Fri Mar  9 10:38:09 2007
@@ -18,38 +18,68 @@
  */
 package org.apache.tuscany.spi.builder;
 
+import org.apache.tuscany.spi.component.SCAObject;
 import org.apache.tuscany.spi.model.BindingDefinition;
 import org.apache.tuscany.spi.model.Implementation;
+import org.apache.tuscany.spi.model.ModelObject;
 
 /**
- * Maintains a registry of builders in the runtime, dispatching to the appropriate one as an assembly model is processed
- * into runtime artifacts
- *
+ * Maintains a registry of builders in the runtime, dispatching to the
+ * appropriate one as an assembly model is processed into runtime artifacts
+ * 
  * @version $Rev$ $Date$
  */
 public interface BuilderRegistry extends Builder {
 
     /**
      * Register a builder for an implementation type.
-     *
+     * 
      * @param implClass the type of implementation that this builder can handle
-     * @param builder   the builder to be registered
+     * @param builder the builder to be registered
      */
     <I extends Implementation<?>> void register(Class<I> implClass, ComponentBuilder<I> builder);
 
     /**
      * Unregister a builder for an implementation type.
-     *
+     * 
      * @param implClass the implementation whose builder should be unregistered
      */
-    <I extends Implementation<?>> void unregister(Class<I> implClass);
+    <I extends Implementation<?>> void unregisterComponentBuilder(Class<I> implClass);
+
+    // FIXME: We need to provide unregister() for other builders
 
     /**
      * Register a binding builder for a binding type
-     *
+     * 
      * @param implClass the binding type
-     * @param builder   the buinder to be registered
+     * @param builder the buinder to be registered
      */
     <B extends BindingDefinition> void register(Class<B> implClass, BindingBuilder<B> builder);
+
+    /**
+     * Unregister a binding builder
+     * 
+     * @param <B>
+     * @param implClass the binding type
+     */
+    <B extends BindingDefinition> void unregisterBindingBuilder(Class<B> implClass);
+
+    /**
+     * Register a generic builder for a model type
+     * 
+     * @param <S>
+     * @param <M>
+     * @param modelClass
+     * @param builder
+     */
+    <S extends SCAObject, M extends ModelObject> void register(Class<M> modelClass, GenericBuilder<S, M> builder);
+
+    /**
+     * Unregister a generic builder
+     * 
+     * @param <M>
+     * @param modelClass The model type
+     */
+    <M extends ModelObject> void unregisterGenericBuilder(Class<M> modelClass);
 
 }

Added: incubator/tuscany/branches/sca-java-integration/sca/kernel/spi/src/main/java/org/apache/tuscany/spi/builder/GenericBuilder.java
URL: http://svn.apache.org/viewvc/incubator/tuscany/branches/sca-java-integration/sca/kernel/spi/src/main/java/org/apache/tuscany/spi/builder/GenericBuilder.java?view=auto&rev=516501
==============================================================================
--- incubator/tuscany/branches/sca-java-integration/sca/kernel/spi/src/main/java/org/apache/tuscany/spi/builder/GenericBuilder.java (added)
+++ incubator/tuscany/branches/sca-java-integration/sca/kernel/spi/src/main/java/org/apache/tuscany/spi/builder/GenericBuilder.java Fri Mar  9 10:38:09 2007
@@ -0,0 +1,42 @@
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one
+ * or more contributor license agreements.  See the NOTICE file
+ * distributed with this work for additional information
+ * regarding copyright ownership.  The ASF licenses this file
+ * to you under the Apache License, Version 2.0 (the
+ * "License"); you may not use this file except in compliance
+ * with the License.  You may obtain a copy of the License at
+ * 
+ *   http://www.apache.org/licenses/LICENSE-2.0
+ * 
+ * Unless required by applicable law or agreed to in writing,
+ * software distributed under the License is distributed on an
+ * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+ * KIND, either express or implied.  See the License for the
+ * specific language governing permissions and limitations
+ * under the License.    
+ */
+package org.apache.tuscany.spi.builder;
+
+import org.apache.tuscany.spi.component.SCAObject;
+import org.apache.tuscany.spi.deployer.DeploymentContext;
+import org.apache.tuscany.spi.model.ModelObject;
+
+/**
+ * Responsible for building a {@link SCAObject} from an extensibility element in
+ * the SCDL
+ * 
+ * @version $Rev$ $Date$
+ */
+public interface GenericBuilder<S extends SCAObject, M extends ModelObject> {
+    /**
+     * Build a SCAObject from an extensibility element in the SCDL
+     * 
+     * @param parent The parent SCAObject
+     * @param modelObject The model object
+     * @param deploymentContext The deployment context
+     * @return A SCAObject representing the runtime metdata for the extension
+     * @throws BuilderException
+     */
+    S build(SCAObject parent, M modelObject, DeploymentContext deploymentContext) throws BuilderException;
+}

Propchange: incubator/tuscany/branches/sca-java-integration/sca/kernel/spi/src/main/java/org/apache/tuscany/spi/builder/GenericBuilder.java
------------------------------------------------------------------------------
    svn:eol-style = native

Propchange: incubator/tuscany/branches/sca-java-integration/sca/kernel/spi/src/main/java/org/apache/tuscany/spi/builder/GenericBuilder.java
------------------------------------------------------------------------------
    svn:keywords = Rev Date

Added: incubator/tuscany/branches/sca-java-integration/sca/kernel/spi/src/main/java/org/apache/tuscany/spi/extension/GenericBuilderExtension.java
URL: http://svn.apache.org/viewvc/incubator/tuscany/branches/sca-java-integration/sca/kernel/spi/src/main/java/org/apache/tuscany/spi/extension/GenericBuilderExtension.java?view=auto&rev=516501
==============================================================================
--- incubator/tuscany/branches/sca-java-integration/sca/kernel/spi/src/main/java/org/apache/tuscany/spi/extension/GenericBuilderExtension.java (added)
+++ incubator/tuscany/branches/sca-java-integration/sca/kernel/spi/src/main/java/org/apache/tuscany/spi/extension/GenericBuilderExtension.java Fri Mar  9 10:38:09 2007
@@ -0,0 +1,52 @@
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one
+ * or more contributor license agreements.  See the NOTICE file
+ * distributed with this work for additional information
+ * regarding copyright ownership.  The ASF licenses this file
+ * to you under the Apache License, Version 2.0 (the
+ * "License"); you may not use this file except in compliance
+ * with the License.  You may obtain a copy of the License at
+ * 
+ *   http://www.apache.org/licenses/LICENSE-2.0
+ * 
+ * Unless required by applicable law or agreed to in writing,
+ * software distributed under the License is distributed on an
+ * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+ * KIND, either express or implied.  See the License for the
+ * specific language governing permissions and limitations
+ * under the License.    
+ */
+package org.apache.tuscany.spi.extension;
+
+import org.apache.tuscany.spi.annotation.Autowire;
+import org.apache.tuscany.spi.builder.BuilderRegistry;
+import org.apache.tuscany.spi.builder.GenericBuilder;
+import org.apache.tuscany.spi.component.SCAObject;
+import org.apache.tuscany.spi.model.ModelObject;
+import org.osoa.sca.annotations.EagerInit;
+import org.osoa.sca.annotations.Init;
+
+/**
+ * An extension point for generic builders which can deal with SCDL
+ * extensibility elements
+ * 
+ * @version $$Rev$$ $$Date$$
+ */
+@EagerInit
+public abstract class GenericBuilderExtension<S extends SCAObject, M extends ModelObject> implements
+    GenericBuilder<S, M> {
+
+    protected BuilderRegistry builderRegistry;
+
+    @Autowire
+    public void setBuilderRegistry(BuilderRegistry registry) {
+        this.builderRegistry = registry;
+    }
+
+    @Init
+    public void init() {
+        builderRegistry.register(getModelType(), this);
+    }
+
+    protected abstract Class<M> getModelType();
+}

Propchange: incubator/tuscany/branches/sca-java-integration/sca/kernel/spi/src/main/java/org/apache/tuscany/spi/extension/GenericBuilderExtension.java
------------------------------------------------------------------------------
    svn:eol-style = native

Propchange: incubator/tuscany/branches/sca-java-integration/sca/kernel/spi/src/main/java/org/apache/tuscany/spi/extension/GenericBuilderExtension.java
------------------------------------------------------------------------------
    svn:keywords = Rev Date

Modified: incubator/tuscany/branches/sca-java-integration/sca/kernel/spi/src/main/java/org/apache/tuscany/spi/model/CompositeComponentType.java
URL: http://svn.apache.org/viewvc/incubator/tuscany/branches/sca-java-integration/sca/kernel/spi/src/main/java/org/apache/tuscany/spi/model/CompositeComponentType.java?view=diff&rev=516501&r1=516500&r2=516501
==============================================================================
--- incubator/tuscany/branches/sca-java-integration/sca/kernel/spi/src/main/java/org/apache/tuscany/spi/model/CompositeComponentType.java (original)
+++ incubator/tuscany/branches/sca-java-integration/sca/kernel/spi/src/main/java/org/apache/tuscany/spi/model/CompositeComponentType.java Fri Mar  9 10:38:09 2007
@@ -171,4 +171,18 @@
     public void add(Include include) {
         includes.put(include.getName(), include);
     }
+
+    public Map<Object, Object> getDeclaredExtensions() {
+        return super.getExtensions();
+    }
+    
+    @SuppressWarnings("unchecked")
+    @Override
+    public Map<Object, Object> getExtensions() {
+        Map<Object, Object> view = new HashMap<Object, Object>(super.getExtensions());
+        for (Include i : includes.values()) {
+            view.putAll(i.getIncluded().getExtensions());
+        }
+        return Collections.unmodifiableMap(view);
+    }
 }

Modified: incubator/tuscany/branches/sca-java-integration/sca/services/databinding/databinding-sdo-axiom/src/main/java/org/apache/tuscany/databinding/sdo2om/DataObject2OMElement.java
URL: http://svn.apache.org/viewvc/incubator/tuscany/branches/sca-java-integration/sca/services/databinding/databinding-sdo-axiom/src/main/java/org/apache/tuscany/databinding/sdo2om/DataObject2OMElement.java?view=diff&rev=516501&r1=516500&r2=516501
==============================================================================
--- incubator/tuscany/branches/sca-java-integration/sca/services/databinding/databinding-sdo-axiom/src/main/java/org/apache/tuscany/databinding/sdo2om/DataObject2OMElement.java (original)
+++ incubator/tuscany/branches/sca-java-integration/sca/services/databinding/databinding-sdo-axiom/src/main/java/org/apache/tuscany/databinding/sdo2om/DataObject2OMElement.java Fri Mar  9 10:38:09 2007
@@ -24,7 +24,7 @@
 import org.apache.axiom.om.OMElement;
 import org.apache.axiom.om.OMFactory;
 import org.apache.axiom.om.OMNamespace;
-import org.apache.tuscany.databinding.sdo.SDODataTypeHelper;
+import org.apache.tuscany.databinding.sdo.SDOContextHelper;
 import org.apache.tuscany.spi.databinding.PullTransformer;
 import org.apache.tuscany.spi.databinding.TransformationContext;
 import org.apache.tuscany.spi.databinding.Transformer;
@@ -46,7 +46,7 @@
     PullTransformer<DataObject, OMElement> {
 
     public OMElement transform(DataObject source, TransformationContext context) {
-        HelperContext helperContext = SDODataTypeHelper.getHelperContext(context);
+        HelperContext helperContext = SDOContextHelper.getHelperContext(context);
         SDODataSource dataSource = new SDODataSource(source, helperContext);
         OMFactory factory = OMAbstractFactory.getOMFactory();
 

Modified: incubator/tuscany/branches/sca-java-integration/sca/services/databinding/databinding-sdo-axiom/src/main/java/org/apache/tuscany/databinding/sdo2om/XMLDocument2OMElement.java
URL: http://svn.apache.org/viewvc/incubator/tuscany/branches/sca-java-integration/sca/services/databinding/databinding-sdo-axiom/src/main/java/org/apache/tuscany/databinding/sdo2om/XMLDocument2OMElement.java?view=diff&rev=516501&r1=516500&r2=516501
==============================================================================
--- incubator/tuscany/branches/sca-java-integration/sca/services/databinding/databinding-sdo-axiom/src/main/java/org/apache/tuscany/databinding/sdo2om/XMLDocument2OMElement.java (original)
+++ incubator/tuscany/branches/sca-java-integration/sca/services/databinding/databinding-sdo-axiom/src/main/java/org/apache/tuscany/databinding/sdo2om/XMLDocument2OMElement.java Fri Mar  9 10:38:09 2007
@@ -22,7 +22,7 @@
 import org.apache.axiom.om.OMElement;
 import org.apache.axiom.om.OMFactory;
 import org.apache.axiom.om.OMNamespace;
-import org.apache.tuscany.databinding.sdo.SDODataTypeHelper;
+import org.apache.tuscany.databinding.sdo.SDOContextHelper;
 import org.apache.tuscany.spi.databinding.PullTransformer;
 import org.apache.tuscany.spi.databinding.TransformationContext;
 import org.apache.tuscany.spi.databinding.Transformer;
@@ -41,7 +41,7 @@
     PullTransformer<XMLDocument, OMElement> {
 
     public OMElement transform(XMLDocument source, TransformationContext context) {
-        HelperContext helperContext = SDODataTypeHelper.getHelperContext(context);
+        HelperContext helperContext = SDOContextHelper.getHelperContext(context);
         SDODataSource dataSource = new SDODataSource(source, helperContext);
         OMFactory factory = OMAbstractFactory.getOMFactory();
         OMNamespace namespace = factory.createOMNamespace(source.getRootElementURI(), source.getRootElementName());

Modified: incubator/tuscany/branches/sca-java-integration/sca/services/databinding/databinding-sdo/src/main/java/org/apache/tuscany/databinding/sdo/DataObject2String.java
URL: http://svn.apache.org/viewvc/incubator/tuscany/branches/sca-java-integration/sca/services/databinding/databinding-sdo/src/main/java/org/apache/tuscany/databinding/sdo/DataObject2String.java?view=diff&rev=516501&r1=516500&r2=516501
==============================================================================
--- incubator/tuscany/branches/sca-java-integration/sca/services/databinding/databinding-sdo/src/main/java/org/apache/tuscany/databinding/sdo/DataObject2String.java (original)
+++ incubator/tuscany/branches/sca-java-integration/sca/services/databinding/databinding-sdo/src/main/java/org/apache/tuscany/databinding/sdo/DataObject2String.java Fri Mar  9 10:38:09 2007
@@ -37,9 +37,9 @@
 
     public String transform(DataObject source, TransformationContext context) {
         try {
-            HelperContext helperContext = SDODataTypeHelper.getHelperContext(context);
+            HelperContext helperContext = SDOContextHelper.getHelperContext(context);
             XMLHelper xmlHelper = helperContext.getXMLHelper();
-            QName elementName = SDODataTypeHelper.getElement(context.getSourceDataType());
+            QName elementName = SDOContextHelper.getElement(context.getSourceDataType());
             return xmlHelper.save(source, elementName.getNamespaceURI(), elementName.getLocalPart());
         } catch (Exception e) {
             throw new TransformationException(e);

Modified: incubator/tuscany/branches/sca-java-integration/sca/services/databinding/databinding-sdo/src/main/java/org/apache/tuscany/databinding/sdo/DataObject2XMLStreamReader.java
URL: http://svn.apache.org/viewvc/incubator/tuscany/branches/sca-java-integration/sca/services/databinding/databinding-sdo/src/main/java/org/apache/tuscany/databinding/sdo/DataObject2XMLStreamReader.java?view=diff&rev=516501&r1=516500&r2=516501
==============================================================================
--- incubator/tuscany/branches/sca-java-integration/sca/services/databinding/databinding-sdo/src/main/java/org/apache/tuscany/databinding/sdo/DataObject2XMLStreamReader.java (original)
+++ incubator/tuscany/branches/sca-java-integration/sca/services/databinding/databinding-sdo/src/main/java/org/apache/tuscany/databinding/sdo/DataObject2XMLStreamReader.java Fri Mar  9 10:38:09 2007
@@ -42,9 +42,9 @@
 
     public XMLStreamReader transform(DataObject source, TransformationContext context) {
         try {
-            HelperContext helperContext = SDODataTypeHelper.getHelperContext(context);
+            HelperContext helperContext = SDOContextHelper.getHelperContext(context);
             XMLStreamHelper streamHelper = SDOUtil.createXMLStreamHelper(helperContext.getTypeHelper());
-            QName elementName = SDODataTypeHelper.getElement(context.getSourceDataType());
+            QName elementName = SDOContextHelper.getElement(context.getSourceDataType());
             XMLHelper xmlHelper = helperContext.getXMLHelper();
             XMLDocument document =
                     xmlHelper.createDocument(source, elementName.getNamespaceURI(), elementName.getLocalPart());

Modified: incubator/tuscany/branches/sca-java-integration/sca/services/databinding/databinding-sdo/src/main/java/org/apache/tuscany/databinding/sdo/DataObjectLoader.java
URL: http://svn.apache.org/viewvc/incubator/tuscany/branches/sca-java-integration/sca/services/databinding/databinding-sdo/src/main/java/org/apache/tuscany/databinding/sdo/DataObjectLoader.java?view=diff&rev=516501&r1=516500&r2=516501
==============================================================================
--- incubator/tuscany/branches/sca-java-integration/sca/services/databinding/databinding-sdo/src/main/java/org/apache/tuscany/databinding/sdo/DataObjectLoader.java (original)
+++ incubator/tuscany/branches/sca-java-integration/sca/services/databinding/databinding-sdo/src/main/java/org/apache/tuscany/databinding/sdo/DataObjectLoader.java Fri Mar  9 10:38:09 2007
@@ -24,49 +24,40 @@
 
 import org.apache.tuscany.sdo.helper.XMLStreamHelper;
 import org.apache.tuscany.sdo.util.SDOUtil;
+import org.apache.tuscany.spi.annotation.Autowire;
 import org.apache.tuscany.spi.component.CompositeComponent;
 import org.apache.tuscany.spi.deployer.DeploymentContext;
+import org.apache.tuscany.spi.extension.LoaderExtension;
 import org.apache.tuscany.spi.loader.LoaderException;
 import org.apache.tuscany.spi.loader.LoaderRegistry;
-import org.apache.tuscany.spi.loader.StAXElementLoader;
 import org.apache.tuscany.spi.model.ModelObject;
-import org.apache.tuscany.spi.annotation.Autowire;
 import org.osoa.sca.annotations.EagerInit;
+import org.osoa.sca.annotations.Property;
 
 import commonj.sdo.DataObject;
-import commonj.sdo.Property;
 import commonj.sdo.helper.HelperContext;
 import commonj.sdo.helper.TypeHelper;
-import commonj.sdo.helper.XSDHelper;
-import org.osoa.sca.annotations.Init;
-import org.osoa.sca.annotations.Destroy;
 
 /**
  * A SDO model-based Loader to load DataObject from the XML stream
- *
  */
 @EagerInit
-public class DataObjectLoader implements StAXElementLoader<ModelObject> {
-    protected LoaderRegistry registry;
-    private QName propertyQName;
-
-    public DataObjectLoader(Property property) {
-        super();
-        this.propertyQName = new QName(XSDHelper.INSTANCE.getNamespaceURI(property),
-                                       XSDHelper.INSTANCE.getLocalName(property));
-    }
-
-    public DataObjectLoader(QName propertyQName) {
-        super();
-        this.propertyQName = propertyQName;
-    }
+public class DataObjectLoader extends LoaderExtension<ModelDataObject> {
+    private QName elementName;
 
-    public ModelObject load(CompositeComponent parent,
-                            ModelObject object,
-                            XMLStreamReader reader,
-                            DeploymentContext deploymentContext) throws XMLStreamException, LoaderException {
-        assert propertyQName.equals(reader.getName());
-        HelperContext helperContext = SDODataTypeHelper.getHelperContext(object);
+    public DataObjectLoader(@Autowire LoaderRegistry registry, 
+                            @Property(name = "namespace", required = true) String namespace, 
+                            @Property(name = "name", required = true) String name) {
+        super(registry);
+        this.elementName = new QName(namespace, name);
+    }
+
+    public ModelDataObject load(CompositeComponent parent,
+                                ModelObject object,
+                                XMLStreamReader reader,
+                                DeploymentContext deploymentContext) throws XMLStreamException, LoaderException {
+        assert elementName.equals(reader.getName());
+        HelperContext helperContext = SDOContextHelper.getHelperContext(object);
         TypeHelper typeHelper = helperContext.getTypeHelper();
         XMLStreamHelper streamHelper = SDOUtil.createXMLStreamHelper(typeHelper);
         DataObject dataObject = streamHelper.loadObject(reader);
@@ -74,20 +65,9 @@
         return new ModelDataObject(dataObject);
     }
 
-    @Autowire
-    public void setRegistry(LoaderRegistry registry) {
-        this.registry = registry;
+    @Override
+    public QName getXMLType() {
+        return elementName;
     }
-
-    @Init
-    public void start() {
-        registry.registerLoader(propertyQName, this);
-    }
-
-    @Destroy
-    public void stop() {
-        registry.unregisterLoader(propertyQName, this);
-    }
-
 
 }

Added: incubator/tuscany/branches/sca-java-integration/sca/services/databinding/databinding-sdo/src/main/java/org/apache/tuscany/databinding/sdo/ImportSDO.java
URL: http://svn.apache.org/viewvc/incubator/tuscany/branches/sca-java-integration/sca/services/databinding/databinding-sdo/src/main/java/org/apache/tuscany/databinding/sdo/ImportSDO.java?view=auto&rev=516501
==============================================================================
--- incubator/tuscany/branches/sca-java-integration/sca/services/databinding/databinding-sdo/src/main/java/org/apache/tuscany/databinding/sdo/ImportSDO.java (added)
+++ incubator/tuscany/branches/sca-java-integration/sca/services/databinding/databinding-sdo/src/main/java/org/apache/tuscany/databinding/sdo/ImportSDO.java Fri Mar  9 10:38:09 2007
@@ -0,0 +1,47 @@
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one
+ * or more contributor license agreements.  See the NOTICE file
+ * distributed with this work for additional information
+ * regarding copyright ownership.  The ASF licenses this file
+ * to you under the Apache License, Version 2.0 (the
+ * "License"); you may not use this file except in compliance
+ * with the License.  You may obtain a copy of the License at
+ * 
+ *   http://www.apache.org/licenses/LICENSE-2.0
+ * 
+ * Unless required by applicable law or agreed to in writing,
+ * software distributed under the License is distributed on an
+ * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+ * KIND, either express or implied.  See the License for the
+ * specific language governing permissions and limitations
+ * under the License.    
+ */
+
+package org.apache.tuscany.databinding.sdo;
+
+import javax.xml.namespace.QName;
+
+import org.apache.tuscany.spi.model.ModelObject;
+
+import commonj.sdo.helper.HelperContext;
+
+/**
+ * The model object for import.sdo
+ * 
+ * @version $Rev$ $Date$
+ */
+public class ImportSDO extends ModelObject {
+    public static final QName IMPORT_SDO =
+        new QName("http://tuscany.apache.org/xmlns/sca/databinding/sdo/1.0", "import.sdo");
+
+    private HelperContext helperContext;
+
+    public ImportSDO(HelperContext helperContext) {
+        super();
+        this.helperContext = helperContext;
+    }
+
+    public HelperContext getHelperContext() {
+        return helperContext;
+    }
+}
\ No newline at end of file

Propchange: incubator/tuscany/branches/sca-java-integration/sca/services/databinding/databinding-sdo/src/main/java/org/apache/tuscany/databinding/sdo/ImportSDO.java
------------------------------------------------------------------------------
    svn:eol-style = native

Propchange: incubator/tuscany/branches/sca-java-integration/sca/services/databinding/databinding-sdo/src/main/java/org/apache/tuscany/databinding/sdo/ImportSDO.java
------------------------------------------------------------------------------
    svn:keywords = Rev Date

Added: incubator/tuscany/branches/sca-java-integration/sca/services/databinding/databinding-sdo/src/main/java/org/apache/tuscany/databinding/sdo/ImportSDOBuilder.java
URL: http://svn.apache.org/viewvc/incubator/tuscany/branches/sca-java-integration/sca/services/databinding/databinding-sdo/src/main/java/org/apache/tuscany/databinding/sdo/ImportSDOBuilder.java?view=auto&rev=516501
==============================================================================
--- incubator/tuscany/branches/sca-java-integration/sca/services/databinding/databinding-sdo/src/main/java/org/apache/tuscany/databinding/sdo/ImportSDOBuilder.java (added)
+++ incubator/tuscany/branches/sca-java-integration/sca/services/databinding/databinding-sdo/src/main/java/org/apache/tuscany/databinding/sdo/ImportSDOBuilder.java Fri Mar  9 10:38:09 2007
@@ -0,0 +1,57 @@
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one
+ * or more contributor license agreements.  See the NOTICE file
+ * distributed with this work for additional information
+ * regarding copyright ownership.  The ASF licenses this file
+ * to you under the Apache License, Version 2.0 (the
+ * "License"); you may not use this file except in compliance
+ * with the License.  You may obtain a copy of the License at
+ * 
+ *   http://www.apache.org/licenses/LICENSE-2.0
+ * 
+ * Unless required by applicable law or agreed to in writing,
+ * software distributed under the License is distributed on an
+ * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+ * KIND, either express or implied.  See the License for the
+ * specific language governing permissions and limitations
+ * under the License.    
+ */
+
+package org.apache.tuscany.databinding.sdo;
+
+import org.apache.tuscany.spi.builder.BuilderException;
+import org.apache.tuscany.spi.component.ComponentRegistrationException;
+import org.apache.tuscany.spi.component.CompositeComponent;
+import org.apache.tuscany.spi.component.SCAObject;
+import org.apache.tuscany.spi.deployer.DeploymentContext;
+import org.apache.tuscany.spi.extension.GenericBuilderExtension;
+
+import commonj.sdo.helper.HelperContext;
+
+/**
+ * @version $Rev$ $Date$
+ */
+public class ImportSDOBuilder extends GenericBuilderExtension<SCAObject, ImportSDO> {
+
+    @Override
+    protected Class<ImportSDO> getModelType() {
+        return ImportSDO.class;
+    }
+
+    public SCAObject build(SCAObject parent, ImportSDO modelObject, DeploymentContext deploymentContext)
+        throws BuilderException {
+        if (parent instanceof CompositeComponent) {
+            CompositeComponent component = (CompositeComponent)parent;
+            SDOHelperContext obj = new SDOHelperContext(component, modelObject.getHelperContext());
+            try {
+                component.registerJavaObject(obj.getName(), HelperContext.class, obj.getHelperContext());
+            } catch (ComponentRegistrationException e) {
+                throw new IllegalArgumentException(e);
+            }
+            return obj;
+        } else {
+            return null;
+        }
+    }
+
+}

Propchange: incubator/tuscany/branches/sca-java-integration/sca/services/databinding/databinding-sdo/src/main/java/org/apache/tuscany/databinding/sdo/ImportSDOBuilder.java
------------------------------------------------------------------------------
    svn:eol-style = native

Propchange: incubator/tuscany/branches/sca-java-integration/sca/services/databinding/databinding-sdo/src/main/java/org/apache/tuscany/databinding/sdo/ImportSDOBuilder.java
------------------------------------------------------------------------------
    svn:keywords = Rev Date

Modified: incubator/tuscany/branches/sca-java-integration/sca/services/databinding/databinding-sdo/src/main/java/org/apache/tuscany/databinding/sdo/ImportSDOLoader.java
URL: http://svn.apache.org/viewvc/incubator/tuscany/branches/sca-java-integration/sca/services/databinding/databinding-sdo/src/main/java/org/apache/tuscany/databinding/sdo/ImportSDOLoader.java?view=diff&rev=516501&r1=516500&r2=516501
==============================================================================
--- incubator/tuscany/branches/sca-java-integration/sca/services/databinding/databinding-sdo/src/main/java/org/apache/tuscany/databinding/sdo/ImportSDOLoader.java (original)
+++ incubator/tuscany/branches/sca-java-integration/sca/services/databinding/databinding-sdo/src/main/java/org/apache/tuscany/databinding/sdo/ImportSDOLoader.java Fri Mar  9 10:38:09 2007
@@ -18,6 +18,8 @@
  */
 package org.apache.tuscany.databinding.sdo;
 
+import static org.apache.tuscany.databinding.sdo.ImportSDO.IMPORT_SDO;
+
 import java.io.IOException;
 import java.io.InputStream;
 import java.lang.reflect.Field;
@@ -49,8 +51,6 @@
  * @version $Rev$ $Date$
  */
 public class ImportSDOLoader extends LoaderExtension {
-    public static final QName IMPORT_SDO =
-        new QName("http://tuscany.apache.org/xmlns/sca/databinding/sdo/1.0", "import.sdo");
 
     @Constructor({"registry"})
     public ImportSDOLoader(@Autowire LoaderRegistry registry) {
@@ -69,12 +69,12 @@
 
         // FIXME: [rfeng] How to associate the TypeHelper with deployment
         // context?
-        HelperContext helperContext = SDODataTypeHelper.getHelperContext(object);
+        HelperContext helperContext = SDOContextHelper.getHelperContext(object);
 
         importFactory(reader, deploymentContext, helperContext);
         importWSDL(reader, deploymentContext, helperContext);
         LoaderUtil.skipToEndElement(reader);
-        return new SDOType(helperContext);
+        return new ImportSDO(helperContext);
     }
 
     private void importFactory(XMLStreamReader reader, DeploymentContext deploymentContext, HelperContext helperContext)
@@ -100,7 +100,6 @@
         Field field = factoryClass.getField("INSTANCE");
         Object factory = field.get(null);
         Method method = factory.getClass().getMethod("register", new Class[] {HelperContext.class});
-
         method.invoke(factory, new Object[] {helperContext});
 
         // FIXME: How do we associate the application HelperContext with the one
@@ -140,19 +139,6 @@
                 sfe.setResourceURI(location);
                 throw sfe;
             }
-        }
-    }
-
-    public static class SDOType extends ModelObject {
-        private HelperContext helperContext;
-
-        public SDOType(HelperContext helperContext) {
-            super();
-            this.helperContext = helperContext;
-        }
-
-        public HelperContext getHelperContext() {
-            return helperContext;
         }
     }
 }

Modified: incubator/tuscany/branches/sca-java-integration/sca/services/databinding/databinding-sdo/src/main/java/org/apache/tuscany/databinding/sdo/ModelDataObject.java
URL: http://svn.apache.org/viewvc/incubator/tuscany/branches/sca-java-integration/sca/services/databinding/databinding-sdo/src/main/java/org/apache/tuscany/databinding/sdo/ModelDataObject.java?view=diff&rev=516501&r1=516500&r2=516501
==============================================================================
--- incubator/tuscany/branches/sca-java-integration/sca/services/databinding/databinding-sdo/src/main/java/org/apache/tuscany/databinding/sdo/ModelDataObject.java (original)
+++ incubator/tuscany/branches/sca-java-integration/sca/services/databinding/databinding-sdo/src/main/java/org/apache/tuscany/databinding/sdo/ModelDataObject.java Fri Mar  9 10:38:09 2007
@@ -22,6 +22,11 @@
 
 import commonj.sdo.DataObject;
 
+/**
+ * Wrapper of DataObject as a ModelObject
+ * 
+ * @version $Rev$ $Date$
+ */
 public class ModelDataObject extends ModelObject {
     private DataObject dataObject;
 

Copied: incubator/tuscany/branches/sca-java-integration/sca/services/databinding/databinding-sdo/src/main/java/org/apache/tuscany/databinding/sdo/SDOContextHelper.java (from r515726, incubator/tuscany/branches/sca-java-integration/sca/services/databinding/databinding-sdo/src/main/java/org/apache/tuscany/databinding/sdo/SDODataTypeHelper.java)
URL: http://svn.apache.org/viewvc/incubator/tuscany/branches/sca-java-integration/sca/services/databinding/databinding-sdo/src/main/java/org/apache/tuscany/databinding/sdo/SDOContextHelper.java?view=diff&rev=516501&p1=incubator/tuscany/branches/sca-java-integration/sca/services/databinding/databinding-sdo/src/main/java/org/apache/tuscany/databinding/sdo/SDODataTypeHelper.java&r1=515726&p2=incubator/tuscany/branches/sca-java-integration/sca/services/databinding/databinding-sdo/src/main/java/org/apache/tuscany/databinding/sdo/SDOContextHelper.java&r2=516501
==============================================================================
--- incubator/tuscany/branches/sca-java-integration/sca/services/databinding/databinding-sdo/src/main/java/org/apache/tuscany/databinding/sdo/SDODataTypeHelper.java (original)
+++ incubator/tuscany/branches/sca-java-integration/sca/services/databinding/databinding-sdo/src/main/java/org/apache/tuscany/databinding/sdo/SDOContextHelper.java Fri Mar  9 10:38:09 2007
@@ -21,11 +21,13 @@
 
 import javax.xml.namespace.QName;
 
-import org.apache.tuscany.databinding.sdo.ImportSDOLoader.SDOType;
 import org.apache.tuscany.sdo.util.SDOUtil;
+import org.apache.tuscany.spi.component.AtomicComponent;
 import org.apache.tuscany.spi.component.CompositeComponent;
+import org.apache.tuscany.spi.component.TargetResolutionException;
 import org.apache.tuscany.spi.databinding.TransformationContext;
 import org.apache.tuscany.spi.idl.XMLType;
+import org.apache.tuscany.spi.model.CompositeComponentType;
 import org.apache.tuscany.spi.model.DataType;
 import org.apache.tuscany.spi.model.ModelObject;
 
@@ -35,8 +37,8 @@
 /**
  * Helper class to get TypeHelper from the context
  */
-public final class SDODataTypeHelper {
-    private SDODataTypeHelper() {
+public final class SDOContextHelper {
+    private SDOContextHelper() {
     }
 
     public static HelperContext getHelperContext(TransformationContext context) {
@@ -46,9 +48,16 @@
         HelperContext helperContext = null;
         CompositeComponent composite = (CompositeComponent)context.getMetadata().get(CompositeComponent.class);
         if (composite != null) {
-            SDOType sdoType = (SDOType)composite.getExtensions().get(SDOType.class);
-            if (sdoType != null) {
-                helperContext = sdoType.getHelperContext();
+            SDOHelperContext sdoContext =
+                (SDOHelperContext)composite.getExtensions().get(HelperContext.class.getName());
+            if (sdoContext != null) {
+                helperContext = sdoContext.getHelperContext();
+            }
+            AtomicComponent child = (AtomicComponent)composite.getSystemChild(HelperContext.class.getName());
+            try {
+                helperContext = (HelperContext)child.getTargetInstance();
+            } catch (TargetResolutionException e) {
+                throw new IllegalArgumentException(e);
             }
         }
         if (helperContext == null) {
@@ -58,15 +67,17 @@
         }
     }
 
-    public static HelperContext getHelperContext(ModelObject composite) {
+    public static HelperContext getHelperContext(ModelObject model) {
         HelperContext helperContext = null;
-        if (composite != null) {
-            // HACK: Retrieve the SDO HelperContext from the CompositeComponent
+        if (model instanceof CompositeComponentType) {
+            // HACK: Retrieve the SDO HelperContext from the
+            // CompositeComponentType
             // extensions
-            helperContext = (HelperContext)composite.getExtensions().get(HelperContext.class.getName());
+            helperContext = (HelperContext)model.getExtensions().get(ImportSDO.IMPORT_SDO);
             if (helperContext == null) {
                 helperContext = SDOUtil.createHelperContext();
-                composite.getExtensions().put(HelperContext.class.getName(), helperContext);
+                ((CompositeComponentType<?, ?, ?>)model).getDeclaredExtensions().put(HelperContext.class.getName(),
+                                                                                     helperContext);
             }
         }
 

Added: incubator/tuscany/branches/sca-java-integration/sca/services/databinding/databinding-sdo/src/main/java/org/apache/tuscany/databinding/sdo/SDOHelperContext.java
URL: http://svn.apache.org/viewvc/incubator/tuscany/branches/sca-java-integration/sca/services/databinding/databinding-sdo/src/main/java/org/apache/tuscany/databinding/sdo/SDOHelperContext.java?view=auto&rev=516501
==============================================================================
--- incubator/tuscany/branches/sca-java-integration/sca/services/databinding/databinding-sdo/src/main/java/org/apache/tuscany/databinding/sdo/SDOHelperContext.java (added)
+++ incubator/tuscany/branches/sca-java-integration/sca/services/databinding/databinding-sdo/src/main/java/org/apache/tuscany/databinding/sdo/SDOHelperContext.java Fri Mar  9 10:38:09 2007
@@ -0,0 +1,48 @@
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one
+ * or more contributor license agreements.  See the NOTICE file
+ * distributed with this work for additional information
+ * regarding copyright ownership.  The ASF licenses this file
+ * to you under the Apache License, Version 2.0 (the
+ * "License"); you may not use this file except in compliance
+ * with the License.  You may obtain a copy of the License at
+ * 
+ *   http://www.apache.org/licenses/LICENSE-2.0
+ * 
+ * Unless required by applicable law or agreed to in writing,
+ * software distributed under the License is distributed on an
+ * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+ * KIND, either express or implied.  See the License for the
+ * specific language governing permissions and limitations
+ * under the License.    
+ */
+
+package org.apache.tuscany.databinding.sdo;
+
+import org.apache.tuscany.spi.component.AbstractSCAObject;
+import org.apache.tuscany.spi.component.CompositeComponent;
+import org.apache.tuscany.spi.model.Scope;
+
+import commonj.sdo.helper.HelperContext;
+
+public class SDOHelperContext extends AbstractSCAObject {
+    private HelperContext helperContext;
+
+    /**
+     * @param name
+     * @param parent
+     */
+    public SDOHelperContext(CompositeComponent parent, HelperContext helperContext) {
+        super(HelperContext.class.getName(), parent);
+        this.helperContext = helperContext;
+    }
+
+    public Scope getScope() {
+        return Scope.COMPOSITE;
+    }
+
+    public HelperContext getHelperContext() {
+        return helperContext;
+    }
+
+}
\ No newline at end of file

Propchange: incubator/tuscany/branches/sca-java-integration/sca/services/databinding/databinding-sdo/src/main/java/org/apache/tuscany/databinding/sdo/SDOHelperContext.java
------------------------------------------------------------------------------
    svn:eol-style = native

Propchange: incubator/tuscany/branches/sca-java-integration/sca/services/databinding/databinding-sdo/src/main/java/org/apache/tuscany/databinding/sdo/SDOHelperContext.java
------------------------------------------------------------------------------
    svn:keywords = Rev Date

Modified: incubator/tuscany/branches/sca-java-integration/sca/services/databinding/databinding-sdo/src/main/java/org/apache/tuscany/databinding/sdo/SDOSimpleTypeMapper.java
URL: http://svn.apache.org/viewvc/incubator/tuscany/branches/sca-java-integration/sca/services/databinding/databinding-sdo/src/main/java/org/apache/tuscany/databinding/sdo/SDOSimpleTypeMapper.java?view=diff&rev=516501&r1=516500&r2=516501
==============================================================================
--- incubator/tuscany/branches/sca-java-integration/sca/services/databinding/databinding-sdo/src/main/java/org/apache/tuscany/databinding/sdo/SDOSimpleTypeMapper.java (original)
+++ incubator/tuscany/branches/sca-java-integration/sca/services/databinding/databinding-sdo/src/main/java/org/apache/tuscany/databinding/sdo/SDOSimpleTypeMapper.java Fri Mar  9 10:38:09 2007
@@ -24,7 +24,6 @@
 import org.apache.tuscany.sdo.util.SDOUtil;
 import org.apache.tuscany.spi.databinding.SimpleTypeMapper;
 import org.apache.tuscany.spi.databinding.TransformationContext;
-import org.apache.tuscany.spi.idl.TypeInfo;
 
 import commonj.sdo.Type;
 import commonj.sdo.helper.HelperContext;
@@ -45,7 +44,7 @@
         if (URI_2001_SCHEMA_XSD.equals(typeName.getNamespaceURI())) {
             type = SDOUtil.getXSDSDOType(typeName.getLocalPart());
         } else {
-            HelperContext helperContext = SDODataTypeHelper.getHelperContext(context);
+            HelperContext helperContext = SDOContextHelper.getHelperContext(context);
             TypeHelper typeHelper = helperContext.getTypeHelper();
             type = typeHelper.getType(typeName.getNamespaceURI(), typeName.getLocalPart());
         }
@@ -57,7 +56,7 @@
         if (URI_2001_SCHEMA_XSD.equals(typeName.getNamespaceURI())) {
             type = SDOUtil.getXSDSDOType(typeName.getLocalPart());
         } else {
-            HelperContext helperContext = SDODataTypeHelper.getHelperContext(context);
+            HelperContext helperContext = SDOContextHelper.getHelperContext(context);
             TypeHelper typeHelper = helperContext.getTypeHelper();
             type = typeHelper.getType(typeName.getNamespaceURI(), typeName.getLocalPart());
         }

Modified: incubator/tuscany/branches/sca-java-integration/sca/services/databinding/databinding-sdo/src/main/java/org/apache/tuscany/databinding/sdo/SDOWrapperHandler.java
URL: http://svn.apache.org/viewvc/incubator/tuscany/branches/sca-java-integration/sca/services/databinding/databinding-sdo/src/main/java/org/apache/tuscany/databinding/sdo/SDOWrapperHandler.java?view=diff&rev=516501&r1=516500&r2=516501
==============================================================================
--- incubator/tuscany/branches/sca-java-integration/sca/services/databinding/databinding-sdo/src/main/java/org/apache/tuscany/databinding/sdo/SDOWrapperHandler.java (original)
+++ incubator/tuscany/branches/sca-java-integration/sca/services/databinding/databinding-sdo/src/main/java/org/apache/tuscany/databinding/sdo/SDOWrapperHandler.java Fri Mar  9 10:38:09 2007
@@ -44,7 +44,7 @@
      *      TransformationContext)
      */
     public Object create(ElementInfo element, TransformationContext context) {
-        HelperContext helperContext = SDODataTypeHelper.getHelperContext(context);
+        HelperContext helperContext = SDOContextHelper.getHelperContext(context);
         QName typeName = element.getType().getQName();
         DataFactory dataFactory = helperContext.getDataFactory();
         DataObject root = dataFactory.create(typeName.getNamespaceURI(), typeName.getLocalPart());

Modified: incubator/tuscany/branches/sca-java-integration/sca/services/databinding/databinding-sdo/src/main/java/org/apache/tuscany/databinding/sdo/String2DataObject.java
URL: http://svn.apache.org/viewvc/incubator/tuscany/branches/sca-java-integration/sca/services/databinding/databinding-sdo/src/main/java/org/apache/tuscany/databinding/sdo/String2DataObject.java?view=diff&rev=516501&r1=516500&r2=516501
==============================================================================
--- incubator/tuscany/branches/sca-java-integration/sca/services/databinding/databinding-sdo/src/main/java/org/apache/tuscany/databinding/sdo/String2DataObject.java (original)
+++ incubator/tuscany/branches/sca-java-integration/sca/services/databinding/databinding-sdo/src/main/java/org/apache/tuscany/databinding/sdo/String2DataObject.java Fri Mar  9 10:38:09 2007
@@ -35,7 +35,7 @@
 
     public DataObject transform(String source, TransformationContext context) {
         try {
-            HelperContext helperContext = SDODataTypeHelper.getHelperContext(context);
+            HelperContext helperContext = SDOContextHelper.getHelperContext(context);
             XMLHelper xmlHelper = helperContext.getXMLHelper();
             return xmlHelper.load(source).getRootObject();
         } catch (Exception e) {

Modified: incubator/tuscany/branches/sca-java-integration/sca/services/databinding/databinding-sdo/src/main/java/org/apache/tuscany/databinding/sdo/XMLDocument2String.java
URL: http://svn.apache.org/viewvc/incubator/tuscany/branches/sca-java-integration/sca/services/databinding/databinding-sdo/src/main/java/org/apache/tuscany/databinding/sdo/XMLDocument2String.java?view=diff&rev=516501&r1=516500&r2=516501
==============================================================================
--- incubator/tuscany/branches/sca-java-integration/sca/services/databinding/databinding-sdo/src/main/java/org/apache/tuscany/databinding/sdo/XMLDocument2String.java (original)
+++ incubator/tuscany/branches/sca-java-integration/sca/services/databinding/databinding-sdo/src/main/java/org/apache/tuscany/databinding/sdo/XMLDocument2String.java Fri Mar  9 10:38:09 2007
@@ -37,7 +37,7 @@
 
     public String transform(XMLDocument source, TransformationContext context) {
         try {
-            HelperContext helperContext = SDODataTypeHelper.getHelperContext(context);
+            HelperContext helperContext = SDOContextHelper.getHelperContext(context);
             XMLHelper xmlHelper = helperContext.getXMLHelper();
             StringWriter writer = new StringWriter();
             xmlHelper.save(source, writer, null);

Modified: incubator/tuscany/branches/sca-java-integration/sca/services/databinding/databinding-sdo/src/main/java/org/apache/tuscany/databinding/sdo/XMLDocument2XMLStreamReader.java
URL: http://svn.apache.org/viewvc/incubator/tuscany/branches/sca-java-integration/sca/services/databinding/databinding-sdo/src/main/java/org/apache/tuscany/databinding/sdo/XMLDocument2XMLStreamReader.java?view=diff&rev=516501&r1=516500&r2=516501
==============================================================================
--- incubator/tuscany/branches/sca-java-integration/sca/services/databinding/databinding-sdo/src/main/java/org/apache/tuscany/databinding/sdo/XMLDocument2XMLStreamReader.java (original)
+++ incubator/tuscany/branches/sca-java-integration/sca/services/databinding/databinding-sdo/src/main/java/org/apache/tuscany/databinding/sdo/XMLDocument2XMLStreamReader.java Fri Mar  9 10:38:09 2007
@@ -43,7 +43,7 @@
      */
     public XMLStreamReader transform(XMLDocument source, TransformationContext context) {
         try {
-            HelperContext helperContext = SDODataTypeHelper.getHelperContext(context);
+            HelperContext helperContext = SDOContextHelper.getHelperContext(context);
             XMLStreamHelper streamHelper = SDOUtil.createXMLStreamHelper(helperContext.getTypeHelper());
             return streamHelper.createXMLStreamReader(source);
         } catch (XMLStreamException e) {

Modified: incubator/tuscany/branches/sca-java-integration/sca/services/databinding/databinding-sdo/src/main/java/org/apache/tuscany/databinding/sdo/XMLStreamReader2DataObject.java
URL: http://svn.apache.org/viewvc/incubator/tuscany/branches/sca-java-integration/sca/services/databinding/databinding-sdo/src/main/java/org/apache/tuscany/databinding/sdo/XMLStreamReader2DataObject.java?view=diff&rev=516501&r1=516500&r2=516501
==============================================================================
--- incubator/tuscany/branches/sca-java-integration/sca/services/databinding/databinding-sdo/src/main/java/org/apache/tuscany/databinding/sdo/XMLStreamReader2DataObject.java (original)
+++ incubator/tuscany/branches/sca-java-integration/sca/services/databinding/databinding-sdo/src/main/java/org/apache/tuscany/databinding/sdo/XMLStreamReader2DataObject.java Fri Mar  9 10:38:09 2007
@@ -39,7 +39,7 @@
 
     public DataObject transform(XMLStreamReader source, TransformationContext context) {
         try {
-            HelperContext helperContext = SDODataTypeHelper.getHelperContext(context);
+            HelperContext helperContext = SDOContextHelper.getHelperContext(context);
             XMLStreamHelper streamHelper = SDOUtil.createXMLStreamHelper(helperContext.getTypeHelper());
             // The XMLStreamHelper requires that the reader is posistioned at
             // START_ELEMENT

Modified: incubator/tuscany/branches/sca-java-integration/sca/services/databinding/databinding-sdo/src/main/java/org/apache/tuscany/databinding/sdo/XMLStreamReader2XMLDocument.java
URL: http://svn.apache.org/viewvc/incubator/tuscany/branches/sca-java-integration/sca/services/databinding/databinding-sdo/src/main/java/org/apache/tuscany/databinding/sdo/XMLStreamReader2XMLDocument.java?view=diff&rev=516501&r1=516500&r2=516501
==============================================================================
--- incubator/tuscany/branches/sca-java-integration/sca/services/databinding/databinding-sdo/src/main/java/org/apache/tuscany/databinding/sdo/XMLStreamReader2XMLDocument.java (original)
+++ incubator/tuscany/branches/sca-java-integration/sca/services/databinding/databinding-sdo/src/main/java/org/apache/tuscany/databinding/sdo/XMLStreamReader2XMLDocument.java Fri Mar  9 10:38:09 2007
@@ -38,7 +38,7 @@
 
     public XMLDocument transform(XMLStreamReader source, TransformationContext context) {
         try {
-            HelperContext helperContext = SDODataTypeHelper.getHelperContext(context);
+            HelperContext helperContext = SDOContextHelper.getHelperContext(context);
             XMLStreamHelper streamHelper = SDOUtil.createXMLStreamHelper(helperContext.getTypeHelper());
             return streamHelper.load(source);
         } catch (Exception e) {

Modified: incubator/tuscany/branches/sca-java-integration/sca/services/databinding/databinding-sdo/src/main/resources/META-INF/sca/databinding.sdo.scdl
URL: http://svn.apache.org/viewvc/incubator/tuscany/branches/sca-java-integration/sca/services/databinding/databinding-sdo/src/main/resources/META-INF/sca/databinding.sdo.scdl?view=diff&rev=516501&r1=516500&r2=516501
==============================================================================
--- incubator/tuscany/branches/sca-java-integration/sca/services/databinding/databinding-sdo/src/main/resources/META-INF/sca/databinding.sdo.scdl (original)
+++ incubator/tuscany/branches/sca-java-integration/sca/services/databinding/databinding-sdo/src/main/resources/META-INF/sca/databinding.sdo.scdl Fri Mar  9 10:38:09 2007
@@ -38,7 +38,7 @@
     <component name="elementLoader.import.sdo">
         <system:implementation.system class="org.apache.tuscany.databinding.sdo.ImportSDOLoader"/>
     </component>
-    
+
     <component name="databinding.sdo">
         <system:implementation.system class="org.apache.tuscany.databinding.sdo.SDODataBinding" />
     </component>    
@@ -63,6 +63,10 @@
     </component>
     <component name="transformer.XMLStreamReader2XMLDocument">
         <system:implementation.system class="org.apache.tuscany.databinding.sdo.XMLStreamReader2XMLDocument"/>
+    </component>
+
+    <component name="sdotype.builder">
+        <system:implementation.system class="org.apache.tuscany.databinding.sdo.ImportSDOBuilder"/>
     </component>
     
 </composite>

Modified: incubator/tuscany/branches/sca-java-integration/sca/services/databinding/databinding-sdo/src/test/java/org/apache/tuscany/databinding/sdo/DataObjectLoaderTestCase.java
URL: http://svn.apache.org/viewvc/incubator/tuscany/branches/sca-java-integration/sca/services/databinding/databinding-sdo/src/test/java/org/apache/tuscany/databinding/sdo/DataObjectLoaderTestCase.java?view=diff&rev=516501&r1=516500&r2=516501
==============================================================================
--- incubator/tuscany/branches/sca-java-integration/sca/services/databinding/databinding-sdo/src/test/java/org/apache/tuscany/databinding/sdo/DataObjectLoaderTestCase.java (original)
+++ incubator/tuscany/branches/sca-java-integration/sca/services/databinding/databinding-sdo/src/test/java/org/apache/tuscany/databinding/sdo/DataObjectLoaderTestCase.java Fri Mar  9 10:38:09 2007
@@ -42,8 +42,7 @@
     private QName name = new QName("http://www.osoa.org/xmlns/mock/0.9", "implementation.mock");
 
     private String xml =
-        "<module name=\"m\" xmlns=\"http://www.osoa.org/xmlns/sca/0.9\" " 
-            + "xmlns:mock=\"http://www.osoa.org/xmlns/mock/0.9\" "
+        "<module name=\"m\" xmlns=\"http://www.osoa.org/xmlns/sca/0.9\" " + "xmlns:mock=\"http://www.osoa.org/xmlns/mock/0.9\" "
             + "xmlns:xsi=\"http://www.w3.org/2001/XMLSchema-instance\"  "
             + "xsi:schemaLocation=\"http://www.osoa.org/xmlns/mock/0.9 "
             + "sca-implementation-mock.xsd http://www.osoa.org/xmlns/sca/0.9 sca-core.xsd \">"
@@ -66,7 +65,7 @@
         while (!(event == XMLStreamConstants.START_ELEMENT && reader.getName().equals(name)) && reader.hasNext()) {
             event = reader.nextTag();
         }
-        DataObjectLoader loader = new DataObjectLoader(name);
+        DataObjectLoader loader = new DataObjectLoader(null, name.getNamespaceURI(), name.getLocalPart());
         DeploymentContext context =
             new RootDeploymentContext(getClass().getClassLoader(), inputFactory, new CompositeScopeContainer(null),
                                       null);

Modified: incubator/tuscany/branches/sca-java-integration/sca/services/databinding/databinding-sdo/src/test/java/org/apache/tuscany/databinding/sdo/ImportSDOLoaderTestCase.java
URL: http://svn.apache.org/viewvc/incubator/tuscany/branches/sca-java-integration/sca/services/databinding/databinding-sdo/src/test/java/org/apache/tuscany/databinding/sdo/ImportSDOLoaderTestCase.java?view=diff&rev=516501&r1=516500&r2=516501
==============================================================================
--- incubator/tuscany/branches/sca-java-integration/sca/services/databinding/databinding-sdo/src/test/java/org/apache/tuscany/databinding/sdo/ImportSDOLoaderTestCase.java (original)
+++ incubator/tuscany/branches/sca-java-integration/sca/services/databinding/databinding-sdo/src/test/java/org/apache/tuscany/databinding/sdo/ImportSDOLoaderTestCase.java Fri Mar  9 10:38:09 2007
@@ -27,7 +27,6 @@
 import junit.framework.TestCase;
 
 import org.apache.tuscany.core.deployer.RootDeploymentContext;
-import org.apache.tuscany.databinding.sdo.ImportSDOLoader.SDOType;
 import org.apache.tuscany.spi.deployer.DeploymentContext;
 import org.apache.tuscany.spi.loader.LoaderException;
 
@@ -46,13 +45,13 @@
     public void testMinimal() throws XMLStreamException, LoaderException {
         String xml = "<import.sdo xmlns='http://tuscany.apache.org/xmlns/sca/databinding/sdo/1.0'/>";
         XMLStreamReader reader = getReader(xml);
-        assertTrue(loader.load(null, null, reader, deploymentContext) instanceof SDOType);
+        assertTrue(loader.load(null, null, reader, deploymentContext) instanceof ImportSDO);
     }
 
     public void testLocation() throws XMLStreamException, LoaderException {
         String xml = "<import.sdo xmlns='http://tuscany.apache.org/xmlns/sca/databinding/sdo/1.0' location='ipo.xsd'/>";
         XMLStreamReader reader = getReader(xml);
-        assertTrue(loader.load(null, null, reader, deploymentContext) instanceof SDOType);
+        assertTrue(loader.load(null, null, reader, deploymentContext) instanceof ImportSDO);
     }
     
     public void testFactory() throws XMLStreamException, LoaderException {
@@ -60,7 +59,7 @@
                 + "factory='org.apache.tuscany.databinding.sdo.ImportSDOLoaderTestCase$MockFactory'/>";
         XMLStreamReader reader = getReader(xml);
         assertFalse(inited);
-        assertTrue(loader.load(null, null, reader, deploymentContext) instanceof SDOType);
+        assertTrue(loader.load(null, null, reader, deploymentContext) instanceof ImportSDO);
         assertTrue(inited);
     }
 

Modified: incubator/tuscany/branches/sca-java-integration/sca/services/databinding/pom.xml
URL: http://svn.apache.org/viewvc/incubator/tuscany/branches/sca-java-integration/sca/services/databinding/pom.xml?view=diff&rev=516501&r1=516500&r2=516501
==============================================================================
--- incubator/tuscany/branches/sca-java-integration/sca/services/databinding/pom.xml (original)
+++ incubator/tuscany/branches/sca-java-integration/sca/services/databinding/pom.xml Fri Mar  9 10:38:09 2007
@@ -40,6 +40,7 @@
             <modules>
                 <module>databinding-jaxb</module>
                 <module>databinding-sdo</module>
+                <module>databinding-sdo-axiom</module>
             </modules>
         </profile>
 
@@ -49,6 +50,7 @@
                 <module>databinding-jaxb</module>
                 <module>databinding-sdo</module>
                 <module>databinding-xmlbeans</module>
+                <module>databinding-sdo-axiom</module>
             </modules>
         </profile>
 
@@ -58,6 +60,7 @@
                 <module>databinding-jaxb</module>
                 <module>databinding-sdo</module>
                 <module>databinding-xmlbeans</module>
+                <module>databinding-sdo-axiom</module>
             </modules>
         </profile>
 

Modified: incubator/tuscany/branches/sca-java-integration/testing/sca/itest/databindings/transformers/src/test/java/org/apache/tuscany/databinding/TransformationTestCase.java
URL: http://svn.apache.org/viewvc/incubator/tuscany/branches/sca-java-integration/testing/sca/itest/databindings/transformers/src/test/java/org/apache/tuscany/databinding/TransformationTestCase.java?view=diff&rev=516501&r1=516500&r2=516501
==============================================================================
--- incubator/tuscany/branches/sca-java-integration/testing/sca/itest/databindings/transformers/src/test/java/org/apache/tuscany/databinding/TransformationTestCase.java (original)
+++ incubator/tuscany/branches/sca-java-integration/testing/sca/itest/databindings/transformers/src/test/java/org/apache/tuscany/databinding/TransformationTestCase.java Fri Mar  9 10:38:09 2007
@@ -51,7 +51,6 @@
 import org.apache.tuscany.databinding.sdo.XMLDocument2XMLStreamReader;
 import org.apache.tuscany.databinding.sdo.XMLStreamReader2DataObject;
 import org.apache.tuscany.databinding.sdo.XMLStreamReader2XMLDocument;
-import org.apache.tuscany.databinding.sdo.ImportSDOLoader.SDOType;
 import org.apache.tuscany.databinding.xmlbeans.Node2XmlObject;
 import org.apache.tuscany.databinding.xmlbeans.XMLStreamReader2XmlObject;
 import org.apache.tuscany.databinding.xmlbeans.XmlObject2Node;
@@ -167,7 +166,7 @@
         System.out.println("Path: " + path);
 
         TransformationContext tContext = createTransformationContext();
-        tContext.getMetadata().put(SDOType.class, new SDOType(helperContext));
+        // tContext.getMetadata().put(ImportSDO.class, new ImportSDO(helperContext));
 
         Object result = object;
         for (Transformer transformer : path) {



---------------------------------------------------------------------
To unsubscribe, e-mail: tuscany-commits-unsubscribe@ws.apache.org
For additional commands, e-mail: tuscany-commits-help@ws.apache.org