You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@directmemory.apache.org by si...@apache.org on 2012/02/16 15:15:39 UTC

svn commit: r1244986 - in /incubator/directmemory/trunk: ./ directmemory-cache/ directmemory-cache/src/main/java/org/apache/directmemory/memory/ directmemory-cache/src/test/java/org/apache/directmemory/cache/

Author: simonetripodi
Date: Thu Feb 16 14:15:38 2012
New Revision: 1244986

URL: http://svn.apache.org/viewvc?rev=1244986&view=rev
Log:
JOSQL replaced by Guava Predicates, dropped JOSQL dependency

Modified:
    incubator/directmemory/trunk/directmemory-cache/pom.xml
    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/OffHeapMemoryBufferImpl.java
    incubator/directmemory/trunk/directmemory-cache/src/test/java/org/apache/directmemory/cache/CacheLightConcurrentTest.java
    incubator/directmemory/trunk/pom.xml

Modified: incubator/directmemory/trunk/directmemory-cache/pom.xml
URL: http://svn.apache.org/viewvc/incubator/directmemory/trunk/directmemory-cache/pom.xml?rev=1244986&r1=1244985&r2=1244986&view=diff
==============================================================================
--- incubator/directmemory/trunk/directmemory-cache/pom.xml (original)
+++ incubator/directmemory/trunk/directmemory-cache/pom.xml Thu Feb 16 14:15:38 2012
@@ -42,7 +42,6 @@ under the License.
       !org.apache.directmemory*,
       com.google.common.collect;version="[9.0,11)",
       org.aspectj*;version="[1.6,2)",
-      org.josql*;version="[1.5,2)",
       org.slf4j*,
       *
     </osgi.import>
@@ -108,10 +107,6 @@ under the License.
       <groupId>org.aspectj</groupId>
       <artifactId>aspectjrt</artifactId>
     </dependency>
-    <dependency>
-      <groupId>org.apache.servicemix.bundles</groupId>
-      <artifactId>org.apache.servicemix.bundles.josql</artifactId>
-    </dependency>
 
     <dependency>
       <groupId>com.h2database</groupId>

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=1244986&r1=1244985&r2=1244986&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 Thu Feb 16 14:15:38 2012
@@ -19,19 +19,21 @@ package org.apache.directmemory.memory;
  * under the License.
  */
 
+import static com.google.common.collect.Iterables.filter;
+import static com.google.common.collect.Iterables.limit;
+import static com.google.common.collect.Ordering.from;
+
 import java.nio.BufferOverflowException;
 import java.nio.ByteBuffer;
-import java.util.ArrayList;
+import java.util.Comparator;
 import java.util.Date;
 import java.util.List;
 import java.util.concurrent.atomic.AtomicInteger;
 
-import org.josql.Query;
-import org.josql.QueryExecutionException;
-import org.josql.QueryParseException;
-import org.josql.QueryResults;
 import org.slf4j.Logger;
 
