import java.util.List;
import java.util.Map;
import java.util.Set;
+import java.util.logging.ConsoleHandler;
+import java.util.logging.Level;
+import java.util.logging.Logger;
import org.apache.derby.impl.sql.execute.OnceResultSet;
import org.junit.Before;
when(visitor.mustVisit(any(Class.class))).thenReturn(true);
when(visitor.mustVisit(any(Field.class))).thenReturn(true);
when(visitor.mustVisit(any(Method.class))).thenReturn(true);
-
+
when(visitor.visitPlainObject(any())).thenReturn(true);
when(visitor.visitArray(any())).thenReturn(true);
when(visitor.visitList(any(List.class))).thenReturn(true);
when(visitor.visitMap(any(Map.class))).thenReturn(true);
when(visitor.visitSet(any(Set.class))).thenReturn(true);
-
+
+ ObjectTraversal.LOGGER.setLevel(Level.FINEST);
+ ConsoleHandler handler = new ConsoleHandler();
+ handler.setLevel(Level.FINEST);
+ ObjectTraversal.LOGGER.addHandler(handler);
}
-
- public static class X1 {
-
+
+ public static class X1 {
+
}
- public static class X2 {
- private X1 x;
+ public static class X2 {
+ private X1 x;
}
-
-
+
@Test
public void testTraverseFields() throws Exception {
X2 x2 = new X2();
- X1 x1 = new X1();
+ X1 x1 = new X1();
x2.x = x1;
traversal.accept(x2);
verify(visitor).mustVisit(X2.class);
verify(visitor).visitPlainObject(same(x1));
verifyNoMoreInteractions(visitor);
}
-
+
public static class TraversalNonTraversedFields {
private int x;
private Object y = new Object();
@Test
public void testNonTraversedFields() throws Exception {
- TraversalNonTraversedFields obj =new TraversalNonTraversedFields();
+ TraversalNonTraversedFields obj = new TraversalNonTraversedFields();
traversal.accept(obj);
verify(visitor).mustVisit(TraversalNonTraversedFields.class);
- verify(visitor).mustVisit(eq(TraversalNonTraversedFields.class.getDeclaredField("x")));
- verify(visitor).mustVisit(eq(TraversalNonTraversedFields.class.getDeclaredField("y")));
+ verify(visitor).mustVisit(
+ eq(TraversalNonTraversedFields.class.getDeclaredField("x")));
+ verify(visitor).mustVisit(
+ eq(TraversalNonTraversedFields.class.getDeclaredField("y")));
verify(visitor).visitPlainObject(same(obj));
}
-
- public static class X3 {
-
+
+ public static class X3 {
+
}
-
- public static class X4 {
- public X3 getX3() {
+
+ public static class X4 {
+ public X3 getX3() {
return new X3();
}
}
-
@Test
public void testTraverseMethods() throws Exception {
@Test
public void testTraverseList() {
- List list = new ArrayList();
+ List list = new ArrayList();
list.add(new X1());
list.add(new X3());
traversal.accept(list);
@Test
public void testTraverseMap() {
- Map<String,Object> map = new HashMap<String,Object>();
+ Map<String, Object> map = new HashMap<String, Object>();
map.put("x1", new X1());
map.put("x3", new X3());
traversal.accept(map);
@Test
public void testTraverseSet() {
- Set set = new HashSet();
+ Set set = new HashSet();
set.add(new X1());
set.add(new X3());
traversal.accept(set);
@Test
public void testTraverseArray() {
- Object[] obj = new Object[2];
+ Object[] obj = new Object[2];
obj[0] = new X1();
obj[1] = new X3();
traversal.accept(obj);
@Test
public void testExcludeClasses() {
- X2 x2 = new X2();
+ X2 x2 = new X2();
x2.x = new X1();
when(visitor.mustVisit(X1.class)).thenReturn(false);
traversal.accept(x2);
@Test
public void testExcludeFields() {
- X2 x2 = new X2();
+ X2 x2 = new X2();
x2.x = new X1();
when(visitor.mustVisit(any(Field.class))).thenReturn(false);
traversal.accept(x2);
@Test
public void testExcludeMethods() {
- X4 x4 = new X4();
+ X4 x4 = new X4();
when(visitor.mustVisit(any(Method.class))).thenReturn(false);
traversal.accept(x4);
verify(visitor).visitPlainObject(same(x4));
verify(visitor, never()).visitPlainObject(isA(X3.class));
}
-
- public static class X5 {
+
+ public static class X5 {
private X6 x6;
}
-
- public static class X6 {
+
+ public static class X6 {
private X5 x5;
}
-
+
@Test
public void testCyclic() {
X6 x6 = new X6();
- X5 x5 = new X5();
+ X5 x5 = new X5();
x6.x5 = x5;
x5.x6 = x6;
traversal.accept(x6);
@Test
public void testCyclicList() {
- List list = new ArrayList();
- list.add(list);
- traversal.accept(list);
+ List list = new ArrayList();
+ list.add(list);
+ traversal.accept(list);
verify(visitor, times(1)).visitList(same(list));
}
@Test
public void testCyclicMap() {
- Map map = new HashMap();
- map.put("x", map);
- traversal.accept(map);
+ Map map = new HashMap();
+ map.put("x", map);
+ traversal.accept(map);
verify(visitor, times(1)).visitMap(same(map));
}
@Test
public void testCyclicSet() {
- Set set = new HashSet();
- set.add(set);
- traversal.accept(set);
+ Set set = new HashSet();
+ set.add(set);
+ traversal.accept(set);
verify(visitor, times(1)).visitSet(same(set));
}
@Test
public void testCyclicArray() {
- Object[] obj = new Object[1];
- obj[0] = obj;
- traversal.accept(obj);
+ Object[] obj = new Object[1];
+ obj[0] = obj;
+ traversal.accept(obj);
verify(visitor, times(1)).visitArray(same(obj));
}
public void testVisitNull() {
traversal.accept(null);
}
-
+
@Test
public void testExcludeFieldByReturningFalseInVisit() {
- X2 x2 = new X2();
+ X2 x2 = new X2();
x2.x = new X1();
when(visitor.visitPlainObject(any())).thenReturn(false);
traversal.accept(x2);
verify(visitor).visitPlainObject(same(x2));
verify(visitor, never()).visitPlainObject(same(x2.x));
}
-
+
@Test
public void testTraverseListExcludeElements() {
- List list = new ArrayList();
+ List list = new ArrayList();
list.add(new X1());
list.add(new X3());
when(visitor.visitList(any(List.class))).thenReturn(false);
@Test
public void testTraverseMapExcludeElements() {
- Map<String,Object> map = new HashMap<String,Object>();
+ Map<String, Object> map = new HashMap<String, Object>();
map.put("x1", new X1());
map.put("x3", new X3());
when(visitor.visitMap(any(Map.class))).thenReturn(false);
@Test
public void testTraverseSetExcludeElements() {
- Set set = new HashSet();
+ Set set = new HashSet();
set.add(new X1());
set.add(new X3());
when(visitor.visitSet(any(Set.class))).thenReturn(false);
@Test
public void testTraverseArrayExcludeElements() {
- Object[] obj = new Object[2];
+ Object[] obj = new Object[2];
obj[0] = new X1();
obj[1] = new X3();
when(visitor.visitArray(any())).thenReturn(false);