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 2006/09/06 03:16:55 UTC

svn commit: r440553 - in /incubator/tuscany/java/sca/kernel: core/src/main/java/org/apache/tuscany/core/builder/ core/src/main/java/org/apache/tuscany/core/component/scope/ core/src/main/java/org/apache/tuscany/core/implementation/processor/ core/src/m...

Author: jmarino
Date: Tue Sep  5 18:16:55 2006
New Revision: 440553

URL: http://svn.apache.org/viewvc?view=rev&rev=440553
Log:
make scope containers completely pluggable by interning string representations

Added:
    incubator/tuscany/java/sca/kernel/spi/src/test/java/org/apache/tuscany/spi/model/ScopeTestCase.java   (with props)
Modified:
    incubator/tuscany/java/sca/kernel/core/src/main/java/org/apache/tuscany/core/builder/ConnectorImpl.java
    incubator/tuscany/java/sca/kernel/core/src/main/java/org/apache/tuscany/core/component/scope/ScopeRegistryImpl.java
    incubator/tuscany/java/sca/kernel/core/src/main/java/org/apache/tuscany/core/implementation/processor/ScopeProcessor.java
    incubator/tuscany/java/sca/kernel/core/src/main/java/org/apache/tuscany/core/implementation/system/builder/SystemBindingBuilder.java
    incubator/tuscany/java/sca/kernel/spi/src/main/java/org/apache/tuscany/spi/model/Operation.java
    incubator/tuscany/java/sca/kernel/spi/src/main/java/org/apache/tuscany/spi/model/Scope.java

