Cleanup/fix jackson 2 -> 3 migration (#3024)
Signed-off-by: Avgustin Marinov <Avgustin.Marinov@bosch.com>
This commit is contained in:
@@ -32,6 +32,11 @@
|
||||
<version>${project.version}</version>
|
||||
</dependency>
|
||||
|
||||
<dependency>
|
||||
<groupId>tools.jackson.core</groupId>
|
||||
<artifactId>jackson-databind</artifactId>
|
||||
</dependency>
|
||||
|
||||
<dependency>
|
||||
<groupId>org.springframework.boot</groupId>
|
||||
<artifactId>spring-boot-starter-hateoas-test</artifactId>
|
||||
|
||||
@@ -11,11 +11,10 @@ package org.eclipse.hawkbit.mgmt.json.model.target;
|
||||
|
||||
import java.io.Serial;
|
||||
import java.util.ArrayList;
|
||||
import java.util.List;
|
||||
|
||||
import com.fasterxml.jackson.annotation.JsonIgnore;
|
||||
import com.fasterxml.jackson.databind.annotation.JsonDeserialize;
|
||||
import lombok.NoArgsConstructor;
|
||||
import tools.jackson.databind.annotation.JsonDeserialize;
|
||||
|
||||
/**
|
||||
* Class to hold multiple distribution set assignments. A JSON object
|
||||
|
||||
@@ -9,46 +9,30 @@
|
||||
*/
|
||||
package org.eclipse.hawkbit.mgmt.json.model.target;
|
||||
|
||||
import java.io.IOException;
|
||||
import java.io.Serial;
|
||||
import java.util.Arrays;
|
||||
|
||||
import com.fasterxml.jackson.core.JsonParser;
|
||||
import com.fasterxml.jackson.core.ObjectCodec;
|
||||
import com.fasterxml.jackson.databind.DeserializationContext;
|
||||
import com.fasterxml.jackson.databind.JsonNode;
|
||||
import com.fasterxml.jackson.databind.deser.std.StdDeserializer;
|
||||
import tools.jackson.core.JsonParser;
|
||||
import tools.jackson.databind.DeserializationContext;
|
||||
import tools.jackson.databind.JsonNode;
|
||||
import tools.jackson.databind.deser.std.StdDeserializer;
|
||||
|
||||
/**
|
||||
* Deserializes a single object or a List of
|
||||
* {@link MgmtDistributionSetAssignment}s
|
||||
* Deserializes a single object or a List of {@link MgmtDistributionSetAssignment}s
|
||||
*/
|
||||
public class MgmtDistributionSetAssignmentsDeserializer extends StdDeserializer<MgmtDistributionSetAssignments> {
|
||||
|
||||
@Serial
|
||||
private static final long serialVersionUID = 1L;
|
||||
|
||||
/**
|
||||
* Mandatory constructor
|
||||
*/
|
||||
public MgmtDistributionSetAssignmentsDeserializer() {
|
||||
this(null);
|
||||
}
|
||||
|
||||
protected MgmtDistributionSetAssignmentsDeserializer(final Class<?> vc) {
|
||||
super(vc);
|
||||
super(MgmtDistributionSetAssignments.class);
|
||||
}
|
||||
|
||||
@Override
|
||||
public MgmtDistributionSetAssignments deserialize(final JsonParser jp, final DeserializationContext ctx)
|
||||
throws IOException {
|
||||
public MgmtDistributionSetAssignments deserialize(final JsonParser jp, final DeserializationContext ctx) {
|
||||
final MgmtDistributionSetAssignments assignments = new MgmtDistributionSetAssignments();
|
||||
final ObjectCodec codec = jp.getCodec();
|
||||
final JsonNode node = codec.readTree(jp);
|
||||
final JsonNode node = jp.readValueAsTree();
|
||||
if (node.isArray()) {
|
||||
assignments.addAll(Arrays.asList(codec.treeToValue(node, MgmtDistributionSetAssignment[].class)));
|
||||
assignments.addAll(Arrays.asList(ctx.readTreeAsValue(node, MgmtDistributionSetAssignment[].class)));
|
||||
} else {
|
||||
assignments.add(codec.treeToValue(node, MgmtDistributionSetAssignment.class));
|
||||
assignments.add(ctx.readTreeAsValue(node, MgmtDistributionSetAssignment.class));
|
||||
}
|
||||
return assignments;
|
||||
}
|
||||
|
||||
@@ -11,10 +11,9 @@ package org.eclipse.hawkbit.mgmt.json.model;
|
||||
|
||||
import static org.assertj.core.api.Assertions.assertThat;
|
||||
|
||||
import com.fasterxml.jackson.core.JsonProcessingException;
|
||||
import com.fasterxml.jackson.databind.ObjectMapper;
|
||||
import org.eclipse.hawkbit.mgmt.json.model.target.MgmtTarget;
|
||||
import org.junit.jupiter.api.Test;
|
||||
import tools.jackson.databind.ObjectMapper;
|
||||
|
||||
/**
|
||||
* Feature: Unit Tests - Management API<br/>
|
||||
@@ -23,7 +22,7 @@ import org.junit.jupiter.api.Test;
|
||||
class AuditFieldSerializationTest {
|
||||
|
||||
@Test
|
||||
void assertAuditingFields() throws JsonProcessingException {
|
||||
void assertAuditingFields() {
|
||||
final MgmtTarget mgmtTarget = new MgmtTarget();
|
||||
mgmtTarget.setCreatedBy("user");
|
||||
mgmtTarget.setCreatedAt(System.currentTimeMillis() - 1_000_000);
|
||||
|
||||
@@ -11,13 +11,12 @@ package org.eclipse.hawkbit.mgmt.json.model.distributionset;
|
||||
|
||||
import static org.assertj.core.api.Assertions.assertThat;
|
||||
|
||||
import java.io.IOException;
|
||||
import java.util.Arrays;
|
||||
import java.util.List;
|
||||
|
||||
import com.fasterxml.jackson.databind.JsonNode;
|
||||
import com.fasterxml.jackson.databind.ObjectMapper;
|
||||
import org.junit.jupiter.api.Test;
|
||||
import tools.jackson.databind.JsonNode;
|
||||
import tools.jackson.databind.ObjectMapper;
|
||||
|
||||
/**
|
||||
* Feature: Tests for the MgmtTargetAssignmentResponseBody<br/>
|
||||
@@ -33,7 +32,7 @@ class MgmtTargetAssignmentResponseBodyTest {
|
||||
* Tests that the ActionIds are serialized correctly in MgmtTargetAssignmentResponseBody
|
||||
*/
|
||||
@Test
|
||||
void testActionIdsSerialization() throws IOException {
|
||||
void testActionIdsSerialization() {
|
||||
final MgmtTargetAssignmentResponseBody responseBody = generateResponseBody();
|
||||
final ObjectMapper objectMapper = new ObjectMapper();
|
||||
final String responseBodyAsString = objectMapper.writeValueAsString(responseBody);
|
||||
|
||||
@@ -9,7 +9,10 @@
|
||||
*/
|
||||
package org.eclipse.hawkbit.mgmt.rest.resource;
|
||||
|
||||
import java.util.Comparator;
|
||||
import java.util.List;
|
||||
import java.util.Map;
|
||||
import java.util.Optional;
|
||||
|
||||
import io.swagger.v3.oas.models.info.Info;
|
||||
import io.swagger.v3.oas.models.security.SecurityRequirement;
|
||||
@@ -17,6 +20,7 @@ import io.swagger.v3.oas.models.security.SecurityScheme;
|
||||
import io.swagger.v3.oas.models.servers.Server;
|
||||
import io.swagger.v3.oas.models.servers.ServerVariable;
|
||||
import io.swagger.v3.oas.models.servers.ServerVariables;
|
||||
import io.swagger.v3.oas.models.tags.Tag;
|
||||
import org.eclipse.hawkbit.rest.OpenApi;
|
||||
import org.springdoc.core.models.GroupedOpenApi;
|
||||
import org.springframework.beans.factory.annotation.Value;
|
||||
@@ -52,10 +56,10 @@ public class MgmtOpenApiConfiguration {
|
||||
"""))
|
||||
.servers(tenantEndpointEnabled
|
||||
? List.of(
|
||||
new Server()
|
||||
.url("/{tenant}/")
|
||||
.variables(new ServerVariables().addServerVariable("tenant", tenantSeverVariable())),
|
||||
new Server().url("/"))
|
||||
new Server()
|
||||
.url("/{tenant}/")
|
||||
.variables(new ServerVariables().addServerVariable("tenant", tenantSeverVariable())),
|
||||
new Server().url("/"))
|
||||
: List.of(new Server().url("/")))
|
||||
.addSecurityItem(new SecurityRequirement()
|
||||
.addList(BASIC_AUTH_SEC_SCHEME_NAME)
|
||||
@@ -74,7 +78,7 @@ public class MgmtOpenApiConfiguration {
|
||||
.type(SecurityScheme.Type.HTTP)
|
||||
.bearerFormat("JWT")
|
||||
.scheme("bearer")))
|
||||
.tags(OpenApi.sort(openApi.getTags())))
|
||||
.tags(sort(openApi.getTags())))
|
||||
.build();
|
||||
}
|
||||
|
||||
@@ -84,4 +88,35 @@ public class MgmtOpenApiConfiguration {
|
||||
tenantServerVariable.setDefault("DEFAULT");
|
||||
return tenantServerVariable;
|
||||
}
|
||||
|
||||
private static final String ORDER = "order";
|
||||
private static final Comparator<Tag> TAG_COMPARATOR = new Comparator<>() {
|
||||
|
||||
@Override
|
||||
public int compare(final Tag o1, final Tag o2) {
|
||||
final int o1Order = order(o1);
|
||||
final int o2Order = order(o2);
|
||||
if (o1Order == o2Order) {
|
||||
return o1.getName().compareTo(o2.getName());
|
||||
} else {
|
||||
return Integer.compare(o1Order, o2Order);
|
||||
}
|
||||
}
|
||||
|
||||
private static int order(final Tag tag) {
|
||||
return Optional.ofNullable(tag.getExtensions())
|
||||
.map(extensions -> extensions.get(OpenApi.X_HAWKBIT))
|
||||
.filter(extension -> Map.class.isAssignableFrom(extension.getClass()))
|
||||
.map(Map.class::cast)
|
||||
.map(propertiesMap -> propertiesMap.get(ORDER))
|
||||
.map(String.class::cast)
|
||||
.map(Integer::parseInt)
|
||||
.orElse(0);
|
||||
}
|
||||
};
|
||||
|
||||
private static List<Tag> sort(final List<Tag> tags) {
|
||||
tags.sort(TAG_COMPARATOR);
|
||||
return tags;
|
||||
}
|
||||
}
|
||||
@@ -45,7 +45,6 @@ import java.util.stream.Stream;
|
||||
|
||||
import jakarta.validation.ConstraintViolationException;
|
||||
|
||||
import com.fasterxml.jackson.databind.ObjectMapper;
|
||||
import com.jayway.jsonpath.JsonPath;
|
||||
import org.eclipse.hawkbit.auth.SpPermission;
|
||||
import org.eclipse.hawkbit.exception.SpServerError;
|
||||
@@ -115,7 +114,7 @@ class MgmtTargetResourceTest extends AbstractManagementApiIntegrationTest {
|
||||
private static final String JSON_PATH_ROOT = "$";
|
||||
// fields, attributes
|
||||
private static final String JSON_PATH_FIELD_ID = ".id";
|
||||
private static final String JSON_PATH_FIELD_CONTROLLERID = ".controllerId";
|
||||
private static final String JSON_PATH_FIELD_CONTROLLER_ID = ".controllerId";
|
||||
private static final String JSON_PATH_FIELD_NAME = ".name";
|
||||
private static final String JSON_PATH_FIELD_DESCRIPTION = ".description";
|
||||
private static final String JSON_PATH_FIELD_CONTENT = ".content";
|
||||
@@ -133,7 +132,7 @@ class MgmtTargetResourceTest extends AbstractManagementApiIntegrationTest {
|
||||
private static final String JSON_PATH_FIELD_TARGET_TYPE = ".targetType";
|
||||
private static final String JSON_PATH_NAME = JSON_PATH_ROOT + JSON_PATH_FIELD_NAME;
|
||||
private static final String JSON_PATH_ID = JSON_PATH_ROOT + JSON_PATH_FIELD_ID;
|
||||
private static final String JSON_PATH_CONTROLLERID = JSON_PATH_ROOT + JSON_PATH_FIELD_CONTROLLERID;
|
||||
private static final String JSON_PATH_CONTROLLER_ID = JSON_PATH_ROOT + JSON_PATH_FIELD_CONTROLLER_ID;
|
||||
private static final String JSON_PATH_DESCRIPTION = JSON_PATH_ROOT + JSON_PATH_FIELD_DESCRIPTION;
|
||||
private static final String JSON_PATH_LAST_REQUEST_AT = JSON_PATH_ROOT + JSON_PATH_FIELD_LAST_REQUEST_AT;
|
||||
private static final String JSON_PATH_TYPE = JSON_PATH_ROOT + JSON_PATH_FIELD_TARGET_TYPE;
|
||||
@@ -853,7 +852,7 @@ class MgmtTargetResourceTest extends AbstractManagementApiIntegrationTest {
|
||||
.andDo(MockMvcResultPrinter.print())
|
||||
.andExpect(status().isOk())
|
||||
.andExpect(jsonPath(JSON_PATH_NAME, equalTo(knownName)))
|
||||
.andExpect(jsonPath(JSON_PATH_CONTROLLERID, equalTo(knownControllerId)))
|
||||
.andExpect(jsonPath(JSON_PATH_CONTROLLER_ID, equalTo(knownControllerId)))
|
||||
.andExpect(jsonPath(JSON_PATH_DESCRIPTION, equalTo(TARGET_DESCRIPTION_TEST)))
|
||||
.andExpect(jsonPath(JSON_PATH_LAST_REQUEST_AT, equalTo(target.getLastTargetQuery())))
|
||||
.andExpect(jsonPath("$.pollStatus", hasKey("lastRequestAt")))
|
||||
@@ -2353,7 +2352,7 @@ class MgmtTargetResourceTest extends AbstractManagementApiIntegrationTest {
|
||||
.andDo(MockMvcResultPrinter.print())
|
||||
.andExpect(status().isOk())
|
||||
.andExpect(jsonPath(JSON_PATH_NAME, equalTo("targetOfType1")))
|
||||
.andExpect(jsonPath(JSON_PATH_CONTROLLERID, equalTo("id2")))
|
||||
.andExpect(jsonPath(JSON_PATH_CONTROLLER_ID, equalTo("id2")))
|
||||
.andExpect(jsonPath(JSON_PATH_TYPE, equalTo(type1.getId().intValue())))
|
||||
.andExpect(jsonPath(JSON_PATH_DESCRIPTION, equalTo("testid2")))
|
||||
.andExpect(jsonPath("$._links.targetType.href", equalTo(hrefType1)))
|
||||
|
||||
@@ -25,7 +25,6 @@ import static org.springframework.test.web.servlet.request.MockMvcRequestBuilder
|
||||
import static org.springframework.test.web.servlet.result.MockMvcResultMatchers.jsonPath;
|
||||
import static org.springframework.test.web.servlet.result.MockMvcResultMatchers.status;
|
||||
|
||||
import com.fasterxml.jackson.databind.ObjectMapper;
|
||||
import org.eclipse.hawkbit.auth.SpPermission;
|
||||
import org.eclipse.hawkbit.mgmt.json.model.system.MgmtSystemTenantConfigurationValueRequest;
|
||||
import org.eclipse.hawkbit.repository.DistributionSetTypeManagement;
|
||||
@@ -35,6 +34,7 @@ import org.json.JSONObject;
|
||||
import org.junit.jupiter.api.Test;
|
||||
import org.springframework.http.MediaType;
|
||||
import org.springframework.test.web.servlet.ResultMatcher;
|
||||
import tools.jackson.databind.ObjectMapper;
|
||||
|
||||
/**
|
||||
* Spring MVC Tests against the MgmtTenantManagementResource.
|
||||
|
||||
@@ -9,11 +9,9 @@
|
||||
*/
|
||||
package org.eclipse.hawkbit.mgmt.rest.resource.util;
|
||||
|
||||
import java.io.IOException;
|
||||
|
||||
import com.fasterxml.jackson.databind.ObjectMapper;
|
||||
import org.eclipse.hawkbit.mgmt.json.model.artifact.MgmtArtifact;
|
||||
import org.eclipse.hawkbit.rest.json.model.ExceptionInfo;
|
||||
import tools.jackson.databind.ObjectMapper;
|
||||
|
||||
/**
|
||||
* Utility additions for the REST API tests.
|
||||
@@ -22,11 +20,11 @@ public final class ResourceUtility {
|
||||
|
||||
private static final ObjectMapper OBJECT_MAPPER = new ObjectMapper();
|
||||
|
||||
public static ExceptionInfo convertException(final String jsonExceptionResponse) throws IOException {
|
||||
public static ExceptionInfo convertException(final String jsonExceptionResponse) {
|
||||
return OBJECT_MAPPER.readValue(jsonExceptionResponse, ExceptionInfo.class);
|
||||
}
|
||||
|
||||
public static MgmtArtifact convertArtifactResponse(final String jsonResponse) throws IOException {
|
||||
public static MgmtArtifact convertArtifactResponse(final String jsonResponse) {
|
||||
return OBJECT_MAPPER.readValue(jsonResponse, MgmtArtifact.class);
|
||||
}
|
||||
}
|
||||
@@ -16,13 +16,13 @@ import static org.springframework.test.web.servlet.request.MockMvcRequestBuilder
|
||||
import java.util.HashMap;
|
||||
import java.util.Map;
|
||||
|
||||
import com.fasterxml.jackson.databind.ObjectMapper;
|
||||
import org.eclipse.hawkbit.auth.SpPermission;
|
||||
import org.eclipse.hawkbit.auth.SpRole;
|
||||
import org.eclipse.hawkbit.repository.test.util.WithUser;
|
||||
import org.junit.jupiter.api.Test;
|
||||
import org.springframework.http.HttpStatus;
|
||||
import org.springframework.test.context.TestPropertySource;
|
||||
import tools.jackson.databind.ObjectMapper;
|
||||
|
||||
/**
|
||||
* Feature: Integration Test - Security<br/>
|
||||
@@ -96,7 +96,7 @@ class PreAuthorizeEnabledTest extends AbstractSecurityTest {
|
||||
mvc.perform(get("/rest/v1/system/configs")).andExpect(result -> {
|
||||
// returns default DS type because of READ_TARGET
|
||||
assertThat(result.getResponse().getStatus()).isEqualTo(HttpStatus.OK.value());
|
||||
assertThat((Map<?, ?>) new ObjectMapper().reader().readValue(result.getResponse().getContentAsString(), HashMap.class)).hasSize(1);
|
||||
assertThat((Map<?, ?>) new ObjectMapper().readValue(result.getResponse().getContentAsString(), HashMap.class)).hasSize(1);
|
||||
});
|
||||
}
|
||||
|
||||
|
||||
Reference in New Issue
Block a user