You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@jena.apache.org by an...@apache.org on 2011/05/19 17:34:57 UTC

svn commit: r1124946 - in /incubator/jena: Experimental/TxTDB/trunk/src-dev/tx/ Experimental/TxTDB/trunk/src/main/java/com/hp/hpl/jena/tdb/base/block/ Experimental/TxTDB/trunk/src/test/java/com/hp/hpl/jena/tdb/migrate/ Jena2/ARQ/trunk/src-dev/dev/ Jena...

Author: andy
Date: Thu May 19 15:34:56 2011
New Revision: 1124946

URL: http://svn.apache.org/viewvc?rev=1124946&view=rev
Log:
Extract RefLong and MultiSet and move to ARQ.atlas

Added:
    incubator/jena/Jena2/ARQ/trunk/src-test/org/openjena/atlas/lib/TestMultiSet.java   (contents, props changed)
      - copied, changed from r1124668, incubator/jena/Experimental/TxTDB/trunk/src-dev/tx/TestMultiSet.java
    incubator/jena/Jena2/ARQ/trunk/src-test/org/openjena/atlas/lib/TestRefLong.java   (contents, props changed)
      - copied, changed from r1124668, incubator/jena/Experimental/TxTDB/trunk/src-dev/tx/TestRefLong.java
    incubator/jena/Jena2/ARQ/trunk/src/org/openjena/atlas/lib/MultiSet.java   (with props)
    incubator/jena/Jena2/ARQ/trunk/src/org/openjena/atlas/lib/RefLong.java   (with props)
Removed:
    incubator/jena/Experimental/TxTDB/trunk/src-dev/tx/TestMultiSet.java
    incubator/jena/Experimental/TxTDB/trunk/src-dev/tx/TestRefLong.java
Modified:
    incubator/jena/Experimental/TxTDB/trunk/src-dev/tx/DevTx.java
    incubator/jena/Experimental/TxTDB/trunk/src-dev/tx/TxMain.java
    incubator/jena/Experimental/TxTDB/trunk/src/main/java/com/hp/hpl/jena/tdb/base/block/BlockMgrTracker.java
    incubator/jena/Experimental/TxTDB/trunk/src/test/java/com/hp/hpl/jena/tdb/migrate/TS_Migrate.java
    incubator/jena/Jena2/ARQ/trunk/src-dev/dev/DevARQ.java
    incubator/jena/Jena2/ARQ/trunk/src-test/org/openjena/atlas/lib/TS_Lib.java

Modified: incubator/jena/Experimental/TxTDB/trunk/src-dev/tx/DevTx.java
URL: http://svn.apache.org/viewvc/incubator/jena/Experimental/TxTDB/trunk/src-dev/tx/DevTx.java?rev=1124946&r1=1124945&r2=1124946&view=diff
==============================================================================
--- incubator/jena/Experimental/TxTDB/trunk/src-dev/tx/DevTx.java (original)
+++ incubator/jena/Experimental/TxTDB/trunk/src-dev/tx/DevTx.java Thu May 19 15:34:56 2011
@@ -61,4 +61,6 @@ public class DevTx
      */
     
     // TDB 0.8.10 is rev 8718; TxTDB forked at 8731
+    // Diff of SF ref 8718 to Apache cross over applied. (src/ only)
+    // Now Apache: rev 1124661 
 }

Modified: incubator/jena/Experimental/TxTDB/trunk/src-dev/tx/TxMain.java
URL: http://svn.apache.org/viewvc/incubator/jena/Experimental/TxTDB/trunk/src-dev/tx/TxMain.java?rev=1124946&r1=1124945&r2=1124946&view=diff
==============================================================================
--- incubator/jena/Experimental/TxTDB/trunk/src-dev/tx/TxMain.java (original)
+++ incubator/jena/Experimental/TxTDB/trunk/src-dev/tx/TxMain.java Thu May 19 15:34:56 2011
@@ -81,7 +81,7 @@ public class TxMain
         blkMgr.beginUpdate() ;
         Block block = blkMgr.allocate(-1) ;
         blkMgr.release(block) ;
-        blkMgr.release(block) ; // Need to check where an active bloock is - promote is one read -> write? 
+        blkMgr.release(block) ; // Need to check where an active block is - promote is one read -> write? 
         Block block2 = blkMgr.allocate(-1) ;
         blkMgr.endUpdate() ;
       

