Class AbstractJavaTool<Request extends JavaToolRequest>

  • Type Parameters:
    Request -
    All Implemented Interfaces:
    JavaTool<Request>, org.codehaus.plexus.logging.LogEnabled

    public abstract class AbstractJavaTool<Request extends JavaToolRequest>
    extends org.codehaus.plexus.logging.AbstractLogEnabled
    implements JavaTool<Request>
    Abstract implementation of a JavaTool.
    Since:
    0.5
    • Field Detail

      • javaToolName

        private final java.lang.String javaToolName
        The java tool name to find out in the jdk.
      • javaToolFile

        private java.lang.String javaToolFile
        The location of the java tool executable file.
      • toolchain

        private java.lang.Object toolchain
        Optional toolChain used to find java tool executable file.
    • Constructor Detail

      • AbstractJavaTool

        protected AbstractJavaTool​(java.lang.String javaToolName)
        Parameters:
        javaToolName - The name of the java tool.
    • Method Detail

      • createCommandLine

        protected abstract Commandline createCommandLine​(Request request,
                                                         java.lang.String javaToolFileLocation)
                                                  throws JavaToolException
        Create the command line object given the request.
        Parameters:
        request - User request on the java tool
        javaToolFileLocation - Location of the java tool file to use
        Returns:
        the command line
        Throws:
        JavaToolException - if could not create the command line from the request
      • getJavaToolName

        public java.lang.String getJavaToolName()
        Return the name of the java tool. This is exactly the name (without his extension) of the executable to find in the jdk/bin directory.

        For example: jarsigner, keytool, javadoc, ...

        Specified by:
        getJavaToolName in interface JavaTool<Request extends JavaToolRequest>
        Returns:
        the name of the java tool.
      • setToolchain

        public void setToolchain​(java.lang.Object toolchain)
        Set an optional tool chain to find out the java tool executable location.
        Specified by:
        setToolchain in interface JavaTool<Request extends JavaToolRequest>
        Parameters:
        toolchain - optional tool chain to find out the java tool executable location. To avoid direct dependency on Maven core, this parameter is an Object that will be used as Toolchain through reflection
      • createSystemInputStream

        protected java.io.InputStream createSystemInputStream()
        Returns:
        InputStream
      • createResult

        protected JavaToolResult createResult()
        Returns:
        The JavaToolResult.
      • findJavaToolExecutable

        protected java.lang.String findJavaToolExecutable()
        Returns:
        The location of the java tool executable.
      • findToolchainExecutable

        private java.lang.String findToolchainExecutable()
        Run toolchain.findTool( javaToolName ); through reflection to avoid compile dependency on Maven core.
      • findExecutable

        private java.lang.String findExecutable​(java.lang.String command,
                                                java.lang.String homeDir,
                                                java.lang.String... subDirs)
        Finds the specified command in any of the given sub directories of the specified JDK/JRE home directory.
        Parameters:
        command - The command to find, must not be null.
        homeDir - The home directory to search in, may be null.
        subDirs - The sub directories of the home directory to search in, must not be null.
        Returns:
        The (absolute) path to the command if found, null otherwise.