Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
8 changes: 4 additions & 4 deletions pom.xml
Original file line number Diff line number Diff line change
Expand Up @@ -80,10 +80,6 @@
<groupId>io.jenkins.plugins</groupId>
<artifactId>commons-lang3-api</artifactId>
</dependency>
<dependency>
<groupId>io.jenkins.plugins</groupId>
<artifactId>jackson3-api</artifactId>
</dependency>
<dependency>
<groupId>io.jenkins.plugins</groupId>
<artifactId>jakarta-xml-bind-api</artifactId>
Expand Down Expand Up @@ -146,6 +142,10 @@
<groupId>org.jenkins-ci.plugins</groupId>
<artifactId>git-client</artifactId>
</dependency>
<dependency>
<groupId>org.jenkins-ci.plugins</groupId>
<artifactId>jackson2-api</artifactId>
</dependency>
<dependency>
<groupId>org.jenkins-ci.plugins</groupId>
<artifactId>matrix-project</artifactId>
Expand Down
Original file line number Diff line number Diff line change
@@ -1,14 +1,13 @@
package com.dabsquared.gitlabjenkins.gitlab;

import com.fasterxml.jackson.databind.DeserializationFeature;
import com.fasterxml.jackson.databind.ObjectMapper;
import com.fasterxml.jackson.databind.PropertyNamingStrategies;
import jakarta.ws.rs.Consumes;
import jakarta.ws.rs.Produces;
import jakarta.ws.rs.core.MediaType;
import jakarta.ws.rs.ext.ContextResolver;
import jakarta.ws.rs.ext.Provider;
import tools.jackson.databind.ObjectMapper;
import tools.jackson.databind.PropertyNamingStrategies;
import tools.jackson.databind.cfg.EnumFeature;
import tools.jackson.databind.json.JsonMapper;