Modified: incubator/jena/Experimental/TxTDB/trunk/src/main/java/com/hp/hpl/jena/tdb/base/block/BlockMgrTracker.java
URL: http://svn.apache.org/viewvc/incubator/jena/Experimental/TxTDB/trunk/src/main/java/com/hp/hpl/jena/tdb/base/block/BlockMgrTracker.java?rev=1124946&r1=1124945&r2=1124946&view=diff
==============================================================================
--- incubator/jena/Experimental/TxTDB/trunk/src/main/java/com/hp/hpl/jena/tdb/base/block/BlockMgrTracker.java (original)
+++ incubator/jena/Experimental/TxTDB/trunk/src/main/java/com/hp/hpl/jena/tdb/base/block/BlockMgrTracker.java Thu May 19 15:34:56 2011
@@ -16,12 +16,13 @@ import static com.hp.hpl.jena.tdb.base.b
 import static com.hp.hpl.jena.tdb.base.block.BlockMgrTracker.Action.Write ;
 
 import java.util.ArrayList ;
-import java.util.HashMap ;
 import java.util.Iterator ;
 import java.util.List ;
 import java.util.Map ;
 
+import org.openjena.atlas.lib.MultiSet ;
 import org.openjena.atlas.lib.Pair ;
+import org.openjena.atlas.lib.RefLong ;
 import org.slf4j.Logger ;
 import org.slf4j.LoggerFactory ;
 
