hudson.plugins.clearcase
Class AbstractClearCaseScm

java.lang.Object
  extended by hudson.scm.SCM
      extended by hudson.plugins.clearcase.AbstractClearCaseScm
All Implemented Interfaces:
hudson.ExtensionPoint, hudson.model.Describable<hudson.scm.SCM>
Direct Known Subclasses:
ClearCaseSCM, ClearCaseUcmSCM

public abstract class AbstractClearCaseScm
extends hudson.scm.SCM

Abstract class for ClearCase SCM. The class contains the logic around checkout and polling, the deriving classes only have to implement the specific checkout and polling logic.


Nested Class Summary
 
Nested classes/interfaces inherited from interface hudson.ExtensionPoint
hudson.ExtensionPoint.LegacyInstancesAreScopedToHudson
 
Field Summary
static java.lang.String CLEARCASE_VIEWNAME_ENVSTR
           
static java.lang.String CLEARCASE_VIEWPATH_ENVSTR
           
 
Fields inherited from class hudson.scm.SCM
PERMISSIONS, TAG
 
Constructor Summary
AbstractClearCaseScm(java.lang.String viewName, java.lang.String mkviewOptionalParam, boolean filterOutDestroySubBranchEvent, boolean useUpdate, boolean rmviewonrename, java.lang.String excludedRegions)
           
 
Method Summary
 void buildEnvVars(hudson.model.AbstractBuild build, java.util.Map<java.lang.String,java.lang.String> env)
          Adds the env variable for the ClearCase SCMs.
 boolean checkout(hudson.model.AbstractBuild build, hudson.Launcher launcher, hudson.FilePath workspace, hudson.model.BuildListener listener, java.io.File changelogFile)
           
protected  java.util.List<Filter> configureFilters()
           
protected  void createAndRegisterListener()
          Register listeners for Hudson events.
protected abstract  CheckOutAction createCheckOutAction(hudson.util.VariableResolver variableResolver, ClearToolLauncher launcher)
          Create a CheckOutAction that will be used by the checkout method.
protected  ClearTool createClearTool(hudson.util.VariableResolver variableResolver, ClearToolLauncher launcher)
           
protected  ClearToolLauncher createClearToolLauncher(hudson.model.TaskListener listener, hudson.FilePath workspace, hudson.Launcher launcher)
          Creates a Hudson clear tool launcher.
protected abstract  HistoryAction createHistoryAction(hudson.util.VariableResolver variableResolver, ClearToolLauncher launcher)
          Create a HistoryAction that will be used by the pollChanges() and checkout() method.
protected abstract  SaveChangeLogAction createSaveChangeLogAction(ClearToolLauncher launcher)
          Create a SaveChangeLog action that is used to save a change log
 java.lang.String generateNormalizedViewName(hudson.model.AbstractBuild<?,?> build, hudson.Launcher launcher)
          Returns a normalized view name that will be used in cleartool commands.
abstract  java.lang.String[] getBranchNames()
          Return string array containing the branch names that should be used when polling for changes.
 java.lang.String getExcludedRegions()
           
 java.lang.String[] getExcludedRegionsNormalized()
           
 java.lang.String getMkviewOptionalParam()
          Returns the user configured optional params that will be used in when creating a new view.
 hudson.FilePath getModuleRoot(hudson.FilePath workspace)
           
protected  java.lang.String getNormalizedViewName()
           
 java.lang.String getViewName()
           
abstract  java.lang.String[] getViewPaths(hudson.FilePath viewPath)
          Return string array containing the paths in the view that should be used when polling for changes.
 boolean isFilteringOutDestroySubBranchEvent()
          Returns if the "Destroyed branch" event should be filtered out or not.
 boolean isRemoveViewOnRename()
           
 boolean isUseUpdate()
           
 boolean pollChanges(hudson.model.AbstractProject project, hudson.Launcher launcher, hudson.FilePath workspace, hudson.model.TaskListener listener)
           
 boolean processWorkspaceBeforeDeletion(hudson.model.AbstractProject<?,?> project, hudson.FilePath workspace, hudson.model.Node node)
           
 boolean requiresWorkspaceForPolling()
           
protected  void setNormalizedViewName(java.lang.String normalizedViewName)
           
 boolean supportsPolling()
           
 
Methods inherited from class hudson.scm.SCM
_for, all, createChangeLogParser, createEmptyChangeLog, getBrowser, getDescriptor, getEffectiveBrowser, getModuleRoots, nullify
 
Methods inherited from class java.lang.Object
clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait
 

Field Detail

CLEARCASE_VIEWNAME_ENVSTR

public static final java.lang.String CLEARCASE_VIEWNAME_ENVSTR
See Also:
Constant Field Values

CLEARCASE_VIEWPATH_ENVSTR

public static final java.lang.String CLEARCASE_VIEWPATH_ENVSTR
See Also:
Constant Field Values
Constructor Detail

AbstractClearCaseScm

public AbstractClearCaseScm(java.lang.String viewName,
                            java.lang.String mkviewOptionalParam,
                            boolean filterOutDestroySubBranchEvent,
                            boolean useUpdate,
                            boolean rmviewonrename,
                            java.lang.String excludedRegions)
Method Detail

setNormalizedViewName

protected void setNormalizedViewName(java.lang.String normalizedViewName)

getNormalizedViewName

protected java.lang.String getNormalizedViewName()

createCheckOutAction

protected abstract CheckOutAction createCheckOutAction(hudson.util.VariableResolver variableResolver,
                                                       ClearToolLauncher launcher)
Create a CheckOutAction that will be used by the checkout method.

