@Override public Void run() { watcherThread.setContextClassLoader(null); return null; } });
@Override public Void run() { t.setContextClassLoader(null); return null; } });
@Override public Void run() { cleanupThread.setContextClassLoader(null); return null; } });
/** * Reset the original thread context ClassLoader if necessary. * @param original the original thread context ClassLoader, * or {@code null} if not overridden (and hence nothing to reset) */ protected void resetThreadContextClassLoader(@Nullable ClassLoader original) { if (original != null) { Thread.currentThread().setContextClassLoader(original); } }
@Override public Thread newThread(Runnable r) { Thread t = delegate.newThread(r); t.setContextClassLoader(ClassLoaderSanityThreadFactory.class.getClassLoader()); return t; } }
/** * Switches the {@link Thread#getContextClassLoader() context ClassLoader} for the * managed resources {@link ClassLoader} before allowing the invocation to occur. * @see javax.management.modelmbean.ModelMBean#setAttributes */ @Override public AttributeList setAttributes(AttributeList attributes) { ClassLoader currentClassLoader = Thread.currentThread().getContextClassLoader(); try { Thread.currentThread().setContextClassLoader(this.managedResourceClassLoader); return super.setAttributes(attributes); } finally { Thread.currentThread().setContextClassLoader(currentClassLoader); } }
/** * Switches the {@link Thread#getContextClassLoader() context ClassLoader} for the * managed resources {@link ClassLoader} before allowing the invocation to occur. * @see javax.management.modelmbean.ModelMBean#getAttributes */ @Override public AttributeList getAttributes(String[] attrNames) { ClassLoader currentClassLoader = Thread.currentThread().getContextClassLoader(); try { Thread.currentThread().setContextClassLoader(this.managedResourceClassLoader); return super.getAttributes(attrNames); } finally { Thread.currentThread().setContextClassLoader(currentClassLoader); } }
@Override public Result invoke(Invoker<?> invoker, Invocation invocation) throws RpcException { ClassLoader ocl = Thread.currentThread().getContextClassLoader(); Thread.currentThread().setContextClassLoader(invoker.getInterface().getClassLoader()); try { return invoker.invoke(invocation); } finally { Thread.currentThread().setContextClassLoader(ocl); } }
@Override public Result invoke(Invoker<?> invoker, Invocation invocation) throws RpcException { ClassLoader ocl = Thread.currentThread().getContextClassLoader(); Thread.currentThread().setContextClassLoader(invoker.getInterface().getClassLoader()); try { return invoker.invoke(invocation); } finally { Thread.currentThread().setContextClassLoader(ocl); } }
/** * Switches the {@link Thread#getContextClassLoader() context ClassLoader} for the * managed resources {@link ClassLoader} before allowing the invocation to occur. * @see javax.management.modelmbean.ModelMBean#invoke */ @Override public Object invoke(String opName, Object[] opArgs, String[] sig) throws MBeanException, ReflectionException { ClassLoader currentClassLoader = Thread.currentThread().getContextClassLoader(); try { Thread.currentThread().setContextClassLoader(this.managedResourceClassLoader); return super.invoke(opName, opArgs, sig); } finally { Thread.currentThread().setContextClassLoader(currentClassLoader); } }
/** * Switches the {@link Thread#getContextClassLoader() context ClassLoader} for the * managed resources {@link ClassLoader} before allowing the invocation to occur. * @see javax.management.modelmbean.ModelMBean#getAttribute */ @Override public Object getAttribute(String attrName) throws AttributeNotFoundException, MBeanException, ReflectionException { ClassLoader currentClassLoader = Thread.currentThread().getContextClassLoader(); try { Thread.currentThread().setContextClassLoader(this.managedResourceClassLoader); return super.getAttribute(attrName); } finally { Thread.currentThread().setContextClassLoader(currentClassLoader); } }
/** * Switches the {@link Thread#getContextClassLoader() context ClassLoader} for the * managed resources {@link ClassLoader} before allowing the invocation to occur. * @see javax.management.modelmbean.ModelMBean#setAttribute */ @Override public void setAttribute(Attribute attribute) throws AttributeNotFoundException, InvalidAttributeValueException, MBeanException, ReflectionException { ClassLoader currentClassLoader = Thread.currentThread().getContextClassLoader(); try { Thread.currentThread().setContextClassLoader(this.managedResourceClassLoader); super.setAttribute(attribute); } finally { Thread.currentThread().setContextClassLoader(currentClassLoader); } }
@Override public void run() { Thread t = Thread.currentThread(); String name = t.getName(); ClassLoader cl = t.getContextClassLoader(); try { r.run(); } finally { t.setName(name); t.setContextClassLoader(cl); } } };
@Override public V call() throws Exception { Thread t = Thread.currentThread(); String name = t.getName(); ClassLoader cl = t.getContextClassLoader(); try { return r.call(); } finally { t.setName(name); t.setContextClassLoader(cl); } } };
/** * Override the thread context ClassLoader with the environment's bean ClassLoader * if necessary, i.e. if the bean ClassLoader is not equivalent to the thread * context ClassLoader already. * @param classLoaderToUse the actual ClassLoader to use for the thread context * @return the original thread context ClassLoader, or {@code null} if not overridden */ @Nullable public static ClassLoader overrideThreadContextClassLoader(@Nullable ClassLoader classLoaderToUse) { Thread currentThread = Thread.currentThread(); ClassLoader threadContextClassLoader = currentThread.getContextClassLoader(); if (classLoaderToUse != null && !classLoaderToUse.equals(threadContextClassLoader)) { currentThread.setContextClassLoader(classLoaderToUse); return threadContextClassLoader; } else { return null; } }
@Override protected void tearDown() throws Exception { classReloader.close(); Thread.currentThread().setContextClassLoader(oldClassLoader); System.clearProperty("guava.concurrent.generate_cancellation_cause"); }
public void testGetResource_contextClassLoaderNull() { ClassLoader oldContextLoader = Thread.currentThread().getContextClassLoader(); try { Thread.currentThread().setContextClassLoader(null); assertNotNull(Resources.getResource("com/google/common/io/testdata/i18n.txt")); try { Resources.getResource("no such resource"); fail("Should get IllegalArgumentException"); } catch (IllegalArgumentException expected) { } } finally { Thread.currentThread().setContextClassLoader(oldContextLoader); } }
static Vertx createVertxLoadingMetricsFromMetaInf(VertxOptions options, String factoryFqn) { ClassLoader oldCL = Thread.currentThread().getContextClassLoader(); ClassLoader cl = createMetricsFromMetaInfLoader(factoryFqn); Thread.currentThread().setContextClassLoader(cl); try { return Vertx.vertx(options); } finally { Thread.currentThread().setContextClassLoader(oldCL); } }
@Override public void runTest() throws Exception { // First ensure that our classloaders are initializing the correct helper versions checkHelperVersion(getClass().getClassLoader(), "SafeAtomicHelper"); checkHelperVersion(NO_ATOMIC_FIELD_UPDATER, "SynchronizedAtomicHelper"); // Run the corresponding FuturesTest test method in a new classloader that disallows // certain core jdk classes. ClassLoader oldClassLoader = Thread.currentThread().getContextClassLoader(); Thread.currentThread().setContextClassLoader(NO_ATOMIC_FIELD_UPDATER); try { runTestMethod(NO_ATOMIC_FIELD_UPDATER); // TODO(lukes): assert that the logs are full of errors } finally { Thread.currentThread().setContextClassLoader(oldClassLoader); } }
@Override public void after() throws Exception { if (prevCL != null) { Thread.currentThread().setContextClassLoader(prevCL); } super.after(); } }