Author: bperroud
Date: Sat Feb 25 10:32:17 2012
New Revision: 1293572

URL: http://svn.apache.org/viewvc?rev=1293572&view=rev
Log:
DIRECTMEMORY-72 : Pointer to become an interface, public attribute to be 
encapsulated and PointerImpl the default implementation

Added:
    
incubator/directmemory/trunk/directmemory-cache/src/main/java/org/apache/directmemory/memory/PointerImpl.java
Modified:
    
incubator/directmemory/trunk/directmemory-cache/src/main/java/org/apache/directmemory/cache/CacheServiceImpl.java
    
incubator/directmemory/trunk/directmemory-cache/src/main/java/org/apache/directmemory/memory/AbstractOffHeapMemoryBuffer.java
    
incubator/directmemory/trunk/directmemory-cache/src/main/java/org/apache/directmemory/memory/MemoryManagerServiceImpl.java
    
incubator/directmemory/trunk/directmemory-cache/src/main/java/org/apache/directmemory/memory/OffHeapMemoryBufferImpl.java
    
incubator/directmemory/trunk/directmemory-cache/src/main/java/org/apache/directmemory/memory/OffHeapMergingMemoryBufferImpl.java
    
incubator/directmemory/trunk/directmemory-cache/src/main/java/org/apache/directmemory/memory/Pointer.java
    
incubator/directmemory/trunk/directmemory-cache/src/test/java/org/apache/directmemory/memory/AbstractOffHeapMemoryBufferTest.java
    
incubator/directmemory/trunk/directmemory-cache/src/test/java/org/apache/directmemory/memory/BaseTest.java
    
incubator/directmemory/trunk/directmemory-cache/src/test/java/org/apache/directmemory/memory/MemoryManagerServiceImplWithMerginOHMBAndAllocationPolicyTest.java
    
incubator/directmemory/trunk/directmemory-cache/src/test/java/org/apache/directmemory/memory/MemoryManagerServiceImplWithMerginOHMBTest.java
    
incubator/directmemory/trunk/directmemory-cache/src/test/java/org/apache/directmemory/memory/MemoryManagerTest.java
    
incubator/directmemory/trunk/directmemory-cache/src/test/java/org/apache/directmemory/memory/NIOTest.java
    
incubator/directmemory/trunk/integrations/ehcache/src/main/java/org/apache/directmemory/ehcache/DirectMemoryStore.java

Modified: 
incubator/directmemory/trunk/directmemory-cache/src/main/java/org/apache/directmemory/cache/CacheServiceImpl.java
URL: 
http://svn.apache.org/viewvc/incubator/directmemory/trunk/directmemory-cache/src/main/java/org/apache/directmemory/cache/CacheServiceImpl.java?rev=1293572&r1=1293571&r2=1293572&view=diff
==============================================================================
--- 
incubator/directmemory/trunk/directmemory-cache/src/main/java/org/apache/directmemory/cache/CacheServiceImpl.java
 (original)
+++ 
incubator/directmemory/trunk/directmemory-cache/src/main/java/org/apache/directmemory/cache/CacheServiceImpl.java
 Sat Feb 25 10:32:17 2012
@@ -146,7 +146,7 @@ public class CacheServiceImpl<K, V>
             @SuppressWarnings( "unchecked" ) // type driven by the compiler
             Class<? extends V> clazz = (Class<? extends V>) value.getClass();
 
-            ptr.clazz = clazz;
+            ptr.setClazz( clazz );
             return ptr;
         }
         catch ( IOException e )
@@ -187,10 +187,10 @@ public class CacheServiceImpl<K, V>
         {
             return null;
         }
-        if ( ptr.expired() || ptr.free )
+        if ( ptr.isExpired() || ptr.isFree() )
         {
             map.remove( key );
-            if ( !ptr.free )
+            if ( !ptr.isFree() )
             {
                 memoryManager.free( ptr );
             }
@@ -210,10 +210,10 @@ public class CacheServiceImpl<K, V>
         {
             return null;
         }
-        if ( ptr.expired() || ptr.free )
+        if ( ptr.isExpired() || ptr.isFree() )
         {
             map.remove( key );
-            if ( !ptr.free )
+            if ( !ptr.isFree() )
             {
                 memoryManager.free( ptr );
             }
@@ -223,7 +223,7 @@ public class CacheServiceImpl<K, V>
         {
             try
             {
-                return serializer.deserialize( memoryManager.retrieve( ptr ), 
ptr.clazz );
+                return serializer.deserialize( memoryManager.retrieve( ptr ), 
ptr.getClazz() );
             }
             catch ( EOFException e )
             {
@@ -385,7 +385,7 @@ public class CacheServiceImpl<K, V>
     {
         Pointer<V> ptr = memoryManager.allocate( type, size, -1, -1 );
         map.put( key, ptr );
-        ptr.clazz = type;
+        ptr.setClazz( type );
         return ptr;
     }
 }

Modified: 
incubator/directmemory/trunk/directmemory-cache/src/main/java/org/apache/directmemory/memory/AbstractOffHeapMemoryBuffer.java
URL: 
http://svn.apache.org/viewvc/incubator/directmemory/trunk/directmemory-cache/src/main/java/org/apache/directmemory/memory/AbstractOffHeapMemoryBuffer.java?rev=1293572&r1=1293571&r2=1293572&view=diff
==============================================================================
--- 
incubator/directmemory/trunk/directmemory-cache/src/main/java/org/apache/directmemory/memory/AbstractOffHeapMemoryBuffer.java
 (original)
+++ 
incubator/directmemory/trunk/directmemory-cache/src/main/java/org/apache/directmemory/memory/AbstractOffHeapMemoryBuffer.java
 Sat Feb 25 10:32:17 2012
@@ -56,9 +56,8 @@ public abstract class AbstractOffHeapMem
         @Override
         public boolean apply( Pointer<T> input )
         {
-            return !input.free
-                            && input.expiresIn > 0
-                            && ( input.expiresIn + input.created ) <= 
System.currentTimeMillis();
+            return !input.isFree()
+                            && !input.isExpired();
         }
 
     };
@@ -69,9 +68,8 @@ public abstract class AbstractOffHeapMem
         @Override
         public boolean apply( Pointer<T> input )
         {
-            return !input.free
-                            && input.expires > 0
-                            && input.expires <= System.currentTimeMillis();
+            return !input.isFree()
+                            && !input.isExpired();
         }
 
     };
@@ -107,13 +105,7 @@ public abstract class AbstractOffHeapMem
 
     protected void freePointer( Pointer<T> pointer2free )
     {
-        pointer2free.free = true;
-        pointer2free.created = 0;
-        pointer2free.lastHit = 0;
-        pointer2free.hits = 0;
-        pointer2free.expiresIn = 0;
-        pointer2free.clazz = null;
-        pointer2free.directBuffer = null;
+        pointer2free.reset();
         used.addAndGet( -pointer2free.getCapacity() );
     }
 
@@ -197,7 +189,7 @@ public abstract class AbstractOffHeapMem
             @Override
             public boolean apply( Pointer<T> input )
             {
-                return !input.free;
+                return !input.isFree();
             }
 
         } ), limit ) );
