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

svn commit: r514490 - in /incubator/tuscany/java/sca/kernel/core/src: main/java/org/apache/tuscany/core/implementation/java/ main/java/org/apache/tuscany/core/marshaller/extensions/java/ main/java/org/apache/tuscany/core/model/physical/java/ test/resou...

Author: meerajk
Date: Sun Mar  4 14:51:52 2007
New Revision: 514490

URL: http://svn.apache.org/viewvc?view=rev&rev=514490
Log:
Added JavaComponent and the associated builder.

Added:
    incubator/tuscany/java/sca/kernel/core/src/main/java/org/apache/tuscany/core/implementation/java/JavaComponent.java   (with props)
Modified:
    incubator/tuscany/java/sca/kernel/core/src/main/java/org/apache/tuscany/core/implementation/java/JavaPhysicalComponentBuilder.java
    incubator/tuscany/java/sca/kernel/core/src/main/java/org/apache/tuscany/core/marshaller/extensions/java/JavaPhysicalComponentDefinitionMarshaller.java
    incubator/tuscany/java/sca/kernel/core/src/main/java/org/apache/tuscany/core/model/physical/java/JavaPhysicalComponentDefinition.java
    incubator/tuscany/java/sca/kernel/core/src/test/resources/marshall/javaChangeSet.xml

Added: incubator/tuscany/java/sca/kernel/core/src/main/java/org/apache/tuscany/core/implementation/java/JavaComponent.java
URL: http://svn.apache.org/viewvc/incubator/tuscany/java/sca/kernel/core/src/main/java/org/apache/tuscany/core/implementation/java/JavaComponent.java?view=auto&rev=514490
==============================================================================
--- incubator/tuscany/java/sca/kernel/core/src/main/java/org/apache/tuscany/core/implementation/java/JavaComponent.java (added)
+++ incubator/tuscany/java/sca/kernel/core/src/main/java/org/apache/tuscany/core/implementation/java/JavaComponent.java Sun Mar  4 14:51:52 2007
@@ -0,0 +1,163 @@
+/*
+ * 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.implementation.java;
+
+import java.net.URI;
+import java.util.List;
+import java.util.Map;
+
+import org.apache.tuscany.core.component.InstanceFactory;
+import org.apache.tuscany.spi.CoreRuntimeException;
+import org.apache.tuscany.spi.component.Component;
+import org.apache.tuscany.spi.component.Reference;
+import org.apache.tuscany.spi.component.RegistrationException;
+import org.apache.tuscany.spi.component.ScopeContainer;
+import org.apache.tuscany.spi.component.Service;
+import org.apache.tuscany.spi.component.TargetInvokerCreationException;
+import org.apache.tuscany.spi.event.Event;
+import org.apache.tuscany.spi.event.EventFilter;
+import org.apache.tuscany.spi.event.RuntimeEventListener;
+import org.apache.tuscany.spi.model.Operation;
+import org.apache.tuscany.spi.model.PropertyValue;
+import org.apache.tuscany.spi.model.Scope;
+import org.apache.tuscany.spi.wire.TargetInvoker;
+import org.apache.tuscany.spi.wire.Wire;
+import org.osoa.sca.ComponentContext;
+
+/**
+ * 
+ * @version $Revision$ $Date$
+ *
+ */
+public class JavaComponent implements Component {
+    
+    // Instance factory class
+    private Class<InstanceFactory<?>> instanceFactoryClass;
+    
+    // Scope container
+    private ScopeContainer scopeContainer;
+
+    /**
+     * Injects the instance factory class.
+     * @param instanceFactoryClass Instance factory class.
+     */
+    public void setInstanceFactoryClass(Class<InstanceFactory<?>> instanceFactoryClass) {
+        this.instanceFactoryClass = instanceFactoryClass;
+    }
+
+    /**
+     * Injects the scope container.
+     * @param scopeContainer Scope container.
+     */
+    public void setScopeContainer(ScopeContainer scopeContainer) {
+        throw new UnsupportedOperationException();
+    }
+    
+    
+
+    public void attachCallbackWire(Wire wire) {
+        throw new UnsupportedOperationException();
+    }
+
+    public void attachWire(Wire wire) {
+        throw new UnsupportedOperationException();
+    }
+
+    public void attachWires(List<Wire> wires) {
+        throw new UnsupportedOperationException();
+    }
+
+    public ComponentContext getComponentContext() {
+        throw new UnsupportedOperationException();
+    }
+
+    public Map<String, PropertyValue<?>> getDefaultPropertyValues() {
+        throw new UnsupportedOperationException();
+    }
+
+    public Reference getReference(String name) {
+        throw new UnsupportedOperationException();
+    }
+
+    public Scope getScope() {
+        throw new UnsupportedOperationException();
+    }
+
+    public Service getService(String name) {
+        throw new UnsupportedOperationException();
+    }
+
+    public List<Wire> getWires(String name) {
+        throw new UnsupportedOperationException();
+    }
+
+    public boolean isOptimizable() {
+        throw new UnsupportedOperationException();
+    }
+
+    public void register(Service service) throws RegistrationException {
+        throw new UnsupportedOperationException();
+    }
+
+    public void register(Reference reference) throws RegistrationException {
+        throw new UnsupportedOperationException();
+    }
+
+    public void setDefaultPropertyValues(Map<String, PropertyValue<?>> defaultPropertyValues) {
+        throw new UnsupportedOperationException();
+    }
+
+    public TargetInvoker createTargetInvoker(String targetName, Operation operation)
+        throws TargetInvokerCreationException {
+        throw new UnsupportedOperationException();
+    }
+
+    public URI getUri() {
+        throw new UnsupportedOperationException();
+    }
+
+    public void addListener(RuntimeEventListener listener) {
+        throw new UnsupportedOperationException();
+    }
+
+    public void addListener(EventFilter filter, RuntimeEventListener listener) {
+        throw new UnsupportedOperationException();
+    }
+
+    public void publish(Event object) {
+        throw new UnsupportedOperationException();
+    }
+
+    public void removeListener(RuntimeEventListener listener) {
+        throw new UnsupportedOperationException();
+    }
+
+    public int getLifecycleState() {
+        throw new UnsupportedOperationException();
+    }
+
+    public void start() throws CoreRuntimeException {
+        throw new UnsupportedOperationException();
+    }
+
+    public void stop() throws CoreRuntimeException {
+        throw new UnsupportedOperationException();
+    }
+
+}

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

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

