make null config values throw InvalidConfig

Makes it so that adaptor's which use initConfig with
null value receive InvalidConfigException when that
null value isn't overriden. This behaviour is better
than the IllegalStateException because IllegalState
didn't terminate adaptor running.
diff --git a/src/com/google/enterprise/adaptor/Config.java b/src/com/google/enterprise/adaptor/Config.java
index 5be02d8..36733e6 100644
--- a/src/com/google/enterprise/adaptor/Config.java
+++ b/src/com/google/enterprise/adaptor/Config.java
@@ -687,7 +687,7 @@
       }
     }
     if (unset.size() != 0) {
-      throw new IllegalStateException("Missing configuration values: " + unset);
+      throw new InvalidConfigurationException("Missing configuration values: " + unset);
     }
   }
 
@@ -701,7 +701,7 @@
   public String getRawValue(String key) {
     String value = config.getProperty(key);
     if (value == null) {
-      throw new IllegalStateException(MessageFormat.format(
+      throw new InvalidConfigurationException(MessageFormat.format(
           "You must set configuration key ''{0}''.", key));
     }
     return value;
diff --git a/src/com/google/enterprise/adaptor/StartupException.java b/src/com/google/enterprise/adaptor/StartupException.java
index 6ef7673..c8b5d3a 100644
--- a/src/com/google/enterprise/adaptor/StartupException.java
+++ b/src/com/google/enterprise/adaptor/StartupException.java
@@ -20,7 +20,7 @@
  * the retry with back-off recovery logic and immediately terminate the
  * adaptor.
  */
-public class StartupException extends Exception {
+public class StartupException extends RuntimeException {
   /**
    * Constructs a new StartupException with no message and no root
    * cause.
diff --git a/test/com/google/enterprise/adaptor/ApplicationTest.java b/test/com/google/enterprise/adaptor/ApplicationTest.java
index 871afba..c5ebb10 100644
--- a/test/com/google/enterprise/adaptor/ApplicationTest.java
+++ b/test/com/google/enterprise/adaptor/ApplicationTest.java
@@ -89,7 +89,7 @@
   public void testConfigFileOverrideArgumentParse() {
     config = new ModifiedConfig();
     configFile.setFileContents("gsa.hostname=notreal\n");
-    thrown.expect(java.lang.IllegalStateException.class);
+    thrown.expect(InvalidConfigurationException.class);
     // provide config file name and above config isn't read; validate fails
     Application.autoConfig(config, new String[] {"-Dadaptor.configfile=NFE"},
         configFile);
diff --git a/test/com/google/enterprise/adaptor/ConfigTest.java b/test/com/google/enterprise/adaptor/ConfigTest.java
index bc9d5a6..4556a9f 100644
--- a/test/com/google/enterprise/adaptor/ConfigTest.java
+++ b/test/com/google/enterprise/adaptor/ConfigTest.java
@@ -44,7 +44,7 @@
   @Test
   public void testNoInputLoad() {
     // Requires gsa.hostname to be set
-    thrown.expect(IllegalStateException.class);
+    thrown.expect(InvalidConfigurationException.class);
     config.validate();
   }