+import com.google.common.base.Predicate;
+
 public abstract class AbstractOffHeapMemoryBuffer
     implements OffHeapMemoryBuffer
 {
@@ -48,6 +50,32 @@ public abstract class AbstractOffHeapMem
 
     protected abstract Logger getLogger();
 
+    private final Predicate<Pointer> relative = new Predicate<Pointer>()
+    {
+
+        @Override
+        public boolean apply( Pointer input )
+        {
+            return !input.free
+                            && input.expiresIn > 0
+                            && ( input.expiresIn + input.created ) <= System.currentTimeMillis();
+        }
+
+    };
+
+    private final Predicate<Pointer> absolute = new Predicate<Pointer>()
+    {
+
+        @Override
+        public boolean apply( Pointer input )
+        {
+            return !input.free
+                            && input.expires > 0
+                            && input.expires <= System.currentTimeMillis();
+        }
+
+    };
+
     public int used()
     {
         return used.get();
@@ -101,50 +129,18 @@ public abstract class AbstractOffHeapMem
 
     protected abstract Pointer store( byte[] payload, long expiresIn, long expires );
 
-    protected QueryResults select( String whereClause, List<Pointer> pointers )
-        throws QueryParseException, QueryExecutionException
-    {
-        Query q = new Query();
-        q.parse( "SELECT * FROM " + Pointer.class.getCanonicalName() + "  WHERE " + whereClause );
-        QueryResults qr = q.execute( pointers );
-        return qr;
-    }
-
-    protected QueryResults selectOrderBy( String whereClause, String orderBy, String limit, List<Pointer> pointers )
-        throws QueryParseException, QueryExecutionException
-    {
-        Query q = new Query();
-        q.parse( "SELECT * FROM " + Pointer.class.getCanonicalName() + "  WHERE " + whereClause + " order by "
-            + orderBy + " " + limit );
-        QueryResults qr = q.execute( pointers );
-        return qr;
-    }
-
     protected boolean inShortage()
     {
         // a place holder for a more refined version
         return allocationErrors > AbstractOffHeapMemoryBuffer.maxAllocationErrors;
     }
 
-    @SuppressWarnings("unchecked")
-    protected List<Pointer> filter( final String whereClause, List<Pointer> pointers )
+    protected long free( Predicate<Pointer> predicate )
     {
-        try
-        {
-            return select( whereClause, pointers ).getResults();
-        }
-        catch ( QueryParseException e )
-        {
-            e.printStackTrace();
-        }
-        catch ( QueryExecutionException e )
-        {
-            e.printStackTrace();
-        }
-        return (List<Pointer>) new ArrayList<Pointer>();
+        return free( filter( getUsedPointers(), predicate ) );
     }
 
-    protected long free( List<Pointer> pointers )
+    protected long free( Iterable<Pointer> pointers )
     {
         long howMuch = 0;
         for ( Pointer expired : pointers )
@@ -158,23 +154,19 @@ public abstract class AbstractOffHeapMem
 
     public void disposeExpiredRelative()
     {
-        free( filter( "free=false and expiresIn > 0 and (expiresIn+created) <= " + System.currentTimeMillis(),
-                      getUsedPointers() ) );
+        free( relative );
     }
 
     public void disposeExpiredAbsolute()
     {
-        free( filter( "free=false and expires > 0 and (expires) <= " + System.currentTimeMillis(), getUsedPointers() ) );
+        free( absolute );
     }
 
     public long collectExpired()
     {
         int limit = 50;
-        long disposed = free( filter( "free=false and expiresIn > 0 and (expiresIn+created) <= "
-                                          + System.currentTimeMillis() + " limit 1, " + limit, getUsedPointers() ) );
-        disposed += free( filter( "free=false and expires > 0 and (expires) <= " + System.currentTimeMillis()
-            + " limit 1, 100" + limit, getUsedPointers() ) );
-        return disposed;
+        return free( limit( filter( getUsedPointers(), relative ), limit ) )
+                        + free( limit( filter( getUsedPointers(), absolute ), limit ) );
     }
 
     public long collectLFU( int limit )
@@ -184,31 +176,38 @@ public abstract class AbstractOffHeapMem
             return 0;
         }
         if ( limit <= 0 )
+        {
             limit = getUsedPointers().size() / 10;
-        QueryResults qr;
-        try
+        }
+
+        Iterable<Pointer> result = from( new Comparator<Pointer>()
         {
-            qr = selectOrderBy( "free=false", "frequency", "limit 1, " + limit, getUsedPointers() );
-            @SuppressWarnings("unchecked")
-            List<Pointer> result = qr.getResults();
-            if ( result.size() > 0 )
+
+            public int compare( Pointer o1, Pointer o2 )
             {
-                // reset allocation errors if we made some room
-                allocationErrors = 0;
+                float f1 = o1.getFrequency();
+                float f2 = o2.getFrequency();
+
+                return Float.compare( f1, f2 );
             }
-            return free( result );
-        }
-        catch ( QueryParseException e )
+
+        } ).sortedCopy( limit( filter( getUsedPointers(), new Predicate<Pointer>()
         {
-            // TODO Auto-generated catch block
-            e.printStackTrace();
-        }
-        catch ( QueryExecutionException e )
+
+            @Override
+            public boolean apply( Pointer input )
+            {
+                return !input.free;
+            }
+
+        } ), limit ) );
+
+        if ( result.iterator().hasNext() )
         {
-            // TODO Auto-generated catch block
-            e.printStackTrace();
+            // reset allocation errors if we made some room
+            allocationErrors = 0;
         }
