summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorHarald Musum <musum@verizonmedia.com>2020-08-21 11:23:13 +0200
committerHarald Musum <musum@verizonmedia.com>2020-08-21 11:23:13 +0200
commitc61dae7c6ac4b5c578414c7483442a6786f3e2ed (patch)
tree70a8b01dcae767144c7138cdae9230970c3e1c8d
parentc9ccef5b417962c47135d4a4902d2349f0cfbec6 (diff)
Use SlimeUtils in more places
-rw-r--r--config-application-package/src/main/java/com/yahoo/config/model/application/provider/FilesApplicationPackage.java2
-rw-r--r--config-model-api/abi-spec.json3
-rw-r--r--config-model-api/src/main/java/com/yahoo/config/application/api/ApplicationMetaData.java17
-rw-r--r--config/src/main/java/com/yahoo/vespa/config/ConfigVerification.java13
-rw-r--r--config/src/main/java/com/yahoo/vespa/config/protocol/SlimeRequestData.java5
-rw-r--r--config/src/main/java/com/yahoo/vespa/config/protocol/SlimeResponseData.java5
-rw-r--r--config/src/test/java/com/yahoo/vespa/config/protocol/JRTConfigRequestV3Test.java30
-rw-r--r--configserver/src/main/java/com/yahoo/vespa/config/server/ApplicationRepository.java7
-rw-r--r--configserver/src/main/java/com/yahoo/vespa/config/server/deploy/ZooKeeperClient.java2
-rw-r--r--configserver/src/main/java/com/yahoo/vespa/config/server/tenant/TenantMetaData.java16
-rw-r--r--configserver/src/test/java/com/yahoo/vespa/config/server/http/HttpHandlerTest.java6
-rw-r--r--configserver/src/test/java/com/yahoo/vespa/config/server/http/v2/SessionPrepareHandlerTest.java6
-rw-r--r--hosted-api/src/main/java/ai/vespa/hosted/api/ControllerHttpClient.java11
-rw-r--r--hosted-api/src/main/java/ai/vespa/hosted/api/TestConfig.java5
-rw-r--r--vespajlib/src/main/java/com/yahoo/osgi/maven/ProjectBundleClassPaths.java6
15 files changed, 54 insertions, 80 deletions
diff --git a/config-application-package/src/main/java/com/yahoo/config/model/application/provider/FilesApplicationPackage.java b/config-application-package/src/main/java/com/yahoo/config/model/application/provider/FilesApplicationPackage.java
index 5f247afae03..6aa8f8bf1a1 100644
--- a/config-application-package/src/main/java/com/yahoo/config/model/application/provider/FilesApplicationPackage.java
+++ b/config-application-package/src/main/java/com/yahoo/config/model/application/provider/FilesApplicationPackage.java
@@ -593,7 +593,7 @@ public class FilesApplicationPackage implements ApplicationPackage {
@Override
public void writeMetaData() throws IOException {
File metaFile = new File(appDir, META_FILE_NAME);
- IOUtils.writeFile(metaFile, metaData.asJsonString(), false);
+ IOUtils.writeFile(metaFile, metaData.asJsonBytes());
}
@Override
diff --git a/config-model-api/abi-spec.json b/config-model-api/abi-spec.json
index d536eaf8bfc..313ef0f5fb9 100644
--- a/config-model-api/abi-spec.json
+++ b/config-model-api/abi-spec.json
@@ -83,7 +83,8 @@
"public java.lang.String toString()",
"public static com.yahoo.config.application.api.ApplicationMetaData fromJsonString(java.lang.String)",
"public com.yahoo.slime.Slime getSlime()",
- "public java.lang.String asJsonString()"
+ "public java.lang.String asJsonString()",
+ "public byte[] asJsonBytes()"
],
"fields": []
},
diff --git a/config-model-api/src/main/java/com/yahoo/config/application/api/ApplicationMetaData.java b/config-model-api/src/main/java/com/yahoo/config/application/api/ApplicationMetaData.java
index 480d12b6700..baca1184072 100644
--- a/config-model-api/src/main/java/com/yahoo/config/application/api/ApplicationMetaData.java
+++ b/config-model-api/src/main/java/com/yahoo/config/application/api/ApplicationMetaData.java
@@ -4,14 +4,11 @@ package com.yahoo.config.application.api;
import com.yahoo.config.provision.ApplicationId;
import com.yahoo.slime.Cursor;
import com.yahoo.slime.Inspector;
-import com.yahoo.slime.JsonDecoder;
-import com.yahoo.slime.JsonFormat;
import com.yahoo.slime.Slime;
+import com.yahoo.slime.SlimeUtils;
import com.yahoo.text.Utf8;
-import java.io.ByteArrayOutputStream;
import java.io.IOException;
-import java.nio.charset.StandardCharsets;
/**
* Metadata about an application package.
@@ -97,8 +94,7 @@ public class ApplicationMetaData {
public static ApplicationMetaData fromJsonString(String jsonString) {
try {
- Slime data = new Slime();
- new JsonDecoder().decode(data, Utf8.toBytes(jsonString));
+ Slime data = SlimeUtils.jsonToSlime(jsonString);
Inspector root = data.get();
Inspector deploy = root.field("deploy");
Inspector app = root.field("application");
@@ -139,11 +135,12 @@ public class ApplicationMetaData {
}
public String asJsonString() {
- Slime slime = getSlime();
- ByteArrayOutputStream baos = new ByteArrayOutputStream();
+ return Utf8.toString(asJsonBytes());
+ }
+
+ public byte[] asJsonBytes() {
try {
- new JsonFormat(false).encode(baos, slime);
- return baos.toString(StandardCharsets.UTF_8);
+ return SlimeUtils.toJsonBytes(getSlime());
} catch (IOException e) {
throw new RuntimeException("Unable to encode metadata", e);
}
diff --git a/config/src/main/java/com/yahoo/vespa/config/ConfigVerification.java b/config/src/main/java/com/yahoo/vespa/config/ConfigVerification.java
index 4da27e8c346..cea40da52b9 100644
--- a/config/src/main/java/com/yahoo/vespa/config/ConfigVerification.java
+++ b/config/src/main/java/com/yahoo/vespa/config/ConfigVerification.java
@@ -3,10 +3,8 @@ package com.yahoo.vespa.config;
import ai.vespa.util.http.VespaHttpClientBuilder;
import com.yahoo.slime.ArrayTraverser;
-import com.yahoo.slime.Inspector;
-import com.yahoo.slime.JsonDecoder;
import com.yahoo.slime.Slime;
-import com.yahoo.text.Utf8;
+import com.yahoo.slime.SlimeUtils;
import org.apache.http.client.methods.HttpGet;
import org.apache.http.impl.client.BasicResponseHandler;
import org.apache.http.impl.client.CloseableHttpClient;
@@ -49,14 +47,9 @@ public class ConfigVerification {
Map<String, Stack<String>> recurseMappings = new LinkedHashMap<>();
for (Map.Entry<String, String> entry : outputs.entrySet()) {
- Slime slime = new JsonDecoder().decode(new Slime(), Utf8.toBytes(entry.getValue()));
+ Slime slime = SlimeUtils.jsonToSlime(entry.getValue());
final List<String> list = new ArrayList<>();
- slime.get().field("configs").traverse(new ArrayTraverser() {
- @Override
- public void entry(int idx, Inspector inspector) {
- list.add(inspector.asString());
- }
- });
+ slime.get().field("configs").traverse((ArrayTraverser) (idx, inspector) -> list.add(inspector.asString()));
Stack<String> stack = new Stack<>();
Collections.sort(list);
stack.addAll(list);
diff --git a/config/src/main/java/com/yahoo/vespa/config/protocol/SlimeRequestData.java b/config/src/main/java/com/yahoo/vespa/config/protocol/SlimeRequestData.java
index a9b46f25751..447bc63eeb6 100644
--- a/config/src/main/java/com/yahoo/vespa/config/protocol/SlimeRequestData.java
+++ b/config/src/main/java/com/yahoo/vespa/config/protocol/SlimeRequestData.java
@@ -4,9 +4,8 @@ package com.yahoo.vespa.config.protocol;
import com.yahoo.jrt.Request;
import com.yahoo.slime.Cursor;
import com.yahoo.slime.Inspector;
-import com.yahoo.slime.JsonDecoder;
import com.yahoo.slime.Slime;
-import com.yahoo.text.Utf8;
+import com.yahoo.slime.SlimeUtils;
import com.yahoo.vespa.config.ConfigKey;
import java.util.Optional;
@@ -47,7 +46,7 @@ class SlimeRequestData {
private Slime getData() {
if (data == null) {
- data = new JsonDecoder().decode(new Slime(), Utf8.toBytes(request.parameters().get(0).asString()));
+ data = SlimeUtils.jsonToSlime(request.parameters().get(0).asString());
}
return data;
}
diff --git a/config/src/main/java/com/yahoo/vespa/config/protocol/SlimeResponseData.java b/config/src/main/java/com/yahoo/vespa/config/protocol/SlimeResponseData.java
index 40414c24c96..ba1e7a8c72e 100644
--- a/config/src/main/java/com/yahoo/vespa/config/protocol/SlimeResponseData.java
+++ b/config/src/main/java/com/yahoo/vespa/config/protocol/SlimeResponseData.java
@@ -3,9 +3,8 @@ package com.yahoo.vespa.config.protocol;
import com.yahoo.jrt.Request;
import com.yahoo.slime.Inspector;
-import com.yahoo.slime.JsonDecoder;
import com.yahoo.slime.Slime;
-import com.yahoo.text.Utf8;
+import com.yahoo.slime.SlimeUtils;
/**
* Contains response data for a slime response and methods for decoding the response data that
@@ -37,7 +36,7 @@ class SlimeResponseData {
private Slime getData() {
if (request.returnValues().size() > 0) {
if (data == null) {
- data = new JsonDecoder().decode(new Slime(), Utf8.toBytes(request.returnValues().get(0).asString()));
+ data = SlimeUtils.jsonToSlime(request.returnValues().get(0).asString());
}
return data;
} else {
diff --git a/config/src/test/java/com/yahoo/vespa/config/protocol/JRTConfigRequestV3Test.java b/config/src/test/java/com/yahoo/vespa/config/protocol/JRTConfigRequestV3Test.java
index 4d1ba2f8793..d4f8b771880 100644
--- a/config/src/test/java/com/yahoo/vespa/config/protocol/JRTConfigRequestV3Test.java
+++ b/config/src/test/java/com/yahoo/vespa/config/protocol/JRTConfigRequestV3Test.java
@@ -6,16 +6,19 @@ import com.yahoo.config.subscription.ConfigSourceSet;
import com.yahoo.config.subscription.ConfigSubscriber;
import com.yahoo.config.subscription.impl.GenericConfigSubscriber;
import com.yahoo.config.subscription.impl.JRTConfigRequester;
+import com.yahoo.config.subscription.impl.JRTConfigSubscription;
import com.yahoo.config.subscription.impl.MockConnection;
import com.yahoo.foo.SimpletypesConfig;
-import com.yahoo.config.subscription.impl.JRTConfigSubscription;
import com.yahoo.jrt.Request;
import com.yahoo.slime.Inspector;
-import com.yahoo.slime.JsonDecoder;
import com.yahoo.slime.Slime;
+import com.yahoo.slime.SlimeUtils;
import com.yahoo.test.ManualClock;
-import com.yahoo.text.Utf8;
-import com.yahoo.vespa.config.*;
+import com.yahoo.vespa.config.ConfigKey;
+import com.yahoo.vespa.config.ConfigPayload;
+import com.yahoo.vespa.config.ErrorCode;
+import com.yahoo.vespa.config.RawConfig;
+import com.yahoo.vespa.config.TimingValues;
import com.yahoo.vespa.config.util.ConfigUtils;
import org.junit.Before;
import org.junit.Test;
@@ -36,15 +39,15 @@ import static org.junit.Assert.assertTrue;
public class JRTConfigRequestV3Test {
private final Optional<VespaVersion> vespaVersion = Optional.of(VespaVersion.fromString("5.38.24"));
- private String defName = "mydef";
- private String defNamespace = "my.name.space";
- private String hostname = "myhost";
- private String configId = "config/id";
- private String defMd5 = "595f44fec1e92a71d3e9e77456ba80d1";
- private long currentGeneration = 3;
- private long timeout = 5000;
+ private final String defName = "mydef";
+ private final String defNamespace = "my.name.space";
+ private final String hostname = "myhost";
+ private final String configId = "config/id";
+ private final String defMd5 = "595f44fec1e92a71d3e9e77456ba80d1";
+ private final long currentGeneration = 3;
+ private final long timeout = 5000;
private Trace trace ;
- private String configMd5 = ConfigUtils.getMd5(createPayload().getData());
+ private final String configMd5 = ConfigUtils.getMd5(createPayload().getData());
private JRTClientConfigRequest clientReq;
private JRTServerConfigRequest serverReq;
@@ -118,8 +121,7 @@ public class JRTConfigRequestV3Test {
public void error_response_adds_common_elements() {
serverReq.addErrorResponse(ErrorCode.APPLICATION_NOT_LOADED, ErrorCode.getName(ErrorCode.APPLICATION_NOT_LOADED));
assertThat(serverReq.getRequest().returnValues().size(), is(1));
- Slime data = new JsonDecoder().decode(new Slime(), Utf8.toBytes(serverReq.getRequest().returnValues().get(0).asString()));
- Inspector response = data.get();
+ Inspector response = SlimeUtils.jsonToSlime(serverReq.getRequest().returnValues().get(0).asString()).get();
assertThat(response.field(SlimeResponseData.RESPONSE_DEF_NAME).asString(), is(defName));
assertThat(response.field(SlimeResponseData.RESPONSE_DEF_NAMESPACE).asString(), is(defNamespace));
assertThat(response.field(SlimeResponseData.RESPONSE_DEF_MD5).asString(), is(defMd5));
diff --git a/configserver/src/main/java/com/yahoo/vespa/config/server/ApplicationRepository.java b/configserver/src/main/java/com/yahoo/vespa/config/server/ApplicationRepository.java
index bf2fdbf03ef..d8ef10b150f 100644
--- a/configserver/src/main/java/com/yahoo/vespa/config/server/ApplicationRepository.java
+++ b/configserver/src/main/java/com/yahoo/vespa/config/server/ApplicationRepository.java
@@ -378,8 +378,8 @@ public class ApplicationRepository implements com.yahoo.config.provision.Deploye
return transaction;
}
- private String createMetaData(Tenant tenant) {
- return new TenantMetaData(tenant.getSessionRepository().clock().instant()).asJsonString();
+ private byte[] createMetaData(Tenant tenant) {
+ return new TenantMetaData(tenant.getSessionRepository().clock().instant()).asJsonBytes();
}
TenantMetaData getTenantMetaData(Tenant tenant) {
@@ -388,10 +388,9 @@ public class ApplicationRepository implements com.yahoo.config.provision.Deploye
}
private Transaction writeTenantMetaData(Tenant tenant) {
- String jsonString = createMetaData(tenant);
return new CuratorTransaction(tenantRepository.getCurator())
.add(CuratorOperations.setData(TenantRepository.getTenantPath(tenant.getName()).getAbsolute(),
- Utf8.toBytes(jsonString)));
+ createMetaData(tenant)));
}
static void checkIfActiveHasChanged(LocalSession session, Session currentActiveSession, boolean ignoreStaleSessionFailure) {
diff --git a/configserver/src/main/java/com/yahoo/vespa/config/server/deploy/ZooKeeperClient.java b/configserver/src/main/java/com/yahoo/vespa/config/server/deploy/ZooKeeperClient.java
index c634d82010e..858a2c84e02 100644
--- a/configserver/src/main/java/com/yahoo/vespa/config/server/deploy/ZooKeeperClient.java
+++ b/configserver/src/main/java/com/yahoo/vespa/config/server/deploy/ZooKeeperClient.java
@@ -275,7 +275,7 @@ public class ZooKeeperClient {
* @param metaData The application metadata.
*/
private void write(ApplicationMetaData metaData) {
- configCurator.putData(getZooKeeperAppPath(ConfigCurator.META_ZK_PATH).getAbsolute(), metaData.asJsonString());
+ configCurator.putData(getZooKeeperAppPath(ConfigCurator.META_ZK_PATH).getAbsolute(), metaData.asJsonBytes());
}
void cleanupZooKeeper() {
diff --git a/configserver/src/main/java/com/yahoo/vespa/config/server/tenant/TenantMetaData.java b/configserver/src/main/java/com/yahoo/vespa/config/server/tenant/TenantMetaData.java
index 47a3dcc8ee0..24862b82fb0 100644
--- a/configserver/src/main/java/com/yahoo/vespa/config/server/tenant/TenantMetaData.java
+++ b/configserver/src/main/java/com/yahoo/vespa/config/server/tenant/TenantMetaData.java
@@ -3,14 +3,10 @@ package com.yahoo.vespa.config.server.tenant;
import com.yahoo.slime.Cursor;
import com.yahoo.slime.Inspector;
-import com.yahoo.slime.JsonDecoder;
-import com.yahoo.slime.JsonFormat;
import com.yahoo.slime.Slime;
-import com.yahoo.text.Utf8;
+import com.yahoo.slime.SlimeUtils;
-import java.io.ByteArrayOutputStream;
import java.io.IOException;
-import java.nio.charset.StandardCharsets;
import java.time.Instant;
/**
@@ -31,12 +27,9 @@ public class TenantMetaData {
return lastDeployTimestamp;
}
- public String asJsonString() {
- Slime slime = getSlime();
- ByteArrayOutputStream baos = new ByteArrayOutputStream();
+ public byte[] asJsonBytes() {
try {
- new JsonFormat(false).encode(baos, slime);
- return baos.toString(StandardCharsets.UTF_8);
+ return SlimeUtils.toJsonBytes(getSlime());
} catch (IOException e) {
throw new RuntimeException("Unable to encode metadata", e);
}
@@ -44,8 +37,7 @@ public class TenantMetaData {
public static TenantMetaData fromJsonString(String jsonString) {
try {
- Slime data = new Slime();
- new JsonDecoder().decode(data, Utf8.toBytes(jsonString));
+ Slime data = SlimeUtils.jsonToSlime(jsonString);
Inspector root = data.get();
Inspector lastDeployTimestamp = root.field("lastDeployTimestamp");
diff --git a/configserver/src/test/java/com/yahoo/vespa/config/server/http/HttpHandlerTest.java b/configserver/src/test/java/com/yahoo/vespa/config/server/http/HttpHandlerTest.java
index d614031c443..ab161feb519 100644
--- a/configserver/src/test/java/com/yahoo/vespa/config/server/http/HttpHandlerTest.java
+++ b/configserver/src/test/java/com/yahoo/vespa/config/server/http/HttpHandlerTest.java
@@ -4,8 +4,8 @@ package com.yahoo.vespa.config.server.http;
import com.yahoo.container.jdisc.HttpRequest;
import com.yahoo.container.jdisc.HttpResponse;
import com.yahoo.jdisc.Response;
-import com.yahoo.slime.JsonDecoder;
import com.yahoo.slime.Slime;
+import com.yahoo.slime.SlimeUtils;
import org.junit.Test;
import java.io.ByteArrayOutputStream;
@@ -21,6 +21,7 @@ import static org.junit.Assert.assertThat;
* @author Ulf Lilleengen
*/
public class HttpHandlerTest {
+
@Test
public void testResponse() throws IOException {
final String message = "failed";
@@ -29,8 +30,7 @@ public class HttpHandlerTest {
assertThat(response.getStatus(), is(Response.Status.BAD_REQUEST));
ByteArrayOutputStream baos = new ByteArrayOutputStream();
response.render(baos);
- Slime data = new Slime();
- new JsonDecoder().decode(data, baos.toByteArray());
+ Slime data = SlimeUtils.jsonToSlime(baos.toByteArray());
assertThat(data.get().field("error-code").asString(), is(HttpErrorResponse.errorCodes.INVALID_APPLICATION_PACKAGE.name()));
assertThat(data.get().field("message").asString(), is(message));
}
diff --git a/configserver/src/test/java/com/yahoo/vespa/config/server/http/v2/SessionPrepareHandlerTest.java b/configserver/src/test/java/com/yahoo/vespa/config/server/http/v2/SessionPrepareHandlerTest.java
index b78d8d3e525..2f591ece8c4 100644
--- a/configserver/src/test/java/com/yahoo/vespa/config/server/http/v2/SessionPrepareHandlerTest.java
+++ b/configserver/src/test/java/com/yahoo/vespa/config/server/http/v2/SessionPrepareHandlerTest.java
@@ -12,8 +12,8 @@ import com.yahoo.config.provision.OutOfCapacityException;
import com.yahoo.config.provision.TenantName;
import com.yahoo.container.jdisc.HttpResponse;
import com.yahoo.jdisc.http.HttpRequest;
-import com.yahoo.slime.JsonDecoder;
import com.yahoo.slime.Slime;
+import com.yahoo.slime.SlimeUtils;
import com.yahoo.vespa.config.server.ApplicationRepository;
import com.yahoo.vespa.config.server.TestComponentRegistry;
import com.yahoo.vespa.config.server.TimeoutBudget;
@@ -285,9 +285,7 @@ public class SessionPrepareHandlerTest extends SessionHandlerTest {
private Slime getData(HttpResponse response) throws IOException {
ByteArrayOutputStream baos = new ByteArrayOutputStream();
response.render(baos);
- Slime data = new Slime();
- new JsonDecoder().decode(data, baos.toByteArray());
- return data;
+ return SlimeUtils.jsonToSlime(baos.toByteArray());
}
private static void assertResponseContains(HttpResponse response, String string) throws IOException {
diff --git a/hosted-api/src/main/java/ai/vespa/hosted/api/ControllerHttpClient.java b/hosted-api/src/main/java/ai/vespa/hosted/api/ControllerHttpClient.java
index ee30f6fd471..42d1b802094 100644
--- a/hosted-api/src/main/java/ai/vespa/hosted/api/ControllerHttpClient.java
+++ b/hosted-api/src/main/java/ai/vespa/hosted/api/ControllerHttpClient.java
@@ -12,14 +12,13 @@ import com.yahoo.security.X509CertificateUtils;
import com.yahoo.slime.ArrayTraverser;
import com.yahoo.slime.Cursor;
import com.yahoo.slime.Inspector;
-import com.yahoo.slime.JsonDecoder;
-import com.yahoo.slime.JsonFormat;
import com.yahoo.slime.ObjectTraverser;
import com.yahoo.slime.Slime;
+import com.yahoo.slime.SlimeUtils;
+import com.yahoo.text.Utf8;
import javax.net.ssl.SSLContext;
import java.io.ByteArrayInputStream;
-import java.io.ByteArrayOutputStream;
import java.io.IOException;
import java.io.InputStream;
import java.io.UncheckedIOException;
@@ -381,14 +380,12 @@ public abstract class ControllerHttpClient {
}
private static Slime toSlime(byte[] data) {
- return new JsonDecoder().decode(new Slime(), data);
+ return SlimeUtils.jsonToSlime(data);
}
private static String toJson(Slime slime) {
try {
- ByteArrayOutputStream buffer = new ByteArrayOutputStream();
- new JsonFormat(true).encode(buffer, slime);
- return buffer.toString(UTF_8);
+ return Utf8.toString(SlimeUtils.toJsonBytes(slime));
}
catch (IOException e) {
throw new UncheckedIOException(e);
diff --git a/hosted-api/src/main/java/ai/vespa/hosted/api/TestConfig.java b/hosted-api/src/main/java/ai/vespa/hosted/api/TestConfig.java
index 870afaa4f99..3b8b2ffcb28 100644
--- a/hosted-api/src/main/java/ai/vespa/hosted/api/TestConfig.java
+++ b/hosted-api/src/main/java/ai/vespa/hosted/api/TestConfig.java
@@ -6,9 +6,8 @@ import com.yahoo.config.provision.SystemName;
import com.yahoo.config.provision.zone.ZoneId;
import com.yahoo.slime.ArrayTraverser;
import com.yahoo.slime.Inspector;
-import com.yahoo.slime.JsonDecoder;
import com.yahoo.slime.ObjectTraverser;
-import com.yahoo.slime.Slime;
+import com.yahoo.slime.SlimeUtils;
import java.net.URI;
import java.util.ArrayList;
@@ -56,7 +55,7 @@ public class TestConfig {
* is returned, using {@link #fromEndpointsOnly}. Otherwise, all config attributes are parsed.
*/
public static TestConfig fromJson(byte[] jsonBytes) {
- Inspector config = new JsonDecoder().decode(new Slime(), jsonBytes).get();
+ Inspector config = SlimeUtils.jsonToSlime(jsonBytes).get();
if (config.field("localEndpoints").valid())
return TestConfig.fromEndpointsOnly(toClusterMap(config.field("localEndpoints")));
diff --git a/vespajlib/src/main/java/com/yahoo/osgi/maven/ProjectBundleClassPaths.java b/vespajlib/src/main/java/com/yahoo/osgi/maven/ProjectBundleClassPaths.java
index a22bf21ba92..5d64548e4b9 100644
--- a/vespajlib/src/main/java/com/yahoo/osgi/maven/ProjectBundleClassPaths.java
+++ b/vespajlib/src/main/java/com/yahoo/osgi/maven/ProjectBundleClassPaths.java
@@ -3,9 +3,9 @@ package com.yahoo.osgi.maven;
import com.yahoo.slime.Cursor;
import com.yahoo.slime.Inspector;
-import com.yahoo.slime.JsonDecoder;
import com.yahoo.slime.JsonFormat;
import com.yahoo.slime.Slime;
+import com.yahoo.slime.SlimeUtils;
import java.io.BufferedOutputStream;
import java.io.IOException;
@@ -60,9 +60,7 @@ public class ProjectBundleClassPaths {
}
static ProjectBundleClassPaths load(byte[] bytes) {
- Slime slime = new Slime();
- new JsonDecoder().decode(slime, bytes);
- Inspector inspector = slime.get();
+ Inspector inspector = SlimeUtils.jsonToSlime(bytes).get();
BundleClasspathMapping mainBundle = BundleClasspathMapping.load(inspector.field("mainBundle"));
Inspector dependenciesInspector = inspector.field("providedDependencies");
List<BundleClasspathMapping> providedDependencies = new ArrayList<>();