You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@commons.apache.org by si...@apache.org on 2011/05/22 18:55:41 UTC

svn commit: r1126081 - in /incubator/ognl/trunk/src/main/java/org/apache/commons/ognl/internal: ClassCache.java ClassCacheImpl.java Entry.java

Author: simonetripodi
Date: Sun May 22 16:55:40 2011
New Revision: 1126081

URL: http://svn.apache.org/viewvc?rev=1126081&view=rev
Log:
fixed ClassCache behavior, type doesn't drive the cached object

Modified:
    incubator/ognl/trunk/src/main/java/org/apache/commons/ognl/internal/ClassCache.java
    incubator/ognl/trunk/src/main/java/org/apache/commons/ognl/internal/ClassCacheImpl.java
    incubator/ognl/trunk/src/main/java/org/apache/commons/ognl/internal/Entry.java

Modified: incubator/ognl/trunk/src/main/java/org/apache/commons/ognl/internal/ClassCache.java
URL: http://svn.apache.org/viewvc/incubator/ognl/trunk/src/main/java/org/apache/commons/ognl/internal/ClassCache.java?rev=1126081&r1=1126080&r2=1126081&view=diff
==============================================================================
--- incubator/ognl/trunk/src/main/java/org/apache/commons/ognl/internal/ClassCache.java (original)
+++ incubator/ognl/trunk/src/main/java/org/apache/commons/ognl/internal/ClassCache.java Sun May 22 16:55:40 2011
@@ -33,7 +33,7 @@ public interface ClassCache
 
     int getSize();
 
-    <T> T get( Class<T> key );
+    <T> T get( Class<?> key );
 
-    <T> T put( Class<T> key, T value );
+    <T> T put( Class<?> key, T value );
 }

Modified: incubator/ognl/trunk/src/main/java/org/apache/commons/ognl/internal/ClassCacheImpl.java
URL: http://svn.apache.org/viewvc/incubator/ognl/trunk/src/main/java/org/apache/commons/ognl/internal/ClassCacheImpl.java?rev=1126081&r1=1126080&r2=1126081&view=diff
==============================================================================
--- incubator/ognl/trunk/src/main/java/org/apache/commons/ognl/internal/ClassCacheImpl.java (original)
+++ incubator/ognl/trunk/src/main/java/org/apache/commons/ognl/internal/ClassCacheImpl.java Sun May 22 16:55:40 2011
@@ -79,32 +79,31 @@ public class ClassCacheImpl
     /**
      * {@inheritDoc}
      */
-    public final <T> T get( Class<T> key )
+    public final <T> T get( Class<?> key )
     {
-        T result = null;
         int i = key.hashCode() & TABLE_SIZE_MASK;
 
-        @SuppressWarnings( "unchecked" ) // entry type is driven by the class
-        Entry<T> entry = (Entry<T>) _table[i];
+        Entry<?> entry = _table[i];
 
         while ( entry != null )
         {
             if ( key == entry.getKey() )
             {
-                result = entry.getValue();
-                break;
+                @SuppressWarnings( "unchecked" ) // guaranteed by key == entry.getKey()
+                T result = (T) entry.getValue();
+                return result;
             }
 
             entry = entry.getNext();
         }
 
-        return result;
+        return null;
     }
 
     /**
      * {@inheritDoc}
      */
-    public final <T> T put( Class<T> key, T value )
+    public final <T> T put( Class<?> key, T value )
     {
         if ( _classInspector != null && !_classInspector.shouldCache( key ) )
         {
@@ -114,8 +113,7 @@ public class ClassCacheImpl
         T result = null;
         int i = key.hashCode() & TABLE_SIZE_MASK;
 
-        @SuppressWarnings( "unchecked" ) // entry type is driven by the class
-        Entry<T> entry = (Entry<T>) _table[i];
+        Entry<?> entry = _table[i];
 
         if ( entry == null )
         {
@@ -126,8 +124,10 @@ public class ClassCacheImpl
         {
             if ( key == entry.getKey() )
             {
-                result = entry.getValue();
-                entry.setValue( value );
+                @SuppressWarnings( "unchecked" ) // guaranteed by key == entry.getKey()
+                Entry<T> current = (Entry<T>) entry;
+                result = current.getValue();
+                current.setValue( value );
             }
             else
             {
@@ -136,8 +136,10 @@ public class ClassCacheImpl
                     if ( key == entry.getKey() )
                     {
                         /* replace value */
-                        result = entry.getValue();
-                        entry.setValue( value );
+                        @SuppressWarnings( "unchecked" ) // guaranteed by key == entry.getKey()
+                        Entry<T> current = (Entry<T>) entry;
+                        result = current.getValue();
+                        current.setValue( value );
                         break;
                     }
 

Modified: incubator/ognl/trunk/src/main/java/org/apache/commons/ognl/internal/Entry.java
URL: http://svn.apache.org/viewvc/incubator/ognl/trunk/src/main/java/org/apache/commons/ognl/internal/Entry.java?rev=1126081&r1=1126080&r2=1126081&view=diff
==============================================================================
--- incubator/ognl/trunk/src/main/java/org/apache/commons/ognl/internal/Entry.java (original)
+++ incubator/ognl/trunk/src/main/java/org/apache/commons/ognl/internal/Entry.java Sun May 22 16:55:40 2011
@@ -25,19 +25,19 @@ package org.apache.commons.ognl.internal
 final class Entry<T>
 {
 
-    private Entry<T> next;
+    private Entry<?> next;
 
-    private final Class<T> key;
+    private final Class<?> key;
 
     private T value;
 
-    public Entry( Class<T> key, T value )
+    public Entry( Class<?> key, T value )
     {
         this.key = key;
         this.value = value;
     }
 
-    public Class<T> getKey()
+    public Class<?> getKey()
     {
         return key;
     }
@@ -52,12 +52,12 @@ final class Entry<T>
         this.value = value;
     }
 
-    public Entry<T> getNext()
+    public Entry<?> getNext()
     {
         return next;
     }
 
-    public void setNext( Entry<T> next )
+    public void setNext( Entry<?> next )
     {
         this.next = next;
     }