add type name to mgmt api responses (#1298)

Signed-off-by: Stefan Klotz <stefan.klotz@bosch.io>

Signed-off-by: Stefan Klotz <stefan.klotz@bosch.io>
This commit is contained in:
Stefan Klotz
2023-01-10 12:54:50 +01:00
committed by GitHub
parent 68a57f69f0
commit 27872282f5
11 changed files with 104 additions and 56 deletions

View File

@@ -43,6 +43,9 @@ public class MgmtDistributionSet extends MgmtNamedEntity {
@JsonProperty @JsonProperty
private String type; private String type;
@JsonProperty
private String typeName;
@JsonProperty @JsonProperty
private Boolean complete; private Boolean complete;
@@ -109,6 +112,14 @@ public class MgmtDistributionSet extends MgmtNamedEntity {
this.type = type; this.type = type;
} }
public String getTypeName() {
return typeName;
}
public void setTypeName(final String typeName) {
this.typeName = typeName;
}
public Boolean getComplete() { public Boolean getComplete() {
return complete; return complete;
} }

View File

@@ -32,6 +32,8 @@ public class MgmtSoftwareModule extends MgmtNamedEntity {
@JsonProperty(required = true) @JsonProperty(required = true)
private String type; private String type;
private String typeName;
@JsonProperty @JsonProperty
private String vendor; private String vendor;
@@ -74,6 +76,14 @@ public class MgmtSoftwareModule extends MgmtNamedEntity {
this.type = type; this.type = type;
} }
public String getTypeName() {
return typeName;
}
public void setTypeName(final String typeName) {
this.typeName = typeName;
}
public String getVendor() { public String getVendor() {
return vendor; return vendor;
} }

View File

@@ -52,6 +52,9 @@ public class MgmtTarget extends MgmtNamedEntity {
@JsonProperty @JsonProperty
private Long targetType; private Long targetType;
@JsonProperty
private String targetTypeName;
/** /**
* @return Target type ID * @return Target type ID
*/ */
@@ -61,12 +64,27 @@ public class MgmtTarget extends MgmtNamedEntity {
/** /**
* @param targetType * @param targetType
* Target type ID * Target type ID
*/ */
public void setTargetType(Long targetType) { public void setTargetType(final Long targetType) {
this.targetType = targetType; this.targetType = targetType;
} }
/**
* @return Target type name
*/
public String getTargetTypeName() {
return targetTypeName;
}
/**
* @param targetTypeName
* Target type name
*/
public void setTargetTypeName(final String targetTypeName) {
this.targetTypeName = targetTypeName;
}
/** /**
* @return the controllerId * @return the controllerId
*/ */

View File

@@ -109,6 +109,7 @@ public final class MgmtDistributionSetMapper {
response.setVersion(distributionSet.getVersion()); response.setVersion(distributionSet.getVersion());
response.setComplete(distributionSet.isComplete()); response.setComplete(distributionSet.isComplete());
response.setType(distributionSet.getType().getKey()); response.setType(distributionSet.getType().getKey());
response.setTypeName(distributionSet.getType().getName());
response.setDeleted(distributionSet.isDeleted()); response.setDeleted(distributionSet.isDeleted());
response.setValid(distributionSet.isValid()); response.setValid(distributionSet.isValid());

View File

@@ -106,6 +106,7 @@ public final class MgmtSoftwareModuleMapper {
response.setModuleId(softwareModule.getId()); response.setModuleId(softwareModule.getId());
response.setVersion(softwareModule.getVersion()); response.setVersion(softwareModule.getVersion());
response.setType(softwareModule.getType().getKey()); response.setType(softwareModule.getType().getKey());
response.setTypeName(softwareModule.getType().getName());
response.setVendor(softwareModule.getVendor()); response.setVendor(softwareModule.getVendor());
response.setDeleted(softwareModule.isDeleted()); response.setDeleted(softwareModule.isDeleted());
response.setEncrypted(softwareModule.isEncrypted()); response.setEncrypted(softwareModule.isEncrypted());

View File

@@ -17,7 +17,6 @@ import java.util.Collection;
import java.util.Collections; import java.util.Collections;
import java.util.Date; import java.util.Date;
import java.util.List; import java.util.List;
import java.util.Objects;
import java.util.stream.Collectors; import java.util.stream.Collectors;
import org.eclipse.hawkbit.mgmt.json.model.MgmtMaintenanceWindow; import org.eclipse.hawkbit.mgmt.json.model.MgmtMaintenanceWindow;
@@ -82,8 +81,8 @@ public final class MgmtTargetMapper {
MgmtRestConstants.REQUEST_PARAMETER_PAGING_DEFAULT_OFFSET_VALUE, MgmtRestConstants.REQUEST_PARAMETER_PAGING_DEFAULT_OFFSET_VALUE,
MgmtRestConstants.REQUEST_PARAMETER_PAGING_DEFAULT_LIMIT_VALUE, null, null)).withRel("metadata")); MgmtRestConstants.REQUEST_PARAMETER_PAGING_DEFAULT_LIMIT_VALUE, null, null)).withRel("metadata"));
if (response.getTargetType() != null) { if (response.getTargetType() != null) {
response.add(linkTo(methodOn(MgmtTargetTypeRestApi.class) response.add(linkTo(methodOn(MgmtTargetTypeRestApi.class).getTargetType(response.getTargetType()))
.getTargetType(response.getTargetType())).withRel(MgmtRestConstants.TARGET_V1_ASSIGNED_TARGET_TYPE)); .withRel(MgmtRestConstants.TARGET_V1_ASSIGNED_TARGET_TYPE));
} }
} }
@@ -159,8 +158,9 @@ public final class MgmtTargetMapper {
if (installationDate != null) { if (installationDate != null) {
targetRest.setInstalledAt(installationDate); targetRest.setInstalledAt(installationDate);
} }
if (target.getTargetType() != null){ if (target.getTargetType() != null) {
targetRest.setTargetType(target.getTargetType().getId()); targetRest.setTargetType(target.getTargetType().getId());
targetRest.setTargetTypeName(target.getTargetType().getName());
} }
targetRest.add(linkTo(methodOn(MgmtTargetRestApi.class).getTarget(target.getControllerId())).withSelfRel()); targetRest.add(linkTo(methodOn(MgmtTargetRestApi.class).getTarget(target.getControllerId())).withSelfRel());
@@ -226,7 +226,7 @@ public final class MgmtTargetMapper {
result.setStatus(MgmtAction.ACTION_FINISHED); result.setStatus(MgmtAction.ACTION_FINISHED);
} }
Rollout rollout = action.getRollout(); final Rollout rollout = action.getRollout();
if (rollout != null) { if (rollout != null) {
result.setRollout(rollout.getId()); result.setRollout(rollout.getId());
result.setRolloutName(rollout.getName()); result.setRolloutName(rollout.getName());

View File

@@ -289,8 +289,10 @@ public abstract class AbstractApiRestDocumentation extends AbstractRestIntegrati
.type("String"), .type("String"),
fieldWithPath(fieldArrayPrefix + "lastControllerRequestAt") fieldWithPath(fieldArrayPrefix + "lastControllerRequestAt")
.description(MgmtApiModelProperties.LAST_REQUEST_AT).type("Number"), .description(MgmtApiModelProperties.LAST_REQUEST_AT).type("Number"),
fieldWithPath(fieldArrayPrefix + "targetType") fieldWithPath(fieldArrayPrefix + "targetType").description(MgmtApiModelProperties.TARGETTYPE_ID)
.description(MgmtApiModelProperties.TARGETTYPE_ID).type("Number"), .type("Number"),
fieldWithPath(fieldArrayPrefix + "targetTypeName").description(MgmtApiModelProperties.TARGETTYPE_NAME)
.type("String"),
fieldWithPath(fieldArrayPrefix + "_links.self").ignored()); fieldWithPath(fieldArrayPrefix + "_links.self").ignored());
if (!isArray) { if (!isArray) {
@@ -331,6 +333,7 @@ public abstract class AbstractApiRestDocumentation extends AbstractRestIntegrati
fieldWithPath(arrayPrefix + "lastModifiedBy").description(ApiModelPropertiesGeneric.LAST_MODIFIED_BY), fieldWithPath(arrayPrefix + "lastModifiedBy").description(ApiModelPropertiesGeneric.LAST_MODIFIED_BY),
fieldWithPath(arrayPrefix + "lastModifiedAt").description(ApiModelPropertiesGeneric.LAST_MODIFIED_AT), fieldWithPath(arrayPrefix + "lastModifiedAt").description(ApiModelPropertiesGeneric.LAST_MODIFIED_AT),
fieldWithPath(arrayPrefix + "type").description(MgmtApiModelProperties.DS_TYPE), fieldWithPath(arrayPrefix + "type").description(MgmtApiModelProperties.DS_TYPE),
fieldWithPath(arrayPrefix + "typeName").description(MgmtApiModelProperties.DS_TYPE_NAME),
fieldWithPath(arrayPrefix + "requiredMigrationStep") fieldWithPath(arrayPrefix + "requiredMigrationStep")
.description(MgmtApiModelProperties.DS_REQUIRED_STEP), .description(MgmtApiModelProperties.DS_REQUIRED_STEP),
fieldWithPath(arrayPrefix + "complete").description(MgmtApiModelProperties.DS_COMPLETE), fieldWithPath(arrayPrefix + "complete").description(MgmtApiModelProperties.DS_COMPLETE),

View File

@@ -43,6 +43,7 @@ public final class MgmtApiModelProperties {
// software module // software module
public static final String SM_TYPE = "The software module type " + ApiModelPropertiesGeneric.ENDING; public static final String SM_TYPE = "The software module type " + ApiModelPropertiesGeneric.ENDING;
public static final String SM_TYPE_NAME = "The software module type name " + ApiModelPropertiesGeneric.ENDING;
public static final String ENCRYPTED = "Encryption flag, used to identify that artifacts should be encrypted upon upload."; public static final String ENCRYPTED = "Encryption flag, used to identify that artifacts should be encrypted upon upload.";
public static final String ARTIFACT_HASHES = "Hashes of the artifact."; public static final String ARTIFACT_HASHES = "Hashes of the artifact.";
public static final String ARTIFACT_SIZE = "Size of the artifact."; public static final String ARTIFACT_SIZE = "Size of the artifact.";
@@ -85,6 +86,7 @@ public final class MgmtApiModelProperties {
// Target type // Target type
public static final String TARGETTYPE_ID = "ID of the target type"; public static final String TARGETTYPE_ID = "ID of the target type";
public static final String TARGETTYPE_NAME = "Name of the target type";
public static final String COMPATIBLE_DS_TYPES = "Array of distribution set types that are compatible to that target type"; public static final String COMPATIBLE_DS_TYPES = "Array of distribution set types that are compatible to that target type";
public static final String LINK_COMPATIBLE_DS_TYPES = "Link to the compatible distribution set types in this target type"; public static final String LINK_COMPATIBLE_DS_TYPES = "Link to the compatible distribution set types in this target type";
@@ -192,6 +194,8 @@ public final class MgmtApiModelProperties {
public static final String DS_TYPE = "The type of the distribution set."; public static final String DS_TYPE = "The type of the distribution set.";
public static final String DS_TYPE_NAME = "The type name of the distribution set.";
public static final String DS_COMPLETE = "True of the distribution set software module setup is complete as defined by the distribution set type."; public static final String DS_COMPLETE = "True of the distribution set software module setup is complete as defined by the distribution set type.";
public static final String DS_VALID = "True by default and false after the distribution set is invalidated by the user."; public static final String DS_VALID = "True by default and false after the distribution set is invalidated by the user.";

View File

@@ -99,6 +99,7 @@ public class DistributionSetsDocumentationTest extends AbstractApiRestDocumentat
fieldWithPath("content[].lastModifiedAt") fieldWithPath("content[].lastModifiedAt")
.description(ApiModelPropertiesGeneric.LAST_MODIFIED_AT), .description(ApiModelPropertiesGeneric.LAST_MODIFIED_AT),
fieldWithPath("content[].type").description(MgmtApiModelProperties.DS_TYPE), fieldWithPath("content[].type").description(MgmtApiModelProperties.DS_TYPE),
fieldWithPath("content[].typeName").description(MgmtApiModelProperties.DS_TYPE_NAME),
fieldWithPath("content[].requiredMigrationStep") fieldWithPath("content[].requiredMigrationStep")
.description(MgmtApiModelProperties.DS_REQUIRED_STEP), .description(MgmtApiModelProperties.DS_REQUIRED_STEP),
fieldWithPath("content[].complete").description(MgmtApiModelProperties.DS_COMPLETE), fieldWithPath("content[].complete").description(MgmtApiModelProperties.DS_COMPLETE),

View File

@@ -92,6 +92,7 @@ public class SoftwaremodulesDocumentationTest extends AbstractApiRestDocumentati
fieldWithPath("content[].lastModifiedAt") fieldWithPath("content[].lastModifiedAt")
.description(ApiModelPropertiesGeneric.LAST_MODIFIED_AT), .description(ApiModelPropertiesGeneric.LAST_MODIFIED_AT),
fieldWithPath("content[].type").description(MgmtApiModelProperties.SM_TYPE), fieldWithPath("content[].type").description(MgmtApiModelProperties.SM_TYPE),
fieldWithPath("content[].typeName").description(MgmtApiModelProperties.SM_TYPE_NAME),
fieldWithPath("content[].version").description(MgmtApiModelProperties.VERSION), fieldWithPath("content[].version").description(MgmtApiModelProperties.VERSION),
fieldWithPath("content[]._links.self").ignored()))); fieldWithPath("content[]._links.self").ignored())));
} }
@@ -151,6 +152,7 @@ public class SoftwaremodulesDocumentationTest extends AbstractApiRestDocumentati
fieldWithPath("[].lastModifiedAt") fieldWithPath("[].lastModifiedAt")
.description(ApiModelPropertiesGeneric.LAST_MODIFIED_AT), .description(ApiModelPropertiesGeneric.LAST_MODIFIED_AT),
fieldWithPath("[].type").description(MgmtApiModelProperties.SM_TYPE), fieldWithPath("[].type").description(MgmtApiModelProperties.SM_TYPE),
fieldWithPath("[].typeName").description(MgmtApiModelProperties.SM_TYPE_NAME),
fieldWithPath("[].version").description(MgmtApiModelProperties.VERSION), fieldWithPath("[].version").description(MgmtApiModelProperties.VERSION),
fieldWithPath("[]._links.self").ignored()))); fieldWithPath("[]._links.self").ignored())));
} }
@@ -193,6 +195,7 @@ public class SoftwaremodulesDocumentationTest extends AbstractApiRestDocumentati
fieldWithPath("encrypted").description(MgmtApiModelProperties.ENCRYPTED), fieldWithPath("encrypted").description(MgmtApiModelProperties.ENCRYPTED),
fieldWithPath("deleted").description(ApiModelPropertiesGeneric.DELETED), fieldWithPath("deleted").description(ApiModelPropertiesGeneric.DELETED),
fieldWithPath("type").description(MgmtApiModelProperties.SM_TYPE), fieldWithPath("type").description(MgmtApiModelProperties.SM_TYPE),
fieldWithPath("typeName").description(MgmtApiModelProperties.SM_TYPE_NAME),
fieldWithPath("version").description(MgmtApiModelProperties.VERSION), fieldWithPath("version").description(MgmtApiModelProperties.VERSION),
fieldWithPath("_links.self").ignored(), fieldWithPath("_links.self").ignored(),
fieldWithPath("_links.type").description(MgmtApiModelProperties.SM_TYPE), fieldWithPath("_links.type").description(MgmtApiModelProperties.SM_TYPE),
@@ -228,6 +231,7 @@ public class SoftwaremodulesDocumentationTest extends AbstractApiRestDocumentati
fieldWithPath("lastModifiedBy").description(ApiModelPropertiesGeneric.LAST_MODIFIED_BY), fieldWithPath("lastModifiedBy").description(ApiModelPropertiesGeneric.LAST_MODIFIED_BY),
fieldWithPath("lastModifiedAt").description(ApiModelPropertiesGeneric.LAST_MODIFIED_AT), fieldWithPath("lastModifiedAt").description(ApiModelPropertiesGeneric.LAST_MODIFIED_AT),
fieldWithPath("type").description(MgmtApiModelProperties.SM_TYPE), fieldWithPath("type").description(MgmtApiModelProperties.SM_TYPE),
fieldWithPath("typeName").description(MgmtApiModelProperties.SM_TYPE_NAME),
fieldWithPath("version").description(MgmtApiModelProperties.VERSION), fieldWithPath("version").description(MgmtApiModelProperties.VERSION),
fieldWithPath("vendor").description(MgmtApiModelProperties.VENDOR), fieldWithPath("vendor").description(MgmtApiModelProperties.VENDOR),
fieldWithPath("encrypted").description(MgmtApiModelProperties.ENCRYPTED), fieldWithPath("encrypted").description(MgmtApiModelProperties.ENCRYPTED),

