You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@tuscany.apache.org by lr...@apache.org on 2007/03/28 19:25:04 UTC

svn commit: r523421 - in /incubator/tuscany/java/sca/runtime/services/contribution: contribution-installer/src/main/java/org/apache/tuscany/services/contribution/installer/ contribution/ contribution/src/main/java/org/apache/tuscany/services/contributi...

Author: lresende
Date: Wed Mar 28 10:25:03 2007
New Revision: 523421

URL: http://svn.apache.org/viewvc?view=rev&rev=523421
Log:
Contribution Services - bringing more processors and adding a componentType resolver

Added:
    incubator/tuscany/java/sca/runtime/services/contribution/contribution/src/main/java/org/apache/tuscany/services/contribution/AbstractDeploymentContext.java
      - copied, changed from r523104, incubator/tuscany/java/sca/kernel/core/src/main/java/org/apache/tuscany/core/deployer/AbstractDeploymentContext.java
    incubator/tuscany/java/sca/runtime/services/contribution/contribution/src/main/java/org/apache/tuscany/services/contribution/ContributionDeploymentContext.java
    incubator/tuscany/java/sca/runtime/services/contribution/contribution/src/main/java/org/apache/tuscany/services/contribution/processor/CompositeContributionProcessor.java
    incubator/tuscany/java/sca/runtime/services/contribution/contribution/src/main/java/org/apache/tuscany/services/contribution/processor/InvalidComponentDefinitionlException.java
    incubator/tuscany/java/sca/runtime/services/contribution/contribution/src/main/java/org/apache/tuscany/services/contribution/processor/InvalidPojoComponentDefinitionlException.java
    incubator/tuscany/java/sca/runtime/services/contribution/contribution/src/main/java/org/apache/tuscany/services/contribution/processor/JavaContributionProcessor.java
    incubator/tuscany/java/sca/runtime/services/contribution/contribution/src/main/java/org/apache/tuscany/services/contribution/resolver/
    incubator/tuscany/java/sca/runtime/services/contribution/contribution/src/main/java/org/apache/tuscany/services/contribution/resolver/ComponentDefinitionArtifactResolver.java
Modified:
    incubator/tuscany/java/sca/runtime/services/contribution/contribution-installer/src/main/java/org/apache/tuscany/services/contribution/installer/Main.java
    incubator/tuscany/java/sca/runtime/services/contribution/contribution/pom.xml

Modified: incubator/tuscany/java/sca/runtime/services/contribution/contribution-installer/src/main/java/org/apache/tuscany/services/contribution/installer/Main.java
URL: http://svn.apache.org/viewvc/incubator/tuscany/java/sca/runtime/services/contribution/contribution-installer/src/main/java/org/apache/tuscany/services/contribution/installer/Main.java?view=diff&rev=523421&r1=523420&r2=523421
==============================================================================
--- incubator/tuscany/java/sca/runtime/services/contribution/contribution-installer/src/main/java/org/apache/tuscany/services/contribution/installer/Main.java (original)
+++ incubator/tuscany/java/sca/runtime/services/contribution/contribution-installer/src/main/java/org/apache/tuscany/services/contribution/installer/Main.java Wed Mar 28 10:25:03 2007
@@ -65,7 +65,7 @@
         
         //start the process of installing the contribution
         ContributionRepository contributionRepository = new ContributionRepositoryImpl(null);
-        ContributionService contributionService = new ContributionServiceImpl(contributionRepository, null);
+        ContributionService contributionService = new ContributionServiceImpl(contributionRepository, null, null);
 
         URL contributionURL = contributionSource.toURL();
         InputStream contributionStream = contributionURL.openStream();

Modified: incubator/tuscany/java/sca/runtime/services/contribution/contribution/pom.xml
URL: http://svn.apache.org/viewvc/incubator/tuscany/java/sca/runtime/services/contribution/contribution/pom.xml?view=diff&rev=523421&r1=523420&r2=523421
==============================================================================
--- incubator/tuscany/java/sca/runtime/services/contribution/contribution/pom.xml (original)
+++ incubator/tuscany/java/sca/runtime/services/contribution/contribution/pom.xml Wed Mar 28 10:25:03 2007
@@ -40,6 +40,12 @@
             <version>${version}</version>
         </dependency>
         <dependency>
