You are viewing a plain text version of this content. The canonical link for it is here.
Posted to dev@tuscany.apache.org by ant elder <an...@apache.org> on 2007/06/06 00:11:01 UTC
Do we want the simpler spi? was: svn commit: r544528 - in /incubator/tuscany/java/sca: modules/extension-helper/src/main/java/org/apache/tuscany/sca/spi/impl/ samples/helloworld-ws-reference/src/main/java/helloworld/ samples/helloworld-ws-reference/s
I'm not sure i agree about the sample, wont it be even more confusing having
it use the old way? Maybe if there was something the sample was doing that
required the complex SPI but while there isn't wont it just seem odd to do
it an unnecessarily complicated way.
Do we even want this simpler SPI? If we do i think we should use it, if we
don't we should scrap it now, which I'm fine with doing. Maybe it would be
better to just move some of the simplifications to the existing SPI?
...ant
On 6/5/07, Jean-Sebastien Delfino <js...@apache.org> wrote:
>
> Ant,
>
> This commit introduced breaking changes to the helloworld-ws-reference
> and helloworld-ws-service samples, using some kind of <binding.console>.
> Probably an oversight :)
>
> More important, I think we should revert to the official Tuscany SPIs in
> the implementation-crud sample, as it is our main sample to show people
> how to develop extensions using these SPIs.
>
> I'll be happy to have another new sample showing how to use the new
> simplified extension layer, as I think that this new layer will be very
> useful.
>
> This will avoid confusion, and will also allow people to compare and
> choose between the two layers and ways to develop extensions.
>
> Thanks...
>
> antelder@apache.org wrote:
> > Author: antelder
> > Date: Tue Jun 5 09:00:23 2007
> > New Revision: 544528
> >
> > URL: http://svn.apache.org/viewvc?view=rev&rev=544528
> > Log:
> > Change implementation-crud sample to use extension-helper instead of
> core spi (hoping that may prompt some review comments on if the
> extension-helper needs changes)
> >
> > Added:
> >
> incubator/tuscany/java/sca/samples/implementation-crud/src/main/java/crud/CRUDImplementation.java
> >
> incubator/tuscany/java/sca/samples/implementation-crud/src/main/java/crud/CRUDImplementationActivator.java
> (with props)
> >
> incubator/tuscany/java/sca/samples/implementation-crud/src/main/java/crud/CRUDInvoker.java
> (with props)
> >
> incubator/tuscany/java/sca/samples/implementation-crud/src/main/resources/META-INF/services/org.apache.tuscany.sca.spi.ImplementationActivator
> > - copied, changed from r544134,
> incubator/tuscany/java/sca/samples/implementation-crud/src/main/resources/META-INF/services/org.apache.tuscany.sca.core.ModuleActivator
> > Removed:
> >
> incubator/tuscany/java/sca/samples/implementation-crud/src/main/java/crud/CRUDImplementationFactory.java
> >
> incubator/tuscany/java/sca/samples/implementation-crud/src/main/java/crud/DefaultCRUDImplementationFactory.java
> >
> incubator/tuscany/java/sca/samples/implementation-crud/src/main/java/crud/impl/
> >
> incubator/tuscany/java/sca/samples/implementation-crud/src/main/java/crud/module/
> >
> incubator/tuscany/java/sca/samples/implementation-crud/src/main/java/crud/provider/
> >
> incubator/tuscany/java/sca/samples/implementation-crud/src/main/resources/META-INF/services/org.apache.tuscany.sca.core.ModuleActivator
> > Modified:
> >
> incubator/tuscany/java/sca/modules/extension-helper/src/main/java/org/apache/tuscany/sca/spi/impl/ImplementationsActivator.java
> >
> incubator/tuscany/java/sca/modules/extension-helper/src/main/java/org/apache/tuscany/sca/spi/impl/SCDLProcessor.java
> >
> incubator/tuscany/java/sca/samples/helloworld-ws-reference/src/main/java/helloworld/HelloWorldClient.java
> >
> incubator/tuscany/java/sca/samples/helloworld-ws-reference/src/main/resources/helloworldwsclient.composite
> >
> incubator/tuscany/java/sca/samples/helloworld-ws-service/src/main/resources/helloworldws.composite
> > incubator/tuscany/java/sca/samples/implementation-crud/pom.xml
> >
> > Modified:
> incubator/tuscany/java/sca/modules/extension-helper/src/main/java/org/apache/tuscany/sca/spi/impl/ImplementationsActivator.java
> > URL:
> http://svn.apache.org/viewvc/incubator/tuscany/java/sca/modules/extension-helper/src/main/java/org/apache/tuscany/sca/spi/impl/ImplementationsActivator.java?view=diff&rev=544528&r1=544527&r2=544528
> >
> ==============================================================================
> > ---
> incubator/tuscany/java/sca/modules/extension-helper/src/main/java/org/apache/tuscany/sca/spi/impl/ImplementationsActivator.java
> (original)
> > +++
> incubator/tuscany/java/sca/modules/extension-helper/src/main/java/org/apache/tuscany/sca/spi/impl/ImplementationsActivator.java
> Tue Jun 5 09:00:23 2007
> > @@ -68,7 +68,7 @@
> >
> > Class<Implementation> implClass =
> implementationActivator.getImplementationClass();
> > QName scdlQName = implementationActivator.getSCDLQName();
> > - staxProcessors.addArtifactProcessor(new
> SCDLProcessor(assemblyFactory, scdlQName, implClass));
> > + staxProcessors.addArtifactProcessor(new
> SCDLProcessor(assemblyFactory, scdlQName, implClass, registry, factories));
> >
> > if (implementationActivator.getImplementationClass() !=
> null && providerFactories != null) {
> > addImplementationProvider(implementationActivator,
> providerFactories);
> >
> > Modified:
> incubator/tuscany/java/sca/modules/extension-helper/src/main/java/org/apache/tuscany/sca/spi/impl/SCDLProcessor.java
> > URL:
> http://svn.apache.org/viewvc/incubator/tuscany/java/sca/modules/extension-helper/src/main/java/org/apache/tuscany/sca/spi/impl/SCDLProcessor.java?view=diff&rev=544528&r1=544527&r2=544528
> >
> ==============================================================================
> > ---
> incubator/tuscany/java/sca/modules/extension-helper/src/main/java/org/apache/tuscany/sca/spi/impl/SCDLProcessor.java
> (original)
> > +++
> incubator/tuscany/java/sca/modules/extension-helper/src/main/java/org/apache/tuscany/sca/spi/impl/SCDLProcessor.java
> Tue Jun 5 09:00:23 2007
> > @@ -21,10 +21,13 @@
> >
> > import static javax.xml.stream.XMLStreamConstants.END_ELEMENT;
> >
> > +import java.lang.reflect.Constructor;
> > import java.lang.reflect.Method;
> > +import java.util.ArrayList;
> > import java.util.Arrays;
> > import java.util.HashMap;
> > import java.util.HashSet;
> > +import java.util.List;
> > import java.util.Map;
> > import java.util.Set;
> >
> > @@ -37,6 +40,8 @@
> > import org.apache.tuscany.sca.assembly.Implementation;
> > import
> org.apache.tuscany.sca.contribution.service.ContributionReadException;
> > import
> org.apache.tuscany.sca.contribution.service.ContributionWriteException;
> > +import org.apache.tuscany.sca.core.ExtensionPointRegistry;
> > +import org.apache.tuscany.sca.core.ModelFactoryExtensionPoint;
> > import org.apache.tuscany.sca.spi.utils.AbstractStAXArtifactProcessor;
> > import org.apache.tuscany.sca.spi.utils.DynamicImplementation;
> >
> > @@ -48,14 +53,18 @@
> >
> > protected QName scdlQName;
> > protected Class<Implementation> implementationClass;
> > + protected ExtensionPointRegistry registry;
> > + protected ModelFactoryExtensionPoint factories;
> >
> > protected Map<String, Method> attributeSetters;
> > protected Method elementTextSetter;
> >
> > - public SCDLProcessor(AssemblyFactory assemblyFactory, QName
> scdlQName, Class<Implementation> implementationClass) {
> > + public SCDLProcessor(AssemblyFactory assemblyFactory, QName
> scdlQName, Class<Implementation> implementationClass, ExtensionPointRegistry
> registry, ModelFactoryExtensionPoint factories) {
> > super(assemblyFactory);
> > this.scdlQName = scdlQName;
> > this.implementationClass = implementationClass;
> > + this.registry = registry;
> > + this.factories = factories;
> > initAttributes();
> > }
> >
> > @@ -72,6 +81,23 @@
> > }
> > }
> >
> > + private Object[] getImplConstrArgs() {
> > + Constructor[] cs = implementationClass.getConstructors();
> > + if (cs.length != 1) {
> > + throw new IllegalArgumentException("Implementation class
> must have a single constructor: "+ implementationClass.getName());
> > + }
> > + List args = new ArrayList();
> > + for (Class c : cs[0].getParameterTypes()) {
> > + Object o = factories.getFactory(c);
> > + if (o == null) {
> > + o = registry.getExtensionPoint(c);
> > + }
> > + args.add(o);
> > + }
> > + return args.toArray();
> > + }
> > +
> > +
> > public QName getArtifactType() {
> > return scdlQName;
> > }
> > @@ -83,7 +109,7 @@
> > public Implementation read(XMLStreamReader reader) throws
> ContributionReadException, XMLStreamException {
> > Implementation impl;
> > try {
> > - impl = implementationClass.newInstance();
> > + impl =
> (Implementation)implementationClass.getConstructors()[0].newInstance(getImplConstrArgs());
> > } catch (Exception e) {
> > throw new RuntimeException(e);
> > }
> >
> > Modified:
> incubator/tuscany/java/sca/samples/helloworld-ws-reference/src/main/java/helloworld/HelloWorldClient.java
> > URL:
> http://svn.apache.org/viewvc/incubator/tuscany/java/sca/samples/helloworld-ws-reference/src/main/java/helloworld/HelloWorldClient.java?view=diff&rev=544528&r1=544527&r2=544528
> >
> ==============================================================================
> > ---
> incubator/tuscany/java/sca/samples/helloworld-ws-reference/src/main/java/helloworld/HelloWorldClient.java
> (original)
> > +++
> incubator/tuscany/java/sca/samples/helloworld-ws-reference/src/main/java/helloworld/HelloWorldClient.java
> Tue Jun 5 09:00:23 2007
> > @@ -30,8 +30,10 @@
> > SCADomain scaDomain = SCADomain.newInstance("
> helloworldwsclient.composite");
> > HelloWorldService helloWorldService = scaDomain.getService(
> HelloWorldService.class, "HelloWorldServiceComponent");
> >
> > - String value = helloWorldService.getGreetings("World");
> > - System.out.println(value);
> > +// String value = helloWorldService.getGreetings("World");
> > +// System.out.println(value);
> > +
> > + Thread.sleep(900000);
> >
> > scaDomain.close();
> > }
> >
> > Modified:
> incubator/tuscany/java/sca/samples/helloworld-ws-reference/src/main/resources/helloworldwsclient.composite
> > URL:
> http://svn.apache.org/viewvc/incubator/tuscany/java/sca/samples/helloworld-ws-reference/src/main/resources/helloworldwsclient.composite?view=diff&rev=544528&r1=544527&r2=544528
> >
> ==============================================================================
> > ---
> incubator/tuscany/java/sca/samples/helloworld-ws-reference/src/main/resources/helloworldwsclient.composite
> (original)
> > +++
> incubator/tuscany/java/sca/samples/helloworld-ws-reference/src/main/resources/helloworldwsclient.composite
> Tue Jun 5 09:00:23 2007
> > @@ -22,13 +22,18 @@
> > xmlns:hw="http://helloworld"
> > name="helloworldwsclient">
> >
> > + <service name="HelloWorldService"
> promote="HelloWorldServiceComponent">
> > + <interface.java interface="helloworld.HelloWorldService" />
> > + <binding.console/>
> > + </service>
> > +
> > <component name="HelloWorldServiceComponent">
> > <implementation.java class="helloworld.HelloWorldServiceComponent
> "/>
> > </component>
> >
> > <reference name="HelloWorldService"
> promote="HelloWorldServiceComponent/helloWorldService">
> > <interface.java interface="helloworld.HelloWorldService" />
> > - <binding.ws wsdlElement="
> http://helloworld#wsdl.port(HelloWorldService/HelloWorldSoapPort)"/>
> > + <binding.console/>
> > </reference>
> >
> > </composite>
> >
> > Modified:
> incubator/tuscany/java/sca/samples/helloworld-ws-service/src/main/resources/helloworldws.composite
> > URL:
> http://svn.apache.org/viewvc/incubator/tuscany/java/sca/samples/helloworld-ws-service/src/main/resources/helloworldws.composite?view=diff&rev=544528&r1=544527&r2=544528
> >
> ==============================================================================
> > ---
> incubator/tuscany/java/sca/samples/helloworld-ws-service/src/main/resources/helloworldws.composite
> (original)
> > +++
> incubator/tuscany/java/sca/samples/helloworld-ws-service/src/main/resources/helloworldws.composite
> Tue Jun 5 09:00:23 2007
> > @@ -22,11 +22,12 @@
> > xmlns:hw="http://helloworld"
> > name="helloworldws">
> >
> > - <component name="HelloWorldServiceComponent">
> > - <service name="HelloWorldService">
> > + <service name="HelloWorldService"
> promote="HelloWorldServiceComponent">
> > <interface.wsdl interface="
> http://helloworld#wsdl.interface(HelloWorld)" />
> > <binding.ws />
> > </service>
> > +
> > + <component name="HelloWorldServiceComponent">
> > <implementation.java class="helloworld.HelloWorldImpl" />
> > </component>
> >
> >
> > Modified: incubator/tuscany/java/sca/samples/implementation-crud/pom.xml
> > URL:
> http://svn.apache.org/viewvc/incubator/tuscany/java/sca/samples/implementation-crud/pom.xml?view=diff&rev=544528&r1=544527&r2=544528
> >
> ==============================================================================
> > --- incubator/tuscany/java/sca/samples/implementation-crud/pom.xml
> (original)
> > +++ incubator/tuscany/java/sca/samples/implementation-crud/pom.xml Tue
> Jun 5 09:00:23 2007
> > @@ -36,15 +36,10 @@
> > </repositories>
> >
> > <dependencies>
> > - <dependency>
> > - <groupId>org.apache.tuscany.sca</groupId>
> > - <artifactId>sca-api</artifactId>
> > - <version>1.0-incubating-SNAPSHOT</version>
> > - </dependency>
> >
> > <dependency>
> > <groupId>org.apache.tuscany.sca</groupId>
> > - <artifactId>tuscany-host-embedded</artifactId>
> > + <artifactId>tuscany-extension-helper</artifactId>
> > <version>1.0-incubating-SNAPSHOT</version>
> > </dependency>
> >
> > @@ -52,7 +47,7 @@
> > <groupId>org.apache.tuscany.sca</groupId>
> > <artifactId>tuscany-interface-java-xml</artifactId>
> > <version>1.0-incubating-SNAPSHOT</version>
> > - </dependency>
> > + </dependency>
> >
> > <dependency>
> > <groupId>junit</groupId>
> >
> > Added:
> incubator/tuscany/java/sca/samples/implementation-crud/src/main/java/crud/CRUDImplementation.java
> > URL:
> http://svn.apache.org/viewvc/incubator/tuscany/java/sca/samples/implementation-crud/src/main/java/crud/CRUDImplementation.java?view=auto&rev=544528
> >
> ==============================================================================
> > ---
> incubator/tuscany/java/sca/samples/implementation-crud/src/main/java/crud/CRUDImplementation.java
> (added)
> > +++
> incubator/tuscany/java/sca/samples/implementation-crud/src/main/java/crud/CRUDImplementation.java
> Tue Jun 5 09:00:23 2007
> > @@ -0,0 +1,79 @@
> > +/*
> > + * 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 crud;
> > +
> > +import java.util.Collections;
> > +import java.util.List;
> > +
> > +import org.apache.tuscany.sca.assembly.AssemblyFactory;
> > +import org.apache.tuscany.sca.assembly.Service;
> > +import org.apache.tuscany.sca.interfacedef.InvalidInterfaceException;
> > +import
> org.apache.tuscany.sca.interfacedef.java.DefaultJavaInterfaceFactory;
> > +import org.apache.tuscany.sca.interfacedef.java.JavaInterface;
> > +import org.apache.tuscany.sca.interfacedef.java.JavaInterfaceContract;
> > +import org.apache.tuscany.sca.interfacedef.java.JavaInterfaceFactory;
> > +import
> org.apache.tuscany.sca.interfacedef.java.introspect.ExtensibleJavaInterfaceIntrospector
> ;
> > +import
> org.apache.tuscany.sca.interfacedef.java.introspect.JavaInterfaceIntrospector
> ;
> > +import
> org.apache.tuscany.sca.interfacedef.java.introspect.JavaInterfaceIntrospectorExtensionPoint
> ;
> > +import org.apache.tuscany.sca.spi.utils.AbstractImplementation;
> > +
> > +
> > +/**
> > + * The model representing a sample CRUD implementation in an SCA
> assembly model.
> > + */
> > +public class CRUDImplementation extends AbstractImplementation {
> > +
> > + private Service crudService;
> > + private String directory;
> > +
> > + public CRUDImplementation(AssemblyFactory assemblyFactory,
> > + JavaInterfaceIntrospectorExtensionPoint
> visitors) {
> > +
> > + // CRUD implementation always provide a single service
> exposing
> > + // the CRUD interface, and have no references and
> properties
> > + crudService = assemblyFactory.createService();
> > + crudService.setName("CRUD");
> > +
> > + JavaInterfaceFactory javaFactory = new
> DefaultJavaInterfaceFactory();
> > + JavaInterfaceIntrospector introspector = new
> ExtensibleJavaInterfaceIntrospector(javaFactory, visitors);
> > +
> > + JavaInterface javaInterface;
> > + try {
> > + javaInterface = introspector.introspect(CRUD.class);
> > + } catch (InvalidInterfaceException e) {
> > + throw new IllegalArgumentException(e);
> > + }
> > + JavaInterfaceContract interfaceContract =
> javaFactory.createJavaInterfaceContract();
> > + interfaceContract.setInterface(javaInterface);
> > + crudService.setInterfaceContract(interfaceContract);
> > + }
> > +
> > + public String getDirectory() {
> > + return directory;
> > + }
> > +
> > + public void setDirectory(String directory) {
> > + this.directory = directory;
> > + }
> > +
> > + public List<Service> getServices() {
> > + // The sample CRUD implementation provides a single fixed CRUD
> service
> > + return Collections.singletonList(crudService);
> > + }
> > +}
> >
> > Added:
> incubator/tuscany/java/sca/samples/implementation-crud/src/main/java/crud/CRUDImplementationActivator.java
> > URL:
> http://svn.apache.org/viewvc/incubator/tuscany/java/sca/samples/implementation-crud/src/main/java/crud/CRUDImplementationActivator.java?view=auto&rev=544528
> >
> ==============================================================================
> > ---
> incubator/tuscany/java/sca/samples/implementation-crud/src/main/java/crud/CRUDImplementationActivator.java
> (added)
> > +++
> incubator/tuscany/java/sca/samples/implementation-crud/src/main/java/crud/CRUDImplementationActivator.java
> Tue Jun 5 09:00:23 2007
> > @@ -0,0 +1,51 @@
> > +/*
> > + * 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 crud;
> > +
> > +import javax.xml.namespace.QName;
> > +
> > +import org.apache.tuscany.sca.interfacedef.Operation;
> > +import org.apache.tuscany.sca.invocation.Invoker;
> > +import org.apache.tuscany.sca.runtime.RuntimeComponent;
> > +import org.apache.tuscany.sca.spi.ImplementationActivator;
> > +import org.apache.tuscany.sca.spi.InvokerFactory;
> > +
> > +import crud.backend.ResourceManager;
> > +
> > +public class CRUDImplementationActivator implements
> ImplementationActivator<CRUDImplementation> {
> > +
> > + private static final QName IMPLEMENTATION_CRUD = new QName("
> http://crud", "implementation.crud");
> > +
> > + public InvokerFactory createInvokerFactory(RuntimeComponent rc,
> final CRUDImplementation implementation) {
> > + return new InvokerFactory() {
> > + public Invoker createInvoker(Operation operation) {
> > + return new CRUDInvoker(operation, new ResourceManager(
> implementation.getDirectory()));
> > + }};
> > + }
> > +
> > + public Class<CRUDImplementation> getImplementationClass() {
> > + return CRUDImplementation.class;
> > + }
> > +
> > + public QName getSCDLQName() {
> > + return IMPLEMENTATION_CRUD;
> > + }
> > +
> > +}
> >
> > Propchange:
> incubator/tuscany/java/sca/samples/implementation-crud/src/main/java/crud/CRUDImplementationActivator.java
> >
> ------------------------------------------------------------------------------
> > svn:eol-style = native
> >
> > Propchange:
> incubator/tuscany/java/sca/samples/implementation-crud/src/main/java/crud/CRUDImplementationActivator.java
> >
> ------------------------------------------------------------------------------
> > svn:keywords = Rev Date
> >
> > Added:
> incubator/tuscany/java/sca/samples/implementation-crud/src/main/java/crud/CRUDInvoker.java
> > URL:
> http://svn.apache.org/viewvc/incubator/tuscany/java/sca/samples/implementation-crud/src/main/java/crud/CRUDInvoker.java?view=auto&rev=544528
> >
> ==============================================================================
> > ---
> incubator/tuscany/java/sca/samples/implementation-crud/src/main/java/crud/CRUDInvoker.java
> (added)
> > +++
> incubator/tuscany/java/sca/samples/implementation-crud/src/main/java/crud/CRUDInvoker.java
> Tue Jun 5 09:00:23 2007
> > @@ -0,0 +1,77 @@
> > +/*
> > + * 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 crud;
> > +
> > +import java.lang.reflect.InvocationTargetException;
> > +
> > +import org.apache.tuscany.sca.interfacedef.Operation;
> > +import org.apache.tuscany.sca.invocation.Invoker;
> > +import org.apache.tuscany.sca.invocation.Message;
> > +
> > +import crud.backend.ResourceManager;
> > +
> > +/**
> > + * Implements a target invoker for CRUD component implementations.
> > + *
> > + * The target invoker is responsible for dispatching invocations to the
> particular
> > + * component implementation logic. In this example we are simply
> delegating the
> > + * CRUD operation invocations to the corresponding methods on our fake
> > + * resource manager.
> > + */
> > +public class CRUDInvoker implements Invoker {
> > + private Operation operation;
> > + private ResourceManager resourceManager;
> > +
> > + public CRUDInvoker(Operation operation, ResourceManager
> resourceManager) {
> > + this.operation = operation;
> > + this.resourceManager = resourceManager;
> > + }
> > +
> > + public Message invoke(Message msg) {
> > + try {
> > + Object[] args = msg.getBody();
> > + Object resp = doTheWork(args);
> > + msg.setBody(resp);
> > + } catch (InvocationTargetException e) {
> > + msg.setFaultBody(e.getCause());
> > + }
> > + return msg;
> > + }
> > +
> > + public Object doTheWork(Object[] args) throws
> InvocationTargetException {
> > + if (operation.getName().equals("create")) {
> > + return resourceManager.createResource(args[0]);
> > +
> > + } else if (operation.getName().equals("retrieve")) {
> > + return resourceManager.retrieveResource((String)args[0]);
> > +
> > + } else if (operation.getName().equals("update")) {
> > + return resourceManager.updateResource((String)args[0],
> args[1]);
> > +
> > + } else if (operation.getName().equals("delete")) {
> > + resourceManager.deleteResource((String)args[0]);
> > + return null;
> > +
> > + } else {
> > + return null;
> > + }
> > + }
> > +
> > +}
> >
> > Propchange:
> incubator/tuscany/java/sca/samples/implementation-crud/src/main/java/crud/CRUDInvoker.java
> >
> ------------------------------------------------------------------------------
> > svn:eol-style = native
> >
> > Propchange:
> incubator/tuscany/java/sca/samples/implementation-crud/src/main/java/crud/CRUDInvoker.java
> >
> ------------------------------------------------------------------------------
> > svn:keywords = Rev Date
> >
> > Copied:
> incubator/tuscany/java/sca/samples/implementation-crud/src/main/resources/META-INF/services/org.apache.tuscany.sca.spi.ImplementationActivator
> (from r544134,
> incubator/tuscany/java/sca/samples/implementation-crud/src/main/resources/META-INF/services/org.apache.tuscany.sca.core.ModuleActivator)
> > URL:
> http://svn.apache.org/viewvc/incubator/tuscany/java/sca/samples/implementation-crud/src/main/resources/META-INF/services/org.apache.tuscany.sca.spi.ImplementationActivator?view=diff&rev=544528&p1=incubator/tuscany/java/sca/samples/implementation-crud/src/main/resources/META-INF/services/org.apache.tuscany.sca.core.ModuleActivator&r1=544134&p2=incubator/tuscany/java/sca/samples/implementation-crud/src/main/resources/META-INF/services/org.apache.tuscany.sca.spi.ImplementationActivator&r2=544528
> >
> ==============================================================================
> > ---
> incubator/tuscany/java/sca/samples/implementation-crud/src/main/resources/META-INF/services/org.apache.tuscany.sca.core.ModuleActivator
> (original)
> > +++
> incubator/tuscany/java/sca/samples/implementation-crud/src/main/resources/META-INF/services/org.apache.tuscany.sca.spi.ImplementationActivator
> Tue Jun 5 09:00:23 2007
> > @@ -15,4 +15,4 @@
> > # specific language governing permissions and limitations
> > # under the License.
> > # Implementation class for the ExtensionActivator
> > -crud.module.CRUDModuleActivator
> > +crud.CRUDImplementationActivator
> >
> >
> >
> > ---------------------------------------------------------------------
> > To unsubscribe, e-mail: tuscany-commits-unsubscribe@ws.apache.org
> > For additional commands, e-mail: tuscany-commits-help@ws.apache.org
> >
> >
> >
>
>
> --
> Jean-Sebastien
>
>
> ---------------------------------------------------------------------
> To unsubscribe, e-mail: tuscany-dev-unsubscribe@ws.apache.org
> For additional commands, e-mail: tuscany-dev-help@ws.apache.org
>
>
Re: Do we want the simpler spi? was: svn commit: r544528 - in /incubator/tuscany/java/sca:
modules/extension-helper/src/main/java/org/apache/tuscany/sca/spi/impl/ samples/helloworld-ws-reference/src/main/java/helloworld/
samples/helloworld-ws-reference/s
Posted by Jean-Sebastien Delfino <js...@apache.org>.
ant elder wrote:
> I'm not sure i agree about the sample, wont it be even more confusing
> having
> it use the old way? Maybe if there was something the sample was doing
> that
> required the complex SPI but while there isn't wont it just seem odd
> to do
> it an unnecessarily complicated way.
>
> Do we even want this simpler SPI? If we do i think we should use it,
> if we
> don't we should scrap it now, which I'm fine with doing. Maybe it
> would be
> better to just move some of the simplifications to the existing SPI?
>
> ...ant
>
I'm still on the path that we were discussing earlier in [1], and I
thought we were pursuing:
- a simplified extension SPI layer, for simplified bindings and
implementations that don't need the power of the complete/advanced SPI
- on top of the more advanced SPI, not replacing or altering it
- clearly identified in separate packages
I don't think that having 2 samples for the 2 separate SPI layers is
confusing. We just released a 0.90 release with stable SPIs that we want
people to use, we should continue to have a sample illustrating how to
use these SPIs. If implementation-crud does not make good use of some of
the interesting SPI methods (like some of the start/stop methods) we
should just improve the sample and add a few print statements for
example indicating what could be done in these methods...
And we can have a different sample showing how you can use the
simplified extension SPI layer for a simpler implementation extension.
--
Jean-Sebastien
---------------------------------------------------------------------
To unsubscribe, e-mail: tuscany-dev-unsubscribe@ws.apache.org
For additional commands, e-mail: tuscany-dev-help@ws.apache.org