类org.springframework.core.OverridingClassLoader源码实例Demo

下面列出了怎么用org.springframework.core.OverridingClassLoader的API类实例代码及写法,或者点击链接到github查看源代码。

@Test  // SPR-16720
public void parameterizedInstanceFactoryMethodWithTempClassLoader() {
	DefaultListableBeanFactory bf = new DefaultListableBeanFactory();
	bf.setTempClassLoader(new OverridingClassLoader(getClass().getClassLoader()));

	RootBeanDefinition rbd = new RootBeanDefinition(MocksControl.class);
	bf.registerBeanDefinition("mocksControl", rbd);

	rbd = new RootBeanDefinition();
	rbd.setFactoryBeanName("mocksControl");
	rbd.setFactoryMethodName("createMock");
	rbd.getConstructorArgumentValues().addGenericArgumentValue(Runnable.class);
	bf.registerBeanDefinition("mock", rbd);

	assertTrue(bf.isTypeMatch("mock", Runnable.class));
	assertTrue(bf.isTypeMatch("mock", Runnable.class));
	assertEquals(Runnable.class, bf.getType("mock"));
	assertEquals(Runnable.class, bf.getType("mock"));
	Map<String, Runnable> beans = bf.getBeansOfType(Runnable.class);
	assertEquals(1, beans.size());
}
 
@Test
public void acceptAndClearClassLoader() throws Exception {
	BeanWrapper bw = new BeanWrapperImpl(TestBean.class);
	assertTrue(bw.isWritableProperty("name"));
	assertTrue(bw.isWritableProperty("age"));
	assertTrue(CachedIntrospectionResults.strongClassCache.containsKey(TestBean.class));

	ClassLoader child = new OverridingClassLoader(getClass().getClassLoader());
	Class<?> tbClass = child.loadClass("org.springframework.tests.sample.beans.TestBean");
	assertFalse(CachedIntrospectionResults.strongClassCache.containsKey(tbClass));
	CachedIntrospectionResults.acceptClassLoader(child);
	bw = new BeanWrapperImpl(tbClass);
	assertTrue(bw.isWritableProperty("name"));
	assertTrue(bw.isWritableProperty("age"));
	assertTrue(CachedIntrospectionResults.strongClassCache.containsKey(tbClass));
	CachedIntrospectionResults.clearClassLoader(child);
	assertFalse(CachedIntrospectionResults.strongClassCache.containsKey(tbClass));

	assertTrue(CachedIntrospectionResults.strongClassCache.containsKey(TestBean.class));
}
 
@Test  // SPR-16720
public void parameterizedInstanceFactoryMethodWithTempClassLoader() {
	DefaultListableBeanFactory bf = new DefaultListableBeanFactory();
	bf.setTempClassLoader(new OverridingClassLoader(getClass().getClassLoader()));

	RootBeanDefinition rbd = new RootBeanDefinition(MocksControl.class);
	bf.registerBeanDefinition("mocksControl", rbd);

	rbd = new RootBeanDefinition();
	rbd.setFactoryBeanName("mocksControl");
	rbd.setFactoryMethodName("createMock");
	rbd.getConstructorArgumentValues().addGenericArgumentValue(Runnable.class);
	bf.registerBeanDefinition("mock", rbd);

	assertTrue(bf.isTypeMatch("mock", Runnable.class));
	assertTrue(bf.isTypeMatch("mock", Runnable.class));
	assertEquals(Runnable.class, bf.getType("mock"));
	assertEquals(Runnable.class, bf.getType("mock"));
	Map<String, Runnable> beans = bf.getBeansOfType(Runnable.class);
	assertEquals(1, beans.size());
}
 
@Test
public void acceptAndClearClassLoader() throws Exception {
	BeanWrapper bw = new BeanWrapperImpl(TestBean.class);
	assertTrue(bw.isWritableProperty("name"));
	assertTrue(bw.isWritableProperty("age"));
	assertTrue(CachedIntrospectionResults.strongClassCache.containsKey(TestBean.class));

	ClassLoader child = new OverridingClassLoader(getClass().getClassLoader());
	Class<?> tbClass = child.loadClass("org.springframework.tests.sample.beans.TestBean");
	assertFalse(CachedIntrospectionResults.strongClassCache.containsKey(tbClass));
	CachedIntrospectionResults.acceptClassLoader(child);
	bw = new BeanWrapperImpl(tbClass);
	assertTrue(bw.isWritableProperty("name"));
	assertTrue(bw.isWritableProperty("age"));
	assertTrue(CachedIntrospectionResults.strongClassCache.containsKey(tbClass));
	CachedIntrospectionResults.clearClassLoader(child);
	assertFalse(CachedIntrospectionResults.strongClassCache.containsKey(tbClass));

	assertTrue(CachedIntrospectionResults.strongClassCache.containsKey(TestBean.class));
}
 