View File

@@ -107,8 +107,10 @@ public class TargetResourceDocumentationTest extends AbstractApiRestDocumentatio
.type("String"), .type("String"),
fieldWithPath("content[].lastControllerRequestAt") fieldWithPath("content[].lastControllerRequestAt")
.description(MgmtApiModelProperties.LAST_REQUEST_AT).type("Number"), .description(MgmtApiModelProperties.LAST_REQUEST_AT).type("Number"),
fieldWithPath("content[].targetType") fieldWithPath("content[].targetType").description(MgmtApiModelProperties.TARGETTYPE_ID)
.description(MgmtApiModelProperties.TARGETTYPE_ID).type("Number"), .type("Number"),
fieldWithPath("content[].targetTypeName").description(MgmtApiModelProperties.TARGETTYPE_NAME)
.type("String"),
fieldWithPath("content[]._links.self").ignored()))); fieldWithPath("content[]._links.self").ignored())));
} }
@@ -138,8 +140,7 @@ public class TargetResourceDocumentationTest extends AbstractApiRestDocumentatio
.description(MgmtApiModelProperties.SECURITY_TOKEN), .description(MgmtApiModelProperties.SECURITY_TOKEN),
optionalRequestFieldWithPath("[]targetType").description(MgmtApiModelProperties.TARGETTYPE_ID)), optionalRequestFieldWithPath("[]targetType").description(MgmtApiModelProperties.TARGETTYPE_ID)),
responseFields(fieldWithPath("[]controllerId").description(ApiModelPropertiesGeneric.ITEM_ID), responseFields(fieldWithPath("[]controllerId").description(ApiModelPropertiesGeneric.ITEM_ID),
fieldWithPath( fieldWithPath("[]name").description(ApiModelPropertiesGeneric.NAME),
"[]name").description(ApiModelPropertiesGeneric.NAME),
fieldWithPath("[]description").description(ApiModelPropertiesGeneric.DESCRPTION), fieldWithPath("[]description").description(ApiModelPropertiesGeneric.DESCRPTION),
fieldWithPath("[]address").description(MgmtApiModelProperties.ADDRESS), fieldWithPath("[]address").description(MgmtApiModelProperties.ADDRESS),
fieldWithPath("[]createdBy").description(ApiModelPropertiesGeneric.CREATED_BY), fieldWithPath("[]createdBy").description(ApiModelPropertiesGeneric.CREATED_BY),
@@ -156,8 +157,8 @@ public class TargetResourceDocumentationTest extends AbstractApiRestDocumentatio
fieldWithPath("[]securityToken").description(MgmtApiModelProperties.SECURITY_TOKEN), fieldWithPath("[]securityToken").description(MgmtApiModelProperties.SECURITY_TOKEN),
fieldWithPath("[]requestAttributes") fieldWithPath("[]requestAttributes")
.description(MgmtApiModelProperties.REQUEST_ATTRIBUTES), .description(MgmtApiModelProperties.REQUEST_ATTRIBUTES),
fieldWithPath("[]targetType") fieldWithPath("[]targetType").description(MgmtApiModelProperties.TARGETTYPE_ID),
.description(MgmtApiModelProperties.TARGETTYPE_ID), fieldWithPath("[]targetTypeName").description(MgmtApiModelProperties.TARGETTYPE_NAME),
fieldWithPath("[]_links.self").ignored()))); fieldWithPath("[]_links.self").ignored())));
} }
@@ -362,15 +363,13 @@ public class TargetResourceDocumentationTest extends AbstractApiRestDocumentatio
.type("String"), .type("String"),
fieldWithPath("status").description(MgmtApiModelProperties.ACTION_EXECUTION_STATUS) fieldWithPath("status").description(MgmtApiModelProperties.ACTION_EXECUTION_STATUS)
.attributes(key("value").value("['finished', 'pending']")), .attributes(key("value").value("['finished', 'pending']")),
fieldWithPath("rollout").description(MgmtApiModelProperties.ACTION_ROLLOUT), fieldWithPath("rollout").description(MgmtApiModelProperties.ACTION_ROLLOUT),
fieldWithPath("rolloutName") fieldWithPath("rolloutName").description(MgmtApiModelProperties.ACTION_ROLLOUT_NAME),
.description(MgmtApiModelProperties.ACTION_ROLLOUT_NAME),
fieldWithPath("_links.self").ignored(), fieldWithPath("_links.self").ignored(),
fieldWithPath("_links.distributionset").description(MgmtApiModelProperties.LINK_TO_DS), fieldWithPath("_links.distributionset").description(MgmtApiModelProperties.LINK_TO_DS),
fieldWithPath("_links.status") fieldWithPath("_links.status")
.description(MgmtApiModelProperties.LINKS_ACTION_STATUSES), .description(MgmtApiModelProperties.LINKS_ACTION_STATUSES),
fieldWithPath("_links.rollout") fieldWithPath("_links.rollout").description(MgmtApiModelProperties.LINK_TO_ROLLOUT))));
.description(MgmtApiModelProperties.LINK_TO_ROLLOUT))));
} }
@Test @Test
@@ -430,10 +429,9 @@ public class TargetResourceDocumentationTest extends AbstractApiRestDocumentatio
final Map<String, Object> body = new HashMap<>(); final Map<String, Object> body = new HashMap<>();
body.put("forceType", "forced"); body.put("forceType", "forced");
mockMvc.perform( mockMvc.perform(put(MgmtRestConstants.TARGET_V1_REQUEST_MAPPING + "/{targetId}/"
put(MgmtRestConstants.TARGET_V1_REQUEST_MAPPING + "/{targetId}/" + MgmtRestConstants.TARGET_V1_ACTIONS + MgmtRestConstants.TARGET_V1_ACTIONS + "/{actionId}", targetId, actionId)
+ "/{actionId}", targetId, actionId).content(this.objectMapper.writeValueAsString(body)) .content(this.objectMapper.writeValueAsString(body)).contentType(MediaType.APPLICATION_JSON))
.contentType(MediaType.APPLICATION_JSON))
.andDo(MockMvcResultPrinter.print()).andExpect(status().isOk()) .andDo(MockMvcResultPrinter.print()).andExpect(status().isOk())
.andDo(this.document.document( .andDo(this.document.document(
pathParameters(parameterWithName("targetId").description(ApiModelPropertiesGeneric.ITEM_ID), pathParameters(parameterWithName("targetId").description(ApiModelPropertiesGeneric.ITEM_ID),
@@ -484,8 +482,7 @@ public class TargetResourceDocumentationTest extends AbstractApiRestDocumentatio
.description(MgmtApiModelProperties.ACTION_STATUS_REPORTED_AT).type("String"), .description(MgmtApiModelProperties.ACTION_STATUS_REPORTED_AT).type("String"),
optionalRequestFieldWithPath("content[].code") optionalRequestFieldWithPath("content[].code")
.description(MgmtApiModelProperties.ACTION_STATUS_CODE).type("Integer"), .description(MgmtApiModelProperties.ACTION_STATUS_CODE).type("Integer"),
fieldWithPath( fieldWithPath("content[].type").description(MgmtApiModelProperties.ACTION_STATUS_TYPE)
"content[].type").description(MgmtApiModelProperties.ACTION_STATUS_TYPE)
.attributes(key("value").value( .attributes(key("value").value(
"['finished', 'error', 'warning', 'pending', 'running', 'canceled', 'retrieved', 'canceling']"))))); "['finished', 'error', 'warning', 'pending', 'running', 'canceled', 'retrieved', 'canceling']")))));
} }
@@ -537,14 +534,13 @@ public class TargetResourceDocumentationTest extends AbstractApiRestDocumentatio
mockMvc.perform(post(MgmtRestConstants.TARGET_V1_REQUEST_MAPPING + "/{targetId}/" mockMvc.perform(post(MgmtRestConstants.TARGET_V1_REQUEST_MAPPING + "/{targetId}/"
+ MgmtRestConstants.TARGET_V1_ASSIGNED_DISTRIBUTION_SET, targetId).content(body) + MgmtRestConstants.TARGET_V1_ASSIGNED_DISTRIBUTION_SET, targetId).content(body)
.contentType(MediaType.APPLICATION_JSON)) .contentType(MediaType.APPLICATION_JSON))
.andDo(MockMvcResultPrinter.print()).andExpect(status().isOk()) .andDo(MockMvcResultPrinter.print()).andExpect(status().isOk())
.andDo(this.document.document( .andDo(this.document.document(
pathParameters(parameterWithName("targetId").description(ApiModelPropertiesGeneric.ITEM_ID)), pathParameters(parameterWithName("targetId").description(ApiModelPropertiesGeneric.ITEM_ID)),
requestParameters(parameterWithName("offline") requestParameters(parameterWithName("offline")
.description(MgmtApiModelProperties.OFFLINE_UPDATE).optional()), .description(MgmtApiModelProperties.OFFLINE_UPDATE).optional()),
requestFields( requestFields(requestFieldWithPath("id").description(ApiModelPropertiesGeneric.ITEM_ID),
requestFieldWithPath("id").description(ApiModelPropertiesGeneric.ITEM_ID),
requestFieldWithPathMandatoryInMultiAssignMode("weight") requestFieldWithPathMandatoryInMultiAssignMode("weight")
.description(MgmtApiModelProperties.ASSIGNMENT_WEIGHT) .description(MgmtApiModelProperties.ASSIGNMENT_WEIGHT)
.type(JsonFieldType.NUMBER).attributes(key("value").value("0 - 1000")), .type(JsonFieldType.NUMBER).attributes(key("value").value("0 - 1000")),
@@ -558,7 +554,8 @@ public class TargetResourceDocumentationTest extends AbstractApiRestDocumentatio
optionalRequestFieldWithPath("maintenanceWindow.timezone") optionalRequestFieldWithPath("maintenanceWindow.timezone")
.description(MgmtApiModelProperties.MAINTENANCE_WINDOW_TIMEZONE), .description(MgmtApiModelProperties.MAINTENANCE_WINDOW_TIMEZONE),
optionalRequestFieldWithPath("type").description(MgmtApiModelProperties.ASSIGNMENT_TYPE) optionalRequestFieldWithPath("type").description(MgmtApiModelProperties.ASSIGNMENT_TYPE)
.attributes(key("value").value("['soft', 'forced','timeforced', 'downloadonly']"))), .attributes(
key("value").value("['soft', 'forced','timeforced', 'downloadonly']"))),
responseFields(getDsAssignmentResponseFieldDescriptors()))); responseFields(getDsAssignmentResponseFieldDescriptors())));
} }
@@ -571,24 +568,24 @@ public class TargetResourceDocumentationTest extends AbstractApiRestDocumentatio
final long forceTime = System.currentTimeMillis(); final long forceTime = System.currentTimeMillis();
final JSONArray body = new JSONArray(); final JSONArray body = new JSONArray();
body.put(new JSONObject().put("id", sets.get(1).getId()).put("weight", 500).put("type", "timeforced") body.put(
.put("forcetime", forceTime) new JSONObject().put("id", sets.get(1).getId()).put("weight", 500).put("type", "timeforced")
.put("maintenanceWindow", new JSONObject().put("schedule", getTestSchedule(100)) .put("forcetime", forceTime).put("maintenanceWindow",
.put("duration", getTestDuration(10)).put("timezone", getTestTimeZone()))) new JSONObject().put("schedule", getTestSchedule(100))
.put("duration", getTestDuration(10)).put("timezone", getTestTimeZone())))
.toString(); .toString();
body.put(new JSONObject().put("id", sets.get(0).getId()).put("type", "forced").put("weight", 800)); body.put(new JSONObject().put("id", sets.get(0).getId()).put("type", "forced").put("weight", 800));
enableMultiAssignments(); enableMultiAssignments();
mockMvc.perform(post(MgmtRestConstants.TARGET_V1_REQUEST_MAPPING + "/{targetId}/" mockMvc.perform(post(MgmtRestConstants.TARGET_V1_REQUEST_MAPPING + "/{targetId}/"
+ MgmtRestConstants.TARGET_V1_ASSIGNED_DISTRIBUTION_SET, targetId).content(body.toString()) + MgmtRestConstants.TARGET_V1_ASSIGNED_DISTRIBUTION_SET, targetId).content(body.toString())
.contentType(MediaType.APPLICATION_JSON)) .contentType(MediaType.APPLICATION_JSON))
.andDo(MockMvcResultPrinter.print()).andExpect(status().isOk()) .andDo(MockMvcResultPrinter.print()).andExpect(status().isOk())
.andDo(this.document.document( .andDo(this.document.document(
pathParameters(parameterWithName("targetId").description(ApiModelPropertiesGeneric.ITEM_ID)), pathParameters(parameterWithName("targetId").description(ApiModelPropertiesGeneric.ITEM_ID)),
requestParameters(parameterWithName("offline") requestParameters(parameterWithName("offline")
.description(MgmtApiModelProperties.OFFLINE_UPDATE).optional()), .description(MgmtApiModelProperties.OFFLINE_UPDATE).optional()),
requestFields( requestFields(requestFieldWithPath("[].id").description(ApiModelPropertiesGeneric.ITEM_ID),
requestFieldWithPath("[].id").description(ApiModelPropertiesGeneric.ITEM_ID),
requestFieldWithPathMandatoryInMultiAssignMode("[].weight") requestFieldWithPathMandatoryInMultiAssignMode("[].weight")
.description(MgmtApiModelProperties.ASSIGNMENT_WEIGHT) .description(MgmtApiModelProperties.ASSIGNMENT_WEIGHT)
.attributes(key("value").value("0 - 1000")), .attributes(key("value").value("0 - 1000")),
@@ -612,15 +609,15 @@ public class TargetResourceDocumentationTest extends AbstractApiRestDocumentatio
private static FieldDescriptor[] getDsAssignmentResponseFieldDescriptors() { private static FieldDescriptor[] getDsAssignmentResponseFieldDescriptors() {
final FieldDescriptor[] descriptors = { final FieldDescriptor[] descriptors = {
fieldWithPath("assigned").description(MgmtApiModelProperties.DS_NEW_ASSIGNED_TARGETS), fieldWithPath("assigned").description(MgmtApiModelProperties.DS_NEW_ASSIGNED_TARGETS),
fieldWithPath("alreadyAssigned").type(JsonFieldType.NUMBER) fieldWithPath("alreadyAssigned").type(JsonFieldType.NUMBER)
.description(MgmtApiModelProperties.DS_ALREADY_ASSIGNED_TARGETS), .description(MgmtApiModelProperties.DS_ALREADY_ASSIGNED_TARGETS),
fieldWithPath("assignedActions").type(JsonFieldType.ARRAY) fieldWithPath("assignedActions").type(JsonFieldType.ARRAY)
.description(MgmtApiModelProperties.DS_NEW_ASSIGNED_ACTIONS), .description(MgmtApiModelProperties.DS_NEW_ASSIGNED_ACTIONS),
fieldWithPath("assignedActions.[].id").type(JsonFieldType.NUMBER) fieldWithPath("assignedActions.[].id").type(JsonFieldType.NUMBER)
.description(MgmtApiModelProperties.ACTION_ID), .description(MgmtApiModelProperties.ACTION_ID),
fieldWithPath("assignedActions.[]._links.self").type(JsonFieldType.OBJECT) fieldWithPath("assignedActions.[]._links.self").type(JsonFieldType.OBJECT)
.description(MgmtApiModelProperties.LINK_TO_ACTION), .description(MgmtApiModelProperties.LINK_TO_ACTION),
fieldWithPath("total").type(JsonFieldType.NUMBER) fieldWithPath("total").type(JsonFieldType.NUMBER)
.description(MgmtApiModelProperties.DS_TOTAL_ASSIGNED_TARGETS) }; .description(MgmtApiModelProperties.DS_TOTAL_ASSIGNED_TARGETS) };
return descriptors; return descriptors;
} }
@@ -847,11 +844,9 @@ public class TargetResourceDocumentationTest extends AbstractApiRestDocumentatio
targetManagement.assignType(testTarget.getControllerId(), targetType.getId()); targetManagement.assignType(testTarget.getControllerId(), targetType.getId());
mockMvc.perform(delete(MgmtRestConstants.TARGET_V1_REQUEST_MAPPING + "/{targetId}/targettype", mockMvc.perform(delete(MgmtRestConstants.TARGET_V1_REQUEST_MAPPING + "/{targetId}/targettype",
testTarget.getControllerId()).contentType(MediaType.APPLICATION_JSON)) testTarget.getControllerId()).contentType(MediaType.APPLICATION_JSON))
.andDo(MockMvcResultPrinter.print()).andExpect(status().isOk()) .andDo(MockMvcResultPrinter.print()).andExpect(status().isOk()).andDo(this.document.document(
.andDo(this.document.document( pathParameters(parameterWithName("targetId").description(ApiModelPropertiesGeneric.ITEM_ID))));
pathParameters(parameterWithName("targetId").description(ApiModelPropertiesGeneric.ITEM_ID))
));
} }
private String createTargetJsonForPostRequest(final String controllerId, final String name, private String createTargetJsonForPostRequest(final String controllerId, final String name,