Skip to content

Commit

Permalink
MODOAIPMH-540: conditions check improvements
Browse files Browse the repository at this point in the history
  • Loading branch information
DmytroBykov1 committed Mar 28, 2024
1 parent 8049302 commit 27b1625
Show file tree
Hide file tree
Showing 2 changed files with 10 additions and 10 deletions.
Original file line number Diff line number Diff line change
Expand Up @@ -17,6 +17,7 @@
import io.vertx.ext.web.codec.BodyCodec;
import org.apache.commons.collections4.CollectionUtils;
import org.apache.commons.lang.NotImplementedException;
import org.apache.commons.lang3.ObjectUtils;
import org.apache.commons.lang3.StringUtils;
import org.apache.logging.log4j.LogManager;
import org.apache.logging.log4j.Logger;
Expand Down Expand Up @@ -472,11 +473,9 @@ protected Future<Response> processRecords(Context ctx, Request request,
Promise<Response> oaiResponsePromise = Promise.promise();
buildRecords(ctx, request, items).onSuccess(recordsMap -> {
Response response;
if ((recordsMap.isEmpty() && jsonArrayIsEmptyCheck(items)) ||
(recordsMap.isEmpty() && jsonArrayNotEmptyCheck(items) && VerbType.GET_RECORD != request.getVerb())
) {
if (noRecordsFoundResultCheck(recordsMap, items, request.getVerb())) {
response = buildNoRecordsFoundOaiResponse(oaipmh, request);
} else if (recordsMap.isEmpty() && jsonArrayNotEmptyCheck(items) && VerbType.GET_RECORD == request.getVerb()) {
} else if (theByteArrayCannotBeConvertedToJaxbObjectResultCheck(recordsMap, items, request.getVerb())) {
response = buildTheByteArrayCannotBeConvertedToJaxbObjectResponse(oaipmh, request);
} else {
addRecordsToOaiResponse(oaipmh, recordsMap.values());
Expand All @@ -488,11 +487,13 @@ protected Future<Response> processRecords(Context ctx, Request request,
return oaiResponsePromise.future();
}

private boolean jsonArrayNotEmptyCheck(JsonArray ja){
return ja != null && !ja.isEmpty();
boolean noRecordsFoundResultCheck(Map<String, RecordType> recordsMap, JsonArray items, VerbType verb){
return (recordsMap.isEmpty() && ObjectUtils.isEmpty(items)) ||
(recordsMap.isEmpty() && ObjectUtils.isNotEmpty(items) && VerbType.GET_RECORD != verb);
}
private boolean jsonArrayIsEmptyCheck(JsonArray ja){
return !jsonArrayNotEmptyCheck(ja);

boolean theByteArrayCannotBeConvertedToJaxbObjectResultCheck(Map<String, RecordType> recordsMap, JsonArray items, VerbType verb){
return recordsMap.isEmpty() && ObjectUtils.isNotEmpty(items) && VerbType.GET_RECORD == verb;
}
/**
* Builds {@link Map} with storage id as key and {@link RecordType} with populated header if there is any,
Expand All @@ -506,7 +507,7 @@ private Future<Map<String, RecordType>> buildRecords(Context context, Request re

Map<String, RecordType> recordsMap = new ConcurrentHashMap<>();

if (jsonArrayNotEmptyCheck(records)) {
if (records != null && !records.isEmpty()) {
RecordMetadataManager metadataManager = RecordMetadataManager.getInstance();
// Using LinkedHashMap just to rely on order returned by storage service
records.stream()
Expand Down
1 change: 0 additions & 1 deletion src/test/java/org/folio/rest/impl/OaiPmhImplTest.java
Original file line number Diff line number Diff line change
Expand Up @@ -761,7 +761,6 @@ void headerDatestampOfGetRecordVerbShouldCorrespondToGranularitySetting(Metadata
void invalidCharacterInTheRecordTest() {
MetadataPrefix prefix = MARC21XML;
String identifier = IDENTIFIER_PREFIX + OkapiMockServer.EXISTING_IDENTIFIER_WITH_INVALID_CHARACTER;
// String identifier = IDENTIFIER_PREFIX + OkapiMockServer.EXISTING_IDENTIFIER;//_WITH_INVALID_CHARACTER;

RequestSpecification request = createBaseRequest()
.with()
Expand Down

0 comments on commit 27b1625

Please sign in to comment.