This blog has moved to
http://blog.matthias-reining.com

Die bestehenden Artikel bleiben vorerst alle bei blogspot. Neue Artikel veröffentliche ich allerdings nur noch auf http://blog.matthias-reining.com

Freitag, 5. November 2010

Apache Commons Configuration und NumberFormatException - Bug in EnvironmentConfiguration in Kombination mit CombinedConfiguration...

Beim Einsatz der Apache Commons Configuration Library bin ich über einen Fehler gestoßen beim Einsatz von EnvironmentConfiguration gepaart mit CombinedConfiguration.

Der Fehler tritt auf, wenn im Key eine Klammer enthalten ist.
Bei 64bit Windows7 Systemen ist dies allerdings der Normalfall mit der Environmentvariable ProgramFiles(x86).

Der Bug ist bereits gefixt, allerdings erst in der nächsten, noch nicht veröffentlichten Version 1.7, von Apache Commons Configuration.

Um nicht extra die Library patchen zu müssen habe ich folgenden kleinen Workaround hierfür gebastelt:

  private AbstractConfiguration getEnvConfig() {
    // use of EnvironmentConfiguration is not possible! (Bug in apache commons)
    // see https://issues.apache.org/jira/browse/CONFIGURATION-404

    Pattern p = Pattern.compile("[\\(\\)]");

    Map<String, String> envMap = new HashMap<String, String>();
    for (Entry<String, String> entry : System.getenv().entrySet()) {
      String key = entry.getKey();
      if (!p.matcher(key).find())
        envMap.put(key, entry.getValue());
    }
    return new MapConfiguration(envMap);
  }

Keine Kommentare:

Kommentar veröffentlichen