WithMatchDispatcher.java

package eu.javaexperience.dispatch;

public abstract class WithMatchDispatcher<CTX> implements Dispatcher<CTX>, VariableSubDispatch<CTX>
{
	protected final RWListSubdispatchVariator<CTX> subdispatch = new RWListSubdispatchVariator<>();

	public abstract boolean isMatch(CTX ctx);
	
	@Override
	public boolean dispatch(CTX ctx)
	{
		if(!isMatch(ctx))
		{
			return false;
		}
		
		return DispatcherTools.subDispatch(ctx, subdispatch.subject);
	}

	@Override
	public SubdispatchVariator<CTX> getDispatchVariator() 
	{
		return subdispatch;
	}
}