swapping order of param substitution when getting effective client name so build parameters are properly evaluated
Added the jsr305 dependency

Signed-off-by: Oleg Nenashev <o.v.nenashev@gmail.com>
Moved the variables substitution logic to MacroStringHelper

Signed-off-by: Oleg Nenashev <o.v.nenashev@gmail.com>
Handle node environment variables in getDefaultSubstitutions(Node)

Signed-off-by: Oleg Nenashev <o.v.nenashev@gmail.com>
Added Coverity folder to .gitignore

Signed-off-by: Oleg Nenashev <o.v.nenashev@gmail.com>
Made MacroStringHelper as generic as possible.
I've also added substituteParameters(String, Node, AbstractProject, ...) to generalize non-build substitutions like checkouts.

Signed-off-by: Oleg Nenashev <o.v.nenashev@gmail.com>
Added PerforceSCM instance parameter to new MacroStringHelper methods

Signed-off-by: Oleg Nenashev <o.v.nenashev@gmail.com>
Aggressive substitution error checks in PerforceSCM.
All methods have been migrated to the new MacroStringHelper API.

Signed-off-by: Oleg Nenashev <o.v.nenashev@gmail.com>
Added PerforceSCM retrieval method to PerforceTagAction

Signed-off-by: Oleg Nenashev <o.v.nenashev@gmail.com>
Fix missing substitutions in PerforceSCM and PerforceTagNotifier.
All auxiliary methods in MacroStringHelper have been converted to private.

Signed-off-by: Oleg Nenashev <o.v.nenashev@gmail.com>
Refactoring of MacroStringHelper: annotations, proper variables substitution, etc

Signed-off-by: Oleg Nenashev <o.v.nenashev@gmail.com>
Minor refactoring of PerforceSCM class

Signed-off-by: Oleg Nenashev <o.v.nenashev@gmail.com>
Generalized the substitution of ${nodename}, ${hostname} and ${hash}

Signed-off-by: Oleg Nenashev <o.v.nenashev@gmail.com>
Code Annotations

Signed-off-by: Oleg Nenashev <o.v.nenashev@gmail.com>
Merge remote-tracking branch 'remotes/stuartrowe/master' into variables_handling_refactoring

Conflicts:
	src/main/java/hudson/plugins/perforce/PerforceSCM.java

Signed-off-by: Oleg Nenashev <o.v.nenashev@gmail.com>
Document compatibility aspects of getDefaultSubstitutions()

Signed-off-by: Oleg Nenashev <o.v.nenashev@gmail.com>
Add support of default core substitution variables and the computer environment

Signed-off-by: Oleg Nenashev <o.v.nenashev@gmail.com>
MacroStringHelper methods are interruptable

Signed-off-by: Oleg Nenashev <o.v.nenashev@gmail.com>
Inject EXECUTOR_NUMBER=UNKNOWNEXECUTOR if the executor is not available.
Examples: (polling, workspace cleanup, etc)

Signed-off-by: Oleg Nenashev <o.v.nenashev@gmail.com>
Do not substitute EXECUTOR_NUMBER variables.
It is a follow-up to the discussion of https://github.com/jenkinsci/perforce-plugin/commit/f62db6399f498f387c144e8bd6894578856a5ee0

Signed-off-by: Oleg Nenashev <o.v.nenashev@gmail.com>