Author: almaw
Date: Tue Jun  5 05:00:17 2007
New Revision: 544458

URL: http://svn.apache.org/viewvc?view=rev&rev=544458
Log:
Weak references for scopes, so we can be garbage collected on redeploy.

Modified:
    
incubator/wicket/trunk/jdk-1.4/wicket/src/main/java/org/apache/wicket/ResourceReference.java

Modified: 
incubator/wicket/trunk/jdk-1.4/wicket/src/main/java/org/apache/wicket/ResourceReference.java
URL: 
http://svn.apache.org/viewvc/incubator/wicket/trunk/jdk-1.4/wicket/src/main/java/org/apache/wicket/ResourceReference.java?view=diff&rev=544458&r1=544457&r2=544458
==============================================================================
--- 
incubator/wicket/trunk/jdk-1.4/wicket/src/main/java/org/apache/wicket/ResourceReference.java
 (original)
+++ 
incubator/wicket/trunk/jdk-1.4/wicket/src/main/java/org/apache/wicket/ResourceReference.java
 Tue Jun  5 05:00:17 2007
@@ -16,6 +16,7 @@
  */
 package org.apache.wicket;
 
+import java.lang.ref.WeakReference;
 import java.util.Locale;
 
 import org.apache.wicket.markup.html.PackageResource;
@@ -66,7 +67,7 @@
        private transient Resource resource;
 
        /** The scope of the named resource */
-       private final Class scope;
+       private final WeakReference scope;
 
        /** The style of the resource */
        private String style;
@@ -105,7 +106,7 @@
         */
        public ResourceReference(final Class scope, final String name, Locale 
locale, String style)
        {
-               this.scope = scope;
+               this.scope = new WeakReference(scope);
                this.name = name;
                this.locale = locale;
                this.style = style;
@@ -138,7 +139,7 @@
                {
                        SharedResources sharedResources = 
application.getSharedResources();
                        // Try to get resource from Application repository
-                       resource = sharedResources.get(scope, name, locale, 
style, true);
+                       resource = sharedResources.get(getScope(), name, 
locale, style, true);
 
                        // Not available yet?
                        if (resource == null)
@@ -149,13 +150,13 @@
                                {
                                        // If lazy-init did not create resource 
with correct locale
                                        // and style then we should default the 
resource
-                                       resource = sharedResources.get(scope, 
name, locale, style, false);
+                                       resource = 
sharedResources.get(getScope(), name, locale, style, false);
                                        if (resource == null)
                                        {
                                                // still null? try to see 
whether it is a package
                                                // resource that should
                                                // be lazily loaded
-                                               PackageResource packageResource 
= PackageResource.get(scope, name);
+                                               PackageResource packageResource 
= PackageResource.get(getScope(), name);
                                                // will throw an exception if 
not found, so if we come
                                                // here, it was found
                                                sharedResources.add(name, 
packageResource);
@@ -163,7 +164,7 @@
                                }
 
                                // Share through application
-                               sharedResources.add(scope, name, locale, style, 
resource);
+                               sharedResources.add(getScope(), name, locale, 
style, resource);
                        }
                }
        }
@@ -176,7 +177,7 @@
                if (obj instanceof ResourceReference)
                {
                        ResourceReference that = (ResourceReference)obj;
-                       return Objects.equal(this.scope.getName(), 
that.scope.getName()) && Objects.equal(this.name, that.name)
+                       return Objects.equal(this.getScope().getName(), 
that.getScope().getName()) && Objects.equal(this.name, that.name)
                                        && Objects.equal(this.locale, 
that.locale)
                                        && Objects.equal(this.style, 
that.style);
                }
@@ -217,7 +218,7 @@
         */
        public final Class getScope()
        {
-               return scope;
+               return (Class)scope.get();
        }
 
        /**
@@ -227,7 +228,7 @@
        {
                Application application = Application.get();
                bind(application);
-               return application.getSharedResources().resourceKey(scope, 
name, locale, style);
+               return application.getSharedResources().resourceKey(getScope(), 
name, locale, style);
        }
 
        /**


Reply via email to