[ https://issues.apache.org/jira/browse/SENTRY-1572?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=16372353#comment-16372353 ]
Xinran Tinney edited comment on SENTRY-1572 at 2/22/18 2:49 AM: ---------------------------------------------------------------- Thanks [~spena]! was (Author: xyu2017): Thanks @spena! > SentryMain() shouldn't dynamically load tool class > -------------------------------------------------- > > Key: SENTRY-1572 > URL: https://issues.apache.org/jira/browse/SENTRY-1572 > Project: Sentry > Issue Type: Improvement > Components: Sentry > Reporter: Alexander Kolbasov > Assignee: Xinran Tinney > Priority: Major > Labels: bite-sized, newbie > Fix For: 2.1.0 > > Attachments: SENTRY-1572.001.patch, SENTRY-1572.002.patch, > SENTRY-1572.003.patch, SENTRY-1572.004.patch, SENTRY-1572.005.patch > > > TheSentryMain class currently works by mapping the command name to a Java > class that is then dynamically loaded: > {code} > String commandName = commandLine.getOptionValue(COMMAND); > String commandClazz = COMMANDS.get(commandName); > Object command; > try { > command = Class.forName(commandClazz.trim()).newInstance(); > } catch (Exception e) { > String msg = "Could not create instance of " + commandClazz + " for > command " + commandName; > throw new IllegalStateException(msg, e); > } > if (!(command instanceof Command)) { > String msg = "Command " + command.getClass().getName() + " is not an > instance of " > + Command.class.getName(); > throw new IllegalStateException(msg); > } > ((Command)command).run(commandLine.getArgs()); > } > {code} > This ia too complicated and causes subtle problems at runtime. Instead it > should just create a new instance of appropriate class and call it directly. -- This message was sent by Atlassian JIRA (v7.6.3#76005)