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 2007/01/12 11:14:03 UTC
svn commit: r495535 - in /incubator/tuscany/java/sca:
kernel/core/src/main/java/org/apache/tuscany/core/binding/local/
kernel/core/src/main/java/org/apache/tuscany/core/bootstrap/
kernel/core/src/main/java/org/apache/tuscany/core/builder/ kernel/core/s...
Author: jmarino
Date: Fri Jan 12 02:14:01 2007
New Revision: 495535
URL: http://svn.apache.org/viewvc?view=rev&rev=495535
Log:
remove need for system binding and use local binding instead as the latter supports wire optimization; move auto-assignment of local binding to services and references up to builder registry as part of system binding removal; remove AtomicComponent specialization in wire optimization with introduction of Component.isOptimizable()
Added:
incubator/tuscany/java/sca/kernel/core/src/test/java/org/apache/tuscany/core/builder/BuilderRegistryNoBindingsTestCase.java (with props)
Removed:
incubator/tuscany/java/sca/kernel/core/src/main/java/org/apache/tuscany/core/implementation/system/builder/SystemBindingBuilder.java
incubator/tuscany/java/sca/kernel/core/src/main/java/org/apache/tuscany/core/implementation/system/component/SystemReferenceBinding.java
incubator/tuscany/java/sca/kernel/core/src/main/java/org/apache/tuscany/core/implementation/system/component/SystemServiceBinding.java
incubator/tuscany/java/sca/kernel/core/src/main/java/org/apache/tuscany/core/implementation/system/loader/SystemBindingLoader.java
incubator/tuscany/java/sca/kernel/core/src/main/java/org/apache/tuscany/core/implementation/system/model/SystemBindingDefinition.java
incubator/tuscany/java/sca/kernel/core/src/test/java/org/apache/tuscany/core/binding/local/LocalBindingLoaderTestCase.java
incubator/tuscany/java/sca/kernel/core/src/test/java/org/apache/tuscany/core/implementation/system/builder/SystemBindingBuilderTestCase.java
incubator/tuscany/java/sca/kernel/core/src/test/java/org/apache/tuscany/core/implementation/system/component/SystemReferenceBindingTestCase.java
incubator/tuscany/java/sca/kernel/core/src/test/java/org/apache/tuscany/core/implementation/system/component/SystemServiceBindingTestCase.java
incubator/tuscany/java/sca/kernel/core/src/test/java/org/apache/tuscany/core/implementation/system/component/SystemServiceComponentWireTestCase.java
incubator/tuscany/java/sca/kernel/core/src/test/java/org/apache/tuscany/core/integration/implementation/system/builder/MockComponentFactory.java
Modified:
incubator/tuscany/java/sca/kernel/core/src/main/java/org/apache/tuscany/core/binding/local/LocalBindingLoader.java
incubator/tuscany/java/sca/kernel/core/src/main/java/org/apache/tuscany/core/bootstrap/DefaultBootstrapper.java
incubator/tuscany/java/sca/kernel/core/src/main/java/org/apache/tuscany/core/builder/BuilderRegistryImpl.java
incubator/tuscany/java/sca/kernel/core/src/main/java/org/apache/tuscany/core/implementation/PojoAtomicComponent.java
incubator/tuscany/java/sca/kernel/core/src/main/java/org/apache/tuscany/core/loader/ComponentLoader.java
incubator/tuscany/java/sca/kernel/core/src/main/java/org/apache/tuscany/core/wire/WireUtils.java
incubator/tuscany/java/sca/kernel/core/src/main/resources/org/apache/tuscany/core/systemImplementation.scdl
incubator/tuscany/java/sca/kernel/core/src/test/java/org/apache/tuscany/core/builder/AbstractConnectorImplTestCase.java
incubator/tuscany/java/sca/kernel/core/src/test/java/org/apache/tuscany/core/builder/ConnectorImplTestCase.java
incubator/tuscany/java/sca/kernel/core/src/test/java/org/apache/tuscany/core/deployer/BootstrapDeployerTestCase.java
incubator/tuscany/java/sca/kernel/core/src/test/java/org/apache/tuscany/core/implementation/PojoAtomicComponentTestCase.java
incubator/tuscany/java/sca/kernel/core/src/test/java/org/apache/tuscany/core/implementation/composite/CompositeBuilderTestCase.java
incubator/tuscany/java/sca/kernel/core/src/test/java/org/apache/tuscany/core/loader/ComponentLoaderNoBindingTestCase.java
incubator/tuscany/java/sca/kernel/core/src/test/java/org/apache/tuscany/core/wire/WireOptimizationTestCase.java
incubator/tuscany/java/sca/kernel/core/src/test/resources/org/apache/tuscany/core/deployer/boot1-include.scdl
incubator/tuscany/java/sca/kernel/core/src/test/resources/org/apache/tuscany/core/deployer/boot1.scdl
incubator/tuscany/java/sca/kernel/core/src/test/resources/org/apache/tuscany/core/deployer/boot2.scdl
incubator/tuscany/java/sca/kernel/spi/src/main/java/org/apache/tuscany/spi/component/Component.java
incubator/tuscany/java/sca/kernel/spi/src/main/java/org/apache/tuscany/spi/component/SCAObject.java
incubator/tuscany/java/sca/kernel/spi/src/main/java/org/apache/tuscany/spi/extension/AbstractComponentExtension.java
incubator/tuscany/java/sca/services/transaction/transaction.geronimo/src/main/resources/META-INF/sca/geronimo.jta.scdl
Modified: incubator/tuscany/java/sca/kernel/core/src/main/java/org/apache/tuscany/core/binding/local/LocalBindingLoader.java
URL: http://svn.apache.org/viewvc/incubator/tuscany/java/sca/kernel/core/src/main/java/org/apache/tuscany/core/binding/local/LocalBindingLoader.java?view=diff&rev=495535&r1=495534&r2=495535
==============================================================================
--- incubator/tuscany/java/sca/kernel/core/src/main/java/org/apache/tuscany/core/binding/local/LocalBindingLoader.java (original)
+++ incubator/tuscany/java/sca/kernel/core/src/main/java/org/apache/tuscany/core/binding/local/LocalBindingLoader.java Fri Jan 12 02:14:01 2007
@@ -24,10 +24,12 @@
import javax.xml.stream.XMLStreamException;
import javax.xml.stream.XMLStreamReader;
+import org.apache.tuscany.spi.annotation.Autowire;
import org.apache.tuscany.spi.component.CompositeComponent;
import org.apache.tuscany.spi.deployer.DeploymentContext;
+import org.apache.tuscany.spi.extension.LoaderExtension;
import org.apache.tuscany.spi.loader.LoaderException;
-import org.apache.tuscany.spi.loader.StAXElementLoader;
+import org.apache.tuscany.spi.loader.LoaderRegistry;
import org.apache.tuscany.spi.model.ModelObject;
import org.apache.tuscany.spi.wire.Wire;
@@ -36,16 +38,25 @@
*
* @version $Rev$ $Date$
*/
-public class LocalBindingLoader implements StAXElementLoader {
+public class LocalBindingLoader extends LoaderExtension<LocalBindingDefinition> {
+
+ /**
+ * Constructor specifies the registry to register with.
+ *
+ * @param registry the LoaderRegistry this loader should register with
+ */
+ public LocalBindingLoader(@Autowire LoaderRegistry registry) {
+ super(registry);
+ }
public QName getXMLType() {
return Wire.LOCAL_BINDING;
}
- public ModelObject load(CompositeComponent parent,
- ModelObject object,
- XMLStreamReader reader,
- DeploymentContext deploymentContext) throws XMLStreamException, LoaderException {
+ public LocalBindingDefinition load(CompositeComponent parent,
+ ModelObject object,
+ XMLStreamReader reader,
+ DeploymentContext deploymentContext) throws XMLStreamException, LoaderException {
String uri = reader.getAttributeValue(null, "uri");
if (uri != null) {
try {
Modified: incubator/tuscany/java/sca/kernel/core/src/main/java/org/apache/tuscany/core/bootstrap/DefaultBootstrapper.java
URL: http://svn.apache.org/viewvc/incubator/tuscany/java/sca/kernel/core/src/main/java/org/apache/tuscany/core/bootstrap/DefaultBootstrapper.java?view=diff&rev=495535&r1=495534&r2=495535
==============================================================================
--- incubator/tuscany/java/sca/kernel/core/src/main/java/org/apache/tuscany/core/bootstrap/DefaultBootstrapper.java (original)
+++ incubator/tuscany/java/sca/kernel/core/src/main/java/org/apache/tuscany/core/bootstrap/DefaultBootstrapper.java Fri Jan 12 02:14:01 2007
@@ -37,6 +37,9 @@
import org.apache.tuscany.spi.loader.PropertyObjectFactory;
import org.apache.tuscany.spi.services.management.TuscanyManagementService;
+import org.apache.tuscany.core.binding.local.LocalBindingBuilder;
+import org.apache.tuscany.core.binding.local.LocalBindingDefinition;
+import org.apache.tuscany.core.binding.local.LocalBindingLoader;
import org.apache.tuscany.core.builder.BuilderRegistryImpl;
import org.apache.tuscany.core.builder.ConnectorImpl;
import org.apache.tuscany.core.component.WorkContextImpl;
@@ -50,6 +53,7 @@
import org.apache.tuscany.core.implementation.composite.CompositeLoader;
import org.apache.tuscany.core.implementation.processor.ConstructorProcessor;
import org.apache.tuscany.core.implementation.processor.DestroyProcessor;
+import org.apache.tuscany.core.implementation.processor.EagerInitProcessor;
import org.apache.tuscany.core.implementation.processor.HeuristicPojoProcessor;
import org.apache.tuscany.core.implementation.processor.ImplementationProcessorServiceImpl;
import org.apache.tuscany.core.implementation.processor.InitProcessor;
@@ -59,15 +63,11 @@
import org.apache.tuscany.core.implementation.processor.ResourceProcessor;
import org.apache.tuscany.core.implementation.processor.ScopeProcessor;
import org.apache.tuscany.core.implementation.processor.ServiceProcessor;
-import org.apache.tuscany.core.implementation.processor.EagerInitProcessor;
-import org.apache.tuscany.core.implementation.system.builder.SystemBindingBuilder;
import org.apache.tuscany.core.implementation.system.builder.SystemComponentBuilder;
import org.apache.tuscany.core.implementation.system.builder.SystemCompositeBuilder;
-import org.apache.tuscany.core.implementation.system.loader.SystemBindingLoader;
import org.apache.tuscany.core.implementation.system.loader.SystemComponentTypeLoader;
import org.apache.tuscany.core.implementation.system.loader.SystemCompositeComponentTypeLoader;
import org.apache.tuscany.core.implementation.system.loader.SystemImplementationLoader;
-import org.apache.tuscany.core.implementation.system.model.SystemBindingDefinition;
import org.apache.tuscany.core.implementation.system.model.SystemCompositeImplementation;
import org.apache.tuscany.core.implementation.system.model.SystemImplementation;
import org.apache.tuscany.core.loader.ComponentLoader;
@@ -82,9 +82,9 @@
import org.apache.tuscany.host.MonitorFactory;
/**
- * A default implementation of a Bootstrapper. Please see the documentation on
- * the individual methods for how the primordial components are created.
- *
+ * A default implementation of a Bootstrapper. Please see the documentation on the individual methods for how the
+ * primordial components are created.
+ *
* @version $Rev$ $Date$
*/
public class DefaultBootstrapper implements Bootstrapper {
@@ -94,11 +94,9 @@
/**
* Create a default bootstrapper.
- *
- * @param monitorFactory the MonitorFactory to be used to create monitors
- * for the primordial components
- * @param xmlFactory the XMLInputFactory to be used by the components to
- * load XML artifacts
+ *
+ * @param monitorFactory the MonitorFactory to be used to create monitors for the primordial components
+ * @param xmlFactory the XMLInputFactory to be used by the components to load XML artifacts
* @param managementService management service used by the runtime.
*/
public DefaultBootstrapper(MonitorFactory monitorFactory,
@@ -111,7 +109,7 @@
/**
* Returns the MonitorFactory being used by this bootstrapper.
- *
+ *
* @return the MonitorFactory being used by this bootstrapper
*/
public MonitorFactory getMonitorFactory() {
@@ -119,11 +117,9 @@
}
/**
- * Create the RuntimeComponent that will form the root of the component
- * tree. Returns an new instance of a {@link DefaultRuntime} with the system
- * and application root components initialized with default composite
- * components.
- *
+ * Create the RuntimeComponent that will form the root of the component tree. Returns an new instance of a {@link
+ * DefaultRuntime} with the system and application root components initialized with default composite components.
+ *
* @return a newly created root for the component tree
*/
public RuntimeComponent createRuntime() {
@@ -138,9 +134,8 @@
}
/**
- * Create primordial deployer that can be used to load the system
- * definition.
- *
+ * Create primordial deployer that can be used to load the system definition.
+ *
* @return the primordial deployer
*/
public Deployer createDeployer() {
@@ -155,10 +150,9 @@
}
/**
- * Create a basic ScopeRegistry containing the ScopeContainers that are
- * available to components in the system definition. The implementation
- * returned only support COMPOSITE scope.
- *
+ * Create a basic ScopeRegistry containing the ScopeContainers that are available to components in the system
+ * definition. The implementation returned only support COMPOSITE scope.
+ *
* @param workContext the WorkContext the scopes should use
* @return a new ScopeRegistry
*/
@@ -169,32 +163,15 @@
}
/**
- * Create a Loader that can be used to parse an XML file containing the SCDL
- * for the system definition. The following Implementation types are
- * supported:
- * <ul>
- * <li>SystemImplementation</li>
- * <li>SystemCompositeImplementation</li>
- * </ul>
- * and the following SCDL elements are supported:
- * <ul>
- * <li>composite</li>
- * <li>component</li>
- * <li>componentType</li>
- * <li>interface.java</li>
- * <li>property</li>
- * <li>reference</li>
- * <li>service</li>
- * <li>implementation.system</li>
- * <li>binding.system</li>
- * </ul>
- * Note the Java component type and the WSDL interface type are not
- * supported.
- *
- * @param propertyFactory the StAXPropertyFactory to be used for parsing
- * Property values
- * @param introspector the Introspector to be used to inspect component
- * implementations
+ * Create a Loader that can be used to parse an XML file containing the SCDL for the system definition. The
+ * following Implementation types are supported: <ul> <li>SystemImplementation</li>
+ * <li>SystemCompositeImplementation</li> </ul> and the following SCDL elements are supported: <ul>
+ * <li>composite</li> <li>component</li> <li>componentType</li> <li>interface.java</li> <li>property</li>
+ * <li>reference</li> <li>service</li> <li>implementation.system</li> </ul> Note the Java component type and the
+ * WSDL interface type are not supported.
+ *
+ * @param propertyFactory the StAXPropertyFactory to be used for parsing Property values
+ * @param introspector the Introspector to be used to inspect component implementations
* @return a new StAX XML loader
*/
public LoaderRegistry createLoader(PropertyObjectFactory propertyFactory, Introspector introspector) {
@@ -204,33 +181,32 @@
// register component type loaders
loaderRegistry.registerLoader(SystemImplementation.class, new SystemComponentTypeLoader(introspector));
loaderRegistry.registerLoader(SystemCompositeImplementation.class,
- new SystemCompositeComponentTypeLoader(loaderRegistry));
+ new SystemCompositeComponentTypeLoader(loaderRegistry));
// register element loaders
registerLoader(loaderRegistry, new ComponentLoader(loaderRegistry, propertyFactory));
registerLoader(loaderRegistry, new ComponentTypeElementLoader(loaderRegistry));
registerLoader(loaderRegistry, new CompositeLoader(loaderRegistry, null));
registerLoader(loaderRegistry, new IncludeLoader(loaderRegistry));
- registerLoader(loaderRegistry,
- new InterfaceJavaLoader(loaderRegistry, new JavaInterfaceProcessorRegistryImpl()));
+ JavaInterfaceProcessorRegistryImpl processorRegistry = new JavaInterfaceProcessorRegistryImpl();
+ registerLoader(loaderRegistry, new InterfaceJavaLoader(loaderRegistry, processorRegistry));
registerLoader(loaderRegistry, new PropertyLoader(loaderRegistry));
registerLoader(loaderRegistry, new ReferenceLoader(loaderRegistry));
registerLoader(loaderRegistry, new ServiceLoader(loaderRegistry));
registerLoader(loaderRegistry, new SystemImplementationLoader(loaderRegistry));
- registerLoader(loaderRegistry, new SystemBindingLoader(loaderRegistry));
+ registerLoader(loaderRegistry, new LocalBindingLoader(loaderRegistry));
return loaderRegistry;
}
/**
- * Create new Introspector for extracting a ComponentType definition from a
- * Java class.
- *
+ * Create new Introspector for extracting a ComponentType definition from a Java class.
+ *
* @return a new Introspector
*/
public Introspector createIntrospector(JavaInterfaceProcessorRegistry registry) {
ImplementationProcessorService service = new ImplementationProcessorServiceImpl(registry);
- IntrospectionRegistryImpl introspectionRegistry =
- new IntrospectionRegistryImpl(monitorFactory.getMonitor(IntrospectionRegistryImpl.Monitor.class));
+ IntrospectionRegistryImpl.Monitor monitor = monitorFactory.getMonitor(IntrospectionRegistryImpl.Monitor.class);
+ IntrospectionRegistryImpl introspectionRegistry = new IntrospectionRegistryImpl(monitor);
introspectionRegistry.registerProcessor(new ConstructorProcessor(service));
introspectionRegistry.registerProcessor(new DestroyProcessor());
introspectionRegistry.registerProcessor(new InitProcessor());
@@ -246,9 +222,8 @@
}
/**
- * Create a new Connector that can be used to wire primordial components
- * together.
- *
+ * Create a new Connector that can be used to wire primordial components together.
+ *
* @return a new Connector
*/
public Connector createConnector() {
@@ -256,24 +231,21 @@
}
/**
- * Helper method for registering a loader with the registry. The Loader is
- * registered once for the QName returned by its
- * {@link LoaderExtension#getXMLType()} method.
- *
+ * Helper method for registering a loader with the registry. The Loader is registered once for the QName returned by
+ * its {@link LoaderExtension#getXMLType()} method.
+ *
* @param registry the LoaderRegistry to register with
- * @param loader the Loader to register
+ * @param loader the Loader to register
*/
protected void registerLoader(LoaderRegistry registry, LoaderExtension<?> loader) {
registry.registerLoader(loader.getXMLType(), loader);
}
/**
- * Create a Builder that can be used to build the components in the system
- * definition. The default implementation only supports implementations from
- * the system programming model.
- *
- * @param scopeRegistry the ScopeRegistry defining the component scopes that
- * will be supported
+ * Create a Builder that can be used to build the components in the system definition. The default implementation
+ * only supports implementations from the system programming model.
+ *
+ * @param scopeRegistry the ScopeRegistry defining the component scopes that will be supported
* @return a new Builder
*/
private Builder createBuilder(ScopeRegistry scopeRegistry) {
@@ -283,7 +255,7 @@
new SystemCompositeBuilder(builderRegistry, createConnector(), managementService);
builderRegistry.register(SystemCompositeImplementation.class, builder);
builderRegistry.register(SystemImplementation.class, new SystemComponentBuilder());
- builderRegistry.register(SystemBindingDefinition.class, new SystemBindingBuilder());
+ builderRegistry.register(LocalBindingDefinition.class, new LocalBindingBuilder());
return builderRegistry;
}
Modified: incubator/tuscany/java/sca/kernel/core/src/main/java/org/apache/tuscany/core/builder/BuilderRegistryImpl.java
URL: http://svn.apache.org/viewvc/incubator/tuscany/java/sca/kernel/core/src/main/java/org/apache/tuscany/core/builder/BuilderRegistryImpl.java?view=diff&rev=495535&r1=495534&r2=495535
==============================================================================
--- incubator/tuscany/java/sca/kernel/core/src/main/java/org/apache/tuscany/core/builder/BuilderRegistryImpl.java (original)
+++ incubator/tuscany/java/sca/kernel/core/src/main/java/org/apache/tuscany/core/builder/BuilderRegistryImpl.java Fri Jan 12 02:14:01 2007
@@ -52,6 +52,7 @@
import org.apache.tuscany.spi.model.ServiceContract;
import org.apache.tuscany.spi.wire.WireService;
+import org.apache.tuscany.core.binding.local.LocalBindingDefinition;
import org.apache.tuscany.core.implementation.composite.ReferenceImpl;
import org.apache.tuscany.core.implementation.composite.ServiceImpl;
@@ -136,6 +137,14 @@
DeploymentContext deploymentContext) throws BuilderException {
String name = boundServiceDefinition.getName();
ServiceContract<?> serviceContract = boundServiceDefinition.getServiceContract();
+ if (boundServiceDefinition.getBindings().isEmpty()) {
+ // if no bindings are configured, default to the local binding.
+ // this should be changed to allow runtime selection
+ if (boundServiceDefinition.getBindings().isEmpty()) {
+ // TODO JFM implement capability for the runtime to choose a binding
+ boundServiceDefinition.addBinding(new LocalBindingDefinition());
+ }
+ }
boolean system = parent.isSystem();
URI targetUri = boundServiceDefinition.getTarget();
Service service = new ServiceImpl(name, parent, serviceContract, targetUri, system);
@@ -166,9 +175,17 @@
public Reference build(CompositeComponent parent,
BoundReferenceDefinition referenceDefinition,
DeploymentContext context) throws BuilderException {
-
String name = referenceDefinition.getName();
ServiceContract<?> contract = referenceDefinition.getServiceContract();
+ if (referenceDefinition.getBindings().isEmpty()) {
+ // if no bindings are configured, default to the local binding.
+ // this should be changed to allow runtime selection
+ if (referenceDefinition.getBindings().isEmpty()) {
+ // TODO JFM implement capability for the runtime to choose a binding
+ referenceDefinition.addBinding(new LocalBindingDefinition());
+ }
+ }
+
Reference reference = new ReferenceImpl(name, parent, contract);
for (BindingDefinition bindingDefinition : referenceDefinition.getBindings()) {
Class<?> bindingClass = bindingDefinition.getClass();
Modified: incubator/tuscany/java/sca/kernel/core/src/main/java/org/apache/tuscany/core/implementation/PojoAtomicComponent.java
URL: http://svn.apache.org/viewvc/incubator/tuscany/java/sca/kernel/core/src/main/java/org/apache/tuscany/core/implementation/PojoAtomicComponent.java?view=diff&rev=495535&r1=495534&r2=495535
==============================================================================
--- incubator/tuscany/java/sca/kernel/core/src/main/java/org/apache/tuscany/core/implementation/PojoAtomicComponent.java (original)
+++ incubator/tuscany/java/sca/kernel/core/src/main/java/org/apache/tuscany/core/implementation/PojoAtomicComponent.java Fri Jan 12 02:14:01 2007
@@ -32,6 +32,7 @@
import org.apache.tuscany.spi.component.TargetInitializationException;
import org.apache.tuscany.spi.component.TargetResolutionException;
import org.apache.tuscany.spi.extension.AtomicComponentExtension;
+import org.apache.tuscany.spi.model.Scope;
import org.apache.tuscany.spi.wire.OutboundWire;
import org.apache.tuscany.core.injection.ArrayMultiplicityObjectFactory;
@@ -116,6 +117,12 @@
throw new TargetDestructionException("Error destroying component instance", getName(), e);
}
}
+ }
+
+ public boolean isOptimizable() {
+ // stateless implementations that require a destroy callback cannot be optimized since the callback is
+ // performed by the JavaTargetInvoker
+ return !(getScope() == Scope.STATELESS && isDestroyable());
}
public Object getTargetInstance() throws TargetResolutionException {
Modified: incubator/tuscany/java/sca/kernel/core/src/main/java/org/apache/tuscany/core/loader/ComponentLoader.java
URL: http://svn.apache.org/viewvc/incubator/tuscany/java/sca/kernel/core/src/main/java/org/apache/tuscany/core/loader/ComponentLoader.java?view=diff&rev=495535&r1=495534&r2=495535
==============================================================================
--- incubator/tuscany/java/sca/kernel/core/src/main/java/org/apache/tuscany/core/loader/ComponentLoader.java (original)
+++ incubator/tuscany/java/sca/kernel/core/src/main/java/org/apache/tuscany/core/loader/ComponentLoader.java Fri Jan 12 02:14:01 2007
@@ -55,7 +55,6 @@
import org.apache.tuscany.spi.loader.UnrecognizedElementException;
import org.apache.tuscany.spi.model.BindingDefinition;
import org.apache.tuscany.spi.model.BoundReferenceDefinition;
-import org.apache.tuscany.spi.model.BoundServiceDefinition;
import org.apache.tuscany.spi.model.ComponentDefinition;
import org.apache.tuscany.spi.model.ComponentType;
import org.apache.tuscany.spi.model.CompositeComponentType;
@@ -157,28 +156,29 @@
}
}
- for (ServiceDefinition serviceDefinition : type.getServices().values()) {
- if (serviceDefinition instanceof BoundServiceDefinition) {
- BoundServiceDefinition bsd = (BoundServiceDefinition) serviceDefinition;
- if (bsd.getBindings().isEmpty()) {
- if (bsd.getBindings().isEmpty()) {
- // TODO JFM implement capability for the runtime to choose a binding
- bsd.addBinding(new LocalBindingDefinition());
- }
- }
- }
- }
- for (ReferenceDefinition referenceDefinition : type.getReferences().values()) {
- if (referenceDefinition instanceof BoundReferenceDefinition) {
- BoundReferenceDefinition bsd = (BoundReferenceDefinition) referenceDefinition;
- if (bsd.getBindings().isEmpty()) {
- if (bsd.getBindings().isEmpty()) {
- // TODO JFM implement capability for the runtime to choose a binding
- bsd.addBinding(new LocalBindingDefinition());
- }
- }
- }
- }
+ // xcv
+// for (ServiceDefinition serviceDefinition : type.getServices().values()) {
+// if (serviceDefinition instanceof BoundServiceDefinition) {
+// BoundServiceDefinition bsd = (BoundServiceDefinition) serviceDefinition;
+// if (bsd.getBindings().isEmpty()) {
+// if (bsd.getBindings().isEmpty()) {
+// // TODO JFM implement capability for the runtime to choose a binding
+// bsd.addBinding(new LocalBindingDefinition());
+// }
+// }
+// }
+// }
+// for (ReferenceDefinition referenceDefinition : type.getReferences().values()) {
+// if (referenceDefinition instanceof BoundReferenceDefinition) {
+// BoundReferenceDefinition bsd = (BoundReferenceDefinition) referenceDefinition;
+// if (bsd.getBindings().isEmpty()) {
+// if (bsd.getBindings().isEmpty()) {
+// // TODO JFM implement capability for the runtime to choose a binding
+// bsd.addBinding(new LocalBindingDefinition());
+// }
+// }
+// }
+// }
validate(componentDefinition);
return componentDefinition;
}
Modified: incubator/tuscany/java/sca/kernel/core/src/main/java/org/apache/tuscany/core/wire/WireUtils.java
URL: http://svn.apache.org/viewvc/incubator/tuscany/java/sca/kernel/core/src/main/java/org/apache/tuscany/core/wire/WireUtils.java?view=diff&rev=495535&r1=495534&r2=495535
==============================================================================
--- incubator/tuscany/java/sca/kernel/core/src/main/java/org/apache/tuscany/core/wire/WireUtils.java (original)
+++ incubator/tuscany/java/sca/kernel/core/src/main/java/org/apache/tuscany/core/wire/WireUtils.java Fri Jan 12 02:14:01 2007
@@ -22,11 +22,10 @@
import java.util.HashMap;
import java.util.Map;
-import org.apache.tuscany.spi.component.AtomicComponent;
+import org.apache.tuscany.spi.component.Component;
import org.apache.tuscany.spi.component.SCAObject;
import static org.apache.tuscany.spi.idl.java.JavaIDLUtils.findMethod;
import org.apache.tuscany.spi.model.Operation;
-import org.apache.tuscany.spi.model.Scope;
import org.apache.tuscany.spi.wire.InboundInvocationChain;
import org.apache.tuscany.spi.wire.InboundWire;
import org.apache.tuscany.spi.wire.Interceptor;
@@ -127,14 +126,7 @@
*/
public static boolean isOptimizable(InboundWire wire) {
SCAObject container = wire.getContainer();
- if (!(container instanceof AtomicComponent)) {
- // optimize only Atomic targets
- // JFM TODO make more generalizable
- return false;
- }
- if (container.getScope() == Scope.STATELESS && ((AtomicComponent) container).isDestroyable()) {
- //Optimizations on stateless targets are not performed if they receive destroy events since a destruction
- // notification must be given through a proxy
+ if ((container instanceof Component) && !((Component) container).isOptimizable()) {
return false;
}
for (InboundInvocationChain chain : wire.getInvocationChains().values()) {
Modified: incubator/tuscany/java/sca/kernel/core/src/main/resources/org/apache/tuscany/core/systemImplementation.scdl
URL: http://svn.apache.org/viewvc/incubator/tuscany/java/sca/kernel/core/src/main/resources/org/apache/tuscany/core/systemImplementation.scdl?view=diff&rev=495535&r1=495534&r2=495535
==============================================================================
--- incubator/tuscany/java/sca/kernel/core/src/main/resources/org/apache/tuscany/core/systemImplementation.scdl (original)
+++ incubator/tuscany/java/sca/kernel/core/src/main/resources/org/apache/tuscany/core/systemImplementation.scdl Fri Jan 12 02:14:01 2007
@@ -27,14 +27,6 @@
name="org.apache.tuscany.core.SystemImplementation">
<!-- System implementation type -->
- <component name="system.bindingLoader">
- <system:implementation.system class="org.apache.tuscany.core.implementation.system.loader.SystemBindingLoader"/>
- </component>
-
- <component name="system.bindingBuilder">
- <system:implementation.system class="org.apache.tuscany.core.implementation.system.builder.SystemBindingBuilder"/>
- </component>
-
<component name="system.componentTypeLoader">
<system:implementation.system class="org.apache.tuscany.core.implementation.system.loader.SystemComponentTypeLoader"/>
</component>
Modified: incubator/tuscany/java/sca/kernel/core/src/test/java/org/apache/tuscany/core/builder/AbstractConnectorImplTestCase.java
URL: http://svn.apache.org/viewvc/incubator/tuscany/java/sca/kernel/core/src/test/java/org/apache/tuscany/core/builder/AbstractConnectorImplTestCase.java?view=diff&rev=495535&r1=495534&r2=495535
==============================================================================
--- incubator/tuscany/java/sca/kernel/core/src/test/java/org/apache/tuscany/core/builder/AbstractConnectorImplTestCase.java (original)
+++ incubator/tuscany/java/sca/kernel/core/src/test/java/org/apache/tuscany/core/builder/AbstractConnectorImplTestCase.java Fri Jan 12 02:14:01 2007
@@ -97,6 +97,7 @@
// create the target
AtomicComponent target = EasyMock.createMock(AtomicComponent.class);
EasyMock.expect(target.getName()).andReturn(TARGET).anyTimes();
+ EasyMock.expect(target.isOptimizable()).andReturn(false).anyTimes();
EasyMock.expect(target.getScope()).andReturn(Scope.COMPOSITE).atLeastOnce();
EasyMock.expect(target.isSystem()).andReturn(false).atLeastOnce();
target.getInboundWire(EasyMock.eq(TARGET_SERVICE));
Added: incubator/tuscany/java/sca/kernel/core/src/test/java/org/apache/tuscany/core/builder/BuilderRegistryNoBindingsTestCase.java
URL: http://svn.apache.org/viewvc/incubator/tuscany/java/sca/kernel/core/src/test/java/org/apache/tuscany/core/builder/BuilderRegistryNoBindingsTestCase.java?view=auto&rev=495535
==============================================================================
--- incubator/tuscany/java/sca/kernel/core/src/test/java/org/apache/tuscany/core/builder/BuilderRegistryNoBindingsTestCase.java (added)
+++ incubator/tuscany/java/sca/kernel/core/src/test/java/org/apache/tuscany/core/builder/BuilderRegistryNoBindingsTestCase.java Fri Jan 12 02:14:01 2007
@@ -0,0 +1,84 @@
+/*
+ * 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.builder;
+
+import java.net.URI;
+import java.util.ArrayList;
+import java.util.List;
+
+import org.apache.tuscany.spi.builder.BuilderRegistry;
+import org.apache.tuscany.spi.component.CompositeComponent;
+import org.apache.tuscany.spi.component.Reference;
+import org.apache.tuscany.spi.component.ReferenceBinding;
+import org.apache.tuscany.spi.component.Service;
+import org.apache.tuscany.spi.component.ServiceBinding;
+import org.apache.tuscany.spi.deployer.DeploymentContext;
+import org.apache.tuscany.spi.model.BindingDefinition;
+import org.apache.tuscany.spi.model.BoundReferenceDefinition;
+import org.apache.tuscany.spi.model.BoundServiceDefinition;
+import org.apache.tuscany.spi.model.Multiplicity;
+
+import junit.framework.TestCase;
+import org.apache.tuscany.core.binding.local.LocalBindingBuilder;
+import org.apache.tuscany.core.binding.local.LocalBindingDefinition;
+import org.apache.tuscany.core.binding.local.LocalReferenceBinding;
+import org.apache.tuscany.core.binding.local.LocalServiceBinding;
+import org.apache.tuscany.core.deployer.RootDeploymentContext;
+import org.easymock.EasyMock;
+
+/**
+ * @version $Rev$ $Date$
+ */
+public class BuilderRegistryNoBindingsTestCase extends TestCase {
+ private DeploymentContext deploymentContext;
+ private CompositeComponent parent;
+ private BuilderRegistry registry;
+
+ public void testNoServiceBindings() throws Exception {
+ ServiceBinding binding = EasyMock.createNiceMock(ServiceBinding.class);
+ EasyMock.replay(binding);
+ List<BindingDefinition> bindingDefs = new ArrayList<BindingDefinition>();
+ BoundServiceDefinition definition = new BoundServiceDefinition("foo", null, bindingDefs, false, new URI("foo"));
+ Service service = registry.build(parent, definition, deploymentContext);
+ assertEquals(1, service.getServiceBindings().size());
+ assertTrue(service.getServiceBindings().get(0) instanceof LocalServiceBinding);
+ }
+
+ public void testReferenceBindingBuilderDispatch() throws Exception {
+ ReferenceBinding binding = EasyMock.createNiceMock(ReferenceBinding.class);
+ EasyMock.replay(binding);
+ List<BindingDefinition> bindingDefs = new ArrayList<BindingDefinition>();
+ BoundReferenceDefinition definition =
+ new BoundReferenceDefinition("foo", null, bindingDefs, Multiplicity.ONE_ONE);
+ Reference reference = registry.build(parent, definition, deploymentContext);
+ assertEquals(1, reference.getReferenceBindings().size());
+ assertTrue(reference.getReferenceBindings().get(0) instanceof LocalReferenceBinding);
+ }
+
+ protected void setUp() throws Exception {
+ super.setUp();
+ deploymentContext = new RootDeploymentContext(null, null, null, null);
+ parent = EasyMock.createNiceMock(CompositeComponent.class);
+ EasyMock.replay(parent);
+ registry = new BuilderRegistryImpl(null, null);
+ registry.register(LocalBindingDefinition.class, new LocalBindingBuilder());
+ }
+
+
+}
Propchange: incubator/tuscany/java/sca/kernel/core/src/test/java/org/apache/tuscany/core/builder/BuilderRegistryNoBindingsTestCase.java
------------------------------------------------------------------------------
svn:eol-style = native
Propchange: incubator/tuscany/java/sca/kernel/core/src/test/java/org/apache/tuscany/core/builder/BuilderRegistryNoBindingsTestCase.java
------------------------------------------------------------------------------
svn:keywords = Rev Date
Modified: incubator/tuscany/java/sca/kernel/core/src/test/java/org/apache/tuscany/core/builder/ConnectorImplTestCase.java
URL: http://svn.apache.org/viewvc/incubator/tuscany/java/sca/kernel/core/src/test/java/org/apache/tuscany/core/builder/ConnectorImplTestCase.java?view=diff&rev=495535&r1=495534&r2=495535
==============================================================================
--- incubator/tuscany/java/sca/kernel/core/src/test/java/org/apache/tuscany/core/builder/ConnectorImplTestCase.java (original)
+++ incubator/tuscany/java/sca/kernel/core/src/test/java/org/apache/tuscany/core/builder/ConnectorImplTestCase.java Fri Jan 12 02:14:01 2007
@@ -104,17 +104,15 @@
EasyMock.verify(outboundWire);
}
- public void testOutboundToInboundNoOptimizationStatelessWithNoDestructor() throws Exception {
+ public void testOutboundToInboundNoOptimizationAtomic() throws Exception {
AtomicComponent container = EasyMock.createNiceMock(AtomicComponent.class);
EasyMock.expect(container.isSystem()).andReturn(false);
EasyMock.expect(container.getScope()).andReturn(Scope.STATELESS);
- EasyMock.expect(container.isDestroyable()).andReturn(false);
+ EasyMock.expect(container.isOptimizable()).andReturn(false);
EasyMock.replay(container);
InboundWire inboundWire = new InboundWireImpl();
inboundWire.setContainer(container);
OutboundWire outboundWire = EasyMock.createMock(OutboundWire.class);
- outboundWire.setTargetWire(EasyMock.eq(inboundWire));
- outboundWire.setOptimizable(EasyMock.eq(true));
EasyMock.expect(outboundWire.getServiceContract()).andReturn(contract);
EasyMock.expect(outboundWire.getContainer()).andReturn(container).atLeastOnce();
outboundWire.getInvocationChains();
@@ -135,6 +133,8 @@
inboundWire.setContainer(container);
OutboundWire outboundWire = EasyMock.createMock(OutboundWire.class);
EasyMock.expect(outboundWire.getServiceContract()).andReturn(contract);
+ outboundWire.setTargetWire(EasyMock.eq(inboundWire));
+ outboundWire.setOptimizable(EasyMock.eq(true));
outboundWire.getInvocationChains();
EasyMock.expectLastCall().andReturn(Collections.emptyMap()).atLeastOnce();
outboundWire.getTargetCallbackInvocationChains();
Modified: incubator/tuscany/java/sca/kernel/core/src/test/java/org/apache/tuscany/core/deployer/BootstrapDeployerTestCase.java
URL: http://svn.apache.org/viewvc/incubator/tuscany/java/sca/kernel/core/src/test/java/org/apache/tuscany/core/deployer/BootstrapDeployerTestCase.java?view=diff&rev=495535&r1=495534&r2=495535
==============================================================================
--- incubator/tuscany/java/sca/kernel/core/src/test/java/org/apache/tuscany/core/deployer/BootstrapDeployerTestCase.java (original)
+++ incubator/tuscany/java/sca/kernel/core/src/test/java/org/apache/tuscany/core/deployer/BootstrapDeployerTestCase.java Fri Jan 12 02:14:01 2007
@@ -19,8 +19,8 @@
package org.apache.tuscany.core.deployer;
import java.net.URL;
-import java.util.Map;
import java.util.Collection;
+import java.util.Map;
import javax.xml.stream.XMLInputFactory;
import org.apache.tuscany.spi.bootstrap.ComponentNames;
@@ -29,6 +29,7 @@
import org.apache.tuscany.spi.component.SCAObject;
import org.apache.tuscany.spi.deployer.DeploymentContext;
import org.apache.tuscany.spi.loader.LoaderException;
+import org.apache.tuscany.spi.model.BindingDefinition;
import org.apache.tuscany.spi.model.BoundServiceDefinition;
import org.apache.tuscany.spi.model.ComponentDefinition;
import org.apache.tuscany.spi.model.ComponentType;
@@ -39,12 +40,10 @@
import org.apache.tuscany.spi.model.PropertyValue;
import org.apache.tuscany.spi.model.ReferenceDefinition;
import org.apache.tuscany.spi.model.ServiceDefinition;
-import org.apache.tuscany.spi.model.BindingDefinition;
import junit.framework.TestCase;
import org.apache.tuscany.core.bootstrap.Bootstrapper;
import org.apache.tuscany.core.bootstrap.DefaultBootstrapper;
-import org.apache.tuscany.core.implementation.system.model.SystemBindingDefinition;
import org.apache.tuscany.core.implementation.system.model.SystemCompositeImplementation;
import org.apache.tuscany.core.mock.component.BasicInterface;
import org.apache.tuscany.core.monitor.NullMonitorFactory;
@@ -85,9 +84,7 @@
assertEquals("service", serviceDefinition.getName());
assertEquals(BasicInterface.class, serviceDefinition.getServiceContract().getInterfaceClass());
Collection<BindingDefinition> bindings = serviceDefinition.getBindings();
- for (BindingDefinition binding : bindings) {
- assertTrue(binding instanceof SystemBindingDefinition);
- }
+ assertTrue(bindings.isEmpty());
// check parse of <component>
Map<String, ComponentDefinition<? extends Implementation<?>>> components = composite.getDeclaredComponents();
Modified: incubator/tuscany/java/sca/kernel/core/src/test/java/org/apache/tuscany/core/implementation/PojoAtomicComponentTestCase.java
URL: http://svn.apache.org/viewvc/incubator/tuscany/java/sca/kernel/core/src/test/java/org/apache/tuscany/core/implementation/PojoAtomicComponentTestCase.java?view=diff&rev=495535&r1=495534&r2=495535
==============================================================================
--- incubator/tuscany/java/sca/kernel/core/src/test/java/org/apache/tuscany/core/implementation/PojoAtomicComponentTestCase.java (original)
+++ incubator/tuscany/java/sca/kernel/core/src/test/java/org/apache/tuscany/core/implementation/PojoAtomicComponentTestCase.java Fri Jan 12 02:14:01 2007
@@ -22,6 +22,7 @@
import org.apache.tuscany.spi.component.AtomicComponent;
import org.apache.tuscany.spi.component.TargetInvokerCreationException;
import org.apache.tuscany.spi.model.Operation;
+import org.apache.tuscany.spi.model.Scope;
import org.apache.tuscany.spi.wire.InboundWire;
import org.apache.tuscany.spi.wire.OutboundWire;
import org.apache.tuscany.spi.wire.TargetInvoker;
@@ -64,6 +65,45 @@
EasyMock.verify(invoker);
}
+ public void testOptimizable() throws Exception {
+ PojoConfiguration config = new PojoConfiguration();
+ config.setInstanceFactory(factory);
+ TestAtomicComponent component = new TestAtomicComponent(config);
+ assertTrue(component.isOptimizable());
+ }
+
+ @SuppressWarnings({"unchecked"})
+ public void testDestroyableButOptimizable() throws Exception {
+ PojoConfiguration config = new PojoConfiguration();
+ config.setInstanceFactory(factory);
+ EventInvoker<Object> invoker = EasyMock.createMock(EventInvoker.class);
+ invoker.invokeEvent(EasyMock.notNull());
+ EasyMock.replay(invoker);
+ config.setDestroyInvoker(invoker);
+ TestAtomicComponent component = new TestAtomicComponent(config);
+ assertTrue(component.isOptimizable());
+ }
+
+ @SuppressWarnings({"unchecked"})
+ public void testStatelessOptimizable() throws Exception {
+ PojoConfiguration config = new PojoConfiguration();
+ config.setInstanceFactory(factory);
+ TestStatelessAtomicComponent component = new TestStatelessAtomicComponent(config);
+ assertTrue(component.isOptimizable());
+ }
+
+ @SuppressWarnings({"unchecked"})
+ public void testNotOptimizable() throws Exception {
+ PojoConfiguration config = new PojoConfiguration();
+ config.setInstanceFactory(factory);
+ EventInvoker<Object> invoker = EasyMock.createMock(EventInvoker.class);
+ invoker.invokeEvent(EasyMock.notNull());
+ EasyMock.replay(invoker);
+ config.setDestroyInvoker(invoker);
+ TestStatelessAtomicComponent component = new TestStatelessAtomicComponent(config);
+ assertFalse(component.isOptimizable());
+ }
+
protected void setUp() throws Exception {
super.setUp();
factory = new PojoObjectFactory<Foo>(Foo.class.getConstructor());
@@ -73,6 +113,30 @@
public TestAtomicComponent(PojoConfiguration configuration) {
super(configuration);
+ }
+
+ public Scope getScope() {
+ return Scope.COMPOSITE;
+ }
+
+ protected ObjectFactory<?> createWireFactory(Class<?> interfaze, OutboundWire wire) {
+ return null;
+ }
+
+ public TargetInvoker createTargetInvoker(String targetName, Operation operation, InboundWire callbackWire)
+ throws TargetInvokerCreationException {
+ return null;
+ }
+ }
+
+ private class TestStatelessAtomicComponent extends PojoAtomicComponent {
+
+ public TestStatelessAtomicComponent(PojoConfiguration configuration) {
+ super(configuration);
+ }
+
+ public Scope getScope() {
+ return Scope.STATELESS;
}
protected ObjectFactory<?> createWireFactory(Class<?> interfaze, OutboundWire wire) {
Modified: incubator/tuscany/java/sca/kernel/core/src/test/java/org/apache/tuscany/core/implementation/composite/CompositeBuilderTestCase.java
URL: http://svn.apache.org/viewvc/incubator/tuscany/java/sca/kernel/core/src/test/java/org/apache/tuscany/core/implementation/composite/CompositeBuilderTestCase.java?view=diff&rev=495535&r1=495534&r2=495535
==============================================================================
--- incubator/tuscany/java/sca/kernel/core/src/test/java/org/apache/tuscany/core/implementation/composite/CompositeBuilderTestCase.java (original)
+++ incubator/tuscany/java/sca/kernel/core/src/test/java/org/apache/tuscany/core/implementation/composite/CompositeBuilderTestCase.java Fri Jan 12 02:14:01 2007
@@ -32,6 +32,7 @@
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.model.BoundReferenceDefinition;
import org.apache.tuscany.spi.model.BoundServiceDefinition;
import org.apache.tuscany.spi.model.ComponentDefinition;
import org.apache.tuscany.spi.model.CompositeComponentType;
@@ -41,10 +42,11 @@
import org.apache.tuscany.spi.model.Scope;
import org.apache.tuscany.spi.model.ServiceContract;
import org.apache.tuscany.spi.model.ServiceDefinition;
-import org.apache.tuscany.spi.model.BoundReferenceDefinition;
import org.apache.tuscany.spi.wire.WireService;
import junit.framework.TestCase;
+import org.apache.tuscany.core.binding.local.LocalBindingBuilder;
+import org.apache.tuscany.core.binding.local.LocalBindingDefinition;
import org.apache.tuscany.core.builder.BuilderRegistryImpl;
import org.apache.tuscany.core.component.scope.CompositeScopeContainer;
import org.apache.tuscany.core.deployer.RootDeploymentContext;
@@ -77,6 +79,7 @@
jBuilder.setWireService(wireService);
builderRegistry.register(JavaImplementation.class, jBuilder);
builderRegistry.register(CompositeImplementation.class, builder);
+ builderRegistry.register(LocalBindingDefinition.class, new LocalBindingBuilder());
builder.setBuilderRegistry(builderRegistry);
CompositeComponent component =
(CompositeComponent) builder.build(parent, createTopComponentDef(), deploymentContext);
@@ -201,5 +204,5 @@
container.start();
deploymentContext = new RootDeploymentContext(null, null, container, null);
}
-
+
}
Modified: incubator/tuscany/java/sca/kernel/core/src/test/java/org/apache/tuscany/core/loader/ComponentLoaderNoBindingTestCase.java
URL: http://svn.apache.org/viewvc/incubator/tuscany/java/sca/kernel/core/src/test/java/org/apache/tuscany/core/loader/ComponentLoaderNoBindingTestCase.java?view=diff&rev=495535&r1=495534&r2=495535
==============================================================================
--- incubator/tuscany/java/sca/kernel/core/src/test/java/org/apache/tuscany/core/loader/ComponentLoaderNoBindingTestCase.java (original)
+++ incubator/tuscany/java/sca/kernel/core/src/test/java/org/apache/tuscany/core/loader/ComponentLoaderNoBindingTestCase.java Fri Jan 12 02:14:01 2007
@@ -28,15 +28,14 @@
import org.apache.tuscany.spi.deployer.DeploymentContext;
import org.apache.tuscany.spi.implementation.java.PojoComponentType;
import org.apache.tuscany.spi.loader.LoaderRegistry;
+import org.apache.tuscany.spi.model.BoundReferenceDefinition;
import org.apache.tuscany.spi.model.BoundServiceDefinition;
import org.apache.tuscany.spi.model.Implementation;
import org.apache.tuscany.spi.model.ModelObject;
import org.apache.tuscany.spi.model.Property;
import org.apache.tuscany.spi.model.ReferenceDefinition;
-import org.apache.tuscany.spi.model.BoundReferenceDefinition;
import junit.framework.TestCase;
-import org.apache.tuscany.core.binding.local.LocalBindingDefinition;
import org.apache.tuscany.core.implementation.java.JavaImplementation;
import org.easymock.EasyMock;
@@ -52,12 +51,12 @@
public void testNoServiceBinding() throws Exception {
loader.load(null, null, reader, null);
- assert service.getBindings().get(0) instanceof LocalBindingDefinition;
+ assert service.getBindings().isEmpty();
}
public void testNoReferenceBinding() throws Exception {
loader.load(null, null, reader, null);
- assert reference.getBindings().get(0) instanceof LocalBindingDefinition;
+ assert reference.getBindings().isEmpty();
}
protected void setUp() throws Exception {
Modified: incubator/tuscany/java/sca/kernel/core/src/test/java/org/apache/tuscany/core/wire/WireOptimizationTestCase.java
URL: http://svn.apache.org/viewvc/incubator/tuscany/java/sca/kernel/core/src/test/java/org/apache/tuscany/core/wire/WireOptimizationTestCase.java?view=diff&rev=495535&r1=495534&r2=495535
==============================================================================
--- incubator/tuscany/java/sca/kernel/core/src/test/java/org/apache/tuscany/core/wire/WireOptimizationTestCase.java (original)
+++ incubator/tuscany/java/sca/kernel/core/src/test/java/org/apache/tuscany/core/wire/WireOptimizationTestCase.java Fri Jan 12 02:14:01 2007
@@ -24,7 +24,6 @@
import org.apache.tuscany.spi.component.Component;
import org.apache.tuscany.spi.model.Operation;
import static org.apache.tuscany.spi.model.Operation.NO_CONVERSATION;
-import org.apache.tuscany.spi.model.Scope;
import org.apache.tuscany.spi.wire.InboundInvocationChain;
import org.apache.tuscany.spi.wire.InboundWire;
import org.apache.tuscany.spi.wire.Interceptor;
@@ -70,6 +69,7 @@
public void testTargetWireInterceptorOptimization() throws Exception {
AtomicComponent component = EasyMock.createNiceMock(AtomicComponent.class);
+ EasyMock.expect(component.isOptimizable()).andReturn(true);
EasyMock.replay(component);
InboundWire wire = new InboundWireImpl();
wire.setContainer(component);
@@ -80,54 +80,16 @@
}
- public void testTargetWireOptimizationDestroyableButNotStateless() throws Exception {
- AtomicComponent component = EasyMock.createNiceMock(AtomicComponent.class);
- EasyMock.expect(component.isDestroyable()).andReturn(true);
- EasyMock.expect(component.getScope()).andReturn(Scope.COMPOSITE);
- EasyMock.replay(component);
- InboundWire wire = new InboundWireImpl();
- wire.setContainer(component);
- InboundInvocationChain chain = new InboundInvocationChainImpl(operation);
- chain.addInterceptor(new OptimizableInterceptor());
- wire.addInvocationChain(operation, chain);
- assertTrue(WireUtils.isOptimizable(wire));
- }
-
- public void testTargetWireOptimizationDestroyableAndStateless() throws Exception {
- AtomicComponent component = EasyMock.createNiceMock(AtomicComponent.class);
- EasyMock.expect(component.isDestroyable()).andReturn(true);
- EasyMock.expect(component.getScope()).andReturn(Scope.STATELESS);
- EasyMock.replay(component);
- InboundWire wire = new InboundWireImpl();
- wire.setContainer(component);
- InboundInvocationChain chain = new InboundInvocationChainImpl(operation);
- chain.addInterceptor(new OptimizableInterceptor());
- wire.addInvocationChain(operation, chain);
- assertFalse(WireUtils.isOptimizable(wire));
- }
-
- public void testTargetWireOptimizationStatelessNotDestroyable() throws Exception {
- AtomicComponent component = EasyMock.createNiceMock(AtomicComponent.class);
- EasyMock.expect(component.isDestroyable()).andReturn(false);
- EasyMock.expect(component.getScope()).andReturn(Scope.STATELESS);
- EasyMock.replay(component);
- InboundWire wire = new InboundWireImpl();
- wire.setContainer(component);
- InboundInvocationChain chain = new InboundInvocationChainImpl(operation);
- chain.addInterceptor(new OptimizableInterceptor());
- wire.addInvocationChain(operation, chain);
- assertTrue(WireUtils.isOptimizable(wire));
- }
-
public void testTargetWireNoOptimizationNonAtomicContainer() throws Exception {
Component component = EasyMock.createNiceMock(Component.class);
+ EasyMock.expect(component.isOptimizable()).andReturn(true);
EasyMock.replay(component);
InboundWire wire = new InboundWireImpl();
wire.setContainer(component);
InboundInvocationChain chain = new InboundInvocationChainImpl(operation);
chain.addInterceptor(new OptimizableInterceptor());
wire.addInvocationChain(operation, chain);
- assertFalse(WireUtils.isOptimizable(wire));
+ assertTrue(WireUtils.isOptimizable(wire));
}
public void testTargetWireNonInterceptorOptimization() throws Exception {
Modified: incubator/tuscany/java/sca/kernel/core/src/test/resources/org/apache/tuscany/core/deployer/boot1-include.scdl
URL: http://svn.apache.org/viewvc/incubator/tuscany/java/sca/kernel/core/src/test/resources/org/apache/tuscany/core/deployer/boot1-include.scdl?view=diff&rev=495535&r1=495534&r2=495535
==============================================================================
--- incubator/tuscany/java/sca/kernel/core/src/test/resources/org/apache/tuscany/core/deployer/boot1-include.scdl (original)
+++ incubator/tuscany/java/sca/kernel/core/src/test/resources/org/apache/tuscany/core/deployer/boot1-include.scdl Fri Jan 12 02:14:01 2007
@@ -27,7 +27,6 @@
<service name="service2" >
<interface.java interface="org.apache.tuscany.core.mock.component.BasicInterface"/>
- <system:binding.system/>
<reference>component2</reference>
</service>
Modified: incubator/tuscany/java/sca/kernel/core/src/test/resources/org/apache/tuscany/core/deployer/boot1.scdl
URL: http://svn.apache.org/viewvc/incubator/tuscany/java/sca/kernel/core/src/test/resources/org/apache/tuscany/core/deployer/boot1.scdl?view=diff&rev=495535&r1=495534&r2=495535
==============================================================================
--- incubator/tuscany/java/sca/kernel/core/src/test/resources/org/apache/tuscany/core/deployer/boot1.scdl (original)
+++ incubator/tuscany/java/sca/kernel/core/src/test/resources/org/apache/tuscany/core/deployer/boot1.scdl Fri Jan 12 02:14:01 2007
@@ -22,7 +22,6 @@
name="boot1">
<service name="service" >
<interface.java interface="org.apache.tuscany.core.mock.component.BasicInterface"/>
- <system:binding.system/>
<reference>component</reference>
</service>
Modified: incubator/tuscany/java/sca/kernel/core/src/test/resources/org/apache/tuscany/core/deployer/boot2.scdl
URL: http://svn.apache.org/viewvc/incubator/tuscany/java/sca/kernel/core/src/test/resources/org/apache/tuscany/core/deployer/boot2.scdl?view=diff&rev=495535&r1=495534&r2=495535
==============================================================================
--- incubator/tuscany/java/sca/kernel/core/src/test/resources/org/apache/tuscany/core/deployer/boot2.scdl (original)
+++ incubator/tuscany/java/sca/kernel/core/src/test/resources/org/apache/tuscany/core/deployer/boot2.scdl Fri Jan 12 02:14:01 2007
@@ -28,7 +28,6 @@
<!-- expose Deployer API as a service -->
<service name="deployer" >
<interface.java interface="org.apache.tuscany.spi.deployer.Deployer"/>
- <system:binding.system/>
<reference>deployerImpl</reference>
</service>
Modified: incubator/tuscany/java/sca/kernel/spi/src/main/java/org/apache/tuscany/spi/component/Component.java
URL: http://svn.apache.org/viewvc/incubator/tuscany/java/sca/kernel/spi/src/main/java/org/apache/tuscany/spi/component/Component.java?view=diff&rev=495535&r1=495534&r2=495535
==============================================================================
--- incubator/tuscany/java/sca/kernel/spi/src/main/java/org/apache/tuscany/spi/component/Component.java (original)
+++ incubator/tuscany/java/sca/kernel/spi/src/main/java/org/apache/tuscany/spi/component/Component.java Fri Jan 12 02:14:01 2007
@@ -43,6 +43,27 @@
void setScopeContainer(ScopeContainer scopeContainer);
/**
+ * Returns the default property values associated with the component.
+ *
+ * @return default property values associated with the component.
+ */
+ Map<String, PropertyValue<?>> getDefaultPropertyValues();
+
+ /**
+ * Sets the default property values associated with the component.
+ *
+ * @param defaultPropertyValues Default property values associated with the component.
+ */
+ void setDefaultPropertyValues(Map<String, PropertyValue<?>> defaultPropertyValues);
+
+ /**
+ * Returns true if invocation dispatching can be optimized, i.e. invocation chains are not required
+ *
+ * @return true if invocation dispatching can be optimized, i.e. invocation chains are not required
+ */
+ boolean isOptimizable();
+
+ /**
* Returns the wire associated with the given service name or null if not found.
*
* @return the wire associated with the given service name or null if not found.
@@ -75,19 +96,5 @@
*/
TargetInvoker createTargetInvoker(String targetName, Operation operation, InboundWire callbackWire)
throws TargetInvokerCreationException;
-
- /**
- * Returns the default property values associated with the component.
- *
- * @return default property values associated with the component.
- */
- Map<String, PropertyValue<?>> getDefaultPropertyValues();
-
- /**
- * Sets the default property values associated with the component.
- *
- * @param defaultPropertyValues Default property values associated with the component.
- */
- void setDefaultPropertyValues(Map<String, PropertyValue<?>> defaultPropertyValues);
}
Modified: incubator/tuscany/java/sca/kernel/spi/src/main/java/org/apache/tuscany/spi/component/SCAObject.java
URL: http://svn.apache.org/viewvc/incubator/tuscany/java/sca/kernel/spi/src/main/java/org/apache/tuscany/spi/component/SCAObject.java?view=diff&rev=495535&r1=495534&r2=495535
==============================================================================
--- incubator/tuscany/java/sca/kernel/spi/src/main/java/org/apache/tuscany/spi/component/SCAObject.java (original)
+++ incubator/tuscany/java/sca/kernel/spi/src/main/java/org/apache/tuscany/spi/component/SCAObject.java Fri Jan 12 02:14:01 2007
@@ -66,8 +66,7 @@
Map<Object, Object> getExtensions();
/**
- * Called to signal that the composite should perform any required steps prior to registration with its parent such
- * as wiring of its children
+ * Called to signal that the composite should perform any initizalization
*/
void prepare() throws PrepareException;
Modified: incubator/tuscany/java/sca/kernel/spi/src/main/java/org/apache/tuscany/spi/extension/AbstractComponentExtension.java
URL: http://svn.apache.org/viewvc/incubator/tuscany/java/sca/kernel/spi/src/main/java/org/apache/tuscany/spi/extension/AbstractComponentExtension.java?view=diff&rev=495535&r1=495534&r2=495535
==============================================================================
--- incubator/tuscany/java/sca/kernel/spi/src/main/java/org/apache/tuscany/spi/extension/AbstractComponentExtension.java (original)
+++ incubator/tuscany/java/sca/kernel/spi/src/main/java/org/apache/tuscany/spi/extension/AbstractComponentExtension.java Fri Jan 12 02:14:01 2007
@@ -59,4 +59,7 @@
this.defaultPropertyValues = defaultPropertyValues;
}
+ public boolean isOptimizable() {
+ return false;
+ }
}
Modified: incubator/tuscany/java/sca/services/transaction/transaction.geronimo/src/main/resources/META-INF/sca/geronimo.jta.scdl
URL: http://svn.apache.org/viewvc/incubator/tuscany/java/sca/services/transaction/transaction.geronimo/src/main/resources/META-INF/sca/geronimo.jta.scdl?view=diff&rev=495535&r1=495534&r2=495535
==============================================================================
--- incubator/tuscany/java/sca/services/transaction/transaction.geronimo/src/main/resources/META-INF/sca/geronimo.jta.scdl (original)
+++ incubator/tuscany/java/sca/services/transaction/transaction.geronimo/src/main/resources/META-INF/sca/geronimo.jta.scdl Fri Jan 12 02:14:01 2007
@@ -27,7 +27,6 @@
<service name="TransactionManagerService">
<interface.java interface = "javax.transaction.TransactionManager"/>
<reference>TransactionManager</reference>
- <system:binding.system/>
</service>
<dependency xmlns="http://tuscany.apache.org/xmlns/1.0-SNAPSHOT">
---------------------------------------------------------------------
To unsubscribe, e-mail: tuscany-commits-unsubscribe@ws.apache.org
For additional commands, e-mail: tuscany-commits-help@ws.apache.org