---
 src/org/libvirt/Connect.java                     |    9 +
 src/org/libvirt/Domain.java                      |  307 +++++++++++++---------
 src/org/libvirt/DomainBlockStats.java            |   13 +
 src/org/libvirt/DomainInfo.java                  |   14 +
 src/org/libvirt/DomainInterfaceStats.java        |   17 ++
 src/org/libvirt/ErrorHandler.java                |   11 +-
 src/org/libvirt/Network.java                     |    8 +-
 src/org/libvirt/NodeInfo.java                    |    4 +-
 src/org/libvirt/SchedBooleanParameter.java       |   20 ++-
 src/org/libvirt/SchedDoubleParameter.java        |   13 +
 src/org/libvirt/SchedIntParameter.java           |   13 +
 src/org/libvirt/SchedLongParameter.java          |   14 +
 src/org/libvirt/SchedParameter.java              |   43 +++
 src/org/libvirt/SchedUintParameter.java          |   13 +
 src/org/libvirt/SchedUlongParameter.java         |   13 +
 src/org/libvirt/VcpuInfo.java                    |   13 +
 src/org/libvirt/jna/Libvirt.java                 |   42 +++-
 src/org/libvirt/jna/virDomainBlockStats.java     |   12 +
 src/org/libvirt/jna/virDomainInfo.java           |   13 +
 src/org/libvirt/jna/virDomainInterfaceStats.java |   16 ++
 src/org/libvirt/jna/virSchedParameter.java       |   11 +
 src/org/libvirt/jna/virSchedParameterValue.java  |   13 +
 src/org/libvirt/jna/virVcpuInfo.java             |   12 +
 src/test.java                                    |  154 ++++++-----
 24 files changed, 595 insertions(+), 203 deletions(-)
 create mode 100644 src/org/libvirt/jna/virDomainBlockStats.java
 create mode 100644 src/org/libvirt/jna/virDomainInfo.java
 create mode 100644 src/org/libvirt/jna/virDomainInterfaceStats.java
 create mode 100644 src/org/libvirt/jna/virSchedParameter.java
 create mode 100644 src/org/libvirt/jna/virSchedParameterValue.java
 create mode 100644 src/org/libvirt/jna/virVcpuInfo.java

diff --git a/src/org/libvirt/Connect.java b/src/org/libvirt/Connect.java
index 218bda3..bab1d23 100644
--- a/src/org/libvirt/Connect.java
+++ b/src/org/libvirt/Connect.java
@@ -820,4 +820,13 @@ public class Connect {
     protected void processError() throws LibvirtException {
         ErrorHandler.processError(libvirt, VCP) ;
     }
+    
+    public static int[] convertUUIDBytes(byte bytes[]) {
+        int[] returnValue = new int[Libvirt.VIR_UUID_BUFLEN] ;
+        for (int x = 0 ; x < Libvirt.VIR_UUID_BUFLEN ; x++) {
+            returnValue[x] = (int) bytes[x] ;
+        }
+        return returnValue ;
+    }
+                      
 }
diff --git a/src/org/libvirt/Domain.java b/src/org/libvirt/Domain.java
index e9b5d57..ab8cd94 100644
--- a/src/org/libvirt/Domain.java
+++ b/src/org/libvirt/Domain.java
@@ -1,6 +1,16 @@
 package org.libvirt;
 
+import org.libvirt.jna.Libvirt;
+import org.libvirt.jna.virDomainBlockStats;
+import org.libvirt.jna.virDomainInfo;
+import org.libvirt.jna.virDomainInterfaceStats;
+import org.libvirt.jna.virSchedParameter;
+import org.libvirt.jna.virVcpuInfo;
+
+import com.sun.jna.Native;
+import com.sun.jna.NativeLong;
 import com.sun.jna.Pointer;
+import com.sun.jna.ptr.IntByReference;
 
 public class Domain {
 
@@ -35,6 +45,11 @@ public class Domain {
         * The Connect Object that represents the Hypervisor of this Domain
         */
        private Connect virConnect;
+       
+    /**
+     * The libvirt connection from the hypervisor
+     */
+    protected Libvirt libvirt ;        
 
 
        /**
@@ -47,6 +62,7 @@ public class Domain {
        Domain(Connect virConnect, Pointer VDP){
                this.virConnect = virConnect;
                this.VDP = VDP;
+        this.libvirt = virConnect.libvirt ;            
        }
 
        /**
@@ -59,11 +75,11 @@ public class Domain {
         * @see <a href="http://libvirt.org/format.html#Normal1"; >The XML 
Description format </a>
         */
        public String getXMLDesc(int flags) throws LibvirtException{
-//             return _getXMLDesc(VDP, flags);
-        throw new RuntimeException("Not Implemented") ;            
+        String returnValue = libvirt.virDomainGetXMLDesc(VDP, flags) ;
+        processError() ;
+        return returnValue  ;    
        }
 
-//     private native String _getXMLDesc(long VDP, int flags) throws 
LibvirtException;
 
        /**
         * Provides a boolean value indicating whether the network is 
configured to be automatically started when the host machine boots.
@@ -72,13 +88,13 @@ public class Domain {
         * @throws LibvirtException
         */
        public boolean getAutostart() throws LibvirtException{
-//             return _getAutostart(VDP);
-        throw new RuntimeException("Not Implemented") ;            
+        IntByReference autoStart = new IntByReference() ;
+        libvirt.virDomainGetAutostart(VDP, autoStart) ;
+        processError() ;        
+        return autoStart.getValue() != 0 ? true : false ; 
        }
 
 
-//     private native boolean _getAutostart(long VDP) throws LibvirtException;
-
        /**
         * Configures the network to be automatically started when the host 
machine boots.
         *
@@ -86,11 +102,11 @@ public class Domain {
         * @throws LibvirtException
         */
        public void setAutostart(boolean autostart) throws LibvirtException{
-//                     _setAutostart(VDP, autostart);
-        throw new RuntimeException("Not Implemented") ;            
+        int autoValue = autostart ? 1 : 0 ;
+        libvirt.virDomainSetAutostart(VDP, autoValue) ;    
+        processError() ;  
        }
 
-//     private native int _setAutostart(long VDP, boolean autostart) throws 
LibvirtException;
 
        /**
         * Provides the connection object associated with a domain.
@@ -108,11 +124,11 @@ public class Domain {
         * @throws LibvirtException
         */
        public int getID() throws LibvirtException{
-//             return _getID(VDP);
-        throw new RuntimeException("Not Implemented") ;            
+           int returnValue = libvirt.virDomainGetID(VDP);
+           processError() ;
+           return returnValue ;
        }
 
-//     private native int _getID(long VDP) throws LibvirtException;
 
 
        /**
@@ -123,12 +139,16 @@ public class Domain {
         * @throws LibvirtException
         */
        public DomainInfo getInfo() throws LibvirtException{
-//             return _getInfo(VDP);
-        throw new RuntimeException("Not Implemented") ;            
+           DomainInfo returnValue = null ;
+           virDomainInfo vInfo = new virDomainInfo() ;
+           int success = libvirt.virDomainGetInfo(VDP, vInfo) ;
+           processError() ;
+           if (success == 0) {
+               returnValue = new DomainInfo(vInfo) ;
+           }
+           return returnValue ;
        }
 
-//     private native DomainInfo _getInfo(long VDP) throws LibvirtException;
-
        /**
         * Retrieve the maximum amount of physical memory allocated to a domain.
         *
@@ -136,11 +156,11 @@ public class Domain {
         * @throws LibvirtException
         */
        public long getMaxMemory() throws LibvirtException{
-//             return _getMaxMemory(VDP);
-        throw new RuntimeException("Not Implemented") ;            
+           NativeLong returnValue = libvirt.virDomainGetMaxMemory(VDP) ;
+           processError() ;
+        return returnValue.longValue() ;           
        }
 
-//     private native long _getMaxMemory(long VDP) throws LibvirtException;
 
        /**
         * * Dynamically change the maximum amount of physical memory allocated 
to a domain.
@@ -150,12 +170,10 @@ public class Domain {
         * @throws LibvirtException
         */
        public void setMaxMemory(long memory) throws LibvirtException{
-//              _setMaxMemory(VDP, memory);
-        throw new RuntimeException("Not Implemented") ;            
+           libvirt.virDomainSetMaxMemory(VDP, new NativeLong(memory)) ;
+           processError() ;
        }
 
-//     private native long _setMaxMemory(long VDP,  long memory) throws 
LibvirtException;
-
 
        /**
         * Provides the maximum number of virtual CPUs supported for the guest 
VM.
@@ -166,12 +184,11 @@ public class Domain {
         * @throws LibvirtException
         */
        public int getMaxVcpus() throws LibvirtException{
-//             return _getMaxVcpus(VDP);
-        throw new RuntimeException("Not Implemented") ;            
+        int returnValue = libvirt.virDomainGetMaxVcpus(VDP) ;
+        processError() ; 
+        return returnValue ;        
        }
 
-//     private native int _getMaxVcpus(long VDP) throws LibvirtException;
-
 
        /**
         * Gets the public name for this domain
@@ -180,11 +197,11 @@ public class Domain {
         * @throws LibvirtException
         */
        public String getName() throws LibvirtException{
-//             return _getName(VDP);
-        throw new RuntimeException("Not Implemented") ;            
+        String returnValue = libvirt.virDomainGetName(VDP);
+        processError() ;
+        return returnValue ;    
        }
 
-//     private native String _getName(long VDP) throws LibvirtException;
 
        /**
         * Gets the type of domain operation system.
@@ -193,12 +210,11 @@ public class Domain {
         * @throws LibvirtException
         */
        public String getOSType() throws LibvirtException{
-//             return _getOSType(VDP);
-        throw new RuntimeException("Not Implemented") ;            
+        String returnValue = libvirt.virDomainGetOSType(VDP);
+        processError() ;
+        return returnValue ;       
        }
 
-//     private native String _getOSType(long VDP) throws LibvirtException;
-
 
        /**
         * Gets the scheduler parameters.
@@ -207,11 +223,23 @@ public class Domain {
         * @throws LibvirtException
         */
        public SchedParameter[] getSchedulerParameters() throws 
LibvirtException{
-//             return _getSchedulerParameters(VDP);
-        throw new RuntimeException("Not Implemented") ;            
+           IntByReference nParams = new IntByReference() ;
+           SchedParameter[] returnValue = new SchedParameter[0] ; 
+           String scheduler = libvirt.virDomainGetSchedulerType(VDP, nParams) ;
+           processError() ;
+           if (scheduler != null) {
+               virSchedParameter[] nativeParams = new 
virSchedParameter[nParams.getValue()] ;
+               returnValue = new SchedParameter[nParams.getValue()] ;
+               libvirt.virDomainGetSchedulerParameters(VDP, nativeParams, 
nParams) ;
+               processError() ;
+               for (int x = 0 ; x < nParams.getValue() ; x++ ) {
+                   returnValue[x] = SchedParameter.create(nativeParams[x]) ;
+               }
+           } 
+           
+           return returnValue ;
        }
 
-//     private native SchedParameter[] _getSchedulerParameters (long VDP) 
throws LibvirtException;
 
        /**
         * Changes the scheduler parameters
@@ -220,11 +248,16 @@ public class Domain {
         * @throws LibvirtException
         */
        public void setSchedulerParameters(SchedParameter[] params) throws 
LibvirtException{
-//             _setSchedulerParameters(VDP, params);
-        throw new RuntimeException("Not Implemented") ;            
+        IntByReference nParams = new IntByReference() ;
+        nParams.setValue(params.length) ;
+        virSchedParameter[] input = new virSchedParameter[params.length] ; 
+        for (int x = 0 ; x < params.length ; x++) {
+            input[x] = SchedParameter.toNative(params[x]) ;
+        }
+        libvirt.virDomainSetSchedulerParameters(VDP, input, nParams) ;
+        processError() ;           
        }
 
-//     private native int _setSchedulerParameters(long VDP, SchedParameter[] 
params) throws LibvirtException;
 
        //getSchedulerType
        //We don't expose the nparams return value, it's only needed for the 
SchedulerParameters allocations,
@@ -236,11 +269,14 @@ public class Domain {
         * @throws LibvirtException
         */
        public String[] getSchedulerType() throws LibvirtException{
-//             return _getSchedulerType(VDP);
-        throw new RuntimeException("Not Implemented") ;            
+        IntByReference nParams = new IntByReference() ;            
+        String returnValue = libvirt.virDomainGetSchedulerType(VDP, nParams) ;
+        processError() ;
+        String[] array = new String[1] ;
+        array[0] = returnValue ;
+        return array;
        }
 
-//     private native String[] _getSchedulerType(long VDP) throws 
LibvirtException;
 
        /**
         * Get the UUID for this domain.
@@ -250,11 +286,16 @@ public class Domain {
         * @see <a href="http://www.ietf.org/rfc/rfc4122.txt";>rfc4122</a>
         */
        public int[] getUUID() throws LibvirtException{
-//             return _getUUID(VDP);
-        throw new RuntimeException("Not Implemented") ;            
+        byte[] bytes = new byte[Libvirt.VIR_UUID_BUFLEN] ;
+        int success = libvirt.virDomainGetUUID(VDP, bytes) ;
+        processError() ;        
+        int[] returnValue = new int[0] ; 
+        if (success == 0) {
+            returnValue = Connect.convertUUIDBytes(bytes) ;
+        }
+        return returnValue ;  
        }
-
-//     private native int[] _getUUID(long VDP) throws LibvirtException;
+       
 
        /**
         * Gets the UUID for this domain as string.
@@ -264,12 +305,16 @@ public class Domain {
         * @see <a href="http://www.ietf.org/rfc/rfc4122.txt";>rfc4122</a>
         */
        public String getUUIDString() throws LibvirtException{
-//             return _getUUIDString(VDP);
-        throw new RuntimeException("Not Implemented") ;            
+        byte[] bytes = new byte[Libvirt.VIR_UUID_STRING_BUFLEN] ;
+        int success = libvirt.virDomainGetUUIDString(VDP, bytes) ;
+        processError() ;        
+        String returnValue = null ; 
+        if (success == 0) {
+            returnValue = Native.toString(bytes) ;
+        }
+        return returnValue ;     
        }
 
-//     private native String _getUUIDString(long VDP) throws LibvirtException;
-
        /**
         * Extracts information about virtual CPUs of this domain
         *
@@ -277,11 +322,18 @@ public class Domain {
         * @throws LibvirtException
         */
        public VcpuInfo[] getVcpusInfo() throws LibvirtException{
-//             return _getVcpusInfo(VDP);
-        throw new RuntimeException("Not Implemented") ;            
+           int cpuCount = this.getMaxVcpus() ;
+           VcpuInfo[] returnValue = new VcpuInfo[cpuCount] ;
+           virVcpuInfo[] infos = new virVcpuInfo[cpuCount] ;
+           libvirt.virDomainGetVcpus(VDP, infos, cpuCount, null, 0) ;
+        processError() ;
+        for (int x = 0 ; x < cpuCount ; x++) {
+            returnValue[x] = new VcpuInfo(infos[x]) ;
+        }
+        return returnValue ;
        }
 
-//     private native VcpuInfo[] _getVcpusInfo(long VDP) throws 
LibvirtException;
+
 
        /**
         * Returns the cpumaps for this domain
@@ -291,12 +343,24 @@ public class Domain {
         * @throws LibvirtException
         */
        public int[] getVcpusCpuMaps() throws LibvirtException{
-//             return _getVcpusCpuMaps(VDP);
-        throw new RuntimeException("Not Implemented") ;            
+           int[] returnValue = new int[0] ;
+           int cpuCount = this.getMaxVcpus() ;
+           
+           if (cpuCount >0) {
+               NodeInfo nodeInfo = virConnect.nodeInfo() ;
+               int maplength = cpuMapLength(nodeInfo.maxCpus()) ;
+               virVcpuInfo[] infos = new virVcpuInfo[cpuCount] ;
+               returnValue = new int[cpuCount*maplength] ;
+               byte[] cpumaps = new byte[cpuCount*maplength] ;
+               libvirt.virDomainGetVcpus(VDP, infos, cpuCount, cpumaps, 
maplength) ;
+               processError() ;                
+               for (int x =0 ; x < cpuCount*maplength ; x++) {
+                   returnValue[x] = (int) cpumaps[x] ;
+               }
+           }
+           return returnValue ; 
        }
 
-//     private native int[] _getVcpusCpuMaps(long VDP) throws LibvirtException;
-
 
        /**
         * Dynamically changes the real CPUs which can be allocated to a 
virtual CPU.
@@ -307,11 +371,14 @@ public class Domain {
         * @throws LibvirtException
         */
        public void pinVcpu(int vcpu, int[] cpumap) throws LibvirtException{
-//             _pinVcpu(VDP, vcpu, cpumap);
-        throw new RuntimeException("Not Implemented") ;            
+           byte[] packedMap = new byte[cpumap.length] ;
+           for (int x = 0 ; x < cpumap.length ; x++) {
+               packedMap[x] = (byte) cpumap[x] ;
+           }
+           libvirt.virDomainPinVcpu(VDP, vcpu, packedMap, cpumap.length) ; 
+        processError() ;           
        }
 
-//     private native int _pinVcpu(long VDP, int vcpu, int[]cpumap) throws 
LibvirtException;
 
        /**
         * Dynamically changes the number of virtual CPUs used by this domain.
@@ -322,11 +389,10 @@ public class Domain {
         * @throws LibvirtException
         */
        public void setVcpus(int nvcpus) throws LibvirtException{
-//             _setVcpus(VDP, nvcpus);
-        throw new RuntimeException("Not Implemented") ;            
+           libvirt.virDomainSetVcpus(VDP, nvcpus) ;
+        processError() ;
        }
 
-//     private native int _setVcpus(long VDP, int nvcpus) throws 
LibvirtException;
 
        /**
         * Creates a virtual device attachment to backend.
@@ -335,12 +401,11 @@ public class Domain {
         * @throws LibvirtException
         */
        public void attachDevice(String xmlDesc) throws LibvirtException{
-//             _attachDevice(VDP, xmlDesc);
-        throw new RuntimeException("Not Implemented") ;            
+           libvirt.virDomainAttachDevice(VDP, xmlDesc);
+        processError() ;    
        }
 
-//     private native int _attachDevice(long VDP, String xmlDesc) throws 
LibvirtException;
-
+       
        /**
         * Destroys a virtual device attachment to backend.
         *
@@ -348,11 +413,10 @@ public class Domain {
         * @throws LibvirtException
         */
        public void detachDevice(String xmlDesc) throws LibvirtException{
-//             _detachDevice(VDP, xmlDesc);
-        throw new RuntimeException("Not Implemented") ;            
+        libvirt.virDomainDetachDevice(VDP, xmlDesc);
+        processError() ;  
        }
 
-//     private native int _detachDevice(long VDP, String xmlDesc) throws 
LibvirtException;
 
 
        /**
@@ -368,11 +432,12 @@ public class Domain {
         * @throws LibvirtException
         */
        public DomainBlockStats blockStats(String path) throws LibvirtException{
-//             return _blockStats(VDP, path);
-        throw new RuntimeException("Not Implemented") ;            
+           virDomainBlockStats stats = new virDomainBlockStats() ;
+           libvirt.virDomainBlockStats(VDP, path, stats, stats.size()) ;
+        processError() ;
+           return new DomainBlockStats(stats) ;
        }
-
-//     private native DomainBlockStats _blockStats(long VDP, String path) 
throws LibvirtException;
+       
 
        /**
         * Returns network interface stats for interfaces attached to this 
domain.
@@ -386,11 +451,12 @@ public class Domain {
         * @throws LibvirtException
         */
        public DomainInterfaceStats interfaceStats(String path) throws 
LibvirtException{
-//             return _interfaceStats(VDP, path);
-        throw new RuntimeException("Not Implemented") ;            
+           virDomainInterfaceStats stats = new virDomainInterfaceStats() ;
+        libvirt.virDomainInterfaceStats(VDP, path, stats, stats.size()) ;
+        processError() ;
+        return new DomainInterfaceStats(stats) ;   
        }
 
-//     private native DomainInterfaceStats _interfaceStats(long VDP, String 
path) throws LibvirtException;
 
        /**
         * Dumps the core of this domain on a given file for analysis.
@@ -401,11 +467,10 @@ public class Domain {
         * @throws LibvirtException
         */
        public void coreDump(String to, int flags) throws LibvirtException{
-//             _coreDump(VDP, to, flags);
-        throw new RuntimeException("Not Implemented") ;                
+           libvirt.virDomainCoreDump(VDP, to, flags) ;
+           processError() ;
        }
 
-//     private native int _coreDump(long VDP, String to, int flags) throws 
LibvirtException;
 
        /**
         * Launches this defined domain.
@@ -414,11 +479,10 @@ public class Domain {
         * @throws LibvirtException
         */
        public void create() throws LibvirtException{
-//             _create(VDP);
-        throw new RuntimeException("Not Implemented") ;            
+               libvirt.virDomainCreate(VDP);
+        processError() ;  
        }
 
-//     private native int _create(long VDP) throws LibvirtException;
 
        /**
         * Destroys this domain object.
@@ -429,11 +493,10 @@ public class Domain {
         * @throws LibvirtException
         */
        public void destroy() throws LibvirtException{
-//             _destroy(VDP);
-        throw new RuntimeException("Not Implemented") ;            
+        libvirt.virDomainDestroy(VDP);
+        processError() ;           
        }
-
-//     private native int _destroy(long VDP) throws LibvirtException;
+       
 
        /**
         * Frees this domain object.
@@ -443,12 +506,11 @@ public class Domain {
         * @throws LibvirtException
         */
        public void free() throws LibvirtException{
-//             _free(VDP);
-//             VDP=0;
-        throw new RuntimeException("Not Implemented") ;            
+        libvirt.virDomainFree(VDP);
+        processError() ;     
+               VDP=null ;
        }
 
-//     private native int _free(long VDP) throws LibvirtException;
 
 
        /**
@@ -478,11 +540,11 @@ public class Domain {
         * @throws LibvirtException
         */
        public Domain migrate(Connect dconn, long flags, String dname, String 
uri, long bandwidth) throws LibvirtException{
-//             return new Domain(dconn, _migrate(VDP, dconn, flags, dname, 
uri, bandwidth));
-        throw new RuntimeException("Not Implemented") ;            
+           Pointer newPtr = libvirt.virDomainMigrate(VDP, dconn.VCP, new 
NativeLong(flags), dname, uri, new NativeLong(bandwidth)) ;
+           processError() ;
+           return new Domain(dconn, newPtr) ;  
        }
 