@@ -45,88 +46,6 @@ public class BlockMgrTracker /*extends B
     
     // The use of AtomicInteger here isn't for the atomicity but because they are also "refs to ints"
     
-    static final class RefLong
-    {
-        private long value ;
-        public RefLong() { this(0) ; }
-        public RefLong(long v) { value = v ; }
-        public long value()     { return value ; }
-        public void inc()       { value++ ; } 
-        public void dec()       { --value ; }
-        public long getAndInc() { return value++ ; }
-        public long incAndGet() { return ++value ; }
-        public long getAndDec() { return value-- ; }
-        public long decAndGet() { return -value ; }
-        public void add(long v) { value += v ; }
-        public void set(long v) { value = v ; }
-        @Override public String toString() { return "Ref:"+Long.toString(value) ; } 
-        // hashCode and equals are Object equality - this is a mutable object
-    }
-
-    static class MultiSet<T> implements Iterable<T>
-    {
-        private Map<T,RefLong> map   = new HashMap<T,RefLong>() ;
-        private RefLong get(T obj)
-        {
-            RefLong z = map.get(obj) ;
-            if ( z == null )
-            {
-                z = new RefLong(0) ;
-                map.put(obj, z) ;
-            }
-            return z ;
-        }
-        
-        public boolean isEmpty()        { return map.isEmpty() ; }
-        public boolean contains(T obj)  { return map.containsKey(obj) ; }
-        public void add(T obj)          { get(obj).inc(); } 
-        public void remove(T obj)
-        {
-            RefLong x = map.get(obj) ;
-            if ( x == null ) return ;
-            x.dec() ;
-            if ( x.value() == 0 )
-                map.remove(obj) ;
-        }
-        public void clear() { map.clear() ; }
-        public long count(T obj)
-        {
-            if ( ! map.containsKey(obj) ) return 0 ;
-            return map.get(obj).value() ;
-        }
-        
-        @Override
-        public Iterator<T> iterator()
-        {
-            // CRUDE
-            // TODO Fixme
-            List<T> expanded = new ArrayList<T>() ;
-            for ( Map.Entry<T, RefLong> e : map.entrySet() )
-            {
-                for ( int i = 0 ; i < e.getValue().value() ; i++ )
-                    expanded.add(e.getKey()) ;
-            }
-            
-            return expanded.iterator() ;
-        }
-        
-        @Override public String toString()
-        {
-            StringBuilder sb = new StringBuilder() ;
-            String sep = "" ;
-            for ( Map.Entry<T, RefLong> e : map.entrySet() )
-            {
-                sb.append(sep) ;
-                sep = ", " ;
-                sb.append(e.getKey().toString()) ;
-                sb.append("=") ;
-                sb.append(Long.toString(e.getValue().value())) ;
-            }
-            
-            return sb.toString() ;
-        }
-        
-    }    
     private static boolean contains(Map<Integer,RefLong> x, Integer id) { return x.containsKey(id) ; } 
     
     protected final MultiSet<Integer> activeReadBlocks   = new MultiSet<Integer>() ;

Modified: incubator/jena/Experimental/TxTDB/trunk/src/test/java/com/hp/hpl/jena/tdb/migrate/TS_Migrate.java
URL: http://svn.apache.org/viewvc/incubator/jena/Experimental/TxTDB/trunk/src/test/java/com/hp/hpl/jena/tdb/migrate/TS_Migrate.java?rev=1124946&r1=1124945&r2=1124946&view=diff
==============================================================================
--- incubator/jena/Experimental/TxTDB/trunk/src/test/java/com/hp/hpl/jena/tdb/migrate/TS_Migrate.java (original)
+++ incubator/jena/Experimental/TxTDB/trunk/src/test/java/com/hp/hpl/jena/tdb/migrate/TS_Migrate.java Thu May 19 15:34:56 2011
@@ -14,7 +14,6 @@ import com.hp.hpl.jena.tdb.junit.Base_TS
 @RunWith(Suite.class)
 @Suite.SuiteClasses( {
     TestGraphUnionRead.class
-    //, 
 })
 
 public class TS_Migrate extends Base_TS

Modified: incubator/jena/Jena2/ARQ/trunk/src-dev/dev/DevARQ.java
URL: http://svn.apache.org/viewvc/incubator/jena/Jena2/ARQ/trunk/src-dev/dev/DevARQ.java?rev=1124946&r1=1124945&r2=1124946&view=diff
==============================================================================
--- incubator/jena/Jena2/ARQ/trunk/src-dev/dev/DevARQ.java (original)
+++ incubator/jena/Jena2/ARQ/trunk/src-dev/dev/DevARQ.java Thu May 19 15:34:56 2011
@@ -2,6 +2,11 @@ package dev ;
 
 public class DevARQ
 {
+    // Split pom into:
+    //   downloadmaker
+    //   Everything else.
+    
+    
     // Rework documentation - extensions are now SPARQL 1.1-isms
     
     // Config assembler.

Modified: incubator/jena/Jena2/ARQ/trunk/src-test/org/openjena/atlas/lib/TS_Lib.java
URL: http://svn.apache.org/viewvc/incubator/jena/Jena2/ARQ/trunk/src-test/org/openjena/atlas/lib/TS_Lib.java?rev=1124946&r1=1124945&r2=1124946&view=diff
==============================================================================
--- incubator/jena/Jena2/ARQ/trunk/src-test/org/openjena/atlas/lib/TS_Lib.java (original)
+++ incubator/jena/Jena2/ARQ/trunk/src-test/org/openjena/atlas/lib/TS_Lib.java Thu May 19 15:34:56 2011
@@ -28,6 +28,7 @@ import org.junit.runners.Suite ;
     , TestStrUtils.class
     , TestXMLLib.class
     , TestAlarmClock.class
+    , TestRefLong.class 
 } )
 
 public class TS_Lib

Copied: incubator/jena/Jena2/ARQ/trunk/src-test/org/openjena/atlas/lib/TestMultiSet.java (from r1124668, incubator/jena/Experimental/TxTDB/trunk/src-dev/tx/TestMultiSet.java)
URL: http://svn.apache.org/viewvc/incubator/jena/Jena2/ARQ/trunk/src-test/org/openjena/atlas/lib/TestMultiSet.java?p2=incubator/jena/Jena2/ARQ/trunk/src-test/org/openjena/atlas/lib/TestMultiSet.java&p1=incubator/jena/Experimental/TxTDB/trunk/src-dev/tx/TestMultiSet.java&r1=1124668&r2=1124946&rev=1124946&view=diff
==============================================================================
--- incubator/jena/Experimental/TxTDB/trunk/src-dev/tx/TestMultiSet.java (original)
+++ incubator/jena/Jena2/ARQ/trunk/src-test/org/openjena/atlas/lib/TestMultiSet.java Thu May 19 15:34:56 2011
@@ -4,11 +4,89 @@
  * [See end of file]
  */
 
-package tx;
+package org.openjena.atlas.lib;
 
