You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@maven.apache.org by tc...@apache.org on 2013/11/13 21:35:01 UTC
svn commit: r1541695 - in /maven/shared/trunk/maven-shared-utils: ./
src/main/java/org/apache/maven/shared/utils/cli/javatool/
Author: tchemit
Date: Wed Nov 13 20:35:00 2013
New Revision: 1541695
URL: http://svn.apache.org/r1541695
Log:
MSHARED-304 - Create a API for java tool
Added:
maven/shared/trunk/maven-shared-utils/src/main/java/org/apache/maven/shared/utils/cli/javatool/
maven/shared/trunk/maven-shared-utils/src/main/java/org/apache/maven/shared/utils/cli/javatool/AbstractJavaTool.java (with props)
maven/shared/trunk/maven-shared-utils/src/main/java/org/apache/maven/shared/utils/cli/javatool/AbstractJavaToolRequest.java (with props)
maven/shared/trunk/maven-shared-utils/src/main/java/org/apache/maven/shared/utils/cli/javatool/AbstractJavaToolResult.java (with props)
maven/shared/trunk/maven-shared-utils/src/main/java/org/apache/maven/shared/utils/cli/javatool/JavaTool.java (with props)
maven/shared/trunk/maven-shared-utils/src/main/java/org/apache/maven/shared/utils/cli/javatool/JavaToolException.java (with props)
maven/shared/trunk/maven-shared-utils/src/main/java/org/apache/maven/shared/utils/cli/javatool/JavaToolRequest.java (with props)
maven/shared/trunk/maven-shared-utils/src/main/java/org/apache/maven/shared/utils/cli/javatool/JavaToolResult.java (with props)
Modified:
maven/shared/trunk/maven-shared-utils/pom.xml
Modified: maven/shared/trunk/maven-shared-utils/pom.xml
URL: http://svn.apache.org/viewvc/maven/shared/trunk/maven-shared-utils/pom.xml?rev=1541695&r1=1541694&r2=1541695&view=diff
==============================================================================
--- maven/shared/trunk/maven-shared-utils/pom.xml (original)
+++ maven/shared/trunk/maven-shared-utils/pom.xml Wed Nov 13 20:35:00 2013
@@ -92,6 +92,13 @@
<artifactId>jsr305</artifactId>
<version>2.0.1</version>
</dependency>
+ <!-- used for the javatool api -->
+ <dependency>
+ <groupId>org.apache.maven</groupId>
+ <artifactId>maven-toolchain</artifactId>
+ <version>${mavenVersion}</version>
+ <scope>provided</scope>
+ </dependency>
</dependencies>
<build>
Added: maven/shared/trunk/maven-shared-utils/src/main/java/org/apache/maven/shared/utils/cli/javatool/AbstractJavaTool.java
URL: http://svn.apache.org/viewvc/maven/shared/trunk/maven-shared-utils/src/main/java/org/apache/maven/shared/utils/cli/javatool/AbstractJavaTool.java?rev=1541695&view=auto
==============================================================================
--- maven/shared/trunk/maven-shared-utils/src/main/java/org/apache/maven/shared/utils/cli/javatool/AbstractJavaTool.java (added)
+++ maven/shared/trunk/maven-shared-utils/src/main/java/org/apache/maven/shared/utils/cli/javatool/AbstractJavaTool.java Wed Nov 13 20:35:00 2013
@@ -0,0 +1,289 @@
+package org.apache.maven.shared.utils.cli.javatool;
+
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one
+ * or more contributor license agreements. See the NOTICE file
+ * distributed with this work for additional information
+ * regarding copyright ownership. The ASF licenses this file
+ * to you under the Apache License, Version 2.0 (the
+ * "License"); you may not use this file except in compliance
+ * with the License. You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing,
+ * software distributed under the License is distributed on an
+ * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+ * KIND, either express or implied. See the License for the
+ * specific language governing permissions and limitations
+ * under the License.
+ */
+
+import org.apache.maven.shared.utils.Os;
+import org.apache.maven.shared.utils.StringUtils;
+import org.apache.maven.shared.utils.cli.CommandLineException;
+import org.apache.maven.shared.utils.cli.CommandLineUtils;
+import org.apache.maven.shared.utils.cli.Commandline;
+import org.apache.maven.shared.utils.cli.StreamConsumer;
+import org.apache.maven.toolchain.Toolchain;
+import org.codehaus.plexus.logging.AbstractLogEnabled;
+
+import java.io.File;
+import java.io.InputStream;
+import java.util.Map;
+
+/**
+ * Abstract implementation of a {@link JavaTool}.
+ *
+ * @author Tony Chemit <ch...@codelutin.com>
+ * @since 0.5
+ */
+public abstract class AbstractJavaTool<Request extends JavaToolRequest, Result extends JavaToolResult>
+ extends AbstractLogEnabled
+ implements JavaTool<Request, Result>
+{
+
+ /**
+ * The java tool name to find out in the jdk.
+ */
+ private final String javaToolName;
+
+ /**
+ * The location of the java tool executable file.
+ */
+ private String javaToolFile;
+
+ /**
+ * Optional toolChain used to find java tool executable file.
+ */
+ private Toolchain toolchain;
+
+ protected AbstractJavaTool( String javaToolName )
+ {
+ this.javaToolName = javaToolName;
+ }
+
+ /**
+ * Create the commandline object given the request.
+ *
+ * @param request User request on the java tool
+ * @param javaToolFile Location of the java tool file to use
+ * @return the commandline
+ * @throws JavaToolException if could not create the command line from the request
+ */
+ protected abstract Commandline createCommandLine( Request request, String javaToolFile )
+ throws JavaToolException;
+
+ protected abstract Result createResult();
+
+ /**
+ * {@inheritDoc}
+ */
+ public String getJavaToolName()
+ {
+ return javaToolName;
+ }
+
+ /**
+ * {@inheritDoc}
+ */
+ public void setToolchain( Toolchain toolchain )
+ {
+ this.toolchain = toolchain;
+ }
+
+ /**
+ * {@inheritDoc}
+ */
+ public Result execute( Request request )
+ throws JavaToolException
+ {
+
+ if ( javaToolFile == null )
+ {
+
+ // find the java tool file to use
+ try
+ {
+ javaToolFile = findJavaToolExecutable();
+ }
+ catch ( Exception e )
+ {
+ throw new JavaToolException( "Error finding " + javaToolName + " executable. Reason: " + e.getMessage(),
+ e );
+ }
+ }
+
+ // creates the command line from the given request
+ Commandline cli = createCommandLine( request, javaToolFile );
+
+ // execute it
+ Result result = executeCommandLine( cli, request );
+
+ // return result
+ return result;
+ }
+
+ protected InputStream createSystemInputStream()
+ {
+ InputStream systemIn = new InputStream()
+ {
+
+ /**
+ * {@inheritDoc}
+ */
+ public int read()
+ {
+ return -1;
+ }
+
+ };
+ return systemIn;
+ }
+
+ protected Result executeCommandLine( Commandline cli, Request request )
+ {
+ if ( getLogger().isDebugEnabled() )
+ {
+ getLogger().debug( "Executing: " + cli );
+ }
+
+ Result result = createResult();
+
+ result.setCommandline( cli );
+
+ InputStream systemIn = createSystemInputStream();
+
+ StreamConsumer systemOut = createSystemOutStreamConsumer( request );
+
+ StreamConsumer systemErr = createSystemErrorStreamConsumer( request );
+
+ try
+ {
+ int resultCode = CommandLineUtils.executeCommandLine( cli, systemIn, systemOut, systemErr );
+
+ result.setExitCode( resultCode );
+ }
+ catch ( CommandLineException e )
+ {
+ result.setExecutionException( e );
+ }
+
+ return result;
+ }
+
+ protected StreamConsumer createSystemErrorStreamConsumer( Request request )
+ {
+ StreamConsumer systemErr = request.getSystemErrorStreamConsumer();
+
+ if ( systemErr == null )
+ {
+ systemErr = new StreamConsumer()
+ {
+
+ /**
+ * {@inheritDoc}
+ */
+ public void consumeLine( final String line )
+ {
+ getLogger().warn( line );
+ }
+
+ };
+ }
+ return systemErr;
+ }
+
+ protected StreamConsumer createSystemOutStreamConsumer( Request request )
+ {
+ StreamConsumer systemOut = request.getSystemOutStreamConsumer();
+
+ if ( systemOut == null )
+ {
+
+ systemOut = new StreamConsumer()
+ {
+
+ /**
+ * {@inheritDoc}
+ */
+ public void consumeLine( final String line )
+ {
+ getLogger().info( line );
+
+ }
+
+ };
+ }
+ return systemOut;
+ }
+
+ protected String findJavaToolExecutable()
+ {
+ String command = javaToolName + ( Os.isFamily( Os.FAMILY_WINDOWS ) ? ".exe" : "" );
+
+ String executable = null;
+
+ if ( toolchain != null )
+ {
+ executable = toolchain.findTool( javaToolName );
+ }
+
+ if ( executable == null )
+ {
+ executable = findExecutable( command, System.getProperty( "java.home" ), "../bin", "bin", "../sh" );
+ }
+
+ if ( executable == null )
+ {
+
+ Map<String, String> env = System.getenv();
+
+ String[] variables = { "JDK_HOME", "JAVA_HOME" };
+
+ for ( String variable : variables )
+ {
+ executable = findExecutable( command, env.get( variable ), "bin", "sh" );
+ if ( executable != null )
+ {
+ break;
+ }
+ }
+ }
+
+ if ( executable == null )
+ {
+ executable = command;
+ }
+
+ return executable;
+ }
+
+ /**
+ * Finds the specified command in any of the given sub directories of the specified JDK/JRE home directory.
+ *
+ * @param command The command to find, must not be <code>null</code>.
+ * @param homeDir The home directory to search in, may be <code>null</code>.
+ * @param subDirs The sub directories of the home directory to search in, must not be <code>null</code>.
+ * @return The (absolute) path to the command if found, <code>null</code> otherwise.
+ */
+ private String findExecutable( String command, String homeDir, String... subDirs )
+ {
+ String result = null;
+ if ( StringUtils.isNotEmpty( homeDir ) )
+ {
+ for ( String subDir : subDirs )
+ {
+ File file = new File( new File( homeDir, subDir ), command );
+
+ if ( file.isFile() )
+ {
+ result = file.getAbsolutePath();
+ break;
+ }
+ }
+ }
+
+ return result;
+ }
+}
Propchange: maven/shared/trunk/maven-shared-utils/src/main/java/org/apache/maven/shared/utils/cli/javatool/AbstractJavaTool.java
------------------------------------------------------------------------------
svn:eol-style = native
Propchange: maven/shared/trunk/maven-shared-utils/src/main/java/org/apache/maven/shared/utils/cli/javatool/AbstractJavaTool.java
------------------------------------------------------------------------------
svn:keywords = Author Date Id Revision
Added: maven/shared/trunk/maven-shared-utils/src/main/java/org/apache/maven/shared/utils/cli/javatool/AbstractJavaToolRequest.java
URL: http://svn.apache.org/viewvc/maven/shared/trunk/maven-shared-utils/src/main/java/org/apache/maven/shared/utils/cli/javatool/AbstractJavaToolRequest.java?rev=1541695&view=auto
==============================================================================
--- maven/shared/trunk/maven-shared-utils/src/main/java/org/apache/maven/shared/utils/cli/javatool/AbstractJavaToolRequest.java (added)
+++ maven/shared/trunk/maven-shared-utils/src/main/java/org/apache/maven/shared/utils/cli/javatool/AbstractJavaToolRequest.java Wed Nov 13 20:35:00 2013
@@ -0,0 +1,75 @@
+package org.apache.maven.shared.utils.cli.javatool;
+
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one
+ * or more contributor license agreements. See the NOTICE file
+ * distributed with this work for additional information
+ * regarding copyright ownership. The ASF licenses this file
+ * to you under the Apache License, Version 2.0 (the
+ * "License"); you may not use this file except in compliance
+ * with the License. You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing,
+ * software distributed under the License is distributed on an
+ * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+ * KIND, either express or implied. See the License for the
+ * specific language governing permissions and limitations
+ * under the License.
+ */
+
+import org.apache.maven.shared.utils.cli.StreamConsumer;
+
+/**
+ * Abstract implementation of a {@link JavaToolRequest}.
+ *
+ * @author Tony Chemit <ch...@codelutin.com>
+ * @since 0.5
+ */
+public class AbstractJavaToolRequest
+ implements JavaToolRequest
+{
+
+ /**
+ * Optional system out stream consumer used by the commandline execution.
+ */
+ private StreamConsumer systemOutStreamConsumer;
+
+ /**
+ * Optional system error stream consumer used by the commandline execution.
+ */
+ private StreamConsumer systemErrorStreamConsumer;
+
+ /**
+ * {@inheritDoc}
+ */
+ public StreamConsumer getSystemOutStreamConsumer()
+ {
+ return systemOutStreamConsumer;
+ }
+
+ /**
+ * {@inheritDoc}
+ */
+ public StreamConsumer getSystemErrorStreamConsumer()
+ {
+ return systemErrorStreamConsumer;
+ }
+
+ /**
+ * {@inheritDoc}
+ */
+ public void setSystemOutStreamConsumer( StreamConsumer systemOutStreamConsumer )
+ {
+ this.systemOutStreamConsumer = systemOutStreamConsumer;
+ }
+
+ /**
+ * {@inheritDoc}
+ */
+ public void setSystemErrorStreamConsumer( StreamConsumer systemErrorStreamConsumer )
+ {
+ this.systemErrorStreamConsumer = systemErrorStreamConsumer;
+ }
+}
Propchange: maven/shared/trunk/maven-shared-utils/src/main/java/org/apache/maven/shared/utils/cli/javatool/AbstractJavaToolRequest.java
------------------------------------------------------------------------------
svn:eol-style = native
Propchange: maven/shared/trunk/maven-shared-utils/src/main/java/org/apache/maven/shared/utils/cli/javatool/AbstractJavaToolRequest.java
------------------------------------------------------------------------------
svn:keywords = Author Date Id Revision
Added: maven/shared/trunk/maven-shared-utils/src/main/java/org/apache/maven/shared/utils/cli/javatool/AbstractJavaToolResult.java
URL: http://svn.apache.org/viewvc/maven/shared/trunk/maven-shared-utils/src/main/java/org/apache/maven/shared/utils/cli/javatool/AbstractJavaToolResult.java?rev=1541695&view=auto
==============================================================================
--- maven/shared/trunk/maven-shared-utils/src/main/java/org/apache/maven/shared/utils/cli/javatool/AbstractJavaToolResult.java (added)
+++ maven/shared/trunk/maven-shared-utils/src/main/java/org/apache/maven/shared/utils/cli/javatool/AbstractJavaToolResult.java Wed Nov 13 20:35:00 2013
@@ -0,0 +1,97 @@
+package org.apache.maven.shared.utils.cli.javatool;
+
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one
+ * or more contributor license agreements. See the NOTICE file
+ * distributed with this work for additional information
+ * regarding copyright ownership. The ASF licenses this file
+ * to you under the Apache License, Version 2.0 (the
+ * "License"); you may not use this file except in compliance
+ * with the License. You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing,
+ * software distributed under the License is distributed on an
+ * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+ * KIND, either express or implied. See the License for the
+ * specific language governing permissions and limitations
+ * under the License.
+ */
+
+import org.apache.maven.shared.utils.cli.CommandLineException;
+import org.apache.maven.shared.utils.cli.Commandline;
+
+/**
+ * Abstract implementation of a {@link JavaToolResult}.
+ *
+ * @author Tony Chemit <ch...@codelutin.com>
+ * @since 0.5
+ */
+public abstract class AbstractJavaToolResult
+ implements JavaToolResult
+{
+ /**
+ * The exception that prevented to execute the command line, will be <code>null</code> if jarSigner could be
+ * successfully started.
+ */
+ private CommandLineException executionException;
+
+ /**
+ * The exit code reported by the Maven invocation.
+ */
+ private int exitCode = Integer.MIN_VALUE;
+
+ /**
+ * The command line used to obtain this result.
+ */
+ private Commandline commandline;
+
+ /**
+ * {@inheritDoc}
+ */
+ public int getExitCode()
+ {
+ return exitCode;
+ }
+
+ /**
+ * {@inheritDoc}
+ */
+ public Commandline getCommandline()
+ {
+ return commandline;
+ }
+
+ /**
+ * {@inheritDoc}
+ */
+ public CommandLineException getExecutionException()
+ {
+ return executionException;
+ }
+
+ /**
+ * {@inheritDoc}
+ */
+ public void setExitCode( int exitCode )
+ {
+ this.exitCode = exitCode;
+ }
+
+ /**
+ * {@inheritDoc}
+ */
+ public void setExecutionException( CommandLineException executionException )
+ {
+ this.executionException = executionException;
+ }
+
+ /**
+ * {@inheritDoc}
+ */
+ public void setCommandline( Commandline commandline )
+ {
+ this.commandline = commandline;
+ }
+}
Propchange: maven/shared/trunk/maven-shared-utils/src/main/java/org/apache/maven/shared/utils/cli/javatool/AbstractJavaToolResult.java
------------------------------------------------------------------------------
svn:eol-style = native
Propchange: maven/shared/trunk/maven-shared-utils/src/main/java/org/apache/maven/shared/utils/cli/javatool/AbstractJavaToolResult.java
------------------------------------------------------------------------------
svn:keywords = Author Date Id Revision
Added: maven/shared/trunk/maven-shared-utils/src/main/java/org/apache/maven/shared/utils/cli/javatool/JavaTool.java
URL: http://svn.apache.org/viewvc/maven/shared/trunk/maven-shared-utils/src/main/java/org/apache/maven/shared/utils/cli/javatool/JavaTool.java?rev=1541695&view=auto
==============================================================================
--- maven/shared/trunk/maven-shared-utils/src/main/java/org/apache/maven/shared/utils/cli/javatool/JavaTool.java (added)
+++ maven/shared/trunk/maven-shared-utils/src/main/java/org/apache/maven/shared/utils/cli/javatool/JavaTool.java Wed Nov 13 20:35:00 2013
@@ -0,0 +1,70 @@
+package org.apache.maven.shared.utils.cli.javatool;
+
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one
+ * or more contributor license agreements. See the NOTICE file
+ * distributed with this work for additional information
+ * regarding copyright ownership. The ASF licenses this file
+ * to you under the Apache License, Version 2.0 (the
+ * "License"); you may not use this file except in compliance
+ * with the License. You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing,
+ * software distributed under the License is distributed on an
+ * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+ * KIND, either express or implied. See the License for the
+ * specific language governing permissions and limitations
+ * under the License.
+ */
+
+import org.apache.maven.toolchain.Toolchain;
+
+/**
+ * Describes a java tool, means a executable available in the jdk.
+ * <p/>
+ * The name of the tool ({@link #getJavaToolName()}) reflects the name of the executable that should exists as an
+ * executable in the jdk, like {@code jarsigner, keytool, javadoc, ...}.
+ * <p/>
+ * An abstract implementation of the {@link JavaTool} named {@link AbstractJavaTool} use the command line API to execute
+ * any user requests of this tool.
+ *
+ * @author Tony Chemit <ch...@codelutin.com>
+ * @since 0.5
+ */
+public interface JavaTool<Request extends JavaToolRequest, Result extends JavaToolResult>
+{
+
+ /**
+ * Return the name of the java tool. This is exactly the name (without his extension) of the executable to
+ * find in the {@code jdk/bin} directory.
+ * <p/>
+ * For example: {@code jarsigner, keytoll, javadoc, ...}
+ *
+ * @return the name of the java tool.
+ */
+ String getJavaToolName();
+
+ /**
+ * Set an optional tool chain to find out the java tool executable location.
+ *
+ * @param toolchain optional tool chain to find out the java tool executable location.
+ */
+ void setToolchain( Toolchain toolchain );
+
+ /**
+ * Execute the input request and then returns the result of the execution.
+ * <p/>
+ * If could not create the java tool invocation, a {@link JavaToolException} will be thrown.
+ * <p/>
+ * If execution fails, then the result will have a none-zero {@link Result#getExitCode()} and his
+ * {@link Result#getExecutionException()} will be filled with the error, otherwise the exist code will be zero.
+ *
+ * @param request the request to perform
+ * @return the result of the tool execution
+ * @throws JavaToolException if could not create the java tool invocation
+ */
+ Result execute( Request request )
+ throws JavaToolException;
+}
Propchange: maven/shared/trunk/maven-shared-utils/src/main/java/org/apache/maven/shared/utils/cli/javatool/JavaTool.java
------------------------------------------------------------------------------
svn:eol-style = native
Propchange: maven/shared/trunk/maven-shared-utils/src/main/java/org/apache/maven/shared/utils/cli/javatool/JavaTool.java
------------------------------------------------------------------------------
svn:keywords = Author Date Id Revision
Added: maven/shared/trunk/maven-shared-utils/src/main/java/org/apache/maven/shared/utils/cli/javatool/JavaToolException.java
URL: http://svn.apache.org/viewvc/maven/shared/trunk/maven-shared-utils/src/main/java/org/apache/maven/shared/utils/cli/javatool/JavaToolException.java?rev=1541695&view=auto
==============================================================================
--- maven/shared/trunk/maven-shared-utils/src/main/java/org/apache/maven/shared/utils/cli/javatool/JavaToolException.java (added)
+++ maven/shared/trunk/maven-shared-utils/src/main/java/org/apache/maven/shared/utils/cli/javatool/JavaToolException.java Wed Nov 13 20:35:00 2013
@@ -0,0 +1,47 @@
+package org.apache.maven.shared.utils.cli.javatool;
+
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one
+ * or more contributor license agreements. See the NOTICE file
+ * distributed with this work for additional information
+ * regarding copyright ownership. The ASF licenses this file
+ * to you under the Apache License, Version 2.0 (the
+ * "License"); you may not use this file except in compliance
+ * with the License. You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing,
+ * software distributed under the License is distributed on an
+ * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+ * KIND, either express or implied. See the License for the
+ * specific language governing permissions and limitations
+ * under the License.
+ */
+
+/**
+ * Signals an error during the construction of the command line used to invoke java tool, e.g. illegal invocation arguments.
+ * <p/>
+ * This should not be confused with a failure of the invoked java tool build itself which will be reported by means of a
+ * non-zero exit code.
+ *
+ * @author Tony Chemit <ch...@codelutin.com>
+ * @version $Id$
+ * @see JavaToolResult#getExitCode()
+ * @since 0.5
+ */
+public class JavaToolException
+ extends Exception
+{
+ private static final long serialVersionUID = 1L;
+
+ public JavaToolException( String message )
+ {
+ super( message );
+ }
+
+ public JavaToolException( String message, Throwable cause )
+ {
+ super( message, cause );
+ }
+}
Propchange: maven/shared/trunk/maven-shared-utils/src/main/java/org/apache/maven/shared/utils/cli/javatool/JavaToolException.java
------------------------------------------------------------------------------
svn:eol-style = native
Propchange: maven/shared/trunk/maven-shared-utils/src/main/java/org/apache/maven/shared/utils/cli/javatool/JavaToolException.java
------------------------------------------------------------------------------
svn:keywords = Author Date Id Revision
Added: maven/shared/trunk/maven-shared-utils/src/main/java/org/apache/maven/shared/utils/cli/javatool/JavaToolRequest.java
URL: http://svn.apache.org/viewvc/maven/shared/trunk/maven-shared-utils/src/main/java/org/apache/maven/shared/utils/cli/javatool/JavaToolRequest.java?rev=1541695&view=auto
==============================================================================
--- maven/shared/trunk/maven-shared-utils/src/main/java/org/apache/maven/shared/utils/cli/javatool/JavaToolRequest.java (added)
+++ maven/shared/trunk/maven-shared-utils/src/main/java/org/apache/maven/shared/utils/cli/javatool/JavaToolRequest.java Wed Nov 13 20:35:00 2013
@@ -0,0 +1,66 @@
+package org.apache.maven.shared.utils.cli.javatool;
+
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one
+ * or more contributor license agreements. See the NOTICE file
+ * distributed with this work for additional information
+ * regarding copyright ownership. The ASF licenses this file
+ * to you under the Apache License, Version 2.0 (the
+ * "License"); you may not use this file except in compliance
+ * with the License. You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing,
+ * software distributed under the License is distributed on an
+ * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+ * KIND, either express or implied. See the License for the
+ * specific language governing permissions and limitations
+ * under the License.
+ */
+
+import org.apache.maven.shared.utils.cli.StreamConsumer;
+
+/**
+ * Specifies the minimum parameters used to control a {@link JavaTool} invocation.
+ *
+ * @author Tony Chemit <ch...@codelutin.com>
+ * @since 0.5
+ */
+public interface JavaToolRequest
+{
+
+ /**
+ * Gets the value of the {@code systemOutStreamConsumer} field.
+ * <p/>
+ * This option field if filled is used by the commandline tool to consume system ouput stream of the jarsigner
+ * command.
+ *
+ * @return the value of the {@code systemOutStreamConsumer} field.
+ */
+ StreamConsumer getSystemOutStreamConsumer();
+
+ /**
+ * Gets the value of the {@code systemErrorStreamConsumer} field.
+ * <p/>
+ * This option field if filled is used by the commandline tool to consume system error stream of the jarsigner
+ * command.
+ *
+ * @return the value of the {@code systemErrorStreamConsumer} field.
+ */
+ StreamConsumer getSystemErrorStreamConsumer();
+
+ /**
+ * Sets the new given value to the field {@code systemOutStreamConsumer} of the request.
+ *
+ * @param systemOutStreamConsumer the new value of the field {@code systemOutStreamConsumer}.
+ */
+ void setSystemOutStreamConsumer( StreamConsumer systemOutStreamConsumer );
+
+ /**
+ * Sets the new given value to the field {@code systemErrorStreamConsumer} of the request.
+ *
+ * @param systemErrorStreamConsumer the new value of the field {@code systemErrorStreamConsumer}.
+ */
+ void setSystemErrorStreamConsumer( StreamConsumer systemErrorStreamConsumer );
+}
Propchange: maven/shared/trunk/maven-shared-utils/src/main/java/org/apache/maven/shared/utils/cli/javatool/JavaToolRequest.java
------------------------------------------------------------------------------
svn:eol-style = native
Propchange: maven/shared/trunk/maven-shared-utils/src/main/java/org/apache/maven/shared/utils/cli/javatool/JavaToolRequest.java
------------------------------------------------------------------------------
svn:keywords = Author Date Id Revision
Added: maven/shared/trunk/maven-shared-utils/src/main/java/org/apache/maven/shared/utils/cli/javatool/JavaToolResult.java
URL: http://svn.apache.org/viewvc/maven/shared/trunk/maven-shared-utils/src/main/java/org/apache/maven/shared/utils/cli/javatool/JavaToolResult.java?rev=1541695&view=auto
==============================================================================
--- maven/shared/trunk/maven-shared-utils/src/main/java/org/apache/maven/shared/utils/cli/javatool/JavaToolResult.java (added)
+++ maven/shared/trunk/maven-shared-utils/src/main/java/org/apache/maven/shared/utils/cli/javatool/JavaToolResult.java Wed Nov 13 20:35:00 2013
@@ -0,0 +1,76 @@
+package org.apache.maven.shared.utils.cli.javatool;
+
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one
+ * or more contributor license agreements. See the NOTICE file
+ * distributed with this work for additional information
+ * regarding copyright ownership. The ASF licenses this file
+ * to you under the Apache License, Version 2.0 (the
+ * "License"); you may not use this file except in compliance
+ * with the License. You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing,
+ * software distributed under the License is distributed on an
+ * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+ * KIND, either express or implied. See the License for the
+ * specific language governing permissions and limitations
+ * under the License.
+ */
+
+import org.apache.maven.shared.utils.cli.CommandLineException;
+import org.apache.maven.shared.utils.cli.Commandline;
+
+/**
+ * Describes the result of a {@link JavaTool} invocation.
+ *
+ * @author Tony Chemit <ch...@codelutin.com>
+ * @since 0.5
+ */
+public interface JavaToolResult
+{
+ /**
+ * Gets the command line used.
+ *
+ * @return The command line used
+ */
+ Commandline getCommandline();
+
+ /**
+ * Gets the exception that possibly occurred during the execution of the command line.
+ *
+ * @return The exception that prevented to invoke tool or <code>null</code> if the command line was successfully
+ * processed by the operating system.
+ */
+ CommandLineException getExecutionException();
+
+ /**
+ * Gets the exit code from the tool invocation. A non-zero value indicates a build failure. <strong>Note:</strong>
+ * This value is undefined if {@link #getExecutionException()} reports an exception.
+ *
+ * @return The exit code from the tool invocation.
+ */
+ int getExitCode();
+
+ /**
+ * Sets the exit code reported by the tool invocation.
+ *
+ * @param exitCode The exit code reported by the tool invocation.
+ */
+ void setExitCode( int exitCode );
+
+ /**
+ * Sets the exception that prevented to execute the command line.
+ *
+ * @param executionException The exception that prevented to execute the command line, may be <code>null</code>.
+ */
+ void setExecutionException( CommandLineException executionException );
+
+ /**
+ * Set the commandline used to obtain this result.
+ *
+ * @param commandline the commandline used to obtain this result
+ */
+ void setCommandline( Commandline commandline );
+}
Propchange: maven/shared/trunk/maven-shared-utils/src/main/java/org/apache/maven/shared/utils/cli/javatool/JavaToolResult.java
------------------------------------------------------------------------------
svn:eol-style = native
Propchange: maven/shared/trunk/maven-shared-utils/src/main/java/org/apache/maven/shared/utils/cli/javatool/JavaToolResult.java
------------------------------------------------------------------------------
svn:keywords = Author Date Id Revision