You are viewing a plain text version of this content. The canonical link for it is here.
Posted to dev@tuscany.apache.org by Venkata Krishnan <fo...@gmail.com> on 2007/06/06 07:35:26 UTC

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-referen

Hi,

Though I haven't looked deep into the simplifications I really feel it would
be better to have them as part of the SPIs than as an optional thing outside
it.  As a developer I'd be more inclined to look up the SPIs and go on than
look over the SPIs for additional utils or helpers.  Just as perspective
thats all :)

- Venkat

On 6/6/07, ant elder <an...@apache.org> 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
>
> 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
> >
> >
>