From 6fadbc9cd1fcf03d0b3630f772d91df149b70428 Mon Sep 17 00:00:00 2001 From: lresende Date: Wed, 11 Nov 2009 23:07:19 +0000 Subject: Moving 1.x branches git-svn-id: http://svn.us.apache.org/repos/asf/tuscany@835123 13f79535-47bb-0310-9956-ffa450edef68 --- .../sca/contribution/impl/ArtifactImpl.java | 71 --- .../contribution/impl/ContributionFactoryImpl.java | 41 -- .../sca/contribution/impl/ContributionImpl.java | 74 --- .../contribution/impl/DeployedArtifactImpl.java | 43 -- .../impl/FolderContributionProcessor.java | 122 ---- .../impl/InvalidFolderContributionException.java | 38 -- .../InvalidFolderContributionURIException.java | 38 -- .../processor/impl/JarContributionProcessor.java | 127 ---- .../resolver/impl/ModelResolverImpl.java | 92 --- .../service/impl/ArtifactTypeDescriberImpl.java | 106 ---- .../ContributionMetadataDocumentProcessor.java | 108 ---- .../impl/ContributionMetadataProcessor.java | 163 ----- .../service/impl/ContributionRepositoryImpl.java | 297 --------- .../service/impl/ContributionServiceImpl.java | 430 ------------- .../impl/InvalidContributionMetadataException.java | 54 -- .../impl/InvalidContributionURIException.java | 54 -- .../service/impl/PackageTypeDescriberImpl.java | 98 --- .../sca/contribution/service/util/FileHelper.java | 704 --------------------- .../sca/contribution/service/util/IOHelper.java | 191 ------ ...he.tuscany.sca.contribution.ContributionFactory | 18 - ...any.sca.contribution.processor.PackageProcessor | 19 - 21 files changed, 2888 deletions(-) delete mode 100644 branches/sca-java-1.0.1/modules/contribution-impl/src/main/java/org/apache/tuscany/sca/contribution/impl/ArtifactImpl.java delete mode 100644 branches/sca-java-1.0.1/modules/contribution-impl/src/main/java/org/apache/tuscany/sca/contribution/impl/ContributionFactoryImpl.java delete mode 100644 branches/sca-java-1.0.1/modules/contribution-impl/src/main/java/org/apache/tuscany/sca/contribution/impl/ContributionImpl.java delete mode 100644 branches/sca-java-1.0.1/modules/contribution-impl/src/main/java/org/apache/tuscany/sca/contribution/impl/DeployedArtifactImpl.java delete mode 100644 branches/sca-java-1.0.1/modules/contribution-impl/src/main/java/org/apache/tuscany/sca/contribution/processor/impl/FolderContributionProcessor.java delete mode 100644 branches/sca-java-1.0.1/modules/contribution-impl/src/main/java/org/apache/tuscany/sca/contribution/processor/impl/InvalidFolderContributionException.java delete mode 100644 branches/sca-java-1.0.1/modules/contribution-impl/src/main/java/org/apache/tuscany/sca/contribution/processor/impl/InvalidFolderContributionURIException.java delete mode 100644 branches/sca-java-1.0.1/modules/contribution-impl/src/main/java/org/apache/tuscany/sca/contribution/processor/impl/JarContributionProcessor.java delete mode 100644 branches/sca-java-1.0.1/modules/contribution-impl/src/main/java/org/apache/tuscany/sca/contribution/resolver/impl/ModelResolverImpl.java delete mode 100644 branches/sca-java-1.0.1/modules/contribution-impl/src/main/java/org/apache/tuscany/sca/contribution/service/impl/ArtifactTypeDescriberImpl.java delete mode 100644 branches/sca-java-1.0.1/modules/contribution-impl/src/main/java/org/apache/tuscany/sca/contribution/service/impl/ContributionMetadataDocumentProcessor.java delete mode 100644 branches/sca-java-1.0.1/modules/contribution-impl/src/main/java/org/apache/tuscany/sca/contribution/service/impl/ContributionMetadataProcessor.java delete mode 100644 branches/sca-java-1.0.1/modules/contribution-impl/src/main/java/org/apache/tuscany/sca/contribution/service/impl/ContributionRepositoryImpl.java delete mode 100644 branches/sca-java-1.0.1/modules/contribution-impl/src/main/java/org/apache/tuscany/sca/contribution/service/impl/ContributionServiceImpl.java delete mode 100644 branches/sca-java-1.0.1/modules/contribution-impl/src/main/java/org/apache/tuscany/sca/contribution/service/impl/InvalidContributionMetadataException.java delete mode 100644 branches/sca-java-1.0.1/modules/contribution-impl/src/main/java/org/apache/tuscany/sca/contribution/service/impl/InvalidContributionURIException.java delete mode 100644 branches/sca-java-1.0.1/modules/contribution-impl/src/main/java/org/apache/tuscany/sca/contribution/service/impl/PackageTypeDescriberImpl.java delete mode 100644 branches/sca-java-1.0.1/modules/contribution-impl/src/main/java/org/apache/tuscany/sca/contribution/service/util/FileHelper.java delete mode 100644 branches/sca-java-1.0.1/modules/contribution-impl/src/main/java/org/apache/tuscany/sca/contribution/service/util/IOHelper.java delete mode 100644 branches/sca-java-1.0.1/modules/contribution-impl/src/main/resources/META-INF/services/org.apache.tuscany.sca.contribution.ContributionFactory delete mode 100644 branches/sca-java-1.0.1/modules/contribution-impl/src/main/resources/META-INF/services/org.apache.tuscany.sca.contribution.processor.PackageProcessor (limited to 'branches/sca-java-1.0.1/modules/contribution-impl/src/main') diff --git a/branches/sca-java-1.0.1/modules/contribution-impl/src/main/java/org/apache/tuscany/sca/contribution/impl/ArtifactImpl.java b/branches/sca-java-1.0.1/modules/contribution-impl/src/main/java/org/apache/tuscany/sca/contribution/impl/ArtifactImpl.java deleted file mode 100644 index f7600e5a83..0000000000 --- a/branches/sca-java-1.0.1/modules/contribution-impl/src/main/java/org/apache/tuscany/sca/contribution/impl/ArtifactImpl.java +++ /dev/null @@ -1,71 +0,0 @@ -/* - * 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.impl; - -import org.apache.tuscany.sca.contribution.Artifact; - - -/** - * Base Artifact interface to accomodate common properties between Contribution and Deployed Artifact - * - * @version $Rev$ $Date$ - */ -public abstract class ArtifactImpl implements Artifact { - private String uri; - private String location; - - protected ArtifactImpl() { - } - - public String getLocation() { - return this.location; - } - - public void setLocation(String location) { - this.location = location; - } - - public String getURI() { - return this.uri; - } - - public void setURI(String uri) { - this.uri = uri; - } - - @Override - public int hashCode() { - return uri.hashCode(); - } - - @Override - public boolean equals(Object obj) { - if (obj == this) { - return true; - } else { - if (obj instanceof Artifact) { - return uri.equals(((Artifact)obj).getURI()); - } else { - return false; - } - } - } - -} diff --git a/branches/sca-java-1.0.1/modules/contribution-impl/src/main/java/org/apache/tuscany/sca/contribution/impl/ContributionFactoryImpl.java b/branches/sca-java-1.0.1/modules/contribution-impl/src/main/java/org/apache/tuscany/sca/contribution/impl/ContributionFactoryImpl.java deleted file mode 100644 index 1ef7a98f9e..0000000000 --- a/branches/sca-java-1.0.1/modules/contribution-impl/src/main/java/org/apache/tuscany/sca/contribution/impl/ContributionFactoryImpl.java +++ /dev/null @@ -1,41 +0,0 @@ -/* - * 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.impl; - -import org.apache.tuscany.sca.contribution.Contribution; -import org.apache.tuscany.sca.contribution.ContributionFactory; -import org.apache.tuscany.sca.contribution.DeployedArtifact; - - -/** - * Contribution model object factory - * - * @version $Rev$ $Date$ - */ -public class ContributionFactoryImpl implements ContributionFactory { - - public Contribution createContribution() { - return new ContributionImpl(); - } - - public DeployedArtifact createDeployedArtifact() { - return new DeployedArtifactImpl(); - } -} diff --git a/branches/sca-java-1.0.1/modules/contribution-impl/src/main/java/org/apache/tuscany/sca/contribution/impl/ContributionImpl.java b/branches/sca-java-1.0.1/modules/contribution-impl/src/main/java/org/apache/tuscany/sca/contribution/impl/ContributionImpl.java deleted file mode 100644 index e4160ba73b..0000000000 --- a/branches/sca-java-1.0.1/modules/contribution-impl/src/main/java/org/apache/tuscany/sca/contribution/impl/ContributionImpl.java +++ /dev/null @@ -1,74 +0,0 @@ -/* - * 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.impl; - -import java.util.ArrayList; -import java.util.List; - -import org.apache.tuscany.sca.assembly.Composite; -import org.apache.tuscany.sca.contribution.Contribution; -import org.apache.tuscany.sca.contribution.DeployedArtifact; -import org.apache.tuscany.sca.contribution.Export; -import org.apache.tuscany.sca.contribution.Import; -import org.apache.tuscany.sca.contribution.resolver.ModelResolver; - -/** - * The representation of a deployed contribution - * - * @version $Rev$ $Date$ - */ -public class ContributionImpl extends ArtifactImpl implements Contribution { - private List exports = new ArrayList(); - private List imports = new ArrayList(); - private List deployables = new ArrayList(); - private ModelResolver modelResolver; - - /** - * A list of artifacts in the contribution - */ - private List artifacts = new ArrayList(); - - protected ContributionImpl() { - } - - public List getExports() { - return exports; - } - - public List getImports() { - return imports; - } - - public List getDeployables() { - return deployables; - } - - public List getArtifacts() { - return artifacts; - } - - public ModelResolver getModelResolver() { - return modelResolver; - } - - public void setModelResolver(ModelResolver modelResolver) { - this.modelResolver = modelResolver; - } -} diff --git a/branches/sca-java-1.0.1/modules/contribution-impl/src/main/java/org/apache/tuscany/sca/contribution/impl/DeployedArtifactImpl.java b/branches/sca-java-1.0.1/modules/contribution-impl/src/main/java/org/apache/tuscany/sca/contribution/impl/DeployedArtifactImpl.java deleted file mode 100644 index f3a688140c..0000000000 --- a/branches/sca-java-1.0.1/modules/contribution-impl/src/main/java/org/apache/tuscany/sca/contribution/impl/DeployedArtifactImpl.java +++ /dev/null @@ -1,43 +0,0 @@ -/* - * 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.impl; - -import org.apache.tuscany.sca.contribution.DeployedArtifact; - -/** - * Representation of a deployed artifact - * - * @version $Rev$ $Date$ - */ -public class DeployedArtifactImpl extends ArtifactImpl implements DeployedArtifact { - private Object modelObject; - - protected DeployedArtifactImpl() { - super(); - } - - public Object getModel() { - return modelObject; - } - - public void setModel(Object modelObject) { - this.modelObject = modelObject; - } -} diff --git a/branches/sca-java-1.0.1/modules/contribution-impl/src/main/java/org/apache/tuscany/sca/contribution/processor/impl/FolderContributionProcessor.java b/branches/sca-java-1.0.1/modules/contribution-impl/src/main/java/org/apache/tuscany/sca/contribution/processor/impl/FolderContributionProcessor.java deleted file mode 100644 index 8d2d91c375..0000000000 --- a/branches/sca-java-1.0.1/modules/contribution-impl/src/main/java/org/apache/tuscany/sca/contribution/processor/impl/FolderContributionProcessor.java +++ /dev/null @@ -1,122 +0,0 @@ -/* - * 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.processor.impl; - -import java.io.File; -import java.io.IOException; -import java.io.InputStream; -import java.net.MalformedURLException; -import java.net.URI; -import java.net.URISyntaxException; -import java.net.URL; -import java.util.ArrayList; -import java.util.List; - -import org.apache.tuscany.sca.contribution.ContentType; -import org.apache.tuscany.sca.contribution.processor.PackageProcessor; -import org.apache.tuscany.sca.contribution.service.ContributionException; -import org.apache.tuscany.sca.contribution.service.util.FileHelper; - -/** - * Folder contribution package processor - * - * @version $Rev$ $Date$ - */ -public class FolderContributionProcessor implements PackageProcessor { - /** - * Package-type that this package processor can handle - */ - public static final String PACKAGE_TYPE = ContentType.FOLDER; - - public FolderContributionProcessor() { - } - - public String getPackageType() { - return PACKAGE_TYPE; - } - - /** - * Recursively traverse a root directory - * - * @param fileList - * @param file - * @throws IOException - */ - private void traverse(List 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 - - String uri = root.toURI().relativize(file.toURI()).toString(); - if (uri.endsWith("/")) { - uri = uri.substring(0, uri.length() - 1); - } - fileList.add(URI.create(uri)); - - //FIXME Do we really need to use a regexp here to filter out - // file names that start one or two dots? - File[] files = file.listFiles(FileHelper.getFileFilter("[^\u002e].*", true)); - for (int i = 0; i < files.length; i++) { - traverse(fileList, files[i], root); - } - } - } - - public URL getArtifactURL(URL sourceURL, URI artifact) throws MalformedURLException { - return new URL(sourceURL, artifact.toString()); - } - - /** - * Get a list of artifact URI from the folder - * - * @return The list of artifact URI for the folder - * @throws IOException - */ - public List getArtifacts(URL packageSourceURL, InputStream inputStream) throws ContributionException, - IOException { - if (packageSourceURL == null) { - throw new IllegalArgumentException("Invalid null package source URL."); - } - - List artifacts = new ArrayList(); - - // Assume the root is a jar file - File rootFolder; - - try { - rootFolder = new File(packageSourceURL.toURI()); - if (rootFolder.isDirectory()) { - if (!rootFolder.exists()) { - throw new InvalidFolderContributionException(rootFolder.getAbsolutePath()); - } - - this.traverse(artifacts, rootFolder, rootFolder); - } - - } catch (URISyntaxException e) { - throw new InvalidFolderContributionURIException(packageSourceURL.toExternalForm(), e); - } - - return artifacts; - } -} diff --git a/branches/sca-java-1.0.1/modules/contribution-impl/src/main/java/org/apache/tuscany/sca/contribution/processor/impl/InvalidFolderContributionException.java b/branches/sca-java-1.0.1/modules/contribution-impl/src/main/java/org/apache/tuscany/sca/contribution/processor/impl/InvalidFolderContributionException.java deleted file mode 100644 index 268ba401c1..0000000000 --- a/branches/sca-java-1.0.1/modules/contribution-impl/src/main/java/org/apache/tuscany/sca/contribution/processor/impl/InvalidFolderContributionException.java +++ /dev/null @@ -1,38 +0,0 @@ -/* - * 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.processor.impl; - -import org.apache.tuscany.sca.contribution.service.ContributionException; - -/** - * Exception that indicates that the supplied XML Document invalid. - * - */ -public class InvalidFolderContributionException extends ContributionException { - - private static final long serialVersionUID = 1564255850052593282L; - - protected InvalidFolderContributionException(String componentDefinitionLocatoin) { - super(componentDefinitionLocatoin); - } - - protected InvalidFolderContributionException(String message, Throwable cause) { - super(message, cause); - } -} diff --git a/branches/sca-java-1.0.1/modules/contribution-impl/src/main/java/org/apache/tuscany/sca/contribution/processor/impl/InvalidFolderContributionURIException.java b/branches/sca-java-1.0.1/modules/contribution-impl/src/main/java/org/apache/tuscany/sca/contribution/processor/impl/InvalidFolderContributionURIException.java deleted file mode 100644 index e018f90b06..0000000000 --- a/branches/sca-java-1.0.1/modules/contribution-impl/src/main/java/org/apache/tuscany/sca/contribution/processor/impl/InvalidFolderContributionURIException.java +++ /dev/null @@ -1,38 +0,0 @@ -/* - * 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.processor.impl; - -import org.apache.tuscany.sca.contribution.service.ContributionException; - -/** - * Exception that indicates that the supplied XML Document invalid. - * - */ -public class InvalidFolderContributionURIException extends ContributionException { - - private static final long serialVersionUID = 1564255850052593282L; - - protected InvalidFolderContributionURIException(String componentDefinitionLocatoin) { - super(componentDefinitionLocatoin); - } - - protected InvalidFolderContributionURIException(String message, Throwable cause) { - super(message, cause); - } -} diff --git a/branches/sca-java-1.0.1/modules/contribution-impl/src/main/java/org/apache/tuscany/sca/contribution/processor/impl/JarContributionProcessor.java b/branches/sca-java-1.0.1/modules/contribution-impl/src/main/java/org/apache/tuscany/sca/contribution/processor/impl/JarContributionProcessor.java deleted file mode 100644 index 9015dc5f7f..0000000000 --- a/branches/sca-java-1.0.1/modules/contribution-impl/src/main/java/org/apache/tuscany/sca/contribution/processor/impl/JarContributionProcessor.java +++ /dev/null @@ -1,127 +0,0 @@ -/* - * 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.processor.impl; - -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.HashSet; -import java.util.List; -import java.util.Set; -import java.util.jar.JarEntry; -import java.util.jar.JarInputStream; - -import org.apache.tuscany.sca.contribution.ContentType; -import org.apache.tuscany.sca.contribution.processor.PackageProcessor; -import org.apache.tuscany.sca.contribution.service.ContributionException; - -/** - * Jar Contribution package processor - * - * @version $Rev$ $Date$ - */ -public class JarContributionProcessor implements PackageProcessor { - /** - * Package-type that this package processor can handle - */ - public static final String PACKAGE_TYPE = ContentType.JAR; - - public JarContributionProcessor() { - } - - public String getPackageType() { - return PACKAGE_TYPE; - } - - public URL getArtifactURL(URL sourceURL, URI artifact) throws MalformedURLException { - if (sourceURL.toString().startsWith("jar:")) { - return new URL(sourceURL, artifact.toString()); - } else { - return new URL("jar:" + sourceURL.toExternalForm() + "!/" + artifact); - } - } - - public List 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."); - } - - // Assume the root is a jar file - JarInputStream jar = new JarInputStream(inputStream); - try { - Set names = new HashSet(); - while (true) { - JarEntry entry = jar.getNextJarEntry(); - if (entry == null) { - // EOF - break; - } - - // FIXME: Maybe we should externalize the filter as a property - String name = entry.getName(); - if (!name.startsWith(".")) { - - // Trim trailing / - if (name.endsWith("/")) { - name = name.substring(0, name.length() - 1); - } - - // Add the entry name - if (!names.contains(name)) { - names.add(name); - - // Add parent folder names to the list too - for (;;) { - int s = name.lastIndexOf('/'); - if (s == -1) { - name = ""; - } else { - name = name.substring(0, s); - } - if (!names.contains(name)) { - names.add(name); - } else { - break; - } - } - } - } - } - - // Return list of URIs - List artifacts = new ArrayList(); - for (String name: names) { - artifacts.add(URI.create(name)); - } - return artifacts; - - } finally { - jar.close(); - } - } -} diff --git a/branches/sca-java-1.0.1/modules/contribution-impl/src/main/java/org/apache/tuscany/sca/contribution/resolver/impl/ModelResolverImpl.java b/branches/sca-java-1.0.1/modules/contribution-impl/src/main/java/org/apache/tuscany/sca/contribution/resolver/impl/ModelResolverImpl.java deleted file mode 100644 index 6c2257803a..0000000000 --- a/branches/sca-java-1.0.1/modules/contribution-impl/src/main/java/org/apache/tuscany/sca/contribution/resolver/impl/ModelResolverImpl.java +++ /dev/null @@ -1,92 +0,0 @@ -/* - * 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.resolver.impl; - -import java.lang.ref.WeakReference; -import java.util.Collection; -import java.util.HashMap; -import java.util.Map; - -import org.apache.tuscany.sca.contribution.resolver.ClassReference; -import org.apache.tuscany.sca.contribution.resolver.ModelResolver; - -/** - * A default implementation of an artifact resolver, based on a map. - * - * @version $Rev$ $Date$ - */ -public class ModelResolverImpl implements ModelResolver { - private static final long serialVersionUID = -7826976465762296634L; - - private Map map = new HashMap(); - - private WeakReference classLoader; - - public ModelResolverImpl(ClassLoader classLoader) { - this.classLoader = new WeakReference(classLoader); - } - - public T resolveModel(Class modelClass, T unresolved) { - Object resolved = map.get(unresolved); - if (resolved != null) { - - // Return the resolved object - return modelClass.cast(resolved); - - } else if (unresolved instanceof ClassReference) { - - // Load a class on demand - ClassReference classReference = (ClassReference)unresolved; - Class clazz; - try { - clazz = Class.forName(classReference.getClassName(), true, classLoader.get()); - } catch (ClassNotFoundException e) { - - // Return the unresolved object - return unresolved; - } - - // Store a new ClassReference wrappering the loaded class - resolved = new ClassReference(clazz); - map.put(resolved, resolved); - - // Return the resolved ClassReference - return modelClass.cast(resolved); - - } else { - - // Return the unresolved object - return unresolved; - } - } - - public void addModel(Object resolved) { - map.put(resolved, resolved); - } - - public Object removeModel(Object resolved) { - return map.remove(resolved); - } - - public Collection getModels() { - return map.values(); - } - -} diff --git a/branches/sca-java-1.0.1/modules/contribution-impl/src/main/java/org/apache/tuscany/sca/contribution/service/impl/ArtifactTypeDescriberImpl.java b/branches/sca-java-1.0.1/modules/contribution-impl/src/main/java/org/apache/tuscany/sca/contribution/service/impl/ArtifactTypeDescriberImpl.java deleted file mode 100644 index 76318c6021..0000000000 --- a/branches/sca-java-1.0.1/modules/contribution-impl/src/main/java/org/apache/tuscany/sca/contribution/service/impl/ArtifactTypeDescriberImpl.java +++ /dev/null @@ -1,106 +0,0 @@ -/* - * 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.impl; - -import java.io.IOException; -import java.net.URL; -import java.net.URLConnection; -import java.util.HashMap; -import java.util.Map; - -import org.apache.tuscany.sca.contribution.ContentType; -import org.apache.tuscany.sca.contribution.Contribution; -import org.apache.tuscany.sca.contribution.service.TypeDescriber; -import org.apache.tuscany.sca.contribution.service.util.FileHelper; - -/** - * Implementation of the content describer for files - * - * @version $Rev$ $Date$ - */ -public class ArtifactTypeDescriberImpl implements TypeDescriber { - private final Map contentTypeRegistry = new HashMap(); - - public ArtifactTypeDescriberImpl() { - super(); - init(); - } - - /** - * Initialize contentType registry with know types based on known file extensions - */ - private void init() { - contentTypeRegistry.put("COMPOSITE", ContentType.COMPOSITE); - contentTypeRegistry.put("SCDL", ContentType.COMPOSITE); - contentTypeRegistry.put("WSDL", ContentType.WSDL); - contentTypeRegistry.put("JAR", ContentType.JAR); - } - - protected String resolveContentyTypeByExtension(URL resourceURL) { - String artifactExtension = FileHelper.getExtension(resourceURL.getPath()); - if (artifactExtension == null) { - return null; - } - return contentTypeRegistry.get(artifactExtension.toUpperCase()); - } - - /** - * Build contentType for a specific resource. We first check if the file is - * a supported one (looking into our registry based on resource extension) - * If not found, we try to check file contentType Or we return - * defaultContentType provided - * - * @param resourceURL The artifact url - * @param defaultContentType The default content type if we can't find the correc one - * @return The content type - */ - public String getType(URL resourceURL, String defaultContentType) { - URLConnection connection = null; - String contentType = defaultContentType; - - if (resourceURL.getProtocol().equals("file") && FileHelper.toFile(resourceURL).isDirectory()) { - // Special case : contribution is a folder - contentType = ContentType.FOLDER; - } else if (resourceURL.toExternalForm().endsWith(Contribution.SCA_CONTRIBUTION_META) - || resourceURL.toExternalForm().endsWith(Contribution.SCA_CONTRIBUTION_GENERATED_META)) { - // Special case : contribution metadata - contentType = ContentType.CONTRIBUTION_METADATA; - } else { - contentType = resolveContentyTypeByExtension(resourceURL); - if (contentType == null) { - try { - connection = resourceURL.openConnection(); - contentType = connection.getContentType(); - - if (contentType == null || contentType.equals("content/unknown")) { - // here we couldn't figure out from our registry or from URL and it's not a special file - // return defaultContentType if provided - contentType = defaultContentType; - } - } catch (IOException io) { - // could not access artifact, just ignore and we will return - // null contentType - } - } - } - return contentType == null ? defaultContentType : contentType; - } - -} diff --git a/branches/sca-java-1.0.1/modules/contribution-impl/src/main/java/org/apache/tuscany/sca/contribution/service/impl/ContributionMetadataDocumentProcessor.java b/branches/sca-java-1.0.1/modules/contribution-impl/src/main/java/org/apache/tuscany/sca/contribution/service/impl/ContributionMetadataDocumentProcessor.java deleted file mode 100644 index 8189914ffb..0000000000 --- a/branches/sca-java-1.0.1/modules/contribution-impl/src/main/java/org/apache/tuscany/sca/contribution/service/impl/ContributionMetadataDocumentProcessor.java +++ /dev/null @@ -1,108 +0,0 @@ -/* - * 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.impl; - -import java.io.IOException; -import java.io.InputStream; -import java.net.URL; -import java.net.URLClassLoader; -import java.util.ArrayList; -import java.util.Iterator; -import java.util.List; - -import javax.xml.stream.XMLInputFactory; -import javax.xml.stream.XMLStreamException; -import javax.xml.stream.XMLStreamReader; - -import org.apache.tuscany.sca.assembly.AssemblyFactory; -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.ContributionReadException; - -/** - * MetadataDocumentProcessor that handles contribution metadata files - * - * @version $Rev$ $Date$ - */ -public class ContributionMetadataDocumentProcessor { - protected final URLClassLoader classLoader; - protected final StAXArtifactProcessor staxProcessor; - protected final AssemblyFactory assemblyFactory; - protected final ContributionFactory contributionFactory; - protected final XMLInputFactory inputFactory; - - public ContributionMetadataDocumentProcessor(URLClassLoader classLoader, StAXArtifactProcessor staxProcessor, AssemblyFactory assemblyFactory, ContributionFactory contributionFactory, XMLInputFactory inputFactory) { - super(); - this.classLoader = classLoader; - this.staxProcessor = staxProcessor; - this.assemblyFactory = assemblyFactory; - this.contributionFactory = contributionFactory; - this.inputFactory = inputFactory; - } - - private Contribution mergeContributionMetadata(Contribution contrib1, Contribution contrib2 ) { - contrib1.getDeployables().addAll(contrib2.getDeployables()); - contrib1.getImports().addAll(contrib2.getImports()); - contrib1.getExports().addAll(contrib2.getExports()); - - return contrib1; - } - - public void read(Contribution contribution) throws XMLStreamException, ContributionReadException { - List artifactList = new ArrayList(2); - //set generated first, as the user created one ovverrides generated information - artifactList.add(this.classLoader.getResource(Contribution.SCA_CONTRIBUTION_GENERATED_META)); - artifactList.add(this.classLoader.getResource(Contribution.SCA_CONTRIBUTION_META)); - - URL artifactURL = null; - InputStream artifactStream = null; - Iterator artifactIterator = artifactList.iterator(); - while( artifactIterator.hasNext() ){ - - try { - artifactURL = (URL) artifactIterator.next(); - if( artifactURL != null) { - artifactStream = artifactURL.openStream(); - XMLStreamReader reader = inputFactory.createXMLStreamReader(artifactStream); - reader.nextTag(); - - Contribution contributionMetadata = (Contribution) staxProcessor.read(reader); - if (contributionMetadata != null) { - this.mergeContributionMetadata(contribution, contributionMetadata); - } - } - - } catch (XMLStreamException e) { - throw new ContributionReadException(e); - } catch (IOException e) { - throw new ContributionReadException(e); - } finally { - try { - if (artifactStream != null) { - artifactStream.close(); - artifactStream = null; - } - } catch (IOException ioe) { - //ignore - } - } - } - } -} diff --git a/branches/sca-java-1.0.1/modules/contribution-impl/src/main/java/org/apache/tuscany/sca/contribution/service/impl/ContributionMetadataProcessor.java b/branches/sca-java-1.0.1/modules/contribution-impl/src/main/java/org/apache/tuscany/sca/contribution/service/impl/ContributionMetadataProcessor.java deleted file mode 100644 index de38db1945..0000000000 --- a/branches/sca-java-1.0.1/modules/contribution-impl/src/main/java/org/apache/tuscany/sca/contribution/service/impl/ContributionMetadataProcessor.java +++ /dev/null @@ -1,163 +0,0 @@ -/* - * 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.impl; - -import static javax.xml.stream.XMLStreamConstants.START_ELEMENT; - -import javax.xml.namespace.QName; -import javax.xml.stream.XMLStreamConstants; -import javax.xml.stream.XMLStreamException; -import javax.xml.stream.XMLStreamReader; -import javax.xml.stream.XMLStreamWriter; - -import org.apache.tuscany.sca.assembly.AssemblyFactory; -import org.apache.tuscany.sca.assembly.Composite; -import org.apache.tuscany.sca.contribution.Contribution; -import org.apache.tuscany.sca.contribution.ContributionFactory; -import org.apache.tuscany.sca.contribution.Export; -import org.apache.tuscany.sca.contribution.Import; -import org.apache.tuscany.sca.contribution.processor.BaseStAXArtifactProcessor; -import org.apache.tuscany.sca.contribution.processor.StAXArtifactProcessor; -import org.apache.tuscany.sca.contribution.resolver.ModelResolver; -import org.apache.tuscany.sca.contribution.service.ContributionReadException; -import org.apache.tuscany.sca.contribution.service.ContributionResolveException; -import org.apache.tuscany.sca.contribution.service.ContributionWriteException; - -/** - * Processor responsible for loading particular elements from contribution metadata file - * - * @version $Rev$ $Date$ - */ -public class ContributionMetadataProcessor extends BaseStAXArtifactProcessor implements StAXArtifactProcessor { - - private static final String SCA10_NS = "http://www.osoa.org/xmlns/sca/1.0"; - - private static final QName CONTRIBUTION = new QName(SCA10_NS, "contribution"); - private static final QName DEPLOYABLE = new QName(SCA10_NS, "deployable"); - - private final AssemblyFactory assemblyFactory; - private final ContributionFactory contributionFactory; - - private final StAXArtifactProcessor extensionProcessor; - - public ContributionMetadataProcessor(AssemblyFactory assemblyFactory, ContributionFactory contributionFactory, StAXArtifactProcessor extensionProcessor) { - super(); - this.assemblyFactory = assemblyFactory; - this.contributionFactory = contributionFactory; - this.extensionProcessor = extensionProcessor; - } - - - public QName getArtifactType() { - return CONTRIBUTION; - } - - public Class getModelType() { - return Contribution.class; - } - - public Contribution read(XMLStreamReader reader) throws ContributionReadException, XMLStreamException { - Contribution contribution = null; - - QName element = null; - while (reader.hasNext()) { - int event = reader.getEventType(); - switch (event) { - case START_ELEMENT: - element = reader.getName(); - - if (CONTRIBUTION.equals(element)) { - - // Read - contribution = this.contributionFactory.createContribution(); - - } else if (DEPLOYABLE.equals(element)) { - - - // Read - QName compositeName = getQName(reader, "composite"); - if (compositeName == null) { - throw new ContributionReadException("Attribute 'composite' is missing"); - } - - if (contribution != null) { - Composite composite = assemblyFactory.createComposite(); - composite.setName(compositeName); - composite.setUnresolved(true); - contribution.getDeployables().add(composite); - - } - } else{ - - // Read an extension element - Object extension = extensionProcessor.read(reader); - if (extension != null && contribution != null) { - if (extension instanceof Import) { - contribution.getImports().add((Import)extension); - } else if (extension instanceof Export) { - contribution.getExports().add((Export)extension); - } - } - } - break; - - case XMLStreamConstants.END_ELEMENT: - if (CONTRIBUTION.equals(reader.getName())) { - return contribution; - } - break; - } - - //Read the next element - if (reader.hasNext()) { - reader.next(); - } - } - - return contribution; - } - - public void write(Contribution contribution, XMLStreamWriter writer) throws ContributionWriteException, XMLStreamException { - - // Write - writeStartDocument(writer, CONTRIBUTION.getNamespaceURI(), CONTRIBUTION.getLocalPart()); - - // Write imports - for (Import imp: contribution.getImports()) { - extensionProcessor.write(imp, writer); - } - - // Write exports - for (Export export: contribution.getExports()) { - extensionProcessor.write(export, writer); - } - - // Write elements - for (Composite deployable: contribution.getDeployables()) { - writeStart(writer, DEPLOYABLE.getNamespaceURI(), DEPLOYABLE.getLocalPart(), - new XAttr("composite", deployable.getName())); - writeEnd(writer); - } - - writeEndDocument(writer); - } - - public void resolve(Contribution model, ModelResolver resolver) throws ContributionResolveException { - } -} diff --git a/branches/sca-java-1.0.1/modules/contribution-impl/src/main/java/org/apache/tuscany/sca/contribution/service/impl/ContributionRepositoryImpl.java b/branches/sca-java-1.0.1/modules/contribution-impl/src/main/java/org/apache/tuscany/sca/contribution/service/impl/ContributionRepositoryImpl.java deleted file mode 100644 index d53693d875..0000000000 --- a/branches/sca-java-1.0.1/modules/contribution-impl/src/main/java/org/apache/tuscany/sca/contribution/service/impl/ContributionRepositoryImpl.java +++ /dev/null @@ -1,297 +0,0 @@ -/* - * 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.impl; - -import java.io.BufferedInputStream; -import java.io.BufferedOutputStream; -import java.io.File; -import java.io.FileInputStream; -import java.io.FileNotFoundException; -import java.io.FileOutputStream; -import java.io.IOException; -import java.io.InputStream; -import java.io.InputStreamReader; -import java.io.OutputStreamWriter; -import java.io.PrintWriter; -import java.net.MalformedURLException; -import java.net.URI; -import java.net.URL; -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; - -import javax.xml.stream.XMLInputFactory; -import javax.xml.stream.XMLStreamConstants; -import javax.xml.stream.XMLStreamReader; - -import org.apache.tuscany.sca.contribution.Contribution; -import org.apache.tuscany.sca.contribution.service.ContributionRepository; -import org.apache.tuscany.sca.contribution.service.util.FileHelper; -import org.apache.tuscany.sca.contribution.service.util.IOHelper; - -/** - * The default implementation of ContributionRepository - * - * @version $Rev$ $Date$ - */ -public class ContributionRepositoryImpl implements ContributionRepository { - 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 contributionLocations = new HashMap(); - - private Map contributionMap = new HashMap(); - private List contributions = new ArrayList(); - - private URI domain; - private XMLInputFactory factory; - - /** - * Constructor with repository root - * - * @param repository - * @param factory - */ - public ContributionRepositoryImpl(final String repository, XMLInputFactory factory) throws IOException { - String root = repository; - if (repository == null) { - root = AccessController.doPrivileged(new PrivilegedAction() { - public String run() { - // Default to /.tuscany/domains/local/ - String userHome = System.getProperty("user.home"); - String slash = File.separator; - 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); - } - this.factory = factory; - } - - public URI getDomain() { - return domain; - } - - /** - * Resolve contribution location in the repository -> root repository / - * contribution file -> contribution group id / artifact id / version - * - * @param contribution - * @return - */ - private File mapToFile(URL sourceURL) { - String fileName = FileHelper.toFile(sourceURL).getName(); - return new File(rootFile, "contributions" + File.separator + fileName); - } - - /** - * Write a specific source inputstream to a file on disk - * - * @param source contents of the file to be written to disk - * @param target file to be written - * @throws IOException - */ - public static void copy(InputStream source, File target) throws IOException { - BufferedOutputStream out = null; - BufferedInputStream in = null; - - try { - out = new BufferedOutputStream(new FileOutputStream(target)); - in = new BufferedInputStream(source); - IOHelper.copy(in, out); - } finally { - IOHelper.closeQuietly(out); - IOHelper.closeQuietly(in); - } - } - - public URL store(String contribution, URL sourceURL, InputStream contributionStream) throws IOException { - // where the file should be stored in the repository - File location = mapToFile(sourceURL); - FileHelper.forceMkdir(location.getParentFile()); - - copy(contributionStream, location); - - // add contribution to repositoryContent - URL contributionURL = location.toURL(); - URI relative = rootFile.toURI().relativize(location.toURI()); - contributionLocations.put(contribution, relative.toString()); - saveMap(); - - return contributionURL; - } - - public URL store(String contribution, URL sourceURL) throws IOException { - // where the file should be stored in the repository - File location = mapToFile(sourceURL); - File source = FileHelper.toFile(sourceURL); - if (source == null || source.isFile()) { - InputStream is = sourceURL.openStream(); - try { - return store(contribution, sourceURL, is); - } finally { - IOHelper.closeQuietly(is); - } - } - - FileHelper.forceMkdir(location); - FileHelper.copyDirectory(source, location); - - // add contribution to repositoryContent - URI relative = rootFile.toURI().relativize(location.toURI()); - contributionLocations.put(contribution, relative.toString()); - saveMap(); - - return location.toURL(); - } - - public URL find(String contribution) { - if (contribution == null) { - return null; - } - String location = contributionLocations.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(String contribution) { - URL contributionURL = this.find(contribution); - if (contributionURL != null) { - // remove - try { - FileHelper.forceDelete(FileHelper.toFile(contributionURL)); - this.contributionLocations.remove(contribution); - saveMap(); - } catch (IOException ioe) { - // handle file could not be removed - } - } - } - - public List list() { - return new ArrayList(contributionLocations.keySet()); - } - - public void init() { - File domainFile = new File(rootFile, "sca-domain.xml"); - if (!domainFile.isFile()) { - return; - } - FileInputStream is; - try { - is = new FileInputStream(domainFile); - } catch (FileNotFoundException e) { - return; - } - try { - XMLStreamReader reader = factory.createXMLStreamReader(new InputStreamReader(is, "UTF-8")); - while (reader.hasNext()) { - 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"); - contributionLocations.put(uri, location); - } - break; - default: - break; - } - reader.next(); - } - } catch (Exception e) { - // Ignore - } finally { - IOHelper.closeQuietly(is); - } - } - - private void saveMap() { - File domainFile = new File(rootFile, DOMAIN_INDEX_FILENAME); - FileOutputStream os = null; - try { - os = new FileOutputStream(domainFile); - PrintWriter writer = new PrintWriter(new OutputStreamWriter(os, "UTF-8")); - writer.println(""); - writer.println(""); - for (Map.Entry e : contributionLocations.entrySet()) { - writer.println(" "); - } - writer.println(""); - writer.flush(); - } catch (IOException e) { - throw new IllegalArgumentException(e); - } finally { - IOHelper.closeQuietly(os); - } - } - - public void destroy() { - } - - public void addContribution(Contribution contribution) { - contributionMap.put(contribution.getURI(), contribution); - contributions.add(contribution); - } - - public void removeContribution(Contribution contribution) { - contributionMap.remove(contribution.getURI()); - contributions.remove(contribution); - } - - public void updateContribution(Contribution contribution) { - Contribution oldContribution = contributionMap.remove(contribution.getURI()); - contributions.remove(oldContribution); - contributionMap.put(contribution.getURI(), contribution); - contributions.add(contribution); - } - - public Contribution getContribution(String uri) { - return contributionMap.get(uri); - } - - public List getContributions() { - return Collections.unmodifiableList(contributions); - } - -} diff --git a/branches/sca-java-1.0.1/modules/contribution-impl/src/main/java/org/apache/tuscany/sca/contribution/service/impl/ContributionServiceImpl.java b/branches/sca-java-1.0.1/modules/contribution-impl/src/main/java/org/apache/tuscany/sca/contribution/service/impl/ContributionServiceImpl.java deleted file mode 100644 index 1a150beee6..0000000000 --- a/branches/sca-java-1.0.1/modules/contribution-impl/src/main/java/org/apache/tuscany/sca/contribution/service/impl/ContributionServiceImpl.java +++ /dev/null @@ -1,430 +0,0 @@ -/* - * 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.impl; - -import java.io.IOException; -import java.io.InputStream; -import java.net.MalformedURLException; -import java.net.URI; -import java.net.URL; -import java.net.URLClassLoader; -import java.util.ArrayList; -import java.util.List; - -import javax.xml.stream.XMLInputFactory; -import javax.xml.stream.XMLStreamException; - -import org.apache.tuscany.sca.assembly.AssemblyFactory; -import org.apache.tuscany.sca.assembly.Composite; -import org.apache.tuscany.sca.contribution.Contribution; -import org.apache.tuscany.sca.contribution.ContributionFactory; -import org.apache.tuscany.sca.contribution.DeployedArtifact; -import org.apache.tuscany.sca.contribution.ModelFactoryExtensionPoint; -import org.apache.tuscany.sca.contribution.processor.PackageProcessor; -import org.apache.tuscany.sca.contribution.processor.StAXArtifactProcessor; -import org.apache.tuscany.sca.contribution.processor.URLArtifactProcessor; -import org.apache.tuscany.sca.contribution.resolver.ExtensibleModelResolver; -import org.apache.tuscany.sca.contribution.resolver.ModelResolver; -import org.apache.tuscany.sca.contribution.resolver.ModelResolverExtensionPoint; -import org.apache.tuscany.sca.contribution.service.ContributionException; -import org.apache.tuscany.sca.contribution.service.ContributionRepository; -import org.apache.tuscany.sca.contribution.service.ContributionService; -import org.apache.tuscany.sca.contribution.service.ExtensibleContributionListener; -import org.apache.tuscany.sca.contribution.service.util.IOHelper; - -/** - * Service interface that manages artifacts contributed to a Tuscany runtime. - * - * @version $Rev$ $Date$ - */ -/** - * - */ -public class ContributionServiceImpl implements ContributionService { - - /** - * Repository where contributions are stored. Usually set by injection. - */ - private ContributionRepository contributionRepository; - - /** - * Registry of available package processors. - */ - private PackageProcessor packageProcessor; - - /** - * Registry of available artifact processors - */ - - private URLArtifactProcessor artifactProcessor; - - /** - * Registry of available stax processors, - * used for loading contribution metadata in a extensible way - */ - private StAXArtifactProcessor staxProcessor; - - /** - * Event listener for contribution operations - */ - private ExtensibleContributionListener contributionListener; - - /** - * Registry of available model resolvers - */ - - private ModelResolverExtensionPoint modelResolvers; - - /** - * Model factory extension point - */ - - private ModelFactoryExtensionPoint modelFactories; - - /** - * xml factory used to create reader instance to load contribution metadata - */ - private XMLInputFactory xmlFactory; - - /** - * Assembly factory - */ - private AssemblyFactory assemblyFactory; - - /** - * Contribution model facotry - */ - private ContributionFactory contributionFactory; - - private ModelResolver domainResolver; - - public ContributionServiceImpl(ContributionRepository repository, - PackageProcessor packageProcessor, - URLArtifactProcessor documentProcessor, - StAXArtifactProcessor staxProcessor, - ExtensibleContributionListener contributionListener, - ModelResolver domainResolver, - ModelResolverExtensionPoint modelResolvers, - ModelFactoryExtensionPoint modelFactories, - AssemblyFactory assemblyFactory, - ContributionFactory contributionFactory, - XMLInputFactory xmlFactory) { - super(); - this.contributionRepository = repository; - this.packageProcessor = packageProcessor; - this.artifactProcessor = documentProcessor; - this.staxProcessor = staxProcessor; - this.contributionListener = contributionListener; - this.modelResolvers = modelResolvers; - this.modelFactories = modelFactories; - this.xmlFactory = xmlFactory; - this.assemblyFactory = assemblyFactory; - this.contributionFactory = contributionFactory; - this.domainResolver = domainResolver; - } - - public Contribution contribute(String contributionURI, URL sourceURL, boolean storeInRepository) - throws ContributionException, IOException { - if (contributionURI == null) { - throw new IllegalArgumentException("URI for the contribution is null"); - } - if (sourceURL == null) { - throw new IllegalArgumentException("Source URL for the contribution is null"); - } - - return addContribution(contributionURI, sourceURL, null, null, storeInRepository); - } - - public Contribution contribute(String contributionURI, - URL sourceURL, - ModelResolver modelResolver, - boolean storeInRepository) throws ContributionException, IOException { - if (contributionURI == null) { - throw new IllegalArgumentException("URI for the contribution is null"); - } - if (sourceURL == null) { - throw new IllegalArgumentException("Source URL for the contribution is null"); - } - - return addContribution(contributionURI, sourceURL, null, modelResolver, storeInRepository); - } - - public Contribution contribute(String contributionURI, URL sourceURL, InputStream input) - throws ContributionException, IOException { - - return addContribution(contributionURI, sourceURL, input, null, true); - } - - public Contribution contribute(String contributionURI, URL sourceURL, InputStream input, ModelResolver modelResolver) - throws ContributionException, IOException { - - return addContribution(contributionURI, sourceURL, input, modelResolver, true); - } - - public Contribution getContribution(String uri) { - return this.contributionRepository.getContribution(uri); - } - - /** - * Remove a contribution and notify listener that contribution was removed - */ - public void remove(String uri) throws ContributionException { - Contribution contribution = contributionRepository.getContribution(uri); - this.contributionRepository.removeContribution(contribution); - this.contributionListener.contributionRemoved(this.contributionRepository, contribution); - } - - /** - * Add a composite model to the contribution - */ - public void addDeploymentComposite(Contribution contribution, Composite composite) throws ContributionException { - DeployedArtifact artifact = this.contributionFactory.createDeployedArtifact(); - artifact.setURI(composite.getURI()); - artifact.setModel(composite); - - contribution.getArtifacts().add(artifact); - - contribution.getDeployables().add(composite); - } - - /** - * Utility/Helper methods for contribution service - */ - - /** - * Perform read of the contribution metada loader (sca-contribution.xml and sca-contribution-generated.xml) - * When the two metadata files are available, the information provided are merged, and the sca-contribution has priorities - * - * @param sourceURL - * @return Contribution - * @throws ContributionException - */ - private Contribution readContributionMetadata(URL sourceURL) throws ContributionException { - Contribution contributionMetadata = null; - - URL[] clUrls = {sourceURL}; - URLClassLoader cl = new URLClassLoader(clUrls, null); - - ContributionMetadataDocumentProcessor metadataDocumentProcessor = - new ContributionMetadataDocumentProcessor(cl, staxProcessor, assemblyFactory, contributionFactory, - xmlFactory); - contributionMetadata = contributionFactory.createContribution(); - try { - metadataDocumentProcessor.read(contributionMetadata); - } catch (XMLStreamException e) { - throw new InvalidContributionMetadataException("Invalid contribution metadata for contribution."); - } - - // For debugging purposes, write it back to XML - // if (contributionMetadata != null) { - // try { - // ByteArrayOutputStream bos = new ByteArrayOutputStream(); - // XMLOutputFactory outputFactory = XMLOutputFactory.newInstance(); - // outputFactory.setProperty(XMLOutputFactory.IS_REPAIRING_NAMESPACES, Boolean.TRUE); - // staxProcessor.write(contributionMetadata, outputFactory.createXMLStreamWriter(bos)); - // Document document = DocumentBuilderFactory.newInstance().newDocumentBuilder().parse(new ByteArrayInputStream(bos.toByteArray())); - // OutputFormat format = new OutputFormat(); - // format.setIndenting(true); - // format.setIndent(2); - // XMLSerializer serializer = new XMLSerializer(System.out, format); - // serializer.serialize(document); - // } catch (Exception e) { - // e.printStackTrace(); - // } - // } - - return contributionMetadata; - } - - /** - * 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 - * @return the contribution model representing the contribution - * @throws IOException - * @throws DeploymentException - */ - private Contribution addContribution(String contributionURI, - URL sourceURL, - InputStream contributionStream, - ModelResolver modelResolver, - boolean storeInRepository) throws IOException, ContributionException { - - if (contributionStream == null && sourceURL == null) { - throw new IllegalArgumentException("The content of the contribution is null."); - } - - // store the contribution in the contribution repository - URL locationURL = sourceURL; - if (contributionRepository != null && storeInRepository) { - if (contributionStream == null) { - locationURL = contributionRepository.store(contributionURI, sourceURL); - } else { - locationURL = contributionRepository.store(contributionURI, sourceURL, contributionStream); - } - } - - //initialize contribution based on it's metadata if available - Contribution contribution = readContributionMetadata(locationURL); - - // Create contribution model resolver - if (modelResolver == null) { - modelResolver = new ExtensibleModelResolver(contribution, modelResolvers, modelFactories); - } - - if (modelResolver instanceof ExtensibleModelResolver) { - ((ExtensibleModelResolver)modelResolver).setDomainResolver(domainResolver); - } - - //set contribution initial information - contribution.setURI(contributionURI.toString()); - contribution.setLocation(locationURL.toString()); - contribution.setModelResolver(modelResolver); - - List contributionArtifacts = null; - - //NOTE: if a contribution is stored on the repository - //the stream would be consumed at this point - if (storeInRepository || contributionStream == null) { - contributionStream = sourceURL.openStream(); - try { - // process the contribution - contributionArtifacts = this.packageProcessor.getArtifacts(locationURL, contributionStream); - } finally { - IOHelper.closeQuietly(contributionStream); - contributionStream = null; - } - } else { - // process the contribution - contributionArtifacts = this.packageProcessor.getArtifacts(locationURL, contributionStream); - } - - // Read all artifacts in the contribution - processReadPhase(contribution, contributionArtifacts); - - // - this.contributionListener.contributionAdded(this.contributionRepository, contribution); - - // Resolve them - processResolvePhase(contribution); - - // Add all composites under META-INF/sca-deployables to the - // list of deployables - String prefix = Contribution.SCA_CONTRIBUTION_DEPLOYABLES; - for (DeployedArtifact artifact : contribution.getArtifacts()) { - if (artifact.getModel() instanceof Composite) { - if (artifact.getURI().startsWith(prefix)) { - Composite composite = (Composite)artifact.getModel(); - if (!contribution.getDeployables().contains(composite)) { - contribution.getDeployables().add(composite); - } - } - } - } - - // store the contribution on the registry - this.contributionRepository.addContribution(contribution); - - return contribution; - } - - /** - * This utility method process each artifact and delegates to proper - * artifactProcessor to read the model and generate the in-memory representation - * - * @param contribution - * @param artifacts - * @throws ContributionException - * @throws MalformedURLException - */ - private void processReadPhase(Contribution contribution, List artifacts) throws ContributionException, - MalformedURLException { - - ModelResolver modelResolver = contribution.getModelResolver(); - URL contributionURL = new URL(contribution.getLocation()); - for (URI a : artifacts) { - URL artifactURL = packageProcessor.getArtifactURL(new URL(contribution.getLocation()), a); - - // Add the deployed artifact model to the resolver - DeployedArtifact artifact = this.contributionFactory.createDeployedArtifact(); - artifact.setURI(a.toString()); - artifact.setLocation(artifactURL.toString()); - contribution.getArtifacts().add(artifact); - modelResolver.addModel(artifact); - - // Let the artifact processor read the artifact into a model - Object model = this.artifactProcessor.read(contributionURL, a, artifactURL); - if (model != null) { - artifact.setModel(model); - - // Add the loaded model to the model resolver - modelResolver.addModel(model); - } - } - } - - /** - * This utility method process each artifact and delegates to proper - * artifactProcessor to resolve the model references - * - * @param contribution - * @throws ContributionException - */ - @SuppressWarnings("unchecked") - private void processResolvePhase(Contribution contribution) throws ContributionException { - List composites = new ArrayList(); - - // for each artifact that was processed on the contribution - for (DeployedArtifact artifact : contribution.getArtifacts()) { - //leave the composites to be resolved at the end - if (artifact.getURI().endsWith(".composite")) { - composites.add(artifact); - } else { - // resolve the model object - if (artifact.getModel() != null) { - this.artifactProcessor.resolve(artifact.getModel(), contribution.getModelResolver()); - } - } - } - - //process each composite file - for (DeployedArtifact artifact : composites) { - // resolve the model object - if (artifact.getModel() != null) { - // System.out.println("Processing Resolve Phase : " + artifact.getURI()); - this.artifactProcessor.resolve(artifact.getModel(), contribution.getModelResolver()); - } - } - - //resolve deployables from contribution metadata - List resolvedDeployables = new ArrayList(); - for (Composite deployableComposite : contribution.getDeployables()) { - Composite resolvedDeployable = - contribution.getModelResolver().resolveModel(Composite.class, deployableComposite); - - resolvedDeployables.add(resolvedDeployable); - } - contribution.getDeployables().clear(); - contribution.getDeployables().addAll(resolvedDeployables); - } -} diff --git a/branches/sca-java-1.0.1/modules/contribution-impl/src/main/java/org/apache/tuscany/sca/contribution/service/impl/InvalidContributionMetadataException.java b/branches/sca-java-1.0.1/modules/contribution-impl/src/main/java/org/apache/tuscany/sca/contribution/service/impl/InvalidContributionMetadataException.java deleted file mode 100644 index 6fbf46a5b4..0000000000 --- a/branches/sca-java-1.0.1/modules/contribution-impl/src/main/java/org/apache/tuscany/sca/contribution/service/impl/InvalidContributionMetadataException.java +++ /dev/null @@ -1,54 +0,0 @@ -/* - * 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.impl; - -import org.apache.tuscany.sca.contribution.service.ContributionException; - -/** - * Exception that indicates that the supplied XML Document invalid. - * - * @version $Rev$ $Date$ - */ -public class InvalidContributionMetadataException extends ContributionException { - - private static final long serialVersionUID = -3184477070625689942L; - - protected InvalidContributionMetadataException() { - } - - protected InvalidContributionMetadataException(String message) { - super(message); - } - - protected InvalidContributionMetadataException(String message, String identifier) { - super(message, identifier); - } - - protected InvalidContributionMetadataException(String message, Throwable cause) { - super(message, cause); - } - - protected InvalidContributionMetadataException(String message, String identifier, Throwable cause) { - super(message, identifier, cause); - } - - protected InvalidContributionMetadataException(Throwable cause) { - super(cause); - } -} diff --git a/branches/sca-java-1.0.1/modules/contribution-impl/src/main/java/org/apache/tuscany/sca/contribution/service/impl/InvalidContributionURIException.java b/branches/sca-java-1.0.1/modules/contribution-impl/src/main/java/org/apache/tuscany/sca/contribution/service/impl/InvalidContributionURIException.java deleted file mode 100644 index e243294bd0..0000000000 --- a/branches/sca-java-1.0.1/modules/contribution-impl/src/main/java/org/apache/tuscany/sca/contribution/service/impl/InvalidContributionURIException.java +++ /dev/null @@ -1,54 +0,0 @@ -/* - * 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.impl; - -import org.apache.tuscany.sca.contribution.service.ContributionException; - -/** - * Exception that indicates that the supplied contribution URI is invalid or inexistent. - * - * @version $Rev$ $Date$ - */ -public class InvalidContributionURIException extends ContributionException { - - private static final long serialVersionUID = -3184477070625689942L; - - protected InvalidContributionURIException() { - } - - protected InvalidContributionURIException(String message) { - super(message); - } - - protected InvalidContributionURIException(String message, String identifier) { - super(message, identifier); - } - - protected InvalidContributionURIException(String message, Throwable cause) { - super(message, cause); - } - - protected InvalidContributionURIException(String message, String identifier, Throwable cause) { - super(message, identifier, cause); - } - - protected InvalidContributionURIException(Throwable cause) { - super(cause); - } -} diff --git a/branches/sca-java-1.0.1/modules/contribution-impl/src/main/java/org/apache/tuscany/sca/contribution/service/impl/PackageTypeDescriberImpl.java b/branches/sca-java-1.0.1/modules/contribution-impl/src/main/java/org/apache/tuscany/sca/contribution/service/impl/PackageTypeDescriberImpl.java deleted file mode 100644 index 165c9d0616..0000000000 --- a/branches/sca-java-1.0.1/modules/contribution-impl/src/main/java/org/apache/tuscany/sca/contribution/service/impl/PackageTypeDescriberImpl.java +++ /dev/null @@ -1,98 +0,0 @@ -/* - * 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.impl; - -import java.io.IOException; -import java.net.URL; -import java.net.URLConnection; -import java.util.HashMap; -import java.util.Map; - -import org.apache.tuscany.sca.contribution.ContentType; -import org.apache.tuscany.sca.contribution.service.TypeDescriber; -import org.apache.tuscany.sca.contribution.service.util.FileHelper; - -/** - * Implementation of the content describer for contribution packages - * - * @version $Rev$ $Date$ - */ -public class PackageTypeDescriberImpl implements TypeDescriber { - private final Map contentTypeRegistry = new HashMap(); - - public PackageTypeDescriberImpl() { - super(); - init(); - } - - /** - * Initialize contentType registry with know types based on known file extensions - */ - private void init() { - contentTypeRegistry.put("JAR", ContentType.JAR); - } - - protected String resolveContentyTypeByExtension(URL resourceURL) { - String artifactExtension = FileHelper.getExtension(resourceURL.getPath()); - if (artifactExtension == null) { - return null; - } - return contentTypeRegistry.get(artifactExtension.toUpperCase()); - } - - /** - * Build contentType for a specific resource. We first check if the file is - * a supported one (looking into our registry based on resource extension) - * If not found, we try to check file contentType Or we return - * defaultContentType provided - * - * @param resourceURL The artifact url - * @param defaultContentType The default content type if we can't find the correc one - * @return The content type - */ - public String getType(URL resourceURL, String defaultContentType) { - URLConnection connection = null; - String contentType = defaultContentType; - - if (resourceURL.getProtocol().equals("file") && FileHelper.toFile(resourceURL).isDirectory()) { - // Special case : contribution is a folder - contentType = ContentType.FOLDER; - } else { - contentType = resolveContentyTypeByExtension(resourceURL); - if (contentType == null) { - try { - connection = resourceURL.openConnection(); - contentType = connection.getContentType(); - - if (contentType == null || contentType.equals("content/unknown")) { - // here we couldn't figure out from our registry or from URL and it's not a special file - // return defaultContentType if provided - contentType = defaultContentType; - } - } catch (IOException io) { - // could not access artifact, just ignore and we will return - // null contentType - } - } - } - return contentType == null ? defaultContentType : contentType; - } - -} diff --git a/branches/sca-java-1.0.1/modules/contribution-impl/src/main/java/org/apache/tuscany/sca/contribution/service/util/FileHelper.java b/branches/sca-java-1.0.1/modules/contribution-impl/src/main/java/org/apache/tuscany/sca/contribution/service/util/FileHelper.java deleted file mode 100644 index bc63dca4a8..0000000000 --- a/branches/sca-java-1.0.1/modules/contribution-impl/src/main/java/org/apache/tuscany/sca/contribution/service/util/FileHelper.java +++ /dev/null @@ -1,704 +0,0 @@ -/* - * 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.util; - -import java.io.File; -import java.io.FileFilter; -import java.io.FileInputStream; -import java.io.FileNotFoundException; -import java.io.FileOutputStream; -import java.io.IOException; -import java.net.URL; -import java.util.regex.Pattern; - -public class FileHelper { - /** - * The extension separator character. - */ - private static final char EXTENSION_SEPARATOR = '.'; - - /** - * The Unix separator character. - */ - private static final char UNIX_SEPARATOR = '/'; - - /** - * The Windows separator character. - */ - private static final char WINDOWS_SEPARATOR = '\\'; - - protected FileHelper() { - } - - /** - * Returns the index of the last directory separator character. - *