@Test
public void acceptAndClearClassLoader() throws Exception {
	BeanWrapper bw = new BeanWrapperImpl(TestBean.class);
	assertTrue(bw.isWritableProperty("name"));
	assertTrue(bw.isWritableProperty("age"));
	assertTrue(CachedIntrospectionResults.strongClassCache.containsKey(TestBean.class));

	ClassLoader child = new OverridingClassLoader(getClass().getClassLoader());
	Class<?> tbClass = child.loadClass("org.springframework.tests.sample.beans.TestBean");
	assertFalse(CachedIntrospectionResults.strongClassCache.containsKey(tbClass));
	CachedIntrospectionResults.acceptClassLoader(child);
	bw = new BeanWrapperImpl(tbClass);
	assertTrue(bw.isWritableProperty("name"));
	assertTrue(bw.isWritableProperty("age"));
	assertTrue(CachedIntrospectionResults.strongClassCache.containsKey(tbClass));
	CachedIntrospectionResults.clearClassLoader(child);
	assertFalse(CachedIntrospectionResults.strongClassCache.containsKey(tbClass));

	assertTrue(CachedIntrospectionResults.strongClassCache.containsKey(TestBean.class));
}
 
@Override
public ClassLoader getThrowawayClassLoader() {
	if (this.getThrowawayClassLoaderMethod != null) {
		ClassLoader target = (ClassLoader)
				ReflectionUtils.invokeMethod(this.getThrowawayClassLoaderMethod, this.classLoader);
		return (target instanceof DecoratingClassLoader ? target :
				new OverridingClassLoader(this.classLoader, target));
	}
	else {
		return new SimpleThrowawayClassLoader(this.classLoader);
	}
}
 
@Override
public ClassLoader getThrowawayClassLoader() {
	if (this.getThrowawayClassLoaderMethod != null) {
		ClassLoader target = (ClassLoader)
				ReflectionUtils.invokeMethod(this.getThrowawayClassLoaderMethod, this.classLoader);
		return (target instanceof DecoratingClassLoader ? target :
				new OverridingClassLoader(this.classLoader, target));
	}
	else {
		return new SimpleThrowawayClassLoader(this.classLoader);
	}
}
 
源代码8 项目: lams   文件: ReflectiveLoadTimeWeaver.java
@Override
public ClassLoader getThrowawayClassLoader() {
	if (this.getThrowawayClassLoaderMethod != null) {
		ClassLoader target = (ClassLoader)
				ReflectionUtils.invokeMethod(this.getThrowawayClassLoaderMethod, this.classLoader);
		return (target instanceof DecoratingClassLoader ? target :
				new OverridingClassLoader(this.classLoader, target));
	}
	else {
		return new SimpleThrowawayClassLoader(this.classLoader);
	}
}
 
@Override
public ClassLoader getThrowawayClassLoader() {
	return new OverridingClassLoader(this.classLoader.getClassLoader(),
			this.classLoader.getThrowawayClassLoader());
}
 
@Override
public ClassLoader getThrowawayClassLoader() {
	return new OverridingClassLoader(this.classLoader.getClassLoader(),
			this.classLoader.getThrowawayClassLoader());
}
 
@Override
public ClassLoader getThrowawayClassLoader() {
	return new OverridingClassLoader(this.classLoader.getClassLoader(),
			this.classLoader.getThrowawayClassLoader());
}
 
@Override
public ClassLoader getThrowawayClassLoader() {
	return new OverridingClassLoader(this.classLoader.getClassLoader(),
			this.classLoader.getThrowawayClassLoader());
}
 
源代码13 项目: lams   文件: WebLogicLoadTimeWeaver.java
@Override
public ClassLoader getThrowawayClassLoader() {
	return new OverridingClassLoader(this.classLoader.getClassLoader(),
			this.classLoader.getThrowawayClassLoader());
}
 
源代码14 项目: lams   文件: WebSphereLoadTimeWeaver.java
@Override
public ClassLoader getThrowawayClassLoader() {
	return new OverridingClassLoader(this.classLoader.getClassLoader(),
			this.classLoader.getThrowawayClassLoader());
}
 
 类所在包
 同包方法