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