-        return 0;
+        return free( result );
     }
 
     public Pointer update( Pointer pointer, byte[] payload )
@@ -223,7 +222,7 @@ public abstract class AbstractOffHeapMem
 
     public abstract Pointer allocate( int size, long expiresIn, long expires );
 
-    protected void resetPointer( final Pointer pointer ) 
+    protected void resetPointer( final Pointer pointer )
     {
         pointer.free = true;
         pointer.created = 0;
@@ -233,7 +232,7 @@ public abstract class AbstractOffHeapMem
         pointer.clazz = null;
         pointer.directBuffer = null;
     }
-    
+
     protected void setExpiration( final Pointer pointer, long expiresIn, long expires )
     {
 
@@ -248,5 +247,5 @@ public abstract class AbstractOffHeapMem
             pointer.expires = expires;
         }
     }
-    
+
 }

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=1244986&r1=1244985&r2=1244986&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 Thu Feb 16 14:15:38 2012
@@ -30,10 +30,6 @@ import java.util.zip.CRC32;
 import java.util.zip.Checksum;
 
 import org.apache.directmemory.measures.Ram;
-import org.josql.Query;
-import org.josql.QueryExecutionException;
-import org.josql.QueryParseException;
-import org.josql.QueryResults;
 import org.slf4j.Logger;
 import org.slf4j.LoggerFactory;
 
@@ -206,59 +202,12 @@ public class OffHeapMemoryBufferImpl
         return fresh;
     }
 
-    protected QueryResults select( String whereClause )
-        throws QueryParseException, QueryExecutionException
-    {
-        Query q = new Query();
-        q.parse( "SELECT * FROM " + Pointer.class.getCanonicalName() + "  WHERE " + whereClause );
-        QueryResults qr = q.execute( pointers );
-        return qr;
-    }
-
-    protected QueryResults selectOrderBy( String whereClause, String orderBy, String limit )
-        throws QueryParseException, QueryExecutionException
-    {
-        Query q = new Query();
-        q.parse( "SELECT * FROM " + Pointer.class.getCanonicalName() + "  WHERE " + whereClause + " order by "
-            + orderBy + " " + limit );
-        QueryResults qr = q.execute( pointers );
-        return qr;
-    }
-
     protected boolean inShortage()
     {
         // a place holder for a more refined version
         return allocationErrors > OffHeapMemoryBufferImpl.maxAllocationErrors;
     }
 