-public class TestMultiSet
+import java.util.Arrays ;
+import java.util.Collections ;
+import java.util.List ;
+
+import org.junit.Test ;
+import org.openjena.atlas.iterator.Iter ;
+import org.openjena.atlas.junit.BaseTest ;
+import org.openjena.atlas.lib.MultiSet ;
+
+
+public class TestMultiSet extends BaseTest
 {
+    @Test public void multiSet_01()
+    {
+        MultiSet<String> x = new MultiSet<String>() ;
+        assertTrue(x.isEmpty()) ;
+        assertEquals(0, x.get("A")) ;
+    }
+
+    @Test public void multiSet_02()
+    {
+        MultiSet<String> x = new MultiSet<String>() ;
+        x.add("A") ;
+        assertFalse(x.isEmpty()) ;
+        assertEquals(1, x.get("A") ) ;
+        x.add("A") ;
+        assertEquals(2, x.get("A") ) ;
+    }
+
+    @Test public void multiSet_03()
+    {
+        MultiSet<String> x = new MultiSet<String>() ;
+        x.add("A") ;
+        x.add("A") ;
+        x.remove("A") ;
+        assertEquals(1, x.get("A") ) ;
+        assertTrue(x.contains("A")) ;
+        x.remove("A") ;
+        assertEquals(0, x.get("A") ) ;
+        assertFalse(x.contains("A")) ;
+    }
+
+    @Test public void multiSet_04()
+    {
+        String[] data = { } ;
+        iterTest(data) ;
+    }
+
+
+    @Test public void multiSet_05()
+    {
+        String[] data = { "A" } ;
+        iterTest(data) ;
+    }
+
+    @Test public void multiSet_06()
+    {
+        String[] data = { "A", "B", "C" } ;
+        iterTest(data) ;
+    }
+
+
+    @Test public void multiSet_07()
+    {
+        String[] data = { "A", "B", "C", "A" } ;
+        iterTest(data) ;
+    }
 
+    
+    private static void iterTest(String[] data)
+    {
+        List<String> expected = Arrays.asList(data) ;
+        MultiSet<String> x = new MultiSet<String>() ;
+        for ( String str : data )
+            x.add(str) ;
+        List<String> actual = Iter.toList(x.iterator()) ;
+        Collections.sort(expected) ;
+        Collections.sort(actual) ;
+        assertEquals(expected, actual) ;
+    }
+    
 }
 
 /*

Propchange: incubator/jena/Jena2/ARQ/trunk/src-test/org/openjena/atlas/lib/TestMultiSet.java
------------------------------------------------------------------------------
    svn:mime-type = text/plain

Copied: incubator/jena/Jena2/ARQ/trunk/src-test/org/openjena/atlas/lib/TestRefLong.java (from r1124668, incubator/jena/Experimental/TxTDB/trunk/src-dev/tx/TestRefLong.java)
URL: http://svn.apache.org/viewvc/incubator/jena/Jena2/ARQ/trunk/src-test/org/openjena/atlas/lib/TestRefLong.java?p2=incubator/jena/Jena2/ARQ/trunk/src-test/org/openjena/atlas/lib/TestRefLong.java&p1=incubator/jena/Experimental/TxTDB/trunk/src-dev/tx/TestRefLong.java&r1=1124668&r2=1124946&rev=1124946&view=diff
==============================================================================
--- incubator/jena/Experimental/TxTDB/trunk/src-dev/tx/TestRefLong.java (original)
+++ incubator/jena/Jena2/ARQ/trunk/src-test/org/openjena/atlas/lib/TestRefLong.java Thu May 19 15:34:56 2011
@@ -4,10 +4,56 @@
  * [See end of file]
  */
 
-package tx;
+package org.openjena.atlas.lib;
 
-public class TestRefLong
+import org.junit.Test ;
+import org.openjena.atlas.junit.BaseTest ;
+import org.openjena.atlas.lib.RefLong ;
+
+
+public class TestRefLong extends BaseTest
 {
+    @Test public void ref_01()
+    {
+        RefLong ref1 = new RefLong() ;
+        assertEquals(0, ref1.value()) ;
+        RefLong ref2 = new RefLong() ;
+        assertNotSame(ref1, ref2) ;
+    }
+    
+    @Test public void ref_02()
+    {
+        RefLong ref = new RefLong() ;
+        assertEquals(0, ref.value()) ;
+        ref.inc() ;
+        assertEquals(1, ref.value()) ;
+        ref.dec() ;
+        assertEquals(0, ref.value()) ;
+    }
+    
+    @Test public void ref_03()
+    {
+        RefLong ref = new RefLong(99) ;
+        assertEquals(99, ref.value()) ;
+        long x = ref.incAndGet() ;
+        assertEquals(100, x) ;
+        assertEquals(100, ref.value()) ;
+        x = ref.getAndInc() ;
+        assertEquals(100, x) ;
+        assertEquals(101, ref.value()) ;
+    }
+    
+    @Test public void ref_04()
+    {
+        RefLong ref = new RefLong(99) ;
+        assertEquals(99, ref.value()) ;
+        long x = ref.decAndGet() ;
+        assertEquals(98, x) ;
+        assertEquals(98, ref.value()) ;
+        x = ref.getAndDec() ;
+        assertEquals(98, x) ;
+        assertEquals(97, ref.value()) ;
+    }
 
 }
 

