mirror of
https://github.com/DSpace/DSpace.git
synced 2025-10-07 10:04:21 +00:00
100553: Removed possibility to updated schema name, element and qualifier
This commit is contained in:
@@ -313,21 +313,23 @@ public class MetadataFieldRestRepository extends DSpaceRestRepository<MetadataFi
|
|||||||
throw new UnprocessableEntityException("Cannot parse JSON in request body", e);
|
throw new UnprocessableEntityException("Cannot parse JSON in request body", e);
|
||||||
}
|
}
|
||||||
|
|
||||||
if (metadataFieldRest == null || isBlank(metadataFieldRest.getElement())) {
|
MetadataField metadataField = metadataFieldService.find(context, id);
|
||||||
throw new UnprocessableEntityException("metadata element (in request body) cannot be blank");
|
if (metadataField == null) {
|
||||||
|
throw new ResourceNotFoundException("metadata field with id: " + id + " not found");
|
||||||
|
}
|
||||||
|
|
||||||
|
if (!Objects.equals(metadataFieldRest.getElement(), metadataField.getElement())) {
|
||||||
|
throw new UnprocessableEntityException("Metadata element cannot be updated.");
|
||||||
|
}
|
||||||
|
|
||||||
|
if (!Objects.equals(metadataFieldRest.getQualifier(), metadataField.getQualifier())) {
|
||||||
|
throw new UnprocessableEntityException("Metadata qualifier cannot be updated.");
|
||||||
}
|
}
|
||||||
|
|
||||||
if (!Objects.equals(id, metadataFieldRest.getId())) {
|
if (!Objects.equals(id, metadataFieldRest.getId())) {
|
||||||
throw new UnprocessableEntityException("ID in request body doesn't match path ID");
|
throw new UnprocessableEntityException("ID in request body doesn't match path ID");
|
||||||
}
|
}
|
||||||
|
|
||||||
MetadataField metadataField = metadataFieldService.find(context, id);
|
|
||||||
if (metadataField == null) {
|
|
||||||
throw new ResourceNotFoundException("metadata field with id: " + id + " not found");
|
|
||||||
}
|
|
||||||
|
|
||||||
metadataField.setElement(metadataFieldRest.getElement());
|
|
||||||
metadataField.setQualifier(metadataFieldRest.getQualifier());
|
|
||||||
metadataField.setScopeNote(metadataFieldRest.getScopeNote());
|
metadataField.setScopeNote(metadataFieldRest.getScopeNote());
|
||||||
|
|
||||||
try {
|
try {
|
||||||
|
@@ -147,8 +147,13 @@ public class MetadataSchemaRestRepository extends DSpaceRestRepository<MetadataS
|
|||||||
throw new UnprocessableEntityException("Cannot parse JSON in request body", e);
|
throw new UnprocessableEntityException("Cannot parse JSON in request body", e);
|
||||||
}
|
}
|
||||||
|
|
||||||
if (metadataSchemaRest == null || isBlank(metadataSchemaRest.getPrefix())) {
|
MetadataSchema metadataSchema = metadataSchemaService.find(context, id);
|
||||||
throw new UnprocessableEntityException("metadata schema name cannot be blank");
|
if (metadataSchema == null) {
|
||||||
|
throw new ResourceNotFoundException("metadata schema with id: " + id + " not found");
|
||||||
|
}
|
||||||
|
|
||||||
|
if (!Objects.equals(metadataSchemaRest.getPrefix(), metadataSchema.getName())) {
|
||||||
|
throw new UnprocessableEntityException("Metadata schema name cannot be updated.");
|
||||||
}
|
}
|
||||||
if (isBlank(metadataSchemaRest.getNamespace())) {
|
if (isBlank(metadataSchemaRest.getNamespace())) {
|
||||||
throw new UnprocessableEntityException("metadata schema namespace cannot be blank");
|
throw new UnprocessableEntityException("metadata schema namespace cannot be blank");
|
||||||
@@ -158,12 +163,6 @@ public class MetadataSchemaRestRepository extends DSpaceRestRepository<MetadataS
|
|||||||
throw new UnprocessableEntityException("ID in request doesn't match path ID");
|
throw new UnprocessableEntityException("ID in request doesn't match path ID");
|
||||||
}
|
}
|
||||||
|
|
||||||
MetadataSchema metadataSchema = metadataSchemaService.find(context, id);
|
|
||||||
if (metadataSchema == null) {
|
|
||||||
throw new ResourceNotFoundException("metadata schema with id: " + id + " not found");
|
|
||||||
}
|
|
||||||
|
|
||||||
metadataSchema.setName(metadataSchemaRest.getPrefix());
|
|
||||||
metadataSchema.setNamespace(metadataSchemaRest.getNamespace());
|
metadataSchema.setNamespace(metadataSchemaRest.getNamespace());
|
||||||
|
|
||||||
try {
|
try {
|
||||||
|
@@ -202,7 +202,7 @@ public class MetadataSchemaRestRepositoryIT extends AbstractControllerIntegratio
|
|||||||
|
|
||||||
MetadataSchemaRest metadataSchemaRest = new MetadataSchemaRest();
|
MetadataSchemaRest metadataSchemaRest = new MetadataSchemaRest();
|
||||||
metadataSchemaRest.setId(metadataSchema.getID());
|
metadataSchemaRest.setId(metadataSchema.getID());
|
||||||
metadataSchemaRest.setPrefix(TEST_NAME_UPDATED);
|
metadataSchemaRest.setPrefix(TEST_NAME);
|
||||||
metadataSchemaRest.setNamespace(TEST_NAMESPACE_UPDATED);
|
metadataSchemaRest.setNamespace(TEST_NAMESPACE_UPDATED);
|
||||||
|
|
||||||
getClient(getAuthToken(admin.getEmail(), password))
|
getClient(getAuthToken(admin.getEmail(), password))
|
||||||
@@ -214,7 +214,33 @@ public class MetadataSchemaRestRepositoryIT extends AbstractControllerIntegratio
|
|||||||
getClient().perform(get("/api/core/metadataschemas/" + metadataSchema.getID()))
|
getClient().perform(get("/api/core/metadataschemas/" + metadataSchema.getID()))
|
||||||
.andExpect(status().isOk())
|
.andExpect(status().isOk())
|
||||||
.andExpect(jsonPath("$", MetadataschemaMatcher
|
.andExpect(jsonPath("$", MetadataschemaMatcher
|
||||||
.matchEntry(TEST_NAME_UPDATED, TEST_NAMESPACE_UPDATED)));
|
.matchEntry(TEST_NAME, TEST_NAMESPACE_UPDATED)));
|
||||||
|
}
|
||||||
|
|
||||||
|
@Test
|
||||||
|
public void update_schemaNameShouldThrowError() throws Exception {
|
||||||
|
context.turnOffAuthorisationSystem();
|
||||||
|
|
||||||
|
MetadataSchema metadataSchema = MetadataSchemaBuilder.createMetadataSchema(context, TEST_NAME, TEST_NAMESPACE)
|
||||||
|
.build();
|
||||||
|
|
||||||
|
context.restoreAuthSystemState();
|
||||||
|
|
||||||
|
MetadataSchemaRest metadataSchemaRest = new MetadataSchemaRest();
|
||||||
|
metadataSchemaRest.setId(metadataSchema.getID());
|
||||||
|
metadataSchemaRest.setPrefix(TEST_NAME_UPDATED);
|
||||||
|
metadataSchemaRest.setNamespace(TEST_NAMESPACE_UPDATED);
|
||||||
|
|
||||||
|
getClient(getAuthToken(admin.getEmail(), password))
|
||||||
|
.perform(put("/api/core/metadataschemas/" + metadataSchema.getID())
|
||||||
|
.content(new ObjectMapper().writeValueAsBytes(metadataSchemaRest))
|
||||||
|
.contentType(contentType))
|
||||||
|
.andExpect(status().isUnprocessableEntity());
|
||||||
|
|
||||||
|
getClient().perform(get("/api/core/metadataschemas/" + metadataSchema.getID()))
|
||||||
|
.andExpect(status().isOk())
|
||||||
|
.andExpect(jsonPath("$", MetadataschemaMatcher
|
||||||
|
.matchEntry(TEST_NAME, TEST_NAMESPACE)));
|
||||||
}
|
}
|
||||||
|
|
||||||
@Test
|
@Test
|
||||||
|
@@ -832,31 +832,81 @@ public class MetadatafieldRestRepositoryIT extends AbstractControllerIntegration
|
|||||||
context.turnOffAuthorisationSystem();
|
context.turnOffAuthorisationSystem();
|
||||||
|
|
||||||
MetadataField metadataField = MetadataFieldBuilder.createMetadataField(context, ELEMENT, QUALIFIER, SCOPE_NOTE)
|
MetadataField metadataField = MetadataFieldBuilder.createMetadataField(context, ELEMENT, QUALIFIER, SCOPE_NOTE)
|
||||||
.build();
|
.build();
|
||||||
|
|
||||||
|
context.restoreAuthSystemState();
|
||||||
|
|
||||||
|
MetadataFieldRest metadataFieldRest = new MetadataFieldRest();
|
||||||
|
metadataFieldRest.setId(metadataField.getID());
|
||||||
|
metadataFieldRest.setElement(ELEMENT);
|
||||||
|
metadataFieldRest.setQualifier(QUALIFIER);
|
||||||
|
metadataFieldRest.setScopeNote(SCOPE_NOTE_UPDATED);
|
||||||
|
|
||||||
|
getClient(getAuthToken(admin.getEmail(), password))
|
||||||
|
.perform(put("/api/core/metadatafields/" + metadataField.getID())
|
||||||
|
.content(new ObjectMapper().writeValueAsBytes(metadataFieldRest))
|
||||||
|
.contentType(contentType))
|
||||||
|
.andExpect(status().isOk());
|
||||||
|
}
|
||||||
|
|
||||||
|
@Test
|
||||||
|
public void update_elementShouldThrowError() throws Exception {
|
||||||
|
context.turnOffAuthorisationSystem();
|
||||||
|
|
||||||
|
MetadataField metadataField = MetadataFieldBuilder.createMetadataField(context, ELEMENT, QUALIFIER, SCOPE_NOTE)
|
||||||
|
.build();
|
||||||
|
|
||||||
context.restoreAuthSystemState();
|
context.restoreAuthSystemState();
|
||||||
|
|
||||||
MetadataFieldRest metadataFieldRest = new MetadataFieldRest();
|
MetadataFieldRest metadataFieldRest = new MetadataFieldRest();
|
||||||
metadataFieldRest.setId(metadataField.getID());
|
metadataFieldRest.setId(metadataField.getID());
|
||||||
metadataFieldRest.setElement(ELEMENT_UPDATED);
|
metadataFieldRest.setElement(ELEMENT_UPDATED);
|
||||||
|
metadataFieldRest.setQualifier(QUALIFIER);
|
||||||
|
metadataFieldRest.setScopeNote(SCOPE_NOTE_UPDATED);
|
||||||
|
|
||||||
|
getClient(getAuthToken(admin.getEmail(), password))
|
||||||
|
.perform(put("/api/core/metadatafields/" + metadataField.getID())
|
||||||
|
.content(new ObjectMapper().writeValueAsBytes(metadataFieldRest))
|
||||||
|
.contentType(contentType))
|
||||||
|
.andExpect(status().isUnprocessableEntity());
|
||||||
|
|
||||||
|
getClient().perform(get("/api/core/metadatafields/" + metadataField.getID()))
|
||||||
|
.andExpect(status().isOk())
|
||||||
|
.andExpect(jsonPath("$", MetadataFieldMatcher.matchMetadataFieldByKeys(
|
||||||
|
metadataSchema.getName(), ELEMENT, QUALIFIER)
|
||||||
|
));
|
||||||
|
}
|
||||||
|
|
||||||
|
@Test
|
||||||
|
public void update_qualifierShouldThrowError() throws Exception {
|
||||||
|
context.turnOffAuthorisationSystem();
|
||||||
|
|
||||||
|
MetadataField metadataField = MetadataFieldBuilder.createMetadataField(context, ELEMENT, QUALIFIER, SCOPE_NOTE)
|
||||||
|
.build();
|
||||||
|
|
||||||
|
context.restoreAuthSystemState();
|
||||||
|
|
||||||
|
MetadataFieldRest metadataFieldRest = new MetadataFieldRest();
|
||||||
|
metadataFieldRest.setId(metadataField.getID());
|
||||||
|
metadataFieldRest.setElement(ELEMENT);
|
||||||
metadataFieldRest.setQualifier(QUALIFIER_UPDATED);
|
metadataFieldRest.setQualifier(QUALIFIER_UPDATED);
|
||||||
metadataFieldRest.setScopeNote(SCOPE_NOTE_UPDATED);
|
metadataFieldRest.setScopeNote(SCOPE_NOTE_UPDATED);
|
||||||
|
|
||||||
getClient(getAuthToken(admin.getEmail(), password))
|
getClient(getAuthToken(admin.getEmail(), password))
|
||||||
.perform(put("/api/core/metadatafields/" + metadataField.getID())
|
.perform(put("/api/core/metadatafields/" + metadataField.getID())
|
||||||
.content(new ObjectMapper().writeValueAsBytes(metadataFieldRest))
|
.content(new ObjectMapper().writeValueAsBytes(metadataFieldRest))
|
||||||
.contentType(contentType))
|
.contentType(contentType))
|
||||||
.andExpect(status().isOk());
|
.andExpect(status().isUnprocessableEntity());
|
||||||
|
|
||||||
getClient().perform(get("/api/core/metadatafields/" + metadataField.getID()))
|
getClient().perform(get("/api/core/metadatafields/" + metadataField.getID()))
|
||||||
.andExpect(status().isOk())
|
.andExpect(status().isOk())
|
||||||
.andExpect(jsonPath("$", MetadataFieldMatcher.matchMetadataFieldByKeys(
|
.andExpect(jsonPath("$", MetadataFieldMatcher.matchMetadataFieldByKeys(
|
||||||
metadataSchema.getName(), ELEMENT_UPDATED, QUALIFIER_UPDATED)
|
metadataSchema.getName(), ELEMENT, QUALIFIER)
|
||||||
));
|
));
|
||||||
}
|
}
|
||||||
|
|
||||||
@Test
|
@Test
|
||||||
public void update_checkUpdatedInIndex() throws Exception {
|
public void update_checkNotUpdatedInIndex() throws Exception {
|
||||||
context.turnOffAuthorisationSystem();
|
context.turnOffAuthorisationSystem();
|
||||||
|
|
||||||
MetadataField metadataField = MetadataFieldBuilder.createMetadataField(context, ELEMENT, QUALIFIER, SCOPE_NOTE)
|
MetadataField metadataField = MetadataFieldBuilder.createMetadataField(context, ELEMENT, QUALIFIER, SCOPE_NOTE)
|
||||||
@@ -885,27 +935,27 @@ public class MetadatafieldRestRepositoryIT extends AbstractControllerIntegration
|
|||||||
.perform(put("/api/core/metadatafields/" + metadataField.getID())
|
.perform(put("/api/core/metadatafields/" + metadataField.getID())
|
||||||
.content(new ObjectMapper().writeValueAsBytes(metadataFieldRest))
|
.content(new ObjectMapper().writeValueAsBytes(metadataFieldRest))
|
||||||
.contentType(contentType))
|
.contentType(contentType))
|
||||||
.andExpect(status().isOk());
|
.andExpect(status().isUnprocessableEntity());
|
||||||
|
|
||||||
// new metadata field found in index
|
// new metadata field not found in index
|
||||||
getClient().perform(get(SEARCH_BYFIELDNAME_ENDPOINT)
|
getClient().perform(get(SEARCH_BYFIELDNAME_ENDPOINT)
|
||||||
.param("schema", metadataSchema.getName())
|
.param("schema", metadataSchema.getName())
|
||||||
.param("element", ELEMENT_UPDATED)
|
.param("element", ELEMENT_UPDATED)
|
||||||
.param("qualifier", QUALIFIER_UPDATED))
|
.param("qualifier", QUALIFIER_UPDATED))
|
||||||
.andExpect(status().isOk())
|
.andExpect(status().isOk())
|
||||||
.andExpect(jsonPath("$._embedded.metadatafields", Matchers.hasItem(
|
.andExpect(jsonPath("$.page.totalElements", is(0)));
|
||||||
MetadataFieldMatcher.matchMetadataFieldByKeys(metadataSchema.getName(),
|
|
||||||
ELEMENT_UPDATED, QUALIFIER_UPDATED))
|
|
||||||
))
|
|
||||||
.andExpect(jsonPath("$.page.totalElements", is(1)));
|
|
||||||
|
|
||||||
// original metadata field not found in index
|
// original metadata field found in index
|
||||||
getClient().perform(get(SEARCH_BYFIELDNAME_ENDPOINT)
|
getClient().perform(get(SEARCH_BYFIELDNAME_ENDPOINT)
|
||||||
.param("schema", metadataSchema.getName())
|
.param("schema", metadataSchema.getName())
|
||||||
.param("element", metadataField.getElement())
|
.param("element", metadataField.getElement())
|
||||||
.param("qualifier", metadataField.getQualifier()))
|
.param("qualifier", metadataField.getQualifier()))
|
||||||
.andExpect(status().isOk())
|
.andExpect(status().isOk())
|
||||||
.andExpect(jsonPath("$.page.totalElements", is(0)));
|
.andExpect(jsonPath("$._embedded.metadatafields", Matchers.hasItem(
|
||||||
|
MetadataFieldMatcher.matchMetadataFieldByKeys(metadataSchema.getName(),
|
||||||
|
ELEMENT, QUALIFIER))
|
||||||
|
))
|
||||||
|
.andExpect(jsonPath("$.page.totalElements", is(1)));
|
||||||
}
|
}
|
||||||
|
|
||||||
@Test
|
@Test
|
||||||
|
Reference in New Issue
Block a user