You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@tuscany.apache.org by js...@apache.org on 2007/05/13 20:01:05 UTC

svn commit: r537623 - in /incubator/tuscany/java/sca/modules/core-spring/src: main/java/org/apache/tuscany/core/spring/implementation/java/ main/java/org/apache/tuscany/sca/core/spring/context/ test/java/calculator/ test/java/org/apache/tuscany/core/ t...

Author: jsdelfino
Date: Sun May 13 11:01:04 2007
New Revision: 537623

URL: http://svn.apache.org/viewvc?view=rev&rev=537623
Log:
Refactoring packages to o.a.t.sca.

Added:
    incubator/tuscany/java/sca/modules/core-spring/src/main/java/org/apache/tuscany/sca/core/spring/context/SCADomainContext.java   (with props)
    incubator/tuscany/java/sca/modules/core-spring/src/test/resources/org/apache/tuscany/sca/core/spring/
      - copied from r537620, incubator/tuscany/java/sca/modules/core-spring/src/test/resources/org/apache/tuscany/core/spring/
    incubator/tuscany/java/sca/modules/core-spring/src/test/resources/org/apache/tuscany/sca/core/spring/Calculator.composite
      - copied unchanged from r537621, incubator/tuscany/java/sca/modules/core-spring/src/test/resources/org/apache/tuscany/core/spring/Calculator.composite
    incubator/tuscany/java/sca/modules/core-spring/src/test/resources/org/apache/tuscany/sca/core/spring/InnerCalculator.composite
      - copied unchanged from r537621, incubator/tuscany/java/sca/modules/core-spring/src/test/resources/org/apache/tuscany/core/spring/InnerCalculator.composite
    incubator/tuscany/java/sca/modules/core-spring/src/test/resources/org/apache/tuscany/sca/core/spring/InnerOperations.composite
      - copied unchanged from r537621, incubator/tuscany/java/sca/modules/core-spring/src/test/resources/org/apache/tuscany/core/spring/InnerOperations.composite
    incubator/tuscany/java/sca/modules/core-spring/src/test/resources/org/apache/tuscany/sca/core/spring/OuterCalculator.composite
      - copied unchanged from r537621, incubator/tuscany/java/sca/modules/core-spring/src/test/resources/org/apache/tuscany/core/spring/OuterCalculator.composite
Removed:
    incubator/tuscany/java/sca/modules/core-spring/src/main/java/org/apache/tuscany/core/spring/implementation/java/
    incubator/tuscany/java/sca/modules/core-spring/src/main/java/org/apache/tuscany/sca/core/spring/context/ComponentContext.java
    incubator/tuscany/java/sca/modules/core-spring/src/test/java/org/apache/tuscany/core/
    incubator/tuscany/java/sca/modules/core-spring/src/test/resources/org/apache/tuscany/core/
Modified:
    incubator/tuscany/java/sca/modules/core-spring/src/test/java/calculator/CalculatorClient.java
    incubator/tuscany/java/sca/modules/core-spring/src/test/java/calculator/NestedCalculatorClient.java
    incubator/tuscany/java/sca/modules/core-spring/src/test/java/org/apache/tuscany/sca/core/spring/CalculatorTestCase.java
    incubator/tuscany/java/sca/modules/core-spring/src/test/java/org/apache/tuscany/sca/core/spring/NestedCalculatorTestCase.java