Propchange: incubator/jena/Jena2/ARQ/trunk/src-test/org/openjena/atlas/lib/TestRefLong.java
------------------------------------------------------------------------------
    svn:mime-type = text/plain

Added: incubator/jena/Jena2/ARQ/trunk/src/org/openjena/atlas/lib/MultiSet.java
URL: http://svn.apache.org/viewvc/incubator/jena/Jena2/ARQ/trunk/src/org/openjena/atlas/lib/MultiSet.java?rev=1124946&view=auto
==============================================================================
--- incubator/jena/Jena2/ARQ/trunk/src/org/openjena/atlas/lib/MultiSet.java (added)
+++ incubator/jena/Jena2/ARQ/trunk/src/org/openjena/atlas/lib/MultiSet.java Thu May 19 15:34:56 2011
@@ -0,0 +1,169 @@
+/*
+ * (c) Copyright 2011 Epimorphics Ltd.
+ * All rights reserved.
+ * [See end of file]
+ */
+
+package org.openjena.atlas.lib;
+
+import java.util.ArrayList ;
+import java.util.HashMap ;
+import java.util.Iterator ;
+import java.util.List ;
+import java.util.Map ;
+import java.util.NoSuchElementException ;
+
+public class MultiSet<T> implements Iterable<T>
+{
+    private Map<T,RefLong> map   = new HashMap<T,RefLong>() ;
+    private RefLong _get(T obj)
+    {
+        RefLong z = map.get(obj) ;
+        if ( z == null )
+        {
+            z = new RefLong(0) ;
+            map.put(obj, z) ;
+        }
+        return z ;
+    }
+    
+    public boolean isEmpty()        { return map.isEmpty() ; }
+    public boolean contains(T obj)  { return map.containsKey(obj) ; }
+    public void add(T obj)          { _get(obj).inc(); } 
+    public long get(T obj)
+    {
+        RefLong z = map.get(obj) ;
+        if ( z == null )
+            return 0 ;
+        return z.value() ;
+    }
+    
+    public void remove(T obj)
+    {
+        RefLong x = map.get(obj) ;
+        if ( x == null ) return ;
+        x.dec() ;
+        if ( x.value() == 0 )
+            map.remove(obj) ;
+    }
+    public void clear() { map.clear() ; }
+    public long count(T obj)
+    {
+        if ( ! map.containsKey(obj) ) return 0 ;
+        return map.get(obj).value() ;
+    }
+    
+    //@Override
+    private Iterator<T> iterator1()
+    {
+        // CRUDE
+        List<T> expanded = new ArrayList<T>() ;
+        for ( Map.Entry<T, RefLong> e : map.entrySet() )
+        {
+            for ( int i = 0 ; i < e.getValue().value() ; i++ )
+                expanded.add(e.getKey()) ;
+        }
+        
+        return expanded.iterator() ;
+    }
+    
+    //@Override
+    public Iterator<T> iterator()
+    {
+        return new Iterator<T>() {
+            
+            Iterator<T> keys = map.keySet().iterator() ;
+            T key = null ;
+            long count = 0 ;
+            T slot = null ;
+            
+            //@Override
+            public boolean hasNext()
+            {
+                if ( slot != null )
+                    return true ;
+                
+                if ( keys == null ) 
+                    return false ;
+                
+                if ( key != null )
+                {
+                    if ( count < get(key) )
+                    {
+                        count++ ;
+                        slot = key ;
+                        return true ;
+                    }
+                    // End of this key.
+                    key = null ;
+                }
+                    
+                if ( keys.hasNext() )
+                {
+                    key = keys.next() ;
+                    count = 1 ;
+                    slot = key ;
+                    return true ;
+                }
+                keys = null ;
+                return false ;
+            }
+
+            //@Override
+            public T next()
+            {
+                if ( ! hasNext() ) throw new NoSuchElementException() ;
+                T x = slot ;
+                slot = null ;
+                return x ;
+            }
+
+            //@Override
+            public void remove()
+            { throw new UnsupportedOperationException() ; }
+        } ; 
+    }
+    
+    @Override public String toString()
+    {
+        StringBuilder sb = new StringBuilder() ;
+        String sep = "" ;
+        for ( Map.Entry<T, RefLong> e : map.entrySet() )
+        {
+            sb.append(sep) ;
+            sep = ", " ;
+            sb.append(e.getKey().toString()) ;
+            sb.append("=") ;
+            sb.append(Long.toString(e.getValue().value())) ;
+        }
+        
+        return sb.toString() ;
+    }
+    
+}
+/*
+ * (c) Copyright 2011 Epimorphics Ltd.
+ * All rights reserved.
+ *
+ * Redistribution and use in source and binary forms, with or without
+ * modification, are permitted provided that the following conditions
+ * are met:
+ * 1. Redistributions of source code must retain the above copyright
+ *    notice, this list of conditions and the following disclaimer.
+ * 2. Redistributions in binary form must reproduce the above copyright
+ *    notice, this list of conditions and the following disclaimer in the
+ *    documentation and/or other materials provided with the distribution.
+ * 3. The name of the author may not be used to endorse or promote products
+ *    derived from this software without specific prior written permission.
+ *
+ * THIS SOFTWARE IS PROVIDED BY THE AUTHOR ``AS IS'' AND ANY EXPRESS OR
+ * IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES
+ * OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED.
+ * IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY DIRECT, INDIRECT,
+ * INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT
+ * NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
+ * DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
+ * THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
+ * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF
+ * THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+ */
\ No newline at end of file

