update to netty 4.1.89, avoid class casting execption in case of broken PQF
This commit is contained in:
parent
4565e8834f
commit
ba048d872a
5 changed files with 58 additions and 6 deletions
|
@ -1,5 +1,5 @@
|
||||||
group = org.xbib
|
group = org.xbib
|
||||||
name = z3950
|
name = z3950
|
||||||
version = 5.0.0
|
version = 5.0.1
|
||||||
|
|
||||||
org.gradle.warning.mode = ALL
|
org.gradle.warning.mode = ALL
|
||||||
|
|
|
@ -5,7 +5,7 @@ dependencyResolutionManagement {
|
||||||
version('groovy', '4.0.7')
|
version('groovy', '4.0.7')
|
||||||
version('junit', '5.9.2')
|
version('junit', '5.9.2')
|
||||||
version('junit4', '4.13.2')
|
version('junit4', '4.13.2')
|
||||||
version('netty', '4.1.87.Final')
|
version('netty', '4.1.89.Final')
|
||||||
library('junit-jupiter-api', 'org.junit.jupiter', 'junit-jupiter-api').versionRef('junit')
|
library('junit-jupiter-api', 'org.junit.jupiter', 'junit-jupiter-api').versionRef('junit')
|
||||||
library('junit-jupiter-params', 'org.junit.jupiter', 'junit-jupiter-params').versionRef('junit')
|
library('junit-jupiter-params', 'org.junit.jupiter', 'junit-jupiter-params').versionRef('junit')
|
||||||
library('junit-jupiter-engine', 'org.junit.jupiter', 'junit-jupiter-engine').versionRef('junit')
|
library('junit-jupiter-engine', 'org.junit.jupiter', 'junit-jupiter-engine').versionRef('junit')
|
||||||
|
|
|
@ -0,0 +1,46 @@
|
||||||
|
package org.xbib.z3950.client.jdk.test;
|
||||||
|
|
||||||
|
import org.junit.jupiter.api.Test;
|
||||||
|
import org.xbib.z3950.client.jdk.JDKZClient;
|
||||||
|
|
||||||
|
import java.nio.charset.StandardCharsets;
|
||||||
|
import java.util.Collections;
|
||||||
|
import java.util.logging.Level;
|
||||||
|
import java.util.logging.Logger;
|
||||||
|
|
||||||
|
class LVIZClientTest {
|
||||||
|
|
||||||
|
private static final Logger logger = Logger.getLogger(LVIZClientTest.class.getName());
|
||||||
|
|
||||||
|
@Test
|
||||||
|
void testLVI() {
|
||||||
|
String query = "@attr 1=4 linux";
|
||||||
|
int from = 1;
|
||||||
|
int size = 10;
|
||||||
|
try (JDKZClient client = newZClient()) {
|
||||||
|
logger.log(Level.INFO, "executing PQF " + query);
|
||||||
|
int count = client.searchPQF(query, from, size,
|
||||||
|
(status, total, returned, elapsedMillis) ->
|
||||||
|
logger.log(Level.INFO, "total results = " + total + " millis = " + elapsedMillis),
|
||||||
|
record -> logger.log(Level.INFO, "record = " + record.toString(StandardCharsets.UTF_8)),
|
||||||
|
() -> logger.log(Level.WARNING, "timeout"));
|
||||||
|
logger.log(Level.INFO, "record count = " + count);
|
||||||
|
} catch (Exception e) {
|
||||||
|
logger.log(Level.SEVERE, e.getMessage(), e);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
private JDKZClient newZClient() {
|
||||||
|
JDKZClient.Builder builder = JDKZClient.builder();
|
||||||
|
builder.setHost("sru.hbz-nrw.de");
|
||||||
|
builder.setPort(210);
|
||||||
|
builder.setDatabases(Collections.singletonList("LVI"));
|
||||||
|
builder.setElementSetName(null);
|
||||||
|
builder.setPreferredRecordSyntax("xml");
|
||||||
|
builder.setResultSetName("default");
|
||||||
|
builder.setEncoding("utf-8");
|
||||||
|
builder.setFormat("Marc21");
|
||||||
|
builder.setType("Bibliographic");
|
||||||
|
return builder.build();
|
||||||
|
}
|
||||||
|
}
|
|
@ -17,12 +17,16 @@ import org.xbib.z3950.common.v3.RPNStructure;
|
||||||
import org.xbib.z3950.common.v3.RPNStructureRpnRpnOp;
|
import org.xbib.z3950.common.v3.RPNStructureRpnRpnOp;
|
||||||
|
|
||||||
import java.util.Stack;
|
import java.util.Stack;
|
||||||
|
import java.util.logging.Level;
|
||||||
|
import java.util.logging.Logger;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* PQF abstract syntax tree.
|
* PQF abstract syntax tree.
|
||||||
*/
|
*/
|
||||||
public class PQFRPNGenerator implements Visitor {
|
public class PQFRPNGenerator implements Visitor {
|
||||||
|
|
||||||
|
private static final Logger logger = Logger.getLogger(PQFRPNGenerator.class.getName());
|
||||||
|
|
||||||
private final Stack<ASN1Any> result;
|
private final Stack<ASN1Any> result;
|
||||||
|
|
||||||
private RPNQuery rpnQuery;
|
private RPNQuery rpnQuery;
|
||||||
|
@ -39,7 +43,12 @@ public class PQFRPNGenerator implements Visitor {
|
||||||
public void visit(PQF pqf) {
|
public void visit(PQF pqf) {
|
||||||
if (!result.isEmpty()) {
|
if (!result.isEmpty()) {
|
||||||
this.rpnQuery = new RPNQuery();
|
this.rpnQuery = new RPNQuery();
|
||||||
rpnQuery.rpn = (RPNStructure) result.pop();
|
ASN1Any any = result.pop();
|
||||||
|
if (any instanceof RPNStructure) {
|
||||||
|
rpnQuery.rpn = (RPNStructure) any;
|
||||||
|
} else if (any instanceof ASN1OctetString) {
|
||||||
|
logger.log(Level.INFO, "found ASN1OctetString = " + ((ASN1OctetString) any).get());
|
||||||
|
}
|
||||||
if (pqf.getAttrSet() == null) {
|
if (pqf.getAttrSet() == null) {
|
||||||
// Z39.50 BIB-1: urn:oid:1.2.840.10003.3.1
|
// Z39.50 BIB-1: urn:oid:1.2.840.10003.3.1
|
||||||
rpnQuery.attributeSetId = new AttributeSetId();
|
rpnQuery.attributeSetId = new AttributeSetId();
|
||||||
|
|
|
@ -13,9 +13,6 @@ import java.util.logging.Logger;
|
||||||
|
|
||||||
import static org.junit.jupiter.api.Assertions.assertEquals;
|
import static org.junit.jupiter.api.Assertions.assertEquals;
|
||||||
|
|
||||||
/**
|
|
||||||
*
|
|
||||||
*/
|
|
||||||
class PQFParserTest {
|
class PQFParserTest {
|
||||||
|
|
||||||
private static final Logger logger = Logger.getLogger(PQFParserTest.class.getName());
|
private static final Logger logger = Logger.getLogger(PQFParserTest.class.getName());
|
||||||
|
|
Loading…
Reference in a new issue