package com.voxeo.moho.remote;
import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStream;
import java.io.InputStreamReader;
import org.apache.log4j.Logger;
@Deprecated
class MohoRemoteProviderFinder {
protected static final Logger LOG = Logger.getLogger(MohoRemoteProviderFinder.class);
@SuppressWarnings("rawtypes")
public static Object findJarServiceProvider(String factoryId) throws Exception {
String serviceId = "META-INF/services/" + factoryId;
InputStream is = null;
ClassLoader cl = Thread.currentThread().getContextClassLoader();
if (cl != null) {
is = cl.getResourceAsStream(serviceId);
if (is == null) {
cl = MohoRemoteProviderFinder.class.getClassLoader();
is = cl.getResourceAsStream(serviceId);
}
}
else {
cl = MohoRemoteProviderFinder.class.getClassLoader();
is = cl.getResourceAsStream(serviceId);
}
if (is == null) {
// No provider found
LOG.error("can't find provider " + serviceId);
return null;
}
LOG.info("found jar resource=" + serviceId);
BufferedReader rd;
try {
rd = new BufferedReader(new InputStreamReader(is, "UTF-8"));
}
catch (java.io.UnsupportedEncodingException e) {
rd = new BufferedReader(new InputStreamReader(is));
}
String factoryClassName = null;
try {
factoryClassName = rd.readLine();
rd.close();
}
catch (IOException x) {
LOG.error("Got exception when looking for provider " + serviceId, x);
return null;
}
if (factoryClassName != null && !"".equals(factoryClassName)) {
LOG.info("found provider in resource, value=" + factoryClassName);
Class providerClass = cl.loadClass(factoryClassName);
Object instance = providerClass.newInstance();
return instance;
}
// No provider found
return null;
}
}