You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@tuscany.apache.org by js...@apache.org on 2007/07/31 00:28:14 UTC

svn commit: r561159 - in /incubator/tuscany/java/sca: itest/contribution-import-export/test-import-composite/src/test/java/helloworld/ modules/contribution-impl/src/main/java/org/apache/tuscany/sca/contribution/resolver/impl/ modules/contribution-impl/...

Author: jsdelfino
Date: Mon Jul 30 15:28:12 2007
New Revision: 561159

URL: http://svn.apache.org/viewvc?view=rev&rev=561159
Log:
Added support for contribution listeners to allow a listener to be notified of contribution adds/removes/updates and connect SCA imports to exports or perform any other necessary post processing of the contributions.

Added:
    incubator/tuscany/java/sca/modules/contribution-impl/src/main/java/org/apache/tuscany/sca/contribution/service/impl/ContributionMetadataDocumentProcessor.java
      - copied, changed from r561076, incubator/tuscany/java/sca/modules/contribution-impl/src/main/java/org/apache/tuscany/sca/contribution/service/impl/ContributionMetadataDocumentProcessorImpl.java
    incubator/tuscany/java/sca/modules/contribution/src/main/java/org/apache/tuscany/sca/contribution/service/ContributionListener.java   (with props)
    incubator/tuscany/java/sca/modules/contribution/src/main/java/org/apache/tuscany/sca/contribution/service/ContributionListenerExtensionPoint.java   (with props)
    incubator/tuscany/java/sca/modules/contribution/src/main/java/org/apache/tuscany/sca/contribution/service/DefaultContributionListenerExtensionPoint.java   (with props)
Removed:
    incubator/tuscany/java/sca/modules/contribution-impl/src/main/java/org/apache/tuscany/sca/contribution/service/impl/ContributionMetadataDocumentProcessorImpl.java
Modified:
    incubator/tuscany/java/sca/itest/contribution-import-export/test-import-composite/src/test/java/helloworld/HelloWorldServerTestCase.java
    incubator/tuscany/java/sca/modules/contribution-impl/src/main/java/org/apache/tuscany/sca/contribution/resolver/impl/ImportAllModelResolverImpl.java
    incubator/tuscany/java/sca/modules/contribution-impl/src/main/java/org/apache/tuscany/sca/contribution/service/impl/ContributionRepositoryImpl.java
    incubator/tuscany/java/sca/modules/contribution-impl/src/main/java/org/apache/tuscany/sca/contribution/service/impl/ContributionServiceImpl.java
    incubator/tuscany/java/sca/modules/contribution-impl/src/test/java/org/apache/tuscany/sca/contribution/services/ContributionRepositoryTestCase.java
    incubator/tuscany/java/sca/modules/contribution/src/main/java/org/apache/tuscany/sca/contribution/processor/ContributionPostProcessor.java
    incubator/tuscany/java/sca/modules/contribution/src/main/java/org/apache/tuscany/sca/contribution/processor/ContributionPostProcessorExtensionPoint.java
    incubator/tuscany/java/sca/modules/contribution/src/main/java/org/apache/tuscany/sca/contribution/processor/DefaultContributionPostProcessorExtensionPoint.java
    incubator/tuscany/java/sca/modules/contribution/src/main/java/org/apache/tuscany/sca/contribution/service/ContributionMetadataDocumentProcessor.java
    incubator/tuscany/java/sca/modules/contribution/src/main/java/org/apache/tuscany/sca/contribution/service/ContributionRepository.java
    incubator/tuscany/java/sca/modules/distributed/src/main/java/org/apache/tuscany/sca/distributed/host/impl/NodeRuntimeBuilder.java
    incubator/tuscany/java/sca/modules/host-embedded/src/main/java/org/apache/tuscany/sca/host/embedded/impl/ReallySmallRuntimeBuilder.java

Modified: incubator/tuscany/java/sca/itest/contribution-import-export/test-import-composite/src/test/java/helloworld/HelloWorldServerTestCase.java
URL: http://svn.apache.org/viewvc/incubator/tuscany/java/sca/itest/contribution-import-export/test-import-composite/src/test/java/helloworld/HelloWorldServerTestCase.java?view=diff&rev=561159&r1=561158&r2=561159
==============================================================================
--- incubator/tuscany/java/sca/itest/contribution-import-export/test-import-composite/src/test/java/helloworld/HelloWorldServerTestCase.java (original)
+++ incubator/tuscany/java/sca/itest/contribution-import-export/test-import-composite/src/test/java/helloworld/HelloWorldServerTestCase.java Mon Jul 30 15:28:12 2007
@@ -87,8 +87,8 @@
         ContributionService contributionService = domain.getContributionService();
 
         // Remove the contribution from the in-memory repository
+        contributionService.remove("http://import-export/contrib-composite");
         contributionService.remove("http://import-export/helloworld");
-        contributionService.remove("http://import-export/contrib-wsdl");
         
         //Stop Components from my composite
         domain.getDomainCompositeHelper().stopComponent(domain.getDomainCompositeHelper().getComponent("HelloWorldServiceComponent"));