Added: incubator/tuscany/java/sca/modules/core-spring/src/main/java/org/apache/tuscany/sca/core/spring/context/SCADomainContext.java
URL: http://svn.apache.org/viewvc/incubator/tuscany/java/sca/modules/core-spring/src/main/java/org/apache/tuscany/sca/core/spring/context/SCADomainContext.java?view=auto&rev=537623
==============================================================================
--- incubator/tuscany/java/sca/modules/core-spring/src/main/java/org/apache/tuscany/sca/core/spring/context/SCADomainContext.java (added)
+++ incubator/tuscany/java/sca/modules/core-spring/src/main/java/org/apache/tuscany/sca/core/spring/context/SCADomainContext.java Sun May 13 11:01:04 2007
@@ -0,0 +1,192 @@
+/*
+ * 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.sca.core.spring.context;
+
+import java.io.InputStream;
+import java.util.ArrayList;
+import java.util.List;
+
+import javax.xml.stream.XMLInputFactory;
+import javax.xml.stream.XMLOutputFactory;
+
+import org.apache.tuscany.sca.assembly.AssemblyFactory;
+import org.apache.tuscany.sca.assembly.Composite;
+import org.apache.tuscany.sca.assembly.DefaultAssemblyFactory;
+import org.apache.tuscany.sca.assembly.builder.CompositeBuilderException;
+import org.apache.tuscany.sca.assembly.builder.CompositeBuilderMonitor;
+import org.apache.tuscany.sca.assembly.builder.Problem;
+import org.apache.tuscany.sca.assembly.builder.impl.DefaultCompositeBuilder;
+import org.apache.tuscany.sca.assembly.xml.ComponentTypeProcessor;
+import org.apache.tuscany.sca.assembly.xml.CompositeProcessor;
+import org.apache.tuscany.sca.assembly.xml.ConstrainingTypeProcessor;
+import org.apache.tuscany.sca.contribution.processor.DefaultStAXArtifactProcessorExtensionPoint;
+import org.apache.tuscany.sca.contribution.processor.ExtensibleStAXArtifactProcessor;
+import org.apache.tuscany.sca.contribution.resolver.DefaultModelResolver;
+import org.apache.tuscany.sca.contribution.service.ContributionException;
+import org.apache.tuscany.sca.core.spring.assembly.impl.BeanAssemblyFactory;
+import org.apache.tuscany.sca.core.spring.implementation.java.impl.BeanJavaImplementationFactory;
+import org.apache.tuscany.sca.implementation.java.JavaImplementationFactory;
+import org.apache.tuscany.sca.implementation.java.introspect.DefaultJavaClassIntrospectorExtensionPoint;
+import org.apache.tuscany.sca.implementation.java.introspect.ExtensibleJavaClassIntrospector;
+import org.apache.tuscany.sca.implementation.java.introspect.JavaClassIntrospector;
+import org.apache.tuscany.sca.implementation.java.introspect.JavaClassIntrospectorExtensionPoint;
+import org.apache.tuscany.sca.implementation.java.introspect.JavaClassVisitor;
+import org.apache.tuscany.sca.implementation.java.introspect.impl.AllowsPassByReferenceProcessor;
+import org.apache.tuscany.sca.implementation.java.introspect.impl.BaseJavaClassVisitor;
+import org.apache.tuscany.sca.implementation.java.introspect.impl.ConstructorProcessor;
+import org.apache.tuscany.sca.implementation.java.introspect.impl.ContextProcessor;
+import org.apache.tuscany.sca.implementation.java.introspect.impl.ConversationProcessor;
+import org.apache.tuscany.sca.implementation.java.introspect.impl.DestroyProcessor;
+import org.apache.tuscany.sca.implementation.java.introspect.impl.EagerInitProcessor;
+import org.apache.tuscany.sca.implementation.java.introspect.impl.HeuristicPojoProcessor;
+import org.apache.tuscany.sca.implementation.java.introspect.impl.InitProcessor;
+import org.apache.tuscany.sca.implementation.java.introspect.impl.PolicyProcessor;
+import org.apache.tuscany.sca.implementation.java.introspect.impl.PropertyProcessor;
+import org.apache.tuscany.sca.implementation.java.introspect.impl.ReferenceProcessor;
+import org.apache.tuscany.sca.implementation.java.introspect.impl.ResourceProcessor;
+import org.apache.tuscany.sca.implementation.java.introspect.impl.ScopeProcessor;
+import org.apache.tuscany.sca.implementation.java.introspect.impl.ServiceProcessor;
+import org.apache.tuscany.sca.implementation.java.xml.JavaImplementationProcessor;
+import org.apache.tuscany.sca.interfacedef.InterfaceContractMapper;
+import org.apache.tuscany.sca.interfacedef.impl.DefaultInterfaceContractMapper;
+import org.apache.tuscany.sca.interfacedef.java.DefaultJavaInterfaceFactory;
+import org.apache.tuscany.sca.interfacedef.java.JavaInterfaceFactory;
+import org.apache.tuscany.sca.interfacedef.java.introspect.DefaultJavaInterfaceIntrospectorExtensionPoint;
+import org.apache.tuscany.sca.interfacedef.java.introspect.ExtensibleJavaInterfaceIntrospector;
+import org.apache.tuscany.sca.interfacedef.java.introspect.JavaInterfaceIntrospector;
+import org.apache.tuscany.sca.interfacedef.java.introspect.JavaInterfaceIntrospectorExtensionPoint;
+import org.apache.tuscany.sca.interfacedef.java.xml.JavaInterfaceProcessor;
+import org.apache.tuscany.sca.policy.DefaultPolicyFactory;
+import org.apache.tuscany.sca.policy.PolicyFactory;
+import org.springframework.beans.factory.support.DefaultListableBeanFactory;
+
+/**
+ * A mini test runtime that uses the SCA assembly model variant implementation
+ * backed by Spring bean definitions.
+ * 
+ * @version $Rev$ $Date$
+ */
+public class SCADomainContext {
+
+    private DefaultListableBeanFactory beanFactory;
+    
+    public SCADomainContext(String... compositeFiles) {
+
+        // Create Spring bean factory
+        beanFactory = new DefaultListableBeanFactory();
+
+        // Create SCA assembly and SCA Java factories
+        AssemblyFactory assemblyFactory = new BeanAssemblyFactory(new DefaultAssemblyFactory(), beanFactory);
+        PolicyFactory policyFactory = new DefaultPolicyFactory();
+        InterfaceContractMapper interfaceContractMapper = new DefaultInterfaceContractMapper();
+        JavaInterfaceFactory javaFactory = new DefaultJavaInterfaceFactory();
+        JavaInterfaceIntrospectorExtensionPoint interfaceVisitors = new DefaultJavaInterfaceIntrospectorExtensionPoint();
+        JavaImplementationFactory javaImplementationFactory = new BeanJavaImplementationFactory(beanFactory);
+        JavaClassIntrospectorExtensionPoint classVisitors = new DefaultJavaClassIntrospectorExtensionPoint();
+        
+        JavaInterfaceIntrospector interfaceIntrospector = new ExtensibleJavaInterfaceIntrospector(javaFactory, interfaceVisitors);
+        
+        BaseJavaClassVisitor[] extensions = new BaseJavaClassVisitor[] {
+            new ConstructorProcessor(assemblyFactory),
+            new AllowsPassByReferenceProcessor(assemblyFactory),
+            new ContextProcessor(assemblyFactory),
+            new ConversationProcessor(assemblyFactory),
+            new DestroyProcessor(assemblyFactory),
+            new EagerInitProcessor(assemblyFactory),
+            new InitProcessor(assemblyFactory),
+            new PropertyProcessor(assemblyFactory),
+            new ReferenceProcessor(assemblyFactory, javaFactory, interfaceIntrospector),
+            new ResourceProcessor(assemblyFactory),
+            new ScopeProcessor(assemblyFactory),
+            new ServiceProcessor(assemblyFactory, javaFactory, interfaceIntrospector),
+            new HeuristicPojoProcessor(assemblyFactory, javaFactory, interfaceIntrospector),
+            new PolicyProcessor(assemblyFactory, policyFactory)
+        };
+        for (JavaClassVisitor e : extensions) {
+            classVisitors.addClassVisitor(e);
+        }
+        JavaClassIntrospector classIntrospector = new ExtensibleJavaClassIntrospector(classVisitors);
+
+        // Populate ArtifactProcessor registry
+        DefaultStAXArtifactProcessorExtensionPoint staxProcessors = new DefaultStAXArtifactProcessorExtensionPoint();
+        ExtensibleStAXArtifactProcessor staxProcessor = new ExtensibleStAXArtifactProcessor(staxProcessors, XMLInputFactory.newInstance(), XMLOutputFactory.newInstance());
+        CompositeProcessor compositeProcessor = new CompositeProcessor(assemblyFactory, policyFactory,
+                                                                       interfaceContractMapper, staxProcessor);
+        staxProcessors.addArtifactProcessor(compositeProcessor);
+        staxProcessors.addArtifactProcessor(new ComponentTypeProcessor(assemblyFactory, policyFactory, staxProcessor));
+        staxProcessors.addArtifactProcessor(new ConstrainingTypeProcessor(assemblyFactory, policyFactory, staxProcessor));
+        staxProcessors.addArtifactProcessor(new JavaInterfaceProcessor(javaFactory, interfaceIntrospector));
+        staxProcessors.addArtifactProcessor(new JavaImplementationProcessor(assemblyFactory, policyFactory, javaImplementationFactory, classIntrospector));
+        
+        // Create a resolver
+        ClassLoader classLoader = Thread.currentThread().getContextClassLoader();
+        DefaultModelResolver resolver = new DefaultModelResolver(classLoader);
+
+        try {
+            
+            // Read the composite files
+            List<Composite> composites = new ArrayList<Composite>();
+            for (String compositeFile: compositeFiles) {
+                InputStream is = classLoader.getResourceAsStream(compositeFile);
+                Composite composite = staxProcessor.read(is, Composite.class);
+                resolver.addModel(composite);
+                composites.add(composite);
+            }
+            
+            for (Composite composite: composites) {
+                
+                // Resolve the composite
+                compositeProcessor.resolve(composite, resolver);
+            }
+            
+            // Wire the top level component's composite
+            buildComposite(composites.get(0), assemblyFactory, interfaceContractMapper);
+            
+        } catch (ContributionException e) {
+            throw new RuntimeException(e);
+        } catch (CompositeBuilderException e) {
+            throw new RuntimeException(e);
+        }
+    }
+    
+    private void buildComposite(Composite composite, AssemblyFactory assemblyFactory, InterfaceContractMapper interfaceContractMapper) throws CompositeBuilderException {
+
+        CompositeBuilderMonitor monitor = new CompositeBuilderMonitor() {
+
+            public void problem(Problem problem) {
+                // Uncommenting the following two lines can be useful to detect
+                // and troubleshoot SCA assembly XML composite configuration
+                // problems.
+
+                System.out.println("Composite assembly problem: " + problem.getMessage());
+            }
+        };
+
+        // Configure and wire the composite
+        DefaultCompositeBuilder compositeUtil = new DefaultCompositeBuilder(assemblyFactory, interfaceContractMapper, monitor);
+        compositeUtil.build(composite);
+
+    }
+
+    public <B> B getService(Class<B> businessInterface, String serviceName) {
+        Object bean = beanFactory.getBean(serviceName);
+        return businessInterface.cast(bean);
+    }
+
+}

