package org.piraso.server.bridge;
import org.apache.http.HttpHost;
import org.apache.log4j.Logger;
import org.piraso.client.net.AbstractHttpHandler;
import org.piraso.client.net.HttpPirasoTestHandler;
import org.springframework.beans.factory.annotation.Required;
import java.net.URI;
public enum BridgeConfig implements HttpPirasoInitializer {
INSTANCE;
private static final Logger LOG = Logger.getLogger(BridgeConfig.class);
private static final String PIRASO_BRIDGE_URL_PROPERTY = "piraso.bridge.url";
private static final String PIRASO_BRIDGE_ID_PROPERTY = "piraso.bridge.id";
private static final String PIRASO_BRIDGE_ENV = "PIRASO_URL";
private static final URI DEFAULT_URI = URI.create("http://127.0.0.1:14344/piraso/logging");
private BridgeHttpHandlerFactory factory;
private Boolean enabled;
private URI bridgeURI;
@Required
public void setFactory(BridgeHttpHandlerFactory factory) {
factory.setInitializer(this);
this.factory = factory;
}
public synchronized void init() {
String url = System.getProperty(PIRASO_BRIDGE_URL_PROPERTY);
if(url == null) {
url = System.getenv(PIRASO_BRIDGE_ENV);
}
if(url != null) {
bridgeURI = URI.create(url);
if(isBridgeSupported()) {
enabled = true;
return;
}
}
bridgeURI = DEFAULT_URI;
enabled = isBridgeSupported();
}
private boolean isBridgeSupported() {
try {
HttpPirasoTestHandler handler = factory.createTestHandler();
handler.execute();
boolean supported = handler.isBridgetSupported();
LOG.info(String.format("Checking bridge support '%s' is '%s'.", bridgeURI, supported));
return supported;
} catch(Exception e) {
LOG.warn(e.getMessage(), e);
return false;
}
}
public void init(AbstractHttpHandler handler) {
handler.setUri(bridgeURI);
handler.setTargetHost(new HttpHost(bridgeURI.getHost(), bridgeURI.getPort(), bridgeURI.getScheme()));
}
public boolean getLoggingEnabled() {
if(enabled == null) {
return false;
}
return enabled;
}
public String getIdentifier() {
return System.getProperty(PIRASO_BRIDGE_ID_PROPERTY);
}
public boolean isQueryAlways() {
return false;
}
}