+            <groupId>org.apache.tuscany.sca.kernel</groupId>
+            <artifactId>tuscany-spi</artifactId>
+            <version>${project.version}</version>
+            <scope>compile</scope>
+        </dependency>
+        <dependency>
             <groupId>org.codehaus.woodstox</groupId>
             <artifactId>wstx-asl</artifactId>
         </dependency>

Copied: incubator/tuscany/java/sca/runtime/services/contribution/contribution/src/main/java/org/apache/tuscany/services/contribution/AbstractDeploymentContext.java (from r523104, incubator/tuscany/java/sca/kernel/core/src/main/java/org/apache/tuscany/core/deployer/AbstractDeploymentContext.java)
URL: http://svn.apache.org/viewvc/incubator/tuscany/java/sca/runtime/services/contribution/contribution/src/main/java/org/apache/tuscany/services/contribution/AbstractDeploymentContext.java?view=diff&rev=523421&p1=incubator/tuscany/java/sca/kernel/core/src/main/java/org/apache/tuscany/core/deployer/AbstractDeploymentContext.java&r1=523104&p2=incubator/tuscany/java/sca/runtime/services/contribution/contribution/src/main/java/org/apache/tuscany/services/contribution/AbstractDeploymentContext.java&r2=523421
==============================================================================
--- incubator/tuscany/java/sca/kernel/core/src/main/java/org/apache/tuscany/core/deployer/AbstractDeploymentContext.java (original)
+++ incubator/tuscany/java/sca/runtime/services/contribution/contribution/src/main/java/org/apache/tuscany/services/contribution/AbstractDeploymentContext.java Wed Mar 28 10:25:03 2007
@@ -16,7 +16,7 @@
  * specific language governing permissions and limitations
  * under the License.    
  */
-package org.apache.tuscany.core.deployer;
+package org.apache.tuscany.services.contribution;
 
 import java.net.URI;
 import java.net.URL;

Added: incubator/tuscany/java/sca/runtime/services/contribution/contribution/src/main/java/org/apache/tuscany/services/contribution/ContributionDeploymentContext.java
URL: http://svn.apache.org/viewvc/incubator/tuscany/java/sca/runtime/services/contribution/contribution/src/main/java/org/apache/tuscany/services/contribution/ContributionDeploymentContext.java?view=auto&rev=523421
==============================================================================
--- incubator/tuscany/java/sca/runtime/services/contribution/contribution/src/main/java/org/apache/tuscany/services/contribution/ContributionDeploymentContext.java (added)
+++ incubator/tuscany/java/sca/runtime/services/contribution/contribution/src/main/java/org/apache/tuscany/services/contribution/ContributionDeploymentContext.java Wed Mar 28 10:25:03 2007
@@ -0,0 +1,74 @@
+/*
+ * 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.services.contribution;
+
+import java.net.URI;
+import java.net.URL;
+import javax.xml.stream.XMLInputFactory;
+
+import org.apache.tuscany.spi.component.ScopeContainer;
+import org.apache.tuscany.spi.deployer.DeploymentContext;
+
+/**
+ * A holder that can be used during the load process to store information that is not part of the logical assembly
+ * model. This should be regarded as transient and references to this context should not be stored inside the model.
+ *
+ * @version $Rev: 519446 $ $Date: 2007-03-17 14:38:00 -0700 (Sat, 17 Mar 2007) $
+ */
+public class ContributionDeploymentContext extends AbstractDeploymentContext {
+    private final XMLInputFactory xmlFactory;
+    private final ScopeContainer scopeContainer;
+
+    /**
+     * Constructor defining properties of this context.
+     *
+     * @param classLoader    the classloader for loading application resources
+     * @param scdlLocation   the location of the SCDL defining this composite
+     * @param componentId    the id of the component being deployed
+     * @param xmlFactory     a factory that can be used to obtain an StAX XMLStreamReader
+     * @param scopeContainer the scope context representing this deployment's COMPOSITE scope
+     * @param autowire       if autowire is enabled
+     */
+    public ContributionDeploymentContext(ClassLoader classLoader,
+                                 URL scdlLocation,
+                                 URI componentId,
+                                 XMLInputFactory xmlFactory,
+                                 ScopeContainer scopeContainer,
+                                 boolean autowire) {
+        super(classLoader, scdlLocation, componentId, autowire);
+        this.xmlFactory = xmlFactory;
+        this.scopeContainer = scopeContainer;
+    }
+
+    public DeploymentContext getParent() {
+        return null;
+    }
+
+    public XMLInputFactory getXmlFactory() {
+        return xmlFactory;
+    }
+
+    public ScopeContainer getCompositeScope() {
+        return scopeContainer;
+    }
+
+    public URI getGroupId() {
+        return getComponentId();
+    }
+}