Propchange: incubator/tuscany/java/sca/modules/core-spring/src/main/java/org/apache/tuscany/sca/core/spring/context/SCADomainContext.java
------------------------------------------------------------------------------
    svn:eol-style = native

Propchange: incubator/tuscany/java/sca/modules/core-spring/src/main/java/org/apache/tuscany/sca/core/spring/context/SCADomainContext.java
------------------------------------------------------------------------------
    svn:keywords = Rev Date

Modified: incubator/tuscany/java/sca/modules/core-spring/src/test/java/calculator/CalculatorClient.java
URL: http://svn.apache.org/viewvc/incubator/tuscany/java/sca/modules/core-spring/src/test/java/calculator/CalculatorClient.java?view=diff&rev=537623&r1=537622&r2=537623
==============================================================================
--- incubator/tuscany/java/sca/modules/core-spring/src/test/java/calculator/CalculatorClient.java (original)
+++ incubator/tuscany/java/sca/modules/core-spring/src/test/java/calculator/CalculatorClient.java Sun May 13 11:01:04 2007
@@ -18,7 +18,7 @@
  */
 package calculator;
 
-import org.apache.tuscany.sca.core.spring.context.ComponentContext;
+import org.apache.tuscany.sca.core.spring.context.SCADomainContext;
 
 /**
  * This client program shows how to create an SCA runtime, start it, locate the
@@ -27,7 +27,7 @@
 public class CalculatorClient {
     public static void main(String[] args) throws Exception {
 
-        ComponentContext context = new ComponentContext("org/apache/tuscany/core/spring/Calculator.composite");
+        SCADomainContext context = new SCADomainContext("org/apache/tuscany/core/spring/Calculator.composite");
 
         CalculatorService calculatorService = context.getService(CalculatorService.class, "CalculatorServiceComponent");
 

Modified: incubator/tuscany/java/sca/modules/core-spring/src/test/java/calculator/NestedCalculatorClient.java
URL: http://svn.apache.org/viewvc/incubator/tuscany/java/sca/modules/core-spring/src/test/java/calculator/NestedCalculatorClient.java?view=diff&rev=537623&r1=537622&r2=537623
==============================================================================
--- incubator/tuscany/java/sca/modules/core-spring/src/test/java/calculator/NestedCalculatorClient.java (original)
+++ incubator/tuscany/java/sca/modules/core-spring/src/test/java/calculator/NestedCalculatorClient.java Sun May 13 11:01:04 2007
@@ -18,7 +18,7 @@
  */
 package calculator;
 
