Author: almaw
Date: Tue Jun  5 10:08:48 2007
New Revision: 544556

URL: http://svn.apache.org/viewvc?view=rev&rev=544556
Log:
Fix for lazy-init.

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

Modified: 
incubator/wicket/trunk/jdk-1.4/wicket/src/main/java/org/apache/wicket/SharedResources.java
URL: 
http://svn.apache.org/viewvc/incubator/wicket/trunk/jdk-1.4/wicket/src/main/java/org/apache/wicket/SharedResources.java?view=diff&rev=544556&r1=544555&r2=544556
==============================================================================
--- 
incubator/wicket/trunk/jdk-1.4/wicket/src/main/java/org/apache/wicket/SharedResources.java
 (original)
+++ 
incubator/wicket/trunk/jdk-1.4/wicket/src/main/java/org/apache/wicket/SharedResources.java
 Tue Jun  5 10:08:48 2007
@@ -16,9 +16,11 @@
  */
 package org.apache.wicket;
 
+import java.lang.ref.WeakReference;
 import java.util.HashMap;
 import java.util.Locale;
 import java.util.Map;
+import java.util.WeakHashMap;
 
 import org.apache.wicket.util.file.Files;
 import org.apache.wicket.util.string.AppendingStringBuffer;
@@ -92,11 +94,13 @@
        }
 
        /** Map of Class to alias String */
-       private final Map classAliasMap = new HashMap();
-       private final Map aliasClassMap = new HashMap();
+       private final Map/*<Class, String>*/ classAliasMap = new WeakHashMap();
+       
+       /** Map of alias String to WeakReference(Class) */
+       private final Map/*<String, WeakReference<Class>>*/ aliasClassMap = new 
HashMap();
 
        /** Map of shared resources states */
-       private final Map resourceMap = new HashMap();
+       private final Map/*<String, Resource>*/ resourceMap = new HashMap();
 
        /**
         * Construct.
@@ -265,7 +269,7 @@
        public final void putClassAlias(Class clz, String alias)
        {
                classAliasMap.put(clz, alias);
-               aliasClassMap.put(alias, clz);
+               aliasClassMap.put(alias, new WeakReference(clz));
        }
        
        /**
@@ -277,7 +281,12 @@
         */
        public final Class getAliasClass(String alias)
        {
-               return (Class)aliasClassMap.get(alias);
+               Object classRef = aliasClassMap.get(alias);
+               if (classRef == null)
+               {
+                       return null;
+               }
+               return (Class)((WeakReference)classRef).get();
        }
 
        /**


Reply via email to