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/05/15 00:28:13 UTC
svn commit: r406454 - in /incubator/tuscany/sandbox/jboynes/sca:
containers/container.java/src/main/java/org/apache/tuscany/container/java/builder/
containers/container.java/src/test/java/org/apache/tuscany/container/java/context/
containers/container....
Author: jmarino
Date: Sun May 14 15:28:12 2006
New Revision: 406454
URL: http://svn.apache.org/viewcvs?rev=406454&view=rev
Log:
more extension and builder refactors
Added:
incubator/tuscany/sandbox/jboynes/sca/core2/src/main/java/org/apache/tuscany/core/wire/system/
incubator/tuscany/sandbox/jboynes/sca/core2/src/main/java/org/apache/tuscany/core/wire/system/WireServiceImpl.java
incubator/tuscany/sandbox/jboynes/sca/core2/src/test/java/org/apache/tuscany/core/wire/jdk/JDKWireFactoryServiceTestCase.java
- copied, changed from r406389, incubator/tuscany/sandbox/jboynes/sca/core2/src/test/java/org/apache/tuscany/core/wire/jdk/JDKWireFactoryFactoryTestCase.java
incubator/tuscany/sandbox/jboynes/sca/spi/src/main/java/org/apache/tuscany/spi/extension/ComponentBuilderExtension.java
incubator/tuscany/sandbox/jboynes/sca/spi/src/main/java/org/apache/tuscany/spi/policy/
incubator/tuscany/sandbox/jboynes/sca/spi/src/main/java/org/apache/tuscany/spi/policy/PolicyBuilderRegistry.java
incubator/tuscany/sandbox/jboynes/sca/spi/src/main/java/org/apache/tuscany/spi/policy/SourcePolicyBuilder.java
incubator/tuscany/sandbox/jboynes/sca/spi/src/main/java/org/apache/tuscany/spi/policy/TargetPolicyBuilder.java
incubator/tuscany/sandbox/jboynes/sca/spi/src/main/java/org/apache/tuscany/spi/wire/WireService.java
Removed:
incubator/tuscany/sandbox/jboynes/sca/containers/container.java/src/test/java/org/apache/tuscany/container/java/scopes/
incubator/tuscany/sandbox/jboynes/sca/core2/src/test/java/org/apache/tuscany/core/wire/jdk/JDKWireFactoryFactoryTestCase.java
Modified:
incubator/tuscany/sandbox/jboynes/sca/containers/container.java/src/main/java/org/apache/tuscany/container/java/builder/JavaComponentBuilder.java
incubator/tuscany/sandbox/jboynes/sca/containers/container.java/src/test/java/org/apache/tuscany/container/java/context/MultiplicityTestCase.java
incubator/tuscany/sandbox/jboynes/sca/containers/container.java/src/test/java/org/apache/tuscany/container/java/integration/JavaBuilderContextIntegrationTestCase.java
incubator/tuscany/sandbox/jboynes/sca/core2/src/main/java/org/apache/tuscany/core/loader/ComponentLoader.java
incubator/tuscany/sandbox/jboynes/sca/core2/src/main/java/org/apache/tuscany/core/system/builder/SystemComponentBuilder.java
incubator/tuscany/sandbox/jboynes/sca/core2/src/main/java/org/apache/tuscany/core/wire/jdk/JDKWireFactoryService.java
incubator/tuscany/sandbox/jboynes/sca/model/src/main/java/org/apache/tuscany/model/Component.java
incubator/tuscany/sandbox/jboynes/sca/model/src/main/java/org/apache/tuscany/model/PropertyValue.java
incubator/tuscany/sandbox/jboynes/sca/model/src/main/java/org/apache/tuscany/model/ReferenceTarget.java
Modified: incubator/tuscany/sandbox/jboynes/sca/containers/container.java/src/main/java/org/apache/tuscany/container/java/builder/JavaComponentBuilder.java
URL: http://svn.apache.org/viewcvs/incubator/tuscany/sandbox/jboynes/sca/containers/container.java/src/main/java/org/apache/tuscany/container/java/builder/JavaComponentBuilder.java?rev=406454&r1=406453&r2=406454&view=diff
==============================================================================
--- incubator/tuscany/sandbox/jboynes/sca/containers/container.java/src/main/java/org/apache/tuscany/container/java/builder/JavaComponentBuilder.java (original)
+++ incubator/tuscany/sandbox/jboynes/sca/containers/container.java/src/main/java/org/apache/tuscany/container/java/builder/JavaComponentBuilder.java Sun May 14 15:28:12 2006
@@ -16,18 +16,18 @@
import org.apache.tuscany.model.JavaServiceContract;
import org.apache.tuscany.model.Service;
import org.apache.tuscany.spi.builder.BuilderConfigException;
-import org.apache.tuscany.spi.builder.ComponentBuilder;
import org.apache.tuscany.spi.context.CompositeContext;
-import org.apache.tuscany.spi.context.Context;
+import org.apache.tuscany.spi.extension.ComponentBuilderExtension;
import org.osoa.sca.annotations.Scope;
/**
* @version $$Rev$$ $$Date$$
*/
@Scope("MODULE")
-public class JavaComponentBuilder implements ComponentBuilder<JavaImplementation> {
+public class JavaComponentBuilder extends ComponentBuilderExtension<JavaImplementation> {
- public Context build(CompositeContext parent, Component<JavaImplementation> component) throws BuilderConfigException {
+ protected JavaAtomicContext createContext(CompositeContext parent, Component<JavaImplementation> component)
+ throws BuilderConfigException {
PojoComponentType componentType = component.getImplementation().getComponentType();
List<Class<?>> serviceInterfaces = new ArrayList<Class<?>>();
for (Service service : componentType.getServices().values()) {
@@ -35,8 +35,7 @@
}
Constructor<?> constr;
try {
- constr = JavaIntrospectionHelper.getDefaultConstructor(
- component.getImplementation().getImplementationClass());
+ constr = JavaIntrospectionHelper.getDefaultConstructor(component.getImplementation().getImplementationClass());
} catch (NoSuchMethodException e) {
BuilderConfigException bce = new BuilderConfigException("Error building component", e);
bce.setIdentifier(component.getName());
@@ -48,8 +47,7 @@
injectors.addAll(componentType.getInjectors());
for (Injector injector : injectors) {
if (injector instanceof ContextInjector) {
- // a context injector is found; iterate and determine if the parent context
- // implements the interface
+ //iterate and determine if the parent context implements the interface
Class contextType = JavaIntrospectionHelper.introspectGeneric(injector.getClass(), 0);
if (contextType.isAssignableFrom(parent.getClass())) {
((ContextInjector) injector).setContext(parent);
@@ -64,5 +62,6 @@
componentType.isEagerInit(), componentType.getInitInvoker(), componentType.getDestroyInvoker(),
injectors, componentType.getReferenceMembers());
}
+
}
Modified: incubator/tuscany/sandbox/jboynes/sca/containers/container.java/src/test/java/org/apache/tuscany/container/java/context/MultiplicityTestCase.java
URL: http://svn.apache.org/viewcvs/incubator/tuscany/sandbox/jboynes/sca/containers/container.java/src/test/java/org/apache/tuscany/container/java/context/MultiplicityTestCase.java?rev=406454&r1=406453&r2=406454&view=diff
==============================================================================
--- incubator/tuscany/sandbox/jboynes/sca/containers/container.java/src/test/java/org/apache/tuscany/container/java/context/MultiplicityTestCase.java (original)
+++ incubator/tuscany/sandbox/jboynes/sca/containers/container.java/src/test/java/org/apache/tuscany/container/java/context/MultiplicityTestCase.java Sun May 14 15:28:12 2006
@@ -45,7 +45,7 @@
// CompositeContextImpl context = new CompositeContextImpl();
// context.setName("system.context");
// List<ContextFactoryBuilder>builders = MockFactory.createSystemBuilders();
-// WireFactoryService wireService = new DefaultWireFactoryService(new MessageFactoryImpl(), new JDKWireFactoryService(), new DefaultPolicyBuilderRegistry());
+// WireService wireService = new DefaultWireFactoryService(new MessageFactoryImpl(), new JDKWireFactoryService(), new DefaultPolicyBuilderRegistry());
// builders.add(new JavaContextFactoryBuilder(wireService));
// List<WireBuilder> wireBuilders = new ArrayList<WireBuilder>();
// wireBuilders.add(new JavaTargetWireBuilder());
Modified: incubator/tuscany/sandbox/jboynes/sca/containers/container.java/src/test/java/org/apache/tuscany/container/java/integration/JavaBuilderContextIntegrationTestCase.java
URL: http://svn.apache.org/viewcvs/incubator/tuscany/sandbox/jboynes/sca/containers/container.java/src/test/java/org/apache/tuscany/container/java/integration/JavaBuilderContextIntegrationTestCase.java?rev=406454&r1=406453&r2=406454&view=diff
==============================================================================
--- incubator/tuscany/sandbox/jboynes/sca/containers/container.java/src/test/java/org/apache/tuscany/container/java/integration/JavaBuilderContextIntegrationTestCase.java (original)
+++ incubator/tuscany/sandbox/jboynes/sca/containers/container.java/src/test/java/org/apache/tuscany/container/java/integration/JavaBuilderContextIntegrationTestCase.java Sun May 14 15:28:12 2006
@@ -35,7 +35,7 @@
//import org.apache.tuscany.core.runtime.RuntimeContextImpl;
//import org.apache.tuscany.core.wire.jdk.JDKWireFactoryService;
//import org.apache.tuscany.core.wire.service.DefaultWireFactoryService;
-//import org.apache.tuscany.core.wire.service.WireFactoryService;
+//import org.apache.tuscany.core.wire.service.WireService;
/**
* Verifies that the composite context implementation and java component builders construct references properly
@@ -67,7 +67,7 @@
// MockInterceptorBuilder interceptorBuilder = new MockInterceptorBuilder(mockInterceptor, true);
// PolicyBuilderRegistry policyRegistry = new DefaultPolicyBuilderRegistry();
// policyRegistry.registerSourceBuilder(interceptorBuilder);
-// WireFactoryService wireFactory = new DefaultWireFactoryService(new MessageFactoryImpl(), new JDKWireFactoryService(), policyRegistry);
+// WireService wireFactory = new DefaultWireFactoryService(new MessageFactoryImpl(), new JDKWireFactoryService(), policyRegistry);
// JavaContextFactoryBuilder javaBuilder = new JavaContextFactoryBuilder(wireFactory);
//
// builderRegistry.register(javaBuilder);
@@ -98,7 +98,7 @@
// PolicyBuilderRegistry policyRegistry = new DefaultPolicyBuilderRegistry();
// policyRegistry.registerSourceBuilder(interceptorBuilder);
// policyRegistry.registerSourceBuilder(handlerBuilder);
-// WireFactoryService wireFactory = new DefaultWireFactoryService(new MessageFactoryImpl(), new JDKWireFactoryService(), policyRegistry);
+// WireService wireFactory = new DefaultWireFactoryService(new MessageFactoryImpl(), new JDKWireFactoryService(), policyRegistry);
// JavaContextFactoryBuilder javaBuilder = new JavaContextFactoryBuilder(wireFactory);
//
// builderRegistry.register(javaBuilder);
@@ -130,7 +130,7 @@
// PolicyBuilderRegistry policyRegistry = new DefaultPolicyBuilderRegistry();
// policyRegistry.registerSourceBuilder(interceptorBuilder);
// policyRegistry.registerSourceBuilder(handlerBuilder);
-// WireFactoryService wireFactory = new DefaultWireFactoryService(new MessageFactoryImpl(), new JDKWireFactoryService(), policyRegistry);
+// WireService wireFactory = new DefaultWireFactoryService(new MessageFactoryImpl(), new JDKWireFactoryService(), policyRegistry);
// JavaContextFactoryBuilder javaBuilder = new JavaContextFactoryBuilder(wireFactory);
//
// builderRegistry.register(javaBuilder);
@@ -160,7 +160,7 @@
// MockInterceptorBuilder interceptorBuilder = new MockInterceptorBuilder(mockInterceptor, false);
// PolicyBuilderRegistry policyRegistry = new DefaultPolicyBuilderRegistry();
// policyRegistry.registerSourceBuilder(interceptorBuilder);
-// WireFactoryService wireFactory = new DefaultWireFactoryService(new MessageFactoryImpl(), new JDKWireFactoryService(), policyRegistry);
+// WireService wireFactory = new DefaultWireFactoryService(new MessageFactoryImpl(), new JDKWireFactoryService(), policyRegistry);
// JavaContextFactoryBuilder javaBuilder = new JavaContextFactoryBuilder(wireFactory);
//
// builderRegistry.register(javaBuilder);
Modified: incubator/tuscany/sandbox/jboynes/sca/core2/src/main/java/org/apache/tuscany/core/loader/ComponentLoader.java
URL: http://svn.apache.org/viewcvs/incubator/tuscany/sandbox/jboynes/sca/core2/src/main/java/org/apache/tuscany/core/loader/ComponentLoader.java?rev=406454&r1=406453&r2=406454&view=diff
==============================================================================
--- incubator/tuscany/sandbox/jboynes/sca/core2/src/main/java/org/apache/tuscany/core/loader/ComponentLoader.java (original)
+++ incubator/tuscany/sandbox/jboynes/sca/core2/src/main/java/org/apache/tuscany/core/loader/ComponentLoader.java Sun May 14 15:28:12 2006
@@ -107,7 +107,7 @@
ReferenceTarget referenceTarget = new ReferenceTarget();
referenceTarget.setReferenceName(name);
try {
- referenceTarget.setTarget(new URI(target));
+ referenceTarget.addTarget(new URI(target));
} catch (URISyntaxException e) {
InvalidReferenceException le = new InvalidReferenceException(e);
le.setIdentifier(target);
Modified: incubator/tuscany/sandbox/jboynes/sca/core2/src/main/java/org/apache/tuscany/core/system/builder/SystemComponentBuilder.java
URL: http://svn.apache.org/viewcvs/incubator/tuscany/sandbox/jboynes/sca/core2/src/main/java/org/apache/tuscany/core/system/builder/SystemComponentBuilder.java?rev=406454&r1=406453&r2=406454&view=diff
==============================================================================
--- incubator/tuscany/sandbox/jboynes/sca/core2/src/main/java/org/apache/tuscany/core/system/builder/SystemComponentBuilder.java (original)
+++ incubator/tuscany/sandbox/jboynes/sca/core2/src/main/java/org/apache/tuscany/core/system/builder/SystemComponentBuilder.java Sun May 14 15:28:12 2006
@@ -32,7 +32,7 @@
*/
//@SuppressWarnings("unchecked")
public class SystemComponentBuilder implements ComponentBuilder<SystemImplementation> {
-
+
public Context build(CompositeContext parent, Component<SystemImplementation> component) throws BuilderConfigException {
PojoComponentType componentType = component.getImplementation().getComponentType();
List<Class<?>> serviceInterfaces = new ArrayList<Class<?>>();
@@ -67,7 +67,9 @@
}
}
for (ReferenceTarget target : component.getReferenceTargets().values()) {
- LazyIntraCompositeResolver resolver = new LazyIntraCompositeResolver(parent, new QualifiedName(target.getTarget().getPath()));
+ //FIXME support multiplicity!
+ assert(target.getTargets().size() == 1): "Multiplicity not yet implemented";
+ LazyIntraCompositeResolver resolver = new LazyIntraCompositeResolver(parent, new QualifiedName(target.getTargets().get(0).getPath()));
Member member = componentType.getReferenceMember(target.getReferenceName());
if (member == null) {
BuilderConfigException e = new BuilderConfigException("Reference not found");
Modified: incubator/tuscany/sandbox/jboynes/sca/core2/src/main/java/org/apache/tuscany/core/wire/jdk/JDKWireFactoryService.java
URL: http://svn.apache.org/viewcvs/incubator/tuscany/sandbox/jboynes/sca/core2/src/main/java/org/apache/tuscany/core/wire/jdk/JDKWireFactoryService.java?rev=406454&r1=406453&r2=406454&view=diff
==============================================================================
--- incubator/tuscany/sandbox/jboynes/sca/core2/src/main/java/org/apache/tuscany/core/wire/jdk/JDKWireFactoryService.java (original)
+++ incubator/tuscany/sandbox/jboynes/sca/core2/src/main/java/org/apache/tuscany/core/wire/jdk/JDKWireFactoryService.java Sun May 14 15:28:12 2006
@@ -24,7 +24,7 @@
import java.lang.reflect.Proxy;
/**
- * A system service that creates JDK dynamic proxy-based wire factories
+ * A system service that creates JDK dynamic proxy-based wires
*
* @version $Rev$ $Date$
*/
Added: incubator/tuscany/sandbox/jboynes/sca/core2/src/main/java/org/apache/tuscany/core/wire/system/WireServiceImpl.java
URL: http://svn.apache.org/viewcvs/incubator/tuscany/sandbox/jboynes/sca/core2/src/main/java/org/apache/tuscany/core/wire/system/WireServiceImpl.java?rev=406454&view=auto
==============================================================================
--- incubator/tuscany/sandbox/jboynes/sca/core2/src/main/java/org/apache/tuscany/core/wire/system/WireServiceImpl.java (added)
+++ incubator/tuscany/sandbox/jboynes/sca/core2/src/main/java/org/apache/tuscany/core/wire/system/WireServiceImpl.java Sun May 14 15:28:12 2006
@@ -0,0 +1,105 @@
+package org.apache.tuscany.core.wire.system;
+
+import java.lang.reflect.Method;
+import java.util.HashMap;
+import java.util.Map;
+import java.util.Set;
+
+import org.apache.tuscany.core.util.JavaIntrospectionHelper;
+import org.apache.tuscany.core.wire.SourceInvocationChainImpl;
+import org.apache.tuscany.core.wire.TargetInvocationChainImpl;
+import org.apache.tuscany.model.Reference;
+import org.apache.tuscany.model.Service;
+import org.apache.tuscany.spi.annotation.Autowire;
+import org.apache.tuscany.spi.builder.BuilderConfigException;
+import org.apache.tuscany.spi.policy.PolicyBuilderRegistry;
+import org.apache.tuscany.spi.wire.SourceInvocationChain;
+import org.apache.tuscany.spi.wire.SourceWire;
+import org.apache.tuscany.spi.wire.TargetWire;
+import org.apache.tuscany.spi.wire.WireFactoryService;
+import org.apache.tuscany.spi.wire.TargetInvocationChain;
+import org.apache.tuscany.spi.wire.WireService;
+import org.osoa.sca.annotations.Init;
+import org.osoa.sca.annotations.Scope;
+
+/**
+ * The default implementation of a <code>WireFactory</code>
+ *
+ * @version $$Rev$$ $$Date$$
+ */
+@Scope("MODULE")
+@org.osoa.sca.annotations.Service(interfaces = {WireService.class})
+public class WireServiceImpl implements WireService {
+
+ private WireFactoryService wireFactoryService;
+ private PolicyBuilderRegistry policyRegistry;
+
+
+ public WireServiceImpl() {
+
+ }
+
+ public WireServiceImpl(WireFactoryService wireFactoryService, PolicyBuilderRegistry registry) {
+ this.wireFactoryService = wireFactoryService;
+ this.policyRegistry = registry;
+ }
+
+ @Autowire
+ public void setWireFactoryService(WireFactoryService service) {
+ this.wireFactoryService = service;
+ }
+
+
+ @Autowire
+ public void setPolicyRegistry(PolicyBuilderRegistry policyRegistry) {
+ this.policyRegistry = policyRegistry;
+ }
+
+ @Init(eager = true)
+ public void init() {
+ }
+
+ public SourceWire createSourceWire(Reference reference) throws BuilderConfigException {
+ String name = reference.getName();
+ Class interfaze = reference.getServiceContract().getInteface();
+ SourceWire<?> wire = wireFactoryService.createSourceWire();
+ wire.setBusinessInterface(interfaze);
+ wire.setReferenceName(name);
+
+ Map<Method, SourceInvocationChain> chains = new HashMap<Method, SourceInvocationChain>();
+ Set<Method> javaMethods = JavaIntrospectionHelper.getAllUniqueMethods(interfaze);
+ for (Method method : javaMethods) {
+ SourceInvocationChain chain = new SourceInvocationChainImpl(method);
+ chains.put(method, chain);
+ }
+ wire.setInvocationChains(chains);
+ if (policyRegistry != null) {
+ // invoke policy builders
+ policyRegistry.buildSource(reference, wire);
+ }
+ return wire;
+ }
+
+ public TargetWire createTargetWire(Service service) {
+ String name = service.getName();
+ Class interfaze = service.getServiceContract().getInteface();
+ TargetWire<?> wire = wireFactoryService.createTargetWire();
+ wire.setBusinessInterface(interfaze);
+ wire.setServiceName(name);
+
+ Map<Method, TargetInvocationChain> chains = new HashMap<Method, TargetInvocationChain>();
+ Set<Method> javaMethods = JavaIntrospectionHelper.getAllUniqueMethods(interfaze);
+ for (Method method : javaMethods) {
+ TargetInvocationChain chain = new TargetInvocationChainImpl(method);
+ chains.put(method, chain);
+ }
+ wire.setInvocationChains(chains);
+ if (policyRegistry != null) {
+ // invoke policy builders
+ policyRegistry.buildTarget(service, wire);
+ }
+ return wire;
+ }
+
+
+}
Copied: incubator/tuscany/sandbox/jboynes/sca/core2/src/test/java/org/apache/tuscany/core/wire/jdk/JDKWireFactoryServiceTestCase.java (from r406389, incubator/tuscany/sandbox/jboynes/sca/core2/src/test/java/org/apache/tuscany/core/wire/jdk/JDKWireFactoryFactoryTestCase.java)
URL: http://svn.apache.org/viewcvs/incubator/tuscany/sandbox/jboynes/sca/core2/src/test/java/org/apache/tuscany/core/wire/jdk/JDKWireFactoryServiceTestCase.java?p2=incubator/tuscany/sandbox/jboynes/sca/core2/src/test/java/org/apache/tuscany/core/wire/jdk/JDKWireFactoryServiceTestCase.java&p1=incubator/tuscany/sandbox/jboynes/sca/core2/src/test/java/org/apache/tuscany/core/wire/jdk/JDKWireFactoryFactoryTestCase.java&r1=406389&r2=406454&rev=406454&view=diff
==============================================================================
--- incubator/tuscany/sandbox/jboynes/sca/core2/src/test/java/org/apache/tuscany/core/wire/jdk/JDKWireFactoryFactoryTestCase.java (original)
+++ incubator/tuscany/sandbox/jboynes/sca/core2/src/test/java/org/apache/tuscany/core/wire/jdk/JDKWireFactoryServiceTestCase.java Sun May 14 15:28:12 2006
@@ -28,11 +28,11 @@
import org.apache.tuscany.spi.wire.SourceInvocationChain;
import org.apache.tuscany.spi.wire.TargetInvocationChain;
-public class JDKWireFactoryFactoryTestCase extends TestCase {
+public class JDKWireFactoryServiceTestCase extends TestCase {
private Method hello;
- public JDKWireFactoryFactoryTestCase(String arg0) {
+ public JDKWireFactoryServiceTestCase(String arg0) {
super(arg0);
}
Modified: incubator/tuscany/sandbox/jboynes/sca/model/src/main/java/org/apache/tuscany/model/Component.java
URL: http://svn.apache.org/viewcvs/incubator/tuscany/sandbox/jboynes/sca/model/src/main/java/org/apache/tuscany/model/Component.java?rev=406454&r1=406453&r2=406454&view=diff
==============================================================================
--- incubator/tuscany/sandbox/jboynes/sca/model/src/main/java/org/apache/tuscany/model/Component.java (original)
+++ incubator/tuscany/sandbox/jboynes/sca/model/src/main/java/org/apache/tuscany/model/Component.java Sun May 14 15:28:12 2006
@@ -54,9 +54,23 @@
public void add(PropertyValue<?> value) {
propertyValues.put(value.getName(), value);
+ if (implementation != null && implementation.getComponentType() != null) {
+ Property property = implementation.getComponentType().getProperties().get(
+ value.getName());
+ if (property != null) {
+ value.setProperty(property);
+ }
+ }
}
public void add(ReferenceTarget target) {
referenceTargets.put(target.getReferenceName(), target);
+ if (implementation != null && implementation.getComponentType() != null) {
+ Reference reference = implementation.getComponentType().getReferences().get(
+ target.getReferenceName());
+ if (reference != null) {
+ target.setReference(reference);
+ }
+ }
}
}
Modified: incubator/tuscany/sandbox/jboynes/sca/model/src/main/java/org/apache/tuscany/model/PropertyValue.java
URL: http://svn.apache.org/viewcvs/incubator/tuscany/sandbox/jboynes/sca/model/src/main/java/org/apache/tuscany/model/PropertyValue.java?rev=406454&r1=406453&r2=406454&view=diff
==============================================================================
--- incubator/tuscany/sandbox/jboynes/sca/model/src/main/java/org/apache/tuscany/model/PropertyValue.java (original)
+++ incubator/tuscany/sandbox/jboynes/sca/model/src/main/java/org/apache/tuscany/model/PropertyValue.java Sun May 14 15:28:12 2006
@@ -24,6 +24,7 @@
public class PropertyValue<T> extends ModelObject {
private String name;
private ObjectFactory<T> valueFactory;
+ private Property<?> property;
public String getName() {
return name;
@@ -40,4 +41,13 @@
public void setValueFactory(ObjectFactory<T> valueFactory) {
this.valueFactory = valueFactory;
}
+
+ public Property<?> getProperty() {
+ return property;
+ }
+
+ public void setProperty(Property<?> property) {
+ this.property = property;
+ }
+
}
Modified: incubator/tuscany/sandbox/jboynes/sca/model/src/main/java/org/apache/tuscany/model/ReferenceTarget.java
URL: http://svn.apache.org/viewcvs/incubator/tuscany/sandbox/jboynes/sca/model/src/main/java/org/apache/tuscany/model/ReferenceTarget.java?rev=406454&r1=406453&r2=406454&view=diff
==============================================================================
--- incubator/tuscany/sandbox/jboynes/sca/model/src/main/java/org/apache/tuscany/model/ReferenceTarget.java (original)
+++ incubator/tuscany/sandbox/jboynes/sca/model/src/main/java/org/apache/tuscany/model/ReferenceTarget.java Sun May 14 15:28:12 2006
@@ -17,13 +17,16 @@
package org.apache.tuscany.model;
import java.net.URI;
+import java.util.List;
+import java.util.ArrayList;
/**
* @version $Rev$ $Date$
*/
public class ReferenceTarget extends ModelObject {
private String referenceName;
- private URI target;
+ private List<URI> targets = new ArrayList<URI>();
+ private Reference reference;
public String getReferenceName() {
return referenceName;
@@ -33,11 +36,20 @@
this.referenceName = referenceName;
}
- public URI getTarget() {
- return target;
+ public List<URI> getTargets() {
+ return targets;
}
- public void setTarget(URI target) {
- this.target = target;
+ public void addTarget(URI target) {
+ targets.add(target);
}
+
+ public Reference getReference(){
+ return reference;
+ }
+
+ public void setReference(Reference reference){
+ this.reference = reference;
+ }
+
}
Added: incubator/tuscany/sandbox/jboynes/sca/spi/src/main/java/org/apache/tuscany/spi/extension/ComponentBuilderExtension.java
URL: http://svn.apache.org/viewcvs/incubator/tuscany/sandbox/jboynes/sca/spi/src/main/java/org/apache/tuscany/spi/extension/ComponentBuilderExtension.java?rev=406454&view=auto
==============================================================================
--- incubator/tuscany/sandbox/jboynes/sca/spi/src/main/java/org/apache/tuscany/spi/extension/ComponentBuilderExtension.java (added)
+++ incubator/tuscany/sandbox/jboynes/sca/spi/src/main/java/org/apache/tuscany/spi/extension/ComponentBuilderExtension.java Sun May 14 15:28:12 2006
@@ -0,0 +1,57 @@
+package org.apache.tuscany.spi.extension;
+
+import org.apache.tuscany.spi.builder.ComponentBuilder;
+import org.apache.tuscany.spi.builder.BuilderConfigException;
+import org.apache.tuscany.spi.builder.BuilderRegistry;
+import org.apache.tuscany.spi.context.Context;
+import org.apache.tuscany.spi.context.CompositeContext;
+import org.apache.tuscany.spi.context.ComponentContext;
+import org.apache.tuscany.spi.annotation.Autowire;
+import org.apache.tuscany.spi.wire.WireService;
+import org.apache.tuscany.spi.wire.TargetWire;
+import org.apache.tuscany.spi.wire.SourceWire;
+import org.apache.tuscany.model.Implementation;
+import org.apache.tuscany.model.Component;
+import org.apache.tuscany.model.Service;
+import org.apache.tuscany.model.ComponentType;
+import org.apache.tuscany.model.Reference;
+import org.osoa.sca.annotations.Scope;
+import org.osoa.sca.annotations.Init;
+
+/**
+ * @version $$Rev$$ $$Date$$
+ */
+@Scope("MODULE")
+public abstract class ComponentBuilderExtension<I extends Implementation<?>> implements ComponentBuilder<I> {
+
+ protected BuilderRegistry registry;
+ protected WireService wireService;
+
+ @Autowire
+ public void setRegistry(BuilderRegistry registry) {
+ this.registry = registry;
+ }
+
+ @Init(eager = true)
+ public void init(){
+ registry.register(this);
+ }
+
+ public Context build(CompositeContext parent, Component<I> component) throws BuilderConfigException {
+ ComponentType componentType = component.getImplementation().getComponentType();
+ ComponentContext context = createContext(parent, component);
+ // create target wires
+ for (Service service : componentType.getServices().values()) {
+ TargetWire wire = wireService.createTargetWire(service);
+ context.addTargetWire(wire);
+ }
+ // create source wires
+ for (Reference reference : componentType.getReferences().values()) {
+ SourceWire wire = wireService.createSourceWire(reference);
+ context.addSourceWire(wire);
+ }
+ return context;
+ }
+
+ protected abstract ComponentContext createContext(CompositeContext parent, Component<I> component);
+}
Added: incubator/tuscany/sandbox/jboynes/sca/spi/src/main/java/org/apache/tuscany/spi/policy/PolicyBuilderRegistry.java
URL: http://svn.apache.org/viewcvs/incubator/tuscany/sandbox/jboynes/sca/spi/src/main/java/org/apache/tuscany/spi/policy/PolicyBuilderRegistry.java?rev=406454&view=auto
==============================================================================
--- incubator/tuscany/sandbox/jboynes/sca/spi/src/main/java/org/apache/tuscany/spi/policy/PolicyBuilderRegistry.java (added)
+++ incubator/tuscany/sandbox/jboynes/sca/spi/src/main/java/org/apache/tuscany/spi/policy/PolicyBuilderRegistry.java Sun May 14 15:28:12 2006
@@ -0,0 +1,74 @@
+package org.apache.tuscany.spi.policy;
+
+import java.util.List;
+
+import org.apache.tuscany.model.Reference;
+import org.apache.tuscany.model.Service;
+import org.apache.tuscany.spi.builder.BuilderException;
+import org.apache.tuscany.spi.wire.SourceWire;
+import org.apache.tuscany.spi.wire.TargetWire;
+
+/**
+ * A System registry for policy builders.
+ * <p/>
+ * Policy builders operate on either a source- or target-side wire and typically are registered by runtime
+ * extensions through {@link #registerTargetBuilder} or {@link #registerSourceBuilder}
+ *
+ * @version $Rev$ $Date$
+ */
+public interface PolicyBuilderRegistry {
+
+ /**
+ * Registers a target-side policy builder. Called by extensions to register their builders.
+ *
+ * @param builder the builder to register
+ */
+ public void registerTargetBuilder(TargetPolicyBuilder builder);
+
+ /**
+ * De-registers a target-side builder. Called by extensions to register their builders.
+ *
+ * @param builder the builder to register
+ */
+ public void unregisterTargetBuilder(TargetPolicyBuilder builder);
+
+ /**
+ * Registers a source-side policy builder. Called by extensions to register their builders.
+ *
+ * @param builder the builder to register
+ */
+ public void registerSourceBuilder(SourcePolicyBuilder builder);
+
+ /**
+ * De-registers a source-side builder. Called by extensions to register their builders.
+ *
+ * @param builder the builder to register
+ */
+ public void unregisterSourceBuilder(SourcePolicyBuilder builder);
+
+ /**
+ * Returns the list of registered target-side builders
+ */
+ public List<TargetPolicyBuilder> getTargetBuilders();
+
+ /**
+ * Returns the list of registered source-side builders
+ */
+ public List<SourcePolicyBuilder> getSourceBuilders();
+
+ /**
+ * Evaluates source-side policy metadata for reference and updates the curresponding collection of wire
+ * configurations
+ *
+ * @throws BuilderException
+ */
+ public void buildSource(Reference reference, SourceWire wire) throws BuilderException;
+
+ /**
+ * Evaluates target-side policy metadata for configured reference and updates the curresponding collection
+ * of wire configurations
+ *
+ * @throws BuilderException
+ */
+ public void buildTarget(Service service, TargetWire wire) throws BuilderException;
+}
Added: incubator/tuscany/sandbox/jboynes/sca/spi/src/main/java/org/apache/tuscany/spi/policy/SourcePolicyBuilder.java
URL: http://svn.apache.org/viewcvs/incubator/tuscany/sandbox/jboynes/sca/spi/src/main/java/org/apache/tuscany/spi/policy/SourcePolicyBuilder.java?rev=406454&view=auto
==============================================================================
--- incubator/tuscany/sandbox/jboynes/sca/spi/src/main/java/org/apache/tuscany/spi/policy/SourcePolicyBuilder.java (added)
+++ incubator/tuscany/sandbox/jboynes/sca/spi/src/main/java/org/apache/tuscany/spi/policy/SourcePolicyBuilder.java Sun May 14 15:28:12 2006
@@ -0,0 +1,20 @@
+package org.apache.tuscany.spi.policy;
+
+import java.util.List;
+
+import org.apache.tuscany.model.ReferenceTarget;
+import org.apache.tuscany.model.Reference;
+import org.apache.tuscany.spi.wire.SourceWire;
+import org.apache.tuscany.spi.builder.BuilderException;
+
+/**
+ * Implementations contribute {@link org.apache.tuscany.spi.wire.Interceptor}s or {@link
+ * org.apache.tuscany.spi.wire.MessageHandler}s that handle source-side policy on a wire.
+ *
+ * @version $$Rev$$ $$Date$$
+ */
+public interface SourcePolicyBuilder {
+
+ public void build(Reference reference, SourceWire wire) throws BuilderException;
+
+}
Added: incubator/tuscany/sandbox/jboynes/sca/spi/src/main/java/org/apache/tuscany/spi/policy/TargetPolicyBuilder.java
URL: http://svn.apache.org/viewcvs/incubator/tuscany/sandbox/jboynes/sca/spi/src/main/java/org/apache/tuscany/spi/policy/TargetPolicyBuilder.java?rev=406454&view=auto
==============================================================================
--- incubator/tuscany/sandbox/jboynes/sca/spi/src/main/java/org/apache/tuscany/spi/policy/TargetPolicyBuilder.java (added)
+++ incubator/tuscany/sandbox/jboynes/sca/spi/src/main/java/org/apache/tuscany/spi/policy/TargetPolicyBuilder.java Sun May 14 15:28:12 2006
@@ -0,0 +1,18 @@
+package org.apache.tuscany.spi.policy;
+
+import org.apache.tuscany.model.Service;
+import org.apache.tuscany.spi.wire.SourceWire;
+import org.apache.tuscany.spi.wire.TargetWire;
+import org.apache.tuscany.spi.builder.BuilderException;
+
+/**
+ * Implementations contribute {@link org.apache.tuscany.spi.wire.Interceptor}s or {@link
+ * org.apache.tuscany.spi.wire.MessageHandler}s that handle target-side policy on a wire.
+ *
+ * @version $$Rev$$ $$Date$$
+ */
+public interface TargetPolicyBuilder{
+
+ public void build(Service service, TargetWire wire) throws BuilderException;
+
+}
Added: incubator/tuscany/sandbox/jboynes/sca/spi/src/main/java/org/apache/tuscany/spi/wire/WireService.java
URL: http://svn.apache.org/viewcvs/incubator/tuscany/sandbox/jboynes/sca/spi/src/main/java/org/apache/tuscany/spi/wire/WireService.java?rev=406454&view=auto
==============================================================================
--- incubator/tuscany/sandbox/jboynes/sca/spi/src/main/java/org/apache/tuscany/spi/wire/WireService.java (added)
+++ incubator/tuscany/sandbox/jboynes/sca/spi/src/main/java/org/apache/tuscany/spi/wire/WireService.java Sun May 14 15:28:12 2006
@@ -0,0 +1,31 @@
+package org.apache.tuscany.spi.wire;
+
+import org.apache.tuscany.model.Reference;
+import org.apache.tuscany.model.Service;
+import org.apache.tuscany.spi.builder.BuilderConfigException;
+
+/**
+ * Implementations provide a system service that creates {@link org.apache.tuscany.spi.wire.SourceWire}s and
+ * {@link org.apache.tuscany.spi.wire.TargetWire}s. This service is typically resolved through autowire.
+ *
+ * @version $$Rev$$ $$Date$$
+ */
+public interface WireService {
+
+ /**
+ * Creates the source-side wire for a reference
+ *
+ * @param reference the reference to create the wire factory for
+ * @throws BuilderConfigException
+ */
+ public SourceWire createSourceWire(Reference reference) throws BuilderConfigException;
+
+ /**
+ * Creates a target-side wire for a service implementing a given interface
+ *
+ * @param service the service to create the wire factory for
+ * @throws BuilderConfigException
+ */
+ public TargetWire createTargetWire(Service service) throws BuilderConfigException;
+
+}