Added assertions to HandlingHistory that ensures that it refers to a unique cargo, and that a Cargo can't derive its delivery progress from a handling history of another cargo. There are also two descriptive static factory methods for the different possibilities of creating a HandlingHistory.
HandlingEventRepository now looks up handling events from Cargo instead of TrackingId.
Fixed a problem with Hibernate lazy proxies not being initialised when reading a field.
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)
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.
Cargo tracking web interface now sits immediately on top of the domain layer, forming one of the "user interface extremes" (the other one being complete remote-DTO-separation).
Slight refinement of packge structure under application - service is split into things like messagning and remoting.
The external routing team application is moved out to its own top-level package, to highlight the fact that it is a completely separate application from booking/tracking.
Purged last DTO from domain service layer, in preparation for a combination of dedicated remote facade with DTO assembly (booking application) and working directly against the domain service layer (tracking web interface).
Added Checkstyle configuration file that checks the sun coding conventions.
Misc CheckStyle fixes.
Removed magic numbers from HashCodeBuilder.
Created a separate sub package for DTO assemblers.
Minor refactorings to increase readability.
Added asynchronous event emission whenever a handling event is registered, so that interested parties can be notified if a cargo is misdirected (is unloaded, is late, has arrived, or whatever).
Two different implementations a available: JMS and a simple thread-based one.
Also, the cargo service track method now uses TrackingId in the signature, for consistency.
Tightened the CargoTrackingController a bit, treating "no cargo found" same way as a binding error
Introduced a Spring context for the web layer, where all web support components go.
Introduced the RequestContext attribute as "rc" in views.
Removed unneeded "unknown cargo" JSP.
c:out not needed anymore.
Modified InMem repository to cast exception if tryng to find cargo with track id DAE
Added new workflow for unknown cargo (new view and modified controller) instead of if statement i jsp page
Set command class in controller constructor, since it's tightly coupled to code, not configurable.
Use assertEquals in repository test, making it pass.
Added spring-test jar to pom.
No logfile appender in test-logging.