Propchange: incubator/jena/Jena2/ARQ/trunk/src/org/openjena/atlas/lib/MultiSet.java
------------------------------------------------------------------------------
    svn:mime-type = text/plain

Added: incubator/jena/Jena2/ARQ/trunk/src/org/openjena/atlas/lib/RefLong.java
URL: http://svn.apache.org/viewvc/incubator/jena/Jena2/ARQ/trunk/src/org/openjena/atlas/lib/RefLong.java?rev=1124946&view=auto
==============================================================================
--- incubator/jena/Jena2/ARQ/trunk/src/org/openjena/atlas/lib/RefLong.java (added)
+++ incubator/jena/Jena2/ARQ/trunk/src/org/openjena/atlas/lib/RefLong.java Thu May 19 15:34:56 2011
@@ -0,0 +1,51 @@
+/*
+ * (c) Copyright 2011 Epimorphics Ltd.
+ * All rights reserved.
+ * [See end of file]
+ */
+
+package org.openjena.atlas.lib;
+
+public final class RefLong
+{
+    private long value ;
+    public RefLong() { this(0) ; }
+    public RefLong(long v) { value = v ; }
+    public long value()     { return value ; }
+    public void inc()       { value++ ; } 
+    public void dec()       { --value ; }
+    public long getAndInc() { return value++ ; }
+    public long incAndGet() { return ++value ; }
+    public long getAndDec() { return value-- ; }
+    public long decAndGet() { return --value ; }
+    public void add(long v) { value += v ; }
+    public void set(long v) { value = v ; }
+    @Override public String toString() { return "Ref:"+Long.toString(value) ; } 
+    // hashCode and equals are Object equality - this is a mutable object
+}
+/*
+ * (c) Copyright 2011 Epimorphics Ltd.
+ * All rights reserved.
+ *
+ * Redistribution and use in source and binary forms, with or without
+ * modification, are permitted provided that the following conditions
+ * are met:
+ * 1. Redistributions of source code must retain the above copyright
+ *    notice, this list of conditions and the following disclaimer.
+ * 2. Redistributions in binary form must reproduce the above copyright
+ *    notice, this list of conditions and the following disclaimer in the
+ *    documentation and/or other materials provided with the distribution.
+ * 3. The name of the author may not be used to endorse or promote products
+ *    derived from this software without specific prior written permission.
+ *
+ * THIS SOFTWARE IS PROVIDED BY THE AUTHOR ``AS IS'' AND ANY EXPRESS OR
+ * IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES
+ * OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED.
+ * IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY DIRECT, INDIRECT,
+ * INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT
+ * NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
+ * DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
+ * THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
+ * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF
+ * THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+ */
\ No newline at end of file

Propchange: incubator/jena/Jena2/ARQ/trunk/src/org/openjena/atlas/lib/RefLong.java
------------------------------------------------------------------------------
    svn:mime-type = text/plain