diff options
author | Trygve Laugstøl <trygvis@inamo.no> | 2013-01-05 22:39:18 +0100 |
---|---|---|
committer | Trygve Laugstøl <trygvis@inamo.no> | 2013-01-05 22:39:18 +0100 |
commit | 12606726c11efbbf7213b05284c94e28a1ae4b8e (patch) | |
tree | 415a400218f3bbaac4f13a43461446f64f74028c /src/main/java/io/trygvis/esper/testing/core/badge/BadgeService.java | |
parent | abf160e56be50781b0f78f3f938513ab6102809b (diff) | |
download | esper-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.java | 45 |
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); + } + } } |