/** * Creates a new instance of Invokable. Class itself is loaded by provided classloader * * @param cl classloader * @param className fully qualified class name */ Invokable(ClassLoader cl, String className) { this.classType = loadClass(cl, className); }
/** * Creates a new instance of Invokable. Class itself is reloaded by provider classloader * * @param cl classloader * @param classType class object. Class with the same fully qualified name will be loader from provided classloader */ Invokable(ClassLoader cl, Class<?> classType) { this.classType = reloadClass(cl, classType); }
final Object spiServiceLoader = new Invokable(cl, CLASS_NAME_SPISERVICELOADER) .invokeConstructor(new Class[] { ClassLoader.class }, new Object[] { cl }); final Object serviceLoader = new Invokable(cl, CLASS_NAME_SPISERVICELOADER).invokeMethod(METHOD_NAME_ONLY_ONE, new Class[] { Class.class, Class.class }, spiServiceLoader, new Object[] { Invokable.loadClass(cl, CLASS_NAME_SPISERVICELOADER), spiServiceLoader.getClass() }); final Object serviceRegistry = new Invokable(cl, CLASS_NAME_SERVICEREGISTRY).invokeConstructor( new Class<?>[] { Invokable.loadClass(cl, CLASS_NAME_SERVICELOADER) }, new Object[] { serviceLoader }); new Invokable(cl, serviceRegistry.getClass()).invokeMethod(METHOD_NAME_REGISTER, new Class<?>[] { serviceRegistry.getClass() }, null, new Object[] { serviceRegistry }); Object userViewObject = new Invokable(cl, serviceRegistry.getClass()).invokeMethod(METHOD_NAME_ONLY_ONE, new Class<?>[] { Class.class }, serviceRegistry, new Object[] { userViewClass });
throws InvocationException { try { return findMethod(name, parameterTypes).invoke(instance, parameters); } catch (IllegalAccessException e) { throw new InvocationException(e, "Unable to invoke {0}({1}) on object {2} with parameters {3}", name,