Added: incubator/tuscany/java/sca/runtime/services/contribution/contribution/src/main/java/org/apache/tuscany/services/contribution/processor/CompositeContributionProcessor.java
URL: http://svn.apache.org/viewvc/incubator/tuscany/java/sca/runtime/services/contribution/contribution/src/main/java/org/apache/tuscany/services/contribution/processor/CompositeContributionProcessor.java?view=auto&rev=523421
==============================================================================
--- incubator/tuscany/java/sca/runtime/services/contribution/contribution/src/main/java/org/apache/tuscany/services/contribution/processor/CompositeContributionProcessor.java (added)
+++ incubator/tuscany/java/sca/runtime/services/contribution/contribution/src/main/java/org/apache/tuscany/services/contribution/processor/CompositeContributionProcessor.java Wed Mar 28 10:25:03 2007
@@ -0,0 +1,111 @@
+/*
+ * 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.services.contribution.processor;
+
+import java.io.IOException;
+import java.io.InputStream;
+import java.net.URI;
+import java.net.URL;
+
+import javax.xml.stream.XMLInputFactory;
+
+import org.apache.tuscany.services.contribution.ContributionDeploymentContext;
+import org.apache.tuscany.services.contribution.model.ContentType;
+import org.apache.tuscany.services.contribution.model.Contribution;
+import org.apache.tuscany.services.spi.contribution.ContributionException;
+import org.apache.tuscany.services.spi.contribution.ContributionProcessor;
+import org.apache.tuscany.services.spi.contribution.extension.ContributionProcessorExtension;
+import org.apache.tuscany.spi.deployer.CompositeClassLoader;
+import org.apache.tuscany.spi.deployer.DeploymentContext;
+import org.apache.tuscany.spi.loader.LoaderException;
+import org.apache.tuscany.spi.loader.LoaderRegistry;
+import org.apache.tuscany.spi.model.ComponentDefinition;
+import org.apache.tuscany.spi.model.CompositeComponentType;
+import org.apache.tuscany.spi.model.CompositeImplementation;
+import org.osoa.sca.annotations.Reference;
+
+public class CompositeContributionProcessor extends ContributionProcessorExtension implements ContributionProcessor {
+    /**
+     * Content-type that this processor can handle
+     */
+    public static final String CONTENT_TYPE = ContentType.COMPOSITE;
+
+    protected XMLInputFactory xmlFactory;
+    private final LoaderRegistry registry;
+
+
+    public CompositeContributionProcessor(@Reference LoaderRegistry registry) {
+        super();
+        this.registry = registry;
+        this.xmlFactory = XMLInputFactory.newInstance("javax.xml.stream.XMLInputFactory", getClass().getClassLoader());
+    }
+    
+    @Override
+    public String getContentType() {
+        return CONTENT_TYPE;
+    }
+
+    
+    public void processContent(Contribution contribution, URI artifactURI, InputStream inputStream)
+        throws ContributionException, IOException {
+        if (artifactURI == null) {
+            throw new IllegalArgumentException("Invalid null source uri.");
+        }
+
+        if (inputStream == null) {
+            throw new IllegalArgumentException("Invalid null source inputstream.");
+        }
+
+        try {
+            URI contributionId = contribution.getUri();
+            URL scdlLocation = contribution.getArtifact(artifactURI).getLocation();
+            CompositeClassLoader cl = new CompositeClassLoader(null, getClass().getClassLoader());
+            cl.addURL(contribution.getLocation());
+
+            DeploymentContext deploymentContext =
+                new ContributionDeploymentContext(cl, scdlLocation, contributionId, this.xmlFactory, null,
+                    false);
+
+            CompositeComponentType componentType =
+                this.registry.load(null, scdlLocation, CompositeComponentType.class, deploymentContext);
+
+            CompositeImplementation implementation = new CompositeImplementation();
+            implementation.setComponentType(componentType);
+            ComponentDefinition<CompositeImplementation> componentDefinition =
+                new ComponentDefinition<CompositeImplementation>(implementation);
+            
+            //FIXME this changed in trunk.... 
+            //componentDefinition.setName(componentType.getName());
+
+            contribution.getArtifact(artifactURI).addModelObject(CompositeComponentType.class, null, componentDefinition);
+
+        } catch (LoaderException le) {
+            throw new InvalidComponentDefinitionlException(contribution.getArtifact(artifactURI).getLocation()
+                .toExternalForm(), le);
+        }
+    }
+
+    public void processModel(Contribution contribution, URI source, Object modelObject) throws ContributionException,
+                                                                                               IOException {
+        // TODO Auto-generated method stub
+
+    }
+
+}
\ No newline at end of file

