MNEMONIC-554: Diagnostic warning for sun.misc.Unsafe API
diff --git a/mnemonic-collections/src/main/java/org/apache/mnemonic/collections/DurableArrayImpl.java b/mnemonic-collections/src/main/java/org/apache/mnemonic/collections/DurableArrayImpl.java
index 56b3f1b..4d1bf32 100644
--- a/mnemonic-collections/src/main/java/org/apache/mnemonic/collections/DurableArrayImpl.java
+++ b/mnemonic-collections/src/main/java/org/apache/mnemonic/collections/DurableArrayImpl.java
@@ -30,8 +30,6 @@
import org.apache.mnemonic.Utils;
import java.util.NoSuchElementException;
-
-import sun.misc.Unsafe;
import java.util.Iterator;
@SuppressWarnings("restriction")
@@ -41,7 +39,8 @@
private static final int MAX_OBJECT_SIZE = 8;
private static long[][] fieldInfo;
private Object[] genericField;
- private Unsafe unsafe;
+ @SuppressWarnings({"restriction", "UseOfSunClasses"})
+ private sun.misc.Unsafe unsafe;
private EntityFactoryProxy[] factoryProxy;
private DurableType[] genericType;
private volatile boolean autoReclaim;
diff --git a/mnemonic-collections/src/main/java/org/apache/mnemonic/collections/DurableHashMapImpl.java b/mnemonic-collections/src/main/java/org/apache/mnemonic/collections/DurableHashMapImpl.java
index 061018f..6adcde4 100644
--- a/mnemonic-collections/src/main/java/org/apache/mnemonic/collections/DurableHashMapImpl.java
+++ b/mnemonic-collections/src/main/java/org/apache/mnemonic/collections/DurableHashMapImpl.java
@@ -31,7 +31,6 @@
import org.apache.mnemonic.RetrieveDurableEntityError;
import org.apache.mnemonic.Utils;
import org.apache.commons.lang3.ArrayUtils;
-import sun.misc.Unsafe;
import java.util.Iterator;
import java.util.NoSuchElementException;
@@ -43,7 +42,8 @@
private static final float DEFAULT_MAP_LOAD_FACTOR = 0.75f;
private static final long MAX_OBJECT_SIZE = 8;
private static long[][] fieldInfo;
- private Unsafe unsafe;
+ @SuppressWarnings({"restriction", "UseOfSunClasses"})
+ private sun.misc.Unsafe unsafe;
private EntityFactoryProxy[] factoryProxy;
private EntityFactoryProxy[] listefproxies;
private DurableType[] genericField;
@@ -56,7 +56,7 @@
private A allocator;
/**
* Set initial capacity for a hashmap. It can grow in size.
- *
+ *
* @param capacity
* Initial capacity to be set
*/
@@ -74,7 +74,7 @@
/**
* Add a new key-value pair to map
- *
+ *
* @param key
* the key to be set
*
@@ -97,7 +97,7 @@
/**
* Add a new key-value pair to map at a given bucket address
- *
+ *
* @param key
* the key to be set
*
@@ -181,7 +181,7 @@
/**
* Return a value to which key is mapped
- *
+ *
* @param key
* the key whose value is to be retrieved
*
@@ -197,7 +197,7 @@
/**
* Return a value to which key is mapped given a bucket address
- *
+ *
* @param key
* the key whose value is to be retrieved
*
@@ -227,7 +227,7 @@
/**
* Remove a mapping for a specified key
- *
+ *
* @param key
* the key whose value is to be removed
*
@@ -243,7 +243,7 @@
/**
* Remove a mapping for a specified key at given bucket address
- *
+ *
* @param key
* the key whose value is to be removed
*
@@ -272,12 +272,12 @@
head = head.getNext();
}
if (true == found) {
- if (null == prev) {
+ if (null == prev) {
if (null == head.getNext()) {
unsafe.putAddress(bucketAddr, 0L);
head.destroy();
} else {
- unsafe.putAddress(bucketAddr, head.getNext().getHandler());
+ unsafe.putAddress(bucketAddr, head.getNext().getHandler());
head.destroy();
}
} else {
@@ -285,19 +285,19 @@
head.destroy();
}
mapSize--;
- }
+ }
}
return retValue;
}
/**
* Rehashes the entire map into a new map of given capacity
- *
+ *
* @param newCapacity
* the capacity of new map
*/
public void resize(long newCapacity) {
- MemChunkHolder<A> prevHolder = holder;
+ MemChunkHolder<A> prevHolder = holder;
long bucketAddr = prevHolder.get();
long maxbucketAddr = bucketAddr + MAX_OBJECT_SIZE * totalCapacity;
holder = allocator.createChunk(MAX_OBJECT_SIZE * newCapacity, autoReclaim);
@@ -328,7 +328,7 @@
/**
* Transfers a map item from old map to the new map
- *
+ *
* @param elem
* the item in the old map
*/
@@ -349,7 +349,7 @@
/**
* Recomputes the size of the map during restore without persistence
- *
+ *
* @return size of the map
*/
protected long recomputeMapSize() {
@@ -457,7 +457,7 @@
}
@Override
- public void restoreDurableEntity(A allocator, EntityFactoryProxy[] factoryProxy,
+ public void restoreDurableEntity(A allocator, EntityFactoryProxy[] factoryProxy,
DurableType[] gField, long phandler, boolean autoReclaim, ReclaimContext rctx)
throws RestoreDurableEntityError {
initializeDurableEntity(allocator, factoryProxy, gField, autoReclaim, rctx);
@@ -477,7 +477,7 @@
@Override
- public void initializeDurableEntity(A allocator, EntityFactoryProxy[] factoryProxy,
+ public void initializeDurableEntity(A allocator, EntityFactoryProxy[] factoryProxy,
DurableType[] gField, boolean autoReclaim, ReclaimContext rctx) {
this.allocator = allocator;
this.factoryProxy = factoryProxy;
@@ -504,7 +504,7 @@
}
@Override
- public void createDurableEntity(A allocator, EntityFactoryProxy[] factoryProxy,
+ public void createDurableEntity(A allocator, EntityFactoryProxy[] factoryProxy,
DurableType[] gField, boolean autoReclaim, ReclaimContext rctx) throws OutOfHybridMemory {
initializeDurableEntity(allocator, factoryProxy, gField, autoReclaim, rctx);
this.holder = allocator.createChunk(MAX_OBJECT_SIZE * totalCapacity, autoReclaim, reclaimcontext);
@@ -596,4 +596,3 @@
}
}
}
-
diff --git a/mnemonic-collections/src/main/java/org/apache/mnemonic/collections/DurableHashSetImpl.java b/mnemonic-collections/src/main/java/org/apache/mnemonic/collections/DurableHashSetImpl.java
index 253fc85..c54640b 100644
--- a/mnemonic-collections/src/main/java/org/apache/mnemonic/collections/DurableHashSetImpl.java
+++ b/mnemonic-collections/src/main/java/org/apache/mnemonic/collections/DurableHashSetImpl.java
@@ -28,7 +28,6 @@
import org.apache.commons.lang3.ArrayUtils;
import org.apache.mnemonic.resgc.ReclaimContext;
-import sun.misc.Unsafe;
import java.util.Iterator;
@SuppressWarnings("restriction")
@@ -36,7 +35,8 @@
extends DurableHashSet<E> implements MemoryDurableEntity<A> {
private static long[][] fieldInfo;
- private Unsafe unsafe;
+ @SuppressWarnings({"restriction", "UseOfSunClasses"})
+ private sun.misc.Unsafe unsafe;
private EntityFactoryProxy[] factoryProxy;
private DurableType[] genericType;
private volatile boolean autoReclaim;
diff --git a/mnemonic-collections/src/main/java/org/apache/mnemonic/collections/DurableSinglyLinkedListImpl.java b/mnemonic-collections/src/main/java/org/apache/mnemonic/collections/DurableSinglyLinkedListImpl.java
index 9191761..be08f4b 100644
--- a/mnemonic-collections/src/main/java/org/apache/mnemonic/collections/DurableSinglyLinkedListImpl.java
+++ b/mnemonic-collections/src/main/java/org/apache/mnemonic/collections/DurableSinglyLinkedListImpl.java
@@ -26,13 +26,13 @@
import org.apache.mnemonic.RetrieveDurableEntityError;
import org.apache.mnemonic.Utils;
import org.apache.mnemonic.resgc.ReclaimContext;
-import sun.misc.Unsafe;
@SuppressWarnings("restriction")
public class DurableSinglyLinkedListImpl<A extends RestorableAllocator<A>, E>
extends DurableSinglyLinkedList<E> implements MemoryDurableEntity<A> {
private static long[][] fieldInfo;
- private Unsafe unsafe;
+ @SuppressWarnings({"restriction", "UseOfSunClasses"})
+ private sun.misc.Unsafe unsafe;
private EntityFactoryProxy[] factoryProxy;
private DurableType[] genericType;
private volatile boolean autoReclaim;
diff --git a/mnemonic-collections/src/main/java/org/apache/mnemonic/collections/DurableTreeImpl.java b/mnemonic-collections/src/main/java/org/apache/mnemonic/collections/DurableTreeImpl.java
index 6538fff..4c3f226 100644
--- a/mnemonic-collections/src/main/java/org/apache/mnemonic/collections/DurableTreeImpl.java
+++ b/mnemonic-collections/src/main/java/org/apache/mnemonic/collections/DurableTreeImpl.java
@@ -28,14 +28,13 @@
import org.apache.mnemonic.RetrieveDurableEntityError;
import org.apache.mnemonic.Utils;
-import sun.misc.Unsafe;
-
@SuppressWarnings("restriction")
public class DurableTreeImpl<A extends RestorableAllocator<A>, E extends Comparable<E>>
extends DurableTree<E> implements MemoryDurableEntity<A> {
private static long[][] fieldInfo;
- private Unsafe unsafe;
+ @SuppressWarnings({"restriction", "UseOfSunClasses"})
+ private sun.misc.Unsafe unsafe;
private EntityFactoryProxy[] factoryProxy;
private DurableType[] genericType;
private volatile boolean autoReclaim;
diff --git a/mnemonic-collections/src/test/java/org/apache/mnemonic/collections/DurableArrayNGTest.java b/mnemonic-collections/src/test/java/org/apache/mnemonic/collections/DurableArrayNGTest.java
index 5bd39a5..67f91fd 100644
--- a/mnemonic-collections/src/test/java/org/apache/mnemonic/collections/DurableArrayNGTest.java
+++ b/mnemonic-collections/src/test/java/org/apache/mnemonic/collections/DurableArrayNGTest.java
@@ -39,8 +39,6 @@
import org.testng.annotations.Test;
import org.testng.Assert;
-import sun.misc.Unsafe;
-
/**
*
*
@@ -50,7 +48,8 @@
private long cKEYCAPACITY;
private NonVolatileMemAllocator m_act;
private Random rand;
- private Unsafe unsafe;
+ @SuppressWarnings({"restriction", "UseOfSunClasses"})
+ private sun.misc.Unsafe unsafe;
protected DurableBuffer<NonVolatileMemAllocator>
genuptBuffer(NonVolatileMemAllocator act, Checksum cs, int size) {
@@ -355,13 +354,13 @@
Person<Long> person = (Person<Long>) efproxies[1].create(m_act, null, null, false);
person.setName("Alice", false);
person.setAge((short) 31);
- DurableHashMap<String, Person<Long>> first = DurableHashMapFactory.create(m_act,
+ DurableHashMap<String, Person<Long>> first = DurableHashMapFactory.create(m_act,
efproxies, gtypes, 10, false);
first.put("hello", person);
Person<Long> anotherPerson = (Person<Long>) efproxies[1].create(m_act, null, null, false);
anotherPerson.setAge((short) 30);
anotherPerson.setName("Bob", false);
- DurableHashMap<String, Person<Long>> second = DurableHashMapFactory.create(m_act,
+ DurableHashMap<String, Person<Long>> second = DurableHashMapFactory.create(m_act,
efproxies, gtypes, 10, false);
second.put("world", anotherPerson);
diff --git a/mnemonic-collections/src/test/java/org/apache/mnemonic/collections/DurableHashMapNGTest.java b/mnemonic-collections/src/test/java/org/apache/mnemonic/collections/DurableHashMapNGTest.java
index 376d739..66682e4 100644
--- a/mnemonic-collections/src/test/java/org/apache/mnemonic/collections/DurableHashMapNGTest.java
+++ b/mnemonic-collections/src/test/java/org/apache/mnemonic/collections/DurableHashMapNGTest.java
@@ -39,8 +39,6 @@
import org.testng.AssertJUnit;
import org.testng.Assert;
-import sun.misc.Unsafe;
-
/**
*
*
@@ -50,7 +48,8 @@
private long cKEYCAPACITY;
private NonVolatileMemAllocator m_act;
private Random rand;
- private Unsafe unsafe;
+ @SuppressWarnings({"restriction", "UseOfSunClasses"})
+ private sun.misc.Unsafe unsafe;
private long mInitialCapacity = 1;
protected DurableBuffer<NonVolatileMemAllocator>
@@ -127,7 +126,7 @@
public void testGetPutRemovePrimitives() {
DurableType gtypes[] = {DurableType.STRING, DurableType.INTEGER};
DurableHashMap<String, Integer> map = DurableHashMapFactory.create(m_act, null, gtypes, mInitialCapacity, false);
-
+
Long handler = map.getHandler();
Integer val = map.put("hello", 1);
AssertJUnit.assertNull(val);
@@ -142,7 +141,7 @@
val = map.get("hello");
AssertJUnit.assertEquals(3, val.intValue());
- val = map.get("world");
+ val = map.get("world");
AssertJUnit.assertEquals(2, val.intValue());
val = map.get("test");
AssertJUnit.assertNull(val);
@@ -170,11 +169,11 @@
AssertJUnit.assertEquals(entry.getKey(), "hello");
AssertJUnit.assertEquals(entry.getValue().intValue(), 3);
- DurableHashMap<String, Integer> restoredMap = DurableHashMapFactory.restore(m_act, null, gtypes, handler,
+ DurableHashMap<String, Integer> restoredMap = DurableHashMapFactory.restore(m_act, null, gtypes, handler,
false);
val = restoredMap.get("hello");
AssertJUnit.assertEquals(3, val.intValue());
- val = restoredMap.get("world");
+ val = restoredMap.get("world");
AssertJUnit.assertNull(val);
val = restoredMap.get("test");
AssertJUnit.assertNull(val);
@@ -190,10 +189,10 @@
@Test(enabled = true)
public void testGetPutKeyDurable() throws NoSuchMethodException, ClassNotFoundException {
-
+
DurableType gtypes[] = {DurableType.DURABLE, DurableType.STRING};
EntityFactoryProxy efproxies[] = {new EntityFactoryProxyHelper<Person>(Person.class)};
-
+
Person<Long> person = (Person<Long>) efproxies[0].create(m_act, null, null, false);
person.setAge((short) 31);
person.setName("Bob", true);
@@ -203,10 +202,10 @@
anotherPerson.setAge((short) 30);
anotherPerson.setName("Alice", true);
- DurableHashMap<Person<Long>, String> map = DurableHashMapFactory.create(m_act,
+ DurableHashMap<Person<Long>, String> map = DurableHashMapFactory.create(m_act,
efproxies, gtypes, mInitialCapacity, false);
String str = map.put(person, "hello");
- AssertJUnit.assertNull(str);
+ AssertJUnit.assertNull(str);
str = map.get(person);
AssertJUnit.assertEquals(str, "hello");
str = map.put(person, "world");
@@ -215,12 +214,12 @@
AssertJUnit.assertEquals(str, "world");
str = map.put(anotherPerson, "testing");
- AssertJUnit.assertNull(str);
+ AssertJUnit.assertNull(str);
str = map.get(anotherPerson);
AssertJUnit.assertEquals(str, "testing");
str = map.get(person);
AssertJUnit.assertEquals(str, "world");
-
+
Person<Long> third = (Person<Long>) efproxies[0].create(m_act, null, null, false);
third.setAge((short) 31);
third.setName("Bob", true);
@@ -233,14 +232,14 @@
@Test(enabled = true)
public void testGetPutValueDurable() throws NoSuchMethodException, ClassNotFoundException {
-
+
DurableType gtypes[] = {DurableType.STRING, DurableType.DURABLE};
EntityFactoryProxy efproxies[] = {null, new EntityFactoryProxyHelper<Person>(Person.class)};
-
+
Person<Long> person = (Person<Long>) efproxies[1].create(m_act, null, null, false);
person.setName("Alice", false);
person.setAge((short) 31);
- DurableHashMap<String, Person<Long>> map = DurableHashMapFactory.create(m_act,
+ DurableHashMap<String, Person<Long>> map = DurableHashMapFactory.create(m_act,
efproxies, gtypes, mInitialCapacity, false);
map.put("hello", person);
Person<Long> anotherPerson = (Person<Long>) efproxies[1].create(m_act, null, null, false);
@@ -267,7 +266,7 @@
@Test(enabled = true)
public void testGetPutKeyValueDurable() throws NoSuchMethodException, ClassNotFoundException {
-
+
DurableType gtypes[] = {DurableType.DURABLE, DurableType.DURABLE};
EntityFactoryProxy efproxies[] = {new EntityFactoryProxyHelper<Person>(Person.class),
new EntityFactoryProxyHelper<Person>(Person.class)};
@@ -280,12 +279,12 @@
anotherPerson.setAge((short) 30);
anotherPerson.setName("Alice", true);
- DurableHashMap<Person<Long>, Person<Long>> map = DurableHashMapFactory.create(m_act,
+ DurableHashMap<Person<Long>, Person<Long>> map = DurableHashMapFactory.create(m_act,
efproxies, gtypes, mInitialCapacity, false);
map.put(person, anotherPerson);
Person<Long> per = map.get(person);
- AssertJUnit.assertEquals(30, (int)per.getAge());
+ AssertJUnit.assertEquals(30, (int)per.getAge());
per = map.get(anotherPerson);
AssertJUnit.assertNull(per);
@@ -300,7 +299,7 @@
EntityFactoryProxy mapefproxies[] = {null,
new EntityFactoryProxyHelper<DurableHashMap>(DurableHashMap.class, 2), null,
new EntityFactoryProxyHelper<Person>(Person.class)};
-
+
Person<Long> person = PersonFactory.create(m_act, null, null, false);
person.setAge((short) 31);
person.setName("Bob", true);
@@ -309,8 +308,8 @@
Person<Long> anotherPerson = PersonFactory.create(m_act, null, null, false);
anotherPerson.setAge((short) 30);
anotherPerson.setName("Alice", true);
-
- DurableHashMap<String, Person<Long>> map = DurableHashMapFactory.create(m_act,
+
+ DurableHashMap<String, Person<Long>> map = DurableHashMapFactory.create(m_act,
efproxies, gtypes, mInitialCapacity, false);
map.put("world", person);
Person<Long> per = map.get("world");
@@ -328,7 +327,7 @@
bigMap.destroy();
}
-
+
@Test(enabled = true)
public void testAutoResizeMaps() {
DurableType gtypes[] = {DurableType.STRING, DurableType.INTEGER};
@@ -352,8 +351,8 @@
AssertJUnit.assertEquals(map.getSize(), 200);
for (int i = 0; i < 200; i++) {
AssertJUnit.assertEquals(map.get("str" + i).intValue(), i);
- }
- DurableHashMap<String, Integer> restoredMap = DurableHashMapFactory.restore(m_act, null, gtypes, handler,
+ }
+ DurableHashMap<String, Integer> restoredMap = DurableHashMapFactory.restore(m_act, null, gtypes, handler,
false);
AssertJUnit.assertEquals(restoredMap.getSize(), 200);
for (int i = 0; i < 200; i++) {
diff --git a/mnemonic-collections/src/test/java/org/apache/mnemonic/collections/DurableHashSetNGTest.java b/mnemonic-collections/src/test/java/org/apache/mnemonic/collections/DurableHashSetNGTest.java
index d37c7b2..261a0a6 100644
--- a/mnemonic-collections/src/test/java/org/apache/mnemonic/collections/DurableHashSetNGTest.java
+++ b/mnemonic-collections/src/test/java/org/apache/mnemonic/collections/DurableHashSetNGTest.java
@@ -38,8 +38,6 @@
import org.testng.AssertJUnit;
import org.testng.Assert;
-import sun.misc.Unsafe;
-
/**
*
*
@@ -49,7 +47,8 @@
private long cKEYCAPACITY;
private NonVolatileMemAllocator m_act;
private Random rand;
- private Unsafe unsafe;
+ @SuppressWarnings({"restriction", "UseOfSunClasses"})
+ private sun.misc.Unsafe unsafe;
private long initialCapacity;
protected DurableBuffer<NonVolatileMemAllocator>
@@ -279,4 +278,3 @@
}
}
-
diff --git a/mnemonic-collections/src/test/java/org/apache/mnemonic/collections/DurableTreeNGTest.java b/mnemonic-collections/src/test/java/org/apache/mnemonic/collections/DurableTreeNGTest.java
index 7047bbb..6fb76c9 100644
--- a/mnemonic-collections/src/test/java/org/apache/mnemonic/collections/DurableTreeNGTest.java
+++ b/mnemonic-collections/src/test/java/org/apache/mnemonic/collections/DurableTreeNGTest.java
@@ -35,8 +35,6 @@
import org.testng.AssertJUnit;
//import org.testng.Assert;
-import sun.misc.Unsafe;
-
/**
*
*
@@ -46,7 +44,8 @@
private long cKEYCAPACITY;
private NonVolatileMemAllocator m_act;
private Random rand;
- private Unsafe unsafe;
+ @SuppressWarnings({"restriction", "UseOfSunClasses"})
+ private sun.misc.Unsafe unsafe;
@BeforeClass
public void setUp() throws Exception {
diff --git a/mnemonic-core/src/main/java/org/apache/mnemonic/AnnotatedDurableEntityClass.java b/mnemonic-core/src/main/java/org/apache/mnemonic/AnnotatedDurableEntityClass.java
index fa44c62..15d27d6 100644
--- a/mnemonic-core/src/main/java/org/apache/mnemonic/AnnotatedDurableEntityClass.java
+++ b/mnemonic-core/src/main/java/org/apache/mnemonic/AnnotatedDurableEntityClass.java
@@ -56,7 +56,6 @@
import com.squareup.javapoet.TypeVariableName;
import org.apache.mnemonic.resgc.ReclaimContext;
-import sun.misc.Unsafe;
/**
* this class managed to generate generic durable concrete object and their
@@ -200,7 +199,7 @@
m_entitymtdinfo.put("initializeDurableEntity", new MethodInfo());
m_entitymtdinfo.put("createDurableEntity", new MethodInfo());
m_entitymtdinfo.put("restoreDurableEntity", new MethodInfo());
-
+
m_extramtdinfo.put("getNativeFieldInfo_static", new MethodInfo());
}
@@ -210,6 +209,8 @@
FieldInfo fieldinfo;
String methodname;
long fieldoff = 0;
+ AnnotationSpec unsafeannotation = AnnotationSpec.builder(SuppressWarnings.class)
+ .addMember("value", "{$S,$S}", "restriction", "UseOfSunClasses").build();
TypeElement intf_durable = m_elemutils.getTypeElement(Durable.class.getCanonicalName());
TypeElement intf_entity = m_elemutils.getTypeElement(MemoryDurableEntity.class.getCanonicalName());
// System.err.printf("<><><><><> %s ======\n", intf_entity.toString());
@@ -228,8 +229,10 @@
fieldinfo = new FieldInfo();
fieldinfo.name = String.format("m_unsafe_%s", Utils.genRandomString());
- fieldinfo.type = TypeName.get(m_elemutils.getTypeElement(Unsafe.class.getCanonicalName()).asType());
- fieldinfo.specbuilder = FieldSpec.builder(fieldinfo.type, fieldinfo.name, Modifier.PRIVATE);
+ // fieldinfo.type = TypeName.get(m_elemutils.getTypeElement(sun.misc.Unsafe.class.getCanonicalName()).asType());
+ fieldinfo.type = ClassName.get("sun.misc", "Unsafe");
+ fieldinfo.specbuilder = FieldSpec.builder(fieldinfo.type, fieldinfo.name, Modifier.PRIVATE)
+ .addAnnotation(unsafeannotation);
m_fieldsinfo.put("unsafe", fieldinfo);
fieldinfo = new FieldInfo();
@@ -986,6 +989,9 @@
fieldinfo = fieldinfos.get(name);
if (null != fieldinfo.specbuilder) {
typespecbuilder.addField(fieldinfo.specbuilder.build());
+ if (name.equals("unsafe")) {
+ typespecbuilder.alwaysQualify("Unsafe");
+ }
}
}
}
diff --git a/mnemonic-core/src/main/java/org/apache/mnemonic/GenericField.java b/mnemonic-core/src/main/java/org/apache/mnemonic/GenericField.java
index ff16435..3d22fe6 100644
--- a/mnemonic-core/src/main/java/org/apache/mnemonic/GenericField.java
+++ b/mnemonic-core/src/main/java/org/apache/mnemonic/GenericField.java
@@ -18,7 +18,6 @@
package org.apache.mnemonic;
import org.apache.mnemonic.resgc.ReclaimContext;
-import sun.misc.Unsafe;
/**
* this class defines generic field for non-volatile entity
@@ -28,7 +27,8 @@
@SuppressWarnings("restriction")
public class GenericField<A extends RestorableAllocator<A>, E> implements Durable {
- private Unsafe m_unsafe;
+ @SuppressWarnings({"restriction", "UseOfSunClasses"})
+ private sun.misc.Unsafe m_unsafe;
private long m_fpos;
private DurableType m_dgftype = null;
private Durable m_field = null;
@@ -71,9 +71,10 @@
* specify the field position
*
*/
+ @SuppressWarnings({"restriction", "UseOfSunClasses"})
public GenericField(EntityFactoryProxy defproxy, DurableType dgftype,
EntityFactoryProxy[] efproxies, DurableType[] gftypes,
- A allocator, Unsafe unsafe, boolean autoreclaim, ReclaimContext rctx, Long fpos) {
+ A allocator, sun.misc.Unsafe unsafe, boolean autoreclaim, ReclaimContext rctx, Long fpos) {
m_unsafe = unsafe;
m_fpos = fpos;
m_allocator = allocator;
diff --git a/mnemonic-core/src/main/java/org/apache/mnemonic/SysMemAllocator.java b/mnemonic-core/src/main/java/org/apache/mnemonic/SysMemAllocator.java
index f3be4c3..368583c 100644
--- a/mnemonic-core/src/main/java/org/apache/mnemonic/SysMemAllocator.java
+++ b/mnemonic-core/src/main/java/org/apache/mnemonic/SysMemAllocator.java
@@ -22,8 +22,6 @@
import org.apache.mnemonic.resgc.ResReclaim;
import org.apache.mnemonic.resgc.ReclaimContext;
-import sun.misc.Unsafe;
-
import java.lang.reflect.Method;
import java.nio.ByteBuffer;
import java.util.Map;
@@ -42,7 +40,8 @@
private boolean m_activegc = true;
private long m_gctimeout = 100;
- private static Unsafe m_unsafe = null;
+ @SuppressWarnings({"restriction", "UseOfSunClasses"})
+ private static sun.misc.Unsafe m_unsafe = null;
private AtomicLong currentMemory = new AtomicLong(0L);
private long maxStoreCapacity = 0L;
private Map<Long, Long> m_chunksize = new ConcurrentHashMap<Long, Long>();
diff --git a/mnemonic-core/src/main/java/org/apache/mnemonic/Utils.java b/mnemonic-core/src/main/java/org/apache/mnemonic/Utils.java
index bbdf778..45f07ee 100644
--- a/mnemonic-core/src/main/java/org/apache/mnemonic/Utils.java
+++ b/mnemonic-core/src/main/java/org/apache/mnemonic/Utils.java
@@ -22,7 +22,6 @@
import org.apache.mnemonic.service.computing.GeneralComputingService;
import org.apache.mnemonic.service.memory.NonVolatileMemoryAllocatorService;
import org.apache.mnemonic.service.memory.VolatileMemoryAllocatorService;
-import sun.misc.Unsafe;
import java.io.File;
import java.lang.reflect.Field;
@@ -42,7 +41,7 @@
* <p>
* Utilities for project.
* </p>
- *
+ *
*/
@SuppressWarnings("restriction")
public class Utils {
@@ -57,7 +56,8 @@
public static final String ANSI_CYAN = "\u001B[36m";
public static final String ANSI_WHITE = "\u001B[37m";
- private static Unsafe m_unsafe = null;
+ @SuppressWarnings({"restriction", "UseOfSunClasses"})
+ private static sun.misc.Unsafe m_unsafe = null;
private static ServiceLoader<VolatileMemoryAllocatorService> m_vmasvcloader = null;
private static ServiceLoader<NonVolatileMemoryAllocatorService> m_nvmasvcloader = null;
@@ -65,7 +65,7 @@
/**
* retrieve a volatile memory allocator service
- *
+ *
* @param id
* specify a name of allocator to retrieve
*
@@ -77,7 +77,7 @@
/**
* retrieve a volatile memory allocator service
- *
+ *
* @param id
* specify a name of allocator to retrieve
*
@@ -109,7 +109,7 @@
/**
* retrieve a non-volatile memory allocator service
- *
+ *
* @param id
* specify a name of allocator to retrieve
*
@@ -161,7 +161,7 @@
/**
* Generates a unique name that contains current timestamp.
- *
+ *
* @param format
* the template that is used to generate unique name.
*
@@ -225,7 +225,8 @@
*
* @return an unsafe object
*/
- public static Unsafe getUnsafe() throws Exception {
+ @SuppressWarnings({"restriction", "UseOfSunClasses"})
+ public static sun.misc.Unsafe getUnsafe() throws Exception {
if (null == m_unsafe) {
Field field = sun.misc.Unsafe.class.getDeclaredField("theUnsafe");
field.setAccessible(true);
@@ -407,7 +408,7 @@
/**
* generate native form of object stack parameter frame.
- *
+ *
* @param objstack
* a stack of object info retrieved from
* Durable.getNativeFieldInfo(), order matters
@@ -552,7 +553,8 @@
* @return
* the address of this object
*/
- public static long addressOf(Unsafe unsafe, Object o) {
+ @SuppressWarnings({"restriction", "UseOfSunClasses"})
+ public static long addressOf(sun.misc.Unsafe unsafe, Object o) {
Object[] array = new Object[] {o};
long baseOffset = unsafe.arrayBaseOffset(Object[].class);
diff --git a/mnemonic-core/src/test/java/org/apache/mnemonic/DurablePersonNGTest.java b/mnemonic-core/src/test/java/org/apache/mnemonic/DurablePersonNGTest.java
index 785e8a3..35548c1 100644
--- a/mnemonic-core/src/test/java/org/apache/mnemonic/DurablePersonNGTest.java
+++ b/mnemonic-core/src/test/java/org/apache/mnemonic/DurablePersonNGTest.java
@@ -33,15 +33,14 @@
import org.testng.annotations.BeforeClass;
import org.testng.annotations.Test;
-import sun.misc.Unsafe;
-
@SuppressWarnings("restriction")
public class DurablePersonNGTest {
private long cKEYCAPACITY;
private long pic_checksum;
private long fp_checksum;
private Random rand;
- private Unsafe unsafe;
+ @SuppressWarnings({"restriction", "UseOfSunClasses"})
+ private sun.misc.Unsafe unsafe;
protected DurableBuffer<NonVolatileMemAllocator>
genuptBuffer(NonVolatileMemAllocator act, Checksum cs, int size) {
@@ -83,7 +82,7 @@
rand = Utils.createRandom();
unsafe = Utils.getUnsafe();
}
-
+
@Test(expectedExceptions = { OutOfHybridMemory.class })
public void testGenPeople() throws OutOfHybridMemory, RetrieveDurableEntityError {
Random rand = Utils.createRandom();
diff --git a/mnemonic-core/src/test/java/org/apache/mnemonic/DurablePersonRefBreakNGTest.java b/mnemonic-core/src/test/java/org/apache/mnemonic/DurablePersonRefBreakNGTest.java
index 2ff5b48..9779725 100644
--- a/mnemonic-core/src/test/java/org/apache/mnemonic/DurablePersonRefBreakNGTest.java
+++ b/mnemonic-core/src/test/java/org/apache/mnemonic/DurablePersonRefBreakNGTest.java
@@ -28,8 +28,6 @@
import org.testng.annotations.BeforeClass;
import org.testng.annotations.Test;
-import sun.misc.Unsafe;
-
@SuppressWarnings("restriction")
public class DurablePersonRefBreakNGTest {
public static String uri = "./pobj_person_refbreak.dat";
@@ -37,7 +35,8 @@
private long pic_checksum;
private long fp_checksum;
private Random rand;
- private Unsafe unsafe;
+ @SuppressWarnings({"restriction", "UseOfSunClasses"})
+ private sun.misc.Unsafe unsafe;
protected DurableBuffer<NonVolatileMemAllocator>
genuptBuffer(NonVolatileMemAllocator act, Checksum cs, int size) {
diff --git a/mnemonic-examples/src/main/java/org/apache/mnemonic/examples/Main.java b/mnemonic-examples/src/main/java/org/apache/mnemonic/examples/Main.java
index f9d73a5..ecb3864 100644
--- a/mnemonic-examples/src/main/java/org/apache/mnemonic/examples/Main.java
+++ b/mnemonic-examples/src/main/java/org/apache/mnemonic/examples/Main.java
@@ -29,11 +29,9 @@
import org.apache.mnemonic.SysMemAllocator;
import org.apache.mnemonic.Utils;
-import sun.misc.Unsafe;
-
/**
* Main is the class of example.
- *
+ *
*/
@SuppressWarnings("restriction")
public class Main {
@@ -164,7 +162,8 @@
*/
System.out.println(Utils.ANSI_GREEN + "[[Demo Allocation, Auto Destruction "
+ "and Manual Destruction of Big Memory Chunk.]]" + Utils.ANSI_RESET);
- Unsafe unsafe = Utils.getUnsafe();
+ @SuppressWarnings({"restriction", "UseOfSunClasses"})
+ sun.misc.Unsafe unsafe = Utils.getUnsafe();
MemChunkHolder<?> mch;
for (int idx = 1; idx <= 50; ++idx) {
int size = randomGenerator.nextInt(1024 * 1024) + 1024 * 1024;
diff --git a/mnemonic-hadoop/mnemonic-hadoop-mapreduce/src/test/java/org/apache/mnemonic/mapred/MneMapredChunkDataTest.java b/mnemonic-hadoop/mnemonic-hadoop-mapreduce/src/test/java/org/apache/mnemonic/mapred/MneMapredChunkDataTest.java
index 521eca7..41a4d71 100644
--- a/mnemonic-hadoop/mnemonic-hadoop-mapreduce/src/test/java/org/apache/mnemonic/mapred/MneMapredChunkDataTest.java
+++ b/mnemonic-hadoop/mnemonic-hadoop-mapreduce/src/test/java/org/apache/mnemonic/mapred/MneMapredChunkDataTest.java
@@ -47,7 +47,6 @@
import org.testng.annotations.AfterClass;
import org.testng.annotations.BeforeClass;
import org.testng.annotations.Test;
-import sun.misc.Unsafe;
import java.io.File;
import java.io.IOException;
@@ -74,7 +73,8 @@
private long m_reccnt = 5000L;
private volatile long m_checksum;
private volatile long m_totalsize = 0L;
- private Unsafe unsafe;
+ @SuppressWarnings({"restriction", "UseOfSunClasses"})
+ private sun.misc.Unsafe unsafe;
@BeforeClass
public void setUp() throws Exception {
diff --git a/mnemonic-hadoop/mnemonic-hadoop-mapreduce/src/test/java/org/apache/mnemonic/mapreduce/MneMapreduceChunkDataTest.java b/mnemonic-hadoop/mnemonic-hadoop-mapreduce/src/test/java/org/apache/mnemonic/mapreduce/MneMapreduceChunkDataTest.java
index 2a8d818..e722ccb 100644
--- a/mnemonic-hadoop/mnemonic-hadoop-mapreduce/src/test/java/org/apache/mnemonic/mapreduce/MneMapreduceChunkDataTest.java
+++ b/mnemonic-hadoop/mnemonic-hadoop-mapreduce/src/test/java/org/apache/mnemonic/mapreduce/MneMapreduceChunkDataTest.java
@@ -57,8 +57,6 @@
import org.testng.annotations.BeforeClass;
import org.testng.annotations.Test;
-import sun.misc.Unsafe;
-
@SuppressWarnings("restriction")
public class MneMapreduceChunkDataTest {
@@ -75,7 +73,8 @@
private long m_reccnt = 5000L;
private volatile long m_checksum;
private volatile long m_totalsize = 0L;
- private Unsafe unsafe;
+ @SuppressWarnings({"restriction", "UseOfSunClasses"})
+ private sun.misc.Unsafe unsafe;
@BeforeClass
public void setUp() throws Exception {
diff --git a/pom.xml b/pom.xml
index 1f989a7..b7922d1 100644
--- a/pom.xml
+++ b/pom.xml
@@ -145,7 +145,7 @@
<dependency>
<groupId>com.squareup</groupId>
<artifactId>javapoet</artifactId>
- <version>1.11.1</version>
+ <version>1.13.0</version>
</dependency>
<!-- logging dependencies -->
<dependency>