diff --git a/gradle.properties b/gradle.properties index 8248dd7..d5e9c70 100644 --- a/gradle.properties +++ b/gradle.properties @@ -1,5 +1,5 @@ group = org.xbib name = z3950 -version = 5.1.0 +version = 5.1.1 org.gradle.warning.mode = ALL diff --git a/z3950-client-jdk/src/main/java/org/xbib/z3950/client/jdk/JDKZClient.java b/z3950-client-jdk/src/main/java/org/xbib/z3950/client/jdk/JDKZClient.java index 962ac1a..63f8f9b 100644 --- a/z3950-client-jdk/src/main/java/org/xbib/z3950/client/jdk/JDKZClient.java +++ b/z3950-client-jdk/src/main/java/org/xbib/z3950/client/jdk/JDKZClient.java @@ -100,10 +100,6 @@ public class JDKZClient implements Client, Closeable { // Z39.50 present bails out when offset = 0 offset = 1; } - if (length > searchOperation.getCount()) { - // avoid condition 13 "Present request out-of-range" - length = searchOperation.getCount(); - } present.execute(offset, length, searchOperation.getCount(), searchListener, recordListener); } } diff --git a/z3950-common/src/main/java/org/xbib/z3950/common/operations/PresentOperation.java b/z3950-common/src/main/java/org/xbib/z3950/common/operations/PresentOperation.java index 73235fe..7927492 100644 --- a/z3950-common/src/main/java/org/xbib/z3950/common/operations/PresentOperation.java +++ b/z3950-common/src/main/java/org/xbib/z3950/common/operations/PresentOperation.java @@ -62,7 +62,11 @@ public class PresentOperation extends AbstractOperation total) { + numberOfRecordsRequested = total - offset + 1; + } + presentRequest.numberOfRecordsRequested = new ASN1Integer(numberOfRecordsRequested); if (elementSetName != null) { presentRequest.recordComposition = new PresentRequestRecordComposition(); presentRequest.recordComposition.simple = new ElementSetNames(); @@ -76,7 +80,7 @@ public class PresentOperation extends AbstractOperation { message = "Some records were not returned (request was terminated by access control)"; return new NoRecordsReturnedException(message, status); - case 2: + } + case 2 -> { message = "Some records were not returned (message size is too small)"; return new MessageSizeTooSmallException(message, status, nReturned); - case 3: + } + case 3 -> { message = "Some records were not returned (request was terminated by control, at origin request)"; return new RequestTerminatedByAccessControlException(message, status, nReturned); - case 4: + } + case 4 -> { message = "Some records were not returned (request was terminated by control, by the target)"; return new RequestTerminatedException(message, status, nReturned); - case 5: + } + case 5 -> { return new NoRecordsReturnedException(response.toString(), status); + } } return new ZException(response.toString(), status, nReturned); }