Added: incubator/tuscany/java/sca/runtime/services/contribution/contribution/src/main/java/org/apache/tuscany/services/contribution/processor/InvalidComponentDefinitionlException.java
URL: http://svn.apache.org/viewvc/incubator/tuscany/java/sca/runtime/services/contribution/contribution/src/main/java/org/apache/tuscany/services/contribution/processor/InvalidComponentDefinitionlException.java?view=auto&rev=523421
==============================================================================
--- incubator/tuscany/java/sca/runtime/services/contribution/contribution/src/main/java/org/apache/tuscany/services/contribution/processor/InvalidComponentDefinitionlException.java (added)
+++ incubator/tuscany/java/sca/runtime/services/contribution/contribution/src/main/java/org/apache/tuscany/services/contribution/processor/InvalidComponentDefinitionlException.java Wed Mar 28 10:25:03 2007
@@ -0,0 +1,41 @@
+/*
+ * 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.services.contribution.processor;
+
+import org.apache.tuscany.services.spi.contribution.ContributionException;
+
+/**
+ * Exception that indicates that the supplied XML Document invalid.
+ *
+ */
+public class InvalidComponentDefinitionlException extends ContributionException {
+
+    /**
+     * 
+     */
+    private static final long serialVersionUID = -3691786552537932689L;
+
+    protected InvalidComponentDefinitionlException(String componentDefinitionLocatoin) {
+        super(componentDefinitionLocatoin);
+    }
+    
+    protected InvalidComponentDefinitionlException(String message, Throwable cause) {
+        super(message, cause);
+    }
+}

Added: incubator/tuscany/java/sca/runtime/services/contribution/contribution/src/main/java/org/apache/tuscany/services/contribution/processor/InvalidPojoComponentDefinitionlException.java
URL: http://svn.apache.org/viewvc/incubator/tuscany/java/sca/runtime/services/contribution/contribution/src/main/java/org/apache/tuscany/services/contribution/processor/InvalidPojoComponentDefinitionlException.java?view=auto&rev=523421
==============================================================================
--- incubator/tuscany/java/sca/runtime/services/contribution/contribution/src/main/java/org/apache/tuscany/services/contribution/processor/InvalidPojoComponentDefinitionlException.java (added)
+++ incubator/tuscany/java/sca/runtime/services/contribution/contribution/src/main/java/org/apache/tuscany/services/contribution/processor/InvalidPojoComponentDefinitionlException.java Wed Mar 28 10:25:03 2007
@@ -0,0 +1,41 @@
+/*
+ * 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.services.contribution.processor;
+
+import org.apache.tuscany.services.spi.contribution.ContributionException;
+
+/**
+ * Exception that indicates that the supplied XML Document invalid.
+ *
+ */
+public class InvalidPojoComponentDefinitionlException extends ContributionException {
+
+    /**
+     * 
+     */
+    private static final long serialVersionUID = 5404800960377566420L;
+
+    protected InvalidPojoComponentDefinitionlException(String componentDefinitionLocatoin) {
+        super(componentDefinitionLocatoin);
+    }
+    
+    protected InvalidPojoComponentDefinitionlException(String message, Throwable cause) {
+        super(message, cause);
+    }
+}