-//     private native long _migrate(long VDP, Connect dconn, long flags, 
String dname, String uri, long bandwidth) throws LibvirtException;
 
        /**
         * Reboot this domain, the domain object is still usable there after 
but the domain OS is being stopped for a restart.
@@ -492,11 +554,10 @@ public class Domain {
         * @throws LibvirtException
         */
        public void reboot(int flags) throws LibvirtException{
-//             _reboot(VDP, flags);
-        throw new RuntimeException("Not Implemented") ;            
+               libvirt.virDomainReboot(VDP, flags);
+               processError() ;
        }
 
-//     private native int _reboot(long VDP, int flags) throws LibvirtException;
 
        /**
         * Suspends this active domain, the process is frozen without further 
access to CPU resources and I/O but the memory used by the domain at the 
hypervisor level will stay allocated.
@@ -505,11 +566,10 @@ public class Domain {
         * @throws LibvirtException
         */
        public void suspend() throws LibvirtException{
-//             _suspend(VDP);
-        throw new RuntimeException("Not Implemented") ;            
+        libvirt.virDomainSuspend(VDP);
+        processError() ;    
        }
 
-//     private native int _suspend(long VDP) throws LibvirtException;
 
        /**
         * Resume this suspended domain, the process is restarted from the 
state where it was frozen by calling virSuspendDomain().
@@ -518,11 +578,10 @@ public class Domain {
         * @throws LibvirtException
         */
        public void resume() throws LibvirtException{
-//             _resume(VDP);
-        throw new RuntimeException("Not Implemented") ;            
+        libvirt.virDomainResume(VDP);
+        processError() ;    
        }
 
