public void delete() { if (name_buffer != null) { name_buffer.delete(); name_buffer = null; } if (globalRef != 0) { NativeDB.DBJNI.DeleteGlobalRef(globalRef); globalRef = 0; } }
public NativeComparator() { super(ComparatorJNI.create()); try { name_buffer = NativeBuffer.create(name()); globalRef = NativeDB.DBJNI.NewGlobalRef(this); if (globalRef == 0) { throw new RuntimeException("jni call failed: NewGlobalRef"); } ComparatorJNI struct = new ComparatorJNI(); struct.compare_method = NativeDB.DBJNI.GetMethodID(this.getClass(), "compare", "(JJ)I"); if (struct.compare_method == 0) { throw new RuntimeException("jni call failed: GetMethodID"); } struct.target = globalRef; struct.name = name_buffer.pointer(); ComparatorJNI.memmove(self, struct, ComparatorJNI.SIZEOF); } catch (RuntimeException e) { delete(); throw e; } }