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/04/06 23:23:52 UTC
svn commit: r526289 - in
/incubator/tuscany/java/sca/modules/contribution-impl/src:
main/java/org/apache/tuscany/services/contribution/
main/java/org/apache/tuscany/services/contribution/processor/
test/java/org/apache/tuscany/services/contribution/pro...
Author: rfeng
Date: Fri Apr 6 14:23:50 2007
New Revision: 526289
URL: http://svn.apache.org/viewvc?view=rev&rev=526289
Log:
Update ContributionPackageProcessor to return List<URI>
Modified:
incubator/tuscany/java/sca/modules/contribution-impl/src/main/java/org/apache/tuscany/services/contribution/ContributionPackageProcessorRegistryImpl.java
incubator/tuscany/java/sca/modules/contribution-impl/src/main/java/org/apache/tuscany/services/contribution/ContributionServiceImpl.java
incubator/tuscany/java/sca/modules/contribution-impl/src/main/java/org/apache/tuscany/services/contribution/processor/FolderContributionProcessor.java
incubator/tuscany/java/sca/modules/contribution-impl/src/main/java/org/apache/tuscany/services/contribution/processor/JarContributionProcessor.java
incubator/tuscany/java/sca/modules/contribution-impl/src/test/java/org/apache/tuscany/services/contribution/processor/FolderContributionPackageProcessorTestCase.java
incubator/tuscany/java/sca/modules/contribution-impl/src/test/java/org/apache/tuscany/services/contribution/processor/JarContributionPackageProcessorTestCase.java
Modified: incubator/tuscany/java/sca/modules/contribution-impl/src/main/java/org/apache/tuscany/services/contribution/ContributionPackageProcessorRegistryImpl.java
URL: http://svn.apache.org/viewvc/incubator/tuscany/java/sca/modules/contribution-impl/src/main/java/org/apache/tuscany/services/contribution/ContributionPackageProcessorRegistryImpl.java?view=diff&rev=526289&r1=526288&r2=526289
==============================================================================
--- incubator/tuscany/java/sca/modules/contribution-impl/src/main/java/org/apache/tuscany/services/contribution/ContributionPackageProcessorRegistryImpl.java (original)
+++ incubator/tuscany/java/sca/modules/contribution-impl/src/main/java/org/apache/tuscany/services/contribution/ContributionPackageProcessorRegistryImpl.java Fri Apr 6 14:23:50 2007
@@ -21,17 +21,17 @@
import java.io.IOException;
import java.io.InputStream;
+import java.net.MalformedURLException;
import java.net.URI;
import java.net.URL;
import java.util.HashMap;
import java.util.List;
import java.util.Map;
-import org.apache.tuscany.services.contribution.model.Contribution;
-import org.apache.tuscany.services.spi.contribution.TypeDescriber;
import org.apache.tuscany.services.spi.contribution.ContributionException;
import org.apache.tuscany.services.spi.contribution.ContributionPackageProcessor;
import org.apache.tuscany.services.spi.contribution.ContributionPackageProcessorRegistry;
+import org.apache.tuscany.services.spi.contribution.TypeDescriber;
import org.apache.tuscany.services.spi.contribution.UnsupportedContentTypeException;
/**
@@ -65,7 +65,7 @@
registry.remove(contentType);
}
- public List<URL> getArtifacts(URL packageSourceURL,InputStream inputStream) throws ContributionException, IOException{
+ public List<URI> getArtifacts(URL packageSourceURL,InputStream inputStream) throws ContributionException, IOException{
String contentType = this.packageTypeDescriber.getType(packageSourceURL, null);
if (contentType == null) {
throw new UnsupportedContentTypeException("Unsupported contribution package", packageSourceURL.toString());
@@ -78,4 +78,13 @@
return packageProcessor.getArtifacts(packageSourceURL, inputStream);
}
+
+ /**
+ * @see org.apache.tuscany.services.spi.contribution.ContributionPackageProcessor#getArtifactURL(java.net.URL, java.net.URI)
+ */
+ public URL getArtifactURL(URL packageSourceURL, URI artifact) throws MalformedURLException {
+ String contentType = this.packageTypeDescriber.getType(packageSourceURL, null);
+ ContributionPackageProcessor packageProcessor = this.registry.get(contentType);
+ return packageProcessor.getArtifactURL(packageSourceURL, artifact);
+ }
}
Modified: incubator/tuscany/java/sca/modules/contribution-impl/src/main/java/org/apache/tuscany/services/contribution/ContributionServiceImpl.java
URL: http://svn.apache.org/viewvc/incubator/tuscany/java/sca/modules/contribution-impl/src/main/java/org/apache/tuscany/services/contribution/ContributionServiceImpl.java?view=diff&rev=526289&r1=526288&r2=526289
==============================================================================
--- incubator/tuscany/java/sca/modules/contribution-impl/src/main/java/org/apache/tuscany/services/contribution/ContributionServiceImpl.java (original)
+++ incubator/tuscany/java/sca/modules/contribution-impl/src/main/java/org/apache/tuscany/services/contribution/ContributionServiceImpl.java Fri Apr 6 14:23:50 2007
@@ -20,6 +20,7 @@
import java.io.IOException;
import java.io.InputStream;
+import java.net.MalformedURLException;
import java.net.URI;
import java.net.URL;
import java.net.URLClassLoader;
@@ -53,16 +54,16 @@
protected ContributionRepository contributionRepository;
/**
- * Registry of available package processors.
+ * Registry of available package processors.
*/
protected ContributionPackageProcessorRegistry packageProcessorRegistry;
/**
* Registry of available artifact processors
*/
-
+
protected ArtifactProcessorRegistry artifactProcessorRegistry;
-
+
/**
* xml factory used to create reader instance to load contribution metadata
*/
@@ -72,7 +73,6 @@
*/
protected ContributionMetadataLoaderImpl contributionLoader;
-
/**
* Contribution registry This is a registry of processed Contributios index
* by URI
@@ -90,7 +90,7 @@
this.packageProcessorRegistry = packageProcessorRegistry;
this.artifactProcessorRegistry = artifactProcessorRegistry;
this.resolverRegistry = resolverRegistry;
-
+
this.xmlFactory = XMLInputFactory.newInstance("javax.xml.stream.XMLInputFactory", getClass().getClassLoader());
this.contributionLoader = new ContributionMetadataLoaderImpl();
}
@@ -127,8 +127,8 @@
if (contributionMetadataURL == null && generatedContributionMetadataURL == null) {
contributionMetadata = new Contribution();
} else {
- URL metadataURL =
- contributionMetadataURL != null ? contributionMetadataURL : generatedContributionMetadataURL;
+ URL metadataURL = contributionMetadataURL != null ? contributionMetadataURL
+ : generatedContributionMetadataURL;
try {
metadataStream = metadataURL.openStream();
@@ -136,14 +136,12 @@
contributionMetadata = this.contributionLoader.load(xmlReader);
} catch (IOException ioe) {
- throw new
- InvalidContributionMetadataException(ioe.getMessage(), metadataURL.toExternalForm(), ioe);
+ throw new InvalidContributionMetadataException(ioe.getMessage(), metadataURL.toExternalForm(), ioe);
} catch (XMLStreamException xmle) {
- throw new
- InvalidContributionMetadataException(xmle.getMessage(), metadataURL.toExternalForm(), xmle);
+ throw new InvalidContributionMetadataException(xmle.getMessage(), metadataURL.toExternalForm(),
+ xmle);
} catch (ContributionMetadataLoaderException le) {
- throw new
- InvalidContributionMetadataException(le.getMessage(), metadataURL.toExternalForm(), le);
+ throw new InvalidContributionMetadataException(le.getMessage(), metadataURL.toExternalForm(), le);
}
}
} finally {
@@ -158,7 +156,7 @@
return contributionMetadata;
}
-
+
public Contribution getContribution(URI id) {
return this.contributionRegistry.get(id);
}
@@ -170,49 +168,57 @@
public void addDeploymentComposite(URI contribution, Object composite) {
/*
- CompositeComponentType model = (CompositeComponentType)composite;
- URI compositeURI = contribution.resolve(model.getName() + ".composite");
- DeployedArtifact artifact = new DeployedArtifact(compositeURI);
- // FIXME: the namespace should be from the CompositeComponentType model
- artifact.addModelObject(composite.getClass(), null, composite);
- Contribution contributionObject = (Contribution)getContribution(contribution);
- contributionObject.addArtifact(artifact);
- */
+ * CompositeComponentType model = (CompositeComponentType)composite; URI
+ * compositeURI = contribution.resolve(model.getName() + ".composite");
+ * DeployedArtifact artifact = new DeployedArtifact(compositeURI); //
+ * FIXME: the namespace should be from the CompositeComponentType model
+ * artifact.addModelObject(composite.getClass(), null, composite);
+ * Contribution contributionObject =
+ * (Contribution)getContribution(contribution);
+ * contributionObject.addArtifact(artifact);
+ */
}
/*
- public <T> T resolve(URI contribution, Class<T> definitionType, String namespace, String name) {
- Contribution contributionObject = getContribution(contribution);
- return resolverRegistry.resolve(contributionObject, definitionType, namespace, name, null);
- }
-
- public URL resolve(URI contribution, String namespace, URI uri, URI baseURI) {
- Contribution contributionObject = getContribution(contribution);
- return resolverRegistry.resolve(contributionObject, namespace, uri.toString(), baseURI.toString());
- }
- */
+ * public <T> T resolve(URI contribution, Class<T> definitionType, String
+ * namespace, String name) { Contribution contributionObject =
+ * getContribution(contribution); return
+ * resolverRegistry.resolve(contributionObject, definitionType, namespace,
+ * name, null); } public URL resolve(URI contribution, String namespace, URI
+ * uri, URI baseURI) { Contribution contributionObject =
+ * getContribution(contribution); return
+ * resolverRegistry.resolve(contributionObject, namespace, uri.toString(),
+ * baseURI.toString()); }
+ */
- public <M> M resolve(Class modelClass, Class<M> elementClass, Object modelKey, Object elementKey, Map<String, Object> attributes) {
+ public <M> M resolve(Class modelClass,
+ Class<M> elementClass,
+ Object modelKey,
+ Object elementKey,
+ Map<String, Object> attributes) {
// TODO Auto-generated method stub
return null;
}
-
-
+
/**
*
*/
-
+
/**
- * Note:
+ * Note:
+ *
* @param contributionURI ContributionID
* @param sourceURL contribution location
* @param contributionStream contribution content
- * @param storeInRepository flag if we store the contribution into the repository or not
+ * @param storeInRepository flag if we store the contribution into the
+ * repository or not
* @throws IOException
* @throws DeploymentException
*/
- private void addContribution(URI contributionURI, URL sourceURL, InputStream contributionStream, boolean storeInRepository)
- throws IOException, ContributionException {
+ private void addContribution(URI contributionURI,
+ URL sourceURL,
+ InputStream contributionStream,
+ boolean storeInRepository) throws IOException, ContributionException {
if (contributionStream == null && sourceURL == null) {
throw new IllegalArgumentException("The content of the contribution is null");
}
@@ -230,9 +236,9 @@
Contribution contribution = initializeContributionMetadata(locationURL);
contribution.setURI(contributionURI);
contribution.setLocation(locationURL);
-
- List<URL> contributionArtifacts = null;
-
+
+ List<URI> contributionArtifacts = null;
+
if (contributionStream == null) {
contributionStream = sourceURL.openStream();
try {
@@ -246,19 +252,20 @@
// process the contribution
contributionArtifacts = this.packageProcessorRegistry.getArtifacts(locationURL, contributionStream);
}
-
- //processArtifactRead(contribution, contributionArtifacts);
-
+
+ processArtifactRead(contribution, contributionArtifacts);
+
// store the contribution on the registry
this.contributionRegistry.put(contribution.getUri(), contribution);
}
-
- private void processArtifactRead(Contribution contribution, List<URL> artifacts) throws ContributionException{
- for(URL artifactURL : artifacts){
+ private void processArtifactRead(Contribution contribution, List<URI> artifacts) throws ContributionException,
+ MalformedURLException {
+ for (URI a : artifacts) {
+ URL artifactURL = packageProcessorRegistry.getArtifactURL(contribution.getLocation(), a);
Object model = this.artifactProcessorRegistry.read(artifactURL);
- if(model != null){
+ if (model != null) {
URI artifactURI = getArtifactURI(contribution.getUri(), artifactURL);
DeployedArtifact artifact = new DeployedArtifact(artifactURI);
artifact.setLocation(artifactURL);
@@ -266,13 +273,11 @@
}
}
}
-
-
-
- private URI getArtifactURI(URI baseURI, URL artifactURL){
+
+ private URI getArtifactURI(URI baseURI, URL artifactURL) {
String artifactPath = artifactURL.toExternalForm().substring(artifactURL.toExternalForm().length());
return baseURI.resolve(artifactPath);
}
-
-}
\ No newline at end of file
+
+}
Modified: incubator/tuscany/java/sca/modules/contribution-impl/src/main/java/org/apache/tuscany/services/contribution/processor/FolderContributionProcessor.java
URL: http://svn.apache.org/viewvc/incubator/tuscany/java/sca/modules/contribution-impl/src/main/java/org/apache/tuscany/services/contribution/processor/FolderContributionProcessor.java?view=diff&rev=526289&r1=526288&r2=526289
==============================================================================
--- incubator/tuscany/java/sca/modules/contribution-impl/src/main/java/org/apache/tuscany/services/contribution/processor/FolderContributionProcessor.java (original)
+++ incubator/tuscany/java/sca/modules/contribution-impl/src/main/java/org/apache/tuscany/services/contribution/processor/FolderContributionProcessor.java Fri Apr 6 14:23:50 2007
@@ -22,6 +22,7 @@
import java.io.File;
import java.io.IOException;
import java.io.InputStream;
+import java.net.URI;
import java.net.URISyntaxException;
import java.net.URL;
import java.util.ArrayList;
@@ -34,16 +35,17 @@
import org.apache.tuscany.services.spi.contribution.ContributionPackageProcessorRegistry;
import org.apache.tuscany.services.spi.contribution.extension.ContributionPackageProcessorExtension;
-public class FolderContributionProcessor extends ContributionPackageProcessorExtension implements ContributionPackageProcessor {
+public class FolderContributionProcessor extends ContributionPackageProcessorExtension implements
+ ContributionPackageProcessor {
/**
* Package-type that this package processor can handle
*/
public static final String PACKAGE_TYPE = ContentType.FOLDER;
- public FolderContributionProcessor(ContributionPackageProcessorRegistry registry){
+ public FolderContributionProcessor(ContributionPackageProcessorRegistry registry) {
super(registry);
}
-
+
public String getPackageType() {
return PACKAGE_TYPE;
}
@@ -52,18 +54,18 @@
* Recursively traverse a root directory
*
* @param fileList
- * @param root
+ * @param file
* @throws IOException
*/
- private void traverse(List<URL> fileList, File root) throws IOException {
- if (root.isFile()) {
- fileList.add(root.toURL());
- } else if (root.isDirectory()) {
+ private void traverse(List<URI> fileList, File file, File root) throws IOException {
+ if (file.isFile()) {
+ fileList.add(root.toURI().relativize(file.toURI()));
+ } else if (file.isDirectory()) {
// FIXME: Maybe we should externalize it as a property
// Regular expression to exclude .xxx files
- File[] files = root.listFiles(FileHelper.getFileFilter("[^\u002e].*", true));
+ File[] files = file.listFiles(FileHelper.getFileFilter("[^\u002e].*", true));
for (int i = 0; i < files.length; i++) {
- traverse(fileList, files[i]);
+ traverse(fileList, files[i], root);
}
}
}
@@ -74,30 +76,31 @@
* @return
* @throws IOException
*/
- public List<URL> getArtifacts(URL packageSourceURL, InputStream inputStream) throws ContributionException, IOException{
+ public List<URI> getArtifacts(URL packageSourceURL, InputStream inputStream) throws ContributionException,
+ IOException {
if (packageSourceURL == null) {
throw new IllegalArgumentException("Invalid null package source URL.");
}
-
- List<URL> artifacts = new ArrayList<URL>();
+
+ List<URI> artifacts = new ArrayList<URI>();
// Assume the root is a jar file
File rootFolder;
-
+
try {
rootFolder = new File(packageSourceURL.toURI());
if (rootFolder.isDirectory()) {
- if(! rootFolder.exists()){
+ if (!rootFolder.exists()) {
throw new InvalidFolderContributionException(rootFolder.getAbsolutePath());
}
- this.traverse(artifacts, rootFolder);
+ this.traverse(artifacts, rootFolder, rootFolder);
}
} catch (URISyntaxException e) {
throw new InvalidFolderContributionURIException(packageSourceURL.toExternalForm(), e);
}
-
+
return artifacts;
}
-}
\ No newline at end of file
+}
Modified: incubator/tuscany/java/sca/modules/contribution-impl/src/main/java/org/apache/tuscany/services/contribution/processor/JarContributionProcessor.java
URL: http://svn.apache.org/viewvc/incubator/tuscany/java/sca/modules/contribution-impl/src/main/java/org/apache/tuscany/services/contribution/processor/JarContributionProcessor.java?view=diff&rev=526289&r1=526288&r2=526289
==============================================================================
--- incubator/tuscany/java/sca/modules/contribution-impl/src/main/java/org/apache/tuscany/services/contribution/processor/JarContributionProcessor.java (original)
+++ incubator/tuscany/java/sca/modules/contribution-impl/src/main/java/org/apache/tuscany/services/contribution/processor/JarContributionProcessor.java Fri Apr 6 14:23:50 2007
@@ -22,6 +22,7 @@
import java.io.IOException;
import java.io.InputStream;
import java.net.MalformedURLException;
+import java.net.URI;
import java.net.URL;
import java.util.ArrayList;
import java.util.List;
@@ -34,13 +35,14 @@
import org.apache.tuscany.services.spi.contribution.ContributionPackageProcessorRegistry;
import org.apache.tuscany.services.spi.contribution.extension.ContributionPackageProcessorExtension;
-public class JarContributionProcessor extends ContributionPackageProcessorExtension implements ContributionPackageProcessor {
+public class JarContributionProcessor extends ContributionPackageProcessorExtension implements
+ ContributionPackageProcessor {
/**
* Package-type that this package processor can handle
*/
public static final String PACKAGE_TYPE = ContentType.JAR;
-
- public JarContributionProcessor(ContributionPackageProcessorRegistry registry){
+
+ public JarContributionProcessor(ContributionPackageProcessorRegistry registry) {
super(registry);
}
@@ -48,16 +50,17 @@
return PACKAGE_TYPE;
}
- private URL forceJarURL(URL sourceURL) throws MalformedURLException {
+ public URL getArtifactURL(URL sourceURL, URI artifact) throws MalformedURLException {
if (sourceURL.toString().startsWith("jar:")) {
- return sourceURL;
+ return new URL(sourceURL, artifact.toString());
} else {
- return new URL("jar:" + sourceURL.toExternalForm() + "!/");
+ return new URL("jar:" + sourceURL.toExternalForm() + "!/" + artifact);
}
}
-
- public List<URL> getArtifacts(URL packageSourceURL, InputStream inputStream) throws ContributionException, IOException{
+
+ public List<URI> getArtifacts(URL packageSourceURL, InputStream inputStream) throws ContributionException,
+ IOException {
if (packageSourceURL == null) {
throw new IllegalArgumentException("Invalid null package source URL.");
}
@@ -66,10 +69,8 @@
throw new IllegalArgumentException("Invalid null source inputstream.");
}
- List<URL> artifacts = new ArrayList<URL>();
-
- packageSourceURL = forceJarURL(packageSourceURL);
-
+ List<URI> artifacts = new ArrayList<URI>();
+
// Assume the root is a jar file
JarInputStream jar = new JarInputStream(inputStream);
try {
@@ -85,7 +86,7 @@
// FIXME: Maybe we should externalize the filter as a property
if (!entry.getName().startsWith(".")) {
- artifacts.add(new URL(packageSourceURL, entry.getName()));
+ artifacts.add(URI.create(entry.getName()));
}
}
} finally {
Modified: incubator/tuscany/java/sca/modules/contribution-impl/src/test/java/org/apache/tuscany/services/contribution/processor/FolderContributionPackageProcessorTestCase.java
URL: http://svn.apache.org/viewvc/incubator/tuscany/java/sca/modules/contribution-impl/src/test/java/org/apache/tuscany/services/contribution/processor/FolderContributionPackageProcessorTestCase.java?view=diff&rev=526289&r1=526288&r2=526289
==============================================================================
--- incubator/tuscany/java/sca/modules/contribution-impl/src/test/java/org/apache/tuscany/services/contribution/processor/FolderContributionPackageProcessorTestCase.java (original)
+++ incubator/tuscany/java/sca/modules/contribution-impl/src/test/java/org/apache/tuscany/services/contribution/processor/FolderContributionPackageProcessorTestCase.java Fri Apr 6 14:23:50 2007
@@ -19,7 +19,7 @@
package org.apache.tuscany.services.contribution.processor;
import java.io.File;
-import java.net.URL;
+import java.net.URI;
import java.util.List;
import junit.framework.TestCase;
@@ -29,7 +29,7 @@
import org.apache.tuscany.services.spi.contribution.ContributionPackageProcessorRegistry;
public class FolderContributionPackageProcessorTestCase extends TestCase {
- private static final String FOLDER_CONTRIBUTION = "../../../../core-samples/common/calculator";
+ private static final String FOLDER_CONTRIBUTION = ".";
private File contributionRoot;
@@ -42,7 +42,7 @@
ContributionPackageProcessorRegistry packageProcessorRegistry = new ContributionPackageProcessorRegistryImpl(new PackageTypeDescriberImpl());
FolderContributionProcessor folderProcessor = new FolderContributionProcessor(packageProcessorRegistry);
- List<URL> artifacts = folderProcessor.getArtifacts(contributionRoot.toURL(), null);
+ List<URI> artifacts = folderProcessor.getArtifacts(contributionRoot.toURL(), null);
assertNotNull(artifacts);
}
}
Modified: incubator/tuscany/java/sca/modules/contribution-impl/src/test/java/org/apache/tuscany/services/contribution/processor/JarContributionPackageProcessorTestCase.java
URL: http://svn.apache.org/viewvc/incubator/tuscany/java/sca/modules/contribution-impl/src/test/java/org/apache/tuscany/services/contribution/processor/JarContributionPackageProcessorTestCase.java?view=diff&rev=526289&r1=526288&r2=526289
==============================================================================
--- incubator/tuscany/java/sca/modules/contribution-impl/src/test/java/org/apache/tuscany/services/contribution/processor/JarContributionPackageProcessorTestCase.java (original)
+++ incubator/tuscany/java/sca/modules/contribution-impl/src/test/java/org/apache/tuscany/services/contribution/processor/JarContributionPackageProcessorTestCase.java Fri Apr 6 14:23:50 2007
@@ -19,6 +19,7 @@
package org.apache.tuscany.services.contribution.processor;
import java.io.InputStream;
+import java.net.URI;
import java.net.URL;
import java.util.List;
@@ -42,7 +43,7 @@
URL jarURL = getClass().getResource(JAR_CONTRIBUTION);
InputStream jarStream = jarURL.openStream();
- List<URL> artifacts = null;
+ List<URI> artifacts = null;
try{
artifacts = jarProcessor.getArtifacts(jarURL, jarStream);
}finally{
---------------------------------------------------------------------
To unsubscribe, e-mail: tuscany-commits-unsubscribe@ws.apache.org
For additional commands, e-mail: tuscany-commits-help@ws.apache.org