From 1ea9a4e2346db10475a7f292715274c91320e451 Mon Sep 17 00:00:00 2001 From: Alex Eng Date: Mon, 29 Sep 2014 11:23:17 +1000 Subject: [PATCH] Add enpoint for locales list from zanata server --- .../main/java/org/zanata/rest/MediaTypes.java | 6 +++ .../main/java/org/zanata/rest/dto/Locale.java | 51 +++++++++++++++++++ .../zanata/rest/service/LocalesResource.java | 30 +++++++++++ 3 files changed, 87 insertions(+) create mode 100644 zanata-common-api/src/main/java/org/zanata/rest/dto/Locale.java create mode 100644 zanata-common-api/src/main/java/org/zanata/rest/service/LocalesResource.java diff --git a/zanata-common-api/src/main/java/org/zanata/rest/MediaTypes.java b/zanata-common-api/src/main/java/org/zanata/rest/MediaTypes.java index 8b494e2..c2c2e94 100644 --- a/zanata-common-api/src/main/java/org/zanata/rest/MediaTypes.java +++ b/zanata-common-api/src/main/java/org/zanata/rest/MediaTypes.java @@ -41,6 +41,12 @@ public String toString() { public static final String APPLICATION_ZANATA_PROJECTS_JSON = APPLICATION_ZANATA_PROJECTS + JSON; + + public static final String APPLICATION_ZANATA_LOCALES = + APPLICATION_VND_ZANATA + ".locales"; + public static final String APPLICATION_ZANATA_LOCALES_JSON = + APPLICATION_ZANATA_LOCALES + JSON; + public static final String APPLICATION_ZANATA_PROJECT_ITERATION = APPLICATION_VND_ZANATA + ".project.iteration"; public static final String APPLICATION_ZANATA_PROJECT_ITERATION_XML = diff --git a/zanata-common-api/src/main/java/org/zanata/rest/dto/Locale.java b/zanata-common-api/src/main/java/org/zanata/rest/dto/Locale.java new file mode 100644 index 0000000..e465b2b --- /dev/null +++ b/zanata-common-api/src/main/java/org/zanata/rest/dto/Locale.java @@ -0,0 +1,51 @@ +package org.zanata.rest.dto; + +import java.io.Serializable; + +import javax.validation.constraints.NotNull; +import javax.xml.bind.annotation.XmlAttribute; +import javax.xml.bind.annotation.XmlElement; +import javax.xml.bind.annotation.XmlRootElement; +import javax.xml.bind.annotation.XmlType; +import javax.xml.bind.annotation.adapters.XmlJavaTypeAdapter; + +import org.codehaus.jackson.annotate.JsonIgnoreProperties; +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; +import org.zanata.common.LocaleId; +import org.zanata.common.Namespaces; + +@JsonIgnoreProperties(ignoreUnknown = true) +@JsonPropertyOrder({ "localeId", "name"}) +@JsonSerialize(include = JsonSerialize.Inclusion.NON_NULL) +public class Locale implements Serializable { + + private LocaleId localeId; + private String name; + + public Locale(LocaleId localeId, String name) { + this.localeId = localeId; + this.name = name; + } + + @NotNull + public LocaleId getLocaleId() { + return localeId; + } + + public void setLocaleId(LocaleId localeId) { + this.localeId = localeId; + } + + + @NotNull + public String getName() { + return name; + } + + public void setName(String name) { + this.name = name; + } +} diff --git a/zanata-common-api/src/main/java/org/zanata/rest/service/LocalesResource.java b/zanata-common-api/src/main/java/org/zanata/rest/service/LocalesResource.java new file mode 100644 index 0000000..81ff691 --- /dev/null +++ b/zanata-common-api/src/main/java/org/zanata/rest/service/LocalesResource.java @@ -0,0 +1,30 @@ +package org.zanata.rest.service; + +import javax.ws.rs.Consumes; +import javax.ws.rs.GET; +import javax.ws.rs.Produces; +import javax.ws.rs.core.MediaType; +import javax.ws.rs.core.Response; + +import org.codehaus.enunciate.jaxrs.TypeHint; +import org.jboss.resteasy.annotations.providers.jaxb.Wrapped; +import org.zanata.common.Namespaces; +import org.zanata.rest.MediaTypes; +import org.zanata.rest.dto.Locale; + +/** + * @author Alex Eng aeng@redhat.com + */ +@Produces({ MediaType.APPLICATION_JSON }) +@Consumes({ MediaType.APPLICATION_JSON }) +public interface LocalesResource { + + public static final String SERVICE_PATH = "/locales"; + + @GET + @Produces({ MediaTypes.APPLICATION_ZANATA_LOCALES_JSON, + MediaType.APPLICATION_JSON }) + @Wrapped(element = "locales", namespace = Namespaces.ZANATA_API) + @TypeHint(Locale[].class) + public Response get(); +}