public final V put()

in src/main/java/org/apache/commons/ognl/internal/ClassCacheImpl.java [99:148]


    public final V put( Class<?> key, V value )
    {
        if ( classInspector != null && !classInspector.shouldCache( key ) )
        {
            return value;
        }

        V result = null;
        int i = key.hashCode() & TABLE_SIZE_MASK;

        Entry<Class<?>, V> entry = table[i];

        if ( entry == null )
        {
            table[i] = new Entry<Class<?>, V>( key, value );
            size++;
        }
        else
        {
            if ( key == entry.getKey() )
            {
                result = entry.getValue();
                entry.setValue( value );
            }
            else
            {
                while ( true )
                {
                    if ( key == entry.getKey() )
                    {
                        /* replace value */
                        result = entry.getValue();
                        entry.setValue( value );
                        break;
                    }

                    if ( entry.getNext() == null )
                    {
                        /* add value */
                        entry.setNext( new Entry<Class<?>, V>( key, value ) );
                        break;
                    }

                    entry = entry.getNext();
                }
            }
        }

        return result;
    }