@@ -222,27 +214,18 @@ public abstract class AbstractOffHeapMem
 
     protected void resetPointer( final Pointer<T> pointer )
     {
-        pointer.free = true;
-        pointer.created = 0;
-        pointer.lastHit = 0;
-        pointer.hits = 0;
-        pointer.expiresIn = 0;
-        pointer.clazz = null;
-        pointer.directBuffer = null;
+        pointer.reset();
     }
 
     protected void setExpiration( final Pointer<T> pointer, long expiresIn, 
long expires )
     {
-
         if ( expiresIn > 0 )
         {
-            pointer.expiresIn = expiresIn;
-            pointer.expires = 0;
+            pointer.setExpiration( 0, expiresIn );
         }
         else if ( expires > 0 )
         {
-            pointer.expiresIn = 0;
-            pointer.expires = expires;
+            pointer.setExpiration( expires, 0 );
         }
     }
 

Modified: 
incubator/directmemory/trunk/directmemory-cache/src/main/java/org/apache/directmemory/memory/MemoryManagerServiceImpl.java
URL: 
http://svn.apache.org/viewvc/incubator/directmemory/trunk/directmemory-cache/src/main/java/org/apache/directmemory/memory/MemoryManagerServiceImpl.java?rev=1293572&r1=1293571&r2=1293572&view=diff
==============================================================================
--- 
incubator/directmemory/trunk/directmemory-cache/src/main/java/org/apache/directmemory/memory/MemoryManagerServiceImpl.java
 (original)
+++ 
incubator/directmemory/trunk/directmemory-cache/src/main/java/org/apache/directmemory/memory/MemoryManagerServiceImpl.java
 Sat Feb 25 10:32:17 2012
@@ -83,17 +83,17 @@ public class MemoryManagerServiceImpl<V>
 
     public Pointer<V> update( Pointer<V> pointer, byte[] payload )
     {
-        return buffers.get( pointer.bufferNumber ).update( pointer, payload );
+        return buffers.get( pointer.getBufferNumber() ).update( pointer, 
payload );
     }
 
     public byte[] retrieve( Pointer<V> pointer )
     {
-        return buffers.get( pointer.bufferNumber ).retrieve( pointer );
+        return buffers.get( pointer.getBufferNumber() ).retrieve( pointer );
     }
 
     public void free( Pointer<V> pointer )
     {
-        buffers.get( pointer.bufferNumber ).free( pointer );
+        buffers.get( pointer.getBufferNumber() ).free( pointer );
     }
 
     public void clear()

Modified: 
incubator/directmemory/trunk/directmemory-cache/src/main/java/org/apache/directmemory/memory/OffHeapMemoryBufferImpl.java
URL: 
http://svn.apache.org/viewvc/incubator/directmemory/trunk/directmemory-cache/src/main/java/org/apache/directmemory/memory/OffHeapMemoryBufferImpl.java?rev=1293572&r1=1293571&r2=1293572&view=diff
==============================================================================
--- 
incubator/directmemory/trunk/directmemory-cache/src/main/java/org/apache/directmemory/memory/OffHeapMemoryBufferImpl.java
 (original)
+++ 
incubator/directmemory/trunk/directmemory-cache/src/main/java/org/apache/directmemory/memory/OffHeapMemoryBufferImpl.java
 Sat Feb 25 10:32:17 2012
