package pl.radical.open.gg.config;
import pl.radical.open.gg.GGConfiguration;
import pl.radical.open.gg.IGGConfiguration;
import java.io.IOException;
import java.io.InputStream;
import java.security.AccessController;
import java.security.PrivilegedAction;
import java.util.Properties;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
/**
* Created on 2005-05-09
*
* @author <a href="mailto:mati@sz.home.pl">Mateusz Szczap</a>
*/
public abstract class AbstractGGPropertiesConfiguration implements IGGConfiguration {
private final Logger log = LoggerFactory.getLogger(getClass()); // NOPMD by LRzanek on 03.05.10 16:35
private IGGConfiguration configuration = new GGConfiguration();
private Properties properties = null;
protected String fileName = null;
public AbstractGGPropertiesConfiguration(final String fileName, final IGGConfiguration configuration) throws IOException {
this(fileName);
this.configuration = configuration;
}
public AbstractGGPropertiesConfiguration(final String fileName) throws IOException {
if (fileName == null) {
log.error("Filename is required!");
throw new IOException("Filename is required!");
}
this.fileName = fileName;
properties = createProperties();
}
/**
* @see pl.radical.open.gg.IGGConfiguration#getConnectionThreadSleepTimeInMiliseconds()
*/
public final int getConnectionThreadSleepTimeInMiliseconds() {
final String connThreadSleepTime = String.valueOf(configuration.getConnectionThreadSleepTimeInMiliseconds());
return Integer.valueOf(properties.getProperty("connection.thread.sleep.time", connThreadSleepTime));
}
/**
* @see pl.radical.open.gg.IGGConfiguration#getPingIntervalInMiliseconds()
*/
public final int getPingIntervalInMiliseconds() {
final String pingInterval = String.valueOf(configuration.getPingIntervalInMiliseconds());
return Integer.valueOf(properties.getProperty("ping.interval", pingInterval));
}
/**
* @see pl.radical.open.gg.IGGConfiguration#getSocketTimeoutInMiliseconds()
*/
public final int getSocketTimeoutInMiliseconds() {
final String defaultSocketTimeout = String.valueOf(configuration.getSocketTimeoutInMiliseconds());
return Integer.valueOf(properties.getProperty("socket.timeout", defaultSocketTimeout));
}
/**
* @see pl.radical.open.gg.IGGConfiguration#getRegistrationURL()
*/
public final String getRegistrationURL() {
final String registrationURL = configuration.getRegistrationURL();
return properties.getProperty("server.registration.url", registrationURL);
}
/**
* @see pl.radical.open.gg.IGGConfiguration#getSendPasswordURL()
*/
public final String getSendPasswordURL() {
final String sendPasswordURL = configuration.getSendPasswordURL();
return properties.getProperty("send.password.url", sendPasswordURL);
}
/**
* s
*
* @see pl.radical.open.gg.IGGConfiguration#getServerLookupURL()
*/
public final String getServerLookupURL() {
final String serverLookupURL = configuration.getServerLookupURL();
return properties.getProperty("server.lookup.url", serverLookupURL);
}
/**
* @see pl.radical.open.gg.IGGConfiguration#getTokenRequestURL()
*/
public final String getTokenRequestURL() {
final String tokenRequestURL = configuration.getServerLookupURL();
return properties.getProperty("token.request.url", tokenRequestURL);
}
protected abstract Properties createProperties() throws IOException;
@SuppressWarnings("unchecked")
protected final InputStream getResourceAsStream(final ClassLoader loader, final String name) {
return (InputStream) AccessController.doPrivileged(new PrivilegedAction() {
public Object run() {
if (loader != null) {
return loader.getResourceAsStream(name);
} else {
return ClassLoader.getSystemResourceAsStream(name);
}
}
});
}
}