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

svn commit: r519710 - in /incubator/tuscany/java/sca/kernel: core/src/main/java/org/apache/tuscany/core/generator/ core/src/main/java/org/apache/tuscany/core/implementation/java/ core/src/main/java/org/apache/tuscany/core/model/ core/src/main/java/org/...

Author: jmarino
Date: Sun Mar 18 15:19:16 2007
New Revision: 519710

URL: http://svn.apache.org/viewvc?view=rev&rev=519710
Log:
refactor InterceptorGenerator signature and dispatch; add non-blocking intent data for interceptor generation; start to hack together the AssemblyService

Added:
    incubator/tuscany/java/sca/kernel/core/src/main/java/org/apache/tuscany/core/model/NonBlockingIntentDefinition.java   (with props)
    incubator/tuscany/java/sca/kernel/core/src/main/java/org/apache/tuscany/core/services/deployment/DocumentParseException.java   (with props)
    incubator/tuscany/java/sca/kernel/core/src/main/java/org/apache/tuscany/core/wire/NonBlockingInterceptorGenerator.java   (with props)
    incubator/tuscany/java/sca/kernel/spi/src/main/java/org/apache/tuscany/spi/model/IntentDefinition.java   (with props)
Modified:
    incubator/tuscany/java/sca/kernel/core/src/main/java/org/apache/tuscany/core/generator/GeneratorRegistryImpl.java
    incubator/tuscany/java/sca/kernel/core/src/main/java/org/apache/tuscany/core/implementation/java/JavaPhysicalComponentGenerator.java
    incubator/tuscany/java/sca/kernel/core/src/main/java/org/apache/tuscany/core/services/deployment/AssemblyServiceImpl.java
    incubator/tuscany/java/sca/kernel/core/src/test/java/org/apache/tuscany/core/builder/ConnectorImplCreateWireTestCase.java
    incubator/tuscany/java/sca/kernel/core/src/test/java/org/apache/tuscany/core/builder/interceptor/InterceptorBuilderRegistryImplTestCase.java
    incubator/tuscany/java/sca/kernel/core/src/test/java/org/apache/tuscany/core/wire/NonBlockingInterceptorBuilderTestCase.java
    incubator/tuscany/java/sca/kernel/host-api/src/main/java/org/apache/tuscany/host/deployment/DeploymentException.java
    incubator/tuscany/java/sca/kernel/spi/src/main/java/org/apache/tuscany/spi/generator/ComponentGenerator.java
    incubator/tuscany/java/sca/kernel/spi/src/main/java/org/apache/tuscany/spi/generator/GeneratorRegistry.java
    incubator/tuscany/java/sca/kernel/spi/src/main/java/org/apache/tuscany/spi/generator/InterceptorGenerator.java
    incubator/tuscany/java/sca/kernel/spi/src/main/java/org/apache/tuscany/spi/model/ComponentDefinition.java
    incubator/tuscany/java/sca/kernel/spi/src/main/java/org/apache/tuscany/spi/model/physical/PhysicalInterceptorDefinition.java

Modified: incubator/tuscany/java/sca/kernel/core/src/main/java/org/apache/tuscany/core/generator/GeneratorRegistryImpl.java
URL: http://svn.apache.org/viewvc/incubator/tuscany/java/sca/kernel/core/src/main/java/org/apache/tuscany/core/generator/GeneratorRegistryImpl.java?view=diff&rev=519710&r1=519709&r2=519710
==============================================================================
--- incubator/tuscany/java/sca/kernel/core/src/main/java/org/apache/tuscany/core/generator/GeneratorRegistryImpl.java (original)
+++ incubator/tuscany/java/sca/kernel/core/src/main/java/org/apache/tuscany/core/generator/GeneratorRegistryImpl.java Sun Mar 18 15:19:16 2007
@@ -35,37 +35,46 @@
 import org.apache.tuscany.spi.model.ComponentDefinition;
 import org.apache.tuscany.spi.model.DataType;
 import org.apache.tuscany.spi.model.Implementation;
+import org.apache.tuscany.spi.model.IntentDefinition;
 import org.apache.tuscany.spi.model.Operation;
 import org.apache.tuscany.spi.model.ReferenceDefinition;
 import org.apache.tuscany.spi.model.ResourceDefinition;
 import org.apache.tuscany.spi.model.ServiceContract;
 import org.apache.tuscany.spi.model.ServiceDefinition;
+import org.apache.tuscany.spi.model.physical.PhysicalInterceptorDefinition;
 import org.apache.tuscany.spi.model.physical.PhysicalOperationDefinition;
 import org.apache.tuscany.spi.model.physical.PhysicalWireDefinition;
 import org.apache.tuscany.spi.model.physical.PhysicalWireSourceDefinition;
 import org.apache.tuscany.spi.model.physical.PhysicalWireTargetDefinition;
 
