fixing bug 2780 by adding flag URI change handling to listener interface and CompetitorImpl setter implementation; leaderboard cache handling updated

This commit is contained in:
Axel Uhl committed 2015-04-29 23:23:39 +02:00
1 parent 6a1f3c0e17
commit c78fc9d4e8
4 files changed
+56 -2

No files matched your search

@@ -1,5 +1,7 @@
package com.sap.sailing.domain.base;
import java.net.URI;
import com.sap.sse.common.Color;
public interface CompetitorChangeListener extends BoatChangeListener, NationalityChangeListener {
@@ -8,4 +10,6 @@ public interface CompetitorChangeListener extends BoatChangeListener, Nationalit
void nameChanged(String oldName, String newName);
void emailChanged(String oldEmail, String newEmail);
void flagImageChanged(URI oldFlagImageURI, URI newFlagImageURI);
}
@@ -145,6 +145,12 @@ public class CompetitorImpl implements DynamicCompetitor {
@Override
public void setFlagImage(URI flagImage) {
final URI oldFlagImage = this.flagImage;
this.flagImage = flagImage;
if (!Util.equalsWithNull(oldFlagImage, flagImage)) {
for (CompetitorChangeListener listener : getListeners()) {
listener.flagImageChanged(oldFlagImage, flagImage);
}
}
}
}
@@ -7,6 +7,8 @@ import static org.junit.Assert.assertSame;
import static org.junit.Assert.assertTrue;
import java.io.IOException;
import java.net.URI;
import java.net.URISyntaxException;
import org.junit.Before;
import org.junit.Test;
@@ -45,6 +47,12 @@ public class CompetitorListenerTest extends AbstractSerializationTest {
private Color newColor;
private DynamicCompetitor competitor;
private DomainFactoryImpl baseDomainFactory;
private boolean emailChanged;
private String oldEmail;
private String newEmail;
private boolean flagImageChanged;
private URI oldFlagImageURL;
private URI newFlagImageURL;
@Before
public void setUp() {
@@ -63,6 +71,12 @@ public class CompetitorListenerTest extends AbstractSerializationTest {
colorChanged = false;
oldColor = null;
newColor = null;
emailChanged = false;
oldEmail = null;
newEmail = null;
flagImageChanged = false;
oldFlagImageURL = null;
newFlagImageURL = null;
listener = new CompetitorChangeListener() {
private static final long serialVersionUID = 4581029778988240209L;
@@ -97,7 +111,16 @@ public class CompetitorListenerTest extends AbstractSerializationTest {
@Override
public void emailChanged(String oldEmail, String newEmail) {
//TODO
emailChanged = true;
CompetitorListenerTest.this.oldEmail = oldEmail;
CompetitorListenerTest.this.newEmail = newEmail;
}
@Override
public void flagImageChanged(URI oldFlagImageURL, URI newFlagImageURL) {
flagImageChanged = true;
CompetitorListenerTest.this.oldFlagImageURL = oldFlagImageURL;
CompetitorListenerTest.this.newFlagImageURL = newFlagImageURL;
}
};
competitor.addCompetitorChangeListener(listener);
@@ -126,6 +149,22 @@ public class CompetitorListenerTest extends AbstractSerializationTest {
assertFalse(nationalityChanged);
}
@Test
public void testFlagChange() throws URISyntaxException {
competitor.setFlagImage(new URI("http://www.something.de/pic.png"));
assertTrue(flagImageChanged);
assertNull(oldFlagImageURL);
assertEquals(new URI("http://www.something.de/pic.png"), newFlagImageURL);
}
@Test
public void testEmailChange() throws URISyntaxException {
competitor.setEmail("hasso.plattner@sap.com");
assertTrue(emailChanged);
assertNull(oldEmail);
assertEquals("hasso.plattner@sap.com", newEmail);
}
@Test
public void testSimpleCompetitorListenerPatternForSailId() {
final String myOldSailId = competitor.getBoat().getSailID();
@@ -1,5 +1,6 @@
package com.sap.sailing.domain.leaderboard;
import java.net.URI;
import java.util.Collections;
import java.util.HashSet;
import java.util.Map;
@@ -121,7 +122,11 @@ public class LeaderboardCacheManager {
public void emailChanged(String oldEmail, String newEmail) {
//ignore (email not shown in leaderboard)
}
@Override
public void flagImageChanged(URI oldFlagImageURL, URI newFlagImageURL) {
removeFromCache(leaderboard);
}
}
private class CacheInvalidationUponScoreCorrectionListener implements ScoreCorrectionListener {