Modified: incubator/tuscany/java/sca/kernel/core/src/main/java/org/apache/tuscany/core/implementation/java/JavaPhysicalComponentBuilder.java
URL: http://svn.apache.org/viewvc/incubator/tuscany/java/sca/kernel/core/src/main/java/org/apache/tuscany/core/implementation/java/JavaPhysicalComponentBuilder.java?view=diff&rev=514490&r1=514489&r2=514490
==============================================================================
--- incubator/tuscany/java/sca/kernel/core/src/main/java/org/apache/tuscany/core/implementation/java/JavaPhysicalComponentBuilder.java (original)
+++ incubator/tuscany/java/sca/kernel/core/src/main/java/org/apache/tuscany/core/implementation/java/JavaPhysicalComponentBuilder.java Sun Mar  4 14:51:52 2007
@@ -18,9 +18,17 @@
  */
 package org.apache.tuscany.core.implementation.java;
 
+import java.net.URI;
+
+import org.apache.tuscany.core.component.InstanceFactory;
 import org.apache.tuscany.core.model.physical.java.JavaPhysicalComponentDefinition;
 import org.apache.tuscany.spi.builder.BuilderException;
 import org.apache.tuscany.spi.builder.physical.PhysicalComponentBuilder;
+import org.apache.tuscany.spi.component.ScopeContainer;
+import org.apache.tuscany.spi.component.ScopeRegistry;
+import org.apache.tuscany.spi.model.Scope;
+import org.apache.tuscany.spi.services.classloading.ClassLoaderRegistry;
+import org.osoa.sca.annotations.Reference;
 
 /**
  * Java physical component builder.
@@ -29,7 +37,13 @@
  *
  */
 public class JavaPhysicalComponentBuilder implements