-import org.apache.tuscany.sca.core.spring.context.ComponentContext;
+import org.apache.tuscany.sca.core.spring.context.SCADomainContext;
 
 /**
  * This client program shows how to create an SCA runtime, start it, locate the
@@ -27,7 +27,7 @@
 public class NestedCalculatorClient {
     public static void main(String[] args) throws Exception {
 
-        ComponentContext context = new ComponentContext(
+        SCADomainContext context = new SCADomainContext(
                                             "org/apache/tuscany/core/spring/OuterCalculator.composite",
                                             "org/apache/tuscany/core/spring/InnerCalculator.composite",
                                             "org/apache/tuscany/core/spring/InnerOperations.composite");

Modified: incubator/tuscany/java/sca/modules/core-spring/src/test/java/org/apache/tuscany/sca/core/spring/CalculatorTestCase.java
URL: http://svn.apache.org/viewvc/incubator/tuscany/java/sca/modules/core-spring/src/test/java/org/apache/tuscany/sca/core/spring/CalculatorTestCase.java?view=diff&rev=537623&r1=537622&r2=537623
==============================================================================
--- incubator/tuscany/java/sca/modules/core-spring/src/test/java/org/apache/tuscany/sca/core/spring/CalculatorTestCase.java (original)
+++ incubator/tuscany/java/sca/modules/core-spring/src/test/java/org/apache/tuscany/sca/core/spring/CalculatorTestCase.java Sun May 13 11:01:04 2007
@@ -18,7 +18,7 @@
  */
 package org.apache.tuscany.sca.core.spring;
 
