|
@@ -272,6 +272,11 @@ public class ObjectWalker {
|
|
|
return ValueUtils.or(visited.get(value), id);
|
|
return ValueUtils.or(visited.get(value), id);
|
|
|
}
|
|
}
|
|
|
|
|
|
|
|
|
|
+ @Override
|
|
|
|
|
+ public long hash() {
|
|
|
|
|
+ return System.identityHashCode(value);
|
|
|
|
|
+ }
|
|
|
|
|
+
|
|
|
@Override
|
|
@Override
|
|
|
public String typePath() {
|
|
public String typePath() {
|
|
|
return typePath.apply(() -> WalkerUtils.typePath(this));
|
|
return typePath.apply(() -> WalkerUtils.typePath(this));
|
|
@@ -370,6 +375,7 @@ public class ObjectWalker {
|
|
|
}
|
|
}
|
|
|
|
|
|
|
|
if (!isNull() && !isPrimitive()) {
|
|
if (!isNull() && !isPrimitive()) {
|
|
|
|
|
+ mark(this);
|
|
|
actual()
|
|
actual()
|
|
|
.fields()
|
|
.fields()
|
|
|
.require(IAttribute.ANY)
|
|
.require(IAttribute.ANY)
|
|
@@ -426,6 +432,7 @@ public class ObjectWalker {
|
|
|
return;
|
|
return;
|
|
|
}
|
|
}
|
|
|
if (!isNull()) {
|
|
if (!isNull()) {
|
|
|
|
|
+ mark(this);
|
|
|
IClass<?> cmp = component();
|
|
IClass<?> cmp = component();
|
|
|
for (int index = 0, n = size(); index < n; index++) {
|
|
for (int index = 0, n = size(); index < n; index++) {
|
|
|
context("[" + index + "]", cmp, at(index)).accept(visitor);
|
|
context("[" + index + "]", cmp, at(index)).accept(visitor);
|
|
@@ -499,6 +506,7 @@ public class ObjectWalker {
|
|
|
return;
|
|
return;
|
|
|
}
|
|
}
|
|
|
if (!isNull()) {
|
|
if (!isNull()) {
|
|
|
|
|
+ mark(this);
|
|
|
IClass<?> cmp = component();
|
|
IClass<?> cmp = component();
|
|
|
for (int index = 0, n = size(); index < n; index++) {
|
|
for (int index = 0, n = size(); index < n; index++) {
|
|
|
context("[" + index + "]", cmp, at(index)).accept(visitor);
|
|
context("[" + index + "]", cmp, at(index)).accept(visitor);
|
|
@@ -562,6 +570,7 @@ public class ObjectWalker {
|
|
|
return;
|
|
return;
|
|
|
}
|
|
}
|
|
|
if (!isNull()) {
|
|
if (!isNull()) {
|
|
|
|
|
+ mark(this);
|
|
|
IClass<?> cmp = component();
|
|
IClass<?> cmp = component();
|
|
|
for (Object item : value()) {
|
|
for (Object item : value()) {
|
|
|
context("[?]", cmp, item).accept(listener);
|
|
context("[?]", cmp, item).accept(listener);
|
|
@@ -639,6 +648,7 @@ public class ObjectWalker {
|
|
|
return;
|
|
return;
|
|
|
}
|
|
}
|
|
|
if (!isNull()) {
|
|
if (!isNull()) {
|
|
|
|
|
+ mark(this);
|
|
|
if(value() instanceof SortedMap || value() instanceof LinkedHashMap) {
|
|
if(value() instanceof SortedMap || value() instanceof LinkedHashMap) {
|
|
|
exactIterate(listener);
|
|
exactIterate(listener);
|
|
|
} else {
|
|
} else {
|