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

svn commit: r515236 - in /incubator/tuscany/branches/sca-java-integration/sca/kernel/core/src: main/java/org/apache/tuscany/core/services/deployment/ test/java/org/apache/tuscany/core/services/deployment/

Author: rfeng
Date: Tue Mar  6 10:12:52 2007
New Revision: 515236

URL: http://svn.apache.org/viewvc?view=rev&rev=515236
Log:
[sca-integration-branch] Adjust the structure of the local SCA domain repository

Modified:
    incubator/tuscany/branches/sca-java-integration/sca/kernel/core/src/main/java/org/apache/tuscany/core/services/deployment/ContributionRepositoryImpl.java
    incubator/tuscany/branches/sca-java-integration/sca/kernel/core/src/test/java/org/apache/tuscany/core/services/deployment/ContributionRepositoryTestCase.java

Modified: incubator/tuscany/branches/sca-java-integration/sca/kernel/core/src/main/java/org/apache/tuscany/core/services/deployment/ContributionRepositoryImpl.java
URL: http://svn.apache.org/viewvc/incubator/tuscany/branches/sca-java-integration/sca/kernel/core/src/main/java/org/apache/tuscany/core/services/deployment/ContributionRepositoryImpl.java?view=diff&rev=515236&r1=515235&r2=515236
==============================================================================
--- incubator/tuscany/branches/sca-java-integration/sca/kernel/core/src/main/java/org/apache/tuscany/core/services/deployment/ContributionRepositoryImpl.java (original)
+++ incubator/tuscany/branches/sca-java-integration/sca/kernel/core/src/main/java/org/apache/tuscany/core/services/deployment/ContributionRepositoryImpl.java Tue Mar  6 10:12:52 2007
@@ -29,7 +29,8 @@
 import java.io.InputStream;
 import java.io.InputStreamReader;
 import java.io.OutputStreamWriter;
-import java.io.Writer;
+import java.io.PrintWriter;
+import java.net.MalformedURLException;
 import java.net.URI;
 import java.net.URL;
 import java.security.AccessController;