Parameters:
launcher - the command line launcher
Returns:
an action that can check out code from a ClearCase repository.

createHistoryAction

protected abstract HistoryAction createHistoryAction(hudson.util.VariableResolver variableResolver,
                                                     ClearToolLauncher launcher)
Create a HistoryAction that will be used by the pollChanges() and checkout() method.

Parameters:
launcher - the command line launcher
Returns:
an action that can poll if there are any changes a ClearCase repository.

createSaveChangeLogAction

protected abstract SaveChangeLogAction createSaveChangeLogAction(ClearToolLauncher launcher)
Create a SaveChangeLog action that is used to save a change log

Parameters:
launcher - the command line launcher
Returns:
an action that can save a change log to the Hudson changlog file

getBranchNames

public abstract java.lang.String[] getBranchNames()
Return string array containing the branch names that should be used when polling for changes.

Returns:
a string array, can not be empty

getViewPaths

public abstract java.lang.String[] getViewPaths(hudson.FilePath viewPath)
                                         throws java.io.IOException,
                                                java.lang.InterruptedException
Return string array containing the paths in the view that should be used when polling for changes.

Parameters:
viewPath - the file path for the view
Returns:
string array that will be used by the lshistory command
Throws:
java.io.IOException
java.lang.InterruptedException

supportsPolling

public boolean supportsPolling()
Overrides:
supportsPolling in class hudson.scm.SCM

requiresWorkspaceForPolling

public boolean requiresWorkspaceForPolling()
Overrides:
requiresWorkspaceForPolling in class hudson.scm.SCM

getModuleRoot

public hudson.FilePath getModuleRoot(hudson.FilePath workspace)
Overrides:
getModuleRoot in class hudson.scm.SCM

getViewName

public java.lang.String getViewName()

generateNormalizedViewName

public java.lang.String generateNormalizedViewName(hudson.model.AbstractBuild<?,?> build,
                                                   hudson.Launcher launcher)
Returns a normalized view name that will be used in cleartool commands. It will replace ${JOB_NAME} with the name of the job, * ${USER_NAME} with the name of the user. This way it will be easier to add new jobs without trying to find an unique view name. It will also replace invalid chars from a view name.

Parameters:
build - the project to get the name from
Returns:
a string containing no invalid chars.

getMkviewOptionalParam

public java.lang.String getMkviewOptionalParam()
Returns the user configured optional params that will be used in when creating a new view.

Returns:
string containing optional mkview parameters.

isFilteringOutDestroySubBranchEvent

public boolean isFilteringOutDestroySubBranchEvent()
Returns if the "Destroyed branch" event should be filtered out or not. For more information about the boolean, see the full discussion at http://www.nabble.com/ClearCase-build-triggering-td17507838i20.html "Usually, CC admins have a CC trigger, fires on an uncheckout event, that destroys empty branches."

Returns:
true if the "Destroyed branch" event should be filtered out or not; false otherwise

buildEnvVars

public void buildEnvVars(hudson.model.AbstractBuild build,
                         java.util.Map<java.lang.String,java.lang.String> env)
Adds the env variable for the ClearCase SCMs. CLEARCASE_VIEWNAME - The name of the clearcase view. CLEARCASE_VIEWPATH - The absolute path to the clearcase view.

Overrides:
buildEnvVars in class hudson.scm.SCM

checkout

public boolean checkout(hudson.model.AbstractBuild build,
                        hudson.Launcher launcher,
                        hudson.FilePath workspace,
                        hudson.model.BuildListener listener,
                        java.io.File changelogFile)
                 throws java.io.IOException,
                        java.lang.InterruptedException
Specified by:
checkout in class hudson.scm.SCM
Throws:
java.io.IOException
java.lang.InterruptedException

pollChanges

public boolean pollChanges(hudson.model.AbstractProject project,
                           hudson.Launcher launcher,
                           hudson.FilePath workspace,
                           hudson.model.TaskListener listener)
                    throws java.io.IOException,
                           java.lang.InterruptedException
Specified by:
pollChanges in class hudson.scm.SCM
Throws:
java.io.IOException
java.lang.InterruptedException

createClearToolLauncher

protected ClearToolLauncher createClearToolLauncher(hudson.model.TaskListener listener,
                                                    hudson.FilePath workspace,
                                                    hudson.Launcher launcher)
Creates a Hudson clear tool launcher.

Parameters:
listener - listener to write command output to
workspace - the workspace for the job
launcher - actual launcher to launch commands with
Returns:
a clear tool launcher that uses Hudson for launching commands

createClearTool

protected ClearTool createClearTool(hudson.util.VariableResolver variableResolver,
                                    ClearToolLauncher launcher)

createAndRegisterListener

protected void createAndRegisterListener()
Register listeners for Hudson events. At the moment we listen to onDeleted and try to remove the ClearCase view that was created for this job.


processWorkspaceBeforeDeletion

public boolean processWorkspaceBeforeDeletion(hudson.model.AbstractProject<?,?> project,
                                              hudson.FilePath workspace,
                                              hudson.model.Node node)
                                       throws java.io.IOException,
                                              java.lang.InterruptedException
Overrides:
processWorkspaceBeforeDeletion in class hudson.scm.SCM
Throws:
java.io.IOException
java.lang.InterruptedException

isUseUpdate

public boolean isUseUpdate()

isRemoveViewOnRename

public boolean isRemoveViewOnRename()

getExcludedRegions

public java.lang.String getExcludedRegions()

getExcludedRegionsNormalized

public java.lang.String[] getExcludedRegionsNormalized()

configureFilters

protected java.util.List<Filter> configureFilters()


Copyright © 2009. All Rights Reserved.