Uploaded image for project: 'Sentry (Retired)'
  1. Sentry (Retired)
  2. SENTRY-1572

SentryMain() shouldn't dynamically load tool class

    XMLWordPrintableJSON

Details

    • Improvement
    • Status: Resolved
    • Major
    • Resolution: Fixed
    • None
    • 2.1.0
    • Sentry

    Description

      TheSentryMain class currently works by mapping the command name to a Java class that is then dynamically loaded:

          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());
        }
      

      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.

      Attachments

        1. SENTRY-1572.005.patch
          13 kB
          Xinran Tinney
        2. SENTRY-1572.004.patch
          8 kB
          Xinran Tinney
        3. SENTRY-1572.003.patch
          9 kB
          Xinran Tinney
        4. SENTRY-1572.002.patch
          6 kB
          Xinran Tinney
        5. SENTRY-1572.001.patch
          6 kB
          Xinran Tinney

        Activity

          People

            xyu2017 Xinran Tinney
            akolb Alex Kolbasov
            Votes:
            0 Vote for this issue
            Watchers:
            4 Start watching this issue

            Dates

              Created:
              Updated:
              Resolved: