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;
}