diff options
Diffstat (limited to 'src/main/java/io/trygvis/esper/testing/web')
4 files changed, 52 insertions, 60 deletions
diff --git a/src/main/java/io/trygvis/esper/testing/web/JerseyApplication.java b/src/main/java/io/trygvis/esper/testing/web/JerseyApplication.java index 8f66548..3c86581 100755 --- a/src/main/java/io/trygvis/esper/testing/web/JerseyApplication.java +++ b/src/main/java/io/trygvis/esper/testing/web/JerseyApplication.java @@ -8,6 +8,7 @@ import io.trygvis.esper.testing.*; import io.trygvis.esper.testing.core.badge.*; import io.trygvis.esper.testing.util.sql.*; import io.trygvis.esper.testing.web.resource.*; +import org.codehaus.jackson.map.*; import javax.ws.rs.*; import javax.ws.rs.core.*; @@ -23,18 +24,22 @@ public class JerseyApplication extends Application { private final HashSet<Object> singletons; public JerseyApplication() throws Exception { - DatabaseAccess da = new DatabaseAccess(WebConfig.config.createBoneCp()); + Config config = WebConfig.config; - BadgeService badgeService = new BadgeService(); + DatabaseAccess da = new DatabaseAccess(config.createBoneCp()); + ObjectMapper objectMapper = config.createObjectMapper(); - singletons = new HashSet<Object>(Arrays.asList( + BadgeService badgeService = new BadgeService(objectMapper); + + singletons = new HashSet<>(Arrays.asList( new CoreResource(da, badgeService), - new JenkinsResource(da) + new JenkinsResource(da), + new MyObjectMapper(objectMapper) )); } public Set<Class<?>> getClasses() { - return new HashSet<>(Arrays.<Class<?>>asList(ResourceParamInjector.class, MyObjectMapper.class)); + return new HashSet<>(Arrays.<Class<?>>asList(ResourceParamInjector.class)); } public Set<Object> getSingletons() { @@ -44,12 +49,6 @@ public class JerseyApplication extends Application { @Provider public static class ResourceParamInjector implements InjectableProvider<MagicParam, Type> { - private final ResourceContext rc; - - public ResourceParamInjector(@Context ResourceContext rc) { - this.rc = rc; - } - public ComponentScope getScope() { return ComponentScope.PerRequest; } diff --git a/src/main/java/io/trygvis/esper/testing/web/MyObjectMapper.java b/src/main/java/io/trygvis/esper/testing/web/MyObjectMapper.java index bfbd6eb..c684010 100755 --- a/src/main/java/io/trygvis/esper/testing/web/MyObjectMapper.java +++ b/src/main/java/io/trygvis/esper/testing/web/MyObjectMapper.java @@ -1,37 +1,17 @@ package io.trygvis.esper.testing.web; -import io.trygvis.esper.testing.*; -import org.codehaus.jackson.*; import org.codehaus.jackson.map.*; -import org.codehaus.jackson.map.module.*; -import java.io.*; import javax.ws.rs.ext.*; public class MyObjectMapper implements ContextResolver<ObjectMapper> { - private ObjectMapper objectMapper; + private final ObjectMapper objectMapper; - public MyObjectMapper() throws Exception { - objectMapper = new ObjectMapper(); - SimpleModule module = new SimpleModule("wat", Version.unknownVersion()); - module.addDeserializer(Uuid.class, new UuidDeserializer()); - module.addSerializer(Uuid.class, new UuidSerializer()); - objectMapper.registerModule(module); + public MyObjectMapper(ObjectMapper objectMapper) throws Exception { + this.objectMapper = objectMapper; } public ObjectMapper getContext(Class<?> type) { return objectMapper; } - - private static class UuidDeserializer extends JsonDeserializer<Uuid> { - public Uuid deserialize(JsonParser jp, DeserializationContext context) throws IOException { - return Uuid.fromString(jp.getText()); - } - } - - private static class UuidSerializer extends JsonSerializer<Uuid> { - public void serialize(Uuid value, JsonGenerator generator, SerializerProvider provider) throws IOException { - generator.writeString(value.toStringBase64()); - } - } } diff --git a/src/main/java/io/trygvis/esper/testing/web/resource/BadgeJson.java b/src/main/java/io/trygvis/esper/testing/web/resource/BadgeJson.java index 8eea335..ded97ae 100644 --- a/src/main/java/io/trygvis/esper/testing/web/resource/BadgeJson.java +++ b/src/main/java/io/trygvis/esper/testing/web/resource/BadgeJson.java @@ -1,20 +1,33 @@ package io.trygvis.esper.testing.web.resource; +import org.joda.time.*; + public class BadgeJson { + public final DateTime createdDate; public final String name; public final int level; + public final Integer progress; + public final Integer goal; + /** - * Number of times this badge has been received. + * For completed badges. */ - public final int count; - public final int progress; - public final int goal; + public BadgeJson(DateTime createdDate, String name, int level) { + this.createdDate = createdDate; + this.name = name; + this.level = level; + this.progress = null; + this.goal = null; + } - public BadgeJson(String name, int level, int count, int progress, int goal) { + /** + * For badges in progress. + */ + public BadgeJson(DateTime createdDate, String name, int level, int progress, int goal) { + this.createdDate = createdDate; this.name = name; this.level = level; - this.count = count; this.progress = progress; this.goal = goal; } diff --git a/src/main/java/io/trygvis/esper/testing/web/resource/CoreResource.java b/src/main/java/io/trygvis/esper/testing/web/resource/CoreResource.java index f68d6ec..a129cf3 100755 --- a/src/main/java/io/trygvis/esper/testing/web/resource/CoreResource.java +++ b/src/main/java/io/trygvis/esper/testing/web/resource/CoreResource.java @@ -124,14 +124,14 @@ public class CoreResource extends AbstractResource { @GET @Path("/badge") - public List<BadgeDetailJson> getBadges(@MagicParam final PageRequest page, @MagicParam(query = "person") final Uuid person) throws Exception { - return da.inTransaction(new CoreDaosCallback<List<BadgeDetailJson>>() { - protected List<BadgeDetailJson> run() throws SQLException { - List<PersonBadgeDto> badgeDtos = daos.personDao.selectBadges(fromNull(person), Option.<PersonBadgeDto.BadgeType>none(), Option.<Integer>none(), page); - - List<BadgeDetailJson> list = new ArrayList<>(); - for (PersonBadgeDto badge : badgeDtos) { - list.add(getBadgeDetailJson.apply(badge)); + public List<BadgeJson> getBadges(@MagicParam final PageRequest page, @MagicParam(query = "person") final Uuid person) throws Exception { + return da.inTransaction(new CoreDaosCallback<List<BadgeJson>>() { + protected List<BadgeJson> run() throws SQLException { + List<PersonalBadgeDto> badgeDtos = daos.personDao.selectBadges(fromNull(person), Option.<PersonalBadgeDto.BadgeType>none(), Option.<Integer>none(), page); + + List<BadgeJson> list = new ArrayList<>(); + for (PersonalBadgeDto badge : badgeDtos) { + list.add(getBadgeJson.apply(badge)); } return list; } @@ -157,15 +157,13 @@ public class CoreResource extends AbstractResource { protected final SqlF<PersonDto, PersonDetailJson> getPersonDetailJson = new SqlF<PersonDto, PersonDetailJson>() { public PersonDetailJson apply(PersonDto person) throws SQLException { List<BadgeJson> badges = new ArrayList<>(); - - for (PersonBadgeDto badge : daos.personDao.selectBadges(person.uuid)) { - badges.add(getBadge(badge)); + for (PersonalBadgeDto badge : daos.personDao.selectBadges(person.uuid)) { + badges.add(getBadgeJson.apply(badge)); } List<BadgeJson> badgesInProgress = new ArrayList<>(); - for (PersonBadgeProgressDto badgeProgressDto : daos.personDao.selectBadgeProgresses(person.uuid)) { - UnbreakableBadgeProgress progress = badgeService.unbreakable(badgeProgressDto); + BadgeProgress progress = badgeService.badgeProgress(badgeProgressDto); badgesInProgress.add(getBadge(progress)); } @@ -177,17 +175,19 @@ public class CoreResource extends AbstractResource { } }; - private BadgeJson getBadge(PersonBadgeDto badge) { - return new BadgeJson(badge.type.name(), badge.level, badge.count, 100, 100); - } + protected SqlF<PersonalBadgeDto, BadgeJson> getBadgeJson = new SqlF<PersonalBadgeDto, BadgeJson>() { + public BadgeJson apply(PersonalBadgeDto badge) throws SQLException { + return new BadgeJson(badge.createdDate, badge.type.name(), badge.level); + } + }; private BadgeJson getBadge(BadgeProgress progress) { - return new BadgeJson(progress.type.name(), progress.progressingAgainstLevel(), 0, progress.progression(), progress.goal()); + return new BadgeJson(null, progress.type.name(), progress.progressingAgainstLevel(), progress.progression(), progress.goal()); } - protected final SqlF<PersonBadgeDto, BadgeDetailJson> getBadgeDetailJson = new SqlF<PersonBadgeDto, BadgeDetailJson>() { - public BadgeDetailJson apply(PersonBadgeDto badgeDto) throws SQLException { - return new BadgeDetailJson(getBadge(badgeDto), + protected final SqlF<PersonalBadgeDto, BadgeDetailJson> getBadgeDetailJson = new SqlF<PersonalBadgeDto, BadgeDetailJson>() { + public BadgeDetailJson apply(PersonalBadgeDto badgeDto) throws SQLException { + return new BadgeDetailJson(getBadgeJson.apply(badgeDto), daos.personDao.selectPerson(badgeDto.person).map(getPersonJson).get()); } }; |