+import org.apache.tuscany.core.model.NonBlockingIntentDefinition;
+
 /**
  * @version $Rev$ $Date$
  */
 public class GeneratorRegistryImpl implements GeneratorRegistry {
 
     private Map<Class<?>,
-        ComponentGenerator<? extends ComponentDefinition<? extends Implementation>>> componentGenerators =
-        new ConcurrentHashMap<Class<?>, ComponentGenerator<? extends ComponentDefinition<? extends Implementation>>>();
-
-    private Map<Class<?>, BindingGenerator> bindingGenerators = new ConcurrentHashMap<Class<?>, BindingGenerator>();
+        ComponentGenerator<? extends ComponentDefinition<? extends Implementation>>> componentGenerators;
+    private Map<Class<?>, BindingGenerator> bindingGenerators;
+    private Map<Class<?>, InterceptorGenerator<? extends IntentDefinition>> interceptorGenerators;
+    private Map<Class<?>, ResourceGenerator> resourceGenerators;
 
-    private Map<Class<?>, InterceptorGenerator> interceptorGenerators =
-        new ConcurrentHashMap<Class<?>, InterceptorGenerator>();
 
-    private Map<Class<?>, ResourceGenerator> resourceGenerators = new ConcurrentHashMap<Class<?>, ResourceGenerator>();
+    public GeneratorRegistryImpl() {
+        componentGenerators =
+            new ConcurrentHashMap<Class<?>,
+                ComponentGenerator<? extends ComponentDefinition<? extends Implementation>>>();
+        bindingGenerators = new ConcurrentHashMap<Class<?>, BindingGenerator>();
+        resourceGenerators = new ConcurrentHashMap<Class<?>, ResourceGenerator>();
+        interceptorGenerators = new ConcurrentHashMap<Class<?>, InterceptorGenerator<? extends IntentDefinition>>();
+    }
 
     public void register(Class<?> clazz, BindingGenerator generator) {
         bindingGenerators.put(clazz, generator);
     }
 
-    public void register(Class<?> clazz, InterceptorGenerator generator) {
+    public <T extends IntentDefinition> void register(Class<T> clazz, InterceptorGenerator<T> generator) {
         interceptorGenerators.put(clazz, generator);
     }
 
@@ -73,8 +82,8 @@
         resourceGenerators.put(clazz, generator);
     }
 
-    public void register(Class<?> clazz,
-                         ComponentGenerator<? extends ComponentDefinition<? extends Implementation>> generator) {
+    public <T extends ComponentDefinition<? extends Implementation>> void register(Class<T> clazz,
+                                                                                   ComponentGenerator<T> generator) {
         componentGenerators.put(clazz, generator);
     }
 
@@ -94,17 +103,18 @@
     public <C extends ComponentDefinition<? extends Implementation>>
     void generateWire(ServiceContract<?> contract,
                       BindingDefinition bindingDefinition,
+                      ServiceDefinition serviceDefinition,
                       C componentDefinition,
                       GeneratorContext context) throws GenerationException {
 
-        PhysicalWireDefinition wireDefinition = createDefinition(contract);
+        PhysicalWireDefinition wireDefinition = createDefinition(contract, context);
         Class<?> type = componentDefinition.getClass();
         ComponentGenerator<C> targetGenerator = (ComponentGenerator<C>) componentGenerators.get(type);
         if (targetGenerator == null) {
             throw new GeneratorNotFoundException(type);
         }
         PhysicalWireTargetDefinition targetDefinition =
-            targetGenerator.generateWireTarget(componentDefinition, context);
+            targetGenerator.generateWireTarget(componentDefinition, serviceDefinition, context);
         wireDefinition.setTarget(targetDefinition);
         type = bindingDefinition.getClass();
         BindingGenerator sourceGenerator = bindingGenerators.get(type);
@@ -125,7 +135,7 @@
                       GeneratorContext context) throws GenerationException {
 
         ServiceContract<?> contract = referenceDefinition.getServiceContract();
-        PhysicalWireDefinition wireDefinition = createDefinition(contract);
+        PhysicalWireDefinition wireDefinition = createDefinition(contract, context);
         Class<?> type = bindingDefinition.getClass();
         BindingGenerator targetGenerator = bindingGenerators.get(type);
         if (targetGenerator == null) {
@@ -140,7 +150,7 @@
             throw new GeneratorNotFoundException(type);
         }
         PhysicalWireSourceDefinition sourceDefinition =
-            sourceGenerator.generateWireSource(componentDefinition, context);
+            sourceGenerator.generateWireSource(componentDefinition, referenceDefinition, context);
         wireDefinition.setSource(sourceDefinition);
 
         context.getPhysicalChangeSet().addWireDefinition(wireDefinition);
@@ -150,20 +160,19 @@
     public <S extends ComponentDefinition<? extends Implementation>,
         T extends ComponentDefinition<? extends Implementation>>
     void generateWire(S source,
-                      ReferenceDefinition reference,
-                      ServiceDefinition service,
-                      ComponentDefinition target,
+                      ReferenceDefinition referenceDefinition,
+                      ServiceDefinition serviceDefinition,
+                      T target,
                       GeneratorContext context) throws GenerationException {
-        ServiceContract<?> contract = reference.getServiceContract();
-        PhysicalWireDefinition wireDefinition = createDefinition(contract);
-
+        ServiceContract<?> contract = referenceDefinition.getServiceContract();
+        PhysicalWireDefinition wireDefinition = createDefinition(contract, context);
         Class<?> type = target.getClass();
         ComponentGenerator<S> targetGenerator = (ComponentGenerator<S>) componentGenerators.get(type);
         if (targetGenerator == null) {
             throw new GeneratorNotFoundException(type);
         }
         PhysicalWireTargetDefinition targetDefinition =
-            targetGenerator.generateWireTarget(source, context);
+            targetGenerator.generateWireTarget(source, serviceDefinition, context);
         wireDefinition.setTarget(targetDefinition);
 
         type = source.getClass();
@@ -172,7 +181,7 @@
             throw new GeneratorNotFoundException(type);
         }
         PhysicalWireSourceDefinition sourceDefinition =
-            targetGenerator.generateWireSource(source, context);
+            targetGenerator.generateWireSource(source, referenceDefinition, context);
         wireDefinition.setSource(sourceDefinition);
         context.getPhysicalChangeSet().addWireDefinition(wireDefinition);
     }
@@ -214,19 +223,41 @@
 
     }
 
-    private PhysicalWireDefinition createDefinition(ServiceContract<?> contract) {
+
+    @SuppressWarnings({"unchecked"})
+    private PhysicalWireDefinition createDefinition(ServiceContract<?> contract, GeneratorContext context)
+        throws GenerationException {
         PhysicalWireDefinition wireDefinition = new PhysicalWireDefinition();
         for (Operation o : contract.getOperations().values()) {
             PhysicalOperationDefinition physicalOperation = mapOperation(o);
             wireDefinition.addOperation(physicalOperation);
+            // this is egregious
+            // hardcode intent until we get the intent infrastructure in place
+            IntentDefinition intent = new NonBlockingIntentDefinition();
+            Class<? extends IntentDefinition> type = NonBlockingIntentDefinition.class;
+            InterceptorGenerator generator = interceptorGenerators.get(type);
+            if (generator == null) {
+                throw new GeneratorNotFoundException(type);
+            }
+            PhysicalInterceptorDefinition interceptorDefinition = generator.generate(intent, context);
+            physicalOperation.addInterceptor(interceptorDefinition);
         }
         for (Operation o : contract.getCallbackOperations().values()) {
             PhysicalOperationDefinition physicalOperation = mapOperation(o);
             physicalOperation.setCallback(true);
             wireDefinition.addOperation(physicalOperation);
+            // this is egregious
+            // hardcode intent until we get the intent infrastructure in place
+            IntentDefinition intent = new NonBlockingIntentDefinition();
+            Class<? extends IntentDefinition> type = NonBlockingIntentDefinition.class;
+            InterceptorGenerator generator = interceptorGenerators.get(type);
+            if (generator == null) {
+                throw new GeneratorNotFoundException(type);
+            }
+            PhysicalInterceptorDefinition interceptorDefinition = generator.generate(intent, context);
+            physicalOperation.addInterceptor(interceptorDefinition);
         }
         return wireDefinition;
     }
-
 
 }

Modified: incubator/tuscany/java/sca/kernel/core/src/main/java/org/apache/tuscany/core/implementation/java/JavaPhysicalComponentGenerator.java
URL: http://svn.apache.org/viewvc/incubator/tuscany/java/sca/kernel/core/src/main/java/org/apache/tuscany/core/implementation/java/JavaPhysicalComponentGenerator.java?view=diff&rev=519710&r1=519709&r2=519710
==============================================================================
--- incubator/tuscany/java/sca/kernel/core/src/main/java/org/apache/tuscany/core/implementation/java/JavaPhysicalComponentGenerator.java (original)
+++ incubator/tuscany/java/sca/kernel/core/src/main/java/org/apache/tuscany/core/implementation/java/JavaPhysicalComponentGenerator.java Sun Mar 18 15:19:16 2007
@@ -32,6 +32,8 @@
 import org.apache.tuscany.spi.implementation.java.PojoComponentType;
 import org.apache.tuscany.spi.model.ComponentDefinition;
 import org.apache.tuscany.spi.model.Property;
+import org.apache.tuscany.spi.model.ServiceDefinition;
+import org.apache.tuscany.spi.model.ReferenceDefinition;
 import org.apache.tuscany.spi.model.physical.PhysicalWireSourceDefinition;
 import org.apache.tuscany.spi.model.physical.PhysicalWireTargetDefinition;
 
@@ -63,6 +65,7 @@
         provider.setInitMethod(type.getInitMethod().toString());
         provider.setImplementationClass(implementation.getImplementationClass().getName());
         // TODO ctor arguments
+        // TODO set CDI source for ref, props, and callbacks
         Map<String, JavaMappedReference> references = type.getReferences();
         for (Map.Entry<String, JavaMappedReference> entry : references.entrySet()) {
             JavaMappedReference reference = entry.getValue();
@@ -91,12 +94,14 @@
     }
 
     public PhysicalWireSourceDefinition generateWireSource(ComponentDefinition<JavaImplementation> definition,
+                                                           ReferenceDefinition serviceDefinition,
                                                            GeneratorContext context)
         throws GenerationException {
         return new JavaPhysicalWireSourceDefinition();
     }
 
     public PhysicalWireTargetDefinition generateWireTarget(ComponentDefinition<JavaImplementation> definition,
+                                                           ServiceDefinition serviceDefinition,
                                                            GeneratorContext context)
         throws GenerationException {
         return new JavaPhysicalWireTargetDefinition();

Added: incubator/tuscany/java/sca/kernel/core/src/main/java/org/apache/tuscany/core/model/NonBlockingIntentDefinition.java
URL: http://svn.apache.org/viewvc/incubator/tuscany/java/sca/kernel/core/src/main/java/org/apache/tuscany/core/model/NonBlockingIntentDefinition.java?view=auto&rev=519710
==============================================================================
--- incubator/tuscany/java/sca/kernel/core/src/main/java/org/apache/tuscany/core/model/NonBlockingIntentDefinition.java (added)
+++ incubator/tuscany/java/sca/kernel/core/src/main/java/org/apache/tuscany/core/model/NonBlockingIntentDefinition.java Sun Mar 18 15:19:16 2007
@@ -0,0 +1,29 @@
+/*
+ * 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.core.model;
+
+import org.apache.tuscany.spi.model.IntentDefinition;
+
+/**
+ * Represents a non-blocking intent
+ *
+ * @version $Rev$ $Date$
+ */
+public class NonBlockingIntentDefinition extends IntentDefinition {
+}

Propchange: incubator/tuscany/java/sca/kernel/core/src/main/java/org/apache/tuscany/core/model/NonBlockingIntentDefinition.java
------------------------------------------------------------------------------
    svn:eol-style = native

Propchange: incubator/tuscany/java/sca/kernel/core/src/main/java/org/apache/tuscany/core/model/NonBlockingIntentDefinition.java
------------------------------------------------------------------------------
    svn:keywords = Rev Date

Modified: incubator/tuscany/java/sca/kernel/core/src/main/java/org/apache/tuscany/core/services/deployment/AssemblyServiceImpl.java
URL: http://svn.apache.org/viewvc/incubator/tuscany/java/sca/kernel/core/src/main/java/org/apache/tuscany/core/services/deployment/AssemblyServiceImpl.java?view=diff&rev=519710&r1=519709&r2=519710
==============================================================================
--- incubator/tuscany/java/sca/kernel/core/src/main/java/org/apache/tuscany/core/services/deployment/AssemblyServiceImpl.java (original)
+++ incubator/tuscany/java/sca/kernel/core/src/main/java/org/apache/tuscany/core/services/deployment/AssemblyServiceImpl.java Sun Mar 18 15:19:16 2007
@@ -24,6 +24,7 @@
 import java.net.URL;
 import java.net.URLConnection;
 import java.util.HashMap;
+import java.util.List;
 import java.util.Map;
 import javax.xml.stream.XMLInputFactory;
 import javax.xml.stream.XMLStreamException;
@@ -33,15 +34,24 @@
 
 import org.apache.tuscany.spi.deployer.ChangeSetHandler;
 import org.apache.tuscany.spi.deployer.ChangeSetHandlerRegistry;
+import org.apache.tuscany.spi.generator.GenerationException;
+import org.apache.tuscany.spi.generator.GeneratorContext;
 import org.apache.tuscany.spi.generator.GeneratorRegistry;
 import org.apache.tuscany.spi.loader.LoaderRegistry;
+import org.apache.tuscany.spi.model.BindingDefinition;
 import org.apache.tuscany.spi.model.ComponentDefinition;
+import org.apache.tuscany.spi.model.ComponentType;
 import org.apache.tuscany.spi.model.CompositeComponentType;
 import org.apache.tuscany.spi.model.CompositeImplementation;
+import org.apache.tuscany.spi.model.Implementation;
+import org.apache.tuscany.spi.model.ModelObject;
 import org.apache.tuscany.spi.model.Property;
 import org.apache.tuscany.spi.model.ReferenceDefinition;
+import org.apache.tuscany.spi.model.ReferenceTarget;
 import org.apache.tuscany.spi.model.ServiceDefinition;
+import org.apache.tuscany.spi.model.physical.PhysicalChangeSet;
 
+import org.apache.tuscany.core.generator.DefaultGeneratorContext;
 import org.apache.tuscany.core.resolver.AutowireResolver;
 import org.apache.tuscany.host.deployment.AssemblyService;
 import org.apache.tuscany.host.deployment.DeploymentException;
@@ -113,7 +123,92 @@
         registry.put(handler.getContentType(), handler);
     }
 
-    public void include(InputStream changeSet) throws DeploymentException {
+    public void include(InputStream stream) throws DeploymentException {
+
+        try {
+            XMLStreamReader reader = xmlFactory.createXMLStreamReader(stream);
+            if (domain == null) {
+                // lazily create the domain
+                domain = createDomain();
+            }
+
+            ComponentDefinition<CompositeImplementation> defintion = null;    //loaderRegistry.load()
+            CompositeComponentType<?, ?, ?> type = defintion.getImplementation().getComponentType();
+            Map<URI, GeneratorContext> contexts = new HashMap<URI, GeneratorContext>();
+            // TODO create physical resource definitions
+            // create physical component definitions
+            for (ComponentDefinition<?> child : type.getDeclaredComponents().values()) {
+                generate(child, contexts);
+            }
+            // create physical wire definitions
+            for (ComponentDefinition<?> child : type.getDeclaredComponents().values()) {
+                URI id = child.getRuntimeId();
+                GeneratorContext context = contexts.get(id);
+                if (context == null) {
+                    PhysicalChangeSet changeSet = new PhysicalChangeSet();
+                    context = new DefaultGeneratorContext(changeSet);
+                    contexts.put(id, context);
+                }
+                try {
+                    // TODO support composite recursion
+                    for (Map.Entry<String, ReferenceTarget> entry : child.getReferenceTargets().entrySet()) {
+                        List<URI> targets = entry.getValue().getTargets();
+                        for (URI uri : targets) {
+                            Implementation implementation = child.getImplementation();
+                            ComponentType<?, ?, ?> componentType = implementation.getComponentType();
+                            ReferenceDefinition referenceDefinition = componentType.getReferences().get(entry.getKey());
+                            // TODO resolve target
+                            ModelObject target = resolveTarget(uri);
+                            if (target instanceof ReferenceDefinition) {
+                                ReferenceDefinition targetReference = (ReferenceDefinition) target;
+                                // TODO this should be extensible and moved out
+                                BindingDefinition binding = targetReference.getBindings().get(0);
+                                generatorRegistry.generateWire(child, referenceDefinition, binding, context);
+
+                            } else if (target instanceof ComponentDefinition) {
+                                ComponentDefinition<?> targetComponent = (ComponentDefinition) target;
+                                String serviceName = uri.getFragment();
+                                Implementation<?> targetImplementation = targetComponent.getImplementation();
+                                ComponentType<?, ?, ?> targetType = targetImplementation.getComponentType();
+                                ServiceDefinition serviceDefinition = targetType.getServices().get(serviceName);
+                                assert serviceDefinition != null;
+                                generatorRegistry.generateWire(child,
+                                    referenceDefinition,
+                                    serviceDefinition,
+                                    targetComponent, context);
+                            } else {
+                                throw new AssertionError();
+                            }
+
+
+                        }
+                    }
+                } catch (GenerationException e) {
+                    throw new DeploymentException(e);
+                }
+
+            }
+
+        } catch (XMLStreamException e) {
+            throw new DocumentParseException(e);
+        }
+    }
+
+    private void generate(ComponentDefinition<?> component, Map<URI, GeneratorContext> contexts) {
+        URI id = component.getRuntimeId();
+        GeneratorContext context = contexts.get(id);
+        if (context == null) {
+            PhysicalChangeSet changeSet = new PhysicalChangeSet();
+            context = new DefaultGeneratorContext(changeSet);
+            contexts.put(id, context);
+        }
+        try {
+            // TODO support composite recursion
+            generatorRegistry.generate(component, context);
+        } catch (GenerationException e) {
+            // throw new
+        }
+
     }
 
     private ComponentDefinition<CompositeImplementation> createDomain() {
@@ -126,4 +221,7 @@
         return domain;
     }
 
+    private ModelObject resolveTarget(URI uri) {
+        throw new UnsupportedOperationException();
+    }
 }

Added: incubator/tuscany/java/sca/kernel/core/src/main/java/org/apache/tuscany/core/services/deployment/DocumentParseException.java
URL: http://svn.apache.org/viewvc/incubator/tuscany/java/sca/kernel/core/src/main/java/org/apache/tuscany/core/services/deployment/DocumentParseException.java?view=auto&rev=519710
==============================================================================
--- incubator/tuscany/java/sca/kernel/core/src/main/java/org/apache/tuscany/core/services/deployment/DocumentParseException.java (added)
+++ incubator/tuscany/java/sca/kernel/core/src/main/java/org/apache/tuscany/core/services/deployment/DocumentParseException.java Sun Mar 18 15:19:16 2007
@@ -0,0 +1,31 @@
+/*
+ * 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.core.services.deployment;
+
+import org.apache.tuscany.host.deployment.DeploymentException;
+
+/**
+ * @version $Rev$ $Date$
+ */
+public class DocumentParseException extends DeploymentException {
+
+    public DocumentParseException(Throwable cause) {
+        super(cause);
+    }
+}

Propchange: incubator/tuscany/java/sca/kernel/core/src/main/java/org/apache/tuscany/core/services/deployment/DocumentParseException.java
------------------------------------------------------------------------------
    svn:eol-style = native

Propchange: incubator/tuscany/java/sca/kernel/core/src/main/java/org/apache/tuscany/core/services/deployment/DocumentParseException.java
------------------------------------------------------------------------------
    svn:keywords = Rev Date

Added: incubator/tuscany/java/sca/kernel/core/src/main/java/org/apache/tuscany/core/wire/NonBlockingInterceptorGenerator.java
URL: http://svn.apache.org/viewvc/incubator/tuscany/java/sca/kernel/core/src/main/java/org/apache/tuscany/core/wire/NonBlockingInterceptorGenerator.java?view=auto&rev=519710
==============================================================================
--- incubator/tuscany/java/sca/kernel/core/src/main/java/org/apache/tuscany/core/wire/NonBlockingInterceptorGenerator.java (added)
+++ incubator/tuscany/java/sca/kernel/core/src/main/java/org/apache/tuscany/core/wire/NonBlockingInterceptorGenerator.java Sun Mar 18 15:19:16 2007
@@ -0,0 +1,49 @@
+/*
+ * 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.core.wire;
+
+import javax.xml.namespace.QName;
+
+import org.osoa.sca.annotations.EagerInit;
+import org.osoa.sca.annotations.Reference;
+
+import org.apache.tuscany.spi.generator.GenerationException;
+import org.apache.tuscany.spi.generator.GeneratorContext;
+import org.apache.tuscany.spi.generator.GeneratorRegistry;
+import org.apache.tuscany.spi.generator.InterceptorGenerator;
+import org.apache.tuscany.spi.model.physical.PhysicalInterceptorDefinition;
+
+import org.apache.tuscany.core.model.NonBlockingIntentDefinition;
+
+/**
+ * @version $Rev$ $Date$
+ */
+@EagerInit
+public class NonBlockingInterceptorGenerator implements InterceptorGenerator<NonBlockingIntentDefinition> {
+    public static final QName QNAME = new QName("http://tuscany.apache.org/xmlns/sca/system/2.0-alpha", "nonblocking");
+
+    public NonBlockingInterceptorGenerator(@Reference GeneratorRegistry registry) {
+        registry.register(NonBlockingIntentDefinition.class, this);
+    }
+
+    public PhysicalInterceptorDefinition generate(NonBlockingIntentDefinition definition,
+                                                  GeneratorContext context) throws GenerationException {
+        return new PhysicalInterceptorDefinition(QNAME);
+    }
+}

Propchange: incubator/tuscany/java/sca/kernel/core/src/main/java/org/apache/tuscany/core/wire/NonBlockingInterceptorGenerator.java
------------------------------------------------------------------------------
    svn:eol-style = native

Propchange: incubator/tuscany/java/sca/kernel/core/src/main/java/org/apache/tuscany/core/wire/NonBlockingInterceptorGenerator.java
------------------------------------------------------------------------------
    svn:keywords = Rev Date

Modified: incubator/tuscany/java/sca/kernel/core/src/test/java/org/apache/tuscany/core/builder/ConnectorImplCreateWireTestCase.java
URL: http://svn.apache.org/viewvc/incubator/tuscany/java/sca/kernel/core/src/test/java/org/apache/tuscany/core/builder/ConnectorImplCreateWireTestCase.java?view=diff&rev=519710&r1=519709&r2=519710
==============================================================================
--- incubator/tuscany/java/sca/kernel/core/src/test/java/org/apache/tuscany/core/builder/ConnectorImplCreateWireTestCase.java (original)
+++ incubator/tuscany/java/sca/kernel/core/src/test/java/org/apache/tuscany/core/builder/ConnectorImplCreateWireTestCase.java Sun Mar 18 15:19:16 2007
@@ -39,6 +39,7 @@
  * @version $Rev$ $Date$
  */
 public class ConnectorImplCreateWireTestCase extends TestCase {
+    private static final QName QNAME = new QName("test");
 
     public void testCreateWire() throws Exception {
         TestConnector connector = new TestConnector();
@@ -75,7 +76,7 @@
         targetDefinition.setUri(URI.create("target"));
         definition.setSource(sourceDefinition);
         definition.setTarget(targetDefinition);
-        PhysicalInterceptorDefinition interceptorDefinition = new PhysicalInterceptorDefinition();
+        PhysicalInterceptorDefinition interceptorDefinition = new PhysicalInterceptorDefinition(QNAME);
         interceptorDefinition.setBuilder(qName);
 
         PhysicalOperationDefinition operation = new PhysicalOperationDefinition();

Modified: incubator/tuscany/java/sca/kernel/core/src/test/java/org/apache/tuscany/core/builder/interceptor/InterceptorBuilderRegistryImplTestCase.java
URL: http://svn.apache.org/viewvc/incubator/tuscany/java/sca/kernel/core/src/test/java/org/apache/tuscany/core/builder/interceptor/InterceptorBuilderRegistryImplTestCase.java?view=diff&rev=519710&r1=519709&r2=519710
==============================================================================
--- incubator/tuscany/java/sca/kernel/core/src/test/java/org/apache/tuscany/core/builder/interceptor/InterceptorBuilderRegistryImplTestCase.java (original)
+++ incubator/tuscany/java/sca/kernel/core/src/test/java/org/apache/tuscany/core/builder/interceptor/InterceptorBuilderRegistryImplTestCase.java Sun Mar 18 15:19:16 2007
@@ -32,6 +32,8 @@
  */
 public class InterceptorBuilderRegistryImplTestCase extends TestCase {
     private static final QName QNAME = new QName("builder");
+    private static final QName INTERCEPTOR_QNAME = new QName("interceptor");
+
     private InterceptorBuilderRegistry registry = new InterceptorBuilderRegistryImpl();
 
     public void testDispatch() throws Exception {
@@ -39,7 +41,7 @@
         EasyMock.expect(builder.build(EasyMock.isA(PhysicalInterceptorDefinition.class))).andReturn(null);
         EasyMock.replay(builder);
         registry.register(QNAME, builder);
-        PhysicalInterceptorDefinition definition = new PhysicalInterceptorDefinition();
+        PhysicalInterceptorDefinition definition = new PhysicalInterceptorDefinition(INTERCEPTOR_QNAME);
         definition.setBuilder(QNAME);
         registry.build(definition);
         EasyMock.verify(builder);
@@ -50,7 +52,7 @@
         EasyMock.replay(builder);
         registry.register(QNAME, builder);
         registry.unregister(QNAME);
-        PhysicalInterceptorDefinition definition = new PhysicalInterceptorDefinition();
+        PhysicalInterceptorDefinition definition = new PhysicalInterceptorDefinition(INTERCEPTOR_QNAME);
         definition.setBuilder(QNAME);
         try {
             registry.build(definition);

Modified: incubator/tuscany/java/sca/kernel/core/src/test/java/org/apache/tuscany/core/wire/NonBlockingInterceptorBuilderTestCase.java
URL: http://svn.apache.org/viewvc/incubator/tuscany/java/sca/kernel/core/src/test/java/org/apache/tuscany/core/wire/NonBlockingInterceptorBuilderTestCase.java?view=diff&rev=519710&r1=519709&r2=519710
==============================================================================
--- incubator/tuscany/java/sca/kernel/core/src/test/java/org/apache/tuscany/core/wire/NonBlockingInterceptorBuilderTestCase.java (original)
+++ incubator/tuscany/java/sca/kernel/core/src/test/java/org/apache/tuscany/core/wire/NonBlockingInterceptorBuilderTestCase.java Sun Mar 18 15:19:16 2007
@@ -18,6 +18,8 @@
  */
 package org.apache.tuscany.core.wire;
 
+import static org.apache.tuscany.core.wire.NonBlockingInterceptorBuilder.QNAME;
+
 import org.apache.tuscany.spi.model.physical.PhysicalInterceptorDefinition;
 
 import junit.framework.TestCase;
@@ -29,8 +31,8 @@
 
     public void testBuild() throws Exception {
         NonBlockingInterceptorBuilder builder = new NonBlockingInterceptorBuilder(null, null);
-        PhysicalInterceptorDefinition definition = new PhysicalInterceptorDefinition();
-        definition.setBuilder(NonBlockingInterceptorBuilder.QNAME);
+        PhysicalInterceptorDefinition definition = new PhysicalInterceptorDefinition(QNAME);
+        definition.setBuilder(QNAME);
         assertTrue(builder.build(definition) instanceof NonBlockingInterceptor);
     }
 }

Modified: incubator/tuscany/java/sca/kernel/host-api/src/main/java/org/apache/tuscany/host/deployment/DeploymentException.java
URL: http://svn.apache.org/viewvc/incubator/tuscany/java/sca/kernel/host-api/src/main/java/org/apache/tuscany/host/deployment/DeploymentException.java?view=diff&rev=519710&r1=519709&r2=519710
==============================================================================
--- incubator/tuscany/java/sca/kernel/host-api/src/main/java/org/apache/tuscany/host/deployment/DeploymentException.java (original)
+++ incubator/tuscany/java/sca/kernel/host-api/src/main/java/org/apache/tuscany/host/deployment/DeploymentException.java Sun Mar 18 15:19:16 2007
@@ -25,7 +25,7 @@
  *
  * @version $Rev$ $Date$
  */
-public abstract class DeploymentException extends TuscanyException {
+public class DeploymentException extends TuscanyException {
     protected DeploymentException() {
     }
 
@@ -45,7 +45,7 @@
         super(message, identifier, cause);
     }
 
-    protected DeploymentException(Throwable cause) {
+    public DeploymentException(Throwable cause) {
         super(cause);
     }
 }

Modified: incubator/tuscany/java/sca/kernel/spi/src/main/java/org/apache/tuscany/spi/generator/ComponentGenerator.java
URL: http://svn.apache.org/viewvc/incubator/tuscany/java/sca/kernel/spi/src/main/java/org/apache/tuscany/spi/generator/ComponentGenerator.java?view=diff&rev=519710&r1=519709&r2=519710
==============================================================================
--- incubator/tuscany/java/sca/kernel/spi/src/main/java/org/apache/tuscany/spi/generator/ComponentGenerator.java (original)
+++ incubator/tuscany/java/sca/kernel/spi/src/main/java/org/apache/tuscany/spi/generator/ComponentGenerator.java Sun Mar 18 15:19:16 2007
@@ -20,6 +20,8 @@
 
 import org.apache.tuscany.spi.model.ComponentDefinition;
 import org.apache.tuscany.spi.model.Implementation;
+import org.apache.tuscany.spi.model.ServiceDefinition;
+import org.apache.tuscany.spi.model.ReferenceDefinition;
 import org.apache.tuscany.spi.model.physical.PhysicalWireSourceDefinition;
 import org.apache.tuscany.spi.model.physical.PhysicalWireTargetDefinition;
 
@@ -30,8 +32,12 @@
 
     void generate(C definition, GeneratorContext context) throws GenerationException;
 
-    PhysicalWireSourceDefinition generateWireSource(C definition, GeneratorContext context) throws GenerationException;
+    PhysicalWireSourceDefinition generateWireSource(C definition,
+                                                    ReferenceDefinition serviceDefinition,
+                                                    GeneratorContext context) throws GenerationException;
 
-    PhysicalWireTargetDefinition generateWireTarget(C definition, GeneratorContext context) throws GenerationException;
+    PhysicalWireTargetDefinition generateWireTarget(C definition,
+                                                    ServiceDefinition serviceDefinition,
+                                                    GeneratorContext context) throws GenerationException;
 
 }

Modified: incubator/tuscany/java/sca/kernel/spi/src/main/java/org/apache/tuscany/spi/generator/GeneratorRegistry.java
URL: http://svn.apache.org/viewvc/incubator/tuscany/java/sca/kernel/spi/src/main/java/org/apache/tuscany/spi/generator/GeneratorRegistry.java?view=diff&rev=519710&r1=519709&r2=519710
==============================================================================
--- incubator/tuscany/java/sca/kernel/spi/src/main/java/org/apache/tuscany/spi/generator/GeneratorRegistry.java (original)
+++ incubator/tuscany/java/sca/kernel/spi/src/main/java/org/apache/tuscany/spi/generator/GeneratorRegistry.java Sun Mar 18 15:19:16 2007
@@ -23,9 +23,11 @@
 import org.apache.tuscany.spi.model.BindingDefinition;
 import org.apache.tuscany.spi.model.ComponentDefinition;
 import org.apache.tuscany.spi.model.Implementation;
+import org.apache.tuscany.spi.model.IntentDefinition;
 import org.apache.tuscany.spi.model.ReferenceDefinition;
-import org.apache.tuscany.spi.model.ServiceContract;
 import org.apache.tuscany.spi.model.ResourceDefinition;
+import org.apache.tuscany.spi.model.ServiceContract;
+import org.apache.tuscany.spi.model.ServiceDefinition;
 
 /**
  * A registry for generators
@@ -34,12 +36,12 @@
  */
 public interface GeneratorRegistry {
 
-    void register(Class<?> clazz,
-                  ComponentGenerator<? extends ComponentDefinition<? extends Implementation>> generator);
+    <T extends ComponentDefinition<? extends Implementation>> void register(Class<T> clazz,
+                                                                            ComponentGenerator<T> generator);
 
     void register(Class<?> clazz, BindingGenerator generator);
 
-    void register(Class<?> clazz, InterceptorGenerator generator);
+    <T extends IntentDefinition> void register(Class<T> phase, InterceptorGenerator<T> generator);
 
     void register(Class<?> clazz, ResourceGenerator generator);
 
@@ -61,10 +63,12 @@
      * @param bindingDefinition
      * @param componentDefinition
      * @param context
+     * @param serviceDefinition
      * @throws GenerationException
      */
     <C extends ComponentDefinition<? extends Implementation>> void generateWire(ServiceContract<?> contract,
                                                                                 BindingDefinition bindingDefinition,
+                                                                                ServiceDefinition serviceDefinition,
                                                                                 C componentDefinition,
                                                                                 GeneratorContext context)
         throws GenerationException;
@@ -75,6 +79,13 @@
                                                                                 BindingDefinition bindingDefinition,
                                                                                 GeneratorContext context)
         throws GenerationException;
+
+    <S extends ComponentDefinition<? extends Implementation>, T extends ComponentDefinition<? extends Implementation>>
+        void generateWire(S sourceDefinition,
+                          ReferenceDefinition referenceDefinition,
+                          ServiceDefinition serviceDefinition,
+                          T targetDefinition,
+                          GeneratorContext context) throws GenerationException;
 
     URI generate(ResourceDefinition definition, GeneratorContext context) throws GenerationException;
 

Modified: incubator/tuscany/java/sca/kernel/spi/src/main/java/org/apache/tuscany/spi/generator/InterceptorGenerator.java
URL: http://svn.apache.org/viewvc/incubator/tuscany/java/sca/kernel/spi/src/main/java/org/apache/tuscany/spi/generator/InterceptorGenerator.java?view=diff&rev=519710&r1=519709&r2=519710
==============================================================================
--- incubator/tuscany/java/sca/kernel/spi/src/main/java/org/apache/tuscany/spi/generator/InterceptorGenerator.java (original)
+++ incubator/tuscany/java/sca/kernel/spi/src/main/java/org/apache/tuscany/spi/generator/InterceptorGenerator.java Sun Mar 18 15:19:16 2007
@@ -18,15 +18,17 @@
  */
 package org.apache.tuscany.spi.generator;
 
-import org.apache.tuscany.spi.model.physical.PhysicalWireDefinition;
+import org.apache.tuscany.spi.model.IntentDefinition;
+import org.apache.tuscany.spi.model.physical.PhysicalInterceptorDefinition;
 
 /**
- * Implementations are responsible for generating a physical interceptor definitions for a wire.
+ * Implementations are responsible for generating physical interceptor definitions for a wire.
  *
  * @version $Rev$ $Date$
  */
-public interface InterceptorGenerator {
+public interface InterceptorGenerator<T extends IntentDefinition> {
 
-    void generate(PhysicalWireDefinition componentDefinition, GeneratorContext context) throws GenerationException;
+    PhysicalInterceptorDefinition generate(T definition, GeneratorContext context) throws GenerationException;
 
 }
+

Modified: incubator/tuscany/java/sca/kernel/spi/src/main/java/org/apache/tuscany/spi/model/ComponentDefinition.java
URL: http://svn.apache.org/viewvc/incubator/tuscany/java/sca/kernel/spi/src/main/java/org/apache/tuscany/spi/model/ComponentDefinition.java?view=diff&rev=519710&r1=519709&r2=519710
==============================================================================
--- incubator/tuscany/java/sca/kernel/spi/src/main/java/org/apache/tuscany/spi/model/ComponentDefinition.java (original)
+++ incubator/tuscany/java/sca/kernel/spi/src/main/java/org/apache/tuscany/spi/model/ComponentDefinition.java Sun Mar 18 15:19:16 2007
@@ -40,6 +40,7 @@
  */
 public class ComponentDefinition<I extends Implementation<?>> extends ModelObject {
     private URI uri;
+    private URI runtimeId;
     private boolean autowire;
     private Integer initLevel;
     private final I implementation;
@@ -91,6 +92,24 @@
      */
     public void setUri(URI uri) {
         this.uri = uri;
+    }
+
+    /**
+     * Returns the id of the node the component is to be provisioned to.
+     *
+     * @return the id of the node the component is to be provisioned to
+     */
+    public URI getRuntimeId() {
+        return runtimeId;
+    }
+
+    /**
+     * Sets the id of the node the component is to be provisioned to.
+     *
+     * @param id the id of the node the component is to be provisioned to
+     */
+    public void setRuntimeId(URI id) {
+        this.runtimeId = id;
     }
 
     /**

Added: incubator/tuscany/java/sca/kernel/spi/src/main/java/org/apache/tuscany/spi/model/IntentDefinition.java
URL: http://svn.apache.org/viewvc/incubator/tuscany/java/sca/kernel/spi/src/main/java/org/apache/tuscany/spi/model/IntentDefinition.java?view=auto&rev=519710
==============================================================================
--- incubator/tuscany/java/sca/kernel/spi/src/main/java/org/apache/tuscany/spi/model/IntentDefinition.java (added)
+++ incubator/tuscany/java/sca/kernel/spi/src/main/java/org/apache/tuscany/spi/model/IntentDefinition.java Sun Mar 18 15:19:16 2007
@@ -0,0 +1,27 @@
+/*
+ * 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.model;
+
+/**
+ * Base model class for intent meta-data
+ *
+ * @version $Rev$ $Date$
+ */
+public class IntentDefinition extends ModelObject {
+}

Propchange: incubator/tuscany/java/sca/kernel/spi/src/main/java/org/apache/tuscany/spi/model/IntentDefinition.java
------------------------------------------------------------------------------
    svn:eol-style = native

Propchange: incubator/tuscany/java/sca/kernel/spi/src/main/java/org/apache/tuscany/spi/model/IntentDefinition.java
------------------------------------------------------------------------------
    svn:keywords = Rev Date

Modified: incubator/tuscany/java/sca/kernel/spi/src/main/java/org/apache/tuscany/spi/model/physical/PhysicalInterceptorDefinition.java
URL: http://svn.apache.org/viewvc/incubator/tuscany/java/sca/kernel/spi/src/main/java/org/apache/tuscany/spi/model/physical/PhysicalInterceptorDefinition.java?view=diff&rev=519710&r1=519709&r2=519710
==============================================================================
--- incubator/tuscany/java/sca/kernel/spi/src/main/java/org/apache/tuscany/spi/model/physical/PhysicalInterceptorDefinition.java (original)
+++ incubator/tuscany/java/sca/kernel/spi/src/main/java/org/apache/tuscany/spi/model/physical/PhysicalInterceptorDefinition.java Sun Mar 18 15:19:16 2007
@@ -35,6 +35,10 @@
     // The qualified name of the interceptor builder
     private QName builder;
 
+    public PhysicalInterceptorDefinition(QName builder) {
+        this.builder = builder;
+    }
+
     /**
      * Gets the qualified name of the builder.
      * @return Qualified name of the builder.



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