Simplify using asSubclass instead of unchecked cast.
Project: http://git-wip-us.apache.org/repos/asf/logging-log4j2/repo Commit: http://git-wip-us.apache.org/repos/asf/logging-log4j2/commit/666fd7bf Tree: http://git-wip-us.apache.org/repos/asf/logging-log4j2/tree/666fd7bf Diff: http://git-wip-us.apache.org/repos/asf/logging-log4j2/diff/666fd7bf Branch: refs/heads/master Commit: 666fd7bf03a38b719449186c7c5db79ddba69d9e Parents: f735cf9 Author: Matt Sicker <[email protected]> Authored: Tue Feb 23 23:51:21 2016 -0600 Committer: Matt Sicker <[email protected]> Committed: Tue Feb 23 23:51:21 2016 -0600 ---------------------------------------------------------------------- .../logging/log4j/core/appender/db/jpa/JpaAppender.java | 11 ++++------- 1 file changed, 4 insertions(+), 7 deletions(-) ---------------------------------------------------------------------- http://git-wip-us.apache.org/repos/asf/logging-log4j2/blob/666fd7bf/log4j-core/src/main/java/org/apache/logging/log4j/core/appender/db/jpa/JpaAppender.java ---------------------------------------------------------------------- diff --git a/log4j-core/src/main/java/org/apache/logging/log4j/core/appender/db/jpa/JpaAppender.java b/log4j-core/src/main/java/org/apache/logging/log4j/core/appender/db/jpa/JpaAppender.java index 6e5d52b..1f4a92b 100644 --- a/log4j-core/src/main/java/org/apache/logging/log4j/core/appender/db/jpa/JpaAppender.java +++ b/log4j-core/src/main/java/org/apache/logging/log4j/core/appender/db/jpa/JpaAppender.java @@ -85,14 +85,8 @@ public final class JpaAppender extends AbstractDatabaseAppender<JpaDatabaseManag final boolean ignoreExceptions = Booleans.parseBoolean(ignore, true); try { - @SuppressWarnings("unchecked") final Class<? extends AbstractLogEventWrapperEntity> entityClass = - (Class<? extends AbstractLogEventWrapperEntity>) Loader.loadClass(entityClassName); - - if (!AbstractLogEventWrapperEntity.class.isAssignableFrom(entityClass)) { - LOGGER.error("Entity class [{}] does not extend AbstractLogEventWrapperEntity.", entityClassName); - return null; - } + Loader.loadClass(entityClassName).asSubclass(AbstractLogEventWrapperEntity.class); try { entityClass.getConstructor(); @@ -123,6 +117,9 @@ public final class JpaAppender extends AbstractDatabaseAppender<JpaDatabaseManag LOGGER.error("Entity class [{}] does not have a constructor with a single argument of type LogEvent.", entityClassName); return null; + } catch (final ClassCastException e) { + LOGGER.error("Entity class [{}] does not extend AbstractLogEventWrapperEntity.", entityClassName); + return null; } } }