@@ -76,7 +76,7 @@ public class OffHeapMemoryBufferImpl<T>
 
     protected Pointer<T> createAndAddFirstPointer()
     {
-        Pointer<T> first = new Pointer<T>();
+        PointerImpl<T> first = new PointerImpl<T>();
         first.bufferNumber = bufferNumber;
         first.start = 0;
         first.free = true;
@@ -87,12 +87,12 @@ public class OffHeapMemoryBufferImpl<T>
 
     protected Pointer<T> slice( Pointer<T> existing, int capacity )
     {
-        Pointer<T> fresh = new Pointer<T>();
-        fresh.bufferNumber = existing.bufferNumber;
-        fresh.start = existing.start;
+        PointerImpl<T> fresh = new PointerImpl<T>();
+        fresh.bufferNumber = existing.getBufferNumber();
+        fresh.start = existing.getStart();
         fresh.end = fresh.start + capacity - 1; // 0 indexed
         fresh.free = true;
-        existing.start = fresh.end + 1; // more readable
+        existing.setStart( fresh.end + 1 ); // more readable
         return fresh;
     }
 
@@ -100,7 +100,7 @@ public class OffHeapMemoryBufferImpl<T>
     {
         for ( Pointer<T> ptr : pointers )
         {
-            if ( ptr.free && ptr.getCapacity() >= capacity )
+            if ( ptr.isFree() && ptr.getCapacity() >= capacity )
             {
                 return ptr;
             }
@@ -115,13 +115,12 @@ public class OffHeapMemoryBufferImpl<T>
 
     public byte[] retrieve( Pointer<T> pointer )
     {
-        pointer.lastHit = System.currentTimeMillis();
-        pointer.hits++;
-
+        pointer.hit();
+        
         ByteBuffer buf = null;
-        if ( pointer.clazz == ByteBuffer.class )
+        if ( pointer.getClazz() == ByteBuffer.class )
         {
-            buf = pointer.directBuffer;
+            buf = pointer.getDirectBuffer();
             buf.position( 0 );
         }
         else
@@ -129,7 +128,7 @@ public class OffHeapMemoryBufferImpl<T>
             synchronized ( buffer )
             {
                 buf = buffer.duplicate();
-                buf.position( pointer.start );
+                buf.position( pointer.getStart() );
             }
         }
 
@@ -149,7 +148,7 @@ public class OffHeapMemoryBufferImpl<T>
     {
         for (final Pointer<T> pointer : pointers)
         {
-            pointer.free = true;
+            pointer.setFree( true );
         }
         allocationErrors = 0;
         pointers.clear();
@@ -180,13 +179,13 @@ public class OffHeapMemoryBufferImpl<T>
 
         Pointer<T> fresh = slice( goodOne, payload.length );
 
-        fresh.created = System.currentTimeMillis();
+        fresh.createdNow();
         setExpiration( fresh, expiresIn, expires );
 
-        fresh.free = false;
+        fresh.setFree( false );
         used.addAndGet( payload.length );
         ByteBuffer buf = buffer.slice();
-        buf.position( fresh.start );
+        buf.position( fresh.getStart() );
         try
         {
             buf.put( payload );
@@ -194,8 +193,8 @@ public class OffHeapMemoryBufferImpl<T>
         catch ( BufferOverflowException e )
         {
             // RpG not convincing - let's fix it later
-            goodOne.start = fresh.start;
-            goodOne.end = buffer.limit();
+            goodOne.setStart( fresh.getStart() );
+            goodOne.setEnd( buffer.limit() );
             return null;
         }
         pointers.add( fresh );
@@ -234,17 +233,17 @@ public class OffHeapMemoryBufferImpl<T>
 
         Pointer<T> fresh = slice( goodOne, size );
 
-        fresh.created = System.currentTimeMillis();
+        fresh.createdNow();
         setExpiration( fresh, expiresIn, expires );
 
-        fresh.free = false;
+        fresh.setFree( false );
         used.addAndGet( size );
         ByteBuffer buf = buffer.slice();
-        buf.limit( fresh.start + size );
-        buf.position( fresh.start );
+        buf.limit( fresh.getStart() + size );
+        buf.position( fresh.getStart() );
 
-        fresh.directBuffer = buf.slice();
-        fresh.clazz = type;
+        fresh.setDirectBuffer( buf.slice() );
+        fresh.setClazz( type );
         pointers.add( fresh );
         return fresh;
     }

Modified: 
incubator/directmemory/trunk/directmemory-cache/src/main/java/org/apache/directmemory/memory/OffHeapMergingMemoryBufferImpl.java
URL: 
http://svn.apache.org/viewvc/incubator/directmemory/trunk/directmemory-cache/src/main/java/org/apache/directmemory/memory/OffHeapMergingMemoryBufferImpl.java?rev=1293572&r1=1293571&r2=1293572&view=diff
==============================================================================
--- 
incubator/directmemory/trunk/directmemory-cache/src/main/java/org/apache/directmemory/memory/OffHeapMergingMemoryBufferImpl.java
 (original)
+++ 
incubator/directmemory/trunk/directmemory-cache/src/main/java/org/apache/directmemory/memory/OffHeapMergingMemoryBufferImpl.java
 Sat Feb 25 10:32:17 2012
@@ -128,7 +128,7 @@ public class OffHeapMergingMemoryBufferI
      */
     protected Pointer<V> createAndAddFirstPointer()
     {
-        Pointer<V> first = new Pointer<V>( 0, buffer.capacity() - 1 );
+        PointerImpl<V> first = new PointerImpl<V>( 0, buffer.capacity() - 1 );
         first.bufferNumber = bufferNumber;
         first.free = true;
         freePointersBySizeDesc.put( first, DEFAULT_VALUE );
@@ -162,11 +162,10 @@ public class OffHeapMergingMemoryBufferI
     @Override
     public byte[] retrieve( Pointer<V> pointer )
     {
-        pointer.lastHit = System.currentTimeMillis();
-        pointer.hits++;
-
+        pointer.hit();
+        
         ByteBuffer buf = buffer.duplicate();
-        buf.position( pointer.start );
+        buf.position( pointer.getStart() );
 
         final byte[] swp = new byte[pointer.getCapacity()];
         buf.get( swp );
@@ -178,7 +177,7 @@ public class OffHeapMergingMemoryBufferI
     {
 
         // Avoid freeing twice the same pointer. Maybe atomic boolean is 
required here.
-        if ( !pointer2free.free )
+        if ( !pointer2free.isFree() )
         {
 
             try
@@ -197,7 +196,7 @@ public class OffHeapMergingMemoryBufferI
                     .descendingKeySet() )
                 {
 
-                    if ( adjacentPointer.end + 1 != lowerPointerToMerge.start )
+                    if ( adjacentPointer.getEnd() + 1 != 
lowerPointerToMerge.getStart() )
                     {
                         break;
                     }
@@ -212,7 +211,7 @@ public class OffHeapMergingMemoryBufferI
                     .navigableKeySet() )
                 {
 
-                    if ( adjacentPointer.start - 1 != higherPointerToMerge.end 
)
+                    if ( adjacentPointer.getStart() - 1 != 
higherPointerToMerge.getEnd() )
                     {
                         break;
                     }
@@ -224,15 +223,15 @@ public class OffHeapMergingMemoryBufferI
                 if ( lowerPointerToMerge != higherPointerToMerge )
                 {
 
-                    final Pointer<V> mergedPointer = new Pointer<V>( 
lowerPointerToMerge.start, higherPointerToMerge.end );
-                    mergedPointer.free = true;
+                    final Pointer<V> mergedPointer = new PointerImpl<V>( 
lowerPointerToMerge.getStart(), higherPointerToMerge.getEnd() );
+                    mergedPointer.setFree( true );
 
                     final Iterator<Pointer<V>> adjacentPointersIterator = 
freePointersByMemoryOffsetAsc
                         .subMap( lowerPointerToMerge, true, 
higherPointerToMerge, true ).navigableKeySet().iterator();
                     while ( adjacentPointersIterator.hasNext() )
                     {
                         Pointer<V> adjacentPointer = 
adjacentPointersIterator.next();
-                        adjacentPointer.free = true; // if a reference to the 
pointer is kept, we must not use it.
+                        adjacentPointer.setFree( true ); // if a reference to 
the pointer is kept, we must not use it.
                         freePointersBySizeDesc.remove( adjacentPointer );
                         adjacentPointersIterator.remove();
                     }
@@ -275,7 +274,7 @@ public class OffHeapMergingMemoryBufferI
 
         for ( Pointer<V> pointer : usedPointers )
         {
-            pointer.free = true;
+            pointer.setFree( true );
             //            free( pointer ); // too costly to merge every 
pointers while the will be cleared in a row
         }
         usedPointers.clear();
@@ -299,11 +298,11 @@ public class OffHeapMergingMemoryBufferI
 
             setExpiration( allocatedPointer, expiresIn, expires );
 
-            allocatedPointer.free = false;
+            allocatedPointer.setFree( false );
 
             final ByteBuffer buf = buffer.duplicate();
-            buf.position( allocatedPointer.start );
-            buf.limit( allocatedPointer.start + size );
+            buf.position( allocatedPointer.getStart() );
+            buf.limit( allocatedPointer.getStart() + size );
 
             buf.put( payload );
 
@@ -341,14 +340,14 @@ public class OffHeapMergingMemoryBufferI
             if ( goodOne.getCapacity() != size )
             {
 
-                fresh = new Pointer<V>( goodOne.start, goodOne.start + size - 
1 );
-                fresh.bufferNumber = getBufferNumber();
-                fresh.free = true;
-                fresh.created = System.currentTimeMillis();
+                fresh = new PointerImpl<V>( goodOne.getStart(), 
goodOne.getStart() + size - 1 );
+                fresh.setBufferNumber( getBufferNumber() );
+                fresh.setFree( true );
+                fresh.createdNow();
 
                 // create a new pointer for the remaining space
-                final Pointer<V> newGoodOne = new Pointer<V>( fresh.end + 1, 
goodOne.end );
-                newGoodOne.free = true;
+                final Pointer<V> newGoodOne = new PointerImpl<V>( 
fresh.getEnd() + 1, goodOne.getEnd() );
+                newGoodOne.setFree( true );
 
                 // and add it to the free lists
                 freePointersByMemoryOffsetAsc.put( newGoodOne, DEFAULT_VALUE );
@@ -377,12 +376,12 @@ public class OffHeapMergingMemoryBufferI
         {
             setExpiration( allocatedPointer, expiresIn, expires );
 
-            allocatedPointer.free = false;
+            allocatedPointer.setFree( false );
 
             final ByteBuffer buf = buffer.duplicate();
-            buf.position( allocatedPointer.start );
-            buf.limit( allocatedPointer.start + size );
-            allocatedPointer.directBuffer = buf.slice();
+            buf.position( allocatedPointer.getStart() );
+            buf.limit( allocatedPointer.getStart() + size );
+            allocatedPointer.setDirectBuffer( buf.slice() );
 
             used.addAndGet( size );
         }
@@ -431,8 +430,8 @@ public class OffHeapMergingMemoryBufferI
         @Override
         public int compare( final Pointer<V> pointer0, final Pointer<V> 
pointer1 )
         {
-            final int offset0 = pointer0.start;
-            final int offset1 = pointer1.start;
+            final int offset0 = pointer0.getStart();
+            final int offset1 = pointer1.getStart();
 
             if ( offset0 < offset1 )
             {
@@ -468,7 +467,7 @@ public class OffHeapMergingMemoryBufferI
         // Create an independent view of the buffer
         final ByteBuffer buf = buffer.duplicate();
         // Set it at the right start offset
-        buf.position( pointer.start );
+        buf.position( pointer.getStart() );
         // Write the content in the shared buffer
         buf.put( payload );
 

Modified: 
incubator/directmemory/trunk/directmemory-cache/src/main/java/org/apache/directmemory/memory/Pointer.java
URL: 
http://svn.apache.org/viewvc/incubator/directmemory/trunk/directmemory-cache/src/main/java/org/apache/directmemory/memory/Pointer.java?rev=1293572&r1=1293571&r2=1293572&view=diff
==============================================================================
--- 
incubator/directmemory/trunk/directmemory-cache/src/main/java/org/apache/directmemory/memory/Pointer.java
 (original)
+++ 
incubator/directmemory/trunk/directmemory-cache/src/main/java/org/apache/directmemory/memory/Pointer.java
 Sat Feb 25 10:32:17 2012
@@ -1,90 +1,67 @@
 package org.apache.directmemory.memory;
 
+import java.nio.ByteBuffer;
+
 /*
  * Licensed to the Apache Software Foundation (ASF) under one
- * or more contributor license agreements.  See the NOTICE file
+ * or more contributor license agreements. See the NOTICE file
  * distributed with this work for additional information
- * regarding copyright ownership.  The ASF licenses this file
+ * regarding copyright ownership. The ASF licenses this file
  * to you under the Apache License, Version 2.0 (the
  * "License"); you may not use this file except in compliance
- * with the License.  You may obtain a copy of the License at
- *
- *  http://www.apache.org/licenses/LICENSE-2.0
- *
+ * with the License. You may obtain a copy of the License at
+ * 
+ * http://www.apache.org/licenses/LICENSE-2.0
+ * 
  * Unless required by applicable law or agreed to in writing,
  * software distributed under the License is distributed on an
  * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
- * KIND, either express or implied.  See the License for the
+ * KIND, either express or implied. See the License for the
  * specific language governing permissions and limitations
  * under the License.
  */
 
-import static java.lang.System.currentTimeMillis;
-import static java.lang.String.format;
+public interface Pointer<T>
+{
+
+    byte[] content();
 
-import java.nio.ByteBuffer;
+    boolean isFree();
 
-public class Pointer<T>
-{
-    public int start;
+    void setFree( boolean free );
 
-    public int end;
+    boolean isExpired();
 
-    public long created;
+    float getFrequency();
 
-    public long expires;
+    int getCapacity();
 
-    public long expiresIn;
+    void reset();
 
-    public long hits;
+    int getBufferNumber();
 
-    public boolean free;
+    void setBufferNumber( int bufferNumber );
 
-    public long lastHit;
+    int getStart();
 
-    public int bufferNumber;
+    void setStart( int start );
 
-    public Class<? extends T> clazz;
+    int getEnd();
 
-    public ByteBuffer directBuffer = null;
+    void setEnd( int end );
 
-    public Pointer()
-    {
-    }
+    void hit();
 
-    public Pointer( int start, int end )
-    {
-        this.start = start;
-        this.end = end;
-    }
+    Class<? extends T> getClazz();
 
-    public byte[] content()
-    {
-        return null;
-    }
+    void setClazz( Class<? extends T> clazz );
 
-    public boolean expired()
-    {
-        if ( expires > 0 || expiresIn > 0 )
-        {
-            return ( expiresIn + created < currentTimeMillis() );
-        }
-        return false;
-    }
+    ByteBuffer getDirectBuffer();
 
-    public float getFrequency()
-    {
-        return (float) ( currentTimeMillis() - created ) / hits;
-    }
+    void setDirectBuffer( ByteBuffer directBuffer );
 
-    public int getCapacity()
-    {
-        return end - start + 1;
-    }
+    void createdNow();
+    
+    void setExpiration( long expires, long expiresIn );
 
-    @Override
-    public String toString()
-    {
-        return format( "%s[%s, %s] %s free", getClass().getSimpleName(), 
start, end,( free ? "" : "not" ) );
-    }
 }

Added: 
incubator/directmemory/trunk/directmemory-cache/src/main/java/org/apache/directmemory/memory/PointerImpl.java
URL: 
http://svn.apache.org/viewvc/incubator/directmemory/trunk/directmemory-cache/src/main/java/org/apache/directmemory/memory/PointerImpl.java?rev=1293572&view=auto
==============================================================================
--- 
incubator/directmemory/trunk/directmemory-cache/src/main/java/org/apache/directmemory/memory/PointerImpl.java
 (added)
+++ 
incubator/directmemory/trunk/directmemory-cache/src/main/java/org/apache/directmemory/memory/PointerImpl.java
 Sat Feb 25 10:32:17 2012
@@ -0,0 +1,199 @@
+package org.apache.directmemory.memory;
+
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one
+ * or more contributor license agreements. See the NOTICE file
+ * distributed with this work for additional information
+ * regarding copyright ownership. The ASF licenses this file
+ * to you under the Apache License, Version 2.0 (the
+ * "License"); you may not use this file except in compliance
+ * with the License. You may obtain a copy of the License at
+ * 
+ * http://www.apache.org/licenses/LICENSE-2.0
+ * 
+ * Unless required by applicable law or agreed to in writing,
+ * software distributed under the License is distributed on an
+ * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+ * KIND, either express or implied. See the License for the
+ * specific language governing permissions and limitations
+ * under the License.
+ */
+
+import static java.lang.System.currentTimeMillis;
+import static java.lang.String.format;
+
+import java.nio.ByteBuffer;
+
+public class PointerImpl<T>
+    implements Pointer<T>
+{
+    public int start;
+
+    public int end;
+
+    public long created;
+
+    public long expires;
+
+    public long expiresIn;
+
+    public long hits;
+
+    public boolean free;
+
+    public long lastHit;
+
+    public int bufferNumber;
+
+    public Class<? extends T> clazz;
+
+    public ByteBuffer directBuffer = null;
+
+    public PointerImpl()
+    {
+    }
+
+    public PointerImpl( int start, int end )
+    {
+        this.start = start;
+        this.end = end;
+    }
+
+    @Override
+    public byte[] content()
+    {
+        return null;
+    }
+
+    @Override
+    public float getFrequency()
+    {
+        return (float) ( currentTimeMillis() - created ) / hits;
+    }
+
+    @Override
+    public int getCapacity()
+    {
+        return end - start + 1;
+    }
+
+    @Override
+    public String toString()
+    {
+        return format( "%s[%s, %s] %s free", getClass().getSimpleName(), 
start, end, ( free ? "" : "not" ) );
+    }
+
+    @Override
+    public void reset()
+    {
+        free = true;
+        created = 0;
+        lastHit = 0;
+        hits = 0;
+        expiresIn = 0;
+        clazz = null;
+        directBuffer = null;
+    }
+
+    @Override
+    public boolean isFree()
+    {
+        return free;
+    }
+
+    @Override
+    public boolean isExpired()
+    {
+        if ( expires > 0 || expiresIn > 0 )
+        {
+            return ( expiresIn + created < currentTimeMillis() );
+        }
+        return false;
+    }
+
+    @Override
+    public int getBufferNumber()
+    {
+        return bufferNumber;
+    }
+
+    @Override
+    public int getStart()
+    {
+        return start;
+    }
+
+    @Override
+    public int getEnd()
+    {
+        return end;
+    }
+
+    @Override
+    public void setStart( int start )
+    {
+        this.start = start;
+    }
+
+    @Override
+    public void hit()
+    {
+        lastHit = System.currentTimeMillis();
+        hits++;
+    }
+
+    @Override
+    public Class<? extends T> getClazz()
+    {
+        return clazz;
+    }
+
+    @Override
+    public ByteBuffer getDirectBuffer()
+    {
+        return directBuffer;
+    }
+
+    @Override
+    public void setFree( boolean free )
+    {
+        this.free = free;
+    }
+
+    @Override
+    public void setEnd( int end )
+    {
+        this.end = end;
+    }
+
+    @Override
+    public void setClazz( Class<? extends T> clazz )
+    {
+        this.clazz = clazz;
+    }
+
+    @Override
+    public void setDirectBuffer( ByteBuffer directBuffer )
+    {
+        this.directBuffer = directBuffer;
+    }
+
+    @Override
+    public void createdNow()
+    {
+        created = System.currentTimeMillis();
+    }
+
+    @Override
+    public void setBufferNumber( int bufferNumber )
+    {
+        this.bufferNumber = bufferNumber;
+    }
+
+    @Override
+    public void setExpiration( long expires, long expiresIn )
+    {
+        this.expires = expires;
+        this.expiresIn = expiresIn;
+    }
+}

Modified: 
incubator/directmemory/trunk/directmemory-cache/src/test/java/org/apache/directmemory/memory/AbstractOffHeapMemoryBufferTest.java
URL: 
http://svn.apache.org/viewvc/incubator/directmemory/trunk/directmemory-cache/src/test/java/org/apache/directmemory/memory/AbstractOffHeapMemoryBufferTest.java?rev=1293572&r1=1293571&r2=1293572&view=diff
==============================================================================
--- 
incubator/directmemory/trunk/directmemory-cache/src/test/java/org/apache/directmemory/memory/AbstractOffHeapMemoryBufferTest.java
 (original)
+++ 
incubator/directmemory/trunk/directmemory-cache/src/test/java/org/apache/directmemory/memory/AbstractOffHeapMemoryBufferTest.java
 Sat Feb 25 10:32:17 2012
@@ -59,8 +59,8 @@ public abstract class AbstractOffHeapMem
 
         Pointer<Object> pointer1 = offHeapMemoryBuffer.store( SMALL_PAYLOAD );
         Assert.assertNotNull( pointer1 );
-        Assert.assertFalse( pointer1.free );
-        Assert.assertNull( pointer1.directBuffer );
+        Assert.assertFalse( pointer1.isFree() );
+        Assert.assertNull( pointer1.getDirectBuffer() );
 
         Pointer<Object> pointer2 = offHeapMemoryBuffer.store( SMALL_PAYLOAD );
         Assert.assertNull( pointer2 );
@@ -161,7 +161,7 @@ public abstract class AbstractOffHeapMem
         Assert.assertNotNull( "Cannot store " + size4 + " bytes", pointer4 );
 
         offHeapMemoryBuffer.free( pointer1 );
-        Assert.assertTrue( pointer1.free );
+        Assert.assertTrue( pointer1.isFree() );
 
         offHeapMemoryBuffer.free( pointer3 );
 
@@ -207,8 +207,8 @@ public abstract class AbstractOffHeapMem
         }
 
         // After a clear occurs, pointers allocated before the clear should be 
set as "free"
-        Assert.assertTrue( pointer6.free );
-        Assert.assertTrue( pointer7.free );
+        Assert.assertTrue( pointer6.isFree() );
+        Assert.assertTrue( pointer7.isFree() );
 
     }
 
@@ -307,7 +307,7 @@ public abstract class AbstractOffHeapMem
         Assert.assertNotNull( pointer3 );
 
         byte[] payload3 = MemoryTestUtils.generateRandomPayload( 
NUMBER_OF_OBJECTS / 4 * SMALL_PAYLOAD_LENGTH );
-        pointer3.directBuffer.put( payload3 );
+        pointer3.getDirectBuffer().put( payload3 );
         byte[] retrievePayload3 = offHeapMemoryBuffer.retrieve( pointer3 );
         Assert.assertEquals( new String( payload3 ), new String( 
retrievePayload3 ) );
 
@@ -368,15 +368,15 @@ public abstract class AbstractOffHeapMem
         final byte[] otherPayload = MemoryTestUtils.generateRandomPayload( 
SMALL_PAYLOAD_LENGTH );
         final Pointer<Object> otherPointer = offHeapMemoryBuffer.update( 
pointer, otherPayload );
         Assert.assertNotNull( otherPointer );
-        Assert.assertEquals( pointer.start, otherPointer.start );
-        Assert.assertEquals( pointer.end, otherPointer.end );
+        Assert.assertEquals( pointer.getStart(), otherPointer.getStart() );
+        Assert.assertEquals( pointer.getEnd(), otherPointer.getEnd() );
         Assert.assertEquals( new String( otherPayload ), new String( 
offHeapMemoryBuffer.retrieve( otherPointer ) ) );
 
         final byte[] evenAnotherPayload = 
MemoryTestUtils.generateRandomPayload( SMALL_PAYLOAD_LENGTH / 2 );
         final Pointer<Object> evenAnotherPointer = offHeapMemoryBuffer.update( 
pointer, evenAnotherPayload );
         Assert.assertNotNull( evenAnotherPointer );
-        Assert.assertEquals( pointer.start, evenAnotherPointer.start );
-        Assert.assertEquals( pointer.end, evenAnotherPointer.end );
+        Assert.assertEquals( pointer.getStart(), evenAnotherPointer.getStart() 
);
+        Assert.assertEquals( pointer.getEnd(), evenAnotherPointer.getEnd() );
         Assert.assertEquals( 4, new String( offHeapMemoryBuffer.retrieve( 
evenAnotherPointer ) ).length() );
         Assert.assertTrue( new String( offHeapMemoryBuffer.retrieve( 
evenAnotherPointer ) )
             .startsWith( new String( evenAnotherPayload ) ) );
@@ -414,7 +414,7 @@ public abstract class AbstractOffHeapMem
         final byte[] allocatedPayload1 = 
MemoryTestUtils.generateRandomPayload( size1 );
         final Pointer<Object> allocatedPointer1 = 
offHeapMemoryBuffer.allocate( Object.class, allocatedPayload1.length, -1, -1 );
         Assert.assertNotNull( allocatedPointer1 );
-        final ByteBuffer buffer1 = allocatedPointer1.directBuffer;
+        final ByteBuffer buffer1 = allocatedPointer1.getDirectBuffer();
         Assert.assertNotNull( buffer1 );
         Assert.assertEquals( 0, buffer1.position() );
         Assert.assertEquals( size1, buffer1.limit() );
@@ -426,7 +426,7 @@ public abstract class AbstractOffHeapMem
         final byte[] allocatedPayload2 = 
MemoryTestUtils.generateRandomPayload( size2 );
         final Pointer<Object> allocatedPointer2 = 
offHeapMemoryBuffer.allocate( Object.class, allocatedPayload2.length, -1, -1 );
         Assert.assertNotNull( allocatedPointer2 );
-        final ByteBuffer buffer2 = allocatedPointer2.directBuffer;
+        final ByteBuffer buffer2 = allocatedPointer2.getDirectBuffer();
         Assert.assertNotNull( buffer2 );
         Assert.assertEquals( size2, buffer2.limit() );
         Assert.assertEquals( size2, buffer2.capacity() );

Modified: 
incubator/directmemory/trunk/directmemory-cache/src/test/java/org/apache/directmemory/memory/BaseTest.java
URL: 
http://svn.apache.org/viewvc/incubator/directmemory/trunk/directmemory-cache/src/test/java/org/apache/directmemory/memory/BaseTest.java?rev=1293572&r1=1293571&r2=1293572&view=diff
==============================================================================
--- 
incubator/directmemory/trunk/directmemory-cache/src/test/java/org/apache/directmemory/memory/BaseTest.java
 (original)
+++ 
incubator/directmemory/trunk/directmemory-cache/src/test/java/org/apache/directmemory/memory/BaseTest.java
 Sat Feb 25 10:32:17 2012
@@ -62,7 +62,7 @@ public class BaseTest
 
         Pointer<Object> p = mem.store( new byte[size] );
         assertNotNull( p );
-        assertEquals( size, p.end );
+        assertEquals( size, p.getEnd() );
         assertEquals( size, mem.used() );
         mem.free( p );
         assertEquals( 0, mem.used() );
@@ -161,11 +161,11 @@ public class BaseTest
         {
             byte[] payload = ( test + " - " + i ).getBytes();
             Pointer<Object> p = mem.store( payload );
-            logger.info( "p.start=" + p.start );
-            logger.info( "p.end=" + p.end );
+            logger.info( "p.start=" + p.getStart() );
+            logger.info( "p.end=" + p.getEnd() );
             if ( lastP != null )
             {
-                assertEquals( lastP.end + 1, p.start );
+                assertEquals( lastP.getEnd() + 1, p.getStart() );
             }
             assertEquals( p.getCapacity(), payload.length );
             lastP = p;

Modified: 
incubator/directmemory/trunk/directmemory-cache/src/test/java/org/apache/directmemory/memory/MemoryManagerServiceImplWithMerginOHMBAndAllocationPolicyTest.java
URL: 
http://svn.apache.org/viewvc/incubator/directmemory/trunk/directmemory-cache/src/test/java/org/apache/directmemory/memory/MemoryManagerServiceImplWithMerginOHMBAndAllocationPolicyTest.java?rev=1293572&r1=1293571&r2=1293572&view=diff
==============================================================================
--- 
incubator/directmemory/trunk/directmemory-cache/src/test/java/org/apache/directmemory/memory/MemoryManagerServiceImplWithMerginOHMBAndAllocationPolicyTest.java
 (original)
+++ 
incubator/directmemory/trunk/directmemory-cache/src/test/java/org/apache/directmemory/memory/MemoryManagerServiceImplWithMerginOHMBAndAllocationPolicyTest.java
 Sat Feb 25 10:32:17 2012
@@ -197,7 +197,7 @@ public class MemoryManagerServiceImplWit
         Assert.assertNotNull( pointer3 );
 
         byte[] payload3 = MemoryTestUtils.generateRandomPayload( 
NUMBER_OF_OBJECTS / 4 * SMALL_PAYLOAD.length );
-        pointer3.directBuffer.put( payload3 );
+        pointer3.getDirectBuffer().put( payload3 );
         byte[] retrievePayload3 = memoryManagerService.retrieve( pointer3 );
         Assert.assertEquals( new String( payload3 ), new String( 
retrievePayload3 ) );
 

Modified: 
incubator/directmemory/trunk/directmemory-cache/src/test/java/org/apache/directmemory/memory/MemoryManagerServiceImplWithMerginOHMBTest.java
URL: 
http://svn.apache.org/viewvc/incubator/directmemory/trunk/directmemory-cache/src/test/java/org/apache/directmemory/memory/MemoryManagerServiceImplWithMerginOHMBTest.java?rev=1293572&r1=1293571&r2=1293572&view=diff
==============================================================================
--- 
incubator/directmemory/trunk/directmemory-cache/src/test/java/org/apache/directmemory/memory/MemoryManagerServiceImplWithMerginOHMBTest.java
 (original)
+++ 
incubator/directmemory/trunk/directmemory-cache/src/test/java/org/apache/directmemory/memory/MemoryManagerServiceImplWithMerginOHMBTest.java
 Sat Feb 25 10:32:17 2012
@@ -192,7 +192,7 @@ public class MemoryManagerServiceImplWit
         Assert.assertNotNull( pointer3 );
 
         byte[] payload3 = MemoryTestUtils.generateRandomPayload( 
NUMBER_OF_OBJECTS / 4 * SMALL_PAYLOAD.length );
-        pointer3.directBuffer.put( payload3 );
+        pointer3.getDirectBuffer().put( payload3 );
         byte[] retrievePayload3 = memoryManagerService.retrieve( pointer3 );
         Assert.assertEquals( new String( payload3 ), new String( 
retrievePayload3 ) );
 

Modified: 
incubator/directmemory/trunk/directmemory-cache/src/test/java/org/apache/directmemory/memory/MemoryManagerTest.java
URL: 
http://svn.apache.org/viewvc/incubator/directmemory/trunk/directmemory-cache/src/test/java/org/apache/directmemory/memory/MemoryManagerTest.java?rev=1293572&r1=1293571&r2=1293572&view=diff
==============================================================================
--- 
incubator/directmemory/trunk/directmemory-cache/src/test/java/org/apache/directmemory/memory/MemoryManagerTest.java
 (original)
+++ 
incubator/directmemory/trunk/directmemory-cache/src/test/java/org/apache/directmemory/memory/MemoryManagerTest.java
 Sat Feb 25 10:32:17 2012
@@ -93,7 +93,7 @@ public class MemoryManagerTest
         {
             for ( Pointer<Object> ptr : ((OffHeapMemoryBufferImpl<Object>) 
buffer).getPointers() )
             {
-                if ( !ptr.free )
+                if ( !ptr.isFree() )
                 {
                     byte[] res = MemoryManager.retrieve( ptr );
                     assertNotNull( res );

Modified: 
incubator/directmemory/trunk/directmemory-cache/src/test/java/org/apache/directmemory/memory/NIOTest.java
URL: 
http://svn.apache.org/viewvc/incubator/directmemory/trunk/directmemory-cache/src/test/java/org/apache/directmemory/memory/NIOTest.java?rev=1293572&r1=1293571&r2=1293572&view=diff
==============================================================================
--- 
incubator/directmemory/trunk/directmemory-cache/src/test/java/org/apache/directmemory/memory/NIOTest.java
 (original)
+++ 
incubator/directmemory/trunk/directmemory-cache/src/test/java/org/apache/directmemory/memory/NIOTest.java
 Sat Feb 25 10:32:17 2012
@@ -67,7 +67,7 @@ public class NIOTest
         int size = rnd.nextInt( 10 ) * (int) MemoryManager.capacity() / 100;
         logger.info( "payload size=" + Ram.inKb( size ) );
         Pointer<Object> p = MemoryManager.allocate( size );
-        ByteBuffer b = p.directBuffer;
+        ByteBuffer b = p.getDirectBuffer();
         logger.info( "allocated" );
         assertNotNull( p );
         assertNotNull( b );

Modified: 
incubator/directmemory/trunk/integrations/ehcache/src/main/java/org/apache/directmemory/ehcache/DirectMemoryStore.java
URL: 
http://svn.apache.org/viewvc/incubator/directmemory/trunk/integrations/ehcache/src/main/java/org/apache/directmemory/ehcache/DirectMemoryStore.java?rev=1293572&r1=1293571&r2=1293572&view=diff
==============================================================================
--- 
incubator/directmemory/trunk/integrations/ehcache/src/main/java/org/apache/directmemory/ehcache/DirectMemoryStore.java
 (original)
+++ 
incubator/directmemory/trunk/integrations/ehcache/src/main/java/org/apache/directmemory/ehcache/DirectMemoryStore.java
 Sat Feb 25 10:32:17 2012
@@ -242,7 +242,7 @@ public class DirectMemoryStore
             return null;
         }
 
-        Lock lock = bufferLocks.get( pointer.bufferNumber );
+        Lock lock = bufferLocks.get( pointer.getBufferNumber() );
         lock.lock();
         try
         {
@@ -277,7 +277,7 @@ public class DirectMemoryStore
             return false;
         }
 
-        Lock lock = bufferLocks.get( pointer.bufferNumber );
+        Lock lock = bufferLocks.get( pointer.getBufferNumber() );
         lock.lock();
         try
         {
@@ -317,7 +317,7 @@ public class DirectMemoryStore
             return null;
         }
 
-        Lock lock = bufferLocks.get( pointer.bufferNumber );
+        Lock lock = bufferLocks.get( pointer.getBufferNumber() );
         lock.lock();
         try
         {


Reply via email to