diff --git a/src/main/java/com/messners/gitlab/api/GitLabApi.java b/src/main/java/com/messners/gitlab/api/GitLabApi.java index bb243eabe8d65d253ff6cbac27d19f484a2e45bc..66d88814f6daee90976300a421aea0a85d7af584 100644 --- a/src/main/java/com/messners/gitlab/api/GitLabApi.java +++ b/src/main/java/com/messners/gitlab/api/GitLabApi.java @@ -177,5 +177,31 @@ public class GitLabApi { } return (response.getEntity(MergeRequest.class)); + } + + + /** + * GET /projects/:id/repository/branches/:branch + * + * @param projectId + * @param branchName + * @return + * @throws IOException + */ + public Branch getBranch (Integer projectId, String branchName) throws IOException { + ClientResponse response = apiClient.get(null, "projects", projectId, "repository", "branches", branchName); + return (response.getEntity(Branch.class)); } + + /** + * GET /users/:id + * + * @param userId + * @return + * @throws IOException + */ + public User getUser (int userId) throws IOException { + ClientResponse response = apiClient.get(null, "users", userId); + return (response.getEntity(User.class)); + } } diff --git a/src/main/java/com/messners/gitlab/api/GitLabApiClient.java b/src/main/java/com/messners/gitlab/api/GitLabApiClient.java index dcc889510ff5dd7141081a5ce0eb35cefd554a6b..64d6992de1db1b18365f65c23dc6bb559bbfcc72 100644 --- a/src/main/java/com/messners/gitlab/api/GitLabApiClient.java +++ b/src/main/java/com/messners/gitlab/api/GitLabApiClient.java @@ -50,7 +50,7 @@ public class GitLabApiClient { this.privateToken = privateToken; clientConfig = new DefaultClientConfig(); - clientConfig.getClasses().add(JacksonJsonConfig.class); + clientConfig.getClasses().add(JacksonJson.class); clientConfig.getFeatures().put(ClientConfig.PROPERTY_FOLLOW_REDIRECTS, Boolean.TRUE); clientConfig.getFeatures().put(JSONConfiguration.FEATURE_POJO_MAPPING, Boolean.TRUE); } diff --git a/src/main/java/com/messners/gitlab/api/JacksonJsonConfig.java b/src/main/java/com/messners/gitlab/api/JacksonJson.java similarity index 54% rename from src/main/java/com/messners/gitlab/api/JacksonJsonConfig.java rename to src/main/java/com/messners/gitlab/api/JacksonJson.java index 8a390b69886d5c9b6981454e87f6779a86c59b0b..91cdfd5656c002f610f02d943d244a2f8134e4da 100644 --- a/src/main/java/com/messners/gitlab/api/JacksonJsonConfig.java +++ b/src/main/java/com/messners/gitlab/api/JacksonJson.java @@ -1,12 +1,17 @@ package com.messners.gitlab.api; +import java.io.IOException; +import java.io.Reader; + import javax.ws.rs.Consumes; import javax.ws.rs.Produces; import javax.ws.rs.core.MediaType; import javax.ws.rs.ext.ContextResolver; import javax.ws.rs.ext.Provider; +import org.codehaus.jackson.JsonParseException; +import org.codehaus.jackson.map.JsonMappingException; import org.codehaus.jackson.map.ObjectMapper; import org.codehaus.jackson.map.PropertyNamingStrategy; import org.codehaus.jackson.map.SerializationConfig; @@ -14,7 +19,7 @@ import org.codehaus.jackson.map.DeserializationConfig; import org.codehaus.jackson.map.annotate.JsonSerialize.Inclusion; /** - * Jackson JSON Configuration class + * Jackson JSON Configuration and utility class. * * @author Greg Messner * @@ -22,11 +27,11 @@ import org.codehaus.jackson.map.annotate.JsonSerialize.Inclusion; @Provider @Produces(MediaType.APPLICATION_JSON) @Consumes(MediaType.APPLICATION_JSON) -public class JacksonJsonConfig implements ContextResolver { +public class JacksonJson implements ContextResolver { private final ObjectMapper objectMapper; - public JacksonJsonConfig () { + public JacksonJson () { objectMapper = new ObjectMapper(); objectMapper.setSerializationInclusion(Inclusion.NON_NULL); @@ -36,14 +41,51 @@ public class JacksonJsonConfig implements ContextResolver { objectMapper.configure(DeserializationConfig.Feature.FAIL_ON_UNKNOWN_PROPERTIES, false); objectMapper.configure(DeserializationConfig.Feature.READ_ENUMS_USING_TO_STRING, Boolean.TRUE); } - + + /** + * + */ @Override public ObjectMapper getContext (Class objectType) { return (objectMapper); } + /** + * + * @return + */ public ObjectMapper getObjectMapper () { return (objectMapper); } + + /** + * + * @param returnType + * @param reader + * @return + * @throws JsonParseException + * @throws JsonMappingException + * @throws IOException + */ + public T unmarshall (Class returnType, Reader reader) + throws JsonParseException, JsonMappingException, IOException { + ObjectMapper objectMapper = getContext(returnType); + return (objectMapper.readValue(reader, returnType)); + } + + /** + * + * @param returnType + * @param postData + * @return + * @throws JsonParseException + * @throws JsonMappingException + * @throws IOException + */ + public T unmarshall (Class returnType, String postData) + throws JsonParseException, JsonMappingException, IOException { + ObjectMapper objectMapper = getContext(returnType); + return (objectMapper.readValue(postData, returnType)); + } } \ No newline at end of file