/*
* Copyright (c) 2002-2012 Alibaba Group Holding Limited.
* All rights reserved.
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
* You may obtain a copy of the License at
*
* http://www.apache.org/licenses/LICENSE-2.0
*
* Unless required by applicable law or agreed to in writing, software
* distributed under the License is distributed on an "AS IS" BASIS,
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
* See the License for the specific language governing permissions and
* limitations under the License.
*/
package com.alibaba.citrus.util;
import static com.alibaba.citrus.util.CollectionUtil.*;
import static org.junit.Assert.*;
import java.net.URL;
import java.util.Set;
import org.junit.Test;
/**
* 测试<code>ClassLoaderUtil</code>。
*
* @author Michael Zhou
*/
public class ClassLoaderUtilTests {
// ==========================================================================
// 取得context class loader的方法。
// ==========================================================================
@Test
public void getContextClassLoader() {
assertSame(ClassLoaderUtil.getContextClassLoader(), ClassLoaderUtil.getContextClassLoader());
}
// ==========================================================================
// 装入类的方法。
// ==========================================================================
@Test
public void loadClass() throws Exception {
// load from context loader
assertNull(ClassLoaderUtil.loadClass(null));
assertSame(String.class, ClassLoaderUtil.loadClass("java.lang.String"));
// load from class referrer
assertNull(ClassLoaderUtil.loadClass(null, getClass()));
assertNull(ClassLoaderUtil.loadClass(null, (Class<?>) null));
assertSame(String.class, ClassLoaderUtil.loadClass("java.lang.String", getClass()));
assertSame(String.class, ClassLoaderUtil.loadClass("java.lang.String", (Class<?>) null));
// load from specified loader
assertNull(ClassLoaderUtil.loadClass(null, getClass().getClassLoader()));
assertNull(ClassLoaderUtil.loadClass(null, (ClassLoader) null));
assertSame(String.class, ClassLoaderUtil.loadClass("java.lang.String", getClass().getClassLoader()));
assertSame(String.class, ClassLoaderUtil.loadClass("java.lang.String", (ClassLoader) null));
}
@Test
public void loadServiceClass() throws Exception {
// load from context loader
assertNull(ClassLoaderUtil.loadServiceClass(null));
try {
ClassLoaderUtil.loadServiceClass("myservice.notexist");
fail("expected ServiceNotFoundException");
} catch (ServiceNotFoundException e) {
}
try {
ClassLoaderUtil.loadServiceClass("myservice.notfound");
fail("expected ClassNotFoundException");
} catch (ClassNotFoundException e) {
assertFalse(e instanceof ServiceNotFoundException);
}
assertEquals(MyService.class, ClassLoaderUtil.loadServiceClass("myservice"));
// load from class referrer
assertNull(ClassLoaderUtil.loadServiceClass(null, getClass()));
assertNull(ClassLoaderUtil.loadServiceClass(null, (Class<?>) null));
try {
ClassLoaderUtil.loadServiceClass("myservice.notexist", getClass());
fail("expected ServiceNotFoundException");
} catch (ServiceNotFoundException e) {
}
try {
ClassLoaderUtil.loadServiceClass("myservice.notfound", getClass());
fail("expected ClassNotFoundException");
} catch (ClassNotFoundException e) {
assertFalse(e instanceof ServiceNotFoundException);
}
try {
ClassLoaderUtil.loadServiceClass("myservice.notexist", (Class<?>) null);
fail("expected ServiceNotFoundException");
} catch (ServiceNotFoundException e) {
}
try {
ClassLoaderUtil.loadServiceClass("myservice.notfound", (Class<?>) null);
fail("expected ClassNotFoundException");
} catch (ClassNotFoundException e) {
assertFalse(e instanceof ServiceNotFoundException);
}
assertEquals(MyService.class, ClassLoaderUtil.loadServiceClass("myservice", getClass()));
assertEquals(MyService.class, ClassLoaderUtil.loadServiceClass("myservice", (Class<?>) null));
// load from specified loader
assertNull(ClassLoaderUtil.loadServiceClass(null, getClass().getClassLoader()));
assertNull(ClassLoaderUtil.loadServiceClass(null, (ClassLoader) null));
try {
ClassLoaderUtil.loadServiceClass("myservice.notexist", getClass().getClassLoader());
fail("expected ServiceNotFoundException");
} catch (ServiceNotFoundException e) {
}
try {
ClassLoaderUtil.loadServiceClass("myservice.notfound", getClass().getClassLoader());
fail("expected ClassNotFoundException");
} catch (ClassNotFoundException e) {
assertFalse(e instanceof ServiceNotFoundException);
}
try {
ClassLoaderUtil.loadServiceClass("myservice.notexist", (ClassLoader) null);
fail("expected ServiceNotFoundException");
} catch (ServiceNotFoundException e) {
}
try {
ClassLoaderUtil.loadServiceClass("myservice.notfound", (ClassLoader) null);
fail("expected ClassNotFoundException");
} catch (ClassNotFoundException e) {
assertFalse(e instanceof ServiceNotFoundException);
}
assertEquals(MyService.class, ClassLoaderUtil.loadServiceClass("myservice", getClass().getClassLoader()));
assertEquals(MyService.class, ClassLoaderUtil.loadServiceClass("myservice", (ClassLoader) null));
try {
assertEquals(MyService.class,
ClassLoaderUtil.loadServiceClass("com.alibaba.citrus.util.MyService", getClass().getClassLoader()));
fail("expected ServiceNotFoundException");
} catch (ServiceNotFoundException e) {
}
try {
assertEquals(MyService.class,
ClassLoaderUtil.loadServiceClass("com.alibaba.citrus.util.MyService", (ClassLoader) null));
fail("expected ServiceNotFoundException");
} catch (ServiceNotFoundException e) {
}
}
@Test
public void loadServiceClass_ClassNameServiceId() throws Exception {
// load from context loader
assertNull(ClassLoaderUtil.loadServiceClass(null, (String) null));
try {
ClassLoaderUtil.loadServiceClass("myservice.notexist", "myservice.notexist");
fail("expected ServiceNotFoundException");
} catch (ServiceNotFoundException e) {
}
try {
ClassLoaderUtil.loadServiceClass("myservice.notfound", "myservice.notfound");
fail("expected ClassNotFoundException");
} catch (ClassNotFoundException e) {
assertFalse(e instanceof ServiceNotFoundException);
}
assertEquals(MyService.class, ClassLoaderUtil.loadServiceClass("myservice", "myservice"));
// load from class referrer
assertNull(ClassLoaderUtil.loadServiceClass(null, null, getClass()));
assertNull(ClassLoaderUtil.loadServiceClass(null, null, (Class<?>) null));
try {
ClassLoaderUtil.loadServiceClass("myservice.notexist", "myservice.notexist", getClass());
fail("expected ServiceNotFoundException");
} catch (ServiceNotFoundException e) {
}
try {
ClassLoaderUtil.loadServiceClass("myservice.notfound", "myservice.notfound", getClass());
fail("expected ClassNotFoundException");
} catch (ClassNotFoundException e) {
assertFalse(e instanceof ServiceNotFoundException);
}
try {
ClassLoaderUtil.loadServiceClass("myservice.notexist", "myservice.notexist", (Class<?>) null);
fail("expected ServiceNotFoundException");
} catch (ServiceNotFoundException e) {
}
try {
ClassLoaderUtil.loadServiceClass("myservice.notfound", "myservice.notfound", (Class<?>) null);
fail("expected ClassNotFoundException");
} catch (ClassNotFoundException e) {
assertFalse(e instanceof ServiceNotFoundException);
}
assertEquals(MyService.class, ClassLoaderUtil.loadServiceClass("myservice", "myservice", getClass()));
assertEquals(MyService.class, ClassLoaderUtil.loadServiceClass("myservice", "myservice", (Class<?>) null));
// load from specified loader
assertNull(ClassLoaderUtil.loadServiceClass(null, null, getClass().getClassLoader()));
assertNull(ClassLoaderUtil.loadServiceClass(null, null, (ClassLoader) null));
try {
ClassLoaderUtil.loadServiceClass("myservice.notexist", "myservice.notexist", getClass().getClassLoader());
fail("expected ServiceNotFoundException");
} catch (ServiceNotFoundException e) {
}
try {
ClassLoaderUtil.loadServiceClass("myservice.notfound", "myservice.notfound", getClass().getClassLoader());
fail("expected ClassNotFoundException");
} catch (ClassNotFoundException e) {
assertFalse(e instanceof ServiceNotFoundException);
}
try {
ClassLoaderUtil.loadServiceClass("myservice.notexist", "myservice.notexist", (ClassLoader) null);
fail("expected ServiceNotFoundException");
} catch (ServiceNotFoundException e) {
}
try {
ClassLoaderUtil.loadServiceClass("myservice.notfound", "myservice.notfound", (ClassLoader) null);
fail("expected ClassNotFoundException");
} catch (ClassNotFoundException e) {
assertFalse(e instanceof ServiceNotFoundException);
}
assertEquals(MyService.class,
ClassLoaderUtil.loadServiceClass("myservice", "myservice", getClass().getClassLoader()));
assertEquals(MyService.class, ClassLoaderUtil.loadServiceClass("myservice", "myservice", (ClassLoader) null));
assertEquals(MyService.class, ClassLoaderUtil.loadServiceClass("com.alibaba.citrus.util.MyService",
"com.alibaba.citrus.util.MyService", getClass().getClassLoader()));
assertEquals(MyService.class, ClassLoaderUtil.loadServiceClass("com.alibaba.citrus.util.MyService",
"com.alibaba.citrus.util.MyService", (ClassLoader) null));
assertEquals(MyService.class, ClassLoaderUtil.loadServiceClass("com.alibaba.citrus.util.MyService", "abc"));
assertEquals(MyService.class, ClassLoaderUtil.loadServiceClass("abc", "myservice"));
}
// ==========================================================================
// 装入并实例化类的方法。
// ==========================================================================
@Test
public void newInstance() throws Exception {
// load from context loader
assertNull(ClassLoaderUtil.newInstance(null));
assertInstance(String.class, ClassLoaderUtil.newInstance("java.lang.String"));
try {
ClassLoaderUtil.newInstance("com.alibaba.citrus.util.MyErrorService");
fail("Expected ClassInstantiationException");
} catch (ClassInstantiationException e) {
}
// load from class referrer
assertNull(ClassLoaderUtil.newInstance(null, getClass()));
assertNull(ClassLoaderUtil.newInstance(null, (Class<?>) null));
assertInstance(String.class, ClassLoaderUtil.newInstance("java.lang.String", getClass()));
assertInstance(String.class, ClassLoaderUtil.newInstance("java.lang.String", (Class<?>) null));
try {
ClassLoaderUtil.newInstance("com.alibaba.citrus.util.MyErrorService", getClass());
fail("Expected ClassInstantiationException");
} catch (ClassInstantiationException e) {
}
// load from specified loader
assertNull(ClassLoaderUtil.newInstance(null, getClass().getClassLoader()));
assertNull(ClassLoaderUtil.newInstance(null, (ClassLoader) null));
assertInstance(String.class, ClassLoaderUtil.newInstance("java.lang.String", getClass().getClassLoader()));
assertInstance(String.class, ClassLoaderUtil.newInstance("java.lang.String", (ClassLoader) null));
try {
ClassLoaderUtil.newInstance("com.alibaba.citrus.util.MyErrorService", getClass().getClassLoader());
fail("Expected ClassInstantiationException");
} catch (ClassInstantiationException e) {
}
}
@Test
public void newServiceInstance() throws Exception {
// load from context loader
assertNull(ClassLoaderUtil.newServiceInstance(null));
try {
ClassLoaderUtil.newServiceInstance("myservice.notexist");
fail("expected ServiceNotFoundException");
} catch (ServiceNotFoundException e) {
}
try {
ClassLoaderUtil.newServiceInstance("myservice.notfound");
fail("expected ClassNotFoundException");
} catch (ClassNotFoundException e) {
assertFalse(e instanceof ServiceNotFoundException);
}
try {
ClassLoaderUtil.newServiceInstance("myservice.err");
fail("Expected ClassInstantiationException");
} catch (ClassInstantiationException e) {
}
assertInstance(MyService.class, ClassLoaderUtil.newServiceInstance("myservice"));
// load from class referrer
assertNull(ClassLoaderUtil.newServiceInstance(null, getClass()));
assertNull(ClassLoaderUtil.newServiceInstance(null, (Class<?>) null));
try {
ClassLoaderUtil.newServiceInstance("myservice.notexist", getClass());
fail("expected ServiceNotFoundException");
} catch (ServiceNotFoundException e) {
}
try {
ClassLoaderUtil.newServiceInstance("myservice.notfound", getClass());
fail("expected ClassNotFoundException");
} catch (ClassNotFoundException e) {
assertFalse(e instanceof ServiceNotFoundException);
}
try {
ClassLoaderUtil.newServiceInstance("myservice.notexist", (Class<?>) null);
fail("expected ServiceNotFoundException");
} catch (ServiceNotFoundException e) {
}
try {
ClassLoaderUtil.newServiceInstance("myservice.notfound", (Class<?>) null);
fail("expected ClassNotFoundException");
} catch (ClassNotFoundException e) {
assertFalse(e instanceof ServiceNotFoundException);
}
try {
ClassLoaderUtil.newServiceInstance("myservice.err", getClass());
fail("Expected ClassInstantiationException");
} catch (ClassInstantiationException e) {
}
assertInstance(MyService.class, ClassLoaderUtil.newServiceInstance("myservice", getClass()));
assertInstance(MyService.class, ClassLoaderUtil.newServiceInstance("myservice", (Class<?>) null));
// load from specified loader
assertNull(ClassLoaderUtil.newServiceInstance(null, getClass().getClassLoader()));
assertNull(ClassLoaderUtil.newServiceInstance(null, (ClassLoader) null));
try {
ClassLoaderUtil.newServiceInstance("myservice.notexist", getClass().getClassLoader());
fail("expected ServiceNotFoundException");
} catch (ServiceNotFoundException e) {
}
try {
ClassLoaderUtil.newServiceInstance("myservice.notfound", getClass().getClassLoader());
fail("expected ClassNotFoundException");
} catch (ClassNotFoundException e) {
assertFalse(e instanceof ServiceNotFoundException);
}
try {
ClassLoaderUtil.newServiceInstance("myservice.notexist", (ClassLoader) null);
fail("expected ServiceNotFoundException");
} catch (ServiceNotFoundException e) {
}
try {
ClassLoaderUtil.newServiceInstance("myservice.notfound", (ClassLoader) null);
fail("expected ClassNotFoundException");
} catch (ClassNotFoundException e) {
assertFalse(e instanceof ServiceNotFoundException);
}
try {
ClassLoaderUtil.newServiceInstance("myservice.err", getClass().getClassLoader());
fail("Expected ClassInstantiationException");
} catch (ClassInstantiationException e) {
}
assertInstance(MyService.class, ClassLoaderUtil.newServiceInstance("myservice", getClass().getClassLoader()));
assertInstance(MyService.class, ClassLoaderUtil.newServiceInstance("myservice", (ClassLoader) null));
try {
assertEquals(MyService.class, ClassLoaderUtil.newServiceInstance("com.alibaba.citrus.util.MyService",
getClass().getClassLoader()));
fail("expected ServiceNotFoundException");
} catch (ServiceNotFoundException e) {
}
try {
assertEquals(MyService.class,
ClassLoaderUtil.newServiceInstance("com.alibaba.citrus.util.MyService", (ClassLoader) null));
fail("expected ServiceNotFoundException");
} catch (ServiceNotFoundException e) {
}
}
@Test
public void newServiceInstance_ClassNameServiceId() throws Exception {
// load from context loader
assertNull(ClassLoaderUtil.newServiceInstance(null, (String) null));
try {
ClassLoaderUtil.newServiceInstance("myservice.notexist", "myservice.notexist");
fail("expected ServiceNotFoundException");
} catch (ServiceNotFoundException e) {
}
try {
ClassLoaderUtil.newServiceInstance("myservice.notfound", "myservice.notfound");
fail("expected ClassNotFoundException");
} catch (ClassNotFoundException e) {
assertFalse(e instanceof ServiceNotFoundException);
}
try {
ClassLoaderUtil.newServiceInstance("myservice.err", "myservice.err");
fail("Expected ClassInstantiationException");
} catch (ClassInstantiationException e) {
}
assertInstance(MyService.class, ClassLoaderUtil.newServiceInstance("myservice", "myservice"));
// load from class referrer
assertNull(ClassLoaderUtil.newServiceInstance(null, null, getClass()));
assertNull(ClassLoaderUtil.newServiceInstance(null, null, (Class<?>) null));
try {
ClassLoaderUtil.newServiceInstance("myservice.notexist", "myservice.notexist", getClass());
fail("expected ServiceNotFoundException");
} catch (ServiceNotFoundException e) {
}
try {
ClassLoaderUtil.newServiceInstance("myservice.notfound", "myservice.notfound", getClass());
fail("expected ClassNotFoundException");
} catch (ClassNotFoundException e) {
assertFalse(e instanceof ServiceNotFoundException);
}
try {
ClassLoaderUtil.newServiceInstance("myservice.notexist", "myservice.notexist", (Class<?>) null);
fail("expected ServiceNotFoundException");
} catch (ServiceNotFoundException e) {
}
try {
ClassLoaderUtil.newServiceInstance("myservice.notfound", "myservice.notfound", (Class<?>) null);
fail("expected ClassNotFoundException");
} catch (ClassNotFoundException e) {
assertFalse(e instanceof ServiceNotFoundException);
}
try {
ClassLoaderUtil.newServiceInstance("myservice.err", "myservice.err", getClass());
fail("Expected ClassInstantiationException");
} catch (ClassInstantiationException e) {
}
assertInstance(MyService.class, ClassLoaderUtil.newServiceInstance("myservice", "myservice", getClass()));
assertInstance(MyService.class, ClassLoaderUtil.newServiceInstance("myservice", "myservice", (Class<?>) null));
// load from specified loader
assertNull(ClassLoaderUtil.newServiceInstance(null, null, getClass().getClassLoader()));
assertNull(ClassLoaderUtil.newServiceInstance(null, null, (ClassLoader) null));
try {
ClassLoaderUtil.newServiceInstance("myservice.notexist", "myservice.notexist", getClass().getClassLoader());
fail("expected ServiceNotFoundException");
} catch (ServiceNotFoundException e) {
}
try {
ClassLoaderUtil.newServiceInstance("myservice.notfound", "myservice.notfound", getClass().getClassLoader());
fail("expected ClassNotFoundException");
} catch (ClassNotFoundException e) {
assertFalse(e instanceof ServiceNotFoundException);
}
try {
ClassLoaderUtil.newServiceInstance("myservice.notexist", "myservice.notexist", (ClassLoader) null);
fail("expected ServiceNotFoundException");
} catch (ServiceNotFoundException e) {
}
try {
ClassLoaderUtil.newServiceInstance("myservice.notfound", "myservice.notfound", (ClassLoader) null);
fail("expected ClassNotFoundException");
} catch (ClassNotFoundException e) {
assertFalse(e instanceof ServiceNotFoundException);
}
try {
ClassLoaderUtil.newServiceInstance("myservice.err", "myservice.err", getClass().getClassLoader());
fail("Expected ClassInstantiationException");
} catch (ClassInstantiationException e) {
}
assertInstance(MyService.class,
ClassLoaderUtil.newServiceInstance("myservice", "myservice", getClass().getClassLoader()));
assertInstance(MyService.class,
ClassLoaderUtil.newServiceInstance("myservice", "myservice", (ClassLoader) null));
assertInstance(MyService.class, ClassLoaderUtil.newServiceInstance("com.alibaba.citrus.util.MyService",
"com.alibaba.citrus.util.MyService", getClass().getClassLoader()));
assertInstance(MyService.class, ClassLoaderUtil.newServiceInstance("com.alibaba.citrus.util.MyService",
"com.alibaba.citrus.util.MyService", (ClassLoader) null));
assertInstance(MyService.class, ClassLoaderUtil.newServiceInstance("com.alibaba.citrus.util.MyService", "abc"));
assertInstance(MyService.class, ClassLoaderUtil.newServiceInstance("abc", "myservice"));
}
private void assertInstance(Class<?> clazz, Object obj) {
assertTrue(clazz.isInstance(obj));
}
// ==========================================================================
// 装入和查找资源文件的方法。
// ==========================================================================
@Test
public void getResources() throws Exception {
// load from context loader
assertEquals(0, ClassLoaderUtil.getResources(null).length);
URL[] urls = ClassLoaderUtil.getResources("META-INF/MANIFEST.MF");
assertUnique(urls);
// load from class referrer
assertEquals(0, ClassLoaderUtil.getResources(null, getClass()).length);
assertEquals(0, ClassLoaderUtil.getResources(null, (Class<?>) null).length);
urls = ClassLoaderUtil.getResources("META-INF/MANIFEST.MF", getClass());
assertUnique(urls);
urls = ClassLoaderUtil.getResources("META-INF/MANIFEST.MF", (Class<?>) null);
assertUnique(urls);
// load from specified loader
assertEquals(0, ClassLoaderUtil.getResources(null, getClass().getClassLoader()).length);
assertEquals(0, ClassLoaderUtil.getResources(null, (ClassLoader) null).length);
urls = ClassLoaderUtil.getResources("META-INF/MANIFEST.MF", getClass().getClassLoader());
assertUnique(urls);
urls = ClassLoaderUtil.getResources("META-INF/MANIFEST.MF", (ClassLoader) null);
assertUnique(urls);
}
@Test
public void getResource() throws Exception {
// load from context loader
assertNull(ClassLoaderUtil.getResource(null));
assertNotNull(ClassLoaderUtil.getResource("META-INF/MANIFEST.MF"));
// load from class referrer
assertNull(ClassLoaderUtil.getResource(null, getClass()));
assertNull(ClassLoaderUtil.getResource(null, (Class<?>) null));
assertNotNull(ClassLoaderUtil.getResource("META-INF/MANIFEST.MF", getClass()));
assertNotNull(ClassLoaderUtil.getResource("META-INF/MANIFEST.MF", (Class<?>) null));
// load from specified loader
assertNull(ClassLoaderUtil.getResource(null, getClass().getClassLoader()));
assertNull(ClassLoaderUtil.getResource(null, (ClassLoader) null));
assertNotNull(ClassLoaderUtil.getResource("META-INF/MANIFEST.MF", getClass().getClassLoader()));
assertNotNull(ClassLoaderUtil.getResource("META-INF/MANIFEST.MF", (ClassLoader) null));
}
@Test
public void getResourceAsStream() throws Exception {
// load from context loader
assertNull(ClassLoaderUtil.getResourceAsStream(null));
assertNotNull(ClassLoaderUtil.getResourceAsStream("META-INF/MANIFEST.MF"));
// load from class referrer
assertNull(ClassLoaderUtil.getResourceAsStream(null, getClass()));
assertNull(ClassLoaderUtil.getResourceAsStream(null, (Class<?>) null));
assertNotNull(ClassLoaderUtil.getResourceAsStream("META-INF/MANIFEST.MF", getClass()));
assertNotNull(ClassLoaderUtil.getResourceAsStream("META-INF/MANIFEST.MF", (Class<?>) null));
// load from specified loader
assertNull(ClassLoaderUtil.getResourceAsStream(null, getClass().getClassLoader()));
assertNull(ClassLoaderUtil.getResourceAsStream(null, (ClassLoader) null));
assertNotNull(ClassLoaderUtil.getResourceAsStream("META-INF/MANIFEST.MF", getClass().getClassLoader()));
assertNotNull(ClassLoaderUtil.getResourceAsStream("META-INF/MANIFEST.MF", (ClassLoader) null));
}
private void assertUnique(URL[] urls) {
assertTrue(urls != null && urls.length > 0);
Set<URL> set = createHashSet(urls);
assertEquals(urls.length, set.size());
}
// ==========================================================================
// 查找class的位置。
//
// 类似于UNIX的which方法。
// ==========================================================================
@Test
public void whichClasses() throws Exception {
// load from context loader
assertEquals(0, ClassLoaderUtil.whichClasses(null).length);
assertEquals(0, ClassLoaderUtil.whichClasses("aaa.NotExistClass").length);
URL[] urls = ClassLoaderUtil.whichClasses("java.lang.String");
assertUnique(urls);
// load from class referrer
assertEquals(0, ClassLoaderUtil.whichClasses(null, getClass()).length);
assertEquals(0, ClassLoaderUtil.whichClasses(null, (Class<?>) null).length);
assertEquals(0, ClassLoaderUtil.whichClasses("aaa.NotExistClass", getClass()).length);
assertEquals(0, ClassLoaderUtil.whichClasses("aaa.NotExistClass", (Class<?>) null).length);
urls = ClassLoaderUtil.whichClasses("java.lang.String", getClass());
assertUnique(urls);
urls = ClassLoaderUtil.whichClasses("java.lang.String", (Class<?>) null);
assertUnique(urls);
// load from specified loader
assertEquals(0, ClassLoaderUtil.whichClasses(null, getClass().getClassLoader()).length);
assertEquals(0, ClassLoaderUtil.whichClasses(null, (ClassLoader) null).length);
assertEquals(0, ClassLoaderUtil.whichClasses("aaa.NotExistClass", getClass().getClassLoader()).length);
assertEquals(0, ClassLoaderUtil.whichClasses("aaa.NotExistClass", (ClassLoader) null).length);
urls = ClassLoaderUtil.whichClasses("java.lang.String", getClass().getClassLoader());
assertUnique(urls);
urls = ClassLoaderUtil.whichClasses("java.lang.String", (ClassLoader) null);
assertUnique(urls);
}
@Test
public void whichClass() throws Exception {
// load from context loader
assertNull(ClassLoaderUtil.whichClass(null));
assertNull(ClassLoaderUtil.whichClass("aaa.NotExistClass"));
assertNotNull(ClassLoaderUtil.whichClass("java.lang.String"));
// load from class referrer
assertNull(ClassLoaderUtil.whichClass(null, getClass()));
assertNull(ClassLoaderUtil.whichClass(null, (Class<?>) null));
assertNull(ClassLoaderUtil.whichClass("aaa.NotExistClass", getClass()));
assertNull(ClassLoaderUtil.whichClass("aaa.NotExistClass", (Class<?>) null));
assertNotNull(ClassLoaderUtil.whichClass("java.lang.String", getClass()));
assertNotNull(ClassLoaderUtil.whichClass("java.lang.String", (Class<?>) null));
// load from specified loader
assertNull(ClassLoaderUtil.whichClass(null, getClass().getClassLoader()));
assertNull(ClassLoaderUtil.whichClass(null, (ClassLoader) null));
assertNull(ClassLoaderUtil.whichClass("aaa.NotExistClass", getClass().getClassLoader()));
assertNull(ClassLoaderUtil.whichClass("aaa.NotExistClass", (ClassLoader) null));
assertNotNull(ClassLoaderUtil.whichClass("java.lang.String", getClass().getClassLoader()));
assertNotNull(ClassLoaderUtil.whichClass("java.lang.String", (ClassLoader) null));
}
}