RuleChainLink.java
package eu.javaexperience.patterns.behavioral.cor.link;
import eu.javaexperience.asserts.AssertArgument;
import eu.javaexperience.interfaces.simple.getBy.GetBy1;
import eu.javaexperience.interfaces.simple.publish.SimplePublish1;
;
public class RuleChainLink<CTX> extends CorChainLink<CTX>
{
public RuleChainLink(GetBy1<Boolean, CTX> check, SimplePublish1<CTX> action)
{
AssertArgument.assertNotNull(this.check = check, "checker");
this.action = action;
}
protected GetBy1<Boolean, CTX> check;
protected SimplePublish1<CTX> action;
@Override
public boolean dispatch(CTX ctx)
{
if(Boolean.TRUE == check.getBy(ctx))
{
if(null != action)
{
action.publish(ctx);
}
return true;
}
return false;
}
}