1 package org.opendaylight.controller.sal.binding.impl.util;
5 import java.util.concurrent.Callable;
7 import static com.google.common.base.Preconditions.*;
9 import java.lang.reflect.Constructor;
10 import java.lang.reflect.InvocationTargetException;
11 import java.util.ArrayList;
13 public class ClassLoaderUtils {
15 public static <V> V withClassLoader(ClassLoader cls,Callable<V> function) throws Exception {
17 checkNotNull(function);
18 ClassLoader oldCls = Thread.currentThread().getContextClassLoader();
20 Thread.currentThread().setContextClassLoader(cls);
21 V result = function.call();
22 Thread.currentThread().setContextClassLoader(oldCls);
24 } catch (Exception e) {
25 Thread.currentThread().setContextClassLoader(oldCls);
26 throw new Exception(e);
30 public static Object construct(Constructor<? extends Object> constructor, ArrayList<Object> objects) throws InstantiationException, IllegalAccessException, IllegalArgumentException, InvocationTargetException {
31 Object[] initargs = objects.toArray(new Object[]{});
32 return constructor.newInstance(initargs);
36 public static Class<?> loadClassWithTCCL(String name) throws ClassNotFoundException {
37 return Thread.currentThread().getContextClassLoader().loadClass(name);