world :-)
b) Added unique identifier for each replica. This now allows to have
multiple replicas per physical host. It also make deregistration
deterministic.
requests shutdown of the connection. Unfortunately the RabbitMQ API does
not support closing a connection while unblocking the nextDelivery call.
There fore we need to interrupt the thread manually.
ssh://armin@sapsailing.com/home/trac/git into racecommittee_integrated
Conflicts:
java/com.sap.sailing.domain/src/com/sap/sailing/domain/leaderboard/impl/AbstractSimpleLeaderboardImpl.java
# updated com.sap.sailing.domain to Java 1.7 again
# split of Event (see EventData) and Course (see CourseData) to minimize shared code with android
# to avoid sharing RaceColumn and Leaderboard (and its dependencies) Android projects work with RaceGroups (consisting of SeriesWithRows -> consisting of RaceRows -> consisting of RaceCells -> consisting of RaceLogs). A RaceGroup is basically a data-only view on transposed RaceColumns. See RaceGroupFactory for conversion from Leaderboard to RaceGroup. Future work: use Regatta instead of Leaderboard to convert to RaceGroup
- Builds with maven, except know local issue with selenium tests on my machine (due to Selenium/Firefox version mismatch)
- domain.test not suitable for a test fragment, since it contains larger parts of integration-tests using many different down-stream bundles.
particularly registering the replica service for tracked race additions in order to auto-link them
to leaderboards causes trouble if the server state is not cleared before. Replicated tracked races may
then get auto-linked to old leaderboards and regattas in the server that happen to point to races with
equal RaceIdentifiers.
Also, it is important to become tolerant against a non-existing default leaderboard which doesn't exist
yet when tracked races are imported. The default leaderboard will be replicated together with other
leaderboards.
During replication initial load a ClassNotFoundException was thrown because DelayedLeaderboardScoreCorrections
wasn't found. One problem was that obviously the Thread's context class loader set from getClass().getClassLoader()
was "only" the default class loader, not knowing about the OSGi bundle dependencies. Furthermore, the replication
bundle did not have a dependency on the domain.persistence bundle.