Added: incubator/tuscany/java/sca/runtime/services/contribution/contribution/src/main/java/org/apache/tuscany/services/contribution/processor/JavaContributionProcessor.java
URL: http://svn.apache.org/viewvc/incubator/tuscany/java/sca/runtime/services/contribution/contribution/src/main/java/org/apache/tuscany/services/contribution/processor/JavaContributionProcessor.java?view=auto&rev=523421
==============================================================================
--- incubator/tuscany/java/sca/runtime/services/contribution/contribution/src/main/java/org/apache/tuscany/services/contribution/processor/JavaContributionProcessor.java (added)
+++ incubator/tuscany/java/sca/runtime/services/contribution/contribution/src/main/java/org/apache/tuscany/services/contribution/processor/JavaContributionProcessor.java Wed Mar 28 10:25:03 2007
@@ -0,0 +1,108 @@
+/*
+ * 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.services.contribution.processor;
+
+import java.io.IOException;
+import java.io.InputStream;
+import java.net.URI;
+import java.net.URL;
+
+import org.apache.tuscany.host.deployment.DeploymentException;
+import org.apache.tuscany.services.contribution.model.ContentType;
+import org.apache.tuscany.services.contribution.model.Contribution;
+import org.apache.tuscany.services.spi.contribution.ContributionException;
+import org.apache.tuscany.services.spi.contribution.ContributionProcessor;
+import org.apache.tuscany.services.spi.contribution.extension.ContributionProcessorExtension;
+import org.apache.tuscany.spi.deployer.CompositeClassLoader;
+import org.apache.tuscany.spi.implementation.java.IntrospectionRegistry;
+import org.apache.tuscany.spi.implementation.java.Introspector;
+import org.osoa.sca.annotations.Constructor;
+import org.osoa.sca.annotations.Reference;
+
+public class JavaContributionProcessor extends ContributionProcessorExtension implements ContributionProcessor {
+    /**
+     * Content-type that this processor can handle
+     */
+    public static final String CONTENT_TYPE = ContentType.JAVA;
+    /**
+     * Pojo introspector
+     */
+    private Introspector introspector;
+
+    @Constructor
+    public JavaContributionProcessor(@Reference IntrospectionRegistry introspector) {
+        //this.introspector = introspector;
+    }
+
+    @Override
+    public String getContentType() {
+        return CONTENT_TYPE;
+    }
+
+    private String getClazzName(URL clazzURL) {
+        String clazzName;
+
+        clazzName = clazzURL.toExternalForm().substring(clazzURL.toExternalForm().lastIndexOf("!/") + 2,
+            clazzURL.toExternalForm().length() - ".class".length());
+        clazzName = clazzName.replace("/", ".");
+
+        return clazzName;
+    }
+
+
+    public void processContent(Contribution contribution, URI artifactURI, InputStream inputStream)
+        throws ContributionException, IOException {
+        if (artifactURI == null) {
+            throw new IllegalArgumentException("Invalid null artifact uri.");
+        }
+
+        if (inputStream == null) {
+            throw new IllegalArgumentException("Invalid null source inputstream.");
+        }
+
+        // TODO Auto-generated method stub
+
+        try {
+            CompositeClassLoader cl = new CompositeClassLoader(null, getClass().getClassLoader());
+            cl.addURL(contribution.getLocation());
+
+            String clazzName = getClazzName(contribution.getArtifact(artifactURI).getLocation());
+            System.out.println(clazzName);
+
+            Class clazz = cl.loadClass(clazzName);
+
+            //PojoComponentType javaInfo = introspector.introspect(null, clazz, null, null);
+
+            //contribution.getArtifact(artifactURI).addModelObject(PojoComponentType.class, null, javaInfo);
+
+        } catch (ClassNotFoundException cnfe) {
+            throw new InvalidPojoComponentDefinitionlException(contribution.getArtifact(artifactURI).getLocation().toExternalForm(), cnfe);
+        //} catch (ProcessingException pe) {
+        //    throw new InvalidPojoComponentDefinitionlException(contribution.getArtifact(artifactURI).getLocation().toExternalForm(), pe);
+        }
+    }
+
+    public void processModel(Contribution contribution, URI source, Object modelObject)
+        throws ContributionException, IOException {
+        // TODO Auto-generated method stub
+
+    }
+
+}

