Moved web interfaces, web service and RMI remoting facade to iface package (temporarily renamed due to refactoring problems in IntelliJ when a package is named as a reserved word)
Web service now uses SystemEvents interface to place incoming registration attempts on queue. JMS is now isolated to the infrastructure.messagning.jms package.
Introduced asynchronous processing of incoming handling event registration attempts.
Removed the plain-delegation track() method from TrackingService (using repository directly in CargoTrackingController instead).
Fixed a few carrier movement -> voyage references in setters and JSP expressions.
Added cargoIsMisdirected() and cargoHasArrived() to DomainEventNotifier (but no consumers yet).
Routing a cargo is still broken due to database changes incompatible with the random route generation algorithm.
Added RoutingStatus.
Renamed StatusCode to TransportStatus.
Voyage is persisted.
Implemented equals, hashCode for VoyageNumber.
Itinerary is now embedded into Cargo table, simplified relation Between Cargo and Itinerary.
Persistent classes are not final anymore (unnecessary obstruction for Hibernate)
Introduced Voyage, Schedule and VoyageNumber. CarrierMovement is now a value object, CarrierMovementId is dropped.
Leg now has load/unload location and time, and a reference to a Voyage.
HandlingEvent references a Voyage instead of a CarrierMovement.
DeliveryHistory is renamed to Delivery.
(Yes, it's very broken right now, but it compiles)
Introduced Voyage, Schedule and VoyageNumber. CarrierMovement is now a value object, CarrierMovementId is dropped.
Leg now has load/unload location and time, and a reference to a Voyage.
HandlingEvent references a Voyage instead of a CarrierMovement.
DeliveryHistory is renamed to Delivery.
(Yes, it's very broken right now, but it compiles)
Introduced Voyage, Schedule and VoyageNumber. CarrierMovement is now a value object, CarrierMovementId is dropped.
Leg now has load/unload location and time, and a reference to a Voyage.
HandlingEvent references a Voyage instead of a CarrierMovement.
DeliveryHistory is renamed to Delivery.
(Yes, it's very broken right now, but it compiles)
Introduced Voyage, Schedule and VoyageNumber. CarrierMovement is now a value object, CarrierMovementId is dropped.
Leg now has load/unload location and time, and a reference to a Voyage.
HandlingEvent references a Voyage instead of a CarrierMovement.
DeliveryHistory is renamed to Delivery.
(Yes, it's very broken right now, but it compiles)
Introduced Voyage, Schedule and VoyageNumber. CarrierMovement is now a value object, CarrierMovementId is dropped.
Leg now has load/unload location and time, and a reference to a Voyage.
HandlingEvent references a Voyage instead of a CarrierMovement.
DeliveryHistory is renamed to Delivery.
(Yes, it's very broken right now, but it compiles)
Introduced Voyage, Schedule and VoyageNumber. CarrierMovement is now a value object, CarrierMovementId is dropped.
Leg now has load/unload location and time, and a reference to a Voyage.
HandlingEvent references a Voyage instead of a CarrierMovement.
DeliveryHistory is renamed to Delivery.
(Yes, it's very broken right now, but it compiles)
Moved "assignToRoute" into Cargo and removed the service method.
Made Cargo.isMisdirected() persistent and asynchronously updated.
Moved nullSafe method to DomainObjectUtils.
Implemented copy() for value objects.
Methods returning Date on value objects now clone the value to maintain immutability.
Constructor-based injection for domain layer.
@Override annotation on interface implementations, which effectively makes the application Java 6 only.
Introduced CargoHandlingScenarioTest to support refactoring cargo handling, state updating and rerouting.