/**
*
* Copyright 2004-2005 The Apache Software Foundation
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
* You may obtain a copy of the License at
*
* http://www.apache.org/licenses/LICENSE-2.0
*
* Unless required by applicable law or agreed to in writing, software
* distributed under the License is distributed on an "AS IS" BASIS,
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
*
* See the License for the specific language governing permissions and
* limitations under the License.
*/
package org.apache.geronimo.interop.util;
import java.util.HashMap;
import org.apache.geronimo.interop.SystemException;
public abstract class ThreadContext {
private static HashMap _primTypes;
private static ThreadLocal _defaultRmiHost = new ThreadLocal();
private static ThreadLocal _defaultRmiPort = new ThreadLocal();
static {
_primTypes = new HashMap();
_primTypes.put("boolean", boolean.class);
_primTypes.put("char", char.class);
_primTypes.put("byte", byte.class);
_primTypes.put("short", short.class);
_primTypes.put("int", int.class);
_primTypes.put("long", long.class);
_primTypes.put("float", float.class);
_primTypes.put("double", double.class);
_primTypes.put("boolean[]", boolean[].class);
_primTypes.put("char[]", char[].class);
_primTypes.put("byte[]", byte[].class);
_primTypes.put("short[]", short[].class);
_primTypes.put("int[]", int[].class);
_primTypes.put("long[]", long[].class);
_primTypes.put("float[]", float[].class);
_primTypes.put("double[]", double[].class);
}
public static String getDefaultRmiHost() {
String host = (String) _defaultRmiHost.get();
if (host == null) {
host = "0";
}
return host;
}
public static int getDefaultRmiPort() {
Integer port = (Integer) _defaultRmiPort.get();
if (port == null) {
port = IntegerCache.get(0);
}
return port.intValue();
}
public static Class loadClass(String className) {
Class t = (Class) _primTypes.get(className);
if (t != null) {
return t;
}
try {
ClassLoader loader = Thread.currentThread().getContextClassLoader();
if (loader == null) {
return Class.forName(className);
} else {
return loader.loadClass(className);
}
} catch (RuntimeException ex) {
throw (RuntimeException) ex;
} catch (Exception ex) {
throw new SystemException(ex);
}
}
public static Class loadClass(String className, Class parentClass) {
if (parentClass == null) {
return loadClass(className);
}
Class t = (Class) _primTypes.get(className);
if (t != null) {
return t;
}
try {
ClassLoader loader = parentClass.getClassLoader();
if (loader == null) {
return loadClass(className);
} else {
return loader.loadClass(className);
}
} catch (RuntimeException ex) {
throw (RuntimeException) ex;
} catch (Exception ex) {
throw new SystemException(ex);
}
}
public static Class loadClassOrReturnNullIfNotFound(String className) {
try {
return loadClass(className);
} catch (RuntimeException ex) {
return null;
}
}
public static Class loadClassOrReturnNullIfNotFound(String className, Class parentClass) {
if (parentClass == null) {
return loadClassOrReturnNullIfNotFound(className);
}
try {
return loadClass(className, parentClass);
} catch (RuntimeException ex) {
return null;
}
}
public static void setDefaultRmiHost(String host) {
_defaultRmiHost.set(host);
}
public static void setDefaultRmiPort(int port) {
_defaultRmiPort.set(IntegerCache.get(port));
}
}