Cleanup/fix jackson 2 -> 3 migration (#3024)

Signed-off-by: Avgustin Marinov <Avgustin.Marinov@bosch.com>
This commit is contained in:
Avgustin Marinov
2026-04-16 13:29:26 +03:00
committed by GitHub
parent 000dd97bbc
commit 37559cdedc
50 changed files with 442 additions and 514 deletions

View File

@@ -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;
}
}

View File

@@ -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)))

View File

@@ -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.

View File

@@ -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);
}
}