-//     private native int _resume(long VDP) throws LibvirtException;
 
        /**
         * Suspends this domain and saves its memory contents to a file on disk.
@@ -533,12 +592,11 @@ public class Domain {
         * @throws LibvirtException
         */
        public void save(String to) throws LibvirtException{
-//             _save(VDP, to);
-        throw new RuntimeException("Not Implemented") ;            
+        libvirt.virDomainSave(VDP, to);
+        processError() ;       
        }
 
-//     private native int _save(long VDP, String to) throws LibvirtException;
-
+       
        /**
         * Shuts down this domain, the domain object is still usable there 
after but the domain OS is being stopped.
         * Note that the guest OS may ignore the request.
@@ -547,11 +605,10 @@ public class Domain {
         * @throws LibvirtException
         */
        public void shutdown() throws LibvirtException{
-//             _shutdown(VDP);
-        throw new RuntimeException("Not Implemented") ;            
+        libvirt.virDomainShutdown(VDP);
+        processError() ;     
        }
 
-//     private native int _shutdown(long VDP) throws LibvirtException;
 
        /**
         * undefines this domain but does not stop it if it is running
@@ -559,11 +616,10 @@ public class Domain {
         * @throws LibvirtException
         */
        public void undefine() throws LibvirtException{
-        throw new RuntimeException("Not Implemented") ;            
-//             _undefine(VDP);
+        libvirt.virDomainUndefine(VDP);
+        processError() ;     
        }
 
-//     private native int _undefine(long VDP) throws LibvirtException;
 
        /**
         * Dynamically changes the target amount of physical memory allocated 
to this domain.
@@ -573,11 +629,26 @@ public class Domain {
         * @throws LibvirtException
         */
        public void setMemory(long memory) throws LibvirtException{
-           throw new RuntimeException("Not Implemented") ;
-//             _setMemory(VDP, memory);
+           libvirt.virDomainSetMemory(VDP, new NativeLong(memory)) ;
+           processError() ;
        }
 
-//     private native int _setMemory(long VDP, long memory) throws 
LibvirtException;
+       /**
+        * It returns the length (in bytes) required to store the complete
+        * CPU map between a single virtual & all physical CPUs of a domain.
+        * 
+        */     
+       public int cpuMapLength(int maxCpus) {
+           return  (((maxCpus)+7)/8) ;
+       }
+       
+       /**
+        * Error handling logic to throw errors. Must be called after every 
libvirt
+        * call.
+        */
+    protected void processError() throws LibvirtException {
+        virConnect.processError() ;
+    }          
 
 
 }
diff --git a/src/org/libvirt/DomainBlockStats.java 
b/src/org/libvirt/DomainBlockStats.java
index c5ed067..b48c066 100644
--- a/src/org/libvirt/DomainBlockStats.java
+++ b/src/org/libvirt/DomainBlockStats.java
@@ -1,5 +1,7 @@
 package org.libvirt;
 
+import org.libvirt.jna.virDomainBlockStats;
+
 /**
  * This class holds the counters for block device statistics.
  *
@@ -12,4 +14,15 @@ public class DomainBlockStats {
        public long  wr_req;
        public long  wr_bytes;
        public long  errs;
+       
+       public DomainBlockStats() {         
+       }
+       
+       public DomainBlockStats(virDomainBlockStats vStats) {
+           this.rd_req = vStats.rd_req ;
+        this.rd_bytes = vStats.rd_bytes ;
+        this.wr_req = vStats.wr_req ;
+        this.wr_bytes = vStats.wr_bytes ;
+        this.errs = vStats.errs ;        
+       }
 }
diff --git a/src/org/libvirt/DomainInfo.java b/src/org/libvirt/DomainInfo.java
index ec493ff..e6a03f8 100644
--- a/src/org/libvirt/DomainInfo.java
+++ b/src/org/libvirt/DomainInfo.java
@@ -1,5 +1,7 @@
 package org.libvirt;
 
+import org.libvirt.jna.virDomainInfo;
+
 /**
  * This object is returned by Domain.getInfo()
  *
@@ -62,6 +64,18 @@ public class DomainInfo {
             */
            VIR_DOMAIN_CRASHED
        }
