Component.java
/*-
* #%L
* io.earcam.utilitarian.site.search.offline
* %%
* Copyright (C) 2017 earcam
* %%
* SPDX-License-Identifier: (BSD-3-Clause OR EPL-1.0 OR Apache-2.0 OR MIT)
*
* You <b>must</b> choose to accept, in full - any individual or combination of
* the following licenses:
* <ul>
* <li><a href="https://opensource.org/licenses/BSD-3-Clause">BSD-3-Clause</a></li>
* <li><a href="https://www.eclipse.org/legal/epl-v10.html">EPL-1.0</a></li>
* <li><a href="https://www.apache.org/licenses/LICENSE-2.0">Apache-2.0</a></li>
* <li><a href="https://opensource.org/licenses/MIT">MIT</a></li>
* </ul>
* #L%
*/
package io.earcam.utilitarian.site.search.offline;
import java.nio.charset.Charset;
import java.util.Map;
public interface Component {
public default String id()
{
return this.getClass().getSimpleName();
}
public default void configure(Map<String, String> configuration)
{}
public static String mandatory(Map<String, String> configuration, String key)
{
if(configuration.containsKey(key)) {
return configuration.get(key);
}
throw new NullPointerException("Missing mandatory configuration: " + key);
}
public static boolean getOrDefault(Map<String, String> configuration, String key, boolean defaultValue)
{
return Boolean.parseBoolean(configuration.getOrDefault(key, Boolean.toString(defaultValue)));
}
public static Charset getOrDefault(Map<String, String> configuration, String key, Charset defaultValue)
{
return Charset.forName(configuration.getOrDefault(key, defaultValue.toString()));
}
}