diff --git a/accessors-smart/src/main/java/net/minidev/asm/ASMUtil.java b/accessors-smart/src/main/java/net/minidev/asm/ASMUtil.java
index b5752d9c..2f4e37c5 100644
--- a/accessors-smart/src/main/java/net/minidev/asm/ASMUtil.java
+++ b/accessors-smart/src/main/java/net/minidev/asm/ASMUtil.java
@@ -34,6 +34,9 @@
public class ASMUtil {
/**
* Append the call of proper autoboxing method for the given primitive type.
+ *
+ * @param mv MethodVisitor
+ * @param clz expected class
*/
public static void autoBoxing(MethodVisitor mv, Class> clz) {
autoBoxing(mv, Type.getType(clz));
@@ -69,72 +72,78 @@ static public Accessor[] getAccessors(Class> type, FieldFilter filter) {
/**
* Append the call of proper autoboxing method for the given primitive type.
+ *
+ * @param mv MethodVisitor
+ * @param fieldType expected class
*/
protected static void autoBoxing(MethodVisitor mv, Type fieldType) {
switch (fieldType.getSort()) {
case Type.BOOLEAN:
- mv.visitMethodInsn(INVOKESTATIC, "java/lang/Boolean", "valueOf", "(Z)Ljava/lang/Boolean;");
+ mv.visitMethodInsn(INVOKESTATIC, "java/lang/Boolean", "valueOf", "(Z)Ljava/lang/Boolean;", false);
break;
case Type.BYTE:
- mv.visitMethodInsn(INVOKESTATIC, "java/lang/Byte", "valueOf", "(B)Ljava/lang/Byte;");
+ mv.visitMethodInsn(INVOKESTATIC, "java/lang/Byte", "valueOf", "(B)Ljava/lang/Byte;", false);
break;
case Type.CHAR:
- mv.visitMethodInsn(INVOKESTATIC, "java/lang/Character", "valueOf", "(C)Ljava/lang/Character;");
+ mv.visitMethodInsn(INVOKESTATIC, "java/lang/Character", "valueOf", "(C)Ljava/lang/Character;", false);
break;
case Type.SHORT:
- mv.visitMethodInsn(INVOKESTATIC, "java/lang/Short", "valueOf", "(S)Ljava/lang/Short;");
+ mv.visitMethodInsn(INVOKESTATIC, "java/lang/Short", "valueOf", "(S)Ljava/lang/Short;", false);
break;
case Type.INT:
- mv.visitMethodInsn(INVOKESTATIC, "java/lang/Integer", "valueOf", "(I)Ljava/lang/Integer;");
+ mv.visitMethodInsn(INVOKESTATIC, "java/lang/Integer", "valueOf", "(I)Ljava/lang/Integer;", false);
break;
case Type.FLOAT:
- mv.visitMethodInsn(INVOKESTATIC, "java/lang/Float", "valueOf", "(F)Ljava/lang/Float;");
+ mv.visitMethodInsn(INVOKESTATIC, "java/lang/Float", "valueOf", "(F)Ljava/lang/Float;", false);
break;
case Type.LONG:
- mv.visitMethodInsn(INVOKESTATIC, "java/lang/Long", "valueOf", "(J)Ljava/lang/Long;");
+ mv.visitMethodInsn(INVOKESTATIC, "java/lang/Long", "valueOf", "(J)Ljava/lang/Long;", false);
break;
case Type.DOUBLE:
- mv.visitMethodInsn(INVOKESTATIC, "java/lang/Double", "valueOf", "(D)Ljava/lang/Double;");
+ mv.visitMethodInsn(INVOKESTATIC, "java/lang/Double", "valueOf", "(D)Ljava/lang/Double;", false);
break;
}
}
/**
* Append the call of proper extract primitive type of an boxed object.
+ *
+ * @param mv MethodVisitor
+ * @param fieldType expected class
*/
protected static void autoUnBoxing1(MethodVisitor mv, Type fieldType) {
switch (fieldType.getSort()) {
case Type.BOOLEAN:
mv.visitTypeInsn(CHECKCAST, "java/lang/Boolean");
- mv.visitMethodInsn(INVOKEVIRTUAL, "java/lang/Boolean", "booleanValue", "()Z");
+ mv.visitMethodInsn(INVOKEVIRTUAL, "java/lang/Boolean", "booleanValue", "()Z", false);
break;
case Type.BYTE:
mv.visitTypeInsn(CHECKCAST, "java/lang/Byte");
- mv.visitMethodInsn(INVOKEVIRTUAL, "java/lang/Byte", "byteValue", "()B");
+ mv.visitMethodInsn(INVOKEVIRTUAL, "java/lang/Byte", "byteValue", "()B", false);
break;
case Type.CHAR:
mv.visitTypeInsn(CHECKCAST, "java/lang/Character");
- mv.visitMethodInsn(INVOKEVIRTUAL, "java/lang/Character", "charValue", "()C");
+ mv.visitMethodInsn(INVOKEVIRTUAL, "java/lang/Character", "charValue", "()C", false);
break;
case Type.SHORT:
mv.visitTypeInsn(CHECKCAST, "java/lang/Short");
- mv.visitMethodInsn(INVOKEVIRTUAL, "java/lang/Short", "shortValue", "()S");
+ mv.visitMethodInsn(INVOKEVIRTUAL, "java/lang/Short", "shortValue", "()S", false);
break;
case Type.INT:
mv.visitTypeInsn(CHECKCAST, "java/lang/Integer");
- mv.visitMethodInsn(INVOKEVIRTUAL, "java/lang/Integer", "intValue", "()I");
+ mv.visitMethodInsn(INVOKEVIRTUAL, "java/lang/Integer", "intValue", "()I", false);
break;
case Type.FLOAT:
mv.visitTypeInsn(CHECKCAST, "java/lang/Float");
- mv.visitMethodInsn(INVOKEVIRTUAL, "java/lang/Float", "floatValue", "()F");
+ mv.visitMethodInsn(INVOKEVIRTUAL, "java/lang/Float", "floatValue", "()F", false);
break;
case Type.LONG:
mv.visitTypeInsn(CHECKCAST, "java/lang/Long");
- mv.visitMethodInsn(INVOKEVIRTUAL, "java/lang/Long", "longValue", "()J");
+ mv.visitMethodInsn(INVOKEVIRTUAL, "java/lang/Long", "longValue", "()J", false);
break;
case Type.DOUBLE:
mv.visitTypeInsn(CHECKCAST, "java/lang/Double");
- mv.visitMethodInsn(INVOKEVIRTUAL, "java/lang/Double", "doubleValue", "()D");
+ mv.visitMethodInsn(INVOKEVIRTUAL, "java/lang/Double", "doubleValue", "()D", false);
break;
case Type.ARRAY:
mv.visitTypeInsn(CHECKCAST, fieldType.getInternalName());
@@ -147,40 +156,43 @@ protected static void autoUnBoxing1(MethodVisitor mv, Type fieldType) {
/**
* Append the call of proper extract primitive type of an boxed object. this
* method use Number interface to unbox object
+ *
+ * @param mv MethodVisitor
+ * @param fieldType expected class
*/
protected static void autoUnBoxing2(MethodVisitor mv, Type fieldType) {
switch (fieldType.getSort()) {
case Type.BOOLEAN:
mv.visitTypeInsn(CHECKCAST, "java/lang/Boolean");
- mv.visitMethodInsn(INVOKEVIRTUAL, "java/lang/Boolean", "booleanValue", "()Z");
+ mv.visitMethodInsn(INVOKEVIRTUAL, "java/lang/Boolean", "booleanValue", "()Z", false);
break;
case Type.BYTE:
mv.visitTypeInsn(CHECKCAST, "java/lang/Number");
- mv.visitMethodInsn(INVOKEVIRTUAL, "java/lang/Number", "byteValue", "()B");
+ mv.visitMethodInsn(INVOKEVIRTUAL, "java/lang/Number", "byteValue", "()B", false);
break;
case Type.CHAR:
mv.visitTypeInsn(CHECKCAST, "java/lang/Character");
- mv.visitMethodInsn(INVOKEVIRTUAL, "java/lang/Character", "charValue", "()C");
+ mv.visitMethodInsn(INVOKEVIRTUAL, "java/lang/Character", "charValue", "()C", false);
break;
case Type.SHORT:
mv.visitTypeInsn(CHECKCAST, "java/lang/Number");
- mv.visitMethodInsn(INVOKEVIRTUAL, "java/lang/Number", "shortValue", "()S");
+ mv.visitMethodInsn(INVOKEVIRTUAL, "java/lang/Number", "shortValue", "()S", false);
break;
case Type.INT:
mv.visitTypeInsn(CHECKCAST, "java/lang/Number");
- mv.visitMethodInsn(INVOKEVIRTUAL, "java/lang/Number", "intValue", "()I");
+ mv.visitMethodInsn(INVOKEVIRTUAL, "java/lang/Number", "intValue", "()I", false);
break;
case Type.FLOAT:
mv.visitTypeInsn(CHECKCAST, "java/lang/Number");
- mv.visitMethodInsn(INVOKEVIRTUAL, "java/lang/Number", "floatValue", "()F");
+ mv.visitMethodInsn(INVOKEVIRTUAL, "java/lang/Number", "floatValue", "()F", false);
break;
case Type.LONG:
mv.visitTypeInsn(CHECKCAST, "java/lang/Number");
- mv.visitMethodInsn(INVOKEVIRTUAL, "java/lang/Number", "longValue", "()J");
+ mv.visitMethodInsn(INVOKEVIRTUAL, "java/lang/Number", "longValue", "()J", false);
break;
case Type.DOUBLE:
mv.visitTypeInsn(CHECKCAST, "java/lang/Number");
- mv.visitMethodInsn(INVOKEVIRTUAL, "java/lang/Number", "doubleValue", "()D");
+ mv.visitMethodInsn(INVOKEVIRTUAL, "java/lang/Number", "doubleValue", "()D", false);
break;
case Type.ARRAY:
mv.visitTypeInsn(CHECKCAST, fieldType.getInternalName());
@@ -193,8 +205,7 @@ protected static void autoUnBoxing2(MethodVisitor mv, Type fieldType) {
/**
* return a array of new Label (used for switch/case generation)
*
- * @param cnt
- * number of label to return
+ * @param cnt number of label to return
*/
public static Label[] newLabels(int cnt) {
Label[] r = new Label[cnt];
@@ -203,6 +214,10 @@ public static Label[] newLabels(int cnt) {
return r;
}
+ /**
+ * @param key the field name
+ * @return setter name
+ */
public static String getSetterName(String key) {
int len = key.length();
char[] b = new char[len + 3];
@@ -219,6 +234,10 @@ public static String getSetterName(String key) {
return new String(b);
}
+ /**
+ * @param key the field name
+ * @return getter name
+ */
public static String getGetterName(String key) {
int len = key.length();
char[] b = new char[len + 3];
@@ -235,6 +254,10 @@ public static String getGetterName(String key) {
return new String(b);
}
+ /**
+ * @param key the boolean field name
+ * @return boolean getter name
+ */
public static String getIsName(String key) {
int len = key.length();
char[] b = new char[len + 2];
diff --git a/accessors-smart/src/main/java/net/minidev/asm/BeansAccess.java b/accessors-smart/src/main/java/net/minidev/asm/BeansAccess.java
index 929639f3..8ffc02b8 100644
--- a/accessors-smart/src/main/java/net/minidev/asm/BeansAccess.java
+++ b/accessors-smart/src/main/java/net/minidev/asm/BeansAccess.java
@@ -73,6 +73,7 @@ static public BeansAccess
get(Class
type) {
* to be access
* @return the BeansAccess
*/
+ @SuppressWarnings("deprecation")
static public
BeansAccess
get(Class
type, FieldFilter filter) {
{
@SuppressWarnings("unchecked")
diff --git a/accessors-smart/src/main/java/net/minidev/asm/BeansAccessBuilder.java b/accessors-smart/src/main/java/net/minidev/asm/BeansAccessBuilder.java
index a0ea6281..cf88b3db 100644
--- a/accessors-smart/src/main/java/net/minidev/asm/BeansAccessBuilder.java
+++ b/accessors-smart/src/main/java/net/minidev/asm/BeansAccessBuilder.java
@@ -117,7 +117,7 @@ public Class> bulid() {
mv = cw.visitMethod(ACC_PUBLIC, "", "()V", null, null);
mv.visitCode();
mv.visitVarInsn(ALOAD, 0);
- mv.visitMethodInsn(INVOKESPECIAL, METHOD_ACCESS_NAME, "", "()V");
+ mv.visitMethodInsn(INVOKESPECIAL, METHOD_ACCESS_NAME, "", "()V", false);
mv.visitInsn(RETURN);
mv.visitMaxs(1, 1);
mv.visitEnd();
@@ -192,7 +192,7 @@ public Class> bulid() {
mv.visitFieldInsn(GETFIELD, classNameInternal, acc.getName(), fieldType.getDescriptor());
} else {
String sig = Type.getMethodDescriptor(acc.getter);
- mv.visitMethodInsn(INVOKEVIRTUAL, classNameInternal, acc.getter.getName(), sig);
+ mv.visitMethodInsn(INVOKEVIRTUAL, classNameInternal, acc.getter.getName(), sig, false);
}
ASMUtil.autoBoxing(mv, fieldType);
mv.visitInsn(ARETURN);
@@ -213,7 +213,7 @@ public Class> bulid() {
if (acc.getter == null)
throw new RuntimeException("no Getter for field " + acc.getName() + " in class " + this.className);
String sig = Type.getMethodDescriptor(acc.getter);
- mv.visitMethodInsn(INVOKEVIRTUAL, classNameInternal, acc.getter.getName(), sig);
+ mv.visitMethodInsn(INVOKEVIRTUAL, classNameInternal, acc.getter.getName(), sig, false);
}
ASMUtil.autoBoxing(mv, fieldType);
mv.visitInsn(ARETURN);
@@ -244,7 +244,7 @@ public Class> bulid() {
for (Accessor acc : accs) {
mv.visitVarInsn(ALOAD, 2);
mv.visitLdcInsn(acc.fieldName);
- mv.visitMethodInsn(INVOKEVIRTUAL, "java/lang/String", "equals", "(Ljava/lang/Object;)Z");
+ mv.visitMethodInsn(INVOKEVIRTUAL, "java/lang/String", "equals", "(Ljava/lang/Object;)Z", false);
mv.visitJumpInsn(IFEQ, labels[i]);
internalSetFiled(mv, acc);
mv.visitLabel(labels[i]);
@@ -270,7 +270,7 @@ public Class> bulid() {
for (Accessor acc : accs) {
mv.visitVarInsn(ALOAD, 2); // methodName
mv.visitLdcInsn(acc.fieldName);
- mv.visitMethodInsn(INVOKEVIRTUAL, "java/lang/String", "equals", "(Ljava/lang/Object;)Z");
+ mv.visitMethodInsn(INVOKEVIRTUAL, "java/lang/String", "equals", "(Ljava/lang/Object;)Z", false);
mv.visitJumpInsn(IFEQ, labels[i]);
mv.visitVarInsn(ALOAD, 1); // object
mv.visitTypeInsn(CHECKCAST, classNameInternal);
@@ -279,7 +279,7 @@ public Class> bulid() {
mv.visitFieldInsn(GETFIELD, classNameInternal, acc.getName(), fieldType.getDescriptor());
} else {
String sig = Type.getMethodDescriptor(acc.getter);
- mv.visitMethodInsn(INVOKEVIRTUAL, classNameInternal, acc.getter.getName(), sig);
+ mv.visitMethodInsn(INVOKEVIRTUAL, classNameInternal, acc.getter.getName(), sig, false);
}
ASMUtil.autoBoxing(mv, fieldType);
mv.visitInsn(ARETURN);
@@ -302,7 +302,7 @@ public Class> bulid() {
mv.visitCode();
mv.visitTypeInsn(NEW, classNameInternal);
mv.visitInsn(DUP);
- mv.visitMethodInsn(INVOKESPECIAL, classNameInternal, "", "()V");
+ mv.visitMethodInsn(INVOKESPECIAL, classNameInternal, "", "()V", false);
mv.visitInsn(ARETURN);
mv.visitMaxs(2, 1);
mv.visitEnd();
@@ -359,15 +359,15 @@ private void internalSetFiled(MethodVisitor mv, Accessor acc) {
String clsSig = Type.getInternalName(conMtd.getDeclaringClass());
String mtdName = conMtd.getName();
String mtdSig = Type.getMethodDescriptor(conMtd);
- mv.visitMethodInsn(INVOKESTATIC, clsSig, mtdName, mtdSig);
+ mv.visitMethodInsn(INVOKESTATIC, clsSig, mtdName, mtdSig, false);
} else if (acc.isEnum()) {
// builtIn Enum Conversion
Label isNull = new Label();
mv.visitJumpInsn(IFNULL, isNull);
mv.visitVarInsn(ALOAD, 3);
// mv.visitTypeInsn(CHECKCAST, "java/lang/String");
- mv.visitMethodInsn(INVOKEVIRTUAL, "java/lang/Object", "toString", "()Ljava/lang/String;");
- mv.visitMethodInsn(INVOKESTATIC, destClsName, "valueOf", "(Ljava/lang/String;)L" + destClsName + ";");
+ mv.visitMethodInsn(INVOKEVIRTUAL, "java/lang/Object", "toString", "()Ljava/lang/String;", false);
+ mv.visitMethodInsn(INVOKESTATIC, destClsName, "valueOf", "(Ljava/lang/String;)L" + destClsName + ";", false);
mv.visitVarInsn(ASTORE, 3);
mv.visitLabel(isNull);
mv.visitFrame(Opcodes.F_SAME, 0, null, 0, null);
@@ -380,7 +380,7 @@ private void internalSetFiled(MethodVisitor mv, Accessor acc) {
Label isNull = new Label();
mv.visitJumpInsn(IFNULL, isNull);
mv.visitVarInsn(ALOAD, 3);
- mv.visitMethodInsn(INVOKEVIRTUAL, "java/lang/Object", "toString", "()Ljava/lang/String;");
+ mv.visitMethodInsn(INVOKEVIRTUAL, "java/lang/Object", "toString", "()Ljava/lang/String;", false);
mv.visitVarInsn(ASTORE, 3);
mv.visitLabel(isNull);
mv.visitFrame(Opcodes.F_SAME, 0, null, 0, null);
@@ -396,7 +396,7 @@ private void internalSetFiled(MethodVisitor mv, Accessor acc) {
mv.visitFieldInsn(PUTFIELD, classNameInternal, acc.getName(), fieldType.getDescriptor());
} else {
String sig = Type.getMethodDescriptor(acc.setter);
- mv.visitMethodInsn(INVOKEVIRTUAL, classNameInternal, acc.setter.getName(), sig);
+ mv.visitMethodInsn(INVOKEVIRTUAL, classNameInternal, acc.setter.getName(), sig, false);
}
mv.visitInsn(RETURN);
}
@@ -410,9 +410,9 @@ private void throwExIntParam(MethodVisitor mv, Class> exCls) {
mv.visitInsn(DUP);
mv.visitLdcInsn("mapping " + this.className + " failed to map field:");
mv.visitVarInsn(ILOAD, 2);
- mv.visitMethodInsn(INVOKESTATIC, "java/lang/Integer", "toString", "(I)Ljava/lang/String;");
- mv.visitMethodInsn(INVOKEVIRTUAL, "java/lang/String", "concat", "(Ljava/lang/String;)Ljava/lang/String;");
- mv.visitMethodInsn(INVOKESPECIAL, exSig, "", "(Ljava/lang/String;)V");
+ mv.visitMethodInsn(INVOKESTATIC, "java/lang/Integer", "toString", "(I)Ljava/lang/String;", false);
+ mv.visitMethodInsn(INVOKEVIRTUAL, "java/lang/String", "concat", "(Ljava/lang/String;)Ljava/lang/String;", false);
+ mv.visitMethodInsn(INVOKESPECIAL, exSig, "", "(Ljava/lang/String;)V", false);
mv.visitInsn(ATHROW);
}
@@ -425,8 +425,8 @@ private void throwExStrParam(MethodVisitor mv, Class> exCls) {
mv.visitInsn(DUP);
mv.visitLdcInsn("mapping " + this.className + " failed to map field:");
mv.visitVarInsn(ALOAD, 2);
- mv.visitMethodInsn(INVOKEVIRTUAL, "java/lang/String", "concat", "(Ljava/lang/String;)Ljava/lang/String;");
- mv.visitMethodInsn(INVOKESPECIAL, exSig, "", "(Ljava/lang/String;)V");
+ mv.visitMethodInsn(INVOKEVIRTUAL, "java/lang/String", "concat", "(Ljava/lang/String;)Ljava/lang/String;", false);
+ mv.visitMethodInsn(INVOKESPECIAL, exSig, "", "(Ljava/lang/String;)V", false);
mv.visitInsn(ATHROW);
}
diff --git a/accessors-smart/src/main/java/net/minidev/asm/DynamicClassLoader.java b/accessors-smart/src/main/java/net/minidev/asm/DynamicClassLoader.java
index bdefd99c..1699f690 100644
--- a/accessors-smart/src/main/java/net/minidev/asm/DynamicClassLoader.java
+++ b/accessors-smart/src/main/java/net/minidev/asm/DynamicClassLoader.java
@@ -50,6 +50,7 @@ public static Class directLoad(Class extends T> parent, String clsName,
return clzz;
}
+ @SuppressWarnings("deprecation")
public static T directInstance(Class extends T> parent, String clsName, byte[] clsData) throws InstantiationException, IllegalAccessException {
Class clzz = directLoad(parent, clsName, clsData);
return clzz.newInstance();
diff --git a/accessors-smart/src/test/java/net/minidev/asm/ASMTest.java b/accessors-smart/src/test/java/net/minidev/asm/ASMTest.java
index 4363b0bc..705081c8 100644
--- a/accessors-smart/src/test/java/net/minidev/asm/ASMTest.java
+++ b/accessors-smart/src/test/java/net/minidev/asm/ASMTest.java
@@ -6,14 +6,13 @@
import org.junit.jupiter.api.Test;
-// import junit.framework.TestCase;
import net.minidev.asm.bean.BTest;
public class ASMTest {
@Test
public void testGet() throws Exception {
- long T1;
+ // long T1;
BeansAccess acBT = BeansAccess.get(BTest.class);
// BeansAccess acHand = new BTestBeansAccessB();
@@ -28,7 +27,7 @@ public void testGet() throws Exception {
// String clsPath = FastMap1Builder.getName(m.size());
// String clsName = clsPath.replace("/", ".");
- byte[] data;
+ // byte[] data;
// data = FastMap1Builder.dump(m.size());
// data = FastMap2Builder.dump(m);
diff --git a/json-smart-action/pom.xml b/json-smart-action/pom.xml
index 60f111af..799426a9 100644
--- a/json-smart-action/pom.xml
+++ b/json-smart-action/pom.xml
@@ -3,11 +3,11 @@
net.minidev
minidev-parent
- 2.3
+ 2.4.1
4.0.0
json-smart-action
- JSON Small and Fast Parser
+ JSON-smart-action Small and Fast Parser
JSON (JavaScript Object Notation) is a lightweight data-interchange format. It is easy for humans to read and write. It is easy for machines to parse and generate. It is based on a subset of the JavaScript Programming Language, Standard ECMA-262 3rd Edition - December 1999. JSON is a text format that is completely language independent but uses conventions that are familiar to programmers of the C-family of languages, including C, C++, C#, Java, JavaScript, Perl, Python, and many others. These properties make JSON an ideal data-interchange language.
@@ -47,11 +47,16 @@
1.8
-
- junit
- junit
- test
-
+
+ org.junit.jupiter
+ junit-jupiter-api
+ test
+
+
+ org.junit.jupiter
+ junit-jupiter-params
+ test
+
net.minidev
json-smart
diff --git a/json-smart-action/src/main/java/net/minidev/json/actions/PathLocator.java b/json-smart-action/src/main/java/net/minidev/json/actions/PathLocator.java
index f62efb51..c0a93595 100644
--- a/json-smart-action/src/main/java/net/minidev/json/actions/PathLocator.java
+++ b/json-smart-action/src/main/java/net/minidev/json/actions/PathLocator.java
@@ -56,6 +56,7 @@ public PathLocator with(PathDelimiter pathDelimiter) {
return this;
}
+ @SuppressWarnings("unchecked")
public List locate(JSONObject object) {
JSONTraverseAction action = new LocatePathsJsonAction(this.pathsToFind, pathDelimiter);
JSONTraverser traversal = new JSONTraverser(action).with(pathDelimiter);
diff --git a/json-smart-action/src/main/java/net/minidev/json/actions/PathsRetainer.java b/json-smart-action/src/main/java/net/minidev/json/actions/PathsRetainer.java
index e641ec2e..013baa81 100644
--- a/json-smart-action/src/main/java/net/minidev/json/actions/PathsRetainer.java
+++ b/json-smart-action/src/main/java/net/minidev/json/actions/PathsRetainer.java
@@ -62,6 +62,7 @@ public PathsRetainer with(PathDelimiter pathDelimiter) {
return this;
}
+ @SuppressWarnings("unchecked")
public JSONObject retain(JSONObject object) {
/**
* a path to retain which contains a path in the object, but is not itself a path in the object,
diff --git a/json-smart-action/src/main/java/net/minidev/json/actions/navigate/TreeNavigator.java b/json-smart-action/src/main/java/net/minidev/json/actions/navigate/TreeNavigator.java
index 7811d812..4d60353c 100644
--- a/json-smart-action/src/main/java/net/minidev/json/actions/navigate/TreeNavigator.java
+++ b/json-smart-action/src/main/java/net/minidev/json/actions/navigate/TreeNavigator.java
@@ -30,10 +30,10 @@
*/
public class TreeNavigator, L extends List