It should not be necessary to create a Connect object in order to determine the version of the libvirt library. Introduce Library.getVersion which returns this information. Deprecate Connect.getLibVirVersion but keep it for backwards compat. Signed-off-by: Claudio Bley <cbley@xxxxxxxxxx> --- src/main/java/org/libvirt/Connect.java | 5 +++-- src/main/java/org/libvirt/Library.java | 15 ++++++++++++++- src/test/java/org/libvirt/TestJavaBindings.java | 3 +-- src/test/java/org/libvirt/TestLibvirtGlobals.java | 4 ++++ 4 files changed, 22 insertions(+), 5 deletions(-) diff --git a/src/main/java/org/libvirt/Connect.java b/src/main/java/org/libvirt/Connect.java index 4ab61b3..72f60f1 100644 --- a/src/main/java/org/libvirt/Connect.java +++ b/src/main/java/org/libvirt/Connect.java @@ -1007,11 +1007,12 @@ public class Connect { * * @return major * 1,000,000 + minor * 1,000 + release * @throws LibvirtException + * @deprecated use {@link Library#getVersion} instead */ + @Deprecated public long getLibVirVersion() throws LibvirtException { LongByReference libVer = new LongByReference(); - LongByReference typeVer = new LongByReference(); - processError(libvirt.virGetVersion(libVer, null, typeVer)); + processError(libvirt.virGetVersion(libVer, null, null)); return libVer.getValue(); } diff --git a/src/main/java/org/libvirt/Library.java b/src/main/java/org/libvirt/Library.java index 81df223..992e29d 100644 --- a/src/main/java/org/libvirt/Library.java +++ b/src/main/java/org/libvirt/Library.java @@ -5,6 +5,7 @@ import static org.libvirt.ErrorHandler.processError; import com.sun.jna.Native; import com.sun.jna.Pointer; +import com.sun.jna.ptr.LongByReference; import com.sun.jna.ptr.PointerByReference; import java.util.concurrent.atomic.AtomicBoolean; @@ -18,7 +19,7 @@ import java.util.concurrent.atomic.AtomicBoolean; * Additionally, this class contains internal methods to ease * implementing the public API. */ -final class Library { +public final class Library { private static AtomicBoolean runLoop = new AtomicBoolean(); final static Libvirt libvirt; @@ -40,6 +41,18 @@ final class Library { private Library() {} /** + * Returns the version of the native libvirt library. + * + * @return major * 1,000,000 + minor * 1,000 + release + * @throws LibvirtException + */ + public static long getVersion() throws LibvirtException { + LongByReference libVer = new LongByReference(); + processError(libvirt.virGetVersion(libVer, null, null)); + return libVer.getValue(); + } + + /** * Free memory pointed to by ptr. */ static void free(Pointer ptr) { diff --git a/src/test/java/org/libvirt/TestJavaBindings.java b/src/test/java/org/libvirt/TestJavaBindings.java index 24d850a..86a1f53 100644 --- a/src/test/java/org/libvirt/TestJavaBindings.java +++ b/src/test/java/org/libvirt/TestJavaBindings.java @@ -56,7 +56,6 @@ public final class TestJavaBindings extends TestCase { assertEquals("conn.getMaxVcpus(xen)", 32, conn.getMaxVcpus("xen")); assertNotNull("conn.getHostName()", conn.getHostName()); assertNotNull("conn.getCapabilities()", conn.getCapabilities()); - assertTrue("conn.getLibVirVersion()", conn.getLibVirVersion() > 6000); assertTrue("conn.connectionVersion()", Connect.connectionVersion(conn) > 6000); assertEquals("conn.getVersion()", 2, conn.getVersion()); assertTrue("conn.isAlive", conn.isAlive()); @@ -311,7 +310,7 @@ public final class TestJavaBindings extends TestCase { } public void testDomainScreenshot() throws Exception { - long version = conn.getLibVirVersion(); + long version = Library.getVersion(); // virDomainScreenshot works since version 1.0.5 on test:// // connections diff --git a/src/test/java/org/libvirt/TestLibvirtGlobals.java b/src/test/java/org/libvirt/TestLibvirtGlobals.java index b2b0d9f..ab36fb9 100644 --- a/src/test/java/org/libvirt/TestLibvirtGlobals.java +++ b/src/test/java/org/libvirt/TestLibvirtGlobals.java @@ -18,4 +18,8 @@ public class TestLibvirtGlobals extends TestCase { } assertTrue("We should have caught an error", cb.error); } + + public void testLibrary() throws Exception { + assertTrue("Library.getVersion() > 6000", Library.getVersion() > 6000); + } } -- 1.7.9.5 -- libvir-list mailing list libvir-list@xxxxxxxxxx https://www.redhat.com/mailman/listinfo/libvir-list