diff --git a/src/dev/peerat/parser/java/Annotation.java b/src/dev/peerat/parser/java/Annotation.java index b151ac8..2fe9180 100644 --- a/src/dev/peerat/parser/java/Annotation.java +++ b/src/dev/peerat/parser/java/Annotation.java @@ -67,6 +67,7 @@ public class Annotation extends JavaElement{ public void findAll(Function finder, List list){ for(Value value : this.values.values()){ if(finder.apply(value)) list.add((E)value); + value.findAll(finder, list); } } } diff --git a/src/dev/peerat/parser/java/AnnotationClass.java b/src/dev/peerat/parser/java/AnnotationClass.java index ab110de..04055f6 100644 --- a/src/dev/peerat/parser/java/AnnotationClass.java +++ b/src/dev/peerat/parser/java/AnnotationClass.java @@ -95,11 +95,13 @@ public class AnnotationClass extends ClassBase{ if(annotations != null){ for(Annotation annotation : this.annotations){ if(finder.apply(annotation)) list.add((E) annotation); + annotation.findAll(finder, list); } } if(elements != null){ for(JavaElement element : this.elements){ if(finder.apply(element)) list.add((E) element); + element.findAll(finder, list); } } } diff --git a/src/dev/peerat/parser/java/Class.java b/src/dev/peerat/parser/java/Class.java index a8b84c4..2bdf90b 100644 --- a/src/dev/peerat/parser/java/Class.java +++ b/src/dev/peerat/parser/java/Class.java @@ -110,11 +110,13 @@ public class Class extends ClassBase{ if(annotations != null){ for(Annotation annotation : this.annotations){ if(finder.apply(annotation)) list.add((E) annotation); + annotation.findAll(finder, list); } } if(elements != null){ for(JavaElement element : this.elements){ if(finder.apply(element)) list.add((E) element); + element.findAll(finder, list); } } } diff --git a/src/dev/peerat/parser/java/Enumeration.java b/src/dev/peerat/parser/java/Enumeration.java index 6ba36ed..1c93c24 100644 --- a/src/dev/peerat/parser/java/Enumeration.java +++ b/src/dev/peerat/parser/java/Enumeration.java @@ -100,11 +100,13 @@ public class Enumeration extends ClassBase{ if(annotations != null){ for(Annotation annotation : this.annotations){ if(finder.apply(annotation)) list.add((E) annotation); + annotation.findAll(finder, list); } } if(elements != null){ for(JavaElement element : this.elements){ if(finder.apply(element)) list.add((E) element); + element.findAll(finder, list); } } } diff --git a/src/dev/peerat/parser/java/Function.java b/src/dev/peerat/parser/java/Function.java index a45c628..43949c0 100644 --- a/src/dev/peerat/parser/java/Function.java +++ b/src/dev/peerat/parser/java/Function.java @@ -152,16 +152,19 @@ public class Function extends JavaElement implements VariableContainer, Operatio if(annotations != null){ for(Annotation annotation : this.annotations){ if(finder.apply(annotation)) list.add((E) annotation); + annotation.findAll(finder, list); } } if(parameters != null){ for(Variable param : this.parameters){ if(finder.apply(param)) list.add((E) param); + param.findAll(finder, list); } } if(elements != null){ for(JavaElement content : this.elements){ if(finder.apply(content)) list.add((E) content); + content.findAll(finder, list); } } } diff --git a/src/dev/peerat/parser/java/Interface.java b/src/dev/peerat/parser/java/Interface.java index abeadfe..25aebe9 100644 --- a/src/dev/peerat/parser/java/Interface.java +++ b/src/dev/peerat/parser/java/Interface.java @@ -100,11 +100,13 @@ public class Interface extends ClassBase{ if(annotations != null){ for(Annotation annotation : this.annotations){ if(finder.apply(annotation)) list.add((E) annotation); + annotation.findAll(finder, list); } } if(elements != null){ for(JavaElement element : this.elements){ if(finder.apply(element)) list.add((E) element); + element.findAll(finder, list); } } } diff --git a/src/dev/peerat/parser/java/JavaFile.java b/src/dev/peerat/parser/java/JavaFile.java index 834bd99..0747ef6 100644 --- a/src/dev/peerat/parser/java/JavaFile.java +++ b/src/dev/peerat/parser/java/JavaFile.java @@ -96,8 +96,10 @@ public class JavaFile extends JavaElement implements ClassContainer, AnnotableBu @Override public void findAll(Function finder, List list){ if(finder.apply(mainClazz)) list.add((E) mainClazz); + mainClazz.findAll(finder, list); for(ClassBase clazz : subClazz){ if(finder.apply(clazz)) list.add((E) clazz); + clazz.findAll(finder, list); } } } diff --git a/src/dev/peerat/parser/java/Value.java b/src/dev/peerat/parser/java/Value.java index 656e26c..62620bb 100644 --- a/src/dev/peerat/parser/java/Value.java +++ b/src/dev/peerat/parser/java/Value.java @@ -49,7 +49,10 @@ public class Value extends JavaElement{ @Override public void findAll(Function finder, List list) { - if(content != null && finder.apply(content)) list.add((E) content); + if(content != null){ + if(finder.apply(content)) list.add((E) content); + content.findAll(finder, list); + } } public static class BiValue extends Value{ @@ -96,7 +99,9 @@ public class Value extends JavaElement{ @Override public void findAll(Function finder, List list){ if(finder.apply(left)) list.add((E)left); + left.findAll(finder, list); if(finder.apply(right)) list.add((E)right); + right.findAll(finder, list); } } @@ -137,8 +142,11 @@ public class Value extends JavaElement{ @Override public void findAll(Function finder, List list){ if(finder.apply(check)) list.add((E)check); + check.findAll(finder, list); if(finder.apply(success)) list.add((E)success); + success.findAll(finder, list); if(finder.apply(fail)) list.add((E)fail); + fail.findAll(finder, list); } } diff --git a/src/dev/peerat/parser/java/Variable.java b/src/dev/peerat/parser/java/Variable.java index acc7276..8162f0d 100644 --- a/src/dev/peerat/parser/java/Variable.java +++ b/src/dev/peerat/parser/java/Variable.java @@ -103,8 +103,12 @@ public class Variable extends JavaElement{ if(annotations != null){ for(Annotation annotation : this.annotations){ if(finder.apply(annotation)) list.add((E)annotation); + annotation.findAll(finder, list); } } - if(value != null && finder.apply(value)) list.add((E)value); + if(value != null){ + if(finder.apply(value)) list.add((E)value); + value.findAll(finder, list); + } } } diff --git a/src/dev/peerat/parser/java/operation/AssignOperation.java b/src/dev/peerat/parser/java/operation/AssignOperation.java index f35bc0a..eb8814d 100644 --- a/src/dev/peerat/parser/java/operation/AssignOperation.java +++ b/src/dev/peerat/parser/java/operation/AssignOperation.java @@ -40,6 +40,8 @@ public class AssignOperation extends Operation{ @Override public void findAll(Function finder, List list){ if(finder.apply(left)) list.add((E) left); + left.findAll(finder, list); if(finder.apply(right)) list.add((E) right); + right.findAll(finder, list); } } diff --git a/src/dev/peerat/parser/java/operation/ForOperation.java b/src/dev/peerat/parser/java/operation/ForOperation.java index 3bcf329..bb0051f 100644 --- a/src/dev/peerat/parser/java/operation/ForOperation.java +++ b/src/dev/peerat/parser/java/operation/ForOperation.java @@ -60,4 +60,26 @@ public class ForOperation extends OperationBag{ } return super.find(finder); } + + @Override + public void findAll(Function finder, List list){ + if(init_vars != null){ + for(Variable variable : this.init_vars){ + if(finder.apply(variable)) list.add((E)variable); + variable.findAll(finder, list); + } + } + if(init_values != null){ + for(Value value : this.init_values){ + if(finder.apply(value)) list.add((E)value); + value.findAll(finder, list); + } + } + if(finder.apply(condition)) list.add((E)condition); + for(Value value : this.updates){ + if(finder.apply(value)) list.add((E)value); + value.findAll(finder, list); + } + super.findAll(finder, list); + } } diff --git a/src/dev/peerat/parser/java/operation/ForeachOperation.java b/src/dev/peerat/parser/java/operation/ForeachOperation.java index 6d1c450..3b5d4c5 100644 --- a/src/dev/peerat/parser/java/operation/ForeachOperation.java +++ b/src/dev/peerat/parser/java/operation/ForeachOperation.java @@ -1,5 +1,6 @@ package dev.peerat.parser.java.operation; +import java.util.List; import java.util.function.Function; import dev.peerat.parser.Token; @@ -37,4 +38,11 @@ public class ForeachOperation extends OperationBag{ if(finder.apply(iterator)) return (E)iterator; return super.find(finder); } + + @Override + public void findAll(Function finder, List list){ + if(finder.apply(iterator)) list.add((E)iterator); + iterator.findAll(finder, list); + super.findAll(finder, list); + } } diff --git a/src/dev/peerat/parser/java/operation/IfOperation.java b/src/dev/peerat/parser/java/operation/IfOperation.java index d7e47bd..f11bd00 100644 --- a/src/dev/peerat/parser/java/operation/IfOperation.java +++ b/src/dev/peerat/parser/java/operation/IfOperation.java @@ -1,5 +1,6 @@ package dev.peerat.parser.java.operation; +import java.util.List; import java.util.function.Function; import dev.peerat.parser.java.JavaElement; @@ -22,4 +23,11 @@ public class IfOperation extends OperationBag{ if(finder.apply(condition)) return (E)condition; return super.find(finder); } + + @Override + public void findAll(Function finder, List list){ + if(finder.apply(condition)) list.add((E)condition); + condition.findAll(finder, list); + super.find(finder); + } } diff --git a/src/dev/peerat/parser/java/operation/MethodCallOperation.java b/src/dev/peerat/parser/java/operation/MethodCallOperation.java index 29593b1..ef4390e 100644 --- a/src/dev/peerat/parser/java/operation/MethodCallOperation.java +++ b/src/dev/peerat/parser/java/operation/MethodCallOperation.java @@ -57,9 +57,14 @@ public class MethodCallOperation extends Operation{ @Override public void findAll(Function finder, List list){ if(finder.apply(start)) list.add((E)start); - if(previous != null) if(finder.apply(previous)) list.add((E) previous); + start.findAll(finder, list); + if(previous != null){ + if(finder.apply(previous)) list.add((E) previous); + previous.findAll(finder, list); + } for(Value param : this.parameters){ if(finder.apply(param)) list.add((E)param); + param.findAll(finder, list); } } } diff --git a/src/dev/peerat/parser/java/operation/OperationBag.java b/src/dev/peerat/parser/java/operation/OperationBag.java index e2e06e4..e1c5de4 100644 --- a/src/dev/peerat/parser/java/operation/OperationBag.java +++ b/src/dev/peerat/parser/java/operation/OperationBag.java @@ -43,6 +43,7 @@ public class OperationBag extends Operation implements VariableContainer, Operat if(elements != null){ for(JavaElement element : this.elements){ if(finder.apply(element)) list.add((E)element); + element.findAll(finder, list); } } } diff --git a/src/dev/peerat/parser/java/operation/ReturnOperation.java b/src/dev/peerat/parser/java/operation/ReturnOperation.java index 3f100f1..3fff15a 100644 --- a/src/dev/peerat/parser/java/operation/ReturnOperation.java +++ b/src/dev/peerat/parser/java/operation/ReturnOperation.java @@ -31,6 +31,9 @@ public class ReturnOperation extends Operation{ @Override public void findAll(Function finder, List list){ - if(value != null && finder.apply(value)) list.add((E) value); + if(value != null){ + if(finder.apply(value)) list.add((E) value); + value.findAll(finder, list); + } } } diff --git a/src/dev/peerat/parser/java/operation/SynchronizedOperation.java b/src/dev/peerat/parser/java/operation/SynchronizedOperation.java index e532b41..fc4b962 100644 --- a/src/dev/peerat/parser/java/operation/SynchronizedOperation.java +++ b/src/dev/peerat/parser/java/operation/SynchronizedOperation.java @@ -1,5 +1,6 @@ package dev.peerat.parser.java.operation; +import java.util.List; import java.util.function.Function; import dev.peerat.parser.java.JavaElement; @@ -23,4 +24,11 @@ public class SynchronizedOperation extends OperationBag{ if(finder.apply(value)) return (E)value; return super.find(finder); } + + @Override + public void findAll(Function finder, List list){ + if(finder.apply(value)) list.add((E)value); + value.findAll(finder, list); + super.findAll(finder, list); + } } diff --git a/src/dev/peerat/parser/java/operation/ThrowOperation.java b/src/dev/peerat/parser/java/operation/ThrowOperation.java index f13ed8f..910749e 100644 --- a/src/dev/peerat/parser/java/operation/ThrowOperation.java +++ b/src/dev/peerat/parser/java/operation/ThrowOperation.java @@ -33,6 +33,7 @@ public class ThrowOperation extends Operation{ @Override public void findAll(Function finder, List list){ if(finder.apply(value)) list.add((E) value); + value.findAll(finder, list); } } diff --git a/src/dev/peerat/parser/java/operation/TryOperation.java b/src/dev/peerat/parser/java/operation/TryOperation.java index a32d883..9e0f4c3 100644 --- a/src/dev/peerat/parser/java/operation/TryOperation.java +++ b/src/dev/peerat/parser/java/operation/TryOperation.java @@ -1,5 +1,6 @@ package dev.peerat.parser.java.operation; +import java.util.List; import java.util.function.Function; import dev.peerat.parser.java.JavaElement; @@ -26,4 +27,13 @@ public class TryOperation extends OperationBag{ public E find(Function finder){ return resource != null ? finder.apply(resource) ? (E)resource : super.find(finder) : super.find(finder); } + + @Override + public void findAll(Function finder, List list){ + if(resource != null){ + if(finder.apply(resource)) list.add((E) resource); + resource.findAll(finder, list); + } + super.findAll(finder, list); + } } diff --git a/src/dev/peerat/parser/java/operation/WhileOperation.java b/src/dev/peerat/parser/java/operation/WhileOperation.java index 598dba4..e8c9596 100644 --- a/src/dev/peerat/parser/java/operation/WhileOperation.java +++ b/src/dev/peerat/parser/java/operation/WhileOperation.java @@ -1,5 +1,6 @@ package dev.peerat.parser.java.operation; +import java.util.List; import java.util.function.Function; import dev.peerat.parser.java.JavaElement; @@ -13,7 +14,7 @@ public class WhileOperation extends OperationBag{ this.condition = condition; } - public Value getCondition(){ + public Value getCondition(){s return this.condition; } @@ -22,4 +23,11 @@ public class WhileOperation extends OperationBag{ if(finder.apply(condition)) return (E)condition; return super.find(finder); } + + @Override + public void findAll(Function finder, List list){ + if(finder.apply(condition)) list.add((E) condition); + condition.findAll(finder, list); + super.findAll(finder, list); + } }