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