aboutsummaryrefslogtreecommitdiff
path: root/src/main/java/io/trygvis/esper/testing/core/badge/BadgeService.java
diff options
context:
space:
mode:
authorTrygve Laugstøl <trygvis@inamo.no>2013-01-05 22:39:18 +0100
committerTrygve Laugstøl <trygvis@inamo.no>2013-01-05 22:39:18 +0100
commit12606726c11efbbf7213b05284c94e28a1ae4b8e (patch)
tree415a400218f3bbaac4f13a43461446f64f74028c /src/main/java/io/trygvis/esper/testing/core/badge/BadgeService.java
parentabf160e56be50781b0f78f3f938513ab6102809b (diff)
downloadesper-testing-12606726c11efbbf7213b05284c94e28a1ae4b8e.tar.gz
esper-testing-12606726c11efbbf7213b05284c94e28a1ae4b8e.tar.bz2
esper-testing-12606726c11efbbf7213b05284c94e28a1ae4b8e.tar.xz
esper-testing-12606726c11efbbf7213b05284c94e28a1ae4b8e.zip
o Including state in both badge and badge progress.
o Removing count from badge, inserting one badge per badge received.
Diffstat (limited to 'src/main/java/io/trygvis/esper/testing/core/badge/BadgeService.java')
-rw-r--r--src/main/java/io/trygvis/esper/testing/core/badge/BadgeService.java45
1 files changed, 36 insertions, 9 deletions
diff --git a/src/main/java/io/trygvis/esper/testing/core/badge/BadgeService.java b/src/main/java/io/trygvis/esper/testing/core/badge/BadgeService.java
index ea0c0dc..bf06fbb 100644
--- a/src/main/java/io/trygvis/esper/testing/core/badge/BadgeService.java
+++ b/src/main/java/io/trygvis/esper/testing/core/badge/BadgeService.java
@@ -9,20 +9,38 @@ import java.io.*;
public class BadgeService {
private final Logger logger = LoggerFactory.getLogger(getClass());
- private static final ObjectMapper objectMapper = new ObjectMapper();
+ private final ObjectMapper objectMapper;
- public UnbreakableBadgeProgress unbreakable(PersonBadgeProgressDto dto) {
- String state = dto.state;
+ public BadgeService(ObjectMapper objectMapper) {
+ this.objectMapper = objectMapper;
+ }
- try {
- return objectMapper.readValue(state, UnbreakableBadgeProgress.class);
- } catch (IOException e) {
- logger.error("Could not de-serialize badge state: {}", state);
- throw new RuntimeException(e);
+ public BadgeProgress badgeProgress(PersonBadgeProgressDto dto) {
+ switch (PersonalBadgeDto.BadgeType.valueOf(dto.badge)) {
+ case UNBREAKABLE:
+ return getProgress(dto.state, UnbreakableBadgeProgress.class);
}
+
+ throw new RuntimeException("Unknown badge type: " + dto.badge);
+ }
+
+ public <T extends BadgeProgress> T badgeProgress(PersonBadgeProgressDto dto, Class<T> klass) {
+ switch (PersonalBadgeDto.BadgeType.valueOf(dto.badge)) {
+ case UNBREAKABLE:
+ if(!klass.equals(UnbreakableBadgeProgress.class)) {
+ throw new RuntimeException("Badge is not of the expected type: UNBREAKABLE.");
+ }
+ return getProgress(dto.state, klass);
+ }
+
+ throw new RuntimeException("Unknown badge type: " + dto.badge);
}
- public String serialize(UnbreakableBadgeProgress badge) {
+ public UnbreakableBadge unbreakable(PersonalBadgeDto dto) {
+ return getProgress(dto.state, UnbreakableBadge.class);
+ }
+
+ public String serialize(Object badge) {
try {
CharArrayWriter writer = new CharArrayWriter();
objectMapper.writeValue(writer, badge);
@@ -32,4 +50,13 @@ public class BadgeService {
throw new RuntimeException(e);
}
}
+
+ private <T> T getProgress(String state, Class<T> klass) {
+ try {
+ return objectMapper.readValue(state, klass);
+ } catch (IOException e) {
+ logger.error("Could not de-serialize badge state: {}", state);
+ throw new RuntimeException(e);
+ }
+ }
}