From 75f1af14df6190944c8d13f47f8124ed5dfcfd05 Mon Sep 17 00:00:00 2001 From: Alex Eng Date: Tue, 15 Dec 2015 09:45:35 +1000 Subject: [PATCH] Move user dto to api --- .../main/java/org/zanata/rest/dto/User.java | 120 ++++++++++++++++++ .../rest/service/ProjectVersionResource.java | 5 +- .../java/org/zanata/rest/dto/UserTest.java | 33 +++++ 3 files changed, 156 insertions(+), 2 deletions(-) create mode 100644 zanata-common-api/src/main/java/org/zanata/rest/dto/User.java create mode 100644 zanata-common-api/src/test/java/org/zanata/rest/dto/UserTest.java diff --git a/zanata-common-api/src/main/java/org/zanata/rest/dto/User.java b/zanata-common-api/src/main/java/org/zanata/rest/dto/User.java new file mode 100644 index 0000000..0a48ee6 --- /dev/null +++ b/zanata-common-api/src/main/java/org/zanata/rest/dto/User.java @@ -0,0 +1,120 @@ +package org.zanata.rest.dto; + +import java.io.Serializable; +import java.util.List; + +import javax.validation.constraints.NotNull; + +import org.codehaus.jackson.annotate.JsonIgnoreProperties; +import org.codehaus.jackson.annotate.JsonProperty; +import org.codehaus.jackson.annotate.JsonPropertyOrder; +import org.codehaus.jackson.map.annotate.JsonSerialize; +import org.hibernate.validator.constraints.Email; +import org.hibernate.validator.constraints.NotEmpty; + +@JsonIgnoreProperties(ignoreUnknown = true) +@JsonPropertyOrder({ "username", "email", "name", "imageUrl", "languageTeams"}) +@JsonSerialize(include = JsonSerialize.Inclusion.NON_NULL) +public class User implements Serializable { + + private String username; + private String email; + private String name; + private String imageUrl; + private List languageTeams; + + public User() { + this(null, null, null, null, null); + } + + public User(String username, String email, String name, + String imageUrl, List languageTeams) { + this.username = username; + this.email = email; + this.name = name; + this.imageUrl = imageUrl; + this.languageTeams = languageTeams; + } + + @NotEmpty + @JsonProperty("username") + public String getUsername() { + return username; + } + + public void setUsername(String username) { + this.username = username; + } + + @Email + @NotNull + @JsonProperty("email") + public String getEmail() { + return email; + } + + public void setEmail(String email) { + this.email = email; + } + + @NotEmpty + @JsonProperty("name") + public String getName() { + return name; + } + + public void setName(String name) { + this.name = name; + } + + @NotEmpty + @JsonProperty("imageUrl") + public String getImageUrl() { + return imageUrl; + } + + public void setImageUrl(String imageUrl) { + this.imageUrl = imageUrl; + } + + public List getLanguageTeams() { + return languageTeams; + } + + public void setLanguageTeams(List languageTeams) { + this.languageTeams = languageTeams; + } + + @Override + public boolean equals(Object o) { + if (this == o) return true; + if (!(o instanceof User)) return false; + + User user = (User) o; + + if (username != null ? !username.equals(user.username) : + user.username != null) return false; + if (email != null ? !email.equals(user.email) : user.email != null) + return false; + if (name != null ? !name.equals(user.name) : user.name != null) + return false; + if (imageUrl != null ? !imageUrl.equals(user.imageUrl) : + user.imageUrl != null) return false; + return !(languageTeams != null ? + !languageTeams.equals(user.languageTeams) : + user.languageTeams != null); + + } + + @Override + public int hashCode() { + int result = username != null ? username.hashCode() : 0; + result = 31 * result + (email != null ? email.hashCode() : 0); + result = 31 * result + (name != null ? name.hashCode() : 0); + result = 31 * result + (imageUrl != null ? imageUrl.hashCode() : 0); + result = + 31 * result + + (languageTeams != null ? languageTeams.hashCode() : 0); + return result; + } +} diff --git a/zanata-common-api/src/main/java/org/zanata/rest/service/ProjectVersionResource.java b/zanata-common-api/src/main/java/org/zanata/rest/service/ProjectVersionResource.java index 997e06f..8e43b57 100644 --- a/zanata-common-api/src/main/java/org/zanata/rest/service/ProjectVersionResource.java +++ b/zanata-common-api/src/main/java/org/zanata/rest/service/ProjectVersionResource.java @@ -26,6 +26,7 @@ import org.zanata.rest.dto.LocaleDetails; import org.zanata.rest.dto.ProjectIteration; import org.zanata.rest.dto.TransUnitStatus; +import org.zanata.rest.dto.User; import org.zanata.rest.dto.resource.ResourceMeta; import javax.ws.rs.Consumes; @@ -163,7 +164,7 @@ public Response getVersion(@PathParam("projectSlug") String projectSlug, @PathParam("versionSlug") String versionSlug); /** - * Get list of contributor's username (translator/review) for the given + * Get list of contributor (translator/review) for the given * project version in date range. * * @param projectSlug @@ -177,7 +178,7 @@ public Response getVersion(@PathParam("projectSlug") String projectSlug, @Produces({ MediaTypes.APPLICATION_ZANATA_PROJECT_VERSION_JSON, MediaType.APPLICATION_JSON }) @Path(VERSION_SLUG_TEMPLATE + "/contributors/{dateRange}") - @TypeHint(String[].class) + @TypeHint(User[].class) public Response getContributors( @PathParam("projectSlug") String projectSlug, @PathParam("versionSlug") String versionSlug, diff --git a/zanata-common-api/src/test/java/org/zanata/rest/dto/UserTest.java b/zanata-common-api/src/test/java/org/zanata/rest/dto/UserTest.java new file mode 100644 index 0000000..b8c674f --- /dev/null +++ b/zanata-common-api/src/test/java/org/zanata/rest/dto/UserTest.java @@ -0,0 +1,33 @@ +package org.zanata.rest.dto; + +import java.io.IOException; +import java.util.ArrayList; + +import org.codehaus.jackson.map.ObjectMapper; +import org.junit.Test; + +import static org.hamcrest.MatcherAssert.assertThat; +import static org.hamcrest.Matchers.equalTo; + +/** + * @author Alex Eng aeng@redhat.com + */ +public class UserTest { + + ObjectMapper om = new ObjectMapper(); + + @Test + public void testJsonOutput() throws IOException { + String json = + "{\"username\":\"_username\",\"email\":\"test@example.com\",\"name\":\"testUser\",\"imageUrl\":\"url\",\"languageTeams\":[\"English\"],\"loggedIn\":true}"; + User user = om.readValue(json, User.class); + + ArrayList list = new ArrayList(); + list.add("English"); + + User expected = new User("_username", "test@example.com", "testUser", + "url", list); + + assertThat(user, equalTo(expected)); + } +}