Modified: incubator/tuscany/java/sca/modules/contribution-impl/src/main/java/org/apache/tuscany/sca/contribution/resolver/impl/ImportAllModelResolverImpl.java
URL: http://svn.apache.org/viewvc/incubator/tuscany/java/sca/modules/contribution-impl/src/main/java/org/apache/tuscany/sca/contribution/resolver/impl/ImportAllModelResolverImpl.java?view=diff&rev=561159&r1=561158&r2=561159
==============================================================================
--- incubator/tuscany/java/sca/modules/contribution-impl/src/main/java/org/apache/tuscany/sca/contribution/resolver/impl/ImportAllModelResolverImpl.java (original)
+++ incubator/tuscany/java/sca/modules/contribution-impl/src/main/java/org/apache/tuscany/sca/contribution/resolver/impl/ImportAllModelResolverImpl.java Mon Jul 30 15:28:12 2007
@@ -19,7 +19,7 @@
 
 package org.apache.tuscany.sca.contribution.resolver.impl;
 
-import java.util.Collection;
+import java.util.List;
 
 import org.apache.tuscany.sca.contribution.Contribution;
 import org.apache.tuscany.sca.contribution.Export;
@@ -34,9 +34,9 @@
 public class ImportAllModelResolverImpl implements ModelResolver {
     
     private Import import_;
-    private Collection<Contribution> contributions;
+    private List<Contribution> contributions;
     
-    public ImportAllModelResolverImpl(Import import_, Collection<Contribution> contributions) {
+    public ImportAllModelResolverImpl(Import import_, List<Contribution> contributions) {
         this.import_ = import_;
         this.contributions = contributions;
     }

Copied: incubator/tuscany/java/sca/modules/contribution-impl/src/main/java/org/apache/tuscany/sca/contribution/service/impl/ContributionMetadataDocumentProcessor.java (from r561076, incubator/tuscany/java/sca/modules/contribution-impl/src/main/java/org/apache/tuscany/sca/contribution/service/impl/ContributionMetadataDocumentProcessorImpl.java)
URL: http://svn.apache.org/viewvc/incubator/tuscany/java/sca/modules/contribution-impl/src/main/java/org/apache/tuscany/sca/contribution/service/impl/ContributionMetadataDocumentProcessor.java?view=diff&rev=561159&p1=incubator/tuscany/java/sca/modules/contribution-impl/src/main/java/org/apache/tuscany/sca/contribution/service/impl/ContributionMetadataDocumentProcessorImpl.java&r1=561076&p2=incubator/tuscany/java/sca/modules/contribution-impl/src/main/java/org/apache/tuscany/sca/contribution/service/impl/ContributionMetadataDocumentProcessor.java&r2=561159
==============================================================================
--- incubator/tuscany/java/sca/modules/contribution-impl/src/main/java/org/apache/tuscany/sca/contribution/service/impl/ContributionMetadataDocumentProcessorImpl.java (original)
+++ incubator/tuscany/java/sca/modules/contribution-impl/src/main/java/org/apache/tuscany/sca/contribution/service/impl/ContributionMetadataDocumentProcessor.java Mon Jul 30 15:28:12 2007
@@ -34,7 +34,6 @@
 import org.apache.tuscany.sca.contribution.Contribution;
 import org.apache.tuscany.sca.contribution.ContributionFactory;
 import org.apache.tuscany.sca.contribution.processor.StAXArtifactProcessor;
-import org.apache.tuscany.sca.contribution.service.ContributionMetadataDocumentProcessor;
 import org.apache.tuscany.sca.contribution.service.ContributionReadException;
 
 /**
@@ -42,14 +41,14 @@
  * 
  * @version $Rev$ $Date$
  */
-public class ContributionMetadataDocumentProcessorImpl  implements ContributionMetadataDocumentProcessor {
+public class ContributionMetadataDocumentProcessor {
     protected final URLClassLoader classLoader;
     protected final StAXArtifactProcessor staxProcessor;
     protected final AssemblyFactory assemblyFactory;
     protected final ContributionFactory contributionFactory;
     protected final XMLInputFactory inputFactory;
 
-    public ContributionMetadataDocumentProcessorImpl(URLClassLoader classLoader, StAXArtifactProcessor staxProcessor, AssemblyFactory assemblyFactory, ContributionFactory contributionFactory, XMLInputFactory inputFactory) {
+    public ContributionMetadataDocumentProcessor(URLClassLoader classLoader, StAXArtifactProcessor staxProcessor, AssemblyFactory assemblyFactory, ContributionFactory contributionFactory, XMLInputFactory inputFactory) {
         super();
         this.classLoader = classLoader;
         this.staxProcessor = staxProcessor; 

Modified: incubator/tuscany/java/sca/modules/contribution-impl/src/main/java/org/apache/tuscany/sca/contribution/service/impl/ContributionRepositoryImpl.java
URL: http://svn.apache.org/viewvc/incubator/tuscany/java/sca/modules/contribution-impl/src/main/java/org/apache/tuscany/sca/contribution/service/impl/ContributionRepositoryImpl.java?view=diff&rev=561159&r1=561158&r2=561159
==============================================================================
--- incubator/tuscany/java/sca/modules/contribution-impl/src/main/java/org/apache/tuscany/sca/contribution/service/impl/ContributionRepositoryImpl.java (original)
+++ incubator/tuscany/java/sca/modules/contribution-impl/src/main/java/org/apache/tuscany/sca/contribution/service/impl/ContributionRepositoryImpl.java Mon Jul 30 15:28:12 2007
@@ -36,6 +36,7 @@
 import java.security.AccessController;
 import java.security.PrivilegedAction;
 import java.util.ArrayList;
+import java.util.Collections;
 import java.util.HashMap;
 import java.util.List;
 import java.util.Map;
@@ -44,7 +45,10 @@
 import javax.xml.stream.XMLStreamConstants;
 import javax.xml.stream.XMLStreamReader;
 
+import org.apache.tuscany.sca.contribution.Contribution;
+import org.apache.tuscany.sca.contribution.service.ContributionListenerExtensionPoint;
 import org.apache.tuscany.sca.contribution.service.ContributionRepository;
+import org.apache.tuscany.sca.contribution.service.ContributionListener;
 import org.apache.tuscany.sca.contribution.service.util.FileHelper;
 import org.apache.tuscany.sca.contribution.service.util.IOHelper;
 
@@ -57,7 +61,11 @@
     private static final String NS = "http://tuscany.apache.org/xmlns/1.0-SNAPSHOT";
     private static final String DOMAIN_INDEX_FILENAME = "sca-domain.xml";
     private final File rootFile;
-    private Map<String, String> contributionMap = new HashMap<String, String>();
+    private Map<String, String> contributionLocations = new HashMap<String, String>();
+    
+    private Map<String, Contribution> contributionMap = new HashMap<String, Contribution>();
+    private List<Contribution> contributions = new ArrayList<Contribution>();
+    private ContributionListenerExtensionPoint listeners;
 
     private URI domain;
     private XMLInputFactory factory;
@@ -67,7 +75,7 @@
      * 
      * @param repository
      */
-    public ContributionRepositoryImpl(final String repository) throws IOException {
+    public ContributionRepositoryImpl(ContributionListenerExtensionPoint listeners, final String repository) throws IOException {
         String root = repository;
         if (repository == null) {
             root = AccessController.doPrivileged(new PrivilegedAction<String>() {
@@ -86,6 +94,8 @@
             throw new IOException("The root is not a directory: " + repository);
         }
         factory = XMLInputFactory.newInstance("javax.xml.stream.XMLInputFactory", getClass().getClassLoader());
+        
+        this.listeners = listeners;
     }
 
     public URI getDomain() {
@@ -135,7 +145,7 @@
         // add contribution to repositoryContent
         URL contributionURL = location.toURL();
         URI relative = rootFile.toURI().relativize(location.toURI());
-        contributionMap.put(contribution, relative.toString());
+        contributionLocations.put(contribution, relative.toString());
         saveMap();
 
         return contributionURL;
@@ -159,7 +169,7 @@
 
         // add contribution to repositoryContent
         URI relative = rootFile.toURI().relativize(location.toURI());
-        contributionMap.put(contribution, relative.toString());
+        contributionLocations.put(contribution, relative.toString());
         saveMap();
 
         return location.toURL();
@@ -169,7 +179,7 @@
         if (contribution == null) {
             return null;
         }
-        String location = contributionMap.get(contribution);
+        String location = contributionLocations.get(contribution);
         if (location == null) {
             return null;
         }
@@ -187,7 +197,7 @@
             // remove
             try {
                 FileHelper.forceDelete(FileHelper.toFile(contributionURL));
-                this.contributionMap.remove(contribution);
+                this.contributionLocations.remove(contribution);
                 saveMap();
             } catch (IOException ioe) {
                 // handle file could not be removed
@@ -196,7 +206,7 @@
     }
 
     public List<String> list() {
-        return new ArrayList<String>(contributionMap.keySet());
+        return new ArrayList<String>(contributionLocations.keySet());
     }
 
     public void init() {
@@ -225,7 +235,7 @@
                         if ("contribution".equals(name)) {
                             String uri = reader.getAttributeValue(null, "uri");
                             String location = reader.getAttributeValue(null, "location");
-                            contributionMap.put(uri, location);
+                            contributionLocations.put(uri, location);
                         }
                         break;
                     default:
@@ -248,7 +258,7 @@
             PrintWriter writer = new PrintWriter(new OutputStreamWriter(os, "UTF-8"));
             writer.println("<?xml version=\"1.0\" encoding=\"UTF-8\"?>");
             writer.println("<domain uri=\"" + getDomain() + "\" xmlns=\"" + NS + "\">");
-            for (Map.Entry<String, String> e : contributionMap.entrySet()) {
+            for (Map.Entry<String, String> e : contributionLocations.entrySet()) {
                 writer.println("    <contribution uri=\"" + e.getKey() + "\" location=\"" + e.getValue() + "\"/>");
             }
             writer.println("</domain>");
@@ -262,5 +272,39 @@
 
     public void destroy() {
     }
-
+    
+    public void addContribution(Contribution contribution) {
+        contributionMap.put(contribution.getURI(), contribution);
+        contributions.add(contribution);
+        for (ContributionListener listener: listeners.getContributionListeners()) {
+            listener.contributionAdded(this, contribution);
+        }
+    }
+    
+    public void removeContribution(Contribution contribution) {
+        contributionMap.remove(contribution.getURI());
+        contributions.remove(contribution);
+        for (ContributionListener listener: listeners.getContributionListeners()) {
+            listener.contributionRemoved(this, contribution);
+        }
+    }
+    
+    public void updateContribution(Contribution contribution) {
+        Contribution oldContribution = contributionMap.remove(contribution.getURI());
+        contributions.remove(oldContribution);
+        contributionMap.put(contribution.getURI(), contribution);
+        contributions.add(contribution);
+        for (ContributionListener listener: listeners.getContributionListeners()) {
+            listener.contributionUpdated(this, oldContribution, contribution);
+        }
+    }
+    
+    public Contribution getContribution(String uri) {
+        return contributionMap.get(uri);
+    }
+    
+    public List<Contribution> getContributions() {
+        return Collections.unmodifiableList(contributions);
+    }
+    
 }

Modified: incubator/tuscany/java/sca/modules/contribution-impl/src/main/java/org/apache/tuscany/sca/contribution/service/impl/ContributionServiceImpl.java
URL: http://svn.apache.org/viewvc/incubator/tuscany/java/sca/modules/contribution-impl/src/main/java/org/apache/tuscany/sca/contribution/service/impl/ContributionServiceImpl.java?view=diff&rev=561159&r1=561158&r2=561159
==============================================================================
--- incubator/tuscany/java/sca/modules/contribution-impl/src/main/java/org/apache/tuscany/sca/contribution/service/impl/ContributionServiceImpl.java (original)
+++ incubator/tuscany/java/sca/modules/contribution-impl/src/main/java/org/apache/tuscany/sca/contribution/service/impl/ContributionServiceImpl.java Mon Jul 30 15:28:12 2007
@@ -26,8 +26,6 @@
 import java.net.URLClassLoader;
 import java.util.ArrayList;
 import java.util.List;
-import java.util.Map;
-import java.util.concurrent.ConcurrentHashMap;
 
 import javax.xml.stream.XMLInputFactory;
 import javax.xml.stream.XMLStreamException;
@@ -52,7 +50,6 @@
 import org.apache.tuscany.sca.contribution.resolver.ModelResolverExtensionPoint;
 import org.apache.tuscany.sca.contribution.resolver.impl.ImportAllModelResolverImpl;
 import org.apache.tuscany.sca.contribution.service.ContributionException;
-import org.apache.tuscany.sca.contribution.service.ContributionMetadataDocumentProcessor;
 import org.apache.tuscany.sca.contribution.service.ContributionRepository;
 import org.apache.tuscany.sca.contribution.service.ContributionService;
 import org.apache.tuscany.sca.contribution.service.util.IOHelper;
@@ -116,11 +113,6 @@
     private ContributionFactory contributionFactory;
 
 
-    /**
-     * Contribution registry This is a registry of processed Contributions indexed by URI
-     */
-    private Map<String, Contribution> contributionRegistry = new ConcurrentHashMap<String, Contribution>();
-    
     public ContributionServiceImpl(ContributionRepository repository,
                                    PackageProcessor packageProcessor,
                                    URLArtifactProcessor documentProcessor,
@@ -178,12 +170,13 @@
         return addContribution(contributionURI, sourceURL, input, modelResolver, true);
     }
 
-    public Contribution getContribution(String id) {
-        return this.contributionRegistry.get(id);
+    public Contribution getContribution(String uri) {
+        return this.contributionRepository.getContribution(uri);
     }
 
-    public void remove(String contribution) throws ContributionException {
-        this.contributionRegistry.remove(contribution);
+    public void remove(String uri) throws ContributionException {
+        Contribution contribution = contributionRepository.getContribution(uri);
+        this.contributionRepository.removeContribution(contribution);
     }
 
     public void addDeploymentComposite(Contribution contribution, Composite composite) throws ContributionException {
@@ -216,7 +209,7 @@
         
         
         ContributionMetadataDocumentProcessor metadataDocumentProcessor = 
-            new ContributionMetadataDocumentProcessorImpl(cl, this.staxProcessor, this.assemblyFactory, this.contributionFactory, this.xmlFactory);
+            new ContributionMetadataDocumentProcessor(cl, this.staxProcessor, this.assemblyFactory, this.contributionFactory, this.xmlFactory);
         contributionMetadata = contributionFactory.createContribution();
         try {
             metadataDocumentProcessor.read(contributionMetadata);
@@ -290,7 +283,7 @@
                 
                 // Find a matching contribution
                 if (namespaceImport.getLocation() != null) {
-                    Contribution targetContribution = contributionRegistry.get(namespaceImport.getLocation());
+                    Contribution targetContribution = contributionRepository.getContribution(namespaceImport.getLocation());
                     if (targetContribution != null) {
                     
                         // Find a matching contribution export
@@ -311,7 +304,7 @@
                 
                 //Find a matching contribution
                 if(javaImport.getLocation() != null) {
-                    Contribution targetContribution = contributionRegistry.get(javaImport.getLocation());
+                    Contribution targetContribution = contributionRepository.getContribution(javaImport.getLocation());
                     if (targetContribution != null) {
                     
                         // Find a matching contribution export
@@ -332,7 +325,7 @@
             //if no location was specified, try to resolve with any contribution            
             if( !initialized ) {
                 // Use a resolver that will consider all contributions
-                import_.setModelResolver(new ImportAllModelResolverImpl(import_, contributionRegistry.values()));
+                import_.setModelResolver(new ImportAllModelResolverImpl(import_, contributionRepository.getContributions()));
             }
             
         }
@@ -379,7 +372,7 @@
         this.postProcessor.visit(contribution);
         
         // store the contribution on the registry
-        this.contributionRegistry.put(contribution.getURI(), contribution);
+        this.contributionRepository.addContribution(contribution);
         
         return contribution;
     }

Modified: incubator/tuscany/java/sca/modules/contribution-impl/src/test/java/org/apache/tuscany/sca/contribution/services/ContributionRepositoryTestCase.java
URL: http://svn.apache.org/viewvc/incubator/tuscany/java/sca/modules/contribution-impl/src/test/java/org/apache/tuscany/sca/contribution/services/ContributionRepositoryTestCase.java?view=diff&rev=561159&r1=561158&r2=561159
==============================================================================
--- incubator/tuscany/java/sca/modules/contribution-impl/src/test/java/org/apache/tuscany/sca/contribution/services/ContributionRepositoryTestCase.java (original)
+++ incubator/tuscany/java/sca/modules/contribution-impl/src/test/java/org/apache/tuscany/sca/contribution/services/ContributionRepositoryTestCase.java Mon Jul 30 15:28:12 2007
@@ -25,6 +25,7 @@
 
 import junit.framework.TestCase;
 
+import org.apache.tuscany.sca.contribution.service.DefaultContributionListenerExtensionPoint;
 import org.apache.tuscany.sca.contribution.service.impl.ContributionRepositoryImpl;
 import org.apache.tuscany.sca.contribution.service.util.FileHelper;
 
@@ -34,7 +35,7 @@
     protected void setUp() throws Exception {
         super.setUp();
         // create repository (this should re-create the root directory)
-        this.repository = new ContributionRepositoryImpl("target/repository/");
+        this.repository = new ContributionRepositoryImpl(new DefaultContributionListenerExtensionPoint(), "target/repository/");
         repository.init();
     }
 

Modified: incubator/tuscany/java/sca/modules/contribution/src/main/java/org/apache/tuscany/sca/contribution/processor/ContributionPostProcessor.java
URL: http://svn.apache.org/viewvc/incubator/tuscany/java/sca/modules/contribution/src/main/java/org/apache/tuscany/sca/contribution/processor/ContributionPostProcessor.java?view=diff&rev=561159&r1=561158&r2=561159
==============================================================================
--- incubator/tuscany/java/sca/modules/contribution/src/main/java/org/apache/tuscany/sca/contribution/processor/ContributionPostProcessor.java (original)
+++ incubator/tuscany/java/sca/modules/contribution/src/main/java/org/apache/tuscany/sca/contribution/processor/ContributionPostProcessor.java Mon Jul 30 15:28:12 2007
@@ -23,6 +23,7 @@
 
 /**
  * A processor invoked after the contribution is loaded 
+ * @deprecated Please use ContributionListener instead
  * 
  * @version $Rev$ $Date$
  */

Modified: incubator/tuscany/java/sca/modules/contribution/src/main/java/org/apache/tuscany/sca/contribution/processor/ContributionPostProcessorExtensionPoint.java
URL: http://svn.apache.org/viewvc/incubator/tuscany/java/sca/modules/contribution/src/main/java/org/apache/tuscany/sca/contribution/processor/ContributionPostProcessorExtensionPoint.java?view=diff&rev=561159&r1=561158&r2=561159
==============================================================================
--- incubator/tuscany/java/sca/modules/contribution/src/main/java/org/apache/tuscany/sca/contribution/processor/ContributionPostProcessorExtensionPoint.java (original)
+++ incubator/tuscany/java/sca/modules/contribution/src/main/java/org/apache/tuscany/sca/contribution/processor/ContributionPostProcessorExtensionPoint.java Mon Jul 30 15:28:12 2007
@@ -23,6 +23,7 @@
 
 /**
  * An extension point for contribution post processor extensions.
+ * @deprecated Please use ContributionListenerExtensionPoint instead
  * 
  * @version $Rev$ $Date$
  */

Modified: incubator/tuscany/java/sca/modules/contribution/src/main/java/org/apache/tuscany/sca/contribution/processor/DefaultContributionPostProcessorExtensionPoint.java
URL: http://svn.apache.org/viewvc/incubator/tuscany/java/sca/modules/contribution/src/main/java/org/apache/tuscany/sca/contribution/processor/DefaultContributionPostProcessorExtensionPoint.java?view=diff&rev=561159&r1=561158&r2=561159
==============================================================================
--- incubator/tuscany/java/sca/modules/contribution/src/main/java/org/apache/tuscany/sca/contribution/processor/DefaultContributionPostProcessorExtensionPoint.java (original)
+++ incubator/tuscany/java/sca/modules/contribution/src/main/java/org/apache/tuscany/sca/contribution/processor/DefaultContributionPostProcessorExtensionPoint.java Mon Jul 30 15:28:12 2007
@@ -24,6 +24,7 @@
 
 /**
  * Default implementation of ContributionPostProcessor Extension Point
+ * @deprecated Please use DefaultContributionListenerExtensionPoint instead
  * 
  * @version $Rev$ $Date$
  */

Added: incubator/tuscany/java/sca/modules/contribution/src/main/java/org/apache/tuscany/sca/contribution/service/ContributionListener.java
URL: http://svn.apache.org/viewvc/incubator/tuscany/java/sca/modules/contribution/src/main/java/org/apache/tuscany/sca/contribution/service/ContributionListener.java?view=auto&rev=561159
==============================================================================
--- incubator/tuscany/java/sca/modules/contribution/src/main/java/org/apache/tuscany/sca/contribution/service/ContributionListener.java (added)
+++ incubator/tuscany/java/sca/modules/contribution/src/main/java/org/apache/tuscany/sca/contribution/service/ContributionListener.java Mon Jul 30 15:28:12 2007
@@ -0,0 +1,58 @@
+/*
+ * 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.sca.contribution.service;
+
+import java.util.EventListener;
+
+import org.apache.tuscany.sca.contribution.Contribution;
+
+/**
+ * A listener interface used to listen to contribution repository events.
+ *
+ * @version $Rev$ $Date$
+ */
+public interface ContributionListener extends EventListener {
+
+    /**
+     * Notifies the listener that a contribution has been added.
+     * 
+     * @param repository The contribution repository 
+     * @param contribution The new contribution
+     */
+    void contributionAdded(ContributionRepository repository, Contribution contribution);
+    
+    /**
+     * Notifies the listener that a contribution has been removed.
+     * 
+     * @param repository The contribution repository 
+     * @param contribution The removed contribution.
+     */
+    void contributionRemoved(ContributionRepository repository, Contribution contribution);
+    
+    /**
+     * Notifies the listener that a contribution has been updated.
+     * 
+     * @param repository The contribution repository 
+     * @param oldContribution The old contribution 
+     * @param contribution The new contribution
+     */
+    void contributionUpdated(ContributionRepository repository, Contribution oldContribution, Contribution contribution);
+
+}

Propchange: incubator/tuscany/java/sca/modules/contribution/src/main/java/org/apache/tuscany/sca/contribution/service/ContributionListener.java
------------------------------------------------------------------------------
    svn:eol-style = native

Propchange: incubator/tuscany/java/sca/modules/contribution/src/main/java/org/apache/tuscany/sca/contribution/service/ContributionListener.java
------------------------------------------------------------------------------
    svn:keywords = Rev Date

Added: incubator/tuscany/java/sca/modules/contribution/src/main/java/org/apache/tuscany/sca/contribution/service/ContributionListenerExtensionPoint.java
URL: http://svn.apache.org/viewvc/incubator/tuscany/java/sca/modules/contribution/src/main/java/org/apache/tuscany/sca/contribution/service/ContributionListenerExtensionPoint.java?view=auto&rev=561159
==============================================================================
--- incubator/tuscany/java/sca/modules/contribution/src/main/java/org/apache/tuscany/sca/contribution/service/ContributionListenerExtensionPoint.java (added)
+++ incubator/tuscany/java/sca/modules/contribution/src/main/java/org/apache/tuscany/sca/contribution/service/ContributionListenerExtensionPoint.java Mon Jul 30 15:28:12 2007
@@ -0,0 +1,44 @@
+/*
+ * 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.sca.contribution.service;
+
+import java.util.List;
+
+public interface ContributionListenerExtensionPoint {
+
+    /**
+     * Adds a contribution repository listener extension.
+     * @param listener The listener to add
+     */
+    void addContributionListener(ContributionListener listener);
+    
+    /**
+     * Removes a contribution repository listener extension.
+     * @param listener The listener to remove
+     */
+    void removeContributionListener(ContributionListener listener);
+    
+    /**
+     * Returns the contribution repository listeners.
+     * @return
+     */
+    List<ContributionListener> getContributionListeners();
+    
+}

Propchange: incubator/tuscany/java/sca/modules/contribution/src/main/java/org/apache/tuscany/sca/contribution/service/ContributionListenerExtensionPoint.java
------------------------------------------------------------------------------
    svn:eol-style = native

Propchange: incubator/tuscany/java/sca/modules/contribution/src/main/java/org/apache/tuscany/sca/contribution/service/ContributionListenerExtensionPoint.java
------------------------------------------------------------------------------
    svn:keywords = Rev Date

Modified: incubator/tuscany/java/sca/modules/contribution/src/main/java/org/apache/tuscany/sca/contribution/service/ContributionMetadataDocumentProcessor.java
URL: http://svn.apache.org/viewvc/incubator/tuscany/java/sca/modules/contribution/src/main/java/org/apache/tuscany/sca/contribution/service/ContributionMetadataDocumentProcessor.java?view=diff&rev=561159&r1=561158&r2=561159
==============================================================================
--- incubator/tuscany/java/sca/modules/contribution/src/main/java/org/apache/tuscany/sca/contribution/service/ContributionMetadataDocumentProcessor.java (original)
+++ incubator/tuscany/java/sca/modules/contribution/src/main/java/org/apache/tuscany/sca/contribution/service/ContributionMetadataDocumentProcessor.java Mon Jul 30 15:28:12 2007
@@ -25,6 +25,7 @@
 
 /**
  * Document processor responsible to process the contribution metadata 
+ * @deprecated
  * 
  * @version $Rev$ $Date$
  */

Modified: incubator/tuscany/java/sca/modules/contribution/src/main/java/org/apache/tuscany/sca/contribution/service/ContributionRepository.java
URL: http://svn.apache.org/viewvc/incubator/tuscany/java/sca/modules/contribution/src/main/java/org/apache/tuscany/sca/contribution/service/ContributionRepository.java?view=diff&rev=561159&r1=561158&r2=561159
==============================================================================
--- incubator/tuscany/java/sca/modules/contribution/src/main/java/org/apache/tuscany/sca/contribution/service/ContributionRepository.java (original)
+++ incubator/tuscany/java/sca/modules/contribution/src/main/java/org/apache/tuscany/sca/contribution/service/ContributionRepository.java Mon Jul 30 15:28:12 2007
@@ -25,12 +25,15 @@
 import java.net.URL;
 import java.util.List;
 
+import org.apache.tuscany.sca.contribution.Contribution;
+
 /**
  * Contribution repository 
  * 
  * @version $Rev$ $Date$
  */
 public interface ContributionRepository {
+    
     /**
      * Get the URI of the SCA domain 
      * 
@@ -90,4 +93,36 @@
      * @return A list of contribution URIs
      */
     List<String> list();
+    
+    /**
+     * Returns the contributions available in the repository.
+     * @return The list of contributions.
+     */
+    List<Contribution> getContributions();
+    
+    /**
+     * Adds a contribution to the repository.
+     * @param contribution The new contribution.
+     */
+    void addContribution(Contribution contribution);
+    
+    /**
+     * Removes a contribution from the repository.
+     * @param contribution The contribution to remove
+     */
+    void removeContribution(Contribution contribution);
+    
+    /**
+     * Updates a contribution in the repository
+     * @param contribution The contribution to update
+     */
+    void updateContribution(Contribution contribution);
+    
+    /**
+     * Returns the contribution with the given URI.
+     * @param uri the URI of the contribution
+     * @return The contribution
+     */
+    Contribution getContribution(String uri);
+
 }

Added: incubator/tuscany/java/sca/modules/contribution/src/main/java/org/apache/tuscany/sca/contribution/service/DefaultContributionListenerExtensionPoint.java
URL: http://svn.apache.org/viewvc/incubator/tuscany/java/sca/modules/contribution/src/main/java/org/apache/tuscany/sca/contribution/service/DefaultContributionListenerExtensionPoint.java?view=auto&rev=561159
==============================================================================
--- incubator/tuscany/java/sca/modules/contribution/src/main/java/org/apache/tuscany/sca/contribution/service/DefaultContributionListenerExtensionPoint.java (added)
+++ incubator/tuscany/java/sca/modules/contribution/src/main/java/org/apache/tuscany/sca/contribution/service/DefaultContributionListenerExtensionPoint.java Mon Jul 30 15:28:12 2007
@@ -0,0 +1,46 @@
+/*
+ * 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.sca.contribution.service;
+
+import java.util.ArrayList;
+import java.util.List;
+
+/**
+ * Default implementation of a contribution listener extension point.
+ *
+ * @version $Rev$ $Date$
+ */
+public class DefaultContributionListenerExtensionPoint implements ContributionListenerExtensionPoint {
+    
+    private List<ContributionListener> listeners = new ArrayList<ContributionListener>();
+
+    public void addContributionListener(ContributionListener listener) {
+        listeners.add(listener);
+    }
+
+    public List<ContributionListener> getContributionListeners() {
+        return listeners;
+    }
+
+    public void removeContributionListener(ContributionListener listener) {
+        listeners.remove(listener);
+    }
+
+}

Propchange: incubator/tuscany/java/sca/modules/contribution/src/main/java/org/apache/tuscany/sca/contribution/service/DefaultContributionListenerExtensionPoint.java
------------------------------------------------------------------------------
    svn:eol-style = native

Propchange: incubator/tuscany/java/sca/modules/contribution/src/main/java/org/apache/tuscany/sca/contribution/service/DefaultContributionListenerExtensionPoint.java
------------------------------------------------------------------------------
    svn:keywords = Rev Date

Modified: incubator/tuscany/java/sca/modules/distributed/src/main/java/org/apache/tuscany/sca/distributed/host/impl/NodeRuntimeBuilder.java
URL: http://svn.apache.org/viewvc/incubator/tuscany/java/sca/modules/distributed/src/main/java/org/apache/tuscany/sca/distributed/host/impl/NodeRuntimeBuilder.java?view=diff&rev=561159&r1=561158&r2=561159
==============================================================================
--- incubator/tuscany/java/sca/modules/distributed/src/main/java/org/apache/tuscany/sca/distributed/host/impl/NodeRuntimeBuilder.java (original)
+++ incubator/tuscany/java/sca/modules/distributed/src/main/java/org/apache/tuscany/sca/distributed/host/impl/NodeRuntimeBuilder.java Mon Jul 30 15:28:12 2007
@@ -54,8 +54,10 @@
 import org.apache.tuscany.sca.contribution.resolver.ClassReference;
 import org.apache.tuscany.sca.contribution.resolver.DefaultModelResolverExtensionPoint;
 import org.apache.tuscany.sca.contribution.resolver.ModelResolverExtensionPoint;
+import org.apache.tuscany.sca.contribution.service.ContributionListenerExtensionPoint;
 import org.apache.tuscany.sca.contribution.service.ContributionRepository;
 import org.apache.tuscany.sca.contribution.service.ContributionService;
+import org.apache.tuscany.sca.contribution.service.DefaultContributionListenerExtensionPoint;
 import org.apache.tuscany.sca.contribution.service.impl.ContributionMetadataProcessor;
 import org.apache.tuscany.sca.contribution.service.impl.ContributionRepositoryImpl;
 import org.apache.tuscany.sca.contribution.service.impl.ContributionServiceImpl;
@@ -137,16 +139,21 @@
         modelResolverExtensionPoint.addResolver(Composite.class, CompositeModelResolver.class);
         modelResolverExtensionPoint.addResolver(ConstrainingType.class, ConstrainingTypeModelResolver.class);
         modelResolverExtensionPoint.addResolver(ClassReference.class, ClassReferenceModelResolver.class);
-        
+
+        //FIXME Deprecate and remove this
         //Create contribution postProcessor extension point
         DefaultContributionPostProcessorExtensionPoint contributionPostProcessors = new DefaultContributionPostProcessorExtensionPoint();
         ContributionPostProcessor postProcessor = new ExtensibleContributionPostProcessor(contributionPostProcessors);
         registry.addExtensionPoint(contributionPostProcessors);        
 
+        // Create contribution listener extension point
+        ContributionListenerExtensionPoint contributionListeners = new DefaultContributionListenerExtensionPoint();
+        registry.addExtensionPoint(contributionListeners);
+
         // Create a contribution repository
         ContributionRepository repository;
         try {
-            repository = new ContributionRepositoryImpl("target");
+            repository = new ContributionRepositoryImpl(contributionListeners, "target");
         } catch (IOException e) {
             throw new ActivationException(e);
         }

Modified: incubator/tuscany/java/sca/modules/host-embedded/src/main/java/org/apache/tuscany/sca/host/embedded/impl/ReallySmallRuntimeBuilder.java
URL: http://svn.apache.org/viewvc/incubator/tuscany/java/sca/modules/host-embedded/src/main/java/org/apache/tuscany/sca/host/embedded/impl/ReallySmallRuntimeBuilder.java?view=diff&rev=561159&r1=561158&r2=561159
==============================================================================
--- incubator/tuscany/java/sca/modules/host-embedded/src/main/java/org/apache/tuscany/sca/host/embedded/impl/ReallySmallRuntimeBuilder.java (original)
+++ incubator/tuscany/java/sca/modules/host-embedded/src/main/java/org/apache/tuscany/sca/host/embedded/impl/ReallySmallRuntimeBuilder.java Mon Jul 30 15:28:12 2007
@@ -71,8 +71,10 @@
 import org.apache.tuscany.sca.contribution.resolver.ClassReference;
 import org.apache.tuscany.sca.contribution.resolver.DefaultModelResolverExtensionPoint;
 import org.apache.tuscany.sca.contribution.resolver.ModelResolverExtensionPoint;
+import org.apache.tuscany.sca.contribution.service.ContributionListenerExtensionPoint;
 import org.apache.tuscany.sca.contribution.service.ContributionRepository;
 import org.apache.tuscany.sca.contribution.service.ContributionService;
+import org.apache.tuscany.sca.contribution.service.DefaultContributionListenerExtensionPoint;
 import org.apache.tuscany.sca.contribution.service.TypeDescriber;
 import org.apache.tuscany.sca.contribution.service.impl.ContributionMetadataProcessor;
 import org.apache.tuscany.sca.contribution.service.impl.ContributionRepositoryImpl;
@@ -219,15 +221,20 @@
         modelResolverExtensionPoint.addResolver(ConstrainingType.class, ConstrainingTypeModelResolver.class);
         modelResolverExtensionPoint.addResolver(ClassReference.class, ClassReferenceModelResolver.class);
         
+        //FIXME Deprecate and remove this
         //Create contribution postProcessor extension point
         DefaultContributionPostProcessorExtensionPoint contributionPostProcessors = new DefaultContributionPostProcessorExtensionPoint();
         ContributionPostProcessor postProcessor = new ExtensibleContributionPostProcessor(contributionPostProcessors);
         registry.addExtensionPoint(contributionPostProcessors);
 
+        // Create contribution listener extension point
+        ContributionListenerExtensionPoint contributionListeners = new DefaultContributionListenerExtensionPoint();
+        registry.addExtensionPoint(contributionListeners);
+
         // Create a contribution repository
         ContributionRepository repository;
         try {
-            repository = new ContributionRepositoryImpl("target");
+            repository = new ContributionRepositoryImpl(contributionListeners, "target");
         } catch (IOException e) {
             throw new ActivationException(e);
         }



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