mx4j/src/core/mx4j/remote ProviderFactory.java,1.6,1.7
Simone Bordet <[email protected]> Fri, 18 Feb 2005 15:23:10 +0000
| Newsgroups | gmane.comp.java.mx4j.cvs |
|---|---|
| Message-ID | <[email protected]> |
Update of /cvsroot/mx4j/mx4j/src/core/mx4j/remote
In directory sc8-pr-cvs1.sourceforge.net:/tmp/cvs-serv25782/src/core/mx4j/remote
Modified Files:
ProviderFactory.java
Log Message:
Checking that providers, when called to create a JMXConnector[Server], are creating one corresponding to the JMXServiceURL passed in.
Index: ProviderFactory.java
===================================================================
RCS file: /cvsroot/mx4j/mx4j/src/core/mx4j/remote/ProviderFactory.java,v
retrieving revision 1.6
retrieving revision 1.7
diff -C2 -d -r1.6 -r1.7
*** ProviderFactory.java 17 Feb 2005 05:33:04 -0000 1.6
--- ProviderFactory.java 18 Feb 2005 15:23:07 -0000 1.7
***************
*** 13,17 ****
import java.io.InputStream;
import java.io.InputStreamReader;
- import java.lang.reflect.Array;
import java.net.MalformedURLException;
import java.net.URL;
--- 13,16 ----
***************
*** 20,23 ****
--- 19,23 ----
import java.security.PrivilegedExceptionAction;
import java.util.ArrayList;
+ import java.util.Collections;
import java.util.Enumeration;
import java.util.List;
***************
*** 25,30 ****
--- 25,33 ----
import java.util.StringTokenizer;
+ import javax.management.MBeanServer;
+ import javax.management.remote.JMXConnector;
import javax.management.remote.JMXConnectorFactory;
import javax.management.remote.JMXConnectorProvider;
+ import javax.management.remote.JMXConnectorServer;
import javax.management.remote.JMXConnectorServerFactory;
import javax.management.remote.JMXConnectorServerProvider;
***************
*** 39,43 ****
public class ProviderFactory extends ProviderHelper
{
! public static JMXConnectorProvider newJMXConnectorProvider(JMXServiceURL url, Map env) throws IOException
{
// Yes, throw NPE if url is null (spec compliant)
--- 42,46 ----
public class ProviderFactory extends ProviderHelper
{
! public static JMXConnector newJMXConnector(JMXServiceURL url, Map env) throws IOException
{
// Yes, throw NPE if url is null (spec compliant)
***************
*** 45,53 ****
String providerPackages = findProviderPackageList(env, JMXConnectorFactory.PROTOCOL_PROVIDER_PACKAGES);
ClassLoader classLoader = findProviderClassLoader(env, JMXConnectorFactory.PROTOCOL_PROVIDER_CLASS_LOADER);
! JMXConnectorProvider provider = (JMXConnectorProvider)loadProvider(JMXConnectorProvider.class, providerPackages, protocol, MX4JRemoteConstants.CLIENT_PROVIDER_CLASS, classLoader);
! return provider;
}
! public static JMXConnectorServerProvider newJMXConnectorServerProvider(JMXServiceURL url, Map env) throws IOException
{
// Yes, throw NPE if url is null (spec compliant)
--- 48,72 ----
String providerPackages = findProviderPackageList(env, JMXConnectorFactory.PROTOCOL_PROVIDER_PACKAGES);
ClassLoader classLoader = findProviderClassLoader(env, JMXConnectorFactory.PROTOCOL_PROVIDER_CLASS_LOADER);
! List providers = loadProviders(JMXConnectorProvider.class, providerPackages, protocol, MX4JRemoteConstants.CLIENT_PROVIDER_CLASS, classLoader);
! for (int i = 0; i < providers.size(); i++)
! {
! JMXConnectorProvider provider = (JMXConnectorProvider)providers.get(i);
! try
! {
! return provider.newJMXConnector(url, Collections.unmodifiableMap(env));
! }
! catch (JMXProviderException x)
! {
! throw x;
! }
! catch (Exception x)
! {
! continue;
! }
! }
! throw new MalformedURLException("Could not find provider for protocol " + protocol);
}
! public static JMXConnectorServer newJMXConnectorServer(JMXServiceURL url, Map env, MBeanServer server) throws IOException
{
// Yes, throw NPE if url is null (spec compliant)
***************
*** 55,62 ****
String providerPackages = findProviderPackageList(env, JMXConnectorServerFactory.PROTOCOL_PROVIDER_PACKAGES);
ClassLoader classLoader = findProviderClassLoader(env, JMXConnectorServerFactory.PROTOCOL_PROVIDER_CLASS_LOADER);
! JMXConnectorServerProvider provider = (JMXConnectorServerProvider)loadProvider(JMXConnectorServerProvider.class, providerPackages, protocol, MX4JRemoteConstants.SERVER_PROVIDER_CLASS, classLoader);
! return provider;
}
private static String findEnvironmentProviderPackageList(Map environment, String key) throws JMXProviderException
{
--- 74,118 ----
String providerPackages = findProviderPackageList(env, JMXConnectorServerFactory.PROTOCOL_PROVIDER_PACKAGES);
ClassLoader classLoader = findProviderClassLoader(env, JMXConnectorServerFactory.PROTOCOL_PROVIDER_CLASS_LOADER);
! List providers = loadProviders(JMXConnectorServerProvider.class, providerPackages, protocol, MX4JRemoteConstants.SERVER_PROVIDER_CLASS, classLoader);
! for (int i = 0; i < providers.size(); i++)
! {
! JMXConnectorServerProvider provider = (JMXConnectorServerProvider)providers.get(i);
! try
! {
! return provider.newJMXConnectorServer(url, Collections.unmodifiableMap(env), server);
! }
! catch (JMXProviderException x)
! {
! throw x;
! }
! catch (Exception x)
! {
! continue;
! }
! }
! throw new MalformedURLException("Could not find provider for protocol " + protocol);
}
+ /**
+ * public static JMXConnectorProvider newJMXConnectorProvider(JMXServiceURL url, Map env) throws IOException
+ * {
+ * // Yes, throw NPE if url is null (spec compliant)
+ * String protocol = normalizeProtocol(url.getProtocol());
+ * String providerPackages = findProviderPackageList(env, JMXConnectorFactory.PROTOCOL_PROVIDER_PACKAGES);
+ * ClassLoader classLoader = findProviderClassLoader(env, JMXConnectorFactory.PROTOCOL_PROVIDER_CLASS_LOADER);
+ * JMXConnectorProvider provider = (JMXConnectorProvider)loadProvider(JMXConnectorProvider.class, providerPackages, protocol, MX4JRemoteConstants.CLIENT_PROVIDER_CLASS, classLoader);
+ * return provider;
+ * }
+ * <p/>
+ * public static JMXConnectorServerProvider newJMXConnectorServerProvider(JMXServiceURL url, Map env) throws IOException
+ * {
+ * // Yes, throw NPE if url is null (spec compliant)
+ * String protocol = normalizeProtocol(url.getProtocol());
+ * String providerPackages = findProviderPackageList(env, JMXConnectorServerFactory.PROTOCOL_PROVIDER_PACKAGES);
+ * ClassLoader classLoader = findProviderClassLoader(env, JMXConnectorServerFactory.PROTOCOL_PROVIDER_CLASS_LOADER);
+ * JMXConnectorServerProvider provider = (JMXConnectorServerProvider)loadProvider(JMXConnectorServerProvider.class, providerPackages, protocol, MX4JRemoteConstants.SERVER_PROVIDER_CLASS, classLoader);
+ * return provider;
+ * }
+ */
private static String findEnvironmentProviderPackageList(Map environment, String key) throws JMXProviderException
{
***************
*** 125,131 ****
}
! private static Object loadProvider(Class providerType, String packages, String protocol, String className, ClassLoader loader) throws JMXProviderException, MalformedURLException
{
Logger logger = getLogger();
StringTokenizer tokenizer = new StringTokenizer(packages, MX4JRemoteConstants.PROVIDER_PACKAGES_SEPARATOR);
--- 181,188 ----
}
! private static List loadProviders(Class providerType, String packages, String protocol, String className, ClassLoader loader) throws JMXProviderException
{
Logger logger = getLogger();
+ List result = new ArrayList();
StringTokenizer tokenizer = new StringTokenizer(packages, MX4JRemoteConstants.PROVIDER_PACKAGES_SEPARATOR);
***************
*** 158,162 ****
try
{
! return providerClass.newInstance();
}
catch (Exception x)
--- 215,220 ----
try
{
! Object provider = providerClass.newInstance();
! result.add(provider);
}
catch (Exception x)
***************
*** 169,175 ****
try
{
! Object[] serviceProviders = fromServiceProviders(providerType, protocol, className, loader);
! // For now, return the first instance; later we may add some way to prefer one instance or the other
! if (serviceProviders.length > 0) return serviceProviders[0];
}
catch (IOException x)
--- 227,232 ----
try
{
! List serviceProviders = fromServiceProviders(providerType, protocol, className, loader);
! result.addAll(serviceProviders);
}
catch (IOException x)
***************
*** 178,187 ****
}
! // Nothing found
! if (logger.isEnabledFor(Logger.DEBUG)) logger.debug("Could not find provider for protocol " + protocol + " in package list '" + packages + "'");
! throw new MalformedURLException("Could not find provider for protocol " + protocol + " in package list '" + packages + "'");
}
! public static Object[] fromServiceProviders(Class providerType, String protocol, String className, ClassLoader loader) throws IOException
{
String services = "META-INF/services/";
--- 235,243 ----
}
! if (logger.isEnabledFor(Logger.DEBUG)) logger.debug("Providers found are: " + result);
! return result;
}
! private static List fromServiceProviders(Class providerType, String protocol, String className, ClassLoader loader) throws IOException
{
String services = "META-INF/services/";
***************
*** 229,253 ****
if (line.length() == 0) continue;
if (logger.isEnabledFor(Logger.DEBUG)) logger.debug("Found provider '" + line + "' in " + providerURL);
! // We assume the classes defined by service providers follow the style defined by JSR 160
! if (line.endsWith(protocol + "." + className))
{
! if (logger.isEnabledFor(Logger.DEBUG)) logger.debug("Provider '" + line + "' matches protocol " + protocol);
! try
! {
! Class providerClass = loader.loadClass(line);
! if (providerType.isAssignableFrom(providerClass))
! {
! Object providerInstance = providerClass.newInstance();
! providers.add(providerInstance);
! }
! }
! catch (Exception ignored)
{
! // Skip this line and continue
}
}
! else
{
! if (logger.isEnabledFor(Logger.DEBUG)) logger.debug("Provider '" + line + "' does not match protocol " + protocol + ", ignoring");
}
}
--- 285,300 ----
if (line.length() == 0) continue;
if (logger.isEnabledFor(Logger.DEBUG)) logger.debug("Found provider '" + line + "' in " + providerURL);
! try
{
! Class providerClass = loader.loadClass(line);
! if (providerType.isAssignableFrom(providerClass))
{
! Object providerInstance = providerClass.newInstance();
! providers.add(providerInstance);
}
}
! catch (Exception ignored)
{
! // Skip this line and continue
}
}
***************
*** 259,264 ****
}
! if (logger.isEnabledFor(Logger.DEBUG)) logger.debug("Providers found: " + providers);
! return providers.toArray((Object[])Array.newInstance(providerType, 0));
}
}
--- 306,310 ----
}
! return providers;
}
}
-------------------------------------------------------
SF email is sponsored by - The IT Product Guide
Read honest & candid reviews on hundreds of IT Products from real users.
Discover which products truly live up to the hype. Start reading now.
http://ads.osdn.com/?ad_id=6595&alloc_id=14396&op=click