package org.jboss.webservice;
import org.jboss.axis.EngineConfiguration;
import org.jboss.axis.configuration.FileProvider;
import org.jboss.logging.Logger;
import java.io.File;
import java.io.IOException;
import java.io.InputStream;
import java.net.MalformedURLException;
import java.net.URL;
public final class EngineConfigurationFinder
{
private static final Logger log = Logger.getLogger(EngineConfigurationFinder.class);
public static final String DEFAULT_SERVER_CONFIG = "META-INF/axis-server-config.xml";
public static final String DEFAULT_CLIENT_CONFIG = "META-INF/axis-client-config.xml";
public static EngineConfiguration getClientEngineConfiguration()
{
String configLocation = System.getProperty(Constants.CLIENT_CONFIG);
if (configLocation == null)
configLocation = DEFAULT_CLIENT_CONFIG;
return getEngineConfiguration(configLocation);
}
public static EngineConfiguration getServerEngineConfiguration()
{
String configLocation = System.getProperty(Constants.SERVER_CONFIG);
if (configLocation == null)
configLocation = DEFAULT_SERVER_CONFIG;
return getEngineConfiguration(configLocation);
}
private static EngineConfiguration getEngineConfiguration(String configLocation)
{
EngineConfiguration config = null;
try
{
URL url = new URL(configLocation);
InputStream is = url.openStream();
if (is != null)
config = new FileProvider(is);
}
catch (MalformedURLException e)
{
}
catch (IOException e)
{
}
if (config == null && new File(configLocation).exists())
{
config = new FileProvider(configLocation);
}
if (config == null)
{
ClassLoader cl = EngineConfigurationFinder.class.getClassLoader();
URL configURL = cl.getResource(configLocation);
if (configURL != null)
{
log.debug("Found config at: " + configURL);
try
{
InputStream is = configURL.openStream();
if (is != null)
config = new FileProvider(is);
}
catch (IOException e)
{
log.debug("Failed to open config", e);
}
}
}
if (config == null)
log.warn("Cannot find engine configuration at: " + configLocation);
return config;
}
}