+       
+       public DomainInfo() {
+       
+       }
+       
+       public DomainInfo(virDomainInfo info) {
+           this.cpuTime = info.cpuTime ;
+           this.maxMem = info.maxMem.longValue() ;
+           this.memory = info.memory.longValue() ;
+           this.nrVirtCpu = info.nrVirtCpu ;
+           this.state = DomainState.values()[info.state] ;
+       }
 
        public String toString(){
                StringBuffer result = new StringBuffer("");
diff --git a/src/org/libvirt/DomainInterfaceStats.java 
b/src/org/libvirt/DomainInterfaceStats.java
index fd3d392..b60b628 100644
--- a/src/org/libvirt/DomainInterfaceStats.java
+++ b/src/org/libvirt/DomainInterfaceStats.java
@@ -1,5 +1,7 @@
 package org.libvirt;
 
+import org.libvirt.jna.virDomainInterfaceStats;
+
 
 /**
  * The Domain.interfaceStats method returns th network counters in this object
@@ -16,4 +18,19 @@ public class DomainInterfaceStats {
        public long tx_packets;
        public long tx_errs;
        public long tx_drop;
+       
+       public DomainInterfaceStats() {
+           
+       }
+       
+       public DomainInterfaceStats(virDomainInterfaceStats vStats) {
+           this.rx_bytes = vStats.rx_bytes ;
+        this.rx_packets = vStats.rx_packets ;    
+        this.rx_errs = vStats.rx_errs ;
+        this.rx_drop = vStats.rx_drop ;   
+        this.tx_bytes = vStats.tx_bytes ;
+        this.tx_packets = vStats.tx_packets ;   
+        this.tx_errs = vStats.tx_errs ;
+        this.tx_drop = vStats.tx_drop ;           
+       }
 }
diff --git a/src/org/libvirt/ErrorHandler.java 
b/src/org/libvirt/ErrorHandler.java
index 0e322ba..7f77937 100644
--- a/src/org/libvirt/ErrorHandler.java
+++ b/src/org/libvirt/ErrorHandler.java
@@ -9,11 +9,17 @@ public class ErrorHandler
 {
 
     public static void processError(Libvirt libvirt) throws LibvirtException {
-        
+        virError vError = new virError() ;
+        int errorCode = libvirt.virCopyLastError(vError) ;
+        if (errorCode > 0) {        
+            Error error = new Error(vError) ;
+            libvirt.virResetLastError() ;
+            throw new LibvirtException(error) ;
+        }        
     }
+    
     public static void processError(Libvirt libvirt, Pointer conn) throws 
LibvirtException
     {
-
         virError vError = new virError() ;
         int errorCode = libvirt.virConnCopyLastError(conn, vError) ;
         if (errorCode > 0) {        
@@ -21,6 +27,5 @@ public class ErrorHandler
             libvirt.virConnResetLastError(conn) ;
             throw new LibvirtException(error) ;
         }
-        
     }
 }
diff --git a/src/org/libvirt/Network.java b/src/org/libvirt/Network.java
index ce80f6f..c18f239 100644
--- a/src/org/libvirt/Network.java
+++ b/src/org/libvirt/Network.java
@@ -2,6 +2,7 @@ package org.libvirt;
 
 import org.libvirt.jna.Libvirt;
 
+import com.sun.jna.Native;
 import com.sun.jna.Pointer;
 import com.sun.jna.ptr.IntByReference;
 import com.sun.jna.ptr.PointerByReference;
@@ -133,10 +134,7 @@ public class Network {
         processError() ;           
            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] ;
-               }
+               returnValue = Connect.convertUUIDBytes(bytes) ;
            }
         return returnValue ;   
        }
@@ -154,7 +152,7 @@ public class Network {
         processError() ;        
         String returnValue = null ; 
         if (success == 0) {
-            returnValue = new String(bytes) ;
+            returnValue = Native.toString(bytes) ;
         }
         return returnValue ;               
        }
diff --git a/src/org/libvirt/NodeInfo.java b/src/org/libvirt/NodeInfo.java
index 16855ca..0431ed9 100644
--- a/src/org/libvirt/NodeInfo.java
+++ b/src/org/libvirt/NodeInfo.java
@@ -2,6 +2,8 @@ package org.libvirt;
 
 import org.libvirt.jna.virNodeInfo;
 
+import com.sun.jna.Native;
+
 public class NodeInfo {
        /**
         * string indicating the CPU model
@@ -41,7 +43,7 @@ public class NodeInfo {
        }
        
        public NodeInfo(virNodeInfo vInfo) {
-//         this.model = new String(vInfo.model) ;
+           this.model = Native.toString(vInfo.model) ;
         this.memory = vInfo.memory.longValue() ;
         this.cpus = vInfo.cpus ;
         this.mhz = vInfo.mhz ;        
diff --git a/src/org/libvirt/SchedBooleanParameter.java 
b/src/org/libvirt/SchedBooleanParameter.java
index adde0ec..5e681ca 100644
--- a/src/org/libvirt/SchedBooleanParameter.java
+++ b/src/org/libvirt/SchedBooleanParameter.java
@@ -11,12 +11,30 @@ public final class SchedBooleanParameter  extends 
SchedParameter{
         * The parameter value
         */
        public boolean value;
+       
+       public SchedBooleanParameter() {
+           
+       }
+
+       public SchedBooleanParameter(boolean value)
+    {
+        this.value = value;
+    }
+       
+    public SchedBooleanParameter(byte value)
+    {
+        this.value = (((int)value) != 0)? true : false ;
+    }  
 
-       public String getValueAsString(){
+    public String getValueAsString(){
                return Boolean.toString(value);
        }
 
        public String getTypeAsString(){
                return "VIR_DOMAIN_SCHED_FIELD_BOOLEAN";
        }
+       
+    public int getType() {
+        return 6 ;
+    }
 }
diff --git a/src/org/libvirt/SchedDoubleParameter.java 
b/src/org/libvirt/SchedDoubleParameter.java
index 72e1afa..21bc217 100644
--- a/src/org/libvirt/SchedDoubleParameter.java
+++ b/src/org/libvirt/SchedDoubleParameter.java
@@ -11,6 +11,15 @@ public final class SchedDoubleParameter extends 
SchedParameter{
         * The parameter value
         */
        public double value;
+       
+    public SchedDoubleParameter() {
+        
+    }
+
+    public SchedDoubleParameter(double value)
+    {
+        this.value = value;
+    }  
 
        public String getValueAsString(){
                return Double.toString(value);
@@ -19,4 +28,8 @@ public final class SchedDoubleParameter extends 
SchedParameter{
        public String getTypeAsString(){
                return "VIR_DOMAIN_SCHED_FIELD_DOUBLE";
        }
+       
+    public int getType() {
+        return 5 ;
+    }  
 }
diff --git a/src/org/libvirt/SchedIntParameter.java 
b/src/org/libvirt/SchedIntParameter.java
index 0db5e81..af13933 100644
--- a/src/org/libvirt/SchedIntParameter.java
+++ b/src/org/libvirt/SchedIntParameter.java
@@ -3,6 +3,15 @@ package org.libvirt;
 public final class SchedIntParameter extends SchedParameter {
        public int value;
 
+    public SchedIntParameter() {
+        
+    }
+
+    public SchedIntParameter(int value)
+    {
+        this.value = value;
+    }   
+    
        public String getValueAsString(){
                return Integer.toString(value);
        }
@@ -10,4 +19,8 @@ public final class SchedIntParameter extends SchedParameter {
        public String getTypeAsString(){
                return "VIR_DOMAIN_SCHED_FIELD_INT";
        }
+       
+    public int getType() {
+        return 1 ;
+    }  
 }
diff --git a/src/org/libvirt/SchedLongParameter.java 
b/src/org/libvirt/SchedLongParameter.java
index fafc33c..1b07971 100644
--- a/src/org/libvirt/SchedLongParameter.java
+++ b/src/org/libvirt/SchedLongParameter.java
@@ -11,6 +11,15 @@ public final class SchedLongParameter extends SchedParameter{
         * The parameter value
         */
        public long value;
+       
+    public SchedLongParameter() {
+        
+    }
+
+    public SchedLongParameter(long value)
+    {
+        this.value = value;
+    }          
 
        public String getValueAsString(){
                return Long.toString(value);
@@ -19,4 +28,9 @@ public final class SchedLongParameter extends SchedParameter{
        public String getTypeAsString(){
                return "VIR_DOMAIN_SCHED_FIELD_LLONG";
        }
+       
+    public int getType() {
+        return 2 ;
+    }  
+       
 }
diff --git a/src/org/libvirt/SchedParameter.java 
b/src/org/libvirt/SchedParameter.java
index 6ce7855..8f38ef8 100644
--- a/src/org/libvirt/SchedParameter.java
+++ b/src/org/libvirt/SchedParameter.java
@@ -1,5 +1,12 @@
 package org.libvirt;
 
+import java.util.Arrays;
+
+import org.libvirt.jna.Libvirt;
+import org.libvirt.jna.virSchedParameter;
+
+import com.sun.jna.Native;
+
 /**
  * The abstract parent of the actual Schedparameter classes
  *
@@ -25,5 +32,41 @@ public abstract class SchedParameter {
         * @return the Type of the parameter as string
         */
        public abstract String getTypeAsString();
+       
+    /**
+     * The type of the parameter
+     *
+     * @return the Type of the parameter 
+     */        
+       public abstract int getType() ;
 
+       public static SchedParameter create(virSchedParameter vParam) {
+           SchedParameter returnValue = null ;
+           switch (vParam.type) {
+           case (1): returnValue = new SchedIntParameter(vParam.value.i) 
;break ;
+           case (2): returnValue = new SchedUintParameter(vParam.value.ui) 
;break ;
+            case (3): returnValue = new SchedLongParameter(vParam.value.l) 
;break ;
+            case (4): returnValue = new SchedUlongParameter(vParam.value.ul) 
;break ;
+            case (5): returnValue = new SchedDoubleParameter(vParam.value.d) 
;break ;
+            case (6): returnValue = new SchedBooleanParameter(vParam.value.b) 
;break ;             
+           }
+           returnValue.field = Native.toString(vParam.field) ;
+           return returnValue ;
+       }
+       
+       public static virSchedParameter toNative(SchedParameter param) {
+           virSchedParameter returnValue = new virSchedParameter() ;
+           returnValue.field = Arrays.copyOf(param.field.getBytes(), 
Libvirt.VIR_DOMAIN_SCHED_FIELD_LENGTH) ;
+           returnValue.type = param.getType() ;
+        switch (param.getType()) {
+        case (1): returnValue.value.i = ((SchedIntParameter)param).value 
;break ;
+        case (2): returnValue.value.ui = ((SchedUintParameter)param).value 
;break ;
+        case (3): returnValue.value.l = ((SchedLongParameter)param).value 
;break ;
+        case (4): returnValue.value.ul = ((SchedUlongParameter)param).value 
;break ;
+        case (5): returnValue.value.d = ((SchedDoubleParameter)param).value 
;break ;
+        case (6): returnValue.value.b = 
(byte)(((SchedBooleanParameter)param).value?1:0) ;break ;        
+            
+    }      
+           return returnValue ;
+       }
 }
diff --git a/src/org/libvirt/SchedUintParameter.java 
b/src/org/libvirt/SchedUintParameter.java
index e9882ec..8a6ab75 100644
--- a/src/org/libvirt/SchedUintParameter.java
+++ b/src/org/libvirt/SchedUintParameter.java
@@ -12,6 +12,15 @@ public final class SchedUintParameter extends SchedParameter 
{
         * The parameter value
         */
        public int value;
+       
+    public SchedUintParameter() {
+        
+    }
+
+    public SchedUintParameter(int value)
+    {
+        this.value = value;
+    }          
 
        public String getValueAsString(){
                return Integer.toString(value);
@@ -20,4 +29,8 @@ public final class SchedUintParameter extends SchedParameter {
        public String getTypeAsString(){
                return "VIR_DOMAIN_SCHED_FIELD_UINT";
        }
+       
+    public int getType() {
+        return 3 ;
+    }  
 }
diff --git a/src/org/libvirt/SchedUlongParameter.java 
b/src/org/libvirt/SchedUlongParameter.java
index 96c1812..419c1a8 100644
--- a/src/org/libvirt/SchedUlongParameter.java
+++ b/src/org/libvirt/SchedUlongParameter.java
@@ -11,6 +11,15 @@ public final class SchedUlongParameter extends 
SchedParameter{
         * The parameter value
         */
        public long value;
+       
+    public SchedUlongParameter() {
+        
+    }
+
+    public SchedUlongParameter(long value)
+    {
+        this.value = value;
+    }          
 
        public String getValueAsString(){
                return Long.toString(value);
@@ -19,4 +28,8 @@ public final class SchedUlongParameter extends SchedParameter{
        public String getTypeAsString(){
                return "VIR_DOMAIN_SCHED_FIELD_ULLONG";
        }
+       
+    public int getType() {
+        return 4 ;
+    }  
 }
diff --git a/src/org/libvirt/VcpuInfo.java b/src/org/libvirt/VcpuInfo.java
index 55490e2..b10c07d 100644
--- a/src/org/libvirt/VcpuInfo.java
+++ b/src/org/libvirt/VcpuInfo.java
@@ -1,5 +1,7 @@
 package org.libvirt;
 
+import org.libvirt.jna.virVcpuInfo;
+
 public class VcpuInfo {
        public int number;
        public VcpuState state;
@@ -10,4 +12,15 @@ public class VcpuInfo {
                VIR_VCPU_OFFLINE,
                VIR_VCPU_RUNNING,
                VIR_VCPU_BLOCKED};
+               
+       public VcpuInfo() {
+           
+       }
+       
+       public VcpuInfo(virVcpuInfo vVcpu) {
+           this.number = vVcpu.number ;
+           this.cpuTime = vVcpu.cpuTime ;
+           this.cpu = vVcpu.cpu ;
+           this.state = VcpuState.values()[vVcpu.state] ;
+       }
 }
diff --git a/src/org/libvirt/jna/Libvirt.java b/src/org/libvirt/jna/Libvirt.java
index 8727447..ec67c6f 100644
--- a/src/org/libvirt/jna/Libvirt.java
+++ b/src/org/libvirt/jna/Libvirt.java
@@ -4,6 +4,7 @@ package org.libvirt.jna;
 import com.sun.jna.Callback;
 import com.sun.jna.Library ;
 import com.sun.jna.Native;
+import com.sun.jna.NativeLong;
 import com.sun.jna.Pointer;
 import com.sun.jna.Structure.ByReference;
 import com.sun.jna.ptr.IntByReference;
@@ -16,7 +17,8 @@ public interface Libvirt extends Library
     
     // Constants we need
     public static int VIR_UUID_BUFLEN = 16 ;
-    public static int VIR_UUID_STRING_BUFLEN = (36+1) ;    
+    public static int VIR_UUID_STRING_BUFLEN = (36+1) ;
+    public static int VIR_DOMAIN_SCHED_FIELD_LENGTH = 80 ;
     
     // Global functions
     public int virCopyLastError(virError error) ;
@@ -69,13 +71,45 @@ public interface Libvirt extends Library
     public int virNetworkUndefine(Pointer virConnectPtr) ;       
     
     // Domain functions
+    public int virDomainAttachDevice(Pointer virDomainPtr, String deviceXML) ; 
   
+    public int virDomainBlockStats(Pointer virDomainPtr, String path, 
virDomainBlockStats stats, int size) ;
+    public int virDomainCreate(Pointer virDomainPtr) ;       
     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 int virDomainCoreDump(Pointer virDomainPtr, String to, int flags) ;
+    public Pointer virDomainDefineXML(Pointer virConnectPtr, String xmlDesc) ; 
+    public int virDomainDetachDevice(Pointer virDomainPtr, String deviceXML) ; 
 
+    public int virDomainDestroy(Pointer virDomainPtr) ;        
+    public int virDomainFree(Pointer virDomainPtr) ;       
+    public int virDomainGetAutostart(Pointer virDomainPtr, IntByReference 
value) ;
+    public int virDomainGetID(Pointer virDomainPtr) ;      
+    public int virDomainGetInfo(Pointer virDomainPtr, virDomainInfo vInfo) ;
+    public NativeLong virDomainGetMaxMemory(Pointer virDomainPtr) ;
+    public int virDomainGetMaxVcpus(Pointer virDomainPtr) ;
+    public String virDomainGetName(Pointer virDomainPtr) ;    
+    public String virDomainGetOSType(Pointer virDomainPtr) ;        
+    public int virDomainGetUUID(Pointer virDomainPtr, byte[] uuidString) ;    
+    public int virDomainGetUUIDString(Pointer virDomainPtr, byte[] uuidString) 
;    
+    public String virDomainGetXMLDesc(Pointer virDomainPtr, int flags) ;
+    public String virDomainGetSchedulerType(Pointer virDomainPtr, 
IntByReference nparams) ;
+    public int virDomainGetSchedulerParameters(Pointer virDomainPtr, 
virSchedParameter[] params, IntByReference nparams) ;
+    public int virDomainGetVcpus(Pointer virDomainPtr, virVcpuInfo[] info, int 
maxInfo, byte[] cpumaps, int maplen) ;
+    public int virDomainInterfaceStats(Pointer virDomainPtr, String path, 
virDomainInterfaceStats stats, int size) ;
     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) ;
-      
-
+    public Pointer virDomainMigrate(Pointer virDomainPtr, Pointer 
virConnectPtr, NativeLong flags, String dname, String uri, NativeLong 
bandwidth) ;
+    public int virDomainPinVcpu(Pointer virDomainPtr, int vcpu, byte[] cpumap, 
int maplen) ;    
+    public int virDomainReboot(Pointer virDomainPtr, int flags) ;
+    public int virDomainResume(Pointer virDomainPtr) ;    
+    public int virDomainSave(Pointer virDomainPtr, String to) ; 
+    public int virDomainSetAutostart(Pointer virDomainPtr, int autoStart) ;
+    public int virDomainSetSchedulerParameters(Pointer virDomainPtr, 
virSchedParameter[] params, IntByReference nparams) ;     
+    public int virDomainSetMaxMemory(Pointer virDomainPtr, NativeLong 
maxMemory) ;
+    public int virDomainSetMemory(Pointer virDomainPtr, NativeLong maxMemory) 
;    
+    public int virDomainSetVcpus(Pointer virDomainPtr, int nvcpus) ;    
+    public int virDomainShutdown(Pointer virDomainPtr) ;        
+    public int virDomainSuspend(Pointer virDomainPtr) ;    
+    public int virDomainUndefine(Pointer virDomainPtr) ;   
 }
diff --git a/src/org/libvirt/jna/virDomainBlockStats.java 
b/src/org/libvirt/jna/virDomainBlockStats.java
new file mode 100644
index 0000000..446e016
--- /dev/null
+++ b/src/org/libvirt/jna/virDomainBlockStats.java
@@ -0,0 +1,12 @@
+package org.libvirt.jna;
+
+import com.sun.jna.Structure;
+
+public class virDomainBlockStats extends Structure
+{
+    public long rd_req ;
+    public long rd_bytes ;    
+    public long wr_req ;
+    public long wr_bytes ;    
+    public long errs ;    
+}
diff --git a/src/org/libvirt/jna/virDomainInfo.java 
b/src/org/libvirt/jna/virDomainInfo.java
new file mode 100644
index 0000000..15d4836
--- /dev/null
+++ b/src/org/libvirt/jna/virDomainInfo.java
@@ -0,0 +1,13 @@
+package org.libvirt.jna;
+
+import com.sun.jna.NativeLong;
+import com.sun.jna.Structure ;
+
+public class virDomainInfo extends Structure
+{
+    public int state ;
+    public NativeLong maxMem ;
+    public NativeLong memory ;    
+    public short nrVirtCpu ;
+    public long cpuTime ;  
+}
diff --git a/src/org/libvirt/jna/virDomainInterfaceStats.java 
b/src/org/libvirt/jna/virDomainInterfaceStats.java
new file mode 100644
index 0000000..3fda2dd
--- /dev/null
+++ b/src/org/libvirt/jna/virDomainInterfaceStats.java
@@ -0,0 +1,16 @@
+package org.libvirt.jna;
+
+import com.sun.jna.Structure;
+
+public class virDomainInterfaceStats extends Structure
+{
+    public long rx_bytes;
+    public long rx_packets;
+    public long rx_errs;
+    public long rx_drop;
+    public long tx_bytes;
+    public long tx_packets;
+    public long tx_errs;
+    public long tx_drop;
+    
+}
diff --git a/src/org/libvirt/jna/virSchedParameter.java 
b/src/org/libvirt/jna/virSchedParameter.java
new file mode 100644
index 0000000..f8440e1
--- /dev/null
+++ b/src/org/libvirt/jna/virSchedParameter.java
@@ -0,0 +1,11 @@
+package org.libvirt.jna;
+
+import com.sun.jna.Structure;
+
+public class virSchedParameter extends Structure 
+{
+    public byte field[] = new byte[Libvirt.VIR_DOMAIN_SCHED_FIELD_LENGTH] ;
+    public int type ;
+    public virSchedParameterValue value ;
+    
+}
diff --git a/src/org/libvirt/jna/virSchedParameterValue.java 
b/src/org/libvirt/jna/virSchedParameterValue.java
new file mode 100644
index 0000000..ff2cdfc
--- /dev/null
+++ b/src/org/libvirt/jna/virSchedParameterValue.java
@@ -0,0 +1,13 @@
+package org.libvirt.jna;
+
+import com.sun.jna.Structure;
+
+public class virSchedParameterValue extends Structure
+{
+        public int i;                          /* data for integer case */
+        public int ui;        /* data for unsigned integer case */
+        public long  l;        /* data for long long integer case */
+        public long  ul;      /* data for unsigned long long integer case */
+        public double d;       /* data for double case */
+        public byte b;         /* data for char case */
+}
diff --git a/src/org/libvirt/jna/virVcpuInfo.java 
b/src/org/libvirt/jna/virVcpuInfo.java
new file mode 100644
index 0000000..ba72ce8
--- /dev/null
+++ b/src/org/libvirt/jna/virVcpuInfo.java
@@ -0,0 +1,12 @@
+package org.libvirt.jna;
+
+import com.sun.jna.Structure;
+
+public class virVcpuInfo extends Structure
+{
+    public int number ;
+    public int state ;
+    public long cpuTime ;
+    public int cpu ;
+ 
+}
diff --git a/src/test.java b/src/test.java
index a7d7ec8..40e0afc 100644
--- a/src/test.java
+++ b/src/test.java
@@ -177,81 +177,93 @@ public class test {
                
                //Domain stuff
                
-//             try{
+               try{
 //
 //                     
 //                     //Domain lookup
-//                     //Domain testDomain=conn.domainLookupByID(1);
-//                     //Domain testDomain=conn.domainLookupByName("test");
-//                     //Domain 
testDomain=conn.domainLookupByUUIDString("004b96e1-2d78-c30f-5aa5-f03c87d21e69");
+                       //Domain testDomain=conn.domainLookupByID(1);
+                       //Domain testDomain=conn.domainLookupByName("test");
+                       //Domain 
testDomain=conn.domainLookupByUUIDString("004b96e1-2d78-c30f-5aa5-f03c87d21e69");
+                   Domain testDomain = conn.domainLookupByID(1);
+                   System.out.println("domainLookupByID: " + testDomain) ;
+            testDomain = conn.domainLookupByName("test");
+            System.out.println("domainLookupByName: " + testDomain) ;          
    
 //                     Domain testDomain=conn.domainLookupByUUID(UUID);
-//                     
-//                     //Exercise the getter methods on the default domain
-//                     System.out.println("virDomainGetXMLDesc:" + 
testDomain.getXMLDesc(0));
-//                     System.out.println("virDomainGetAutostart:" + 
testDomain.getAutostart());
-//                     System.out.println("virDomainGetConnect:" + 
testDomain.getConnect());
-//                     System.out.println("virDomainGetIDt:" + 
testDomain.getID());
-//                     System.out.println("virDomainGetInfo:" + 
testDomain.getInfo());
-//                     System.out.println("virDomainGetMaxMemory:" + 
testDomain.getMaxMemory());
-//                     //Should fail, test driver does not support it
-//                     //System.out.println("virDomainGetMaxVcpus:" + 
testDomain.getMaxVcpus());
-//                     System.out.println("virDomainGetName:" + 
testDomain.getName());
-//                     System.out.println("virDomainGetOSType:" + 
testDomain.getOSType());
-//                     System.out.println("virDomainGetSchedulerType:" + 
testDomain.getSchedulerType());
-//                     System.out.println("virDomainGetSchedulerParameters:" + 
testDomain.getSchedulerParameters());
-//                     //Iterate over the parameters the painful way
-//                     for(SchedParameter c: 
testDomain.getSchedulerParameters()){
-//                             if (c instanceof SchedIntParameter)
-//                                     System.out.println("Int:" + 
((SchedIntParameter)c).field +":"+ ((SchedIntParameter)c).value);
-//                             if (c instanceof SchedUintParameter)
-//                                     System.out.println("Uint:" + 
((SchedUintParameter)c).field  +":"+  ((SchedUintParameter)c).value);
-//                             if (c instanceof SchedLongParameter)
-//                                     System.out.println("Long:" + 
((SchedLongParameter)c).field  +":"+  ((SchedLongParameter)c).value);
-//                             if (c instanceof SchedUlongParameter)
-//                                     System.out.println("Ulong:" + 
((SchedUlongParameter)c).field  +":"+  ((SchedUlongParameter)c).value);
-//                             if (c instanceof SchedDoubleParameter)
-//                                     System.out.println("Double:" + 
((SchedDoubleParameter)c).field  +":"+  ((SchedDoubleParameter)c).value);
-//                             if (c instanceof SchedBooleanParameter)
-//                                     System.out.println("Boolean:" + 
((SchedBooleanParameter)c).field  +":"+  ((SchedBooleanParameter)c).value);
-//                     }
-//                     //Iterate over the parameters the easy way
-//                     for(SchedParameter c: 
testDomain.getSchedulerParameters()){
-//                             System.out.println(c.getTypeAsString() +":"+ 
c.field +":"+  c.getValueAsString());
-//                     }
-//                     System.out.println("virDomainGetUUID:" + 
testDomain.getUUID());
-//                     for(int c: testDomain.getUUID())
-//                             System.out.print(Integer.toHexString(c));
-//                     System.out.println();
-//                     System.out.println("virDomainGetUUIDString:" + 
testDomain.getUUIDString());
-//                     //Should fail, unimplemented in test driver             
-//                     //System.out.println("virDomainGetVcpusInfo:" + 
testDomain.getVcpusInfo());
-//                     //Same as above
-//                     //System.out.println("virDomainGetVcpusCpuMap:" + 
testDomain.getVcpusCpuMaps());
-//                     //Should test pinVcpu, when we test with real xen
-//                     //Here
-//                     //Attach default network to test domain
-//                     //System.out.println("virDomainGetVcpusCpuMap:" + 
testDomain.getVcpusCpuMaps());
-//                     
-//                     //Should test interfacestats and blockstats with real 
xen
-//                     
-//                     //Close the connection
-//                     
-//                     conn.close();
-//             } catch (LibvirtException e){
-//                     System.out.println("exception caught:"+e);
-//                     System.out.println(e.getError());
-//             }
-//             
-//             
-//             
-//             try{
-//                     //We should get an exception, not a crash
-//                     System.out.println(conn.getHostName());
-//             }catch (LibvirtException e){
-//                     System.out.println("exception caught:"+e);
-//                     System.out.println(e.getError());
-//             }
-//             System.out.println();
+//          System.out.println("domainLookupByUUID: " + testDomain) ;          
     
