/* * Copyright (C) 2006-2016 DLR, Germany * * All rights reserved * * http://www.rcenvironment.de/ */ package de.rcenvironment.toolkit.core.setup; import de.rcenvironment.toolkit.core.api.Toolkit; import de.rcenvironment.toolkit.core.api.ToolkitException; /** * The main interface for defining a {@link Toolkit}'s modules and their configuration. To add a module with its default configuration, * simply call setup.configureModule(<module class>). If the module provides configuration options, a mutable configuration object is * returned from this call, which can then be used to apply the desired settings. * * The design of this API is intended to support subclassing of configurations. A typical use case is having a "default" configuration, and * then subclassing it with more specific settings. For example, it may be useful to use a fixed-configuration {@link Toolkit} instance for * integration testing, but apply runtime configuration values for the {@link Toolkit} of the live application. * * @author Robert Mischke */ public interface ToolkitConfiguration { /** * The main method to register modules and apply configuration settings (if applicable). * * @param setup the setup instance to receive configuration calls * @throws ToolkitException on internal errors (for example, an error instantiating a module class) */ void configure(ToolkitSetup setup) throws ToolkitException; }