X-Git-Url: http://lists.indexdata.dk/cgi-bin?a=blobdiff_plain;f=src%2Fmain%2Fjava%2Forg%2Fyaz4j%2FRecord.java;h=3770132c884f4020accc72734c4138ea69414941;hb=95873c80a22cbcb609b5a0260d624359500dcf19;hp=b1a93caa246f655acf09bb0f036e20f60d939297;hpb=2def7bc64faa1dfb9f3393f2c2ef0bca0c6265e1;p=yaz4j-moved-to-github.git diff --git a/src/main/java/org/yaz4j/Record.java b/src/main/java/org/yaz4j/Record.java index b1a93ca..3770132 100644 --- a/src/main/java/org/yaz4j/Record.java +++ b/src/main/java/org/yaz4j/Record.java @@ -4,19 +4,22 @@ import org.yaz4j.jni.SWIGTYPE_p_ZOOM_record_p; import org.yaz4j.jni.SWIGTYPE_p_int; import org.yaz4j.jni.yaz4jlib; -public class Record { - - private SWIGTYPE_p_ZOOM_record_p record = null; - private ResultSet resultSet = null; +public class Record implements Cloneable { + private SWIGTYPE_p_ZOOM_record_p record; + private ResultSet rset; private boolean disposed = false; - Record(SWIGTYPE_p_ZOOM_record_p record, ResultSet resultSet) { - this.resultSet = resultSet; + Record(SWIGTYPE_p_ZOOM_record_p record, ResultSet rset) { + this.record = record; + this.rset = rset; + } + + protected Record(SWIGTYPE_p_ZOOM_record_p record) { this.record = record; } public void finalize() { - dispose(); + _dispose(); } public byte[] get(String type) { @@ -40,9 +43,17 @@ public class Record { return new String(get("database")); } - public void dispose() { + public Object clone() { + SWIGTYPE_p_ZOOM_record_p clone = yaz4jlib.ZOOM_record_clone(record); + return new Record(clone); + } + + void _dispose() { if (!disposed) { - resultSet = null; + //was cloned, need to dealloc? + if (rset == null) + yaz4jlib.ZOOM_record_destroy(record); + rset = null; record = null; disposed = true; }