-    @SuppressWarnings("unchecked")
-    protected List<Pointer> filter( final String whereClause )
-    {
-        try
-        {
-            return select( whereClause ).getResults();
-        }
-        catch ( QueryParseException e )
-        {
-            e.printStackTrace();
-        }
-        catch ( QueryExecutionException e )
-        {
-            e.printStackTrace();
-        }
-        return (List<Pointer>) new ArrayList<Pointer>();
-    }
-
-    protected long free( List<Pointer> pointers )
-    {
-        long howMuch = 0;
-        for ( Pointer expired : pointers )
-        {
-            howMuch += free( expired );
-        }
-        return howMuch;
-    }
-
     // TODO : This function should be put in an Util class.
     public static long crc32( byte[] payload )
     {

Modified: incubator/directmemory/trunk/directmemory-cache/src/test/java/org/apache/directmemory/cache/CacheLightConcurrentTest.java
URL: http://svn.apache.org/viewvc/incubator/directmemory/trunk/directmemory-cache/src/test/java/org/apache/directmemory/cache/CacheLightConcurrentTest.java?rev=1244986&r1=1244985&r2=1244986&view=diff
==============================================================================
--- incubator/directmemory/trunk/directmemory-cache/src/test/java/org/apache/directmemory/cache/CacheLightConcurrentTest.java (original)
+++ incubator/directmemory/trunk/directmemory-cache/src/test/java/org/apache/directmemory/cache/CacheLightConcurrentTest.java Thu Feb 16 14:15:38 2012
@@ -19,20 +19,14 @@ package org.apache.directmemory.cache;
  * under the License.
  */
 
-import com.carrotsearch.junitbenchmarks.AbstractBenchmark;
-import com.carrotsearch.junitbenchmarks.BenchmarkOptions;
-import com.carrotsearch.junitbenchmarks.annotation.AxisRange;
-import com.carrotsearch.junitbenchmarks.annotation.BenchmarkHistoryChart;
-import com.carrotsearch.junitbenchmarks.annotation.BenchmarkMethodChart;
-import com.carrotsearch.junitbenchmarks.annotation.LabelType;
-import org.apache.directmemory.cache.Cache;
+import java.util.Random;
+import java.util.concurrent.atomic.AtomicInteger;
+
 import org.apache.directmemory.measures.Every;
 import org.apache.directmemory.measures.Monitor;
 import org.apache.directmemory.measures.Ram;
 import org.apache.directmemory.memory.MemoryManager;
 import org.apache.directmemory.memory.Pointer;
-import org.josql.QueryExecutionException;
-import org.josql.QueryParseException;
 import org.junit.AfterClass;
 import org.junit.BeforeClass;
 import org.junit.Ignore;
@@ -40,8 +34,12 @@ import org.junit.Test;
 import org.slf4j.Logger;
 import org.slf4j.LoggerFactory;
 
-import java.util.Random;
-import java.util.concurrent.atomic.AtomicInteger;
+import com.carrotsearch.junitbenchmarks.AbstractBenchmark;
+import com.carrotsearch.junitbenchmarks.BenchmarkOptions;
+import com.carrotsearch.junitbenchmarks.annotation.AxisRange;
+import com.carrotsearch.junitbenchmarks.annotation.BenchmarkHistoryChart;
+import com.carrotsearch.junitbenchmarks.annotation.BenchmarkMethodChart;
+import com.carrotsearch.junitbenchmarks.annotation.LabelType;
 
 @AxisRange( min = 0, max = 1 )
 @BenchmarkMethodChart()
@@ -103,7 +101,7 @@ public class CacheLightConcurrentTest
     @BenchmarkOptions( benchmarkRounds = 1, warmupRounds = 0, concurrency = 1 )
     @Test
     public void LFUEviction()
-        throws QueryParseException, QueryExecutionException
+        throws Exception
     {
         Cache.collectAll();
     }
@@ -265,6 +263,6 @@ public class CacheLightConcurrentTest
     }
 
 }
-	
-	
+
+
 

Modified: incubator/directmemory/trunk/pom.xml
URL: http://svn.apache.org/viewvc/incubator/directmemory/trunk/pom.xml?rev=1244986&r1=1244985&r2=1244986&view=diff
==============================================================================
--- incubator/directmemory/trunk/pom.xml (original)
+++ incubator/directmemory/trunk/pom.xml Thu Feb 16 14:15:38 2012
@@ -239,8 +239,6 @@ under the License.
     <guava.version>r09</guava.version>
     <h2.version>1.3.158</h2.version>
     <karaf.version>2.2.4</karaf.version>
-    <josql.bundle.version>1.5_5</josql.bundle.version>
-    <josql.version>1.5</josql.version>
     <junit.version>4.10</junit.version>
     <junit-benchamrks.version>0.3.0</junit-benchamrks.version>
     <logback.version>1.0.0</logback.version>
@@ -507,22 +505,6 @@ under the License.
       </dependency>
 
       <dependency>
-        <groupId>net.sf.josql</groupId>
-        <artifactId>josql</artifactId>
-        <version>${josql.version}</version>
-      </dependency>
-      <dependency>
-        <groupId>org.apache.servicemix.bundles</groupId>
-        <artifactId>org.apache.servicemix.bundles.josql</artifactId>
-        <version>${josql.bundle.version}</version>
-      </dependency>
-      <dependency>
-        <groupId>net.sf.josql</groupId>
-        <artifactId>gentlyweb-utils</artifactId>
-        <version>${josql.version}</version>
-      </dependency>
-
-      <dependency>
         <groupId>junit</groupId>
         <artifactId>junit</artifactId>
         <version>${junit.version}</version>