[libvirt] [PATCH] Initial work on the JNA port, still a work in progress

Bryan Kearney bkearney at redhat.com
Sat Jul 25 12:02:08 UTC 2009


---
 src/org/libvirt/Connect.java         |  336 +++++++++++++++++++---------------
 src/org/libvirt/Domain.java          |  183 +++++++++++--------
 src/org/libvirt/Error.java           |   21 ++
 src/org/libvirt/ErrorHandler.java    |   22 +++
 src/org/libvirt/Network.java         |   74 +++++---
 src/org/libvirt/NodeInfo.java        |   16 ++
 src/org/libvirt/jna/Libvirt.java     |   66 +++++++
 src/org/libvirt/jna/virError.java    |   19 ++
 src/org/libvirt/jna/virNodeInfo.java |   19 ++
 src/test.java                        |  237 ++++++++++++------------
 10 files changed, 630 insertions(+), 363 deletions(-)
 create mode 100644 src/org/libvirt/ErrorHandler.java
 create mode 100644 src/org/libvirt/jna/Libvirt.java
 create mode 100644 src/org/libvirt/jna/virError.java
 create mode 100644 src/org/libvirt/jna/virNodeInfo.java

diff --git a/src/org/libvirt/Connect.java b/src/org/libvirt/Connect.java
index 4271937..bc560d0 100644
--- a/src/org/libvirt/Connect.java
+++ b/src/org/libvirt/Connect.java
@@ -3,6 +3,14 @@ package org.libvirt;
 import org.libvirt.LibvirtException;
 import org.libvirt.StoragePool;
 import org.libvirt.StorageVol;
+import org.libvirt.jna.Libvirt;
+import org.libvirt.jna.virError;
+import org.libvirt.jna.virNodeInfo;
+
+import com.sun.jna.Native;
+import com.sun.jna.Pointer;
+import com.sun.jna.ptr.ByReference;
+import com.sun.jna.ptr.LongByReference;
 
 /**
  * The Connect object represents a connection to a local or remote hypervisor/driver.
@@ -14,17 +22,20 @@ public class Connect {
 
 	// Load the native part
 	static {
-		System.loadLibrary("virt_jni");
-		_virInitialize();
+		Libvirt.INSTANCE.virInitialize() ;
+		Libvirt.INSTANCE.virSetErrorFunc(0, ErrorHandler.INSTANCE) ;
 	}
 
-
 	/**
 	 * the native virConnectPtr.
 	 */
-	long VCP;
+	protected Pointer VCP;
 
-	private static native int _virInitialize();
+
+	/**
+	 * The libvirt library
+	 */
+	Libvirt libvirt = Libvirt.INSTANCE ;
 
 	/**
 	 * Construct a Connect object from a known native virConnectPtr
@@ -32,8 +43,9 @@ public class Connect {
 	 *
 	 * @param VCP	the virConnectPtr pointing to an existing native virConnect structure
 	 */