- * This method will handle a file in either Unix or Windows format. The - * position of the last forward or backslash is returned. - *

- * The output will be the same irrespective of the machine that the code is - * running on. - * - * @param filename the filename to find the last path separator in, null - * returns -1 - * @return the index of the last separator character, or -1 if there is no - * such character - */ - public static int indexOfLastSeparator(String filename) { - if (filename == null) { - return -1; - } - int lastUnixPos = filename.lastIndexOf(UNIX_SEPARATOR); - int lastWindowsPos = filename.lastIndexOf(WINDOWS_SEPARATOR); - return Math.max(lastUnixPos, lastWindowsPos); - } - - /** - * Returns the index of the last extension separator character, which is a - * dot. - *

- * This method also checks that there is no directory separator after the - * last dot. To do this it uses {@link #indexOfLastSeparator(String)} which - * will handle a file in either Unix or Windows format. - *

- * The output will be the same irrespective of the machine that the code is - * running on. - * - * @param filename the filename to find the last path separator in, null - * returns -1 - * @return the index of the last separator character, or -1 if there is no - * such character - */ - public static int indexOfExtension(String filename) { - if (filename == null) { - return -1; - } - int extensionPos = filename.lastIndexOf(EXTENSION_SEPARATOR); - int lastSeparator = indexOfLastSeparator(filename); - return lastSeparator > extensionPos ? -1 : extensionPos; - } - - /** - * Gets the name minus the path from a full filename. - *

- * This method will handle a file in either Unix or Windows format. The text - * after the last forward or backslash is returned. - * - *

-     * a/b/c.txt --> c.txt
-     * a.txt     --> a.txt
-     * a/b/c     --> c
-     * a/b/c/    --> ""
-     * 
- * - *

- * The output will be the same irrespective of the machine that the code is - * running on. - * - * @param fileName the filename to query, null returns null - * @return the name of the file without the path, or an empty string if none - * exists - */ - public static String getName(String fileName) { - if (fileName == null) { - return null; - } - int index = indexOfLastSeparator(fileName); - return fileName.substring(index + 1); - } - - /** - * Gets the extension of a filename. - *

- * This method returns the textual part of the filename after the last dot. - * There must be no directory separator after the dot. - * - *

-     * foo.txt      --> "txt"
-     * a/b/c.jpg    --> "jpg"
-     * a/b.txt/c    --> ""
-     * a/b/c        --> ""
-     * 
- * - *

- * The output will be the same irrespective of the machine that the code is - * running on. - * - * @param filename the filename to retrieve the extension of. - * @return the extension of the file or an empty string if none exists. - */ - public static String getExtension(String filename) { - if (filename == null) { - return null; - } - int index = indexOfExtension(filename); - if (index == -1) { - return ""; - } else { - return filename.substring(index + 1); - } - } - - /** - * Make a directory, including any necessary but nonexistent parent - * directories. If there already exists a file with specified name or the - * directory cannot be created then an exception is thrown. - * - * @param directory directory to create, not null - * @throws NullPointerException if the directory is null - * @throws IOException if the directory cannot be created - */ - public static void forceMkdir(File directory) throws IOException { - if (directory.exists()) { - if (directory.isFile()) { - String message = - "File " + directory + " exists and is " + "not a directory. Unable to create directory."; - throw new IOException(message); - } - } else { - if (!directory.mkdirs()) { - String message = "Unable to create directory " + directory; - throw new IOException(message); - } - } - } - - /** - * Delete a file. If file is a directory, delete it and all sub-directories. - *

- * The difference between File.delete() and this method are: - *

    - *
  • A directory to be deleted does not have to be empty.
  • - *
  • You get exceptions when a file or directory cannot be deleted. - * (java.io.File methods returns a boolean)
  • - *
- * - * @param file file or directory to delete, not null - * @throws NullPointerException if the directory is null - * @throws IOException in case deletion is unsuccessful - */ - public static void forceDelete(File file) throws IOException { - if (file.isDirectory()) { - deleteDirectory(file); - } else { - if (!file.exists()) { - throw new FileNotFoundException("File does not exist: " + file); - } - if (!file.delete()) { - String message = "Unable to delete file: " + file; - throw new IOException(message); - } - } - } - - /** - * Convert from a URL to a File. - *

- * From version 1.1 this method will decode the URL. Syntax such as - * file:///my%20docs/file.txt will be correctly decoded to - * /my docs/file.txt. - * - * @param url the file URL to convert, null returns null - * @return the equivalent File object, or null - * if the URL's protocol is not file - * @throws IllegalArgumentException if the file is incorrectly encoded - */ - public static File toFile(URL url) { - if (url == null || !url.getProtocol().equals("file")) { - return null; - } else { - String filename = url.getFile().replace('/', File.separatorChar); - int pos = 0; - while ((pos = filename.indexOf('%', pos)) >= 0) { // NOPMD - if (pos + 2 < filename.length()) { - String hexStr = filename.substring(pos + 1, pos + 3); - char ch = (char)Integer.parseInt(hexStr, 16); - filename = filename.substring(0, pos) + ch + filename.substring(pos + 3); - } - } - return new File(filename); - } - } - - public static FileFilter getFileFilter(String regExp, boolean ignoreCase) { - return new RegExpFilter(regExp, ignoreCase); - } - - /** - * A regular-expression based resource filter - */ - public static class RegExpFilter implements FileFilter { - private Pattern pattern; - - public RegExpFilter(Pattern pattern) { - this.pattern = pattern; - } - - public RegExpFilter(String patternStr, boolean ignoreCase) { - this.pattern = Pattern.compile(patternStr, ignoreCase ? Pattern.CASE_INSENSITIVE : 0); - } - - public boolean accept(File file) { - return pattern.matcher(file.getName()).matches(); - } - - /** - * Convert wildcard into a regex pattern - * - * @param str - * @return - */ - public static RegExpFilter getWildcardFilter(String str, boolean ignoreCase) { - StringBuffer buffer = new StringBuffer(); - for (int i = 0; i < str.length(); i++) { - char ch = str.charAt(i); - if (ch == '?') { - buffer.append('.'); - } else if (ch == '*') { - buffer.append(".*"); - } else { - buffer.append(ch); - } - } - return new RegExpFilter(buffer.toString(), ignoreCase); - } - - } - - /** - * Clean a directory without deleting it. - * - * @param directory directory to clean - * @throws IOException in case cleaning is unsuccessful - */ - public static void cleanDirectory(File directory) throws IOException { - if (!directory.exists()) { - String message = directory + " does not exist"; - throw new IllegalArgumentException(message); - } - - if (!directory.isDirectory()) { - String message = directory + " is not a directory"; - throw new IllegalArgumentException(message); - } - - File[] files = directory.listFiles(); - if (files == null) { // null if security restricted - throw new IOException("Failed to list contents of " + directory); - } - - IOException exception = null; - for (int i = 0; i < files.length; i++) { - File file = files[i]; - try { - forceDelete(file); - } catch (IOException ioe) { - exception = ioe; - } - } - - if (null != exception) { - throw exception; - } - } - - /** - * Clean a directory without deleting it. - * - * @param directory directory to clean, must not be null - * @throws NullPointerException if the directory is null - * @throws IOException in case cleaning is unsuccessful - */ - private static void cleanDirectoryOnExit(File directory) throws IOException { - if (!directory.exists()) { - String message = directory + " does not exist"; - throw new IllegalArgumentException(message); - } - - if (!directory.isDirectory()) { - String message = directory + " is not a directory"; - throw new IllegalArgumentException(message); - } - - File[] files = directory.listFiles(); - if (files == null) { // null if security restricted - throw new IOException("Failed to list contents of " + directory); - } - - IOException exception = null; - for (int i = 0; i < files.length; i++) { - File file = files[i]; - try { - forceDeleteOnExit(file); - } catch (IOException ioe) { - exception = ioe; - } - } - - if (null != exception) { - throw exception; - } - } - - /** - * Copies a whole directory to a new location preserving the file dates. - *

- * This method copies the specified directory and all its child directories - * and files to the specified destination. The destination is the new - * location and name of the directory. - *

- * The destination directory is created if it does not exist. If the - * destination directory did exist, then this method merges the source with - * the destination, with the source taking precedence. - * - * @param srcDir an existing directory to copy, must not be - * null - * @param destDir the new directory, must not be null - * @throws NullPointerException if source or destination is - * null - * @throws IOException if source or destination is invalid - * @throws IOException if an IO error occurs during copying - * @since Commons IO 1.1 - */ - public static void copyDirectory(File srcDir, File destDir) throws IOException { - copyDirectory(srcDir, destDir, true); - } - - /** - * Copies a whole directory to a new location. - *

- * This method copies the contents of the specified source directory to - * within the specified destination directory. - *

- * The destination directory is created if it does not exist. If the - * destination directory did exist, then this method merges the source with - * the destination, with the source taking precedence. - * - * @param srcDir an existing directory to copy, must not be - * null - * @param destDir the new directory, must not be null - * @param preserveFileDate true if the file date of the copy should be the - * same as the original - * @throws NullPointerException if source or destination is - * null - * @throws IOException if source or destination is invalid - * @throws IOException if an IO error occurs during copying - * @since Commons IO 1.1 - */ - public static void copyDirectory(File srcDir, File destDir, boolean preserveFileDate) throws IOException { - if (srcDir == null) { - throw new NullPointerException("Source must not be null"); - } - if (destDir == null) { - throw new NullPointerException("Destination must not be null"); - } - if (!srcDir.exists()) { - throw new FileNotFoundException("Source '" + srcDir + "' does not exist"); - } - if (!srcDir.isDirectory()) { - throw new IOException("Source '" + srcDir + "' exists but is not a directory"); - } - if (srcDir.getCanonicalPath().equals(destDir.getCanonicalPath())) { - throw new IOException("Source '" + srcDir + "' and destination '" + destDir + "' are the same"); - } - doCopyDirectory(srcDir, destDir, preserveFileDate); - } - - // ----------------------------------------------------------------------- - /** - * Copies a directory to within another directory preserving the file dates. - *

- * This method copies the source directory and all its contents to a - * directory of the same name in the specified destination directory. - *

- * The destination directory is created if it does not exist. If the - * destination directory did exist, then this method merges the source with - * the destination, with the source taking precedence. - * - * @param srcDir an existing directory to copy, must not be - * null - * @param destDir the directory to place the copy in, must not be - * null - * @throws NullPointerException if source or destination is - * null - * @throws IOException if source or destination is invalid - * @throws IOException if an IO error occurs during copying - * @since Commons IO 1.2 - */ - public static void copyDirectoryToDirectory(File srcDir, File destDir) throws IOException { - if (srcDir == null) { - throw new NullPointerException("Source must not be null"); - } - if (!(srcDir.exists() && srcDir.isDirectory())) { - throw new IllegalArgumentException("Source '" + destDir + "' is not a directory"); - } - if (destDir == null) { - throw new NullPointerException("Destination must not be null"); - } - if (!(destDir.exists() && destDir.isDirectory())) { - throw new IllegalArgumentException("Destination '" + destDir + "' is not a directory"); - } - copyDirectory(srcDir, new File(destDir, srcDir.getName()), true); - } - - /** - * Copies a file to a new location preserving the file date. - *

- * This method copies the contents of the specified source file to the - * specified destination file. The directory holding the destination file is - * created if it does not exist. If the destination file exists, then this - * method will overwrite it. - * - * @param srcFile an existing file to copy, must not be null - * @param destFile the new file, must not be null - * @throws NullPointerException if source or destination is - * null - * @throws IOException if source or destination is invalid - * @throws IOException if an IO error occurs during copying - * @see #copyFileToDirectory(File, File) - */ - public static void copyFile(File srcFile, File destFile) throws IOException { - copyFile(srcFile, destFile, true); - } - - /** - * Copies a file to a new location. - *

- * This method copies the contents of the specified source file to the - * specified destination file. The directory holding the destination file is - * created if it does not exist. If the destination file exists, then this - * method will overwrite it. - * - * @param srcFile an existing file to copy, must not be null - * @param destFile the new file, must not be null - * @param preserveFileDate true if the file date of the copy should be the - * same as the original - * @throws NullPointerException if source or destination is - * null - * @throws IOException if source or destination is invalid - * @throws IOException if an IO error occurs during copying - * @see #copyFileToDirectory(File, File, boolean) - */ - public static void copyFile(File srcFile, File destFile, boolean preserveFileDate) throws IOException { - if (srcFile == null) { - throw new NullPointerException("Source must not be null"); - } - if (destFile == null) { - throw new NullPointerException("Destination must not be null"); - } - if (!srcFile.exists()) { - throw new FileNotFoundException("Source '" + srcFile + "' does not exist"); - } - if (srcFile.isDirectory()) { - throw new IOException("Source '" + srcFile + "' exists but is a directory"); - } - if (srcFile.getCanonicalPath().equals(destFile.getCanonicalPath())) { - throw new IOException("Source '" + srcFile + "' and destination '" + destFile + "' are the same"); - } - if (!(destFile.getParentFile() != null && destFile.getParentFile().exists())) { - if (!destFile.getParentFile().mkdirs()) { //NOPMD - throw new IOException("Destination '" + destFile + "' directory cannot be created"); - } - } - if (!(destFile.exists() && destFile.canWrite())) { - throw new IOException("Destination '" + destFile + "' exists but is read-only"); - } - doCopyFile(srcFile, destFile, preserveFileDate); - } - - // ----------------------------------------------------------------------- - /** - * Copies a file to a directory preserving the file date. - *

- * This method copies the contents of the specified source file to a file of - * the same name in the specified destination directory. The destination - * directory is created if it does not exist. If the destination file - * exists, then this method will overwrite it. - * - * @param srcFile an existing file to copy, must not be null - * @param destDir the directory to place the copy in, must not be - * null - * @throws NullPointerException if source or destination is null - * @throws IOException if source or destination is invalid - * @throws IOException if an IO error occurs during copying - * @see #copyFile(File, File, boolean) - */ - public static void copyFileToDirectory(File srcFile, File destDir) throws IOException { - copyFileToDirectory(srcFile, destDir, true); - } - - /** - * Copies a file to a directory optionally preserving the file date. - *

- * This method copies the contents of the specified source file to a file of - * the same name in the specified destination directory. The destination - * directory is created if it does not exist. If the destination file - * exists, then this method will overwrite it. - * - * @param srcFile an existing file to copy, must not be null - * @param destDir the directory to place the copy in, must not be - * null - * @param preserveFileDate true if the file date of the copy should be the - * same as the original - * @throws NullPointerException if source or destination is - * null - * @throws IOException if source or destination is invalid - * @throws IOException if an IO error occurs during copying - * @see #copyFile(File, File, boolean) - * @since Commons IO 1.3 - */ - public static void copyFileToDirectory(File srcFile, File destDir, boolean preserveFileDate) throws IOException { - if (destDir == null) { - throw new NullPointerException("Destination must not be null"); - } - if (!(destDir.exists() && destDir.isDirectory())) { - throw new IllegalArgumentException("Destination '" + destDir + "' is not a directory"); - } - copyFile(srcFile, new File(destDir, srcFile.getName()), preserveFileDate); - } - - // ----------------------------------------------------------------------- - /** - * Recursively delete a directory. - * - * @param directory directory to delete - * @throws IOException in case deletion is unsuccessful - */ - public static void deleteDirectory(File directory) throws IOException { - if (!directory.exists()) { - return; - } - - cleanDirectory(directory); - if (!directory.delete()) { - String message = "Unable to delete directory " + directory + "."; - throw new IOException(message); - } - } - - /** - * Recursively schedule directory for deletion on JVM exit. - * - * @param directory directory to delete, must not be null - * @throws NullPointerException if the directory is null - * @throws IOException in case deletion is unsuccessful - */ - private static void deleteDirectoryOnExit(File directory) throws IOException { - if (!directory.exists()) { - return; - } - - cleanDirectoryOnExit(directory); - directory.deleteOnExit(); - } - - /** - * Internal copy directory method. - * - * @param srcDir the validated source directory, must not be - * null - * @param destDir the validated destination directory, must not be - * null - * @param preserveFileDate whether to preserve the file date - * @throws IOException if an error occurs - * @since Commons IO 1.1 - */ - private static void doCopyDirectory(File srcDir, File destDir, boolean preserveFileDate) throws IOException { - if (destDir.exists()) { - if (!destDir.isDirectory()) { - throw new IOException("Destination '" + destDir + "' exists but is not a directory"); - } - } else { - if (!destDir.mkdirs()) { - throw new IOException("Destination '" + destDir + "' directory cannot be created"); - } - if (preserveFileDate) { - destDir.setLastModified(srcDir.lastModified()); - } - } - if (!destDir.canWrite()) { - throw new IOException("Destination '" + destDir + "' cannot be written to"); - } - // recurse - File[] files = srcDir.listFiles(); - if (files == null) { // null if security restricted - throw new IOException("Failed to list contents of " + srcDir); - } - for (int i = 0; i < files.length; i++) { - File copiedFile = new File(destDir, files[i].getName()); - if (files[i].isDirectory()) { - doCopyDirectory(files[i], copiedFile, preserveFileDate); - } else { - doCopyFile(files[i], copiedFile, preserveFileDate); - } - } - } - - /** - * Internal copy file method. - * - * @param srcFile the validated source file, must not be null - * @param destFile the validated destination file, must not be - * null - * @param preserveFileDate whether to preserve the file date - * @throws IOException if an error occurs - */ - private static void doCopyFile(File srcFile, File destFile, boolean preserveFileDate) throws IOException { - if (destFile.exists() && destFile.isDirectory()) { - throw new IOException("Destination '" + destFile + "' exists but is a directory"); - } - - FileInputStream input = new FileInputStream(srcFile); - try { - FileOutputStream output = new FileOutputStream(destFile); - try { - IOHelper.copy(input, output); - } finally { - IOHelper.closeQuietly(output); - } - } finally { - IOHelper.closeQuietly(input); - } - - if (srcFile.length() != destFile.length()) { - throw new IOException("Failed to copy full contents from '" + srcFile + "' to '" + destFile + "'"); - } - if (preserveFileDate) { - destFile.setLastModified(srcFile.lastModified()); - } - } - - /** - * Schedule a file to be deleted when JVM exits. If file is directory delete - * it and all sub-directories. - * - * @param file file or directory to delete, must not be null - * @throws NullPointerException if the file is null - * @throws IOException in case deletion is unsuccessful - */ - public static void forceDeleteOnExit(File file) throws IOException { - if (file.isDirectory()) { - deleteDirectoryOnExit(file); - } else { - file.deleteOnExit(); - } - } - -} diff --git a/branches/sca-java-1.0.1/modules/contribution-impl/src/main/java/org/apache/tuscany/sca/contribution/service/util/IOHelper.java b/branches/sca-java-1.0.1/modules/contribution-impl/src/main/java/org/apache/tuscany/sca/contribution/service/util/IOHelper.java deleted file mode 100644 index c8cc056b8f..0000000000 --- a/branches/sca-java-1.0.1/modules/contribution-impl/src/main/java/org/apache/tuscany/sca/contribution/service/util/IOHelper.java +++ /dev/null @@ -1,191 +0,0 @@ -/* - * 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.util; - -import java.io.IOException; -import java.io.InputStream; -import java.io.OutputStream; -import java.net.JarURLConnection; -import java.net.URL; -import java.util.jar.JarFile; - -public class IOHelper { - /** - * The default buffer size to use. - */ - private static final int DEFAULT_BUFFER_SIZE = 1024 * 4; - - protected IOHelper() { - - } - - /** - * Unconditionally close an InputStream. - *

- * Equivalent to {@link InputStream#close()}, except any exceptions will be ignored. - * This is typically used in finally blocks. - * - * @param input the InputStream to close, may be null or already closed - */ - public static void closeQuietly(InputStream input) { - try { - if (input != null) { - input.close(); - } - } catch (IOException ioe) { - // ignore - } - } - - /** - * Unconditionally close an OutputStream. - *

- * Equivalent to {@link OutputStream#close()}, except any exceptions will be ignored. - * This is typically used in finally blocks. - * - * @param output the OutputStream to close, may be null or already closed - */ - public static void closeQuietly(OutputStream output) { - try { - if (output != null) { - output.close(); - } - } catch (IOException ioe) { - // ignore - } - } - - /** - * Copy bytes from an InputStream to an - * OutputStream. - *

- * This method buffers the input internally, so there is no need to use a - * BufferedInputStream. - * - * @param input the InputStream to read from - * @param output the OutputStream to write to - * @return the number of bytes copied - * @throws NullPointerException if the input or output is null - * @throws IOException if an I/O error occurs - * @since Commons IO 1.1 - */ - public static int copy(InputStream input, OutputStream output) throws IOException { - byte[] buffer = new byte[DEFAULT_BUFFER_SIZE]; - int count = 0; - int n = 0; - while (-1 != (n = input.read(buffer))) { // NOPMD - output.write(buffer, 0, n); - count += n; - } - return count; - } - - public static InputStream getInputStream(URL url) throws IOException { - return new SafeURLInputStream(url); - } - - /** - * This class is a workaround for URL stream issue as illustrated below. - * InputStream is=url.getInputStream(); is.close(); // This line doesn't close - * the JAR file if the URL is a jar entry like "jar:file:/a.jar!/my.composite" We - * also need to turn off the JarFile cache. - * - * @see http://bugs.sun.com/bugdatabase/view_bug.do?bug_id=4950148 - * - * @version $Rev$ $Date$ - */ - public static class SafeURLInputStream extends InputStream { - private JarFile jarFile; - private InputStream is; - - public SafeURLInputStream(URL url) throws IOException { - String protocol = url.getProtocol(); - if (protocol != null && (protocol.equals("jar"))) { - JarURLConnection connection = (JarURLConnection)url.openConnection(); - // We cannot use cache - connection.setUseCaches(false); - try { - is = connection.getInputStream(); - } catch (IOException e) { - throw e; - } - jarFile = connection.getJarFile(); - } else { - is = url.openStream(); - } - } - - public SafeURLInputStream(JarURLConnection connection) throws IOException { - // We cannot use cache - connection.setUseCaches(false); - is = connection.getInputStream(); - jarFile = connection.getJarFile(); - } - - @Override - public int available() throws IOException { - return is.available(); - } - - @Override - public void close() throws IOException { - is.close(); - // We need to close the JAR file - if (jarFile != null) { - jarFile.close(); - } - } - - @Override - public synchronized void mark(int readlimit) { - is.mark(readlimit); - } - - @Override - public boolean markSupported() { - return is.markSupported(); - } - - @Override - public int read() throws IOException { - return is.read(); - } - - @Override - public int read(byte[] b, int off, int len) throws IOException { - return is.read(b, off, len); - } - - @Override - public int read(byte[] b) throws IOException { - return is.read(b); - } - - @Override - public synchronized void reset() throws IOException { - is.reset(); - } - - @Override - public long skip(long n) throws IOException { - return is.skip(n); - } - } -} \ No newline at end of file diff --git a/branches/sca-java-1.0.1/modules/contribution-impl/src/main/resources/META-INF/services/org.apache.tuscany.sca.contribution.ContributionFactory b/branches/sca-java-1.0.1/modules/contribution-impl/src/main/resources/META-INF/services/org.apache.tuscany.sca.contribution.ContributionFactory deleted file mode 100644 index e935f6eb63..0000000000 --- a/branches/sca-java-1.0.1/modules/contribution-impl/src/main/resources/META-INF/services/org.apache.tuscany.sca.contribution.ContributionFactory +++ /dev/null @@ -1,18 +0,0 @@ -# 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. - -org.apache.tuscany.sca.contribution.impl.ContributionFactoryImpl \ No newline at end of file diff --git a/branches/sca-java-1.0.1/modules/contribution-impl/src/main/resources/META-INF/services/org.apache.tuscany.sca.contribution.processor.PackageProcessor b/branches/sca-java-1.0.1/modules/contribution-impl/src/main/resources/META-INF/services/org.apache.tuscany.sca.contribution.processor.PackageProcessor deleted file mode 100644 index b644709266..0000000000 --- a/branches/sca-java-1.0.1/modules/contribution-impl/src/main/resources/META-INF/services/org.apache.tuscany.sca.contribution.processor.PackageProcessor +++ /dev/null @@ -1,19 +0,0 @@ -# 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. - -org.apache.tuscany.sca.contribution.processor.impl.FolderContributionProcessor;type=application/vnd.tuscany.folder -org.apache.tuscany.sca.contribution.processor.impl.JarContributionProcessor;type=application/x-compressed -- cgit v1.2.3