com.github.mustachejava.reflect.guards.WrappedGuard Maven / Gradle / Ivy
package com.github.mustachejava.reflect.guards;
import com.github.mustachejava.ObjectHandler;
import com.github.mustachejava.reflect.Guard;
import com.github.mustachejava.util.Wrapper;
import java.util.List;
import static com.github.mustachejava.reflect.ReflectionObjectHandler.unwrap;
/**
* Dig into the dot notation to guard it from changing.
*
* User: sam
* Date: 6/26/12
* Time: 9:09 PM
*/
public class WrappedGuard implements Guard {
protected final ObjectHandler oh;
protected final int index;
protected final Wrapper[] wrappers;
private final List wrapperGuard;
public WrappedGuard(ObjectHandler oh, int index, List wrappers, List wrapperGuard) {
this.oh = oh;
this.index = index;
this.wrappers = wrappers.toArray(new Wrapper[wrappers.size()]);
this.wrapperGuard = wrapperGuard;
}
@Override
public boolean apply(Object[] objects) {
Object scope = unwrap(oh, index, wrappers, objects);
for (Guard predicate : wrapperGuard) {
if (!predicate.apply(new Object[]{scope})) {
return false;
}
}
return true;
}
public String toString() {
return "[WrappedGuard: " + index + " " + wrapperGuard + "]";
}
}
© 2015 - 2025 Weber Informatics LLC | Privacy Policy