@@ -59,9 +60,11 @@
  */
 @EagerInit
 public class ContributionRepositoryImpl implements ContributionRepository {
-    protected final File rootFile;
-    protected Map<URI, URL> contributionMap = new HashMap<URI, URL>();
+    private static final String NS = "http://tuscany.apache.org/xmlns/1.0-SNAPSHOT";
+    private final File rootFile;
+    private Map<URI, String> contributionMap = new HashMap<URI, String>();
 
+    private URI domain;
     private XMLInputFactory factory;
 
     /**
@@ -71,19 +74,20 @@
      */
     @Constructor
     public ContributionRepositoryImpl(@Property(name = "repository")
-                                      final String repository) throws IOException {
+    final String repository) throws IOException {
         String root = repository;
         if (repository == null) {
             root = AccessController.doPrivileged(new PrivilegedAction<String>() {
                 public String run() {
-                    // Default to <user.home>/tuscany/domains/local/
+                    // Default to <user.home>/.tuscany/domains/local/
                     String userHome = System.getProperty("user.home");
                     String slash = File.separator;
-                    return userHome + slash + "tuscany" + slash + "domains" + slash + "local" + slash;
+                    return userHome + slash + ".tuscany" + slash + "domains" + slash + "local" + slash;
                 }
             });
         }
         this.rootFile = new File(root);
+        this.domain = rootFile.toURI();
         FileHelper.forceMkdir(rootFile);
         if (!rootFile.exists() || !rootFile.isDirectory() || !rootFile.canRead()) {
             throw new IOException("The root is not a directory: " + repository);
@@ -92,7 +96,7 @@
     }
 
     public URI getDomain() {
-        return rootFile.toURI();
+        return domain;
     }
 
     /**
@@ -104,7 +108,7 @@
      */
     private File mapToFile(URI contribution) {
         // FIXME: Map the contribution URI to a file?
-        return new File(rootFile, contribution.getPath());
+        return new File(rootFile, "contributions" + File.separator + contribution.getPath());
     }
 
     /**
@@ -132,12 +136,13 @@
         // where the file should be stored in the repository
         File location = mapToFile(contribution);
         FileHelper.forceMkdir(location.getParentFile());
-        
+
         copy(contributionStream, location);
 
         // add contribution to repositoryContent
         URL contributionURL = location.toURL();
-        contributionMap.put(contribution, contributionURL);
+        URI relative = rootFile.toURI().relativize(location.toURI());
+        contributionMap.put(contribution, relative.toString());
         saveMap();
 
         return contributionURL;
@@ -160,18 +165,27 @@
         FileHelper.copyDirectory(source, location);
 
         // add contribution to repositoryContent
-        URL contributionURL = location.toURL();
-        contributionMap.put(contribution, contributionURL);
+        URI relative = rootFile.toURI().relativize(location.toURI());
+        contributionMap.put(contribution, relative.toString());
         saveMap();
 
-        return contributionURL;
+        return location.toURL();
     }
 
     public URL find(URI contribution) {
         if (contribution == null) {
             return null;
         }
-        return this.contributionMap.get(contribution);
+        String location = contributionMap.get(contribution);
+        if (location == null) {
+            return null;
+        }
+        try {
+            return new File(rootFile, location).toURL();
+        } catch (MalformedURLException e) {
+            // Should not happen
+            throw new AssertionError(e);
+        }
     }
 
     public void remove(URI contribution) {
@@ -207,12 +221,23 @@
         try {
             XMLStreamReader reader = factory.createXMLStreamReader(new InputStreamReader(is, "UTF-8"));
             while (reader.hasNext()) {
-                int event = reader.getEventType();
-                if (event == XMLStreamConstants.START_ELEMENT 
-                    && reader.getName().getLocalPart().equals("contribution")) {
-                    String uri = reader.getAttributeValue(null, "uri");
-                    String url = reader.getAttributeValue(null, "url");
-                    contributionMap.put(URI.create(uri), new URL(url));
+                switch (reader.getEventType()) {
+                    case XMLStreamConstants.START_ELEMENT:
+                        String name = reader.getName().getLocalPart();
+                        if ("domain".equals(name)) {
+                            String uri = reader.getAttributeValue(null, "uri");
+                            if (uri != null) {
+                                domain = URI.create(uri);
+                            }
+                        }
+                        if ("contribution".equals(name)) {
+                            String uri = reader.getAttributeValue(null, "uri");
+                            String location = reader.getAttributeValue(null, "location");
+                            contributionMap.put(URI.create(uri), location);
+                        }
+                        break;
+                    default:
+                        break;
                 }
                 reader.next();
             }
@@ -228,13 +253,13 @@
         FileOutputStream os = null;
         try {
             os = new FileOutputStream(domainFile);
-            Writer writer = new OutputStreamWriter(os, "UTF-8");
-            writer.write("<?xml version='1.0' encoding='UTF-8'?>\n");
-            writer.write("<contributions>\n");
-            for (Map.Entry<URI, URL> e : contributionMap.entrySet()) {
-                writer.write("<contribution uri='" + e.getKey() + "' url='" + e.getValue() + "'/>\n");
+            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<URI, String> e : contributionMap.entrySet()) {
+                writer.println("    <contribution uri=\"" + e.getKey() + "\" location=\"" + e.getValue() + "\"/>");
             }
-            writer.write("</contributions>\n");
+            writer.println("</domain>");
             writer.flush();
         } catch (IOException e) {
             throw new IllegalArgumentException(e);

Modified: incubator/tuscany/branches/sca-java-integration/sca/kernel/core/src/test/java/org/apache/tuscany/core/services/deployment/ContributionRepositoryTestCase.java
URL: http://svn.apache.org/viewvc/incubator/tuscany/branches/sca-java-integration/sca/kernel/core/src/test/java/org/apache/tuscany/core/services/deployment/ContributionRepositoryTestCase.java?view=diff&rev=515236&r1=515235&r2=515236
==============================================================================
--- incubator/tuscany/branches/sca-java-integration/sca/kernel/core/src/test/java/org/apache/tuscany/core/services/deployment/ContributionRepositoryTestCase.java (original)
+++ incubator/tuscany/branches/sca-java-integration/sca/kernel/core/src/test/java/org/apache/tuscany/core/services/deployment/ContributionRepositoryTestCase.java Tue Mar  6 10:12:52 2007
@@ -19,25 +19,28 @@
 
 package org.apache.tuscany.core.services.deployment;
 
+import java.io.File;
 import java.io.InputStream;
 import java.net.URI;
 import java.net.URL;
 
+import org.apache.tuscany.core.util.FileHelper;
+
 import junit.framework.TestCase;
 
 public class ContributionRepositoryTestCase extends TestCase {
-    protected ContributionRepositoryImpl repository;
+    private ContributionRepositoryImpl repository;
 
     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("target/repository/");
+        repository.init();
     }
 
     public void testStore() throws Exception {
         String resourceLocation = "/repository/sample-calculator.jar";
-        URI contribution = URI.create("/contributions/sample-calculator.jar");
+        URI contribution = URI.create("sample-calculator.jar");
         InputStream contributionStream = getClass().getResourceAsStream(resourceLocation);
         repository.store(contribution, contributionStream);
 
@@ -47,7 +50,7 @@
 
     public void testRemove() throws Exception {
         String resourceLocation = "/repository/sample-calculator.jar";
-        URI contribution = URI.create("/contributions/sample-calculator.jar");
+        URI contribution = URI.create("sample-calculator.jar");
         InputStream contributionStream = getClass().getResourceAsStream(resourceLocation);
         repository.store(contribution, contributionStream);
 
@@ -58,10 +61,16 @@
 
     public void testList() throws Exception {
         String resourceLocation = "/repository/sample-calculator.jar";
-        URI contribution = URI.create("/contributions/sample-calculator.jar");
+        URI contribution = URI.create("sample-calculator.jar");
         InputStream contributionStream = getClass().getResourceAsStream(resourceLocation);
         repository.store(contribution, contributionStream);
 
         assertEquals(1, repository.list().size());
+    }
+
+    @Override
+    protected void tearDown() throws Exception {
+        super.tearDown();
+        FileHelper.deleteDirectory(new File("target/repository"));
     }
 }



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