2.5.2.3. Konfiguration von checkerberry db mit dem DbConfigurationCallback

Über das Interface DbConfigurationCallback erfolgt die Konfiguration von checkerberry db. Das folgende Code-Beispiel enthält das Interface.

Beispiel 2.68. Interface DbConfigurationCallback

/**
 * Callback zum Setzen der Konfigurationen für checkerberry db und
 * DbUnit. Die Konfiguration wird bei der Erzeugung einer neuen
 * checkerberry db-Umgebung angelegt und ändert sich dann zur Laufzeit nicht
 * mehr.
 */
public interface DbConfigurationCallback {

  /**
   * Callback zum Setzen von Konfigurationseinstellungen.
   *
   * @param configuration
   *            zu bearbeitende Konfiguration.
   */
  void configure(DbConfiguration configuration);

}


Die Implementation des Callbacks wird nur einmalig bei der Initialisierung von checkerberry db aufgerufen. Durch die Verwendung des Callbacks kann der Zeitpunkt der Erzeugung der Konfiguration in checkerberry db gesteuert werden.

Die Implementierung des Callback-Interfaces ist abhängig von der aktuellen System-Umgebung, sodass keine Basisklassen verwendet werden können. Die Implementierung ist jedoch sehr einfach, wie im nächsten Code-Beispiel zu erkennen ist.

Beispiel 2.69. Beispiel-Implementierung des DbConfigurationCallbacks

/**
 * Beispiel-Implementierung eines Callbacks zur Manipulation der
 * Konfiguration.
 */
public class SampleConfigurationCallback implements
  DbConfigurationCallback {

  @Override
  public void configure(DbConfiguration configuration) {
    // Hiermit werden DTD-Id und ihr Ort spezifiziert. Die Angabe
    // der DTD ist zwingend erforderlich.
    configuration.setDatabaseDtd(
      "-//ConceptPeople//DTD sample-db 1.0//EN",
      "de/conceptpeople/example/sample-db.dtd");

    // Zugriff für jede JDBC-URL verbieten…
    configuration.addToAccessControlBlacklist("*");

    // …und nur hsqldb:mem erlauben.
    configuration.addToAccessControlWhitelist("*hsqldb:mem*");
  }
}


In dem Code-Beispiel ist zu erkennen, dass dem Callback die Klasse DbConfiguration übergeben wird, sodass die Einstellungen der Konfigurationen angepasst werden können. Die Konfigurationsmöglichkeiten werden im Rahmen der einzelnen Features detailliert dargestellt.

Standard-DatabaseConnector

Bei der Verwendung der Standard-Implementation des DatabaseConnectors werden die zu verwendenden Datenbankparameter über die Konfiguration angegeben. Folgendes Beispiel zeigt eine mögliche Konfiguration.

Beispiel 2.70. Datenbankparameter bei Verwendung des Standard-DatabaseConnectors

public class ConfigurationCallback implements DbConfigurationCallback {

  @Override
  public void configure(DbConfiguration configuration) {
    // Datenbanktreiber festlegen
    configuration.setJdbcDriverClassName("com.mysql.jdbc.Driver");
    // JDBC-URL festlegen
    configuration.setJdbcUrl("jdbc:mysql://localhost:3306/testing");
    // Namen des Datenbankbenutzers setzen
    configuration.setJdbcUserName("homer");
    // Passwort des Datenbankbenutzers setzen
    configuration.setJdbcPassword("duff");
    // Ggf. Datenbankschema angeben
    configuration.setJdbcDatabaseSchema("");
  }
}


Die Verwendung der Standard-Implementation ist sehr schnell und einfach. Da die zu testende Anwendung die gleichen Datenbankparameter wie checkerberry db verwenden muss, besteht jedoch die Gefahr einer redundanten Pflege der Parameter. Aus diesem Grund ist es in der Regel sinnvoller, eine bereits konfigurierte DataSource zu verwenden. Für den Einstieg in checkerberry ist die Verwendung der Standard-Implementation jedoch sinnvoll.