diff --git a/src/com/jacob/com/Variant.java b/src/com/jacob/com/Variant.java
index 46871e8..766e38e 100644
--- a/src/com/jacob/com/Variant.java
+++ b/src/com/jacob/com/Variant.java
@@ -359,6 +359,7 @@ public class Variant extends JacobObject {
/**
* get the content of this variant as an int
* @return int
+ * @throws IllegalStateException if variant is not of the requested type
*/
public short getShortRef(){
if ((this.getvt() & VariantShort) == VariantShort &&
@@ -379,6 +380,7 @@ public class Variant extends JacobObject {
/**
* get the content of this variant as an int
* @return int
+ * @throws IllegalStateException if variant is not of the requested type
*/
public int getIntRef(){
if ((this.getvt() & VariantInt) == VariantInt &&
@@ -414,6 +416,7 @@ public class Variant extends JacobObject {
/**
* return the int value held in this variant (fails on other types?)
* @return int
+ * @throws IllegalStateException if variant is not of the requested type
*/
public short getShort(){
if (this.getvt() == VariantShort){
@@ -434,8 +437,9 @@ public class Variant extends JacobObject {
/**
*
* @return returns the double value, throws exception if not a currency type
+ * @throws IllegalStateException if variant is not of the requested type
*/
- public double getDobuleRef(){
+ public double getDoubleRef(){
if ((this.getvt() & VariantDouble) == VariantDouble &&
(this.getvt() & VariantByref) == VariantByref) {
return getVariantDoubleRef();
@@ -455,6 +459,7 @@ public class Variant extends JacobObject {
/**
*
* @return returns the date value as a double, throws exception if not a currency type
+ * @throws IllegalStateException if variant is not of the requested type
*/
public double getDateRef(){
if ((this.getvt() & VariantDate) == VariantDate &&
@@ -490,6 +495,7 @@ public class Variant extends JacobObject {
/**
* gets the content of the veriant as a string ref
* @return String retrieved from the COM area.
+ * @throws IllegalStateException if variant is not of the requested type
*/
public String getStringRef(){
if ((this.getvt() & VariantString) == VariantString &&
@@ -544,6 +550,7 @@ public class Variant extends JacobObject {
*
the value if we know how to describe one of that type
* three question marks if can't convert
* @return String value conversion,
+ * @throws IllegalStateException if there is no underlying windows data structure
*/
public String toString(){
try {
@@ -578,6 +585,7 @@ public class Variant extends JacobObject {
* return the int value held in this variant if it is an int or a short.
* Throws for other types.
* @return int contents of the windows membory
+ * @throws IllegalStateException if variant is not of the requested type
*/
public int getInt(){
if (this.getvt() == VariantInt){
@@ -597,6 +605,7 @@ public class Variant extends JacobObject {
/**
* @return double return the date (as a double) value held in this variant (fails on other types?)
+ * @throws IllegalStateException if variant is not of the requested type
*/
public double getDate(){
if (this.getvt() == VariantDate){
@@ -615,6 +624,7 @@ public class Variant extends JacobObject {
* @return java.util.Date returns the date if this is a VariantDate != 0,
* null if it is a VariantDate == 0 and throws an IllegalStateException if this isn't
* a date.
+ * @throws IllegalStateException if variant is not of the requested type
*/
public Date getJavaDate(){
Date returnDate = null;
@@ -719,6 +729,7 @@ public class Variant extends JacobObject {
/**
*
* @return returns the value as a boolean, throws an exception if its not.
+ * @throws IllegalStateException if variant is not of the requested type
*/
public boolean getBoolean(){
if (this.getvt() == VariantBoolean){
@@ -738,6 +749,7 @@ public class Variant extends JacobObject {
/**
*
* @return returns the value as a boolean, throws an exception if its not.
+ * @throws IllegalStateException if variant is not of the requested type
*/
public byte getByte(){
if (this.getvt() == VariantByte){
@@ -840,6 +852,7 @@ public class Variant extends JacobObject {
/**
* @return double return the error value held in this variant (fails on other types?)
+ * @throws IllegalStateException if variant is not of the requested type
*/
public int getError(){
if (this.getvt() == VariantError){
@@ -867,6 +880,7 @@ public class Variant extends JacobObject {
/**
* @return double return the double value held in this variant (fails on other types?)
+ * @throws IllegalStateException if variant is not of the requested type
*/
public double getDouble(){
if (this.getvt() == VariantDouble){
@@ -927,6 +941,7 @@ public class Variant extends JacobObject {
/**
*
* @return returns the currency value as a long, throws exception if not a currency type
+ * @throws IllegalStateException if variant is not of the requested type
*/
public long getCurrency(){
if (this.getvt() == VariantCurrency){
@@ -1045,6 +1060,7 @@ public class Variant extends JacobObject {
/**
*
* @return returns the float value, throws exception if not a currency type
+ * @throws IllegalStateException if variant is not of the requested type
*/
public float getFloatRef(){
if ((this.getvt() & VariantFloat) == VariantFloat &&
@@ -1062,6 +1078,7 @@ public class Variant extends JacobObject {
/**
*
* @return returns the currency value as a long, throws exception if not a currency type
+ * @throws IllegalStateException if variant is not of the requested type
*/
public long getCurrencyRef(){
if ((this.getvt() & VariantCurrency) == VariantCurrency &&
@@ -1079,6 +1096,7 @@ public class Variant extends JacobObject {
/**
*
* @return returns the error value as an int, throws exception if not a currency type
+ * @throws IllegalStateException if variant is not of the requested type
*/
public int getErrorRef(){
if ((this.getvt() & VariantError) == VariantError &&
@@ -1096,6 +1114,7 @@ public class Variant extends JacobObject {
/**
* public cover for native method
* @return the boolean from a booleanRef
+ * @throws IllegalStateException if variant is not of the requested type
*/
public boolean getBooleanRef(){
if ((this.getvt() & VariantBoolean) == VariantBoolean &&
@@ -1112,6 +1131,7 @@ public class Variant extends JacobObject {
/**
* public cover for native method
* @return the byte from a booleanRef
+ * @throws IllegalStateException if variant is not of the requested type
*/
public byte getByteRef(){
if ((this.getvt() & VariantByte) == VariantByte &&
@@ -1222,6 +1242,7 @@ public class Variant extends JacobObject {
/**
* @return returns the value as a float if the type is of type float
+ * @throws IllegalStateException if variant is not of the requested type
*/
public float getFloat(){
if (this.getvt() == VariantFloat){
@@ -1263,6 +1284,7 @@ public class Variant extends JacobObject {
* Dispatch and dispatchRef are treated the same
* This is just a cover for getDispatch() with a flag check
* @return the results of getDispatch()
+ * @throws IllegalStateException if variant is not of the requested type
*/
public Dispatch getDispatchRef() {
if ((this.getvt() & VariantDispatch) == VariantDispatch &&
@@ -1445,6 +1467,7 @@ public class Variant extends JacobObject {
* Reports the type of the underlying Variant object
* @return returns the variant type as a short, one of the Variantxxx
* values defined as statics in this class. returns VariantNull if not initialized
+ * @throws IllegalStateException if there is no underlying windows data structure
*/
public short getvt(){
if (m_pVariant != 0){
@@ -1646,7 +1669,8 @@ public class Variant extends JacobObject {
* except for special data types (it shouldn't do any!)
*
* @return Corresponding Java object of the type matching the Variant type.
- * @throws Exception if conversion failed.
+ * @throws IllegalStateException if no underlying windows data structure
+ * @throws NotImplementedException if unsupported conversion is requested
*/
protected Object toJavaObject() throws JacobException {
Object result = null;
@@ -1689,32 +1713,32 @@ public class Variant extends JacobObject {
result = this.getDispatchRef();
break;
case Variant.VariantError : //10
- result = new IllegalStateException("toJavaObject() Not implemented for VariantError");
+ result = new NotImplementedException("toJavaObject() Not implemented for VariantError");
break;
case Variant.VariantBoolean : //11
result = new Boolean(this.getBoolean());
break;
case Variant.VariantVariant : //12
- result = new IllegalStateException("toJavaObject() Not implemented for VariantVariant");
+ result = new NotImplementedException("toJavaObject() Not implemented for VariantVariant");
break;
case Variant.VariantObject : //13
- result = new IllegalStateException("toJavaObject() Not implemented for VariantObject");
+ result = new NotImplementedException("toJavaObject() Not implemented for VariantObject");
break;
case Variant.VariantByte : //17
result = new Byte(this.getByte());
//result = new IllegalStateException("toJavaObject() Not implemented for VariantByte");
break;
case Variant.VariantTypeMask : //4095
- result = new IllegalStateException("toJavaObject() Not implemented for VariantTypeMask");
+ result = new NotImplementedException("toJavaObject() Not implemented for VariantTypeMask");
break;
case Variant.VariantArray : //8192
- result = new IllegalStateException("toJavaObject() Not implemented for VariantArray");
+ result = new NotImplementedException("toJavaObject() Not implemented for VariantArray");
break;
case Variant.VariantByref : //16384
- result = new IllegalStateException("toJavaObject() Not implemented for VariantByref");
+ result = new NotImplementedException("toJavaObject() Not implemented for VariantByref");
break;
default :
- result = new IllegalStateException("Unknown return type: " + type);
+ result = new NotImplementedException("Unknown return type: " + type);
result = this;
break;
}//switch (type)