public static StateStore.Factory deserialize(Element store) throws XMLParseException {
   String type = store.getAttribute("type");
   if (type.compareToIgnoreCase("hash") == 0) {
     return HashTableStore.Factory.deserialize(store);
   } else if (type.compareToIgnoreCase("bdb") == 0) {
     try {
       return BerkeleyDBStore.Factory.deserialize(store);
     } catch (DatabaseException e) {
       throw new XMLParseException(e.getMessage(), e.getCause());
     }
   }
   throw new XMLParseException("Unrecognized state store type \'" + type + "\'", store);
 }
  /**
   * Tests that an exception is thrown when a log header is read with a newer version than the
   * current version. The maxversion.jdb log file is loaded as a resource by this test and written
   * as a regular log file. When the environment is opened, we expect a LogException.
   */
  public void testGreaterVersionNotAllowed() throws DatabaseException, IOException {

    TestUtils.loadLog(getClass(), Utils.MAX_VERSION_NAME, envHome);

    EnvironmentConfig envConfig = TestUtils.initEnvConfig();
    envConfig.setAllowCreate(false);
    envConfig.setTransactional(true);

    try {
      Environment env = new Environment(envHome, envConfig);
      try {
        env.close();
      } catch (Exception ignore) {
      }
    } catch (DatabaseException e) {
      if (e.getCause() instanceof LogException) {
        /* Got LogException as expected. */
        return;
      }
    }
    fail("Expected LogException");
  }