---
 README                           |   12 ++--
 src/org/libvirt/Connect.java     |  102 ++++++++++++++++++++++++++++----------
 src/org/libvirt/Network.java     |   65 +++++++++++-------------
 src/org/libvirt/jna/Libvirt.java |   23 ++++++++-
 src/test.java                    |   58 +++++++++++----------
 5 files changed, 164 insertions(+), 96 deletions(-)

diff --git a/README b/README
index 4fd68be..655090f 100644
--- a/README
+++ b/README
@@ -4,7 +4,7 @@ To use it, your program needs to access both the java library 
(.jar file),
 and the JNI library (.so file)
 
 1. You must have the libvirt.jar file in your classpath.
-By default the installs it to /usr/share/java/libvirt-0.2.1.jar
+By default the installs it to /usr/local/share/java/libvirt-0.2.1.jar
 
 2. You must have the libvirt_jni.so accessible by the dynamic linker.
 By default the RPM installs it to /usr/lib or /usr/lib64, so the linker will
@@ -13,16 +13,16 @@ the LD_LIBRARY_PATH variable to the directory containing 
the libvirt_jni.so
 file.
 
 There is a rudimentary functional test program that the libvirt-java-devel
-installs put it into /usr/share/doc/libvirt-java-devel-0.2.1/test.java
+installs put it into /usr/local/share/doc/libvirt-java-devel-0.2.1/test.java
 
 To run it, first copy the test.java file to writeable directory
-cp /usr/share/doc/libvirt-java-devel-0.2.1/test.java ~
+cp /usr/local/share/doc/libvirt-java-devel-0.2.1/test.java ~
 
 Compile the java file to a class:
-javac -classpath /usr/share/java/libvirt-0.2.1.jar test.java
+javac -classpath /usr/local/share/java/libvirt-0.2.1.jar test.java
 
 Then run the program:
-java -classpath .:/usr/share/java/libvirt-0.2.1.jar test
+java -classpath .:/usr/local/share/java/libvirt-0.2.1.jar test
 
-There is full javadoc for the API in /usr/share/javadoc/libvirt-java-0.2.1/
+There is full javadoc for the API in 
/usr/local/share/javadoc/libvirt-java-0.2.1/
 