/**
* @author Robin Müller
Expand All @@ -18,9 +17,9 @@
@Produces(MediaType.APPLICATION_JSON)
public class JacksonConfig implements ContextResolver<ObjectMapper> {
public ObjectMapper getContext(Class<?> type) {
return JsonMapper.builder()
.propertyNamingStrategy(PropertyNamingStrategies.SNAKE_CASE)
.configure(EnumFeature.READ_UNKNOWN_ENUM_VALUES_AS_NULL, true)
.build();
return new ObjectMapper()
.setPropertyNamingStrategy(PropertyNamingStrategies.SNAKE_CASE)
.configure(DeserializationFeature.FAIL_ON_UNKNOWN_PROPERTIES, false)
.configure(DeserializationFeature.READ_UNKNOWN_ENUM_VALUES_AS_NULL, true);
}
}
Original file line number Diff line number Diff line change
@@ -1,13 +1,11 @@
package com.dabsquared.gitlabjenkins.gitlab.api.model;

import com.fasterxml.jackson.annotation.JsonIgnoreProperties;
import net.karneim.pojobuilder.GeneratePojoBuilder;
import org.apache.commons.lang3.builder.EqualsBuilder;
import org.apache.commons.lang3.builder.HashCodeBuilder;
import org.apache.commons.lang3.builder.ToStringBuilder;

@GeneratePojoBuilder(intoPackage = "*.builder.generated", withFactoryMethod = "*")
@JsonIgnoreProperties(ignoreUnknown = true)
public class Awardable {
private Integer id;
private String name;
Expand Down
Original file line number Diff line number Diff line change
@@ -1,6 +1,5 @@
package com.dabsquared.gitlabjenkins.gitlab.api.model;

import com.fasterxml.jackson.annotation.JsonIgnoreProperties;
import net.karneim.pojobuilder.GeneratePojoBuilder;
import org.apache.commons.lang3.builder.EqualsBuilder;
import org.apache.commons.lang3.builder.HashCodeBuilder;
Expand All @@ -10,7 +9,6 @@
* @author Robin Müller
*/
@GeneratePojoBuilder(intoPackage = "*.builder.generated", withFactoryMethod = "*")
@JsonIgnoreProperties(ignoreUnknown = true)
public class Branch {

private String name;
Expand Down
Original file line number Diff line number Diff line change
@@ -1,6 +1,5 @@
package com.dabsquared.gitlabjenkins.gitlab.api.model;

import com.fasterxml.jackson.annotation.JsonIgnoreProperties;
import java.util.Date;
import net.karneim.pojobuilder.GeneratePojoBuilder;
import org.apache.commons.lang3.builder.EqualsBuilder;
Expand All @@ -11,7 +10,6 @@
* @author Robin Müller
*/
@GeneratePojoBuilder(intoPackage = "*.builder.generated", withFactoryMethod = "*")
@JsonIgnoreProperties(ignoreUnknown = true)
public class Commit {

private String id;
Expand Down
Original file line number Diff line number Diff line change
@@ -1,6 +1,5 @@
package com.dabsquared.gitlabjenkins.gitlab.api.model;

import com.fasterxml.jackson.annotation.JsonIgnoreProperties;
import net.karneim.pojobuilder.GeneratePojoBuilder;
import org.apache.commons.lang3.builder.EqualsBuilder;
import org.apache.commons.lang3.builder.HashCodeBuilder;
Expand All @@ -14,7 +13,6 @@
* @since Mon, 2022-06-13 - 07:19:01
*/
@GeneratePojoBuilder(intoPackage = "*.builder.generated", withFactoryMethod = "*")
@JsonIgnoreProperties(ignoreUnknown = true)
public class Group {

/** Group Hook ID */
Expand Down
Original file line number Diff line number Diff line change
@@ -1,6 +1,5 @@
package com.dabsquared.gitlabjenkins.gitlab.api.model;

import com.fasterxml.jackson.annotation.JsonIgnoreProperties;
import net.karneim.pojobuilder.GeneratePojoBuilder;
import org.apache.commons.lang3.builder.EqualsBuilder;
import org.apache.commons.lang3.builder.HashCodeBuilder;
Expand All @@ -10,7 +9,6 @@
* @author Robin Müller
*/
@GeneratePojoBuilder(intoPackage = "*.builder.generated", withFactoryMethod = "*")
@JsonIgnoreProperties(ignoreUnknown = true)
public class Label {
/*
"name" : "bug",
Expand Down
Original file line number Diff line number Diff line change
@@ -1,7 +1,6 @@
package com.dabsquared.gitlabjenkins.gitlab.api.model;

import com.dabsquared.gitlabjenkins.gitlab.hook.model.State;
import com.fasterxml.jackson.annotation.JsonIgnoreProperties;
import java.util.List;
import net.karneim.pojobuilder.GeneratePojoBuilder;
import org.apache.commons.lang3.builder.EqualsBuilder;
Expand All @@ -15,7 +14,6 @@
*/
@ExportedBean
@GeneratePojoBuilder(intoPackage = "*.builder.generated", withFactoryMethod = "*")
@JsonIgnoreProperties(ignoreUnknown = true)
public class MergeRequest {
private Integer id;
private Integer iid;
Expand Down
Original file line number Diff line number Diff line change
@@ -1,6 +1,5 @@
package com.dabsquared.gitlabjenkins.gitlab.api.model;

import com.fasterxml.jackson.annotation.JsonIgnoreProperties;
import net.karneim.pojobuilder.GeneratePojoBuilder;
import org.apache.commons.lang3.builder.EqualsBuilder;
import org.apache.commons.lang3.builder.HashCodeBuilder;
Expand All @@ -10,7 +9,6 @@
* @author Robin Müller
*/
@GeneratePojoBuilder(intoPackage = "*.builder.generated", withFactoryMethod = "*")
@JsonIgnoreProperties(ignoreUnknown = true)
public class Namespace {

private String path;
Expand Down
Original file line number Diff line number Diff line change
@@ -1,14 +1,12 @@
package com.dabsquared.gitlabjenkins.gitlab.api.model;

import com.fasterxml.jackson.annotation.JsonIgnoreProperties;
import java.util.Date;
import net.karneim.pojobuilder.GeneratePojoBuilder;
import org.apache.commons.lang3.builder.EqualsBuilder;
import org.apache.commons.lang3.builder.HashCodeBuilder;
import org.apache.commons.lang3.builder.ToStringBuilder;

@GeneratePojoBuilder(intoPackage = "*.builder.generated", withFactoryMethod = "*")
@JsonIgnoreProperties(ignoreUnknown = true)
public class Note {
private Long id;
private Integer projectId;
Expand Down
Original file line number Diff line number Diff line change
@@ -1,10 +1,8 @@
package com.dabsquared.gitlabjenkins.gitlab.api.model;

import com.fasterxml.jackson.annotation.JsonIgnoreProperties;
import net.karneim.pojobuilder.GeneratePojoBuilder;

@GeneratePojoBuilder(intoPackage = "*.builder.generated", withFactoryMethod = "*")
@JsonIgnoreProperties(ignoreUnknown = true)
public class Pipeline {
private Integer id;
private String sha;
Expand Down
Original file line number Diff line number Diff line change
@@ -1,6 +1,5 @@
package com.dabsquared.gitlabjenkins.gitlab.api.model;

import com.fasterxml.jackson.annotation.JsonIgnoreProperties;
import net.karneim.pojobuilder.GeneratePojoBuilder;
import org.apache.commons.lang3.builder.EqualsBuilder;
import org.apache.commons.lang3.builder.HashCodeBuilder;
Expand All @@ -10,7 +9,6 @@
* @author Robin Müller
*/
@GeneratePojoBuilder(intoPackage = "*.builder.generated", withFactoryMethod = "*")
@JsonIgnoreProperties(ignoreUnknown = true)
public class Project {

private Integer id;
Expand Down
Original file line number Diff line number Diff line change
@@ -1,6 +1,5 @@
package com.dabsquared.gitlabjenkins.gitlab.api.model;

import com.fasterxml.jackson.annotation.JsonIgnoreProperties;
import net.karneim.pojobuilder.GeneratePojoBuilder;
import org.apache.commons.lang3.builder.EqualsBuilder;
import org.apache.commons.lang3.builder.HashCodeBuilder;
Expand All @@ -14,7 +13,6 @@
* @since Sun, 2022-06-12 - 12:25:26
*/
@GeneratePojoBuilder(intoPackage = "*.builder.generated", withFactoryMethod = "*")
@JsonIgnoreProperties(ignoreUnknown = true)
public class ProjectHook {

/** Hook ID */
Expand Down
Original file line number Diff line number Diff line change
@@ -1,6 +1,5 @@
package com.dabsquared.gitlabjenkins.gitlab.api.model;

import com.fasterxml.jackson.annotation.JsonIgnoreProperties;
import net.karneim.pojobuilder.GeneratePojoBuilder;
import org.apache.commons.lang3.builder.EqualsBuilder;
import org.apache.commons.lang3.builder.HashCodeBuilder;
Expand All @@ -10,7 +9,6 @@
* @author Robin Müller
*/
@GeneratePojoBuilder(intoPackage = "*.builder.generated", withFactoryMethod = "*")
@JsonIgnoreProperties(ignoreUnknown = true)
public class User {

private Integer id;
Expand Down
49 changes: 22 additions & 27 deletions src/main/java/com/dabsquared/gitlabjenkins/util/JsonUtil.java
Original file line number Diff line number Diff line change
@@ -1,75 +1,69 @@
package com.dabsquared.gitlabjenkins.util;

import com.fasterxml.jackson.databind.DeserializationContext;
import com.fasterxml.jackson.databind.DeserializationFeature;
import com.fasterxml.jackson.databind.JsonNode;
import com.fasterxml.jackson.databind.ObjectMapper;
import com.fasterxml.jackson.databind.PropertyNamingStrategies;
import com.fasterxml.jackson.databind.SerializationFeature;
import com.fasterxml.jackson.databind.module.SimpleModule;
import java.io.IOException;
import java.io.UncheckedIOException;
import java.text.ParseException;
import java.text.SimpleDateFormat;
import java.util.Arrays;
import java.util.Date;
import java.util.Locale;
import tools.jackson.core.JacksonException;
import tools.jackson.databind.DeserializationContext;
import tools.jackson.databind.DeserializationFeature;
import tools.jackson.databind.JsonNode;
import tools.jackson.databind.ObjectMapper;
import tools.jackson.databind.PropertyNamingStrategies;
import tools.jackson.databind.SerializationFeature;
import tools.jackson.databind.ValueDeserializer;
import tools.jackson.databind.cfg.EnumFeature;
import tools.jackson.databind.json.JsonMapper;
import tools.jackson.databind.module.SimpleModule;

/**
* @author Robin Müller
*/
public final class JsonUtil {

private static final ObjectMapper OBJECT_MAPPER = JsonMapper.builder()
.propertyNamingStrategy(PropertyNamingStrategies.SNAKE_CASE)
.configure(EnumFeature.READ_UNKNOWN_ENUM_VALUES_AS_NULL, true)
private static final ObjectMapper OBJECT_MAPPER = new ObjectMapper()
.setPropertyNamingStrategy(PropertyNamingStrategies.SNAKE_CASE)
.configure(DeserializationFeature.FAIL_ON_UNKNOWN_PROPERTIES, false)
.configure(DeserializationFeature.READ_UNKNOWN_ENUM_VALUES_AS_NULL, true)
.configure(SerializationFeature.INDENT_OUTPUT, true)
.disable(DeserializationFeature.FAIL_ON_UNKNOWN_PROPERTIES)
.addModule(new DateModule())
.build();
.registerModule(new DateModule());

private JsonUtil() {}

public static String toPrettyPrint(String json) {
try {
return toPrettyPrint(OBJECT_MAPPER.readValue(json, Object.class));
} catch (JacksonException e) {
} catch (IOException e) {
throw new RuntimeException(e);
}
}

public static String toPrettyPrint(Object obj) {
try {
return OBJECT_MAPPER.writeValueAsString(obj);
} catch (JacksonException e) {
} catch (IOException e) {
throw new RuntimeException(e);
}
}

public static JsonNode readTree(String json) {
try {
return OBJECT_MAPPER.readTree(json);
} catch (JacksonException e) {
} catch (IOException e) {
throw new RuntimeException(e);
}
}

public static <T> T read(String json, Class<T> type) {
try {
return OBJECT_MAPPER.readValue(json, type);
} catch (JacksonException e) {
} catch (IOException e) {
throw new RuntimeException(e);
}
}

public static <T> T read(JsonNode json, Class<T> type) {
try {
return OBJECT_MAPPER.treeToValue(json, type);
} catch (JacksonException e) {
} catch (IOException e) {

Check warning on line 66 in src/main/java/com/dabsquared/gitlabjenkins/util/JsonUtil.java

View check run for this annotation

ci.jenkins.io / Code Coverage

Not covered lines

Lines 34-66 are not covered by tests
throw new RuntimeException(e);
}
}
Expand All @@ -84,19 +78,20 @@
};

private DateModule() {
addDeserializer(Date.class, new ValueDeserializer<Date>() {
addDeserializer(Date.class, new com.fasterxml.jackson.databind.JsonDeserializer<Date>() {
@Override
public Date deserialize(tools.jackson.core.JsonParser p, DeserializationContext ctxt) {
public Date deserialize(com.fasterxml.jackson.core.JsonParser p, DeserializationContext ctxt)
throws IOException {
for (String format : DATE_FORMATS) {
try {
return new SimpleDateFormat(format, Locale.US).parse(p.getValueAsString());
} catch (ParseException e) {
// nothing to do
}
}
throw new UncheckedIOException(new IOException("Unparseable date: \""
throw new IOException("Unparseable date: \""
+ p.getValueAsString() + "\". Supported formats: "
+ Arrays.toString(DATE_FORMATS)));
+ Arrays.toString(DATE_FORMATS));

Check warning on line 94 in src/main/java/com/dabsquared/gitlabjenkins/util/JsonUtil.java

View check run for this annotation

ci.jenkins.io / Code Coverage

Not covered lines

Lines 92-94 are not covered by tests
}
});
}
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -14,6 +14,7 @@
import com.dabsquared.gitlabjenkins.webhook.status.CommitBuildPageRedirectAction;
import com.dabsquared.gitlabjenkins.webhook.status.CommitStatusPngAction;
import com.dabsquared.gitlabjenkins.webhook.status.StatusJsonAction;
import com.fasterxml.jackson.databind.JsonNode;
import hudson.model.Item;
import hudson.model.ItemGroup;
import hudson.model.Job;
Expand All @@ -33,7 +34,6 @@
import org.apache.commons.io.IOUtils;
import org.kohsuke.stapler.StaplerRequest2;
import org.kohsuke.stapler.StaplerResponse2;
import tools.jackson.databind.JsonNode;

/**
* @author Robin Müller
Expand Down Expand Up @@ -139,7 +139,7 @@ private WebHookAction onSystemHook(Item project, String requestBody, String toke
String objectKind = "";
try {
jsonTree = JsonUtil.readTree(requestBody);
objectKind = jsonTree.path("object_kind").asString("");
objectKind = jsonTree.path("object_kind").asText("");
} catch (RuntimeException exception) {
LOGGER.log(Level.FINE, "Could not extract object_kind from request body.");
}
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -7,14 +7,14 @@
import com.dabsquared.gitlabjenkins.gitlab.hook.model.MergeRequestObjectAttributes;
import com.dabsquared.gitlabjenkins.gitlab.hook.model.Project;
import com.dabsquared.gitlabjenkins.util.JsonUtil;
import com.fasterxml.jackson.databind.JsonNode;
import hudson.model.Item;
import hudson.model.Job;
import hudson.security.ACL;
import hudson.util.HttpResponses;
import java.util.logging.Level;
import java.util.logging.Logger;
import jenkins.model.Jenkins;
import tools.jackson.databind.JsonNode;

/**
* @author Robin Müller
Expand Down
Loading
Loading