X-Git-Url: http://git.indexdata.com/?a=blobdiff_plain;f=src%2Fmain%2Fjava%2Forg%2Fyaz4j%2FConnection.java;h=6a173f9a4598f37090d6affef58f9fa2bfee60b5;hb=HEAD;hp=a47ad3a9ca51a34db7374cb0a4ef3d280efdf88e;hpb=9d6d4f4d56764fcac2603fe623bdf90b3ac33ba8;p=yaz4j-moved-to-github.git diff --git a/src/main/java/org/yaz4j/Connection.java b/src/main/java/org/yaz4j/Connection.java index a47ad3a..6a173f9 100644 --- a/src/main/java/org/yaz4j/Connection.java +++ b/src/main/java/org/yaz4j/Connection.java @@ -1,5 +1,6 @@ package org.yaz4j; +import java.io.Closeable; import org.yaz4j.exception.ZoomException; import org.yaz4j.jni.SWIGTYPE_p_ZOOM_connection_p; import org.yaz4j.jni.SWIGTYPE_p_ZOOM_query_p; @@ -35,10 +36,9 @@ import org.yaz4j.jni.yaz4jlib; * @see YAZ ZOOM Connection * @author jakub */ -public class Connection { - - private String host; - private int port; +public class Connection implements Closeable { + private final String host; + private final int port; protected SWIGTYPE_p_ZOOM_connection_p zoomConnection; //connection is initially closed protected boolean closed = true; @@ -63,6 +63,8 @@ public class Connection { * @param port port of the server */ public Connection(String host, int port) { + if (host == null) + throw new NullPointerException("host cannot be null"); this.host = host; this.port = port; zoomConnection = yaz4jlib.ZOOM_connection_create(null); @@ -86,9 +88,12 @@ public class Connection { @Deprecated public ResultSet search(String query, QueryType queryType) throws ZoomException { - if (closed) { + if (query == null) + throw new NullPointerException("query cannot be null"); + if (queryType == null) + throw new NullPointerException("queryType cannot be null"); + if (closed) throw new IllegalStateException("Connection is closed."); - } SWIGTYPE_p_ZOOM_query_p yazQuery = null; if (queryType == QueryType.CQLQuery) { yazQuery = yaz4jlib.ZOOM_query_create(); @@ -119,9 +124,10 @@ public class Connection { * @throws ZoomException protocol or network-level error */ public ResultSet search(Query query) throws ZoomException { - if (closed) { + if (query == null) + throw new NullPointerException("query cannot be null"); + if (closed) throw new IllegalStateException("Connection is closed."); - } SWIGTYPE_p_ZOOM_resultset_p yazResultSet = yaz4jlib.ZOOM_connection_search( zoomConnection, query.query); ZoomException err = ExceptionUtil.getError(zoomConnection, host, @@ -143,9 +149,10 @@ public class Connection { */ @Deprecated public ScanSet scan(String query) throws ZoomException { - if (closed) { + if (query == null) + throw new NullPointerException("query cannot be null"); + if (closed) throw new IllegalStateException("Connection is closed."); - } SWIGTYPE_p_ZOOM_scanset_p yazScanSet = yaz4jlib.ZOOM_connection_scan( zoomConnection, query); ZoomException err = ExceptionUtil.getError(zoomConnection, host, port); @@ -166,9 +173,10 @@ public class Connection { * @throws ZoomException a protocol or network-level error */ public ScanSet scan(Query query) throws ZoomException { - if (closed) { + if (query == null) + throw new NullPointerException("query cannot be null"); + if (closed) throw new IllegalStateException("Connection is closed."); - } SWIGTYPE_p_ZOOM_scanset_p yazScanSet = yaz4jlib.ZOOM_connection_scan1( zoomConnection, query.query); ZoomException err = ExceptionUtil.getError(zoomConnection, host, port); @@ -196,10 +204,21 @@ public class Connection { /** * Closes the connection. */ + @Override public void close() { yaz4jlib.ZOOM_connection_close(zoomConnection); closed = true; } + + /** + * Return exception type from current connection + * + * @return null if no error + */ + ZoomException getZoomException() { + ZoomException err = ExceptionUtil.getError(zoomConnection, host, port); + return err; + } /** * Write option with a given name. @@ -208,6 +227,8 @@ public class Connection { * @return connection (self) for chainability */ public Connection option(String name, String value) { + if (name == null) + throw new NullPointerException("option name cannot be null"); yaz4jlib.ZOOM_connection_option_set(zoomConnection, name, value); return this; } @@ -218,6 +239,8 @@ public class Connection { * @return option value */ public String option(String name) { + if (name == null) + throw new NullPointerException("option name cannot be null"); return yaz4jlib.ZOOM_connection_option_get(zoomConnection, name); }