You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@tuscany.apache.org by sl...@apache.org on 2009/04/21 08:45:31 UTC
svn commit: r767015 - in /tuscany/branches/sca-java-1.x:
itest/contribution-jee/
modules/contribution-impl/src/main/java/org/apache/tuscany/sca/contribution/service/impl/
modules/contribution-java/src/main/java/org/apache/tuscany/sca/contribution/java/...
Author: slaws
Date: Tue Apr 21 06:45:30 2009
New Revision: 767015
URL: http://svn.apache.org/viewvc?rev=767015&view=rev
Log:
TUSCANY-2972 instigate contribution type specific class loading to allow the JEE classloader to be used independently of jar, zip, dir classloading schemes
Added:
tuscany/branches/sca-java-1.x/modules/contribution-java/src/main/java/org/apache/tuscany/sca/contribution/java/ContributionClassloaderProviderExtensionPoint.java (with props)
tuscany/branches/sca-java-1.x/modules/contribution-java/src/main/java/org/apache/tuscany/sca/contribution/java/DefaultContributionClassloaderProviderExtensionPoint.java (with props)
tuscany/branches/sca-java-1.x/modules/contribution-java/src/main/resources/META-INF/services/org.apache.tuscany.sca.contribution.java.ContributionClassLoaderProvider
tuscany/branches/sca-java-1.x/modules/contribution-java/src/main/resources/META-INF/services/org.apache.tuscany.sca.contribution.java.ContributionClassloaderProviderExtensionPoint
tuscany/branches/sca-java-1.x/modules/contribution-jee-impl/src/main/java/org/apache/tuscany/sca/contribution/jee/impl/EARContributionClassLoader.java (with props)
tuscany/branches/sca-java-1.x/modules/contribution-jee-impl/src/main/java/org/apache/tuscany/sca/contribution/jee/impl/EARContributionClassLoaderProvider.java (with props)
tuscany/branches/sca-java-1.x/modules/contribution-jee-impl/src/main/java/org/apache/tuscany/sca/contribution/jee/impl/WARContributionClassLoader.java (with props)
tuscany/branches/sca-java-1.x/modules/contribution-jee-impl/src/main/java/org/apache/tuscany/sca/contribution/jee/impl/WARContributionClassLoaderProvider.java (with props)
Removed:
tuscany/branches/sca-java-1.x/modules/contribution-jee-impl/src/main/java/org/apache/tuscany/sca/contribution/jee/impl/JEEClassLoader.java
tuscany/branches/sca-java-1.x/modules/contribution-jee-impl/src/main/java/org/apache/tuscany/sca/contribution/jee/impl/JEEClassLoaderProvider.java
Modified:
tuscany/branches/sca-java-1.x/itest/contribution-jee/pom.xml
tuscany/branches/sca-java-1.x/modules/contribution-impl/src/main/java/org/apache/tuscany/sca/contribution/service/impl/ContributionServiceImpl.java
tuscany/branches/sca-java-1.x/modules/contribution-java/src/main/java/org/apache/tuscany/sca/contribution/java/ContributionClassLoaderProvider.java
tuscany/branches/sca-java-1.x/modules/contribution-java/src/main/java/org/apache/tuscany/sca/contribution/java/DefaultContributionClassLoaderProvider.java
tuscany/branches/sca-java-1.x/modules/contribution-java/src/main/java/org/apache/tuscany/sca/contribution/java/impl/ClassReferenceModelResolver.java
tuscany/branches/sca-java-1.x/modules/contribution-jee-impl/src/main/resources/META-INF/services/org.apache.tuscany.sca.contribution.java.ContributionClassLoaderProvider
tuscany/branches/sca-java-1.x/modules/contribution/src/main/java/org/apache/tuscany/sca/contribution/Contribution.java
tuscany/branches/sca-java-1.x/modules/contribution/src/main/java/org/apache/tuscany/sca/contribution/impl/ContributionImpl.java
tuscany/branches/sca-java-1.x/modules/workspace/src/main/java/org/apache/tuscany/sca/workspace/impl/WorkspaceImpl.java
Modified: tuscany/branches/sca-java-1.x/itest/contribution-jee/pom.xml
URL: http://svn.apache.org/viewvc/tuscany/branches/sca-java-1.x/itest/contribution-jee/pom.xml?rev=767015&r1=767014&r2=767015&view=diff
==============================================================================
--- tuscany/branches/sca-java-1.x/itest/contribution-jee/pom.xml (original)
+++ tuscany/branches/sca-java-1.x/itest/contribution-jee/pom.xml Tue Apr 21 06:45:30 2009
@@ -86,7 +86,7 @@
<dependency>
<groupId>org.apache.tuscany.sca</groupId>
- <artifactId>itest-contribution-jee-samples</artifactId>
+ <artifactId>itest-contribution-jee-samples-6</artifactId>
<version>1.6-SNAPSHOT</version>
</dependency>
Modified: tuscany/branches/sca-java-1.x/modules/contribution-impl/src/main/java/org/apache/tuscany/sca/contribution/service/impl/ContributionServiceImpl.java
URL: http://svn.apache.org/viewvc/tuscany/branches/sca-java-1.x/modules/contribution-impl/src/main/java/org/apache/tuscany/sca/contribution/service/impl/ContributionServiceImpl.java?rev=767015&r1=767014&r2=767015&view=diff
==============================================================================
--- tuscany/branches/sca-java-1.x/modules/contribution-impl/src/main/java/org/apache/tuscany/sca/contribution/service/impl/ContributionServiceImpl.java (original)
+++ tuscany/branches/sca-java-1.x/modules/contribution-impl/src/main/java/org/apache/tuscany/sca/contribution/service/impl/ContributionServiceImpl.java Tue Apr 21 06:45:30 2009
@@ -55,6 +55,7 @@
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.TypeDescriber;
import org.apache.tuscany.sca.contribution.service.util.IOHelper;
import org.apache.tuscany.sca.contribution.xml.ContributionMetadataDocumentProcessor;
import org.apache.tuscany.sca.core.ExtensionPointRegistry;
@@ -135,7 +136,9 @@
private Monitor monitor;
- private String COMPOSITE_FILE_EXTN = ".composite";
+ private String COMPOSITE_FILE_EXTN = ".composite";
+
+ private TypeDescriber packageTypeDescriber;
public ContributionServiceImpl(ContributionRepository repository,
PackageProcessor packageProcessor,
@@ -166,6 +169,8 @@
this.policyDefinitionsResolver = policyDefinitionsResolver;
this.policyDefinitions = policyDefinitions;
this.monitor = monitor;
+
+ this.packageTypeDescriber = new PackageTypeDescriberImpl();
}
/**
@@ -370,6 +375,7 @@
contribution.setURI(contributionURI);
contribution.setLocation(locationURL.toString());
contribution.setModelResolver(modelResolver);
+ contribution.setType(packageTypeDescriber.getType(locationURL, null));
List<URI> contributionArtifacts = null;
Modified: tuscany/branches/sca-java-1.x/modules/contribution-java/src/main/java/org/apache/tuscany/sca/contribution/java/ContributionClassLoaderProvider.java
URL: http://svn.apache.org/viewvc/tuscany/branches/sca-java-1.x/modules/contribution-java/src/main/java/org/apache/tuscany/sca/contribution/java/ContributionClassLoaderProvider.java?rev=767015&r1=767014&r2=767015&view=diff
==============================================================================
--- tuscany/branches/sca-java-1.x/modules/contribution-java/src/main/java/org/apache/tuscany/sca/contribution/java/ContributionClassLoaderProvider.java (original)
+++ tuscany/branches/sca-java-1.x/modules/contribution-java/src/main/java/org/apache/tuscany/sca/contribution/java/ContributionClassLoaderProvider.java Tue Apr 21 06:45:30 2009
@@ -25,6 +25,15 @@
* A pluggable utility to provide a classloader for a given contribution
*/
public interface ContributionClassLoaderProvider {
+
+ /**
+ * Get the contribution type that this object will provide
+ * classloaders for. Takes values from o.a.t.s.contribution.PackageType
+ *
+ * @return
+ */
+ String getContributionType();
+
/**
* Get the classloader for the given contribution
* @param contribution
Added: tuscany/branches/sca-java-1.x/modules/contribution-java/src/main/java/org/apache/tuscany/sca/contribution/java/ContributionClassloaderProviderExtensionPoint.java
URL: http://svn.apache.org/viewvc/tuscany/branches/sca-java-1.x/modules/contribution-java/src/main/java/org/apache/tuscany/sca/contribution/java/ContributionClassloaderProviderExtensionPoint.java?rev=767015&view=auto
==============================================================================
--- tuscany/branches/sca-java-1.x/modules/contribution-java/src/main/java/org/apache/tuscany/sca/contribution/java/ContributionClassloaderProviderExtensionPoint.java (added)
+++ tuscany/branches/sca-java-1.x/modules/contribution-java/src/main/java/org/apache/tuscany/sca/contribution/java/ContributionClassloaderProviderExtensionPoint.java Tue Apr 21 06:45:30 2009
@@ -0,0 +1,55 @@
+/*
+ * 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.java;
+
+/**
+ * An extension point for contribution classloaders. Contribution
+ * classloaders respect the classloading strategy for the contribution
+ * in question. For example, a JAR contribution loads classes from its
+ * root directory while an EAR contribution follows the JEE classloading
+ * strategy. The choice of classloader is driven by the type of
+ * contribution being loaded.
+ *
+ * @version $Rev$ $Date$
+ */
+public interface ContributionClassloaderProviderExtensionPoint {
+
+ /**
+ * Add a contribution classloader provider extension.
+ *
+ * @param provider The provider to add
+ */
+ void addProvider(ContributionClassLoaderProvider provider);
+
+ /**
+ * Remove a contribution classloader provider extension.
+ *
+ * @param provider The provider to remove
+ */
+ void removeProvider(ContributionClassLoaderProvider provider);
+
+ /**
+ * Get a contribution classloader provider for the given contribution type.
+ * @param contributionType the lookup key
+ * @return The provider
+ */
+ ContributionClassLoaderProvider getProvider(String contributionType);
+
+}
Propchange: tuscany/branches/sca-java-1.x/modules/contribution-java/src/main/java/org/apache/tuscany/sca/contribution/java/ContributionClassloaderProviderExtensionPoint.java
------------------------------------------------------------------------------
svn:eol-style = native
Propchange: tuscany/branches/sca-java-1.x/modules/contribution-java/src/main/java/org/apache/tuscany/sca/contribution/java/ContributionClassloaderProviderExtensionPoint.java
------------------------------------------------------------------------------
svn:keywords = Rev Date
Modified: tuscany/branches/sca-java-1.x/modules/contribution-java/src/main/java/org/apache/tuscany/sca/contribution/java/DefaultContributionClassLoaderProvider.java
URL: http://svn.apache.org/viewvc/tuscany/branches/sca-java-1.x/modules/contribution-java/src/main/java/org/apache/tuscany/sca/contribution/java/DefaultContributionClassLoaderProvider.java?rev=767015&r1=767014&r2=767015&view=diff
==============================================================================
--- tuscany/branches/sca-java-1.x/modules/contribution-java/src/main/java/org/apache/tuscany/sca/contribution/java/DefaultContributionClassLoaderProvider.java (original)
+++ tuscany/branches/sca-java-1.x/modules/contribution-java/src/main/java/org/apache/tuscany/sca/contribution/java/DefaultContributionClassLoaderProvider.java Tue Apr 21 06:45:30 2009
@@ -28,9 +28,17 @@
*/
public class DefaultContributionClassLoaderProvider implements ContributionClassLoaderProvider {
- public DefaultContributionClassLoaderProvider(ExtensionPointRegistry registry) {
+ public DefaultContributionClassLoaderProvider() {
super();
}
+
+ /**
+ * returns null as it is the default provider and applies when no specific
+ * provider has been specified
+ */
+ public String getContributionType() {
+ return null;
+ }
public ClassLoader getClassLoader(Contribution contribution, ClassLoader parent) {
return new ContributionClassLoader(contribution, parent);
Added: tuscany/branches/sca-java-1.x/modules/contribution-java/src/main/java/org/apache/tuscany/sca/contribution/java/DefaultContributionClassloaderProviderExtensionPoint.java
URL: http://svn.apache.org/viewvc/tuscany/branches/sca-java-1.x/modules/contribution-java/src/main/java/org/apache/tuscany/sca/contribution/java/DefaultContributionClassloaderProviderExtensionPoint.java?rev=767015&view=auto
==============================================================================
--- tuscany/branches/sca-java-1.x/modules/contribution-java/src/main/java/org/apache/tuscany/sca/contribution/java/DefaultContributionClassloaderProviderExtensionPoint.java (added)
+++ tuscany/branches/sca-java-1.x/modules/contribution-java/src/main/java/org/apache/tuscany/sca/contribution/java/DefaultContributionClassloaderProviderExtensionPoint.java Tue Apr 21 06:45:30 2009
@@ -0,0 +1,144 @@
+/*
+ * 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.java;
+
+import java.io.IOException;
+import java.io.InputStream;
+import java.lang.reflect.Constructor;
+import java.net.MalformedURLException;
+import java.net.URI;
+import java.net.URL;
+import java.util.HashMap;
+import java.util.List;
+import java.util.Map;
+import java.util.Set;
+
+import org.apache.tuscany.sca.contribution.Contribution;
+import org.apache.tuscany.sca.contribution.ModelFactoryExtensionPoint;
+import org.apache.tuscany.sca.contribution.processor.PackageProcessor;
+import org.apache.tuscany.sca.contribution.service.ContributionException;
+import org.apache.tuscany.sca.extensibility.ServiceDeclaration;
+import org.apache.tuscany.sca.extensibility.ServiceDiscovery;
+
+
+/**
+ * Default implementation of a contribution classloader provider extension point.
+ *
+ * @version $Rev$ $Date$
+ */
+public class DefaultContributionClassloaderProviderExtensionPoint implements ContributionClassloaderProviderExtensionPoint {
+
+ private HashMap<String, ContributionClassLoaderProvider> providers = new HashMap<String, ContributionClassLoaderProvider>();
+ private boolean loaded;
+
+ /**
+ * Constructs a new DefaultModelFactoryExtensionPoint.
+ */
+ public DefaultContributionClassloaderProviderExtensionPoint() {
+ }
+
+ /**
+ * Add a contribution classloader provider extension.
+ *
+ * @param provider The provider to add
+ */
+ public void addProvider(ContributionClassLoaderProvider provider){
+ providers.put(provider.getContributionType(), provider);
+ }
+
+ /**
+ * Remove a contribution classloader provider extension.
+ *
+ * @param provider The provider to remove
+ */
+ public void removeProvider(ContributionClassLoaderProvider provider){
+ providers.remove(provider.getContributionType());
+ }
+
+ /**
+ * Get a contribution classloader provider for the given contribution type.
+ * @param contributionType the lookup key
+ * @return The provider
+ */
+ public ContributionClassLoaderProvider getProvider(String contributionType){
+ loadProviders();
+ return providers.get(contributionType);
+ }
+
+ private synchronized void loadProviders() {
+ if (loaded)
+ return;
+
+ // Get the processor service declarations
+ Set<ServiceDeclaration> processorDeclarations;
+ try {
+ processorDeclarations = ServiceDiscovery.getInstance().getServiceDeclarations(ContributionClassLoaderProvider.class);
+ } catch (IOException e) {
+ throw new IllegalStateException(e);
+ }
+
+ for (ServiceDeclaration processorDeclaration: processorDeclarations) {
+ Map<String, String> attributes = processorDeclaration.getAttributes();
+
+ // Load a URL artifact processor
+ String contributionType = attributes.get("type");
+
+ // Create a processor wrapper and register it
+ ContributionClassLoaderProvider provider = new LazyContributionClassLoaderProvider(contributionType, processorDeclaration);
+ addProvider(provider);
+ }
+
+ loaded = true;
+ }
+
+ /**
+ * A facade for package processors.
+ */
+ private static class LazyContributionClassLoaderProvider implements ContributionClassLoaderProvider {
+
+ private ServiceDeclaration processorDeclaration;
+ private String contributionType;
+ private ContributionClassLoaderProvider provider;
+
+ private LazyContributionClassLoaderProvider(String contributionType, ServiceDeclaration processorDeclaration) {
+ this.processorDeclaration = processorDeclaration;
+ this.contributionType = contributionType;
+ }
+
+ public String getContributionType() {
+ return contributionType;
+ }
+
+ @SuppressWarnings("unchecked")
+ public ClassLoader getClassLoader(Contribution contribution, ClassLoader parent){
+ if (provider == null) {
+ try {
+ Class<ContributionClassLoaderProvider> providerClass = (Class<ContributionClassLoaderProvider>)processorDeclaration.loadClass();
+ Constructor<ContributionClassLoaderProvider> constructor = providerClass.getConstructor();
+ provider = constructor.newInstance();
+ } catch (Exception e) {
+ throw new IllegalStateException(e);
+ }
+ }
+ return provider.getClassLoader(contribution, parent);
+ }
+ }
+
+}
Propchange: tuscany/branches/sca-java-1.x/modules/contribution-java/src/main/java/org/apache/tuscany/sca/contribution/java/DefaultContributionClassloaderProviderExtensionPoint.java
------------------------------------------------------------------------------
svn:eol-style = native
Propchange: tuscany/branches/sca-java-1.x/modules/contribution-java/src/main/java/org/apache/tuscany/sca/contribution/java/DefaultContributionClassloaderProviderExtensionPoint.java
------------------------------------------------------------------------------
svn:keywords = Rev Date
Modified: tuscany/branches/sca-java-1.x/modules/contribution-java/src/main/java/org/apache/tuscany/sca/contribution/java/impl/ClassReferenceModelResolver.java
URL: http://svn.apache.org/viewvc/tuscany/branches/sca-java-1.x/modules/contribution-java/src/main/java/org/apache/tuscany/sca/contribution/java/impl/ClassReferenceModelResolver.java?rev=767015&r1=767014&r2=767015&view=diff
==============================================================================
--- tuscany/branches/sca-java-1.x/modules/contribution-java/src/main/java/org/apache/tuscany/sca/contribution/java/impl/ClassReferenceModelResolver.java (original)
+++ tuscany/branches/sca-java-1.x/modules/contribution-java/src/main/java/org/apache/tuscany/sca/contribution/java/impl/ClassReferenceModelResolver.java Tue Apr 21 06:45:30 2009
@@ -28,6 +28,7 @@
import org.apache.tuscany.sca.contribution.Contribution;
import org.apache.tuscany.sca.contribution.java.ContributionClassLoaderProvider;
+import org.apache.tuscany.sca.contribution.java.ContributionClassloaderProviderExtensionPoint;
import org.apache.tuscany.sca.contribution.java.DefaultContributionClassLoaderProvider;
import org.apache.tuscany.sca.contribution.resolver.ClassReference;
import org.apache.tuscany.sca.contribution.resolver.ModelResolver;
@@ -70,14 +71,16 @@
ClassLoader contextClassLoader = ServiceDiscovery.getInstance().getServiceDiscoverer().getClass().getClassLoader();
ContributionClassLoaderProvider provider = null;
try {
- provider =
- registry.getExtensionPoint(UtilityExtensionPoint.class)
- .getUtility(ContributionClassLoaderProvider.class);
+ ContributionClassloaderProviderExtensionPoint providers =
+ registry.getExtensionPoint(ContributionClassloaderProviderExtensionPoint.class);
+
+ provider = providers.getProvider(contribution.getType());
+
} catch (Throwable e) {
// Ignore errors
}
if (provider == null) {
- provider = new DefaultContributionClassLoaderProvider(registry);
+ provider = new DefaultContributionClassLoaderProvider();
}
cl = provider.getClassLoader(contribution, contextClassLoader);
contribution.setClassLoader(cl);
Added: tuscany/branches/sca-java-1.x/modules/contribution-java/src/main/resources/META-INF/services/org.apache.tuscany.sca.contribution.java.ContributionClassLoaderProvider
URL: http://svn.apache.org/viewvc/tuscany/branches/sca-java-1.x/modules/contribution-java/src/main/resources/META-INF/services/org.apache.tuscany.sca.contribution.java.ContributionClassLoaderProvider?rev=767015&view=auto
==============================================================================
--- tuscany/branches/sca-java-1.x/modules/contribution-java/src/main/resources/META-INF/services/org.apache.tuscany.sca.contribution.java.ContributionClassLoaderProvider (added)
+++ tuscany/branches/sca-java-1.x/modules/contribution-java/src/main/resources/META-INF/services/org.apache.tuscany.sca.contribution.java.ContributionClassLoaderProvider Tue Apr 21 06:45:30 2009
@@ -0,0 +1,21 @@
+# 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.java.DefaultContributionClassLoaderProvider;type=application/x-compressed
+org.apache.tuscany.sca.contribution.java.DefaultContributionClassLoaderProvider;type=application/vnd.tuscany.folder
+org.apache.tuscany.sca.contribution.java.DefaultContributionClassLoaderProvider;type=application/osgi.bundle
+
+
Added: tuscany/branches/sca-java-1.x/modules/contribution-java/src/main/resources/META-INF/services/org.apache.tuscany.sca.contribution.java.ContributionClassloaderProviderExtensionPoint
URL: http://svn.apache.org/viewvc/tuscany/branches/sca-java-1.x/modules/contribution-java/src/main/resources/META-INF/services/org.apache.tuscany.sca.contribution.java.ContributionClassloaderProviderExtensionPoint?rev=767015&view=auto
==============================================================================
--- tuscany/branches/sca-java-1.x/modules/contribution-java/src/main/resources/META-INF/services/org.apache.tuscany.sca.contribution.java.ContributionClassloaderProviderExtensionPoint (added)
+++ tuscany/branches/sca-java-1.x/modules/contribution-java/src/main/resources/META-INF/services/org.apache.tuscany.sca.contribution.java.ContributionClassloaderProviderExtensionPoint Tue Apr 21 06:45:30 2009
@@ -0,0 +1,18 @@
+# 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.java.DefaultContributionClassloaderProviderExtensionPoint
Added: tuscany/branches/sca-java-1.x/modules/contribution-jee-impl/src/main/java/org/apache/tuscany/sca/contribution/jee/impl/EARContributionClassLoader.java
URL: http://svn.apache.org/viewvc/tuscany/branches/sca-java-1.x/modules/contribution-jee-impl/src/main/java/org/apache/tuscany/sca/contribution/jee/impl/EARContributionClassLoader.java?rev=767015&view=auto
==============================================================================
--- tuscany/branches/sca-java-1.x/modules/contribution-jee-impl/src/main/java/org/apache/tuscany/sca/contribution/jee/impl/EARContributionClassLoader.java (added)
+++ tuscany/branches/sca-java-1.x/modules/contribution-jee-impl/src/main/java/org/apache/tuscany/sca/contribution/jee/impl/EARContributionClassLoader.java Tue Apr 21 06:45:30 2009
@@ -0,0 +1,201 @@
+/*
+ * 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.jee.impl;
+
+import java.io.IOException;
+import java.net.MalformedURLException;
+import java.net.URL;
+import java.net.URLClassLoader;
+import java.security.AccessController;
+import java.security.PrivilegedAction;
+import java.util.ArrayList;
+import java.util.Collection;
+import java.util.Collections;
+import java.util.Enumeration;
+import java.util.HashSet;
+import java.util.List;
+
+import org.apache.tuscany.sca.contribution.Artifact;
+import org.apache.tuscany.sca.contribution.Contribution;
+import org.apache.tuscany.sca.contribution.Export;
+import org.apache.tuscany.sca.contribution.Import;
+import org.apache.tuscany.sca.contribution.java.JavaImport;
+import org.apache.tuscany.sca.contribution.jee.EjbModuleInfo;
+import org.apache.tuscany.sca.contribution.jee.JavaEEApplicationInfo;
+import org.apache.tuscany.sca.contribution.jee.WebModuleInfo;
+
+
+public class EARContributionClassLoader extends URLClassLoader {
+
+ private Contribution contribution;
+ private List<EjbModuleInfo> ejbModules = new ArrayList<EjbModuleInfo>();
+
+ /**
+ * Constructor for contribution ClassLoader
+ *
+ * @param contribution
+ * @param parent
+ * @throws MalformedURLException
+ */
+ public EARContributionClassLoader(Contribution contribution, final ClassLoader parent) {
+ super(new URL[0], parent);
+
+ this.contribution = contribution;
+
+ // get the classloaders for any EAR archive that is a contribution
+ for (Artifact artifact : contribution.getArtifacts()){
+ if (artifact.getModel() instanceof JavaEEApplicationInfo){
+ JavaEEApplicationInfo jeeAppInfo = (JavaEEApplicationInfo)artifact.getModel();
+ // TODO - won't these all have the same classloader?
+ ejbModules.addAll(jeeAppInfo.getEjbModuleInfos().values());
+ }
+ }
+
+ }
+
+ /* (non-Javadoc)
+ * @see java.net.URLClassLoader#findClass(java.lang.String)
+ *
+ * Search path for class:
+ * This contribution
+ * Imported contributions
+ */
+ @Override
+ protected Class<?> findClass(String className) throws ClassNotFoundException {
+
+ Class<?> clazz = null;
+ ClassNotFoundException cne = null;
+
+ // TODO - Won't these classloaders all be the same?
+ for (EjbModuleInfo ejbModuleInfo : ejbModules){
+ try {
+ clazz = ejbModuleInfo.getModuleClassloader().loadClass(className);
+ } catch (ClassNotFoundException e) {
+ cne = e;
+ }
+
+ if (clazz != null){
+ break;
+ }
+ }
+
+ if (clazz == null){
+ throw cne;
+ }
+
+ return clazz;
+ }
+
+
+ /* (non-Javadoc)
+ * @see java.lang.ClassLoader#loadClass(java.lang.String, boolean)
+ *
+ * Search path for class:
+ * Parent ClassLoader
+ * This contribution
+ * Imported contributions
+ *
+ */
+ @Override
+ protected synchronized Class<?> loadClass(String className, boolean resolveClass)
+ throws ClassNotFoundException {
+
+ Class<?> clazz = null;
+ try {
+
+ if (this.getParent() != null)
+ clazz = this.getParent().loadClass(className);
+
+ } catch (ClassNotFoundException e) {
+ }
+
+ if (clazz == null)
+ clazz = findClass(className);
+
+
+ if (resolveClass)
+ this.resolveClass(clazz);
+ return clazz;
+
+ }
+
+
+
+ /* (non-Javadoc)
+ * @see java.lang.ClassLoader#getResource(java.lang.String)
+ *
+ * Find a resource.
+ * Search path for resource:
+ * Parent ClassLoader
+ * This contribution
+ */
+ @Override
+ public URL getResource(String resName) {
+
+ URL resource = null;
+
+ if (this.getParent() != null) {
+ resource = this.getParent().getResource(resName);
+ }
+ if (resource == null) {
+// TODO Which classloader?
+// resource = webModuleInfo.getModuleClassloader().getResource(resName);
+ }
+
+ return resource;
+ }
+
+
+ /* (non-Javadoc)
+ * @see java.lang.ClassLoader#getResources(java.lang.String)
+ *
+ * Return list of resources from this contribution, resources
+ * imported through imported contributions and resources from parent
+ * ClassLoader.
+ */
+ @Override
+ public Enumeration<URL> getResources(String resName) throws IOException {
+
+ HashSet<URL> resourceSet = new HashSet<URL>();
+
+// TODO - which classloader
+// addEnumerationToCollection(resourceSet, webModuleInfo.getModuleClassloader().getResources(resName));
+ addEnumerationToCollection(resourceSet, super.getResources(resName));
+
+ return Collections.enumeration(resourceSet);
+ }
+
+ /*
+ * Add an enumeration to a Collection
+ */
+ private <T extends Object> void addEnumerationToCollection(Collection<T> collection, Enumeration<T> enumeration) {
+
+ while (enumeration.hasMoreElements())
+ collection.add(enumeration.nextElement());
+ }
+
+
+ @Override
+ public String toString() {
+ return "SCA JEE ClassLoader, parent ClassLoader: " + getParent();
+ }
+
+
+}
Propchange: tuscany/branches/sca-java-1.x/modules/contribution-jee-impl/src/main/java/org/apache/tuscany/sca/contribution/jee/impl/EARContributionClassLoader.java
------------------------------------------------------------------------------
svn:eol-style = native
Propchange: tuscany/branches/sca-java-1.x/modules/contribution-jee-impl/src/main/java/org/apache/tuscany/sca/contribution/jee/impl/EARContributionClassLoader.java
------------------------------------------------------------------------------
svn:keywords = Rev Date
Added: tuscany/branches/sca-java-1.x/modules/contribution-jee-impl/src/main/java/org/apache/tuscany/sca/contribution/jee/impl/EARContributionClassLoaderProvider.java
URL: http://svn.apache.org/viewvc/tuscany/branches/sca-java-1.x/modules/contribution-jee-impl/src/main/java/org/apache/tuscany/sca/contribution/jee/impl/EARContributionClassLoaderProvider.java?rev=767015&view=auto
==============================================================================
--- tuscany/branches/sca-java-1.x/modules/contribution-jee-impl/src/main/java/org/apache/tuscany/sca/contribution/jee/impl/EARContributionClassLoaderProvider.java (added)
+++ tuscany/branches/sca-java-1.x/modules/contribution-jee-impl/src/main/java/org/apache/tuscany/sca/contribution/jee/impl/EARContributionClassLoaderProvider.java Tue Apr 21 06:45:30 2009
@@ -0,0 +1,49 @@
+/*
+ * 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.jee.impl;
+
+import org.apache.tuscany.sca.contribution.Contribution;
+import org.apache.tuscany.sca.contribution.PackageType;
+import org.apache.tuscany.sca.contribution.java.ContributionClassLoaderProvider;
+import org.apache.tuscany.sca.contribution.java.impl.ContributionClassLoader;
+import org.apache.tuscany.sca.core.ExtensionPointRegistry;
+
+/**
+ * The default implementation of the ContributionClassLoaderProvider
+ */
+public class EARContributionClassLoaderProvider implements ContributionClassLoaderProvider {
+
+ public EARContributionClassLoaderProvider() {
+ super();
+ }
+
+ public String getContributionType() {
+ return PackageType.EAR;
+ }
+
+ public ClassLoader getClassLoader(Contribution contribution, ClassLoader parent) {
+ // TODO - This is not quite right at the CCL will load up the nested jars
+ // also. However we do need to pick up the import processing so
+ // need a bit of a refactor
+ ContributionClassLoader ccl = new ContributionClassLoader(contribution, parent);
+ return new EARContributionClassLoader(contribution, ccl);
+ }
+
+}
Propchange: tuscany/branches/sca-java-1.x/modules/contribution-jee-impl/src/main/java/org/apache/tuscany/sca/contribution/jee/impl/EARContributionClassLoaderProvider.java
------------------------------------------------------------------------------
svn:eol-style = native
Propchange: tuscany/branches/sca-java-1.x/modules/contribution-jee-impl/src/main/java/org/apache/tuscany/sca/contribution/jee/impl/EARContributionClassLoaderProvider.java
------------------------------------------------------------------------------
svn:keywords = Rev Date
Added: tuscany/branches/sca-java-1.x/modules/contribution-jee-impl/src/main/java/org/apache/tuscany/sca/contribution/jee/impl/WARContributionClassLoader.java
URL: http://svn.apache.org/viewvc/tuscany/branches/sca-java-1.x/modules/contribution-jee-impl/src/main/java/org/apache/tuscany/sca/contribution/jee/impl/WARContributionClassLoader.java?rev=767015&view=auto
==============================================================================
--- tuscany/branches/sca-java-1.x/modules/contribution-jee-impl/src/main/java/org/apache/tuscany/sca/contribution/jee/impl/WARContributionClassLoader.java (added)
+++ tuscany/branches/sca-java-1.x/modules/contribution-jee-impl/src/main/java/org/apache/tuscany/sca/contribution/jee/impl/WARContributionClassLoader.java Tue Apr 21 06:45:30 2009
@@ -0,0 +1,191 @@
+/*
+ * 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.jee.impl;
+
+import java.io.IOException;
+import java.net.MalformedURLException;
+import java.net.URL;
+import java.net.URLClassLoader;
+import java.security.AccessController;
+import java.security.PrivilegedAction;
+import java.util.ArrayList;
+import java.util.Collection;
+import java.util.Collections;
+import java.util.Enumeration;
+import java.util.HashSet;
+import java.util.List;
+
+import org.apache.tuscany.sca.contribution.Artifact;
+import org.apache.tuscany.sca.contribution.Contribution;
+import org.apache.tuscany.sca.contribution.Export;
+import org.apache.tuscany.sca.contribution.Import;
+import org.apache.tuscany.sca.contribution.java.JavaImport;
+import org.apache.tuscany.sca.contribution.jee.EjbModuleInfo;
+import org.apache.tuscany.sca.contribution.jee.JavaEEApplicationInfo;
+import org.apache.tuscany.sca.contribution.jee.WebModuleInfo;
+
+
+public class WARContributionClassLoader extends URLClassLoader {
+
+ private Contribution contribution;
+ private WebModuleInfo webModuleInfo = null;
+
+ /**
+ * Constructor for contribution ClassLoader
+ *
+ * @param contribution
+ * @param parent
+ * @throws MalformedURLException
+ */
+ public WARContributionClassLoader(Contribution contribution, final ClassLoader parent) {
+ super(new URL[0], parent);
+
+ this.contribution = contribution;
+
+ // get the classloaders for any WAR archive that is a contribution
+ // TODO extend to case where JEE archive is outside the contribution
+ for (Artifact artifact : contribution.getArtifacts()){
+ if (artifact.getModel() instanceof WebModuleInfo){
+ webModuleInfo = (WebModuleInfo)artifact.getModel();
+ break;
+ }
+ }
+
+ }
+
+ /* (non-Javadoc)
+ * @see java.net.URLClassLoader#findClass(java.lang.String)
+ *
+ * Search path for class:
+ * This contribution
+ * Imported contributions
+ */
+ @Override
+ protected Class<?> findClass(String className) throws ClassNotFoundException {
+
+ Class<?> clazz = null;
+ ClassNotFoundException cne = null;
+
+ try {
+ clazz = webModuleInfo.getModuleClassloader().loadClass(className);
+ } catch (ClassNotFoundException e) {
+ cne = e;
+ }
+
+ if (clazz == null){
+ throw cne;
+ }
+
+ return clazz;
+ }
+
+
+ /* (non-Javadoc)
+ * @see java.lang.ClassLoader#loadClass(java.lang.String, boolean)
+ *
+ * Search path for class:
+ * Parent ClassLoader
+ * This contribution
+ * Imported contributions
+ *
+ */
+ @Override
+ protected synchronized Class<?> loadClass(String className, boolean resolveClass)
+ throws ClassNotFoundException {
+
+ Class<?> clazz = null;
+ try {
+
+ if (this.getParent() != null)
+ clazz = this.getParent().loadClass(className);
+
+ } catch (ClassNotFoundException e) {
+ }
+
+ if (clazz == null)
+ clazz = findClass(className);
+
+
+ if (resolveClass)
+ this.resolveClass(clazz);
+ return clazz;
+
+ }
+
+
+ /* (non-Javadoc)
+ * @see java.lang.ClassLoader#getResource(java.lang.String)
+ *
+ * Find a resource.
+ * Search path for resource:
+ * Parent ClassLoader
+ * This contribution
+ */
+ @Override
+ public URL getResource(String resName) {
+
+ URL resource = null;
+
+ if (this.getParent() != null) {
+ resource = this.getParent().getResource(resName);
+ }
+ if (resource == null)
+ resource = webModuleInfo.getModuleClassloader().getResource(resName);
+
+ return resource;
+ }
+
+
+ /* (non-Javadoc)
+ * @see java.lang.ClassLoader#getResources(java.lang.String)
+ *
+ * Return list of resources from this contribution, resources
+ * imported through imported contributions and resources from parent
+ * ClassLoader.
+ */
+ @Override
+ public Enumeration<URL> getResources(String resName) throws IOException {
+
+ HashSet<URL> resourceSet = new HashSet<URL>();
+
+ addEnumerationToCollection(resourceSet, webModuleInfo.getModuleClassloader().getResources(resName));
+ addEnumerationToCollection(resourceSet, super.getResources(resName));
+
+ return Collections.enumeration(resourceSet);
+ }
+
+
+ /*
+ * Add an enumeration to a Collection
+ */
+ private <T extends Object> void addEnumerationToCollection(Collection<T> collection, Enumeration<T> enumeration) {
+
+ while (enumeration.hasMoreElements())
+ collection.add(enumeration.nextElement());
+ }
+
+
+ @Override
+ public String toString() {
+ return "SCA WAR ClassLoader, parent ClassLoader: " + getParent();
+ }
+
+
+}
Propchange: tuscany/branches/sca-java-1.x/modules/contribution-jee-impl/src/main/java/org/apache/tuscany/sca/contribution/jee/impl/WARContributionClassLoader.java
------------------------------------------------------------------------------
svn:eol-style = native
Propchange: tuscany/branches/sca-java-1.x/modules/contribution-jee-impl/src/main/java/org/apache/tuscany/sca/contribution/jee/impl/WARContributionClassLoader.java
------------------------------------------------------------------------------
svn:keywords = Rev Date
Added: tuscany/branches/sca-java-1.x/modules/contribution-jee-impl/src/main/java/org/apache/tuscany/sca/contribution/jee/impl/WARContributionClassLoaderProvider.java
URL: http://svn.apache.org/viewvc/tuscany/branches/sca-java-1.x/modules/contribution-jee-impl/src/main/java/org/apache/tuscany/sca/contribution/jee/impl/WARContributionClassLoaderProvider.java?rev=767015&view=auto
==============================================================================
--- tuscany/branches/sca-java-1.x/modules/contribution-jee-impl/src/main/java/org/apache/tuscany/sca/contribution/jee/impl/WARContributionClassLoaderProvider.java (added)
+++ tuscany/branches/sca-java-1.x/modules/contribution-jee-impl/src/main/java/org/apache/tuscany/sca/contribution/jee/impl/WARContributionClassLoaderProvider.java Tue Apr 21 06:45:30 2009
@@ -0,0 +1,49 @@
+/*
+ * 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.jee.impl;
+
+import org.apache.tuscany.sca.contribution.Contribution;
+import org.apache.tuscany.sca.contribution.PackageType;
+import org.apache.tuscany.sca.contribution.java.ContributionClassLoaderProvider;
+import org.apache.tuscany.sca.contribution.java.impl.ContributionClassLoader;
+import org.apache.tuscany.sca.core.ExtensionPointRegistry;
+
+/**
+ * The default implementation of the ContributionClassLoaderProvider
+ */
+public class WARContributionClassLoaderProvider implements ContributionClassLoaderProvider {
+
+ public WARContributionClassLoaderProvider() {
+ super();
+ }
+
+ public String getContributionType() {
+ return PackageType.EAR;
+ }
+
+ public ClassLoader getClassLoader(Contribution contribution, ClassLoader parent) {
+ // TODO - This is not quite right at the CCL will load up the nested jars
+ // also. However we do need to pick up the import processing so
+ // need a bit of a refactor
+ ContributionClassLoader ccl = new ContributionClassLoader(contribution, parent);
+ return new WARContributionClassLoader(contribution, ccl);
+ }
+
+}
Propchange: tuscany/branches/sca-java-1.x/modules/contribution-jee-impl/src/main/java/org/apache/tuscany/sca/contribution/jee/impl/WARContributionClassLoaderProvider.java
------------------------------------------------------------------------------
svn:eol-style = native
Propchange: tuscany/branches/sca-java-1.x/modules/contribution-jee-impl/src/main/java/org/apache/tuscany/sca/contribution/jee/impl/WARContributionClassLoaderProvider.java
------------------------------------------------------------------------------
svn:keywords = Rev Date
Modified: tuscany/branches/sca-java-1.x/modules/contribution-jee-impl/src/main/resources/META-INF/services/org.apache.tuscany.sca.contribution.java.ContributionClassLoaderProvider
URL: http://svn.apache.org/viewvc/tuscany/branches/sca-java-1.x/modules/contribution-jee-impl/src/main/resources/META-INF/services/org.apache.tuscany.sca.contribution.java.ContributionClassLoaderProvider?rev=767015&r1=767014&r2=767015&view=diff
==============================================================================
--- tuscany/branches/sca-java-1.x/modules/contribution-jee-impl/src/main/resources/META-INF/services/org.apache.tuscany.sca.contribution.java.ContributionClassLoaderProvider (original)
+++ tuscany/branches/sca-java-1.x/modules/contribution-jee-impl/src/main/resources/META-INF/services/org.apache.tuscany.sca.contribution.java.ContributionClassLoaderProvider Tue Apr 21 06:45:30 2009
@@ -14,4 +14,5 @@
# KIND, either express or implied. See the License for the
# specific language governing permissions and limitations
# under the License.
-org.apache.tuscany.sca.contribution.jee.impl.JEEClassLoaderProvider
\ No newline at end of file
+org.apache.tuscany.sca.contribution.jee.impl.EJBContributionClassLoaderProvider;type=application/ear
+org.apache.tuscany.sca.contribution.jee.impl.WARContributionClassLoaderProvider;type=application/war
\ No newline at end of file
Modified: tuscany/branches/sca-java-1.x/modules/contribution/src/main/java/org/apache/tuscany/sca/contribution/Contribution.java
URL: http://svn.apache.org/viewvc/tuscany/branches/sca-java-1.x/modules/contribution/src/main/java/org/apache/tuscany/sca/contribution/Contribution.java?rev=767015&r1=767014&r2=767015&view=diff
==============================================================================
--- tuscany/branches/sca-java-1.x/modules/contribution/src/main/java/org/apache/tuscany/sca/contribution/Contribution.java (original)
+++ tuscany/branches/sca-java-1.x/modules/contribution/src/main/java/org/apache/tuscany/sca/contribution/Contribution.java Tue Apr 21 06:45:30 2009
@@ -113,4 +113,19 @@
*/
void setClassLoader(ClassLoader classLoader);
+ /**
+ * Returns the type string based on the types that appear in
+ * o.a.t.s.contribution.PackageType
+ *
+ * @return the contribution type string
+ */
+ String getType();
+
+ /**
+ * Sets the type string based on the types that appear in
+ * o.a.t.s.contribution.PackageType
+ *
+ * @param contributionType the contribution type string
+ */
+ void setType(String contributionType);
}
\ No newline at end of file
Modified: tuscany/branches/sca-java-1.x/modules/contribution/src/main/java/org/apache/tuscany/sca/contribution/impl/ContributionImpl.java
URL: http://svn.apache.org/viewvc/tuscany/branches/sca-java-1.x/modules/contribution/src/main/java/org/apache/tuscany/sca/contribution/impl/ContributionImpl.java?rev=767015&r1=767014&r2=767015&view=diff
==============================================================================
--- tuscany/branches/sca-java-1.x/modules/contribution/src/main/java/org/apache/tuscany/sca/contribution/impl/ContributionImpl.java (original)
+++ tuscany/branches/sca-java-1.x/modules/contribution/src/main/java/org/apache/tuscany/sca/contribution/impl/ContributionImpl.java Tue Apr 21 06:45:30 2009
@@ -35,6 +35,7 @@
* @version $Rev$ $Date$
*/
class ContributionImpl implements Contribution {
+ private String type;
private String uri;
private String location;
private Object model;
@@ -150,5 +151,13 @@
return "Contribution : " + uri + " \n" +
"from: " + location;
}
+
+ public String getType() {
+ return type;
+ }
+
+ public void setType(String contributionType) {
+ this.type = contributionType;
+ }
}
Modified: tuscany/branches/sca-java-1.x/modules/workspace/src/main/java/org/apache/tuscany/sca/workspace/impl/WorkspaceImpl.java
URL: http://svn.apache.org/viewvc/tuscany/branches/sca-java-1.x/modules/workspace/src/main/java/org/apache/tuscany/sca/workspace/impl/WorkspaceImpl.java?rev=767015&r1=767014&r2=767015&view=diff
==============================================================================
--- tuscany/branches/sca-java-1.x/modules/workspace/src/main/java/org/apache/tuscany/sca/workspace/impl/WorkspaceImpl.java (original)
+++ tuscany/branches/sca-java-1.x/modules/workspace/src/main/java/org/apache/tuscany/sca/workspace/impl/WorkspaceImpl.java Tue Apr 21 06:45:30 2009
@@ -139,4 +139,13 @@
public void setModelResolver(ModelResolver modelResolver) {
this.modelResolver = modelResolver;
}
+
+ public String getType() {
+ // TODO type only used to determine contribution classloader
+ return null;
+ }
+
+ public void setType(String contributionType) {
+ // TODO type only used to determine contribution classloader
+ }
}