net.intelie.pipes.ValidationContext Maven / Gradle / Ivy
Go to download
Show more of this group Show more artifacts with this name
Show all versions of pipes-api Show documentation
Show all versions of pipes-api Show documentation
Intelie Pipes' API classes and interfaces
package net.intelie.pipes;
import java.util.Arrays;
public class ValidationContext {
private final boolean hasWindow;
public ValidationContext(boolean hasWindow) {
this.hasWindow = hasWindow;
}
public ValidationContext maybeDefer(Object obj) throws PipeException {
if (obj instanceof Expression)
return defer((Expression) obj);
return this;
}
public ValidationContext defer(Expression... expressions) throws PipeException {
return defer(Arrays.asList(expressions));
}
public ValidationContext defer(Iterable iterable) throws PipeException {
for (Expression expression : iterable)
if (expression != null)
expression.validate(this);
return this;
}
public Instance validateAs(Expression instance) {
return new Instance(instance);
}
public class Instance {
private final Expression instance;
public Instance(Expression instance) {
this.instance = instance;
}
public Instance ensureNoWindow() throws PipeException {
if (hasWindow)
throw new PipeException("Expression '%s' can't be used inside a windowed aggregation.", instance);
return this;
}
}
}