net.krotscheck.jersey2.configuration.Jersey2ToolkitConfig Maven / Gradle / Ivy
/*
* Copyright (c) 2014 Michael Krotscheck
*
* Licensed under the Apache License, Version 2.0 (the "License"); you may not
* use this file except in compliance with the License. You may obtain a copy
* of the License at
*
* http://www.apache.org/licenses/LICENSE-2.0
*
* Unless required by applicable law or agreed to in writing, software
* distributed under the License is distributed on an "AS IS" BASIS, WITHOUT
* WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
*
* See the License for the specific language governing permissions and
* limitations under the License.
*/
package net.krotscheck.jersey2.configuration;
import net.krotscheck.util.ResourceUtil;
import org.apache.commons.configuration.CompositeConfiguration;
import org.apache.commons.configuration.Configuration;
import org.apache.commons.configuration.ConfigurationException;
import org.apache.commons.configuration.MapConfiguration;
import org.apache.commons.configuration.PropertiesConfiguration;
import org.apache.commons.configuration.SystemConfiguration;
import org.glassfish.hk2.utilities.binding.AbstractBinder;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import java.io.File;
import java.util.HashMap;
import javax.inject.Singleton;
/**
* The toolkit configuration object.
*/
public final class Jersey2ToolkitConfig extends CompositeConfiguration {
/**
* Logger instance.
*/
private static Logger
logger = LoggerFactory.getLogger(Jersey2ToolkitConfig.class);
/**
* Create an instance of the configuration provider.
*/
public Jersey2ToolkitConfig() {
logger.debug("Add version configuration");
addConfiguration(buildVersionConfig());
logger.debug("Adding system configuration");
addConfiguration(new SystemConfiguration());
logger.debug("Adding jersey2-toolkit configuration");
addConfiguration(buildToolkitConfig());
}
/**
* Creates a configuration object that contains the current version of the
* jersey2-toolkit library in use.
*
* @return A configuration instance with jersey2-toolkit.version set.
*/
private Configuration buildVersionConfig() {
// Inject the library version
String jersey2ToolkitVersion = Jersey2ToolkitConfig.class
.getPackage().getImplementationVersion();
HashMap versionConfigMap = new HashMap<>();
versionConfigMap.put("jersey2-toolkit.version", jersey2ToolkitVersion);
return new MapConfiguration(versionConfigMap);
}
/**
* Builds the configuration object for our toolkit config.
*
* @return A Configuration object.
*/
private Configuration buildToolkitConfig() {
// The toolkit configuration file.
try {
File configFile = ResourceUtil
.getFileForResource("jersey2-toolkit.properties");
return new PropertiesConfiguration(configFile);
} catch (ConfigurationException ce) {
logger.error("jersey2-toolkit.properties not readable,"
+ " some features may be misconfigured.");
// Return a new, empty map configuration so we don't error out.
return new MapConfiguration(new HashMap());
}
}
/**
* HK2 Binder for our injector context.
*/
public static final class Binder extends AbstractBinder {
@Override
protected void configure() {
bind(Jersey2ToolkitConfig.class)
.to(Jersey2ToolkitConfig.class)
.to(Configuration.class)
.named("jersey2-toolkit")
.in(Singleton.class);
}
}
}
© 2015 - 2025 Weber Informatics LLC | Privacy Policy