Added: incubator/tuscany/java/sca/runtime/services/contribution/contribution/src/main/java/org/apache/tuscany/services/contribution/resolver/ComponentDefinitionArtifactResolver.java
URL: http://svn.apache.org/viewvc/incubator/tuscany/java/sca/runtime/services/contribution/contribution/src/main/java/org/apache/tuscany/services/contribution/resolver/ComponentDefinitionArtifactResolver.java?view=auto&rev=523421
==============================================================================
--- incubator/tuscany/java/sca/runtime/services/contribution/contribution/src/main/java/org/apache/tuscany/services/contribution/resolver/ComponentDefinitionArtifactResolver.java (added)
+++ incubator/tuscany/java/sca/runtime/services/contribution/contribution/src/main/java/org/apache/tuscany/services/contribution/resolver/ComponentDefinitionArtifactResolver.java Wed Mar 28 10:25:03 2007
@@ -0,0 +1,68 @@
+/*
+ * 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.services.contribution.resolver;
+
+import java.net.URI;
+import java.net.URL;
+import java.util.Map;
+
+import org.apache.tuscany.services.contribution.model.Contribution;
+import org.apache.tuscany.services.contribution.model.DeployedArtifact;
+import org.apache.tuscany.services.spi.contribution.ArtifactResolver;
+import org.apache.tuscany.services.spi.contribution.ArtifactResolverRegistry;
+import org.apache.tuscany.services.spi.contribution.extension.ArtifactResolverExtension;
+import org.apache.tuscany.spi.model.ComponentDefinition;
+import org.apache.tuscany.spi.model.CompositeComponentType;
+import org.osoa.sca.annotations.Reference;
+
+public class ComponentDefinitionArtifactResolver extends ArtifactResolverExtension implements ArtifactResolver {
+
+    public ComponentDefinitionArtifactResolver(@Reference
+    ArtifactResolverRegistry registry) {
+        super(registry);
+    }
+
+    @Override
+    public Class<?> getType() {
+        return ComponentDefinition.class;
+    }
+
+    public <ComponentDefinition> ComponentDefinition resolve(Contribution contribution,
+                                                             Class<ComponentDefinition> modelClass,
+                                                             String namespace,
+                                                             String name,
+                                                             Map attributes/*,
+                                                             DeploymentContext context*/) {
+
+        // generate artifact uri based on it's name
+        URI artifactURI = contribution.getUri().resolve(name);
+        DeployedArtifact artifact = contribution.getArtifact(artifactURI);
+
+        ComponentDefinition componentDefinition =
+            (ComponentDefinition)artifact.getModelObject(CompositeComponentType.class, null);
+        return componentDefinition;
+    }
+
+    public URL resolve(Contribution contribution, String targetNamespace, String location, String baseURI) {
+        // TODO Auto-generated method stub
+        return null;
+    }
+
+}



---------------------------------------------------------------------
To unsubscribe, e-mail: tuscany-commits-unsubscribe@ws.apache.org
For additional commands, e-mail: tuscany-commits-help@ws.apache.org