+                       
+                       //Exercise the getter methods on the default domain
+                       System.out.println("virDomainGetXMLDesc:" + 
testDomain.getXMLDesc(0));
+                       System.out.println("virDomainGetAutostart:" + 
testDomain.getAutostart());
+                       System.out.println("virDomainGetConnect:" + 
testDomain.getConnect());
+                       System.out.println("virDomainGetID:" + 
testDomain.getID());
+                       System.out.println("virDomainGetInfo:" + 
testDomain.getInfo());
+                       System.out.println("virDomainGetMaxMemory:" + 
testDomain.getMaxMemory());
+                       //Should fail, test driver does not support it
+                       try {
+                           System.out.println("virDomainGetMaxVcpus:" + 
testDomain.getMaxVcpus());
+                   System.out.println(FIXME) ;     
+                       }
+                       catch (LibvirtException e) {
+                           
+                       }
+                       System.out.println("virDomainGetName:" + 
testDomain.getName());
+                       System.out.println("virDomainGetOSType:" + 
testDomain.getOSType());
+                       System.out.println("virDomainGetSchedulerType:" + 
testDomain.getSchedulerType());
+                       System.out.println("virDomainGetSchedulerParameters:" + 
testDomain.getSchedulerParameters());
+                       //Iterate over the parameters the painful way
+                       for(SchedParameter c: 
testDomain.getSchedulerParameters()){
+                               if (c instanceof SchedIntParameter)
+                                       System.out.println("Int:" + 
((SchedIntParameter)c).field +":"+ ((SchedIntParameter)c).value);
+                               if (c instanceof SchedUintParameter)
+                                       System.out.println("Uint:" + 
((SchedUintParameter)c).field  +":"+  ((SchedUintParameter)c).value);
+                               if (c instanceof SchedLongParameter)
+                                       System.out.println("Long:" + 
((SchedLongParameter)c).field  +":"+  ((SchedLongParameter)c).value);
+                               if (c instanceof SchedUlongParameter)
+                                       System.out.println("Ulong:" + 
((SchedUlongParameter)c).field  +":"+  ((SchedUlongParameter)c).value);
+                               if (c instanceof SchedDoubleParameter)
+                                       System.out.println("Double:" + 
((SchedDoubleParameter)c).field  +":"+  ((SchedDoubleParameter)c).value);
+                               if (c instanceof SchedBooleanParameter)
+                                       System.out.println("Boolean:" + 
((SchedBooleanParameter)c).field  +":"+  ((SchedBooleanParameter)c).value);
+                       }
+                       //Iterate over the parameters the easy way
+                       for(SchedParameter c: 
testDomain.getSchedulerParameters()){
+                               System.out.println(c.getTypeAsString() +":"+ 
c.field +":"+  c.getValueAsString());
+                       }
+                       System.out.println("virDomainGetUUID:" + 
testDomain.getUUID());
+            System.out.println(FIXME) ;                        
+                       for(int c: testDomain.getUUID())
+                               System.out.print(String.format("%02x", c));
+                       System.out.println();
+                       System.out.println("virDomainGetUUIDString:" + 
testDomain.getUUIDString());
+                       //Should fail, unimplemented in test driver             
+                       //System.out.println("virDomainGetVcpusInfo:" + 
testDomain.getVcpusInfo());
+                       //Same as above
+                       //System.out.println("virDomainGetVcpusCpuMap:" + 
testDomain.getVcpusCpuMaps());
+                       //Should test pinVcpu, when we test with real xen
+                       //Here
+                       //Attach default network to test domain
+                       //System.out.println("virDomainGetVcpusCpuMap:" + 
testDomain.getVcpusCpuMaps());
+                       
+                       //Should test interfacestats and blockstats with real 
xen
+                       
+                       //Close the connection
+                       
+                       conn.close();
+               } catch (LibvirtException e){
+                       System.out.println("exception caught:"+e);
+                       System.out.println(e.getError());
+               }
+               
+               
+               
+               try{
+                       //We should get an exception, not a crash
+                       System.out.println(conn.getHostName());
+               }catch (LibvirtException e){
+                       System.out.println("exception caught:"+e);
+                       System.out.println(e.getError());
+               }
+               System.out.println("Fini!");
        }
 
 }
-- 
1.6.0.6

--
Libvir-list mailing list
[email protected]
https://www.redhat.com/mailman/listinfo/libvir-list

Reply via email to