-    PhysicalComponentBuilder<JavaPhysicalComponentDefinition, JavaAtomicComponent> {
+    PhysicalComponentBuilder<JavaPhysicalComponentDefinition, JavaComponent> {
+    
+    // Classloader registry
+    private ClassLoaderRegistry classLoaderRegistry;
+    
+    // SCope registry
+    private ScopeRegistry scopeRegistry;
 
     /**
      * Builds a component from its physical component definition.
@@ -39,12 +53,42 @@
      * @return A component instance that is ready to go live.
      * @throws BuilderException If unable to build the component.
      */
-    public JavaAtomicComponent build(JavaPhysicalComponentDefinition componentDefinition) throws BuilderException {
+    public JavaComponent build(JavaPhysicalComponentDefinition componentDefinition) throws BuilderException {
+        
+        JavaComponent component = new JavaComponent();
         
-        JavaAtomicComponent component = new JavaAtomicComponent(null);
+        Scope scope = componentDefinition.getScope();
+        URI classLoaderId = componentDefinition.getClassLoaderId();
+        ScopeContainer scopeContainer = scopeRegistry.getScopeContainer(scope);
+        component.setScopeContainer(scopeContainer);
+
+        // TODO use MPCL to load IF class
         byte[] instanceFactoryByteCode = componentDefinition.getInstanceFactoryByteCode();
-        // TODO Add the instance factory byte code to the component
+        ClassLoader appCl = classLoaderRegistry.getClassLoader(classLoaderId);
+        ClassLoader systemCl = getClass().getClassLoader();        
+        ClassLoader mpcl = null;
+        Class<InstanceFactory<?>> instanceFactoryClass = null;        
+        component.setInstanceFactoryClass(instanceFactoryClass);
+        
         return component;
+    }
+
+    /**
+     * Injects classloader registry.
+     * @param classLoaderRegistry Class loader registry.
+     */
+    @Reference
+    public void setClassLoaderRegistry(ClassLoaderRegistry classLoaderRegistry) {
+        this.classLoaderRegistry = classLoaderRegistry;
+    }
+
+    /**
+     * Injects scope registry.
+     * @param scopeRegistry Scope registry.
+     */
+    @Reference
+    public void setScopeRegistry(ScopeRegistry scopeRegistry) {
+        this.scopeRegistry = scopeRegistry;
     }
 
 }

Modified: incubator/tuscany/java/sca/kernel/core/src/main/java/org/apache/tuscany/core/marshaller/extensions/java/JavaPhysicalComponentDefinitionMarshaller.java
URL: http://svn.apache.org/viewvc/incubator/tuscany/java/sca/kernel/core/src/main/java/org/apache/tuscany/core/marshaller/extensions/java/JavaPhysicalComponentDefinitionMarshaller.java?view=diff&rev=514490&r1=514489&r2=514490
==============================================================================
--- incubator/tuscany/java/sca/kernel/core/src/main/java/org/apache/tuscany/core/marshaller/extensions/java/JavaPhysicalComponentDefinitionMarshaller.java (original)
+++ incubator/tuscany/java/sca/kernel/core/src/main/java/org/apache/tuscany/core/marshaller/extensions/java/JavaPhysicalComponentDefinitionMarshaller.java Sun Mar  4 14:51:52 2007
@@ -18,6 +18,9 @@
  */
 package org.apache.tuscany.core.marshaller.extensions.java;
 
+import java.net.URI;
+import java.net.URISyntaxException;
+
 import javax.xml.namespace.QName;
 import javax.xml.stream.XMLStreamException;
 import javax.xml.stream.XMLStreamReader;
@@ -29,6 +32,7 @@
 import org.apache.tuscany.core.model.physical.java.JavaPhysicalReferenceDefinition;
 import org.apache.tuscany.core.model.physical.java.JavaPhysicalServiceDefinition;
 import org.apache.tuscany.spi.marshaller.MarshallException;
+import org.apache.tuscany.spi.model.Scope;
 
 /**
  * Marshaller for Java physical component definitions.
@@ -42,6 +46,12 @@
     // Instance factory
     private static final String INSTANCE_FACTORY = "instanceFactory";
 
+    // Scope
+    private static final String SCOPE = "scope";
+
+    // Classloader id
+    private static final String CLASSLOADER_ID = "classLoaderId";
+    
     // QName for the root element
     private static final QName QNAME =
         new QName("http://tuscany.apache.org/xmlns/marshaller/java/1.0-SNAPSHOT", "component");
@@ -91,13 +101,19 @@
 
         try {
             String name = reader.getName().getLocalPart();
+            reader.next();
             if (INSTANCE_FACTORY.equals(name)) {
-                reader.next();
                 byte[] base64ByteCode = reader.getText().getBytes();
                 byte[] byteCode = Base64.decodeBase64(base64ByteCode);
                 componentDefinition.setInstanceFactoryByteCode(byteCode);
+            } else if(SCOPE.equals(name)) {
+                componentDefinition.setScope(new Scope(reader.getText()));
+            } else if(CLASSLOADER_ID.equals(name)) {
+                componentDefinition.setClassLoaderId(new URI(reader.getText()));
             }
         } catch (XMLStreamException ex) {
+            throw new MarshallException(ex);
+        } catch (URISyntaxException ex) {
             throw new MarshallException(ex);
         }
         

Modified: incubator/tuscany/java/sca/kernel/core/src/main/java/org/apache/tuscany/core/model/physical/java/JavaPhysicalComponentDefinition.java
URL: http://svn.apache.org/viewvc/incubator/tuscany/java/sca/kernel/core/src/main/java/org/apache/tuscany/core/model/physical/java/JavaPhysicalComponentDefinition.java?view=diff&rev=514490&r1=514489&r2=514490
==============================================================================
--- incubator/tuscany/java/sca/kernel/core/src/main/java/org/apache/tuscany/core/model/physical/java/JavaPhysicalComponentDefinition.java (original)
+++ incubator/tuscany/java/sca/kernel/core/src/main/java/org/apache/tuscany/core/model/physical/java/JavaPhysicalComponentDefinition.java Sun Mar  4 14:51:52 2007
@@ -18,6 +18,9 @@
  */
 package org.apache.tuscany.core.model.physical.java;
 
+import java.net.URI;
+
+import org.apache.tuscany.spi.model.Scope;
 import org.apache.tuscany.spi.model.physical.PhysicalComponentDefinition;
 
 /**
@@ -29,6 +32,44 @@
 
     // The byte code for the instance factory
     private byte[] instanceFactoryByteCode;
+    
+    // Scope
+    private Scope scope;
+    
+    // Class loader id
+    private URI classLoaderId;
+
+    /**
+     * Gets the classloader id.
+     * @return Classloader id.
+     */
+    public URI getClassLoaderId() {
+        return classLoaderId;
+    }
+
+    /**
+     * Set the classloader id.
+     * @param classLoaderId Classloader id.
+     */
+    public void setClassLoaderId(URI classLoaderId) {
+        this.classLoaderId = classLoaderId;
+    }
+
+    /**
+     * Gets the scope for the component.
+     * @return The scope for the component.
+     */
+    public Scope getScope() {
+        return scope;
+    }
+
+    /**
+     * Sets the scope for the component.
+     * @param scope The scope for the component.
+     */
+    public void setScope(Scope scope) {
+        this.scope = scope;
+    }
 
     /**
      * Gets the byte code for the instance factory.
@@ -45,12 +86,7 @@
      * @param instanceFactoryByteCode Byte code for the instance factory.
      */
     public void setInstanceFactoryByteCode(byte[] instanceFactoryByteCode) {
-
-        if (instanceFactoryByteCode == null) {
-            throw new IllegalArgumentException("Instance factory byte code is null");
-        }
         this.instanceFactoryByteCode = instanceFactoryByteCode;
-
     }
 
 }

Modified: incubator/tuscany/java/sca/kernel/core/src/test/resources/marshall/javaChangeSet.xml
URL: http://svn.apache.org/viewvc/incubator/tuscany/java/sca/kernel/core/src/test/resources/marshall/javaChangeSet.xml?view=diff&rev=514490&r1=514489&r2=514490
==============================================================================
--- incubator/tuscany/java/sca/kernel/core/src/test/resources/marshall/javaChangeSet.xml (original)
+++ incubator/tuscany/java/sca/kernel/core/src/test/resources/marshall/javaChangeSet.xml Sun Mar  4 14:51:52 2007
@@ -9,6 +9,8 @@
 			<core:operation name="op1"/>
 		</java:service>
 		<java:instanceFactory>1234ASF</java:instanceFactory>
+		<java:scope>STATELESS</java:scope>
+		<java:classLoaderId>#123</java:classLoaderId>
 	</java:component>
 	
 	<!-- Component 2 -->
@@ -20,16 +22,18 @@
 			<core:operation name="op2"/>
 		</java:service>
 		<java:instanceFactory>1234ASF</java:instanceFactory>
+		<java:scope>STATELESS</java:scope>
+		<java:classLoaderId>#123</java:classLoaderId>
 	</java:component>
 	
 	<!-- Wire 1 -->
 	<core:wire sourceUri="cmp1#rf1" targetUri="cmp2#sv2">
-			<core:operation name="op2"/>
+		<core:operation name="op2"/>
 	</core:wire>
 	
 	<!-- Wire 2 -->
 	<core:wire sourceUri="cmp2#rf2" targetUri="cmp1#sv1">
-			<core:operation name="op1"/>
+		<core:operation name="op1"/>
 	</core:wire>
 	
 </core:changeSet>



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