Modified: incubator/tuscany/java/sca/kernel/core/src/main/java/org/apache/tuscany/core/builder/ConnectorImpl.java
URL: http://svn.apache.org/viewvc/incubator/tuscany/java/sca/kernel/core/src/main/java/org/apache/tuscany/core/builder/ConnectorImpl.java?view=diff&rev=440553&r1=440552&r2=440553
==============================================================================
--- incubator/tuscany/java/sca/kernel/core/src/main/java/org/apache/tuscany/core/builder/ConnectorImpl.java (original)
+++ incubator/tuscany/java/sca/kernel/core/src/main/java/org/apache/tuscany/core/builder/ConnectorImpl.java Tue Sep  5 18:16:55 2006
@@ -131,7 +131,7 @@
     public <T> void connect(InboundWire<T> sourceWire,
                             OutboundWire<T> targetWire,
                             boolean optimizable) throws BuilderConfigException {
-        if (postProcessorRegistry != null){
+        if (postProcessorRegistry != null) {
             // run wire post-processors
             postProcessorRegistry.process(sourceWire, targetWire);
         }
@@ -158,7 +158,7 @@
                             OutboundWire<T> sourceWire,
                             InboundWire<T> targetWire,
                             boolean optimizable) {
-        if (postProcessorRegistry != null){
+        if (postProcessorRegistry != null) {
             // run wire post-processors
             postProcessorRegistry.process(sourceWire, targetWire);
         }

Modified: incubator/tuscany/java/sca/kernel/core/src/main/java/org/apache/tuscany/core/component/scope/ScopeRegistryImpl.java
URL: http://svn.apache.org/viewvc/incubator/tuscany/java/sca/kernel/core/src/main/java/org/apache/tuscany/core/component/scope/ScopeRegistryImpl.java?view=diff&rev=440553&r1=440552&r2=440553
==============================================================================
--- incubator/tuscany/java/sca/kernel/core/src/main/java/org/apache/tuscany/core/component/scope/ScopeRegistryImpl.java (original)
+++ incubator/tuscany/java/sca/kernel/core/src/main/java/org/apache/tuscany/core/component/scope/ScopeRegistryImpl.java Tue Sep  5 18:16:55 2006
@@ -63,20 +63,8 @@
             ObjectFactory<? extends ScopeContainer> factory = factoryCache.get(scope);
             if (factory == null) {
                 ScopeNotFoundException e = new ScopeNotFoundException("Scope object factory not registered for scope");
-                switch (scope) {
-                    case SESSION:
-                        e.setIdentifier("SESSION");
-                        break;
-                    case REQUEST:
-                        e.setIdentifier("REQUEST");
-                        break;
-                    case STATELESS:
-                        e.setIdentifier("STATELESS");
-                        break;
-                    default:
-                        e.setIdentifier("UNKNOWN");
-                        break;
-                }
+                e.setIdentifier(scope.getScope());
+                
                 throw e;
             }
             container = factory.getInstance();

Modified: incubator/tuscany/java/sca/kernel/core/src/main/java/org/apache/tuscany/core/implementation/processor/ScopeProcessor.java
URL: http://svn.apache.org/viewvc/incubator/tuscany/java/sca/kernel/core/src/main/java/org/apache/tuscany/core/implementation/processor/ScopeProcessor.java?view=diff&rev=440553&r1=440552&r2=440553
==============================================================================
--- incubator/tuscany/java/sca/kernel/core/src/main/java/org/apache/tuscany/core/implementation/processor/ScopeProcessor.java (original)
+++ incubator/tuscany/java/sca/kernel/core/src/main/java/org/apache/tuscany/core/implementation/processor/ScopeProcessor.java Tue Sep  5 18:16:55 2006
@@ -18,17 +18,18 @@
  */
 package org.apache.tuscany.core.implementation.processor;
 
+import org.apache.tuscany.spi.component.CompositeComponent;
+import org.apache.tuscany.spi.deployer.DeploymentContext;
 import org.apache.tuscany.spi.implementation.java.ImplementationProcessorExtension;
 import org.apache.tuscany.spi.implementation.java.JavaMappedProperty;
 import org.apache.tuscany.spi.implementation.java.JavaMappedReference;
 import org.apache.tuscany.spi.implementation.java.JavaMappedService;
 import org.apache.tuscany.spi.implementation.java.PojoComponentType;
 import org.apache.tuscany.spi.implementation.java.ProcessingException;
-import org.apache.tuscany.core.implementation.system.component.SystemCompositeComponent;
-import org.apache.tuscany.spi.component.CompositeComponent;
-import org.apache.tuscany.spi.deployer.DeploymentContext;
 import org.apache.tuscany.spi.model.Scope;
 
+import org.apache.tuscany.core.implementation.system.component.SystemCompositeComponent;
+
 /**
  * Processes the {@link Scope} annotation and updates the component type with the corresponding implmentation scope
  *
@@ -51,7 +52,6 @@
             return;
         }
         //FIXME deal with eager init
-        //FIXME needs to be extensible
         String name = annotation.value();
         Scope scope;
         if ("MODULE".equals(name)) {
@@ -63,7 +63,7 @@
         } else if ("COMPOSITE".equals(name)) {
             scope = Scope.COMPOSITE;
         } else {
-            scope = Scope.STATELESS;
+            scope = new Scope(name);
         }
         type.setImplementationScope(scope);
     }

Modified: incubator/tuscany/java/sca/kernel/core/src/main/java/org/apache/tuscany/core/implementation/system/builder/SystemBindingBuilder.java
URL: http://svn.apache.org/viewvc/incubator/tuscany/java/sca/kernel/core/src/main/java/org/apache/tuscany/core/implementation/system/builder/SystemBindingBuilder.java?view=diff&rev=440553&r1=440552&r2=440553
==============================================================================
--- incubator/tuscany/java/sca/kernel/core/src/main/java/org/apache/tuscany/core/implementation/system/builder/SystemBindingBuilder.java (original)
+++ incubator/tuscany/java/sca/kernel/core/src/main/java/org/apache/tuscany/core/implementation/system/builder/SystemBindingBuilder.java Tue Sep  5 18:16:55 2006
@@ -23,8 +23,6 @@
 import org.apache.tuscany.spi.builder.BuilderConfigException;
 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.Service;
 import org.apache.tuscany.spi.deployer.DeploymentContext;
 import org.apache.tuscany.spi.model.BoundReferenceDefinition;
 import org.apache.tuscany.spi.model.BoundServiceDefinition;
@@ -43,13 +41,14 @@
 import org.apache.tuscany.core.implementation.system.wire.SystemOutboundWireImpl;
 
 /**
- * Creates {@link SystemService}s and {@link SystemReference}s by evaluating an assembly definition
+ * Creates {@link SystemService}s and {@link org.apache.tuscany.core.implementation.system.component.SystemReference}s
+ * by evaluating an assembly definition
  *
  * @version $$Rev$$ $$Date$$
  */
 public class SystemBindingBuilder implements BindingBuilder<SystemBinding> {
 
-    public Service<?> build(CompositeComponent parent,
+    public SystemService build(CompositeComponent parent,
                                BoundServiceDefinition<SystemBinding> boundServiceDefinition,
                                DeploymentContext deploymentContext) {
         Class interfaze = boundServiceDefinition.getServiceContract().getInterfaceClass();
@@ -68,7 +67,7 @@
         return service;
     }
 
-    public Reference<?> build(CompositeComponent parent,
+    public SystemReference build(CompositeComponent parent,
                                  BoundReferenceDefinition<SystemBinding> boundReferenceDefinition,
                                  DeploymentContext deploymentContext) {
         assert parent.getParent() instanceof AutowireComponent
@@ -79,7 +78,7 @@
         SystemInboundWire<?> inboundWire = new SystemInboundWireImpl(boundReferenceDefinition.getName(), interfaze);
         String refName = boundReferenceDefinition.getName();
         OutboundWire outboundWire = new SystemOutboundAutowire(refName, interfaze,
-                autowireComponent, boundReferenceDefinition.isRequired());
+            autowireComponent, boundReferenceDefinition.isRequired());
         reference.setInboundWire(inboundWire);
         reference.setOutboundWire(outboundWire);
         return reference;

Modified: incubator/tuscany/java/sca/kernel/spi/src/main/java/org/apache/tuscany/spi/model/Operation.java
URL: http://svn.apache.org/viewvc/incubator/tuscany/java/sca/kernel/spi/src/main/java/org/apache/tuscany/spi/model/Operation.java?view=diff&rev=440553&r1=440552&r2=440553
==============================================================================
--- incubator/tuscany/java/sca/kernel/spi/src/main/java/org/apache/tuscany/spi/model/Operation.java (original)
+++ incubator/tuscany/java/sca/kernel/spi/src/main/java/org/apache/tuscany/spi/model/Operation.java Tue Sep  5 18:16:55 2006
@@ -30,6 +30,7 @@
  * @version $Rev$ $Date$
  */
 public class Operation<T> {
+    protected Map<String, Object> metaData;
     private final String name;
     private final DataType<T> returnType;
     private final List<DataType<T>> parameterTypes;
@@ -38,7 +39,6 @@
     private ServiceContract<?> contract;
     private boolean callback;
     private String dataBinding;
-    protected Map<String, Object> metaData;
 
     /**
      * Construct an operation specifying all characteristics.
@@ -185,6 +185,7 @@
 
     /**
      * Adds metadata associated with the operation.
+     *
      * @param key the metadata key
      * @param val the metadata value
      */

Modified: incubator/tuscany/java/sca/kernel/spi/src/main/java/org/apache/tuscany/spi/model/Scope.java
URL: http://svn.apache.org/viewvc/incubator/tuscany/java/sca/kernel/spi/src/main/java/org/apache/tuscany/spi/model/Scope.java?view=diff&rev=440553&r1=440552&r2=440553
==============================================================================
--- incubator/tuscany/java/sca/kernel/spi/src/main/java/org/apache/tuscany/spi/model/Scope.java (original)
+++ incubator/tuscany/java/sca/kernel/spi/src/main/java/org/apache/tuscany/spi/model/Scope.java Tue Sep  5 18:16:55 2006
@@ -21,12 +21,37 @@
 /**
  * The default implementation scopes supported by assemblies.
  */
-public enum Scope {
-    STATELESS,
-    REQUEST,
-    SESSION,
-    MODULE,
-    COMPOSITE,
-    UNDEFINED
+public class Scope {
+    public static final Scope STATELESS = new Scope("STATELESS");
+    public static final Scope REQUEST = new Scope("REQUEST");
+    public static final Scope SESSION = new Scope("SESSION");
+    public static final Scope MODULE = new Scope("MODULE");
+    public static final Scope COMPOSITE = new Scope("COMPOSITE");
+    public static final Scope UNDEFINED = new Scope("UNDEFINED");
+
+    private String scope;
+
+    public Scope(String scope) {
+        this.scope = scope.toUpperCase().intern();
+    }
+
+    public String getScope() {
+        return scope;
+    }
+
+    public boolean equals(Object o) {
+        if (this == o) {
+            return true;
+        }
+        if (o == null || getClass() != o.getClass()) {
+            return false;
+        }
+        final Scope scope1 = (Scope) o;
+        return !(scope != null ? scope != scope1.scope.intern() : scope1.scope != null);
+    }
+
+    public int hashCode() {
+        return scope != null ? scope.hashCode() : 0;
+    }
 
 }

Added: incubator/tuscany/java/sca/kernel/spi/src/test/java/org/apache/tuscany/spi/model/ScopeTestCase.java
URL: http://svn.apache.org/viewvc/incubator/tuscany/java/sca/kernel/spi/src/test/java/org/apache/tuscany/spi/model/ScopeTestCase.java?view=auto&rev=440553
==============================================================================
--- incubator/tuscany/java/sca/kernel/spi/src/test/java/org/apache/tuscany/spi/model/ScopeTestCase.java (added)
+++ incubator/tuscany/java/sca/kernel/spi/src/test/java/org/apache/tuscany/spi/model/ScopeTestCase.java Tue Sep  5 18:16:55 2006
@@ -0,0 +1,59 @@
+/*
+ * 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;
+
+import junit.framework.TestCase;
+
+/**
+ * @version $Rev$ $Date$
+ */
+public class ScopeTestCase extends TestCase {
+
+    public void testEquals() throws Exception {
+        Scope module = new Scope("module");
+        assertTrue(module.equals(Scope.MODULE));
+    }
+
+    public void testEqualsNew() throws Exception {
+        Scope foo = new Scope("foo");
+        Scope foo2 = new Scope("FOO");
+        assertTrue(foo.equals(foo2));
+    }
+
+    public void testNotEquals() throws Exception {
+        Scope foo = new Scope("BAR");
+        Scope foo2 = new Scope("FOO");
+        assertFalse(foo.equals(foo2));
+    }
+
+    public void testNotEqualsDifferent() throws Exception {
+        Scope foo = new Scope("FOO");
+        assertFalse(foo.equals(new Bar("FOO")));
+    }
+
+    public class Bar {
+        private String scope;
+
+        public Bar(String scope) {
+            this.scope = scope;
+        }
+    }
+
+
+}

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

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



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