This is an automated email from the ASF dual-hosted git repository. juanpablo pushed a commit to branch master in repository https://gitbox.apache.org/repos/asf/jspwiki.git
commit 7765bb242593344a310a92d0c03c3298e928d5e5 Author: juanpablo <[email protected]> AuthorDate: Tue Mar 31 19:15:12 2020 +0200 added utility method to check if a class is present in classpath --- .../main/java/org/apache/wiki/util/ClassUtil.java | 15 ++++++++ .../java/org/apache/wiki/util/ClassUtilTest.java | 45 +++++++++------------- 2 files changed, 34 insertions(+), 26 deletions(-) diff --git a/jspwiki-util/src/main/java/org/apache/wiki/util/ClassUtil.java b/jspwiki-util/src/main/java/org/apache/wiki/util/ClassUtil.java index 8fe90e2..8da9f83 100644 --- a/jspwiki-util/src/main/java/org/apache/wiki/util/ClassUtil.java +++ b/jspwiki-util/src/main/java/org/apache/wiki/util/ClassUtil.java @@ -349,6 +349,21 @@ public final class ClassUtil { return false; } + /** + * Checks if a given class exists in classpath. + * + * @param className the class to check for existence. + * @return {@code true} if it exists, {@code false} otherwise. + */ + public static boolean exists( final String className ) { + try { + Class.forName( className, false, ClassUtil.class.getClassLoader() ); + return true; + } catch( final ClassNotFoundException e ) { + return false; + } + } + public static Map< String, String > getExtraClassMappings() { return c_classMappingsExtra; } diff --git a/jspwiki-util/src/test/java/org/apache/wiki/util/ClassUtilTest.java b/jspwiki-util/src/test/java/org/apache/wiki/util/ClassUtilTest.java index 9415647..6104b43 100644 --- a/jspwiki-util/src/test/java/org/apache/wiki/util/ClassUtilTest.java +++ b/jspwiki-util/src/test/java/org/apache/wiki/util/ClassUtilTest.java @@ -19,11 +19,11 @@ package org.apache.wiki.util; -import java.util.List; - import org.junit.jupiter.api.Assertions; import org.junit.jupiter.api.Test; +import java.util.List; + public class ClassUtilTest { @@ -32,33 +32,30 @@ public class ClassUtilTest * tests various kinds of searches on classpath items */ @Test - public void testClasspathSearch() throws Exception - { - List< String > jarSearch = ClassUtil.classpathEntriesUnder( "META-INF" ); + public void testClasspathSearch() { + final List< String > jarSearch = ClassUtil.classpathEntriesUnder( "META-INF" ); Assertions.assertNotNull( jarSearch ); Assertions.assertTrue( jarSearch.size() > 0 ); - List< String > fileSearch = ClassUtil.classpathEntriesUnder( "templates" ); + final List< String > fileSearch = ClassUtil.classpathEntriesUnder( "templates" ); Assertions.assertNotNull( fileSearch ); Assertions.assertTrue( fileSearch.size() > 0 ); - List< String > nullSearch = ClassUtil.classpathEntriesUnder( "blurb" ); + final List< String > nullSearch = ClassUtil.classpathEntriesUnder( "blurb" ); Assertions.assertNotNull( nullSearch ); - Assertions.assertTrue( nullSearch.size() == 0 ); + Assertions.assertEquals( 0, nullSearch.size() ); - List< String > nullInputSearch = ClassUtil.classpathEntriesUnder( null ); + final List< String > nullInputSearch = ClassUtil.classpathEntriesUnder( null ); Assertions.assertNotNull( nullInputSearch ); - Assertions.assertTrue( nullSearch.size() == 0 ); + Assertions.assertEquals( 0, nullSearch.size() ); } /** * Tries to find an existing class. */ @Test - public void testFindClass() - throws Exception - { - Class< ? > foo = ClassUtil.findClass( "java.util", "List" ); + public void testFindClass() throws Exception { + final Class< ? > foo = ClassUtil.findClass( "java.util", "List" ); Assertions.assertEquals( foo.getName(), "java.util.List" ); } @@ -67,18 +64,8 @@ public class ClassUtilTest * Non-existant classes should throw ClassNotFoundEx. */ @Test - public void testFindClassNoClass() - throws Exception - { - try - { - Class< ? > foo = ClassUtil.findClass( "org.apache.wiki", "MubbleBubble" ); - Assertions.fail( "Found class:" + foo ); - } - catch( ClassNotFoundException e ) - { - // Expected - } + public void testFindClassNoClass() { + Assertions.assertThrows( ClassNotFoundException.class, () -> ClassUtil.findClass( "org.apache.wiki", "MubbleBubble" ) ); } @Test @@ -90,4 +77,10 @@ public class ClassUtilTest Assertions.assertFalse( ClassUtil.assignable( "java.util.List", "java.util.HashMap" ) ); } + @Test + public void testExists() { + Assertions.assertTrue( ClassUtil.exists( "java.util.List" ) ); + Assertions.assertFalse( ClassUtil.exists( "org.apache.wiski.FrisFrus" ) ); + } + }
