@Override @SuppressWarnings("unchecked") public R get() { Callable<Object> task = new Callable<Object>() { @Override public Object call() throws Exception { context = manager.createCreationalContext(requestedBean); Object delegate = manager.getReference(requestedBean, actualType, context); return Proxies.enhance(loader, delegate, new ClassLoaderInterceptor(loader, delegate)); } }; return (R) ClassLoaders.executeIn(loader, task); }
if (baseClass != null && ClassLoaders.containsClass(loader, baseClass.getName()) && !Object.class.equals(baseClass) && (Proxies.isInstantiable(baseClass) || baseClass.isInterface())) hierarchy.add(ClassLoaders.loadClass(loader, baseClass)); if (ClassLoaders.containsClass(loader, type.getName())) hierarchy.add(ClassLoaders.loadClass(loader, type));
private boolean returnTypeNeedsEnhancement(Class<?> methodReturnType, Object returnValue, Class<?> unwrappedReturnValueType) { if (Proxies.isPassthroughType(unwrappedReturnValueType)) { return false; } else if (!Object.class.equals(methodReturnType) && Proxies.isPassthroughType(methodReturnType)) { return false; } if (unwrappedReturnValueType.getClassLoader() != null && !unwrappedReturnValueType.getClassLoader().equals(callingLoader)) { if (ClassLoaders.containsClass(callingLoader, unwrappedReturnValueType) && ClassLoaders.containsClass(callingLoader, methodReturnType)) { return false; } } return true; }
testClass = ClassLoaders.loadClass(addon.getClassLoader(), testClassName);
if (methodLoader != null && ClassLoaders.containsClass(methodLoader, unwrappedValueType)) if (!ClassLoaders.containsClass(callingLoader, unwrappedValueType))
@Override public void run() { ClassLoaders.executeIn(loader, new Callable<Object>() { @Override public Object call() throws Exception { repository = (MutableAddonRepository) runnable.forge .addRepository(AddonRepositoryMode.MUTABLE, addonDir); forge.setServerMode(true); forge.start(loader); return forge; } }); }
if (!ClassLoaders.containsClass(delegateLoader, unwrappedResultType))
@SuppressWarnings("unchecked") public Object get(final InjectionPoint injectionPoint) { // FIXME remove the need for this method (which is currently still not working right for producer methods that // require an InjectionPoint Callable<Object> task = new Callable<Object>() { @Override public Object call() throws Exception { Bean<R> bean = (Bean<R>) manager.resolve(manager.getBeans(actualType, Annotations.getQualifiersFrom(actualType))); context = manager.createCreationalContext(bean); Object delegate = manager.getInjectableReference(injectionPoint, context); return Proxies.enhance(loader, delegate, new ClassLoaderInterceptor(loader, delegate)); } }; return ClassLoaders.executeIn(loader, task); }
for (Addon addon : registry.getAddons(AddonFilters.allLoaded())) if (ClassLoaders.containsClass(addon.getClassLoader(), serviceType))
@Override public Object invoke(final Object self, final Method thisMethod, final Method proceed, final Object[] args) throws Throwable { Callable<Object> task = new Callable<Object>() { @Override public Object call() throws Exception { try { if (thisMethod.getDeclaringClass().getName().equals(ForgeProxy.class.getName())) { return delegate; } } catch (Exception e) { } return thisMethod.invoke(delegate, args); } }; return ClassLoaders.executeIn(loader, task); }
@Override public Void call() throws Exception { logger.info("< Stopping container [" + addon.getId() + "] [" + addon.getRepository().getRootDirectory() + "]"); long start = System.currentTimeMillis(); ClassLoaders.executeIn(addon.getClassLoader(), shutdownCallable); logger.info("<< Stopped container [" + addon.getId() + "] - " + (System.currentTimeMillis() - start) + "ms"); return null; } });
throws Throwable return ClassLoaders.executeIn(delegateLoader, new Callable<Object>()
@Override public Void call() throws Exception { logger.info("> Starting container [" + addon.getId() + "] [" + addon.getRepository().getRootDirectory() + "]"); long start = System.currentTimeMillis(); container = new AddonContainerStartup(); shutdownCallable = ClassLoaders.executeIn(addon.getClassLoader(), container); logger.info(">> Started container [" + addon.getId() + "] - " + (System.currentTimeMillis() - start) + "ms"); return null; } });
return ClassLoaders.executeIn(JAVASSIST_LOADER, new Callable<T>()
ClassLoaders.executeIn(addon.getClassLoader(), container.postStartupTask);