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 2010/04/13 20:50:45 UTC

svn commit: r933740 - /tuscany/sca-java-2.x/trunk/modules/contribution/src/main/java/org/apache/tuscany/sca/contribution/java/impl/ClassLoaderModelResolver.java

Author: slaws
Date: Tue Apr 13 18:50:44 2010
New Revision: 933740

URL: http://svn.apache.org/viewvc?rev=933740&view=rev
Log:
TUSCANY-3533 - break the loop of CLMR through contribution to the components an the implementations themselves that are loaded by CLMR

Modified:
    tuscany/sca-java-2.x/trunk/modules/contribution/src/main/java/org/apache/tuscany/sca/contribution/java/impl/ClassLoaderModelResolver.java

Modified: tuscany/sca-java-2.x/trunk/modules/contribution/src/main/java/org/apache/tuscany/sca/contribution/java/impl/ClassLoaderModelResolver.java
URL: http://svn.apache.org/viewvc/tuscany/sca-java-2.x/trunk/modules/contribution/src/main/java/org/apache/tuscany/sca/contribution/java/impl/ClassLoaderModelResolver.java?rev=933740&r1=933739&r2=933740&view=diff
==============================================================================
--- tuscany/sca-java-2.x/trunk/modules/contribution/src/main/java/org/apache/tuscany/sca/contribution/java/impl/ClassLoaderModelResolver.java (original)
+++ tuscany/sca-java-2.x/trunk/modules/contribution/src/main/java/org/apache/tuscany/sca/contribution/java/impl/ClassLoaderModelResolver.java Tue Apr 13 18:50:44 2010
@@ -20,6 +20,7 @@
 package org.apache.tuscany.sca.contribution.java.impl;
 
 import java.io.IOException;
+import java.lang.ref.WeakReference;
 import java.net.URL;
 import java.net.URLClassLoader;
 import java.util.ArrayList;
@@ -45,7 +46,7 @@ import org.apache.tuscany.sca.extensibil
  * @version $Rev$ $Date$
  */
 public class ClassLoaderModelResolver extends URLClassLoader implements ModelResolver {
-    private Contribution contribution;
+    private WeakReference<Contribution> contribution;
     private ProcessorContext context;
     private Map<String, ModelResolver> importResolvers = new HashMap<String, ModelResolver>();
 
@@ -70,10 +71,10 @@ public class ClassLoaderModelResolver ex
 
     public ClassLoaderModelResolver(final Contribution contribution, FactoryExtensionPoint modelFactories) throws IOException {
         super(getContributionURLs(contribution), parentClassLoader(contribution));
-        this.contribution = contribution;
+        this.contribution = new WeakReference<Contribution>(contribution);
         // Index Java import resolvers by package name
         Map<String, List<ModelResolver>> resolverMap = new HashMap<String, List<ModelResolver>>();
-        for (Import import_: this.contribution.getImports()) {
+        for (Import import_: this.contribution.get().getImports()) {
             if (import_ instanceof JavaImport) {
                 JavaImport javaImport = (JavaImport)import_;
                 List<ModelResolver> resolvers = resolverMap.get(javaImport.getPackage());