Start line:  
End line:  

Snippet Preview

Snippet HTML Code

Stack Overflow Questions
  package org.apache.maven.scm.provider.hg;
  
  /*
   * 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 java.io.File;
 import java.util.List;
 import java.util.Map;

Common code for executing hg commands.

Author(s):
thurner rupert
 
 public class HgUtils
 {
    
Map between command and its valid exit codes
 
     private static final Map exitCodeMap = new HashMap();

    
Default exit codes for entries not in exitCodeMap
 
     private static final List defaultExitCodes = new ArrayList();

    
Setup exit code
 
     static
     {
         .addnew Integer( 0 ) );
 
         //Diff is different
         List diffExitCodes = new ArrayList();
         diffExitCodes.addnew Integer( 0 ) ); //No difference
         diffExitCodes.addnew Integer( 1 ) ); //Conflicts in merge-like or changes in diff-like
         diffExitCodes.addnew Integer( 2 ) ); //Unrepresentable diff changes
         .put.diffExitCodes );
     }
 
     public static ScmResult executeHgConsumer consumerScmLogger loggerFile workingDirString[] cmdAndArgs )
         throws ScmException
     {
         try
         {
             //Build commandline
             Commandline cmd = buildCmdworkingDircmdAndArgs );
             logger.info"EXECUTING: " + cmd );
 
             //Execute command
             int exitCode = executeCmdconsumercmd );
 
             //Return result
             List exitCodes = ;
             if ( .containsKeycmdAndArgs[0] ) )
             {
                 exitCodes = (List.getcmdAndArgs[0] );
             }
             boolean success = exitCodes.containsnew IntegerexitCode ) );
 
             //On failure (and not due to exceptions) - run diagnostics
             String providerMsg = "Execution of hg command succeded";
             if ( !success )
             {
                 HgConfig config = new HgConfigworkingDir );
                 providerMsg = "\nEXECUTION FAILED" + "\n  Execution of cmd : " + cmdAndArgs[0] +
                     " failed with exit code: " + exitCode + "." + "\n  Working directory was: " + "\n    " +
                     workingDir.getAbsolutePath() + config.toStringworkingDir ) + "\n";
                 logger.errorproviderMsg );
            }
            return new ScmResultcmd.toString(), providerMsgconsumer.getStdErr(), success );
        }
        catch ( ScmException se )
        {
            String msg = "EXECUTION FAILED" + "\n  Execution failed before invoking the Hg command. Last exception:" +
                "\n    " + se.getMessage();
            //Add nested cause if any
            if ( se.getCause() != null )
            {
                msg += "\n  Nested exception:" + "\n    " + se.getCause().getMessage();
            }
            //log and return
            logger.errormsg );
            throw se;
        }
    }
    static Commandline buildCmdFile workingDirString[] cmdAndArgs )
        throws ScmException
    {
        Commandline cmd = new Commandline();
        cmd.setExecutable. );
        cmd.setWorkingDirectoryworkingDir.getAbsolutePath() );
        cmd.addArgumentscmdAndArgs );
        if ( !workingDir.exists() )
        {
            boolean success = workingDir.mkdirs();
            if ( !success )
            {
                String msg = "Working directory did not exist" + " and it couldn't be created: " + workingDir;
                throw new ScmExceptionmsg );
            }
        }
        return cmd;
    }
    static int executeCmdHgConsumer consumerCommandline cmd )
        throws ScmException
    {
        final int exitCode;
        try
        {
            exitCode = CommandLineUtils.executeCommandLinecmdconsumerconsumer );
        }
        catch ( CommandLineException ex )
        {
            throw new ScmException"Command could not be executed: " + cmdex );
        }
        return exitCode;
    }
    public static ScmResult executeFile workingDirString[] cmdAndArgs )
        throws ScmException
    {
        ScmLogger logger = new DefaultLog();
        return executenew HgConsumerlogger ), loggerworkingDircmdAndArgs );
    }
    public static String[] expandCommandLineString[] cmdAndArgsScmFileSet additionalFiles )
    {
        List filesList = additionalFiles.getFileList();
        String[] cmd = new String[filesList.size() + cmdAndArgs.length];
        // Copy command into array
        System.arraycopycmdAndArgs, 0, cmd, 0, cmdAndArgs.length );
        // Add files as additional parameter into the array
        int i = 0;
        for ( Iterator iterator = filesList.iterator(); iterator.hasNext(); i++ )
        {
            File scmFile = (Fileiterator.next();
            String file = scmFile.getPath().replace'\\'. );
            cmd[i + cmdAndArgs.length] = file;
        }
        return cmd;
    }
    public static int getCurrentRevisionNumberScmLogger loggerFile workingDir )
        throws ScmException
    {
        String[] revCmd = new String[]{.};
        HgRevNoConsumer consumer = new HgRevNoConsumerlogger );
        HgUtils.executeconsumerloggerworkingDirrevCmd );
        return consumer.getCurrentRevisionNumber();
    }

    
Get current (working) revision.

Resolve revision to the last integer found in the command output.

    private static class HgRevNoConsumer
        extends HgConsumer
    {
        private int revNo;
        HgRevNoConsumerScmLogger logger )
        {
            superlogger );
        }
        public void doConsumeScmFileStatus statusString line )
        {
            try
            {
                 = Integer.valueOfline ).intValue();
            }
            catch ( NumberFormatException e )
            {
                // ignore
            }
        }
        int getCurrentRevisionNumber()
        {
            return ;
        }
    }
New to GrepCode? Check out our FAQ X