diff --git a/src/org/libvirt/Connect.java b/src/org/libvirt/Connect.java
index bc560d0..b559b52 100644
--- a/src/org/libvirt/Connect.java
+++ b/src/org/libvirt/Connect.java
@@ -347,7 +347,12 @@ public class Connect {
         */
        public Network networkLookupByName(String name)
        throws LibvirtException {
-               return new Network(this, libvirt.virNetworkLookupByName(VCP, 
name));
+           Network returnValue = null ;
+           Pointer ptr = libvirt.virNetworkLookupByName(VCP, name) ;
+           if (ptr != null) {
+               returnValue = new Network(this, ptr) ;
+           }
+               return returnValue ;
        }
 
 
@@ -365,7 +370,12 @@ public class Connect {
            for (int i : UUID) {
                uuidString.append(i) ;
            }
-               return new Network(this, libvirt.virNetworkLookupByUUID(VCP, 
uuidString.toString()));
+        Network returnValue = null ;
+        Pointer ptr = libvirt.virNetworkLookupByUUID(VCP, 
uuidString.toString()) ;
+        if (ptr != null) {
+            returnValue = new Network(this, ptr) ;
+        }
+        return returnValue ;       
        }
 
        
@@ -378,12 +388,14 @@ public class Connect {
         */
        public Network networkLookupByUUIDString(String UUID)
        throws LibvirtException {
-        return new Network(this, libvirt.virNetworkLookupByUUIDString(VCP, 
UUID));
+        Network returnValue = null ;
+        Pointer ptr = libvirt.virNetworkLookupByUUIDString(VCP, UUID);
+        if (ptr != null) {
+            returnValue = new Network(this, ptr) ;
+        }
+        return returnValue ;              
        }
 
-//     private native long _virNetworkLookupByUUIDString(long VCP, String UUID)
-//     throws LibvirtException;
-
 
        /**
         * Creates and starts a new virtual network.
@@ -396,7 +408,12 @@ public class Connect {
         */
        public Network networkCreateXML(String xmlDesc)
        throws LibvirtException {
-               return new Network(this, libvirt.virNetworkCreateXML(VCP, 
xmlDesc));
+        Network returnValue = null ;
+        Pointer ptr = libvirt.virNetworkCreateXML(VCP, xmlDesc) ;
+        if (ptr != null) {
+            returnValue = new Network(this, ptr) ;
+        }
+        return returnValue ;           
        }
 
 
@@ -411,7 +428,12 @@ public class Connect {
         */
        public Network networkDefineXML(String xmlDesc)
        throws LibvirtException {
-        return new Network(this, libvirt.virNetworkDefineXML(VCP, xmlDesc));
+        Network returnValue = null ;
+        Pointer ptr = libvirt.virNetworkDefineXML(VCP, xmlDesc) ;
+        if (ptr != null) {
+            returnValue = new Network(this, ptr) ;
+        }
+        return returnValue ;                
        }
 
        
@@ -423,12 +445,14 @@ public class Connect {
         * @throws LibvirtException
         */
        public Domain domainLookupByID(int id) throws LibvirtException {
-           throw new RuntimeException("Not Implemented") ;         
-//             return new Domain(this, _virDomainLookupByID(VCP, id));
+        Domain returnValue = null ;
+        Pointer ptr = libvirt.virDomainLookupByID(VCP, id) ;
+        if (ptr != null) {
+            returnValue = new Domain(this, ptr) ;
+        }
+        return returnValue ;      
        }
 
-//     private native long _virDomainLookupByID(long VCP, int id)
-//     throws LibvirtException;
 
        /**
         * Looks up a domain based on its name.
@@ -438,13 +462,14 @@ public class Connect {
         * @throws LibvirtException
         */
        public Domain domainLookupByName(String name) throws LibvirtException {
-           throw new RuntimeException("Not Implemented") ;         
-//             return new Domain(this, _virDomainLookupByName(VCP, name));
+        Domain returnValue = null ;
+        Pointer ptr = libvirt.virDomainLookupByName(VCP, name) ;
+        if (ptr != null) {
+            returnValue = new Domain(this, ptr) ;
+        }
+        return returnValue ;     
        }
 
-//     private native long _virDomainLookupByName(long VCP, String name)
-//     throws LibvirtException;
-
 
        /**
         * Looks up a domain  based on its UUID in array form.
@@ -455,13 +480,18 @@ public class Connect {
         * @throws LibvirtException
         */
        public Domain domainLookupByUUID(int[] UUID) throws LibvirtException {
-           throw new RuntimeException("Not Implemented") ;         
-//             return new Domain(this, _virDomainLookupByUUID(VCP, UUID));
+        StringBuilder uuidString = new StringBuilder() ;
+        for (int i : UUID) {
+            uuidString.append(i) ;
+        }
+        Domain returnValue = null ;
+        Pointer ptr = libvirt.virDomainLookupByUUID(VCP, 
uuidString.toString()) ;
+        if (ptr != null) {
+            returnValue = new Domain(this, ptr) ;
+        }
+        return returnValue ;
        }
 
-//     private native long _virDomainLookupByUUID(long VCP, int[] UUID)
-//     throws LibvirtException;
-
        /**
         * Looks up a domain  based on its UUID in String form.
         *
@@ -471,7 +501,12 @@ public class Connect {
         */
        public Domain domainLookupByUUIDString(String UUID)
        throws LibvirtException {
-               return new Domain(this, 
libvirt.virDomainLookupByUUIDString(VCP, UUID));
+        Domain returnValue = null ;
+        Pointer ptr = libvirt.virDomainLookupByUUIDString(VCP, UUID) ;
+        if (ptr != null) {
+            returnValue = new Domain(this, ptr) ;
+        }
+        return returnValue ;       
        }
 
 
@@ -488,7 +523,12 @@ public class Connect {
         */
        public Domain domainCreateLinux(String xmlDesc, int flags)
        throws LibvirtException {
-        return new Domain(this, libvirt.virDomainCreateLinux(VCP, xmlDesc, 
flags));
+        Domain returnValue = null ;
+        Pointer ptr = libvirt.virDomainCreateLinux(VCP, xmlDesc, flags) ;
+        if (ptr != null) {
+            returnValue = new Domain(this, ptr) ;
+        }
+        return returnValue ;               
        }
 
 
@@ -501,7 +541,12 @@ public class Connect {
         * @see <a href="http://libvirt.org/format.html#Normal1"; > The XML 
format description </a>
         */
        public Domain domainDefineXML(String xmlDesc) throws LibvirtException {
-        return new Domain(this, libvirt.virDomainDefineXML(VCP, xmlDesc));
+        Domain returnValue = null ;
+        Pointer ptr = libvirt.virDomainDefineXML(VCP, xmlDesc) ;
+        if (ptr != null) {
+            returnValue = new Domain(this, ptr) ;
+        }
+        return returnValue ;       
        }
        
        
@@ -514,7 +559,12 @@ public class Connect {
      * @see <a href="http://libvirt.org/format.html#Normal1"; > The XML format 
description </a>
      */
     public Domain domainCreateXML(String xmlDesc, int flags) throws 
LibvirtException {
-        return new Domain(this, libvirt.virDomainCreateXML(VCP, xmlDesc, 
flags));
+        Domain returnValue = null ;
+        Pointer ptr = libvirt.virDomainCreateXML(VCP, xmlDesc, flags) ;
+        if (ptr != null) {
+            returnValue = new Domain(this, ptr) ;
+        }
+        return returnValue ;          
     }  
 
 
diff --git a/src/org/libvirt/Network.java b/src/org/libvirt/Network.java
index a194ca7..063345c 100644
--- a/src/org/libvirt/Network.java
+++ b/src/org/libvirt/Network.java
@@ -3,6 +3,8 @@ package org.libvirt;
 import org.libvirt.jna.Libvirt;
 
 import com.sun.jna.Pointer;
+import com.sun.jna.ptr.IntByReference;
+import com.sun.jna.ptr.PointerByReference;
 
 public class Network {
 
@@ -47,11 +49,9 @@ public class Network {
         * @throws LibvirtException
         */
        public String getXMLDesc(int flags) throws LibvirtException{
-//             return _getXMLDesc(VNP, flags);
-        throw new RuntimeException("Not Implemented") ;            
+           return libvirt.virNetworkGetXMLDesc(VNP, flags) ; 
        }
 
-//     private native String _getXMLDesc(long VNP, int flags) throws 
LibvirtException;
 
        /**
         * Provides a boolean value indicating whether this network is 
configured to be automatically started when the host machine boots.
@@ -60,11 +60,11 @@ public class Network {
         * @throws LibvirtException
         */
        public boolean getAutostart() throws LibvirtException{
-//             return _getAutostart(VNP);
-        throw new RuntimeException("Not Implemented") ;            
+           IntByReference autoStart = new IntByReference() ;
+           libvirt.virNetworkGetAutostart(VNP, autoStart) ;
+           return autoStart.getValue() != 0 ? true : false ;
        }
 
-//     private native boolean _getAutostart(long VNP) throws LibvirtException;
 
 
        /**
@@ -74,11 +74,10 @@ public class Network {
         * @throws LibvirtException
         */
        public void setAutostart(boolean autostart) throws LibvirtException{
-//             _setAutostart(VNP, autostart);
-        throw new RuntimeException("Not Implemented") ;                
+           int autoValue = autostart ? 1 : 0 ;
+        libvirt.virNetworkSetAutostart(VNP, autoValue) ;       
        }
 
-//     private native int _setAutostart(long VNP, boolean autostart) throws 
LibvirtException;
 
        /**
         * Provides a bridge interface name to which a domain may connect a 
network interface in order to join this network.
@@ -87,11 +86,8 @@ public class Network {
         * @throws LibvirtException
         */
        public String getBridgeName() throws LibvirtException{
-//             return _getBridgeName(VNP);
-        throw new RuntimeException("Not Implemented") ;                
+           return libvirt.virNetworkGetBridgeName(VNP) ;       
        }
-
-//     private native String _getBridgeName(long VNP) throws LibvirtException;
        
 
 
@@ -115,7 +111,6 @@ public class Network {
                return libvirt.virNetworkGetName(VNP);   
        }
 
-//     private native String _getName(long VNP) throws LibvirtException;
 
        /**
         * Gets the UUID for this network
@@ -125,12 +120,18 @@ public class Network {
         * @see <a href="http://www.ietf.org/rfc/rfc4122.txt";>rfc4122</a>
         */
        public int[] getUUID() throws LibvirtException{
-//             return _getUUID(VNP);
-        throw new RuntimeException("Not Implemented") ;            
+           byte[] bytes = new byte[Libvirt.VIR_UUID_BUFLEN] ;
+           int success = libvirt.virNetworkGetUUID(VNP, bytes) ;
+           int[] returnValue = new int[0] ; 
+           if (success == 0) {
+               returnValue = new int[Libvirt.VIR_UUID_BUFLEN] ;
+               for (int x = 0 ; x < Libvirt.VIR_UUID_BUFLEN ; x++) {
+                   returnValue[x] = (int) bytes[x] ;
+               }
+           }
+        return returnValue ;   
        }
 
-//     private native int[] _getUUID(long VNP) throws LibvirtException;
-
        /**
         * Gets the UUID for a network as string.
         *
@@ -139,11 +140,15 @@ public class Network {
         * @see <a href="http://www.ietf.org/rfc/rfc4122.txt";>rfc4122</a>
         */
        public String getUUIDString() throws LibvirtException{
-//             return _getUUIDString(VNP);
-        throw new RuntimeException("Not Implemented") ;            
+        byte[] bytes = new byte[Libvirt.VIR_UUID_STRING_BUFLEN] ;
+        int success = libvirt.virNetworkGetUUIDString(VNP, bytes) ;
+        String returnValue = null ; 
+        if (success == 0) {
+            returnValue = new String(bytes) ;
+        }
+        return returnValue ;               
        }
 
-//     private native String _getUUIDString(long VNP) throws LibvirtException;
 
        /**
         * Creates and starts this defined network.
@@ -152,11 +157,9 @@ public class Network {
         * @throws LibvirtException
         */
        public void create() throws LibvirtException{
-//             _create(VNP);
-              throw new RuntimeException("Not Implemented") ;
+           libvirt.virNetworkCreate(VNP) ;
        }
 
-//     private native int _create(long VNP) throws LibvirtException;
 
        /**
         * Destroy this network object.
@@ -167,11 +170,9 @@ public class Network {
         * @throws LibvirtException
         */
        public void destroy() throws LibvirtException{
-//             _destroy(VNP);
-              throw new RuntimeException("Not Implemented") ;
+        libvirt.virNetworkDestroy(VNP) ;
        }
 
-//     private native int _destroy(long VNP) throws LibvirtException;
 
        /**
         * Frees this network object.
@@ -181,12 +182,10 @@ public class Network {
         * @throws LibvirtException
         */
        public void free() throws LibvirtException{
-        throw new RuntimeException("Not Implemented") ;            
-//             _free(VNP);
-//             VNP=0;
+               libvirt.virNetworkFree(VNP) ;
+               VNP=null;
        }
 
-//     private native int _free(long VNP) throws LibvirtException;
 
        /**
         * Undefines this network but does not stop it if it is running
@@ -194,10 +193,8 @@ public class Network {
         * @throws LibvirtException
         */
        public void undefine() throws LibvirtException{
-        throw new RuntimeException("Not Implemented") ;            
-//             _undefine(VNP);
+        libvirt.virNetworkUndefine(VNP) ;
        }
 
-//     private native int _undefine(long VNP) throws LibvirtException;
 
 }
diff --git a/src/org/libvirt/jna/Libvirt.java b/src/org/libvirt/jna/Libvirt.java
index 1874d3e..30ab49d 100644
--- a/src/org/libvirt/jna/Libvirt.java
+++ b/src/org/libvirt/jna/Libvirt.java
@@ -6,6 +6,7 @@ import com.sun.jna.Library ;
 import com.sun.jna.Native;
 import com.sun.jna.Pointer;
 import com.sun.jna.Structure.ByReference;
+import com.sun.jna.ptr.IntByReference;
 import com.sun.jna.ptr.LongByReference;
 import com.sun.jna.ptr.PointerByReference;
 
@@ -13,6 +14,10 @@ public interface Libvirt extends Library
 {
     Libvirt INSTANCE = (Libvirt) Native.loadLibrary("libvirt", Libvirt.class) ;
     
+    // Constants we need
+    public static int VIR_UUID_BUFLEN = 16 ;
+    public static int VIR_UUID_STRING_BUFLEN = (36+1) ;    
+    
     //Callbacks 
     interface virErrorFunc extends Callback {
         void handleError(Pointer userData, virError error) throws Exception ;
@@ -50,17 +55,31 @@ public interface Libvirt extends Library
     public int virNodeGetInfo(Pointer virConnectPtr, virNodeInfo virNodeInfo) ;
     
     // Network functions
+    public int virNetworkCreate(Pointer virConnectPtr) ;    
     public Pointer virNetworkCreateXML(Pointer virConnectPtr, String xmlDesc) ;
     public Pointer virNetworkDefineXML(Pointer virConnectPtr, String xmlDesc) 
;  
-    public String virNetworkGetName(Pointer virNetorkPtr) ;
+    public int virNetworkDestroy(Pointer virConnectPtr) ;
+    public int virNetworkFree(Pointer virConnectPtr) ;        
+    public int virNetworkGetAutostart(Pointer virNetworkPtr, IntByReference 
value) ;   
+    public String virNetworkGetBridgeName(Pointer virNetworkPtr) ;
+    public String virNetworkGetName(Pointer virNetworkPtr) ;
+    public int virNetworkGetUUID(Pointer virNetworkPtr, byte[] uuidString) ;   
 
+    public int virNetworkGetUUIDString(Pointer virNetworkPtr, byte[] 
uuidString) ;
+    public String virNetworkGetXMLDesc(Pointer virNetworkPtr, int flags) ;     
     public Pointer virNetworkLookupByName(Pointer virConnectPtr, String name) ;
     public Pointer virNetworkLookupByUUIDString(Pointer virConnectPtr, String 
uuidstr) ;    
-    public Pointer virNetworkLookupByUUID(Pointer virConnectPtr, String 
uuidstr) ;        
+    public Pointer virNetworkLookupByUUID(Pointer virConnectPtr, String 
uuidstr) ;       
+    public int virNetworkSetAutostart(Pointer virConnectPtr, int autoStart) ;
+    public int virNetworkUndefine(Pointer virConnectPtr) ;       
     
     // Domain functions
     public Pointer virDomainCreateLinux(Pointer virConnectPtr, String xmlDesc, 
int flags) ;    
     public Pointer virDomainCreateXML(Pointer virConnectPtr, String xmlDesc, 
int flags) ;
     public Pointer virDomainDefineXML(Pointer virConnectPtr, String xmlDesc) ; 
      
+    public Pointer virDomainLookupByID(Pointer virConnectPtr, int id) ;
+    public Pointer virDomainLookupByName(Pointer virConnectPtr, String name) ; 
   
+    public Pointer virDomainLookupByUUID(Pointer virConnectPtr, String 
uuidstr) ;    
     public Pointer virDomainLookupByUUIDString(Pointer virConnectPtr, String 
uuidstr) ;
+      
 
 }
diff --git a/src/test.java b/src/test.java
index 2ca6a92..34d3518 100644
--- a/src/test.java
+++ b/src/test.java
@@ -2,6 +2,7 @@ import org.libvirt.*;
 
 public class test {
 
+    public static String FIXME = "<============== FIXME ================> " ;
        /**
         * @param args
         */
@@ -9,13 +10,13 @@ public class test {
                //Create the connection
                Connect conn=null;
                Network testNetwork=null;
-               
+
                //Need this for the lookup method testing, it's absolutely 
horrible in java, but let's be complete
                int UUID[] = {Integer.decode("0x00"), Integer.decode("0x4b"), 
Integer.decode("0x96"), Integer.decode("0xe1"), 
                                Integer.decode("0x2d"), Integer.decode("0x78"),
                                Integer.decode("0xc3"), Integer.decode("0x0f"),
                                Integer.decode("0x5a"), Integer.decode("0xa5"),
-                               Integer.decode("0xf0"), Integer.decode("0x3c"), 
Integer.decode("0x87"), Integer.decode("0xd2"), Integer.decode("0x1e"), 
Integer.decode("0x69")} ;
+                               Integer.decode("0xf0"), Integer.decode("0x3c"), 
Integer.decode("0x87"), Integer.decode("0xd2"), Integer.decode("0x1e"), 
Integer.decode("0x67")} ;
 
                //For testing the authentication
 //             ConnectAuth defaultAuth = new ConnectAuthDefault(); 
@@ -140,38 +141,39 @@ public class test {
                //Choose one, they should have the exact same effect
                    testNetwork = conn.networkLookupByName("deftest") ;
                    System.out.println("networkLookupByName: " + 
testNetwork.getName()) ;
-                   
+            System.out.println(FIXME) ;
+            testNetwork=conn.networkLookupByUUID(UUID);
+//            System.out.println("networkLookupByUUID: " + 
testNetwork.getName()) ;     
             testNetwork = 
conn.networkLookupByUUIDString("004b96e1-2d78-c30f-5aa5-f03c87d21e67");
             System.out.println("networkLookupByUUIDString: " + 
testNetwork.getName()) ;            
-                       testNetwork=conn.networkLookupByUUID(UUID);
-            System.out.println("networkLookupByUUID: " + 
testNetwork.getName()) ;                     
-//                     
-//                     //Exercise the getter methods on the default network
-//                     System.out.println("virNetworkGetXMLDesc:" + 
testNetwork.getXMLDesc(0));
-//                     System.out.println("virNetworkLookupByName:" + 
testNetwork);
-//                     System.out.println("virNetworkGetAutostart:" + 
testNetwork.getAutostart());
-//                     System.out.println("virNetworkGetBridgeName:" + 
testNetwork.getBridgeName());
-//                     System.out.println("virNetworkGetName:" + 
testNetwork.getName());
-//                     System.out.println("virNetworkGetUUID:" + 
testNetwork.getUUID() + " ");
-//                     for(int c: testNetwork.getUUID())
-//                             System.out.print(Integer.toHexString(c));
-//                     System.out.println();
-//                     System.out.println("virNetworkGetName:" + 
testNetwork.getUUIDString());
-//                     
-//                     //Destroy and create the network
-//                     System.out.println("virNetworkDestroy:"); 
testNetwork.destroy();
-//                     System.out.println("virNetworkCreate:"); 
testNetwork.create();
+                
+                       //Exercise the getter methods on the default network
+                       System.out.println("virNetworkGetXMLDesc:" + 
testNetwork.getXMLDesc(0));
+                       System.out.println("virNetworkGetAutostart:" + 
testNetwork.getAutostart());
+                       System.out.println("virNetworkGetBridgeName:" + 
testNetwork.getBridgeName());
+                       System.out.println("virNetworkGetName:" + 
testNetwork.getName());
+                       System.out.println("virNetworkGetUUID:" + 
testNetwork.getUUID() + " ");
+            System.out.println(FIXME) ;                        
+                       for(int c: testNetwork.getUUID())
+                               System.out.print(String.format("%02x", c));
+                       System.out.println();
+                       System.out.println("virNetworkGetName:" + 
testNetwork.getUUIDString());
+                       
+                       //Destroy and create the network
+                       System.out.println("virNetworkDestroy:"); 
testNetwork.destroy();
+                       System.out.println("virNetworkCreate:"); 
testNetwork.create();
+               } catch (LibvirtException e){
+                       System.out.println("exception caught:"+e);
+                       System.out.println(e.getError());
+               }
+               //This should raise an excpetion
+        System.out.println(FIXME) ;                    
+               try{
+                       System.out.println("virNetworkCreate:");  
testNetwork.create();
                } catch (LibvirtException e){
                        System.out.println("exception caught:"+e);
                        System.out.println(e.getError());
                }
-//             //This should raise an excpetion
-//             try{
-//                     System.out.println("virNetworkCreate:");  
testNetwork.create();
-//             } catch (LibvirtException e){
-//                     System.out.println("exception caught:"+e);
-//                     System.out.println(e.getError());
-//             }
                
                //Domain stuff
                
-- 
1.6.0.6

--
Libvir-list mailing list
Libvir-list@redhat.com
https://www.redhat.com/mailman/listinfo/libvir-list

Reply via email to