+	@Deprecated
 	Connect(long VCP) {
-		this.VCP = VCP;
+	    throw new RuntimeException("No longer supported") ;
 	}
 
 	/**
@@ -46,10 +58,13 @@ public class Connect {
 	 */
 	public Connect(String uri, boolean readOnly) throws LibvirtException {
 		if (readOnly) {
-			VCP = _openReadOnly(uri);
+			VCP = libvirt.virConnectOpenReadOnly(uri) ;
 		} else {
-			VCP = _open(uri);
+            VCP = libvirt.virConnectOpen(uri) ;
 		}
+		// Check for an error		
+//        processError(libvirt.virGetLastError()) ;
+        libvirt.virConnSetErrorFunc(VCP,0,ErrorHandler.INSTANCE) ;		
 	}
 
 	/**
@@ -63,7 +78,8 @@ public class Connect {
 	 * @see <a href="http://libvirt.org/uri.html">The URI documentation</a>
 	 */
 	public Connect(String uri, ConnectAuth auth, int flags) throws LibvirtException {
-		VCP = _openAuth(uri, auth, flags);
+        throw new RuntimeException("Not Implemented") ;      
+//		VCP = _openAuth(uri, auth, flags);
 	}
 
 	/**
@@ -74,7 +90,7 @@ public class Connect {
 	 * @see <a href="http://libvirt.org/uri.html">The URI documentation</a>
 	 */
 	public Connect(String uri) throws LibvirtException {
-		VCP = _open(uri);
+        VCP = libvirt.virConnectOpen(uri) ;
 	}
 
 	public void finalize() throws LibvirtException {
@@ -88,15 +104,13 @@ public class Connect {
 	 * @throws LibvirtException
 	 */
 	public void close() throws LibvirtException {
-		_close(VCP);
+	    libvirt.virConnectClose(VCP) ;
 		// If leave an invalid pointer dangling around JVM crashes and burns if
 		// someone tries to call a method on us
 		// We rely on the underlying libvirt error handling to detect that it's called with a null virConnectPointer
-		VCP = 0;
+		VCP = null;
 	}
 
-	private native int _close(long VCP) throws LibvirtException;
-
 
 	/**
 	 * Provides capabilities of the hypervisor / driver.
@@ -107,11 +121,9 @@ public class Connect {
 	 *
 	 */
 	public String getCapabilities() throws LibvirtException {
-		return _getCapabilities(VCP);
+	    return libvirt.virConnectGetCapabilities(VCP) ;
 	}
 
-	private native String _getCapabilities(long VCP) throws LibvirtException;
-
 
 	/**
 	 * Returns the system hostname on which the hypervisor is running.
@@ -122,11 +134,11 @@ public class Connect {
 	 * @throws LibvirtException
 	 */
 	public String getHostName() throws LibvirtException {
-		return _getHostName(VCP);
+		String returnValue = libvirt.virConnectGetHostname(VCP) ;
+        return returnValue ;
+		
 	}
 
-	private native String _getHostName(long VCP) throws LibvirtException;
-
 
 	/**
 	 * Provides the maximum number of virtual CPUs supported for a guest VM of a specific type.
@@ -137,12 +149,9 @@ public class Connect {
 	 * @throws LibvirtException
 	 */
 	public int getMaxVcpus(String type) throws LibvirtException {
-		return _getMaxVcpus(VCP, type);
+		return libvirt.virConnectGetMaxVcpus(VCP, type) ;
 	}
 
-	private native int _getMaxVcpus(long VCP, String type)
-	throws LibvirtException;
-
 
 	/**
 	 * Gets the name of the Hypervisor software used.
@@ -151,11 +160,10 @@ public class Connect {
 	 * @throws LibvirtException
 	 */
 	public String getType() throws LibvirtException {
-		return _getType(VCP);
+		return libvirt.virConnectGetType(VCP) ;
 	}
 
-	private native String _getType(long VCP) throws LibvirtException;
-
+	
 
 	/**
 	 * Returns the URI (name) of the hypervisor connection.
@@ -166,10 +174,9 @@ public class Connect {
 	 * @throws LibvirtException
 	 */
 	public String getURI() throws LibvirtException {
-		return _getURI(VCP);
+		return libvirt.virConnectGetURI(VCP) ;
 	}
 
-	private native String _getURI(long VCP) throws LibvirtException;
 
 
 	/**
@@ -181,24 +188,25 @@ public class Connect {
 	 * @throws LibvirtException
 	 */
 	public long getVersion() throws LibvirtException {
-		return _getVersion(VCP);
+	    LongByReference hvVer = new LongByReference() ;
+		libvirt.virConnectGetVersion(VCP, hvVer) ;
+		return hvVer.getValue();
 	}
 
-	private native long _getVersion(long VCP) throws LibvirtException;
-
 
 	/**
 	 * Gets the version of the native libvirt library that the JNI part is linked to.
 	 *
-//	 * @return major * 1,000,000 + minor * 1,000 + release
+	 * @return major * 1,000,000 + minor * 1,000 + release
 	 * @throws LibvirtException
 	 */
 	public long getLibVirVersion() throws LibvirtException {
-		return _virGetLibVirVersion();
+        LongByReference libVer = new LongByReference() ;
+        LongByReference typeVer = new LongByReference() ;        
+        libvirt.virGetVersion(libVer, null, typeVer) ;
+        return libVer.getValue();	    
 	}
 
-	private native long _virGetLibVirVersion() throws LibvirtException;
-
 
 	/**
 	 * Returns the version of the hypervisor against which the library was compiled.
@@ -209,12 +217,12 @@ public class Connect {
 	 * @throws LibvirtException
 	 */
 	public long GetHypervisorVersion(String type) throws LibvirtException {
-		return _virGetHypervisorVersion(type);
+        LongByReference libVer = new LongByReference() ;
+        LongByReference typeVer = new LongByReference() ;        
+        libvirt.virGetVersion(libVer, type, typeVer) ;
+        return libVer.getValue();       
 	}
 
-	private native long _virGetHypervisorVersion(String type)
-	throws LibvirtException;
-
 
 	/**
 	 * Lists the names of the defined but inactive domains
@@ -223,12 +231,14 @@ public class Connect {
 	 * @throws LibvirtException
 	 */
 	public String[] listDefinedDomains() throws LibvirtException {
-		return _listDefinedDomains(VCP);
+	    int maxnames = this.numOfDefinedDomains() ;
+	    String[] names = new String[maxnames] ;
+        if (maxnames > 0) {	    
+            libvirt.virConnectListDefinedDomains(VCP, names, maxnames) ;
+        }
+	    return names ;
 	}
 
-	private native String[] _listDefinedDomains(long VCP)
-	throws LibvirtException;
-
 
 	/**
 	 * Lists the inactive networks
@@ -237,12 +247,15 @@ public class Connect {
 	 * @throws LibvirtException
 	 */
 	public String[] listDefinedNetworks() throws LibvirtException {
-		return _listDefinedNetworks(VCP);
+        int maxnames = this.numOfDefinedNetworks() ;
+        String[] names = new String[maxnames] ;
+        
+        if (maxnames > 0) {
+            libvirt.virConnectListDefinedNetworks(VCP, names, maxnames) ;
+        }
+        return names ;
 	}
 
-	private native String[] _listDefinedNetworks(long VCP)
-	throws LibvirtException;
-
 
 	/**
 	 * Lists the active domains.
@@ -251,10 +264,15 @@ public class Connect {
 	 * @throws LibvirtException
 	 */
 	public int[] listDomains() throws LibvirtException {
-		return _listDomains(VCP);
+        int maxids = this.numOfDomains() ;
+        int[] ids = new int[maxids] ;
+        
+        if (maxids > 0) {
+            libvirt.virConnectListDomains(VCP, ids, maxids) ;
+        }
+        return ids ;
 	}
 
-	private native int[] _listDomains(long VCP) throws LibvirtException;
 
 	/**
 	 * Lists the active networks.
@@ -263,11 +281,15 @@ public class Connect {
 	 * @throws LibvirtException
 	 */
 	public String[] listNetworks() throws LibvirtException {
-		return _listNetworks(VCP);
+        int maxnames = this.numOfNetworks() ;
+        String[] names = new String[maxnames] ;
+        
+        if (maxnames > 0) {
+            libvirt.virConnectListNetworks(VCP, names, maxnames) ;
+        }
+        return names ;
 	}
 
-	private native String[] _listNetworks(long VCP) throws LibvirtException;
-
 
 	/**
 	 * Provides the number of inactive domains.
@@ -276,10 +298,9 @@ public class Connect {
 	 * @throws LibvirtException
 	 */
 	public int numOfDefinedDomains() throws LibvirtException {
-		return _numOfDefinedDomains(VCP);
+	    return libvirt.virConnectNumOfDefinedDomains(VCP) ;
 	}
 
-	private native int _numOfDefinedDomains(long VCP) throws LibvirtException;
 
 
 	/**
@@ -289,11 +310,10 @@ public class Connect {
 	 * @throws LibvirtException
 	 */
 	public int numOfDefinedNetworks() throws LibvirtException {
-		return _numOfDefinedNetworks(VCP);
+        return libvirt.virConnectNumOfDefinedNetworks(VCP) ;
 	}
 
-	private native int _numOfDefinedNetworks(long VCP) throws LibvirtException;
-
+	
 	/**
 	 * Provides the number of active domains.
 	 *
@@ -301,11 +321,9 @@ public class Connect {
 	 * @throws LibvirtException
 	 */
 	public int numOfDomains() throws LibvirtException {
-		return _numOfDomains(VCP);
+        return libvirt.virConnectNumOfDomains(VCP) ;
 	}
 
-	private native int _numOfDomains(long VCP) throws LibvirtException;
-
 
 	/**
 	 * Provides the number of active networks.
@@ -314,19 +332,9 @@ public class Connect {
 	 * @throws LibvirtException
 	 */
 	public int numOfNetworks() throws LibvirtException {
-		return _numOfNetworks(VCP);
+        return libvirt.virConnectNumOfNetworks(VCP) ;
 	}
 
-	private native int _numOfNetworks(long VCP) throws LibvirtException;
-
-	// open
-	private native long _open(String uri) throws LibvirtException;
-
-	// openReadOnly
-	private native long _openReadOnly(String uri) throws LibvirtException;
-
-	// openAuth
-	private native long _openAuth(String uri, ConnectAuth auth, int flags) throws LibvirtException;
 
 	// virNetwork stuff
 
@@ -339,12 +347,9 @@ public class Connect {
 	 */
 	public Network networkLookupByName(String name)
 	throws LibvirtException {
-		return new Network(this, _virNetworkLookupByName(VCP, name));
+		return new Network(this, libvirt.virNetworkLookupByName(VCP, name));
 	}
 
-	private native long _virNetworkLookupByName(long VCP, String name)
-	throws LibvirtException;
-
 
 	/**
 	 * Looks up a network based on its UUID represented as an int array.
@@ -356,11 +361,14 @@ public class Connect {
 	 */
 	public Network networkLookupByUUID(int[] UUID)
 	throws LibvirtException {
-		return new Network(this, _virNetworkLookupByUUID(VCP, UUID));
+	    StringBuilder uuidString = new StringBuilder() ;
+	    for (int i : UUID) {
+	        uuidString.append(i) ;
+	    }
+		return new Network(this, libvirt.virNetworkLookupByUUID(VCP, uuidString.toString()));
 	}
 
-	private native long _virNetworkLookupByUUID(long VCP, int[] UUID);
-
+	
 	/**
 	 * Looks up a network based on its UUID represented as a String.
 	 *
@@ -370,11 +378,11 @@ public class Connect {
 	 */
 	public Network networkLookupByUUIDString(String UUID)
 	throws LibvirtException {
-		return new Network(this, _virNetworkLookupByUUIDString(VCP, UUID));
+        return new Network(this, libvirt.virNetworkLookupByUUIDString(VCP, UUID));
 	}
 
-	private native long _virNetworkLookupByUUIDString(long VCP, String UUID)
-	throws LibvirtException;
+//	private native long _virNetworkLookupByUUIDString(long VCP, String UUID)
+//	throws LibvirtException;
 
 
 	/**
@@ -388,12 +396,9 @@ public class Connect {
 	 */
 	public Network networkCreateXML(String xmlDesc)
 	throws LibvirtException {
-		return new Network(this, _virNetworkCreateXML(VCP, xmlDesc));
+		return new Network(this, libvirt.virNetworkCreateXML(VCP, xmlDesc));
 	}
 
-	private native long _virNetworkCreateXML(long VCP, String xmlDesc)
-	throws LibvirtException;
-
 
 	/**
 	 * Defines a network, but does not create it.
@@ -406,12 +411,10 @@ public class Connect {
 	 */
 	public Network networkDefineXML(String xmlDesc)
 	throws LibvirtException {
-		return new Network(this, _virNetworkDefineXML(VCP, xmlDesc));
+        return new Network(this, libvirt.virNetworkDefineXML(VCP, xmlDesc));
 	}
 
-	private native long _virNetworkDefineXML(long VCP, String xmlDesc)
-	throws LibvirtException;
-
+	
 	/**
 	 * Finds a domain based on the hypervisor ID number.
 	 *
@@ -420,11 +423,12 @@ public class Connect {
 	 * @throws LibvirtException
 	 */
 	public Domain domainLookupByID(int id) throws LibvirtException {
-		return new Domain(this, _virDomainLookupByID(VCP, id));
+	    throw new RuntimeException("Not Implemented") ;	    
+//		return new Domain(this, _virDomainLookupByID(VCP, id));
 	}
 
-	private native long _virDomainLookupByID(long VCP, int id)
-	throws LibvirtException;
+//	private native long _virDomainLookupByID(long VCP, int id)
+//	throws LibvirtException;
 
 	/**
 	 * Looks up a domain based on its name.
@@ -434,11 +438,12 @@ public class Connect {
 	 * @throws LibvirtException
 	 */
 	public Domain domainLookupByName(String name) throws LibvirtException {
-		return new Domain(this, _virDomainLookupByName(VCP, name));
+	    throw new RuntimeException("Not Implemented") ;	    
+//		return new Domain(this, _virDomainLookupByName(VCP, name));
 	}
 
-	private native long _virDomainLookupByName(long VCP, String name)
-	throws LibvirtException;
+//	private native long _virDomainLookupByName(long VCP, String name)
+//	throws LibvirtException;
 
 
 	/**
@@ -450,11 +455,12 @@ public class Connect {
 	 * @throws LibvirtException
 	 */
 	public Domain domainLookupByUUID(int[] UUID) throws LibvirtException {
-		return new Domain(this, _virDomainLookupByUUID(VCP, UUID));
+	    throw new RuntimeException("Not Implemented") ;	    
+//		return new Domain(this, _virDomainLookupByUUID(VCP, UUID));
 	}
 
-	private native long _virDomainLookupByUUID(long VCP, int[] UUID)
-	throws LibvirtException;
+//	private native long _virDomainLookupByUUID(long VCP, int[] UUID)
+//	throws LibvirtException;
 
 	/**
 	 * Looks up a domain  based on its UUID in String form.
@@ -465,11 +471,9 @@ public class Connect {
 	 */
 	public Domain domainLookupByUUIDString(String UUID)
 	throws LibvirtException {
-		return new Domain(this, _virDomainLookupByUUIDString(VCP, UUID));
+		return new Domain(this, libvirt.virDomainLookupByUUIDString(VCP, UUID));
 	}
 
-	private native long _virDomainLookupByUUIDString(long VCP, String UUID)
-	throws LibvirtException;
 
 	/**
 	 * Launches a new Linux guest domain.
@@ -484,11 +488,9 @@ public class Connect {
 	 */
 	public Domain domainCreateLinux(String xmlDesc, int flags)
 	throws LibvirtException {
-		return new Domain(this, _virDomainCreateLinux(VCP, xmlDesc, flags));
+        return new Domain(this, libvirt.virDomainCreateLinux(VCP, xmlDesc, flags));
 	}
 
-	private native long _virDomainCreateLinux(long VCP, String xmlDesc,
-			int flags) throws LibvirtException;
 
 	/**
 	 * Defines a domain, but does not start it
@@ -499,11 +501,21 @@ 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, _virDomainDefineXML(VCP, xmlDesc));
+        return new Domain(this, libvirt.virDomainDefineXML(VCP, xmlDesc));
 	}
-
-	private native long _virDomainDefineXML(long VCP, String xmlDesc)
-	throws LibvirtException;
+	
+	
+    /**
+     * Launch a new guest domain, based on an XML description
+     *
+     * @param xmlDesc
+     * @return the Domain object
+     * @throws LibvirtException
+     * @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));
+    }	
 
 
 	/**
@@ -513,11 +525,12 @@ public class Connect {
 	 * @throws LibvirtException
 	 */
 	public void restore(String from) throws LibvirtException {
-		_virDomainRestore(VCP, from);
+	    throw new RuntimeException("Not Implemented") ;
+//		_virDomainRestore(VCP, from);
 	}
 
-	private native int _virDomainRestore(long VCP, String from)
-	throws LibvirtException;
+//	private native int _virDomainRestore(long VCP, String from)
+//	throws LibvirtException;
 
 	/**
 	 * Returns a NodeInfo object describing the hardware configuration of the node.
@@ -526,11 +539,12 @@ public class Connect {
 	 * @throws LibvirtException
 	 */
 	public NodeInfo nodeInfo() throws LibvirtException {
-		return _virNodeInfo(VCP);
+	    virNodeInfo vInfo = new virNodeInfo();
+	    libvirt.virNodeGetInfo(VCP,vInfo) ;
+	    return new NodeInfo(vInfo) ;
 	}
 
-	private native NodeInfo _virNodeInfo(long VCP) throws LibvirtException;
-
+	
 	/**
 	 * change the amount of memory reserved to Domain0.
 	 * Domain0 is the domain where the application runs.
@@ -540,10 +554,11 @@ public class Connect {
 	 * @throws LibvirtException
 	 */
 	public void setDom0Memory(long memory) throws LibvirtException {
-		_setDom0Memory(memory);
+	    throw new RuntimeException("Not Implemented") ;
+//		_setDom0Memory(memory);
 	}
 
-	private native int _setDom0Memory(long memory) throws LibvirtException;
+//	private native int _setDom0Memory(long memory) throws LibvirtException;
 
 	/**
 	 * Provides the number of inactive storage pools
@@ -552,10 +567,11 @@ public class Connect {
 	 * @throws LibvirtException
 	 */
 	public int numOfDefinedStoragePools() throws LibvirtException {
-		return _numOfDefinedStoragePools(VCP);
+	    throw new RuntimeException("Not Implemented") ;
+//		return _numOfDefinedStoragePools(VCP);
 	}
 
-	private native int _numOfDefinedStoragePools(long VCP) throws LibvirtException;
+//	private native int _numOfDefinedStoragePools(long VCP) throws LibvirtException;
 
 	/**
 	 * Provides the number of active storage pools
@@ -564,10 +580,11 @@ public class Connect {
 	 * @throws LibvirtException
 	 */
 	public int numOfStoragePools() throws LibvirtException {
-		return _numOfStoragePools(VCP);
+	    throw new RuntimeException("Not Implemented") ;	    
+//		return _numOfStoragePools(VCP);
 	}
 
-	private native int _numOfStoragePools(long VCP) throws LibvirtException;
+//	private native int _numOfStoragePools(long VCP) throws LibvirtException;
 
 	/**
 	 * Provides the list of names of inactive storage pools.
@@ -576,11 +593,12 @@ public class Connect {
 	 * @throws LibvirtException
 	 */
 	public String[] listDefinedStoragePools() throws LibvirtException {
-		return _listDefinedStoragePools(VCP);
+	    throw new RuntimeException("Not Implemented") ;	    
+//		return _listDefinedStoragePools(VCP);
 	}
 
-	private native String[] _listDefinedStoragePools(long VCP)
-	throws LibvirtException;
+//	private native String[] _listDefinedStoragePools(long VCP)
+//	throws LibvirtException;
 
 	/**
 	 * Provides the list of names of active storage pools.
@@ -589,11 +607,12 @@ public class Connect {
 	 * @throws LibvirtException
 	 */
 	public String[] listStoragePools() throws LibvirtException {
-		return _listStoragePools(VCP);
+	    throw new RuntimeException("Not Implemented") ;	    
+//		return _listStoragePools(VCP);
 	}
 
-	private native String[] _listStoragePools(long VCP)
-	throws LibvirtException;
+//	private native String[] _listStoragePools(long VCP)
+//	throws LibvirtException;
 
 	/**
 	 * Create a new storage based on its XML description.
@@ -606,11 +625,12 @@ public class Connect {
 	 */
 	public StoragePool storagePoolCreateXML(String xmlDesc, int flags)
 	throws LibvirtException {
-		return new StoragePool(this, _virStoragePoolCreateXML(VCP, xmlDesc, flags));
+	    throw new RuntimeException("Not Implemented") ;
+//		return new StoragePool(this, _virStoragePoolCreateXML(VCP, xmlDesc, flags));
 	}
 
-	private native long _virStoragePoolCreateXML(long VCP, String xmlDesc, int flags)
-	throws LibvirtException;
+//	private native long _virStoragePoolCreateXML(long VCP, String xmlDesc, int flags)
+//	throws LibvirtException;
 
 	/**
 	 * Define a new inactive storage pool based on its XML description.
@@ -623,11 +643,12 @@ public class Connect {
 	 */
 	public StoragePool storagePoolDefineXML(String xml, int flags)
 	throws LibvirtException {
-		return new StoragePool(this, _virStoragePoolDefineXML(VCP, xml, flags));
+	    throw new RuntimeException("Not Implemented") ;	    
+//		return new StoragePool(this, _virStoragePoolDefineXML(VCP, xml, flags));
 	}
 
-	private native long _virStoragePoolDefineXML(long VCP, String xml, int flags)
-	throws LibvirtException;
+//	private native long _virStoragePoolDefineXML(long VCP, String xml, int flags)
+//	throws LibvirtException;
 
 	/**
 	 * Fetch a storage pool based on its unique name
@@ -638,11 +659,12 @@ public class Connect {
 	 */
 	public StoragePool storagePoolLookupByName(String name)
 	throws LibvirtException {
-		return new StoragePool(this, _virStoragePoolLookupByName(VCP, name));
+	    throw new RuntimeException("Not Implemented") ;	    
+//		return new StoragePool(this, _virStoragePoolLookupByName(VCP, name));
 	}
 
-	private native long _virStoragePoolLookupByName(long VCP, String name)
-	throws LibvirtException;
+//	private native long _virStoragePoolLookupByName(long VCP, String name)
+//	throws LibvirtException;
 
 	/**
 	 * Fetch a storage pool based on its globally unique id
@@ -653,10 +675,11 @@ public class Connect {
 	 */
 	public StoragePool storagePoolLookupByUUID(int[] UUID)
 	throws LibvirtException {
-		return new StoragePool(this, _virStoragePoolLookupByUUID(VCP, UUID));
+	    throw new RuntimeException("Not Implemented") ;	    
+//		return new StoragePool(this, _virStoragePoolLookupByUUID(VCP, UUID));
 	}
 
-	private native long _virStoragePoolLookupByUUID(long VCP, int[] UUID);
+//	private native long _virStoragePoolLookupByUUID(long VCP, int[] UUID);
 
 	/**
 	 * Fetch a storage pool based on its globally unique id
@@ -667,11 +690,12 @@ public class Connect {
 	 */
 	public StoragePool storagePoolLookupByUUIDString(String UUID)
 	throws LibvirtException {
-		return new StoragePool(this, _virStoragePoolLookupByUUIDString(VCP, UUID));
+	    throw new RuntimeException("Not Implemented") ;	    
+//		return new StoragePool(this, _virStoragePoolLookupByUUIDString(VCP, UUID));
 	}
 
-	private native long _virStoragePoolLookupByUUIDString(long VCP, String UUID)
-	throws LibvirtException;
+//	private native long _virStoragePoolLookupByUUIDString(long VCP, String UUID)
+//	throws LibvirtException;
 
 	/**
 	 * Fetch a a storage volume based on its globally unique key
@@ -680,10 +704,11 @@ public class Connect {
 	 * @return a storage volume
 	 */
 	public StorageVol storageVolLookupByKey(String key){
-		return new StorageVol(this, _virStorageVolLookupByKey(VCP, key));
+	    throw new RuntimeException("Not Implemented") ;
+//		return new StorageVol(this, _virStorageVolLookupByKey(VCP, key));
 	}
 
-	private native long _virStorageVolLookupByKey(long VCP, String key);
+//	private native long _virStorageVolLookupByKey(long VCP, String key);
 
 	/**
 	 * Fetch a storage volume based on its locally (host) unique path
@@ -692,10 +717,23 @@ public class Connect {
 	 * @return	a storage volume
 	 */
 	public StorageVol storageVolLookupByPath(String path){
-		return new StorageVol(this, _virStorageVolLookupByPath(VCP, path));
-	}
-
-	private native long _virStorageVolLookupByPath(long VCP, String path);
-
-
+	    throw new RuntimeException("Not Implemented") ;	    
+//		return new StorageVol(this, _virStorageVolLookupByPath(VCP, path));
+	}
+
+//	private native long _virStorageVolLookupByPath(long VCP, String path);
+
+//    @Override
+//    public void handleError(Pointer userData, virError error) throws LibvirtException {
+//        System.out.println("Hello") ;        
+//        this.processError(error) ;
+//    }
+//
+//    protected void processError(virError vError) throws LibvirtException {
+//        System.out.println("Hello") ;
+//        if (vError != null) {
+//            Error error = new Error(vError) ;
+//            throw new LibvirtException(error) ;
+//        }
+//    }
 }
diff --git a/src/org/libvirt/Domain.java b/src/org/libvirt/Domain.java
index 8e7fa74..e9b5d57 100644
--- a/src/org/libvirt/Domain.java
+++ b/src/org/libvirt/Domain.java
@@ -1,5 +1,7 @@
 package org.libvirt;
 
+import com.sun.jna.Pointer;
+
 public class Domain {
 
 	static final class CreateFlags{
@@ -27,7 +29,7 @@ public class Domain {
 	/**
 	 * the native virDomainPtr.
 	 */
-	private long  VDP;
+	private Pointer  VDP;
 
 	/**
 	 * The Connect Object that represents the Hypervisor of this Domain
@@ -42,7 +44,7 @@ public class Domain {
 	 * @param virConnect the Domain's hypervisor
 	 * @param VDP the native virDomainPtr
 	 */
-	Domain(Connect virConnect, long VDP){
+	Domain(Connect virConnect, Pointer VDP){
 		this.virConnect = virConnect;
 		this.VDP = VDP;
 	}
@@ -57,10 +59,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);
+//		return _getXMLDesc(VDP, flags);
+        throw new RuntimeException("Not Implemented") ;	    
 	}
 
-	private native String _getXMLDesc(long VDP, int flags) throws LibvirtException;
+//	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.
@@ -69,11 +72,12 @@ public class Domain {
 	 * @throws LibvirtException
 	 */
 	public boolean getAutostart() throws LibvirtException{
-		return _getAutostart(VDP);
+//		return _getAutostart(VDP);
+        throw new RuntimeException("Not Implemented") ;	    
 	}
 
 
-	private native boolean _getAutostart(long VDP) throws LibvirtException;
+//	private native boolean _getAutostart(long VDP) throws LibvirtException;
 
 	/**
 	 * Configures the network to be automatically started when the host machine boots.
@@ -82,10 +86,11 @@ public class Domain {
 	 * @throws LibvirtException
 	 */
 	public void setAutostart(boolean autostart) throws LibvirtException{
-			_setAutostart(VDP, autostart);
+//			_setAutostart(VDP, autostart);
+        throw new RuntimeException("Not Implemented") ;	    
 	}
 
-	private native int _setAutostart(long VDP, boolean autostart) throws LibvirtException;
+//	private native int _setAutostart(long VDP, boolean autostart) throws LibvirtException;
 
 	/**
 	 * Provides the connection object associated with a domain.
@@ -103,10 +108,11 @@ public class Domain {
 	 * @throws LibvirtException
 	 */
 	public int getID() throws LibvirtException{
-		return _getID(VDP);
+//		return _getID(VDP);
+        throw new RuntimeException("Not Implemented") ;	    
 	}
 
-	private native int _getID(long VDP) throws LibvirtException;
+//	private native int _getID(long VDP) throws LibvirtException;
 
 
 	/**
@@ -117,10 +123,11 @@ public class Domain {
 	 * @throws LibvirtException
 	 */
 	public DomainInfo getInfo() throws LibvirtException{
-		return _getInfo(VDP);
+//		return _getInfo(VDP);
+        throw new RuntimeException("Not Implemented") ;	    
 	}
 
-	private native DomainInfo _getInfo(long VDP) throws LibvirtException;
+//	private native DomainInfo _getInfo(long VDP) throws LibvirtException;
 
 	/**
 	 * Retrieve the maximum amount of physical memory allocated to a domain.
@@ -129,10 +136,11 @@ public class Domain {
 	 * @throws LibvirtException
 	 */
 	public long getMaxMemory() throws LibvirtException{
-		return _getMaxMemory(VDP);
+//		return _getMaxMemory(VDP);
+        throw new RuntimeException("Not Implemented") ;	    
 	}
 
-	private native long _getMaxMemory(long VDP) throws LibvirtException;
+//	private native long _getMaxMemory(long VDP) throws LibvirtException;
 
 	/**
 	 * * Dynamically change the maximum amount of physical memory allocated to a domain.
@@ -142,10 +150,11 @@ public class Domain {
 	 * @throws LibvirtException
 	 */
 	public void setMaxMemory(long memory) throws LibvirtException{
-		 _setMaxMemory(VDP, memory);
+//		 _setMaxMemory(VDP, memory);
+        throw new RuntimeException("Not Implemented") ;	    
 	}
 
-	private native long _setMaxMemory(long VDP,  long memory) throws LibvirtException;
+//	private native long _setMaxMemory(long VDP,  long memory) throws LibvirtException;
 
 
 	/**
@@ -157,10 +166,11 @@ public class Domain {
 	 * @throws LibvirtException
 	 */
 	public int getMaxVcpus() throws LibvirtException{
-		return _getMaxVcpus(VDP);
+//		return _getMaxVcpus(VDP);
+        throw new RuntimeException("Not Implemented") ;	    
 	}
 
-	private native int _getMaxVcpus(long VDP) throws LibvirtException;
+//	private native int _getMaxVcpus(long VDP) throws LibvirtException;
 
 
 	/**
@@ -170,10 +180,11 @@ public class Domain {
 	 * @throws LibvirtException
 	 */
 	public String getName() throws LibvirtException{
-		return _getName(VDP);
+//		return _getName(VDP);
+        throw new RuntimeException("Not Implemented") ;	    
 	}
 
-	private native String _getName(long VDP) throws LibvirtException;
+//	private native String _getName(long VDP) throws LibvirtException;
 
 	/**
 	 * Gets the type of domain operation system.
@@ -182,10 +193,11 @@ public class Domain {
 	 * @throws LibvirtException
 	 */
 	public String getOSType() throws LibvirtException{
-		return _getOSType(VDP);
+//		return _getOSType(VDP);
+        throw new RuntimeException("Not Implemented") ;	    
 	}
 
-	private native String _getOSType(long VDP) throws LibvirtException;
+//	private native String _getOSType(long VDP) throws LibvirtException;
 
 
 	/**
@@ -195,10 +207,11 @@ public class Domain {
 	 * @throws LibvirtException
 	 */
 	public SchedParameter[] getSchedulerParameters() throws LibvirtException{
-		return _getSchedulerParameters(VDP);
+//		return _getSchedulerParameters(VDP);
+        throw new RuntimeException("Not Implemented") ;	    
 	}
 
-	private native SchedParameter[] _getSchedulerParameters (long VDP) throws LibvirtException;
+//	private native SchedParameter[] _getSchedulerParameters (long VDP) throws LibvirtException;
 
 	/**
 	 * Changes the scheduler parameters
@@ -207,10 +220,11 @@ public class Domain {
 	 * @throws LibvirtException
 	 */
 	public void setSchedulerParameters(SchedParameter[] params) throws LibvirtException{
-		_setSchedulerParameters(VDP, params);
+//		_setSchedulerParameters(VDP, params);
+        throw new RuntimeException("Not Implemented") ;	    
 	}
 
-	private native int _setSchedulerParameters(long VDP, SchedParameter[] params) throws LibvirtException;
+//	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,
@@ -222,10 +236,11 @@ public class Domain {
 	 * @throws LibvirtException
 	 */
 	public String[] getSchedulerType() throws LibvirtException{
-		return _getSchedulerType(VDP);
+//		return _getSchedulerType(VDP);
+        throw new RuntimeException("Not Implemented") ;	    
 	}
 
-	private native String[] _getSchedulerType(long VDP) throws LibvirtException;
+//	private native String[] _getSchedulerType(long VDP) throws LibvirtException;
 
 	/**
 	 * Get the UUID for this domain.
@@ -235,10 +250,11 @@ public class Domain {
 	 * @see <a href="http://www.ietf.org/rfc/rfc4122.txt">rfc4122</a>
 	 */
 	public int[] getUUID() throws LibvirtException{
-		return _getUUID(VDP);
+//		return _getUUID(VDP);
+        throw new RuntimeException("Not Implemented") ;	    
 	}
 
-	private native int[] _getUUID(long VDP) throws LibvirtException;
+//	private native int[] _getUUID(long VDP) throws LibvirtException;
 
 	/**
 	 * Gets the UUID for this domain as string.
@@ -248,10 +264,11 @@ public class Domain {
 	 * @see <a href="http://www.ietf.org/rfc/rfc4122.txt">rfc4122</a>
 	 */
 	public String getUUIDString() throws LibvirtException{
-		return _getUUIDString(VDP);
+//		return _getUUIDString(VDP);
+        throw new RuntimeException("Not Implemented") ;	    
 	}
 
-	private native String _getUUIDString(long VDP) throws LibvirtException;
+//	private native String _getUUIDString(long VDP) throws LibvirtException;
 
 	/**
 	 * Extracts information about virtual CPUs of this domain
@@ -260,10 +277,11 @@ public class Domain {
 	 * @throws LibvirtException
 	 */
 	public VcpuInfo[] getVcpusInfo() throws LibvirtException{
-		return _getVcpusInfo(VDP);
+//		return _getVcpusInfo(VDP);
+        throw new RuntimeException("Not Implemented") ;	    
 	}
 
-	private native VcpuInfo[] _getVcpusInfo(long VDP) throws LibvirtException;
+//	private native VcpuInfo[] _getVcpusInfo(long VDP) throws LibvirtException;
 
 	/**
 	 * Returns the cpumaps for this domain
@@ -273,10 +291,11 @@ public class Domain {
 	 * @throws LibvirtException
 	 */
 	public int[] getVcpusCpuMaps() throws LibvirtException{
-		return _getVcpusCpuMaps(VDP);
+//		return _getVcpusCpuMaps(VDP);
+        throw new RuntimeException("Not Implemented") ;	    
 	}
 
-	private native int[] _getVcpusCpuMaps(long VDP) throws LibvirtException;
+//	private native int[] _getVcpusCpuMaps(long VDP) throws LibvirtException;
 
 
 	/**
@@ -288,10 +307,11 @@ public class Domain {
 	 * @throws LibvirtException
 	 */
 	public void pinVcpu(int vcpu, int[] cpumap) throws LibvirtException{
-		_pinVcpu(VDP, vcpu, cpumap);
+//		_pinVcpu(VDP, vcpu, cpumap);
+        throw new RuntimeException("Not Implemented") ;	    
 	}
 
-	private native int _pinVcpu(long VDP, int vcpu, int[]cpumap) throws LibvirtException;
+//	private native int _pinVcpu(long VDP, int vcpu, int[]cpumap) throws LibvirtException;
 
 	/**
 	 * Dynamically changes the number of virtual CPUs used by this domain.
@@ -302,10 +322,11 @@ public class Domain {
 	 * @throws LibvirtException
 	 */
 	public void setVcpus(int nvcpus) throws LibvirtException{
-		_setVcpus(VDP, nvcpus);
+//		_setVcpus(VDP, nvcpus);
+        throw new RuntimeException("Not Implemented") ;	    
 	}
 
-	private native int _setVcpus(long VDP, int nvcpus) throws LibvirtException;
+//	private native int _setVcpus(long VDP, int nvcpus) throws LibvirtException;
 
 	/**
 	 * Creates a virtual device attachment to backend.
@@ -314,10 +335,11 @@ public class Domain {
 	 * @throws LibvirtException
 	 */
 	public void attachDevice(String xmlDesc) throws LibvirtException{
-		_attachDevice(VDP, xmlDesc);
+//		_attachDevice(VDP, xmlDesc);
+        throw new RuntimeException("Not Implemented") ;	    
 	}
 
-	private native int _attachDevice(long VDP, String xmlDesc) throws LibvirtException;
+//	private native int _attachDevice(long VDP, String xmlDesc) throws LibvirtException;
 
 	/**
 	 * Destroys a virtual device attachment to backend.
@@ -326,10 +348,11 @@ public class Domain {
 	 * @throws LibvirtException
 	 */
 	public void detachDevice(String xmlDesc) throws LibvirtException{
-		_detachDevice(VDP, xmlDesc);
+//		_detachDevice(VDP, xmlDesc);
+        throw new RuntimeException("Not Implemented") ;	    
 	}
 
-	private native int _detachDevice(long VDP, String xmlDesc) throws LibvirtException;
+//	private native int _detachDevice(long VDP, String xmlDesc) throws LibvirtException;
 
 
 	/**
@@ -345,10 +368,11 @@ public class Domain {
 	 * @throws LibvirtException
 	 */
 	public DomainBlockStats blockStats(String path) throws LibvirtException{
-		return _blockStats(VDP, path);
+//		return _blockStats(VDP, path);
+        throw new RuntimeException("Not Implemented") ;	    
 	}
 
-	private native DomainBlockStats _blockStats(long VDP, String path) throws LibvirtException;
+//	private native DomainBlockStats _blockStats(long VDP, String path) throws LibvirtException;
 
 	/**
 	 * Returns network interface stats for interfaces attached to this domain.
@@ -362,10 +386,11 @@ public class Domain {
 	 * @throws LibvirtException
 	 */
 	public DomainInterfaceStats interfaceStats(String path) throws LibvirtException{
-		return _interfaceStats(VDP, path);
+//		return _interfaceStats(VDP, path);
+        throw new RuntimeException("Not Implemented") ;	    
 	}
 
-	private native DomainInterfaceStats _interfaceStats(long VDP, String path) throws LibvirtException;
+//	private native DomainInterfaceStats _interfaceStats(long VDP, String path) throws LibvirtException;
 
 	/**
 	 * Dumps the core of this domain on a given file for analysis.
@@ -376,10 +401,11 @@ public class Domain {
 	 * @throws LibvirtException
 	 */
 	public void coreDump(String to, int flags) throws LibvirtException{
-		_coreDump(VDP, to, flags);
+//		_coreDump(VDP, to, flags);
+        throw new RuntimeException("Not Implemented") ;		
 	}
 
-	private native int _coreDump(long VDP, String to, int flags) throws LibvirtException;
+//	private native int _coreDump(long VDP, String to, int flags) throws LibvirtException;
 
 	/**
 	 * Launches this defined domain.
@@ -388,10 +414,11 @@ public class Domain {
 	 * @throws LibvirtException
 	 */
 	public void create() throws LibvirtException{
-		_create(VDP);
+//		_create(VDP);
+        throw new RuntimeException("Not Implemented") ;	    
 	}
 
-	private native int _create(long VDP) throws LibvirtException;
+//	private native int _create(long VDP) throws LibvirtException;
 
 	/**
 	 * Destroys this domain object.
@@ -402,10 +429,11 @@ public class Domain {
 	 * @throws LibvirtException
 	 */
 	public void destroy() throws LibvirtException{
-		_destroy(VDP);
+//		_destroy(VDP);
+        throw new RuntimeException("Not Implemented") ;	    
 	}
 
-	private native int _destroy(long VDP) throws LibvirtException;
+//	private native int _destroy(long VDP) throws LibvirtException;
 
 	/**
 	 * Frees this domain object.
@@ -415,11 +443,12 @@ public class Domain {
 	 * @throws LibvirtException
 	 */
 	public void free() throws LibvirtException{
-		_free(VDP);
-		VDP=0;
+//		_free(VDP);
+//		VDP=0;
+        throw new RuntimeException("Not Implemented") ;	    
 	}
 
-	private native int _free(long VDP) throws LibvirtException;
+//	private native int _free(long VDP) throws LibvirtException;
 
 
 	/**
@@ -449,10 +478,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));
+//		return new Domain(dconn, _migrate(VDP, dconn, flags, dname, uri, bandwidth));
+        throw new RuntimeException("Not Implemented") ;	    
 	}
 
-	private native long _migrate(long VDP, Connect dconn, long flags, String dname, String uri, long bandwidth) throws LibvirtException;
+//	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.
@@ -462,10 +492,11 @@ public class Domain {
 	 * @throws LibvirtException
 	 */
 	public void reboot(int flags) throws LibvirtException{
-		_reboot(VDP, flags);
+//		_reboot(VDP, flags);
+        throw new RuntimeException("Not Implemented") ;	    
 	}
 
-	private native int _reboot(long VDP, int flags) throws LibvirtException;
+//	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.
@@ -474,10 +505,11 @@ public class Domain {
 	 * @throws LibvirtException
 	 */
 	public void suspend() throws LibvirtException{
-		_suspend(VDP);
+//		_suspend(VDP);
+        throw new RuntimeException("Not Implemented") ;	    
 	}
 
-	private native int _suspend(long VDP) throws LibvirtException;
+//	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().
@@ -486,10 +518,11 @@ public class Domain {
 	 * @throws LibvirtException
 	 */
 	public void resume() throws LibvirtException{
-		_resume(VDP);
+//		_resume(VDP);
+        throw new RuntimeException("Not Implemented") ;	    
 	}
 
-	private native int _resume(long VDP) throws LibvirtException;
+//	private native int _resume(long VDP) throws LibvirtException;
 
 	/**
 	 * Suspends this domain and saves its memory contents to a file on disk.
@@ -500,10 +533,11 @@ public class Domain {
 	 * @throws LibvirtException
 	 */
 	public void save(String to) throws LibvirtException{
-		_save(VDP, to);
+//		_save(VDP, to);
+        throw new RuntimeException("Not Implemented") ;	    
 	}
 
-	private native int _save(long VDP, String to) throws LibvirtException;
+//	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.
@@ -513,10 +547,11 @@ public class Domain {
 	 * @throws LibvirtException
 	 */
 	public void shutdown() throws LibvirtException{
-		_shutdown(VDP);
+//		_shutdown(VDP);
+        throw new RuntimeException("Not Implemented") ;	    
 	}
 
-	private native int _shutdown(long VDP) throws LibvirtException;
+//	private native int _shutdown(long VDP) throws LibvirtException;
 
 	/**
 	 * undefines this domain but does not stop it if it is running
@@ -524,10 +559,11 @@ public class Domain {
 	 * @throws LibvirtException
 	 */
 	public void undefine() throws LibvirtException{
-		_undefine(VDP);
+        throw new RuntimeException("Not Implemented") ;	    
+//		_undefine(VDP);
 	}
 
-	private native int _undefine(long VDP) throws LibvirtException;
+//	private native int _undefine(long VDP) throws LibvirtException;
 
 	/**
 	 * Dynamically changes the target amount of physical memory allocated to this domain.
@@ -537,10 +573,11 @@ public class Domain {
 	 * @throws LibvirtException
 	 */
 	public void setMemory(long memory) throws LibvirtException{
-		_setMemory(VDP, memory);
+	    throw new RuntimeException("Not Implemented") ;
+//		_setMemory(VDP, memory);
 	}
 
-	private native int _setMemory(long VDP, long memory) throws LibvirtException;
+//	private native int _setMemory(long VDP, long memory) throws LibvirtException;
 
 
 }
diff --git a/src/org/libvirt/Error.java b/src/org/libvirt/Error.java
index ef05702..ada7be8 100644
--- a/src/org/libvirt/Error.java
+++ b/src/org/libvirt/Error.java
@@ -2,6 +2,8 @@ package org.libvirt;
 
 import java.io.Serializable;
 
+import org.libvirt.jna.virError;
+
 public class Error implements Serializable {
 
 	public static enum ErrorDomain {
@@ -308,6 +310,25 @@ public class Error implements Serializable {
 	int int1;
 	int int2;
 	long VNP; /* Deprecated */
+	
+    public Error() {
+        
+    }
+    
+    public Error(virError vError) {
+        code = ErrorNumber.values()[vError.code] ;
+        domain = ErrorDomain.values()[vError.domain] ;
+        level = ErrorLevel.values()[vError.level] ;        
+        message = vError.message ;
+        str1 = vError.str1 ;
+        str2 = vError.str2 ;
+        str3 = vError.str3 ;   
+        int1 = vError.int1 ;
+        int2 = vError.int2 ; 
+        VCP = vError.conn ;
+        VDP = vError.dom ;
+        VNP = vError.net ;
+    }	
 
 	/**
 	 * Gets he error code
diff --git a/src/org/libvirt/ErrorHandler.java b/src/org/libvirt/ErrorHandler.java
new file mode 100644
index 0000000..dca47a5
--- /dev/null
+++ b/src/org/libvirt/ErrorHandler.java
@@ -0,0 +1,22 @@
+package org.libvirt;
+
+import org.libvirt.jna.Libvirt;
+import org.libvirt.jna.virError;
+
+import com.sun.jna.Pointer;
+
+public class ErrorHandler implements Libvirt.virErrorFunc
+{
+    public static ErrorHandler INSTANCE = new ErrorHandler() ;
+
+    @Override
+    public void handleError(Pointer userData, virError vError) throws LibvirtException
+    {
+        System.out.println("Hello") ;
+        if (vError != null) {
+            Error error = new Error(vError) ;
+            throw new LibvirtException(error) ;
+        }
+        
+    }
+}
diff --git a/src/org/libvirt/Network.java b/src/org/libvirt/Network.java
index 6fda985..a194ca7 100644
--- a/src/org/libvirt/Network.java
+++ b/src/org/libvirt/Network.java
@@ -1,15 +1,25 @@
 package org.libvirt;
 
+import org.libvirt.jna.Libvirt;
+
+import com.sun.jna.Pointer;
+
 public class Network {
 
 	/**
 	 * The native virNetworkPtr
 	 */
-	private long VNP;
+	protected Pointer VNP;
+	
 	/**
 	 * The Connect Object that represents the Hypervisor of this Network
 	 */
-	private Connect virConnect;
+	protected Connect virConnect;
+	
+	/**
+	 * The libvirt connection from the hypervisor
+	 */
+	protected Libvirt libvirt ;
 
 	/**
 	 * Constructs a Network object from a known native virNetworkPtr, and a Connect object.
@@ -18,9 +28,10 @@ public class Network {
 	 * @param virConnect
 	 * @param VNP
 	 */
-	Network(Connect virConnect, long VNP){
+	Network(Connect virConnect, Pointer VNP){	
 		this.virConnect = virConnect;
 		this.VNP = VNP;
+		this.libvirt = virConnect.libvirt ;
 	}
 
 	public void finalize() throws LibvirtException{
@@ -36,10 +47,11 @@ public class Network {
 	 * @throws LibvirtException
 	 */
 	public String getXMLDesc(int flags) throws LibvirtException{
-		return _getXMLDesc(VNP, flags);
+//		return _getXMLDesc(VNP, flags);
+        throw new RuntimeException("Not Implemented") ;	    
 	}
 
-	private native String _getXMLDesc(long VNP, int flags) throws LibvirtException;
+//	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.
@@ -48,10 +60,11 @@ public class Network {
 	 * @throws LibvirtException
 	 */
 	public boolean getAutostart() throws LibvirtException{
-		return _getAutostart(VNP);
+//		return _getAutostart(VNP);
+        throw new RuntimeException("Not Implemented") ;	    
 	}
 
-	private native boolean _getAutostart(long VNP) throws LibvirtException;
+//	private native boolean _getAutostart(long VNP) throws LibvirtException;
 
 
 	/**
@@ -61,10 +74,11 @@ public class Network {
 	 * @throws LibvirtException
 	 */
 	public void setAutostart(boolean autostart) throws LibvirtException{
-		_setAutostart(VNP, autostart);
+//		_setAutostart(VNP, autostart);
+        throw new RuntimeException("Not Implemented") ;		
 	}
 
-	private native int _setAutostart(long VNP, boolean autostart) throws LibvirtException;
+//	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.
@@ -73,10 +87,12 @@ public class Network {
 	 * @throws LibvirtException
 	 */
 	public String getBridgeName() throws LibvirtException{
-		return _getBridgeName(VNP);
+//		return _getBridgeName(VNP);
+        throw new RuntimeException("Not Implemented") ;		
 	}
 
-	private native String _getBridgeName(long VNP) throws LibvirtException;
+//	private native String _getBridgeName(long VNP) throws LibvirtException;
+	
 
 
 	/**
@@ -96,10 +112,10 @@ public class Network {
 	 * @throws LibvirtException
 	 */
 	public String getName() throws LibvirtException{
-		return _getName(VNP);
+		return libvirt.virNetworkGetName(VNP);   
 	}
 
-	private native String _getName(long VNP) throws LibvirtException;
+//	private native String _getName(long VNP) throws LibvirtException;
 
 	/**
 	 * Gets the UUID for this network
@@ -109,10 +125,11 @@ public class Network {
 	 * @see <a href="http://www.ietf.org/rfc/rfc4122.txt">rfc4122</a>
 	 */
 	public int[] getUUID() throws LibvirtException{
-		return _getUUID(VNP);
+//		return _getUUID(VNP);
+        throw new RuntimeException("Not Implemented") ;	    
 	}
 
-	private native int[] _getUUID(long VNP) throws LibvirtException;
+//	private native int[] _getUUID(long VNP) throws LibvirtException;
 
 	/**
 	 * Gets the UUID for a network as string.
@@ -122,10 +139,11 @@ public class Network {
 	 * @see <a href="http://www.ietf.org/rfc/rfc4122.txt">rfc4122</a>
 	 */
 	public String getUUIDString() throws LibvirtException{
-		return _getUUIDString(VNP);
+//		return _getUUIDString(VNP);
+        throw new RuntimeException("Not Implemented") ;	    
 	}
 
-	private native String _getUUIDString(long VNP) throws LibvirtException;
+//	private native String _getUUIDString(long VNP) throws LibvirtException;
 
 	/**
 	 * Creates and starts this defined network.
@@ -134,10 +152,11 @@ public class Network {
 	 * @throws LibvirtException
 	 */
 	public void create() throws LibvirtException{
-		_create(VNP);
+//		_create(VNP);
+	       throw new RuntimeException("Not Implemented") ;
 	}
 
-	private native int _create(long VNP) throws LibvirtException;
+//	private native int _create(long VNP) throws LibvirtException;
 
 	/**
 	 * Destroy this network object.
@@ -148,10 +167,11 @@ public class Network {
 	 * @throws LibvirtException
 	 */
 	public void destroy() throws LibvirtException{
-		_destroy(VNP);
+//		_destroy(VNP);
+	       throw new RuntimeException("Not Implemented") ;
 	}
 
-	private native int _destroy(long VNP) throws LibvirtException;
+//	private native int _destroy(long VNP) throws LibvirtException;
 
 	/**
 	 * Frees this network object.
@@ -161,11 +181,12 @@ public class Network {
 	 * @throws LibvirtException
 	 */
 	public void free() throws LibvirtException{
-		_free(VNP);
-		VNP=0;
+        throw new RuntimeException("Not Implemented") ;	    
+//		_free(VNP);
+//		VNP=0;
 	}
 
-	private native int _free(long VNP) throws LibvirtException;
+//	private native int _free(long VNP) throws LibvirtException;
 
 	/**
 	 * Undefines this network but does not stop it if it is running
@@ -173,9 +194,10 @@ public class Network {
 	 * @throws LibvirtException
 	 */
 	public void undefine() throws LibvirtException{
-		_undefine(VNP);
+        throw new RuntimeException("Not Implemented") ;	    
+//		_undefine(VNP);
 	}
 
-	private native int _undefine(long VNP) throws LibvirtException;
+//	private native int _undefine(long VNP) throws LibvirtException;
 
 }
diff --git a/src/org/libvirt/NodeInfo.java b/src/org/libvirt/NodeInfo.java
index b7e2840..16855ca 100644
--- a/src/org/libvirt/NodeInfo.java
+++ b/src/org/libvirt/NodeInfo.java
@@ -1,5 +1,7 @@
 package org.libvirt;
 
+import org.libvirt.jna.virNodeInfo;
+
 public class NodeInfo {
 	/**
 	 * string indicating the CPU model
@@ -34,6 +36,20 @@ public class NodeInfo {
 	 */
 	public int threads;
 
+	
+	public NodeInfo() {
+	}
+	
+	public NodeInfo(virNodeInfo vInfo) {
+//	    this.model = new String(vInfo.model) ;
+        this.memory = vInfo.memory.longValue() ;
+        this.cpus = vInfo.cpus ;
+        this.mhz = vInfo.mhz ;        
+        this.nodes = vInfo.nodes ;    
+        this.sockets = vInfo.sockets ;    
+        this.cores = vInfo.cores ;        
+        this.threads = vInfo.threads ;
+	}
 	/**
 	 * @return the total number of CPUs supported but not neccessarily active in the host.
 	 */
diff --git a/src/org/libvirt/jna/Libvirt.java b/src/org/libvirt/jna/Libvirt.java
new file mode 100644
index 0000000..1874d3e
--- /dev/null
+++ b/src/org/libvirt/jna/Libvirt.java
@@ -0,0 +1,66 @@
+package org.libvirt.jna;
+
+
+import com.sun.jna.Callback;
+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.LongByReference;
+import com.sun.jna.ptr.PointerByReference;
+
+public interface Libvirt extends Library
+{
+    Libvirt INSTANCE = (Libvirt) Native.loadLibrary("libvirt", Libvirt.class) ;
+    
+    //Callbacks 
+    interface virErrorFunc extends Callback {
+        void handleError(Pointer userData, virError error) throws Exception ;
+    }    
+    
+    // Global functions
+    public virError virGetLastError() ;    
+    public int virGetVersion(LongByReference libVer, String type, LongByReference typeVer) ;
+    public int virInitialize() ;    
+    public void virSetErrorFunc(long userData, virErrorFunc handler) ;
+    
+    //Connection Functions
+    public int virConnCopyLastError(Pointer virConnectPtr) ;        
+    public int virConnectClose(Pointer virConnectPtr) ;    
+    public String virConnectGetCapabilities(Pointer virConnectPtr) ;
+    public String virConnectGetHostname(Pointer virConnectPtr) ;    
+    public virError virConnGetLastError(Pointer virConnectPtr)  ;    
+    public int virConnectGetMaxVcpus(Pointer virConnectPtr, String type) ;
+    public String virConnectGetType(Pointer virConnectPtr) ;
+    public String virConnectGetURI(Pointer virConnectPtr) ; 
+    public int virConnectGetVersion(Pointer virConnectPtr, LongByReference hvVer) ;  
+    public int virConnectListDomains(Pointer virConnectPtr, int[] ids, int maxnames) ;
+    public int virConnectListNetworks(Pointer virConnectPtr, String[] name, int maxnames) ;       
+    public int virConnectListDefinedDomains(Pointer virConnectPtr, String[] name, int maxnames) ;
+    public int virConnectListDefinedNetworks(Pointer virConnectPtr, String[] name, int maxnames) ;    
+    public int virConnectNumOfDomains(Pointer virConnectPtr) ;
+    public int virConnectNumOfDefinedDomains(Pointer virConnectPtr) ;    
+    public int virConnectNumOfDefinedNetworks(Pointer virConnectPtr) ;
+    public int virConnectNumOfNetworks(Pointer virConnectPtr) ;    
+    public Pointer virConnectOpen(String name) ;
+    public Pointer virConnectOpenReadOnly(String name) ;
+    public void virConnSetErrorFunc(Pointer virConnectPtr, long userData, virErrorFunc handler) ;
+    
+    // Node functions
+    public int virNodeGetInfo(Pointer virConnectPtr, virNodeInfo virNodeInfo) ;
+    
+    // Network functions
+    public Pointer virNetworkCreateXML(Pointer virConnectPtr, String xmlDesc) ;
+    public Pointer virNetworkDefineXML(Pointer virConnectPtr, String xmlDesc) ;  
+    public String virNetworkGetName(Pointer virNetorkPtr) ;
+    public Pointer virNetworkLookupByName(Pointer virConnectPtr, String name) ;
+    public Pointer virNetworkLookupByUUIDString(Pointer virConnectPtr, String uuidstr) ;    
+    public Pointer virNetworkLookupByUUID(Pointer virConnectPtr, String uuidstr) ;        
+    
+    // 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 virDomainLookupByUUIDString(Pointer virConnectPtr, String uuidstr) ;
+
+}
diff --git a/src/org/libvirt/jna/virError.java b/src/org/libvirt/jna/virError.java
new file mode 100644
index 0000000..db462fa
--- /dev/null
+++ b/src/org/libvirt/jna/virError.java
@@ -0,0 +1,19 @@
+package org.libvirt.jna;
+
+import com.sun.jna.Structure ;
+
+public class virError extends Structure
+{
+    public int code ;
+    public int domain ;
+    public String message ;
+    public int level ;
+    public long conn ;
+    public long dom ;
+    public String str1 ;
+    public String str2 ;
+    public String str3 ;   
+    public int int1 ;
+    public int int2 ;    
+    public long net  ;    
+}
diff --git a/src/org/libvirt/jna/virNodeInfo.java b/src/org/libvirt/jna/virNodeInfo.java
new file mode 100644
index 0000000..5a6449e
--- /dev/null
+++ b/src/org/libvirt/jna/virNodeInfo.java
@@ -0,0 +1,19 @@
+package org.libvirt.jna;
+
+import com.sun.jna.NativeLong;
+import com.sun.jna.Structure;
+
+public class virNodeInfo extends Structure 
+{
+    public class ByValue extends virNodeInfo implements Structure.ByValue {};
+    public class ByReference extends virNodeInfo implements Structure.ByReference {};    
+    
+    public byte model[] = new byte[32];
+    public NativeLong memory ;
+    public int cpus ;
+    public int mhz ;
+    public int nodes ;
+    public int sockets ;
+    public int cores ;
+    public int threads ;    
+}
\ No newline at end of file
diff --git a/src/test.java b/src/test.java
index 73f4eb7..2ca6a92 100644
--- a/src/test.java
+++ b/src/test.java
@@ -18,20 +18,21 @@ public class test {
 				Integer.decode("0xf0"), Integer.decode("0x3c"), Integer.decode("0x87"), Integer.decode("0xd2"), Integer.decode("0x1e"), Integer.decode("0x69")} ;
 
 		//For testing the authentication
-		ConnectAuth defaultAuth = new ConnectAuthDefault(); 
+//		ConnectAuth defaultAuth = new ConnectAuthDefault(); 
 		
 		//You need to configure your libvirtd for remote/authenticated connections, and adjust the URL below 
 		//for this to work. Otherwise, you'll get an error
-		try{
-			conn = new Connect("test+tcp://localhost/default", defaultAuth, 0);
-			System.out.println("Encrypted connection successful!");
-		} catch (LibvirtException e){
-			System.out.println("exception caught:"+e);
-			System.out.println(e.getError());
-		}
+//		try{
+//			conn = new Connect("test+tcp://localhost/default", defaultAuth, 0);
+//			System.out.println("Encrypted connection successful!");
+//		} catch (LibvirtException e){
+//			System.out.println("exception caught:"+e);
+//			System.out.println(e.getError());
+//		}
 		
 		try{
 			conn = new Connect("test:///default", false);
+		    //conn = new Connect("qemu:///system", false) ;
 		} catch (LibvirtException e){
 			System.out.println("exception caught:"+e);
 			System.out.println(e.getError());
@@ -54,11 +55,12 @@ public class test {
 			System.out.println("getType:" + conn.getType());
 			System.out.println("getURI:" + conn.getURI());
 			System.out.println("getVersion:" + conn.getVersion());
+            System.out.println("getLibVirVersion:" + conn.getLibVirVersion());			
 			
 			//By default, there are 1 created and 0 defined networks
 			
 			//Create a new network to test the create method
-			System.out.println("conn.networkCreateXML:"+conn.networkCreateXML("<network>" +
+			System.out.println("conn.networkCreateXML: "+conn.networkCreateXML("<network>" +
 					"  <name>createst</name>"+
 					"  <uuid>004b96e1-2d78-c30f-5aa5-f03c87d21e68</uuid>"+
 					"  <bridge name='createst'/>"+
@@ -71,7 +73,7 @@ public class test {
 					"</network>"));
 					
 			//Same for the define method
-			System.out.println("conn.networkDefineXML:"+conn.networkDefineXML("<network>" +
+			System.out.println("conn.networkDefineXML: "+conn.networkDefineXML("<network>" +
 					"  <name>deftest</name>"+
 					"  <uuid>004b96e1-2d78-c30f-5aa5-f03c87d21e67</uuid>"+
 					"  <bridge name='deftest'/>"+
@@ -87,11 +89,11 @@ public class test {
 			System.out.println("numOfDefinedNetworks:" + conn.numOfDefinedNetworks());
 			System.out.println("listDefinedNetworks:" + conn.listDefinedNetworks());
 			for(String c: conn.listDefinedNetworks())
-				System.out.println("	"+c);
+				System.out.println("	-> "+c);
 			System.out.println("numOfNetworks:" + conn.numOfNetworks());
 			System.out.println("listNetworks:" + conn.listNetworks());
 			for(String c: conn.listNetworks())
-				System.out.println("	"+c);
+				System.out.println("	-> "+c);
 	
 			//Define a new Domain
 			System.out.println("conn.domainDefineXML:"+conn.domainDefineXML("<domain type='test' id='2'>"+
@@ -99,6 +101,7 @@ public class test {
 					"  <uuid>004b96e1-2d78-c30f-5aa5-f03c87d21e70</uuid>"+
 					"  <memory>8388608</memory>"+
 					"  <vcpu>2</vcpu>"+
+					"  <os><type arch='i686'>hvm</type></os>" +
 					"  <on_reboot>restart</on_reboot>"+
 					"  <on_poweroff>destroy</on_poweroff>"+
 					"  <on_crash>restart</on_crash>"+
@@ -109,6 +112,7 @@ public class test {
 					"  <uuid>004b96e1-2d78-c30f-5aa5-f03c87d21e71</uuid>"+
 					"  <memory>8388608</memory>"+
 					"  <vcpu>2</vcpu>"+
+                    "  <os><type arch='i686'>hvm</type></os>" +					
 					"  <on_reboot>restart</on_reboot>"+
 					"  <on_poweroff>destroy</on_poweroff>"+
 					"  <on_crash>restart</on_crash>"+
@@ -122,7 +126,7 @@ public class test {
 			System.out.println("numOfDomains:" + conn.numOfDomains());
 			System.out.println("listDomains:" + conn.listDomains());
 			for(int c: conn.listDomains())
-				System.out.println("	"+c);
+				System.out.println("	-> "+c);
 
 			
 		} catch (LibvirtException e){
@@ -133,116 +137,119 @@ public class test {
 		//Network Object
 		
 		try{	
-			//Choose one, they should have the exact same effect
-			//Network testNetwork=conn.networkLookupByName("default");
-			//Network testNetwork=conn.networkLookupByUUIDString("004b96e1-2d78-c30f-5aa5-f03c87d21e69");
-			System.out.println("about to call networkLookupByUUID");
+     		//Choose one, they should have the exact same effect
+		    testNetwork = conn.networkLookupByName("deftest") ;
+		    System.out.println("networkLookupByName: " + testNetwork.getName()) ;
+		    
+            testNetwork = conn.networkLookupByUUIDString("004b96e1-2d78-c30f-5aa5-f03c87d21e67");
+            System.out.println("networkLookupByUUIDString: " + testNetwork.getName()) ;            
 			testNetwork=conn.networkLookupByUUID(UUID);
-			
-			//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();
-		} 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();
+            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();
 		} 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
 		
-		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.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();
+//		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.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();
 	}
 
 }
-- 
1.6.0.6




More information about the libvir-list mailing list