DispatcherTools.java
package eu.javaexperience.dispatch;
import java.util.List;
import eu.javaexperience.interfaces.simple.publish.SimplePublish1;
import eu.javaexperience.reflect.Mirror;
public class DispatcherTools
{
public static final Dispatcher[] emptyDispatcherArray = new Dispatcher[0];
public static <CTX> boolean subDispatch(CTX ctx, List<Dispatcher<CTX>> dispatchers)
{
if(null == dispatchers)
{
return false;
}
if(!dispatchers.isEmpty())
{
for(Dispatcher<CTX> c: dispatchers.toArray(emptyDispatcherArray))
{
if(c.dispatch(ctx))
{
return true;
}
}
}
return false;
}
public static <CTX> SimplePublish1<CTX> toSimplePublish(final Dispatcher<CTX> actor)
{
return new SimplePublish1<CTX>()
{
@Override
public void publish(CTX a)
{
actor.dispatch(a);
}
};
}
public static <CTX> Dispatcher<CTX> toDispatcher(final SimplePublish1<CTX> act)
{
return new Dispatcher<CTX>()
{
@Override
public boolean dispatch(CTX ctx)
{
act.publish(ctx);
return true;
}
};
}
public static <CTX> SimplePublish1<CTX> toDispatcherAll(final Dispatcher<CTX>... dispatchers)
{
return new SimplePublish1<CTX>()
{
@Override
public void publish(CTX a)
{
for(Dispatcher<CTX> d:dispatchers)
{
d.dispatch(a);
}
}
};
}
}