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/04/06 09:18:54 UTC
svn commit: r526081 - 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/ te...
Author: lresende
Date: Fri Apr 6 00:18:53 2007
New Revision: 526081
URL: http://svn.apache.org/viewvc?view=rev&rev=526081
Log:
Implementing simplifications to packageProcessor interfaces
Updating testcases
Added:
incubator/tuscany/java/sca/modules/contribution-impl/src/main/java/org/apache/tuscany/services/contribution/ArtifactTypeDescriberImpl.java
- copied, changed from r525992, incubator/tuscany/java/sca/modules/contribution-impl/src/main/java/org/apache/tuscany/services/contribution/ContentTypeDescriberImpl.java
Removed:
incubator/tuscany/java/sca/modules/contribution-impl/src/main/java/org/apache/tuscany/services/contribution/ContentTypeDescriberImpl.java
incubator/tuscany/java/sca/modules/contribution-impl/src/main/java/org/apache/tuscany/services/contribution/ContributionDirectoryWatcher.java
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/PackageTypeDescriberImpl.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/ContentTypeDescriberImplTestCase.java
incubator/tuscany/java/sca/modules/contribution-impl/src/test/java/org/apache/tuscany/services/contribution/ContributionServiceImplTestCase.java
incubator/tuscany/java/sca/modules/contribution-impl/src/test/java/org/apache/tuscany/services/contribution/PackageTypeDescriberImplTestCase.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
Copied: incubator/tuscany/java/sca/modules/contribution-impl/src/main/java/org/apache/tuscany/services/contribution/ArtifactTypeDescriberImpl.java (from r525992, incubator/tuscany/java/sca/modules/contribution-impl/src/main/java/org/apache/tuscany/services/contribution/ContentTypeDescriberImpl.java)
URL: http://svn.apache.org/viewvc/incubator/tuscany/java/sca/modules/contribution-impl/src/main/java/org/apache/tuscany/services/contribution/ArtifactTypeDescriberImpl.java?view=diff&rev=526081&p1=incubator/tuscany/java/sca/modules/contribution-impl/src/main/java/org/apache/tuscany/services/contribution/ContentTypeDescriberImpl.java&r1=525992&p2=incubator/tuscany/java/sca/modules/contribution-impl/src/main/java/org/apache/tuscany/services/contribution/ArtifactTypeDescriberImpl.java&r2=526081
==============================================================================
--- incubator/tuscany/java/sca/modules/contribution-impl/src/main/java/org/apache/tuscany/services/contribution/ContentTypeDescriberImpl.java (original)
+++ incubator/tuscany/java/sca/modules/contribution-impl/src/main/java/org/apache/tuscany/services/contribution/ArtifactTypeDescriberImpl.java Fri Apr 6 00:18:53 2007
@@ -28,17 +28,17 @@
import org.apache.tuscany.services.contribution.model.ContentType;
import org.apache.tuscany.services.contribution.model.Contribution;
import org.apache.tuscany.services.contribution.util.FileHelper;
-import org.apache.tuscany.services.spi.contribution.ContentTypeDescriber;
+import org.apache.tuscany.services.spi.contribution.TypeDescriber;
/**
* Implementation of the content describer
*
* @version $Rev$ $Date$
*/
-public class ContentTypeDescriberImpl implements ContentTypeDescriber {
+public class ArtifactTypeDescriberImpl implements TypeDescriber {
private final Map<String, String> contentTypeRegistry = new HashMap<String, String>();
- public ContentTypeDescriberImpl() {
+ public ArtifactTypeDescriberImpl() {
super();
init();
}
@@ -71,7 +71,7 @@
* @param defaultContentType
* @return
*/
- public String getContentType(URL resourceURL, String defaultContentType) {
+ public String getType(URL resourceURL, String defaultContentType) {
URLConnection connection = null;
String contentType = defaultContentType;
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=526081&r1=526080&r2=526081
==============================================================================
--- 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 00:18:53 2007
@@ -24,10 +24,11 @@
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.ContentTypeDescriber;
+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;
@@ -46,13 +47,13 @@
/**
* Helper method to describe contentType for each artifact
*/
- private ContentTypeDescriber packageTypeDescriber;
+ private TypeDescriber packageTypeDescriber;
- public ContributionPackageProcessorRegistryImpl(ContentTypeDescriber contentTypeDescriber) {
- if (contentTypeDescriber == null) {
+ public ContributionPackageProcessorRegistryImpl(TypeDescriber packageTypeDescriber) {
+ if (packageTypeDescriber == null) {
this.packageTypeDescriber = new PackageTypeDescriberImpl();
} else {
- this.packageTypeDescriber = contentTypeDescriber;
+ this.packageTypeDescriber = packageTypeDescriber;
}
}
@@ -64,20 +65,17 @@
registry.remove(contentType);
}
- public void processContent(Contribution contribution, URI source, InputStream inputStream)
- throws ContributionException, IOException {
-
- URL locationURL = contribution.getArtifact(source).getLocation();
- String contentType = this.packageTypeDescriber.getContentType(locationURL, null);
+ public List<URL> getArtifacts(URL packageSourceURL,InputStream inputStream) throws ContributionException, IOException{
+ String contentType = this.packageTypeDescriber.getType(packageSourceURL, null);
if (contentType == null) {
- throw new UnsupportedContentTypeException("Unsupported contribution package", source.toString());
+ throw new UnsupportedContentTypeException("Unsupported contribution package", packageSourceURL.toString());
}
- ContributionPackageProcessor processor = this.registry.get(contentType);
- if (processor == null) {
- throw new UnsupportedContentTypeException(contentType, locationURL.getPath());
+ ContributionPackageProcessor packageProcessor = this.registry.get(contentType);
+ if (packageProcessor == null) {
+ throw new UnsupportedContentTypeException(contentType, packageSourceURL.getPath());
}
- processor.processContent(contribution, source, inputStream);
+ return packageProcessor.getArtifacts(packageSourceURL, inputStream);
}
}
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=526081&r1=526080&r2=526081
==============================================================================
--- 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 00:18:53 2007
@@ -24,6 +24,7 @@
import java.net.URL;
import java.net.URLClassLoader;
import java.util.HashMap;
+import java.util.List;
import java.util.Map;
import javax.xml.stream.XMLInputFactory;
@@ -31,7 +32,9 @@
import javax.xml.stream.XMLStreamReader;
import org.apache.tuscany.services.contribution.model.Contribution;
+import org.apache.tuscany.services.contribution.model.DeployedArtifact;
import org.apache.tuscany.services.contribution.util.IOHelper;
+import org.apache.tuscany.services.spi.contribution.ArtifactProcessorRegistry;
import org.apache.tuscany.services.spi.contribution.ArtifactResolverRegistry;
import org.apache.tuscany.services.spi.contribution.ContributionException;
import org.apache.tuscany.services.spi.contribution.ContributionPackageProcessorRegistry;
@@ -50,11 +53,17 @@
protected ContributionRepository contributionRepository;
/**
- * Registry of available processors. Usually set by injection.
+ * Registry of available package processors.
*/
- protected ContributionPackageProcessorRegistry processorRegistry;
+ protected ContributionPackageProcessorRegistry packageProcessorRegistry;
/**
+ * Registry of available artifact processors
+ */
+
+ protected ArtifactProcessorRegistry artifactProcessorRegistry;
+
+ /**
* xml factory used to create reader instance to load contribution metadata
*/
protected XMLInputFactory xmlFactory;
@@ -73,11 +82,13 @@
protected ArtifactResolverRegistry resolverRegistry;
public ContributionServiceImpl(ContributionRepository repository,
- ContributionPackageProcessorRegistry processorRegistry,
+ ContributionPackageProcessorRegistry packageProcessorRegistry,
+ ArtifactProcessorRegistry artifactProcessorRegistry,
ArtifactResolverRegistry resolverRegistry) {
super();
this.contributionRepository = repository;
- this.processorRegistry = processorRegistry;
+ this.packageProcessorRegistry = packageProcessorRegistry;
+ this.artifactProcessorRegistry = artifactProcessorRegistry;
this.resolverRegistry = resolverRegistry;
this.xmlFactory = XMLInputFactory.newInstance("javax.xml.stream.XMLInputFactory", getClass().getClassLoader());
@@ -148,6 +159,49 @@
}
+ public Contribution getContribution(URI id) {
+ return this.contributionRegistry.get(id);
+ }
+
+ public void remove(URI contribution) throws ContributionException {
+ // remove from repository
+ this.contributionRegistry.remove(contribution);
+ }
+
+ 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);
+ */
+ }
+
+ /*
+ 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) {
+ // TODO Auto-generated method stub
+ return null;
+ }
+
+
+ /**
+ *
+ */
+
/**
* Note:
* @param contributionURI ContributionID
@@ -177,62 +231,48 @@
contribution.setURI(contributionURI);
contribution.setLocation(locationURL);
+ List<URL> contributionArtifacts = null;
+
if (contributionStream == null) {
contributionStream = sourceURL.openStream();
try {
// process the contribution
- this.processorRegistry.processContent(contribution, contribution.getUri(), contributionStream);
+ contributionArtifacts = this.packageProcessorRegistry.getArtifacts(locationURL, contributionStream);
} finally {
IOHelper.closeQuietly(contributionStream);
contributionStream = null;
}
-
} else {
// process the contribution
- this.processorRegistry.processContent(contribution, contribution.getUri(), contributionStream);
+ contributionArtifacts = this.packageProcessorRegistry.getArtifacts(locationURL, contributionStream);
}
-
-
+
+ //processArtifactRead(contribution, contributionArtifacts);
+
// store the contribution on the registry
this.contributionRegistry.put(contribution.getUri(), contribution);
}
- public Contribution getContribution(URI id) {
- return this.contributionRegistry.get(id);
- }
-
- public void remove(URI contribution) throws ContributionException {
- // remove from repository
- this.contributionRegistry.remove(contribution);
- }
-
- 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);
- */
- }
-
- /*
- 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());
+
+ private void processArtifactRead(Contribution contribution, List<URL> artifacts) throws ContributionException{
+ for(URL artifactURL : artifacts){
+ Object model = this.artifactProcessorRegistry.read(artifactURL);
+
+ if(model != null){
+ URI artifactURI = getArtifactURI(contribution.getUri(), artifactURL);
+ DeployedArtifact artifact = new DeployedArtifact(artifactURI);
+ artifact.setLocation(artifactURL);
+ contribution.addArtifact(artifact);
+ }
+ }
}
- */
+
+
+
+ private URI getArtifactURI(URI baseURI, URL artifactURL){
+ String artifactPath = artifactURL.toExternalForm().substring(artifactURL.toExternalForm().length());
+ return baseURI.resolve(artifactPath);
- public <M> M resolve(Class modelClass, Class<M> elementClass, Object modelKey, Object elementKey, Map<String, Object> attributes) {
- // TODO Auto-generated method stub
- return null;
}
}
Modified: incubator/tuscany/java/sca/modules/contribution-impl/src/main/java/org/apache/tuscany/services/contribution/PackageTypeDescriberImpl.java
URL: http://svn.apache.org/viewvc/incubator/tuscany/java/sca/modules/contribution-impl/src/main/java/org/apache/tuscany/services/contribution/PackageTypeDescriberImpl.java?view=diff&rev=526081&r1=526080&r2=526081
==============================================================================
--- incubator/tuscany/java/sca/modules/contribution-impl/src/main/java/org/apache/tuscany/services/contribution/PackageTypeDescriberImpl.java (original)
+++ incubator/tuscany/java/sca/modules/contribution-impl/src/main/java/org/apache/tuscany/services/contribution/PackageTypeDescriberImpl.java Fri Apr 6 00:18:53 2007
@@ -27,14 +27,14 @@
import org.apache.tuscany.services.contribution.model.ContentType;
import org.apache.tuscany.services.contribution.util.FileHelper;
-import org.apache.tuscany.services.spi.contribution.ContentTypeDescriber;
+import org.apache.tuscany.services.spi.contribution.TypeDescriber;
/**
* Implementation of the content describer
*
* @version $Rev$ $Date$
*/
-public class PackageTypeDescriberImpl implements ContentTypeDescriber {
+public class PackageTypeDescriberImpl implements TypeDescriber {
private final Map<String, String> contentTypeRegistry = new HashMap<String, String>();
public PackageTypeDescriberImpl() {
@@ -67,7 +67,7 @@
* @param defaultContentType
* @return
*/
- public String getContentType(URL resourceURL, String defaultContentType) {
+ public String getType(URL resourceURL, String defaultContentType) {
URLConnection connection = null;
String contentType = defaultContentType;
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=526081&r1=526080&r2=526081
==============================================================================
--- 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 00:18:53 2007
@@ -22,21 +22,16 @@
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;
import java.util.List;
-import org.apache.tuscany.services.contribution.ContentTypeDescriberImpl;
import org.apache.tuscany.services.contribution.model.ContentType;
-import org.apache.tuscany.services.contribution.model.Contribution;
-import org.apache.tuscany.services.contribution.model.DeployedArtifact;
import org.apache.tuscany.services.contribution.util.FileHelper;
-import org.apache.tuscany.services.contribution.util.IOHelper;
-import org.apache.tuscany.services.spi.contribution.ContentTypeDescriber;
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.extension.ContributionPackageProcessorExtension;
public class FolderContributionProcessor extends ContributionPackageProcessorExtension implements ContributionPackageProcessor {
@@ -45,8 +40,11 @@
*/
public static final String PACKAGE_TYPE = ContentType.FOLDER;
- @Override
- public String getContentType() {
+ public FolderContributionProcessor(ContributionPackageProcessorRegistry registry){
+ super(registry);
+ }
+
+ public String getPackageType() {
return PACKAGE_TYPE;
}
@@ -76,15 +74,18 @@
* @return
* @throws IOException
*/
- protected List<URL> getArtifacts(URL rootURL) throws ContributionException,
- IOException {
+ public List<URL> 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>();
// Assume the root is a jar file
File rootFolder;
try {
- rootFolder = new File(rootURL.toURI());
+ rootFolder = new File(packageSourceURL.toURI());
if (rootFolder.isDirectory()) {
if(! rootFolder.exists()){
throw new InvalidFolderContributionException(rootFolder.getAbsolutePath());
@@ -94,45 +95,9 @@
}
} catch (URISyntaxException e) {
- throw new InvalidFolderContributionURIException(rootURL.toExternalForm(), e);
+ throw new InvalidFolderContributionURIException(packageSourceURL.toExternalForm(), e);
}
-
+
return artifacts;
- }
-
- public void processContent(Contribution contribution, URI source, InputStream inputStream)
- throws ContributionException, IOException {
- if (contribution == null) {
- throw new IllegalArgumentException("Invalid null contribution.");
- }
-
- if (source == null) {
- throw new IllegalArgumentException("Invalid null source uri.");
- }
-
- URL contributionURL = contribution.getArtifact(source).getLocation();
-
- for (URL artifactURL : getArtifacts(contributionURL)) {
- String artifactPath = artifactURL.toExternalForm().substring(contributionURL.toExternalForm().length());
- URI artifactURI = contribution.getUri().resolve(artifactPath);
- DeployedArtifact artifact = new DeployedArtifact(artifactURI);
- artifact.setLocation(artifactURL);
- contribution.addArtifact(artifact);
-
- ContentTypeDescriber contentTypeDescriber = new ContentTypeDescriberImpl();
- String contentType = contentTypeDescriber.getContentType(artifactURL, null);
-
-
- // just process scdl and contribution metadata for now
- if (ContentType.COMPOSITE.equals(contentType)) {
- InputStream is = artifactURL.openStream();
- try {
- this.registry.processContent(contribution, artifactURI, is);
- } finally {
- IOHelper.closeQuietly(is);
- is = null;
- }
- }
- }
}
}
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=526081&r1=526080&r2=526081
==============================================================================
--- 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 00:18:53 2007
@@ -22,21 +22,16 @@
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;
import java.util.jar.JarEntry;
import java.util.jar.JarInputStream;
-import org.apache.tuscany.services.contribution.ContentTypeDescriberImpl;
import org.apache.tuscany.services.contribution.model.ContentType;
-import org.apache.tuscany.services.contribution.model.Contribution;
-import org.apache.tuscany.services.contribution.model.DeployedArtifact;
-import org.apache.tuscany.services.contribution.util.IOHelper;
-import org.apache.tuscany.services.spi.contribution.ContentTypeDescriber;
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.extension.ContributionPackageProcessorExtension;
public class JarContributionProcessor extends ContributionPackageProcessorExtension implements ContributionPackageProcessor {
@@ -44,23 +39,39 @@
* Package-type that this package processor can handle
*/
public static final String PACKAGE_TYPE = ContentType.JAR;
+
+ public JarContributionProcessor(ContributionPackageProcessorRegistry registry){
+ super(registry);
+ }
- @Override
- public String getContentType() {
+ public String getPackageType() {
return PACKAGE_TYPE;
}
- /**
- * Get a list of resources inside the jar
- *
- * @return
- * @throws IOException
- */
- protected List<URL> getArtifacts(URL rootURL, InputStream sourceInputStream) throws IOException {
- List<URL> artifacts = new ArrayList<URL>();
+ private URL forceJarURL(URL sourceURL) throws MalformedURLException {
+ if (sourceURL.toString().startsWith("jar:")) {
+ return sourceURL;
+ } else {
+ return new URL("jar:" + sourceURL.toExternalForm() + "!/");
+ }
+
+ }
+
+ public List<URL> getArtifacts(URL packageSourceURL, InputStream inputStream) throws ContributionException, IOException{
+ if (packageSourceURL == null) {
+ throw new IllegalArgumentException("Invalid null package source URL.");
+ }
+
+ if (inputStream == null) {
+ throw new IllegalArgumentException("Invalid null source inputstream.");
+ }
+ List<URL> artifacts = new ArrayList<URL>();
+
+ packageSourceURL = forceJarURL(packageSourceURL);
+
// Assume the root is a jar file
- JarInputStream jar = new JarInputStream(sourceInputStream);
+ JarInputStream jar = new JarInputStream(inputStream);
try {
while (true) {
JarEntry entry = jar.getNextJarEntry();
@@ -74,66 +85,12 @@
// FIXME: Maybe we should externalize the filter as a property
if (!entry.getName().startsWith(".")) {
- artifacts.add(new URL(rootURL, entry.getName()));
+ artifacts.add(new URL(packageSourceURL, entry.getName()));
}
}
} finally {
jar.close();
}
return artifacts;
- }
-
- private URL forceJarURL(URL sourceURL) throws MalformedURLException {
- if (sourceURL.toString().startsWith("jar:")) {
- return sourceURL;
- } else {
- return new URL("jar:" + sourceURL.toExternalForm() + "!/");
- }
-
- }
-
- public void processContent(Contribution contribution, URI source, InputStream inputStream)
- throws ContributionException, IOException {
- if (contribution == null) {
- throw new IllegalArgumentException("Invalid null contribution.");
- }
-
- if (source == null) {
- throw new IllegalArgumentException("Invalid null source uri.");
- }
-
- if (inputStream == null) {
- throw new IllegalArgumentException("Invalid null source inputstream.");
- }
-
- URL sourceURL = contribution.getArtifact(source).getLocation();
-
- sourceURL = forceJarURL(sourceURL);
-
- for (URL artifactURL : getArtifacts(sourceURL, inputStream)) {
- URI artifactURI;
-
- String artifactPath = artifactURL.toExternalForm().substring(sourceURL.toExternalForm().length());
- artifactURI = contribution.getUri().resolve(artifactPath);
- DeployedArtifact artifact = new DeployedArtifact(artifactURI);
- artifact.setLocation(artifactURL);
- contribution.addArtifact(artifact);
-
-
- ContentTypeDescriber contentTypeDescriber = new ContentTypeDescriberImpl();
- String contentType = contentTypeDescriber.getContentType(artifactURL, null);
-
- // just process scdl for now
- if (ContentType.COMPOSITE.equals(contentType)) {
- InputStream is = IOHelper.getInputStream(artifactURL);
- try {
- this.registry.processContent(contribution, artifactURI, is);
- } finally {
- IOHelper.closeQuietly(is);
- is = null;
- }
- }
- }
-
}
}
Modified: incubator/tuscany/java/sca/modules/contribution-impl/src/test/java/org/apache/tuscany/services/contribution/ContentTypeDescriberImplTestCase.java
URL: http://svn.apache.org/viewvc/incubator/tuscany/java/sca/modules/contribution-impl/src/test/java/org/apache/tuscany/services/contribution/ContentTypeDescriberImplTestCase.java?view=diff&rev=526081&r1=526080&r2=526081
==============================================================================
--- incubator/tuscany/java/sca/modules/contribution-impl/src/test/java/org/apache/tuscany/services/contribution/ContentTypeDescriberImplTestCase.java (original)
+++ incubator/tuscany/java/sca/modules/contribution-impl/src/test/java/org/apache/tuscany/services/contribution/ContentTypeDescriberImplTestCase.java Fri Apr 6 00:18:53 2007
@@ -25,28 +25,28 @@
import org.apache.tuscany.services.contribution.model.ContentType;
public class ContentTypeDescriberImplTestCase extends TestCase {
- private ContentTypeDescriberImpl contentTypeDescriber;
+ private ArtifactTypeDescriberImpl contentTypeDescriber;
public void testResolveContentType() throws Exception {
URL artifactURL = getClass().getResource("test.scdl");
- assertEquals(ContentType.COMPOSITE, contentTypeDescriber.getContentType(artifactURL, null));
+ assertEquals(ContentType.COMPOSITE, contentTypeDescriber.getType(artifactURL, null));
}
public void testResolveUnknownContentType() throws Exception {
URL artifactURL = getClass().getResource("test.ext");
- assertNull(contentTypeDescriber.getContentType(artifactURL, null));
+ assertNull(contentTypeDescriber.getType(artifactURL, null));
}
public void testDefaultContentType() throws Exception {
URL artifactURL = getClass().getResource("test.ext");
assertEquals("application/vnd.tuscany.ext",
- contentTypeDescriber.getContentType(artifactURL, "application/vnd.tuscany.ext"));
+ contentTypeDescriber.getType(artifactURL, "application/vnd.tuscany.ext"));
}
protected void setUp() throws Exception {
super.setUp();
- contentTypeDescriber = new ContentTypeDescriberImpl();
+ contentTypeDescriber = new ArtifactTypeDescriberImpl();
}
}
Modified: incubator/tuscany/java/sca/modules/contribution-impl/src/test/java/org/apache/tuscany/services/contribution/ContributionServiceImplTestCase.java
URL: http://svn.apache.org/viewvc/incubator/tuscany/java/sca/modules/contribution-impl/src/test/java/org/apache/tuscany/services/contribution/ContributionServiceImplTestCase.java?view=diff&rev=526081&r1=526080&r2=526081
==============================================================================
--- incubator/tuscany/java/sca/modules/contribution-impl/src/test/java/org/apache/tuscany/services/contribution/ContributionServiceImplTestCase.java (original)
+++ incubator/tuscany/java/sca/modules/contribution-impl/src/test/java/org/apache/tuscany/services/contribution/ContributionServiceImplTestCase.java Fri Apr 6 00:18:53 2007
@@ -19,49 +19,54 @@
package org.apache.tuscany.services.contribution;
+import java.net.URI;
+import java.net.URL;
+
import junit.framework.TestCase;
-import org.apache.tuscany.services.spi.contribution.ContentTypeDescriber;
+import org.apache.tuscany.services.contribution.processor.FolderContributionProcessor;
+import org.apache.tuscany.services.contribution.processor.JarContributionProcessor;
+import org.apache.tuscany.services.spi.contribution.ArtifactProcessorRegistry;
import org.apache.tuscany.services.spi.contribution.ContributionPackageProcessorRegistry;
-import org.apache.tuscany.services.spi.contribution.ContributionRepository;
import org.apache.tuscany.services.spi.contribution.ContributionService;
+import org.apache.tuscany.services.spi.contribution.DefaultURLArtifactProcessorRegistry;
+import org.apache.tuscany.services.spi.contribution.TypeDescriber;
/**
* This is more intended to be a integration test then a unit test. *
*/
public class ContributionServiceImplTestCase extends TestCase {
- private static final String JAR_CONTRIBUTION = "/repository/sample-calculator.jar";
- private ContributionRepository repository;
- private ContentTypeDescriber contentTypeDescriber;
- private ContributionPackageProcessorRegistry registry;
+ private static final String CONTRIBUTION_URI = "sca://contributions/002/";
+ private static final String CONTRIBUTION = "/repository/sample-calculator.jar";
+
+ private TypeDescriber contentTypeDescriber;
+ private ContributionPackageProcessorRegistry packageProcessorRegistry;
+ private ArtifactProcessorRegistry artifactProcessorRegistry;
private ContributionService contributionService;
protected void setUp() throws Exception {
super.setUp();
-// this.repository = new ContributionRepositoryImpl("target/repository");
-//
-// this.contentTypeDescriber = new ContentTypeDescriberImpl();
-//
-// this.registry = new ContributionProcessorRegistryImpl(contentTypeDescriber);
-//
-// JarContributionProcessor jarProcessor = new JarContributionProcessor();
-// jarProcessor.setContributionProcessorRegistry(this.registry);
-// this.registry.register(JarContributionProcessor.CONTENT_TYPE, jarProcessor);
-//
-// JavaContributionProcessor javaProcessor = new JavaContributionProcessor(null);
-// javaProcessor.setContributionProcessorRegistry(this.registry);
-// this.registry.register(JavaContributionProcessor.CONTENT_TYPE, javaProcessor);
-//
-//
-// contributionService = new ContributionServiceImpl(repository, registry);
+ //boostrap contribution service
+ this.contentTypeDescriber = new ArtifactTypeDescriberImpl();
+
+
+ this.packageProcessorRegistry = new ContributionPackageProcessorRegistryImpl(contentTypeDescriber);
+ new JarContributionProcessor(this.packageProcessorRegistry);
+ new FolderContributionProcessor(this.packageProcessorRegistry);
+
+ this.artifactProcessorRegistry = new DefaultURLArtifactProcessorRegistry();
+ //new CompositeDocumentProcessor(this.artifactProcessorRegistry);
+
+ this.contributionService = new ContributionServiceImpl(null, this.packageProcessorRegistry, null, null);
}
public void testContributeURL() throws Exception {
-// URL contribution = getClass().getResource(JAR_CONTRIBUTION);
-//
-// URI contributionURI = contributionService.contribute(contribution);
-// assertNotNull(contributionURI);
+ URI contributionURI = URI.create(CONTRIBUTION_URI);
+ URL contributionURL = getClass().getResource(CONTRIBUTION);
+
+ this.contributionService.contribute(contributionURI, contributionURL, false);
+ assertNotNull(contributionURI);
}
}
Modified: incubator/tuscany/java/sca/modules/contribution-impl/src/test/java/org/apache/tuscany/services/contribution/PackageTypeDescriberImplTestCase.java
URL: http://svn.apache.org/viewvc/incubator/tuscany/java/sca/modules/contribution-impl/src/test/java/org/apache/tuscany/services/contribution/PackageTypeDescriberImplTestCase.java?view=diff&rev=526081&r1=526080&r2=526081
==============================================================================
--- incubator/tuscany/java/sca/modules/contribution-impl/src/test/java/org/apache/tuscany/services/contribution/PackageTypeDescriberImplTestCase.java (original)
+++ incubator/tuscany/java/sca/modules/contribution-impl/src/test/java/org/apache/tuscany/services/contribution/PackageTypeDescriberImplTestCase.java Fri Apr 6 00:18:53 2007
@@ -29,18 +29,18 @@
public void testResolvePackageType() throws Exception {
URL artifactURL = getClass().getResource("/deployables/sample-calculator.jar");
- assertEquals(ContentType.JAR, this.packageTypeDescriber.getContentType(artifactURL, null));
+ assertEquals(ContentType.JAR, this.packageTypeDescriber.getType(artifactURL, null));
}
public void testResolveUnknownPackageType() throws Exception {
URL artifactURL = getClass().getResource("test.ext");
- assertNull(this.packageTypeDescriber.getContentType(artifactURL, null));
+ assertNull(this.packageTypeDescriber.getType(artifactURL, null));
}
public void testDefaultPackageType() throws Exception {
URL artifactURL = getClass().getResource("test.ext");
assertEquals("application/vnd.tuscany.ext",
- packageTypeDescriber.getContentType(artifactURL, "application/vnd.tuscany.ext"));
+ packageTypeDescriber.getType(artifactURL, "application/vnd.tuscany.ext"));
}
protected void setUp() throws Exception {
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=526081&r1=526080&r2=526081
==============================================================================
--- 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 00:18:53 2007
@@ -19,40 +19,30 @@
package org.apache.tuscany.services.contribution.processor;
import java.io.File;
-import java.io.InputStream;
-import java.net.URI;
+import java.net.URL;
+import java.util.List;
import junit.framework.TestCase;
-import org.apache.tuscany.services.contribution.model.Contribution;
+import org.apache.tuscany.services.contribution.ContributionPackageProcessorRegistryImpl;
+import org.apache.tuscany.services.contribution.PackageTypeDescriberImpl;
import org.apache.tuscany.services.spi.contribution.ContributionPackageProcessorRegistry;
-import org.easymock.EasyMock;
public class FolderContributionPackageProcessorTestCase extends TestCase {
- private static final String CONTRIBUTION_URI = "sca://contributions/002/";
- private static final String DIRECTORY_CONTRIBUTION = "../../../../core-samples/common/calculator";
+ private static final String FOLDER_CONTRIBUTION = "../../../../core-samples/common/calculator";
private File contributionRoot;
- private FolderContributionProcessor folderProcessor = new FolderContributionProcessor();
-
protected void setUp() throws Exception {
super.setUp();
- this.contributionRoot = new File(DIRECTORY_CONTRIBUTION);
+ this.contributionRoot = new File(FOLDER_CONTRIBUTION);
}
- public final void testProcessJarArtifacts() throws Exception {
- ContributionPackageProcessorRegistry mockRegistry = EasyMock.createMock(ContributionPackageProcessorRegistry.class);
- mockRegistry.register(FolderContributionProcessor.PACKAGE_TYPE, folderProcessor);
- mockRegistry.processContent((Contribution)EasyMock.anyObject(), (URI) EasyMock.anyObject(), (InputStream) EasyMock.anyObject() );
- EasyMock.expectLastCall().anyTimes();
- EasyMock.replay(mockRegistry);
- folderProcessor.setContributionProcessorRegistry(mockRegistry);
- folderProcessor.start();
- EasyMock.verify(mockRegistry);
-
- Contribution contribution = new Contribution(URI.create(CONTRIBUTION_URI));
- contribution.setLocation(this.contributionRoot.toURL());
- folderProcessor.processContent(contribution, contribution.getUri(), null);
+ public final void testProcessPackageArtifacts() throws Exception {
+ ContributionPackageProcessorRegistry packageProcessorRegistry = new ContributionPackageProcessorRegistryImpl(new PackageTypeDescriberImpl());
+ FolderContributionProcessor folderProcessor = new FolderContributionProcessor(packageProcessorRegistry);
+
+ List<URL> 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=526081&r1=526080&r2=526081
==============================================================================
--- 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 00:18:53 2007
@@ -19,58 +19,37 @@
package org.apache.tuscany.services.contribution.processor;
import java.io.InputStream;
-import java.net.URI;
import java.net.URL;
+import java.util.List;
import junit.framework.TestCase;
-import org.apache.tuscany.services.contribution.model.Contribution;
-import org.apache.tuscany.services.contribution.model.DeployedArtifact;
+import org.apache.tuscany.services.contribution.ContributionPackageProcessorRegistryImpl;
+import org.apache.tuscany.services.contribution.PackageTypeDescriberImpl;
import org.apache.tuscany.services.contribution.util.IOHelper;
import org.apache.tuscany.services.spi.contribution.ContributionPackageProcessorRegistry;
-import org.easymock.EasyMock;
public class JarContributionPackageProcessorTestCase extends TestCase {
- private static final String CONTRIBUTION_URI = "sca://contributions/001/";
private static final String JAR_CONTRIBUTION = "/repository/sample-calculator.jar";
- private JarContributionProcessor jarProcessor;
-
protected void setUp() throws Exception {
super.setUp();
-
- this.jarProcessor = new JarContributionProcessor();
}
- public final void testProcessJarArtifacts() throws Exception {
- ContributionPackageProcessorRegistry mockRegistry = EasyMock.createMock(ContributionPackageProcessorRegistry.class);
- mockRegistry.register(JarContributionProcessor.PACKAGE_TYPE, jarProcessor);
- mockRegistry.processContent((Contribution)EasyMock.anyObject(), (URI) EasyMock.anyObject(), (InputStream) EasyMock.anyObject() );
- EasyMock.expectLastCall().anyTimes();
- EasyMock.replay(mockRegistry);
- jarProcessor.setContributionProcessorRegistry(mockRegistry);
- jarProcessor.start();
- EasyMock.verify(mockRegistry);
-
+ public final void testProcessPackageArtifacts() throws Exception {
+ ContributionPackageProcessorRegistry packageProcessorRegistry = new ContributionPackageProcessorRegistryImpl(new PackageTypeDescriberImpl());
+ JarContributionProcessor jarProcessor = new JarContributionProcessor(packageProcessorRegistry);
- //start processing the jar
URL jarURL = getClass().getResource(JAR_CONTRIBUTION);
- URI contributionURI = URI.create(CONTRIBUTION_URI);
- URI artifactURI = contributionURI.resolve(JAR_CONTRIBUTION);
-
- Contribution contribution = new Contribution(contributionURI);
- contribution.setLocation(jarURL);
-
- DeployedArtifact artifact = new DeployedArtifact(artifactURI);
- artifact.setLocation(jarURL);
- contribution.addArtifact(artifact);
-
InputStream jarStream = jarURL.openStream();
-
+ List<URL> artifacts = null;
try{
- jarProcessor.processContent(contribution, contributionURI.resolve(JAR_CONTRIBUTION), jarStream);
+ artifacts = jarProcessor.getArtifacts(jarURL, jarStream);
}finally{
IOHelper.closeQuietly(jarStream);
}
+
+ assertNotNull(artifacts);
+ }
+
}
-}
---------------------------------------------------------------------
To unsubscribe, e-mail: tuscany-commits-unsubscribe@ws.apache.org
For additional commands, e-mail: tuscany-commits-help@ws.apache.org