Use provided ObjectMapper across all code base

This commit is contained in:
Robin Shen 2019-08-31 16:44:37 +08:00
parent 96b0b28e01
commit 1fb41d75d5
7 changed files with 21 additions and 62 deletions

View File

@ -13,6 +13,7 @@ import com.fasterxml.jackson.annotation.JsonTypeInfo;
import com.fasterxml.jackson.annotation.PropertyAccessor;
import com.fasterxml.jackson.databind.DeserializationConfig;
import com.fasterxml.jackson.databind.JavaType;
import com.fasterxml.jackson.databind.JsonNode;
import com.fasterxml.jackson.databind.ObjectMapper;
import com.fasterxml.jackson.databind.SerializationConfig;
import com.fasterxml.jackson.databind.SerializationFeature;
@ -53,6 +54,7 @@ public class ObjectMapperProvider implements Provider<ObjectMapper> {
private boolean useForType(JavaType t) {
return !Collection.class.isAssignableFrom(t.getRawClass())
&& !Map.class.isAssignableFrom(t.getRawClass())
&& t.getRawClass() != JsonNode.class
&& (t.getRawClass() == Object.class || !t.isConcrete());
}

View File

@ -5,21 +5,21 @@ import java.io.InputStream;
import java.util.ArrayList;
import java.util.Collections;
import java.util.HashMap;
import java.util.Iterator;
import java.util.LinkedHashMap;
import java.util.List;
import java.util.Map;
import java.util.Map.Entry;
import com.fasterxml.jackson.core.type.TypeReference;
import com.fasterxml.jackson.databind.JsonNode;
import com.fasterxml.jackson.databind.ObjectMapper;
import com.google.common.base.Splitter;
import io.onedev.commons.utils.ExceptionUtils;
import io.onedev.server.OneDev;
public class EmojiOnes {
private static final ObjectMapper objectMapper = new ObjectMapper();
private final Map<String, String> codes;
private static class LazyHolder {
@ -32,15 +32,15 @@ public class EmojiOnes {
private EmojiOnes() {
try (InputStream in = EmojiOnes.class.getResourceAsStream("emoji.json")) {
Map<String, Map<String, String>> json =
objectMapper.readValue(in, new TypeReference<LinkedHashMap<String, Map<String, String>>>() {});
JsonNode emojis = OneDev.getInstance(ObjectMapper.class).readTree(in);
Map<String, String> map = new HashMap<>();
for (Entry<String, Map<String, String>> each : json.entrySet()) {
String code = each.getValue().get("unicode");
map.put(each.getKey(), code);
String aliases = each.getValue().get("aliases");
for (Iterator<Entry<String, JsonNode>> it = emojis.fields(); it.hasNext();) {
Entry<String, JsonNode> entry = it.next();
String code = entry.getValue().get("unicode").asText();
map.put(entry.getKey(), code);
String aliases = entry.getValue().get("aliases").asText();
for (String alias : Splitter.on(" ").omitEmptyStrings().split(aliases)) {
String name = alias.substring(1, alias.length() - 1);
map.put(name, code);

View File

@ -1,4 +1,3 @@
<wicket:extend>
<a wicket:id="run">run</a>
<a wicket:id="stop">stop</a>
<a wicket:id="test">test</a>
</wicket:extend>

View File

@ -6,8 +6,6 @@ import org.apache.wicket.markup.head.OnDomReadyHeaderItem;
import org.apache.wicket.markup.html.link.Link;
import org.apache.wicket.request.mapper.parameter.PageParameters;
import io.onedev.commons.utils.command.Commandline;
import io.onedev.commons.utils.command.LineConsumer;
import io.onedev.server.web.page.base.BasePage;
@SuppressWarnings("serial")
@ -23,48 +21,10 @@ public class TestPage extends BasePage {
protected void onInitialize() {
super.onInitialize();
add(new Link<Void>("run") {
add(new Link<Void>("test") {
@Override
public void onClick() {
thread = new Thread(new Runnable() {
@Override
public void run() {
try {
Commandline cmd = new Commandline("sh");
cmd.addArgs("/home/robin/temp/test.sh");
cmd.execute(new LineConsumer() {
@Override
public void consume(String line) {
System.out.println(line);
}
}, new LineConsumer() {
@Override
public void consume(String line) {
System.err.println(line);
}
}).checkReturnCode();
} catch (Exception e) {
e.printStackTrace();
}
}
});
thread.start();
}
});
add(new Link<Void>("stop") {
@Override
public void onClick() {
thread.interrupt();
}
});

View File

@ -415,8 +415,9 @@ public class KubernetesExecutor extends JobExecutor implements Testable<TestData
auths.put(registryUrl, Maps.newLinkedHashMap(
"auth", Base64.encodeBase64String(auth.getBytes(Charsets.UTF_8))));
}
ObjectMapper mapper = OneDev.getInstance(ObjectMapper.class);
try {
String dockerConfig = new ObjectMapper().writeValueAsString(Maps.newLinkedHashMap("auths", auths));
String dockerConfig = mapper.writeValueAsString(Maps.newLinkedHashMap("auths", auths));
return createSecret(Maps.newLinkedHashMap(".dockerconfigjson", dockerConfig), "kubernetes.io/dockerconfigjson", logger);
} catch (JsonProcessingException e) {
throw new RuntimeException(e);
@ -846,7 +847,7 @@ public class KubernetesExecutor extends JobExecutor implements Testable<TestData
JsonNode nodeNode;
KubernetesExecutor.logger.trace("Node json:\n" + nodeJson.toString());
try {
nodeNode = new ObjectMapper().readTree(nodeJson.toString());
nodeNode = OneDev.getInstance(ObjectMapper.class).readTree(nodeJson.toString());
} catch (IOException e) {
throw new RuntimeException(e);
}
@ -919,7 +920,7 @@ public class KubernetesExecutor extends JobExecutor implements Testable<TestData
private void watchPod(String podName, StatusChecker statusChecker, JobLogger logger) {
Commandline kubectl = newKubeCtl();
ObjectMapper mapper = new ObjectMapper();
ObjectMapper mapper = OneDev.getInstance(ObjectMapper.class);
AtomicReference<StopWatch> stopWatchRef = new AtomicReference<>(null);
@ -1023,7 +1024,7 @@ public class KubernetesExecutor extends JobExecutor implements Testable<TestData
private void checkEventError(String podName, JobLogger logger) {
Commandline kubectl = newKubeCtl();
ObjectMapper mapper = new ObjectMapper();
ObjectMapper mapper = OneDev.getInstance(ObjectMapper.class);
StringBuilder json = new StringBuilder();
kubectl.addArgs("get", "event", "-n", getNamespace(), "--field-selector",

View File

@ -11,6 +11,7 @@ import org.slf4j.LoggerFactory;
import com.fasterxml.jackson.databind.JsonNode;
import com.fasterxml.jackson.databind.ObjectMapper;
import io.onedev.server.OneDev;
import io.onedev.server.ci.CISpec;
import io.onedev.server.ci.DefaultCISpecProvider;
import io.onedev.server.ci.job.CacheSpec;
@ -33,7 +34,7 @@ public class DefaultNodeCISpecProvider implements DefaultCISpecProvider {
String version = null;
content = blob.getText().getContent();
ObjectMapper objectMapper = new ObjectMapper();
ObjectMapper objectMapper = OneDev.getInstance(ObjectMapper.class);
JsonNode jsonNode;
try {
jsonNode = objectMapper.readTree(content);

View File

@ -129,7 +129,6 @@ public class ServerDockerExecutor extends JobExecutor implements Testable<TestDa
return new Commandline("docker");
}
@SuppressWarnings("unchecked")
private String getImageOS(JobLogger logger, String image) {
logger.log("Checking image OS...");
Commandline docker = getDocker();
@ -146,11 +145,8 @@ public class ServerDockerExecutor extends JobExecutor implements Testable<TestDa
}, newJobLogger(logger)).checkReturnCode();
Map<String, Object> map;
try {
map = (Map<String, Object>) new ObjectMapper()
.readValue(builder.toString(), List.class).iterator().next();
return (String) map.get("Os");
return OneDev.getInstance(ObjectMapper.class).readTree(builder.toString()).iterator().next().get("Os").asText();
} catch (IOException e) {
throw new RuntimeException(e);
}