-import org.apache.tuscany.sca.core.spring.context.ComponentContext;
+import org.apache.tuscany.sca.core.spring.context.SCADomainContext;
 
 import junit.framework.TestCase;
 import calculator.CalculatorService;
@@ -28,11 +28,11 @@
  */
 public class CalculatorTestCase extends TestCase {
 
-    private ComponentContext context;
+    private SCADomainContext context;
     private CalculatorService calculatorService;
 
     protected void setUp() throws Exception {
-        context = new ComponentContext("org/apache/tuscany/core/spring/Calculator.composite");
+        context = new SCADomainContext("org/apache/tuscany/sca/core/spring/Calculator.composite");
 
         calculatorService = context.getService(CalculatorService.class, "CalculatorServiceComponent");
     }

Modified: incubator/tuscany/java/sca/modules/core-spring/src/test/java/org/apache/tuscany/sca/core/spring/NestedCalculatorTestCase.java
URL: http://svn.apache.org/viewvc/incubator/tuscany/java/sca/modules/core-spring/src/test/java/org/apache/tuscany/sca/core/spring/NestedCalculatorTestCase.java?view=diff&rev=537623&r1=537622&r2=537623
==============================================================================
--- incubator/tuscany/java/sca/modules/core-spring/src/test/java/org/apache/tuscany/sca/core/spring/NestedCalculatorTestCase.java (original)
+++ incubator/tuscany/java/sca/modules/core-spring/src/test/java/org/apache/tuscany/sca/core/spring/NestedCalculatorTestCase.java Sun May 13 11:01:04 2007
@@ -18,7 +18,7 @@
  */
 package org.apache.tuscany.sca.core.spring;
 
-import org.apache.tuscany.sca.core.spring.context.ComponentContext;
+import org.apache.tuscany.sca.core.spring.context.SCADomainContext;
 
 import junit.framework.TestCase;
 import calculator.CalculatorService;
@@ -28,14 +28,14 @@
  */
 public class NestedCalculatorTestCase extends TestCase {
 
-    private ComponentContext context;
+    private SCADomainContext context;
     private CalculatorService calculatorService;
 
     protected void setUp() throws Exception {
-        context = new ComponentContext(
-                          "org/apache/tuscany/core/spring/OuterCalculator.composite",
-                          "org/apache/tuscany/core/spring/InnerCalculator.composite",
-                          "org/apache/tuscany/core/spring/InnerOperations.composite");
+        context = new SCADomainContext(
+                          "org/apache/tuscany/sca/core/spring/OuterCalculator.composite",
+                          "org/apache/tuscany/sca/core/spring/InnerCalculator.composite",
+                          "org/apache/tuscany/sca/core/spring/InnerOperations.composite");
 
         calculatorService = context.getService(CalculatorService.class, "CalculatorServiceComponent/InnerCalculatorServiceComponent");
     }



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