diff options
Diffstat (limited to 'src/main/java/at/gv/egiz/moazs/client')
-rw-r--r-- | src/main/java/at/gv/egiz/moazs/client/TnvzHelper.java | 34 |
1 files changed, 23 insertions, 11 deletions
diff --git a/src/main/java/at/gv/egiz/moazs/client/TnvzHelper.java b/src/main/java/at/gv/egiz/moazs/client/TnvzHelper.java index 5cc4954..e6bacec 100644 --- a/src/main/java/at/gv/egiz/moazs/client/TnvzHelper.java +++ b/src/main/java/at/gv/egiz/moazs/client/TnvzHelper.java @@ -69,9 +69,9 @@ public class TnvzHelper { var tnvzResponse = tnvzPort.queryPerson(tnvzQuery); verifyResponse(tnvzResponse); - var tnvzResult = getResult(tnvzResponse); + var tnvzResult = getFirstResult(tnvzResponse); var typesInRequest = extractListOfMimemtypesIn(mzsRequest); - checkMimetypes(tnvzResult, typesInRequest); + checkMimetypes(tnvzResponse, typesInRequest); return tnvzResult.getSuccess().getIdentification(); } @@ -196,14 +196,15 @@ public class TnvzHelper { } } - private PersonResultType getResult(QueryPersonResponse tnvzResponse) { + private PersonResultType getFirstResult(QueryPersonResponse tnvzResponse) { return tnvzResponse.getQueryResultList().getQueryResult().get(0); } - private void checkMimetypes(PersonResultType tnvzResult, Set<String> typesInRequest) { - var mismatchedTypes = findMimeTypeMismatches(tnvzResult, typesInRequest); + private void checkMimetypes(QueryPersonResponse tnvzResponse, Set<String> typesInRequest) { + + var mismatchedTypes = findMimeTypeMismatches(tnvzResponse, typesInRequest); if (!mismatchedTypes.isEmpty()) { - var acceptedTypesString = join(",", getAcceptedTypes(tnvzResult)); + var acceptedTypesString = join(",", getAcceptedTypes(tnvzResponse)); var mismatchedTypesString = join(",", mismatchedTypes); var message = String.format(MIMETYPE_MISSMATCH_ERROR_MSG, mismatchedTypesString, acceptedTypesString); var code = MoaZSException.ERROR_MZS_MIMETYPE_MISSMATCH; @@ -211,10 +212,11 @@ public class TnvzHelper { } } - private Collection<String> findMimeTypeMismatches(PersonResultType result, Set<String> typesInRequest) { - var acceptedTypes = getAcceptedTypes(result); + private Collection<String> findMimeTypeMismatches(QueryPersonResponse response, Set<String> typesInRequest) { + var acceptedTypes = getAcceptedTypes(response); - if (acceptedTypes.contains("*/*")) { + var result = getFirstResult(response); + if (result.getSuccess().getAllStandardMimeTypes() != null) { return List.of(); } @@ -224,8 +226,18 @@ public class TnvzHelper { return typesInRequestCopy; } - private List<String> getAcceptedTypes(PersonResultType result) { - return result.getSuccess().getMimeTypeList().getMimeType(); + private Set<String> getAcceptedTypes(QueryPersonResponse response) { + + Set<String> union = new HashSet<>(); + var standardTypes = response.getStandardMimeTypeList().getMimeType(); + union.addAll(standardTypes); + + var acceptedTypeList = getFirstResult(response).getSuccess().getMimeTypeList(); + if(acceptedTypeList != null) { + union.addAll(acceptedTypeList.getMimeType()); + } + + return union; } |