package net.java.cargotracker.application; import net.java.cargotracker.domain.model.cargo.Cargo; import net.java.cargotracker.domain.model.handling.HandlingEvent; import net.java.cargotracker.interfaces.handling.HandlingEventRegistrationAttempt; /** * This interface provides a way to let other parts of the system know about * events that have occurred. * <p/> * It may be implemented synchronously or asynchronously, using for example JMS. */ public interface ApplicationEvents { void cargoWasHandled(HandlingEvent event); void cargoWasMisdirected(Cargo cargo); void cargoHasArrived(Cargo cargo); void receivedHandlingEventRegistrationAttempt(HandlingEventRegistrationAttempt attempt); }