Skip to content

Commit

Permalink
Browse files Browse the repository at this point in the history
Fixed JENKINS-25342
  • Loading branch information
MadsNielsen committed Nov 11, 2014
1 parent 8fad303 commit 1da037b
Show file tree
Hide file tree
Showing 15 changed files with 72 additions and 47 deletions.
@@ -1,12 +1,12 @@
package net.praqma.hudson.nametemplates;

import hudson.FilePath;
import net.praqma.hudson.CCUCMBuildAction;

public class BaselineTemplate extends Template {

@Override
public String parse( CCUCMBuildAction action, String args ) {

public String parse( CCUCMBuildAction action, String args, FilePath ws ) {
try {
return action.getBaseline().getShortname();
} catch ( Exception e ) {
Expand Down
Expand Up @@ -13,15 +13,11 @@ public class ClearCaseVersionNumberTemplate extends Template {
private static final Logger logger = Logger.getLogger( ClearCaseVersionNumberTemplate.class.getName() );

@Override
public String parse( CCUCMBuildAction action, String args ) throws TemplateException {

public String parse( CCUCMBuildAction action, String args, FilePath ws) throws TemplateException {
try {
logger.fine( "STREAM: " + action.getStream() );
logger.fine( "PROJECT: " + action.getStream().getProject() );
Project project = action.getStream().getProject();
return RemoteUtil.getClearCaseVersion( new FilePath(new File(action.getWorkspace())), project );
} catch( Exception e ) {
logger.warning( "Getting cc version error: " + e.getMessage() );
return "unknownccversion";
}
}
Expand Down
@@ -1,11 +1,12 @@
package net.praqma.hudson.nametemplates;

import hudson.FilePath;
import net.praqma.hudson.CCUCMBuildAction;

public class ComponentTemplate extends Template {

@Override
public String parse( CCUCMBuildAction action, String args ) {
public String parse( CCUCMBuildAction action, String args, FilePath ws ) {

try {
return action.getBaseline().getComponent().getShortname();
Expand Down
@@ -1,5 +1,6 @@
package net.praqma.hudson.nametemplates;

import hudson.FilePath;
import java.text.SimpleDateFormat;
import java.util.Date;

Expand All @@ -10,7 +11,7 @@ public class DateTemplate extends Template {
private SimpleDateFormat dateFormat = new SimpleDateFormat( "yyyyMMdd" );

@Override
public String parse( CCUCMBuildAction action, String args ) {
public String parse( CCUCMBuildAction action, String args, FilePath ws ) {

return dateFormat.format( new Date() );
}
Expand Down
@@ -1,6 +1,7 @@
package net.praqma.hudson.nametemplates;

import hudson.EnvVars;
import hudson.FilePath;

import net.praqma.hudson.CCUCMBuildAction;
import net.praqma.hudson.exception.TemplateException;
Expand All @@ -12,7 +13,7 @@ public class EnvTemplate extends Template {
private static final Logger logger = Logger.getLogger( EnvTemplate.class.getName() );

@Override
public String parse( CCUCMBuildAction action, String args ) throws TemplateException {
public String parse( CCUCMBuildAction action, String args, FilePath ws ) throws TemplateException {
logger.finest( "ENV PARSING" );
EnvVars vars = null;
try {
Expand Down
Expand Up @@ -13,7 +13,7 @@ public class FileTemplate extends Template {
private static final Logger logger = Logger.getLogger( FileTemplate.class.getName() );

@Override
public String parse( CCUCMBuildAction action, String filename ) {
public String parse( CCUCMBuildAction action, String filename, FilePath ws ) {
try {
logger.fine(String.format("[FileTemplate] Parsing FileTemplate"));
String res = action.getBuild().getExecutor().getCurrentWorkspace().act(new FileFoundable(filename));
Expand Down
62 changes: 40 additions & 22 deletions src/main/java/net/praqma/hudson/nametemplates/NameTemplate.java
@@ -1,5 +1,6 @@
package net.praqma.hudson.nametemplates;

import hudson.FilePath;
import java.util.HashMap;
import java.util.Map;
import java.util.Map.Entry;
Expand Down Expand Up @@ -32,10 +33,10 @@ public class NameTemplate {
private static Pattern rx_ = Pattern.compile( "(\\[.*?\\])" );
private static Pattern rx_checkFinal = Pattern.compile( "^[\\w\\._-]*$" );

/**
* This is the method we use to validate templates.
* @param action
*/
/**
* This is the method we use to validate templates.
* @param action
*/
public static void validateTemplates( CCUCMBuildAction action) {
logger.finer( "Validating templates for " + action );
//Only evaluate those that are actually chosen
Expand All @@ -44,7 +45,22 @@ public static void validateTemplates( CCUCMBuildAction action) {
for( Entry<String, String> val : chosentemplates.entrySet() ) {
try {
logger.finer( "Validating " + val.getKey() );
templates.get( val.getKey() ).parse( action, val.getValue() );
templates.get( val.getKey() ).parse( action, val.getValue(), null );
} catch (TemplateException e) {
logger.warning( "Could not validate " + val.getKey() );
}
}
}

public static void validateTemplates( CCUCMBuildAction action, FilePath ws) {
logger.finer( "Validating templates for " + action );
//Only evaluate those that are actually chosen

HashMap<String, String> chosentemplates = getChosenTemplates(action.getNameTemplate());
for( Entry<String, String> val : chosentemplates.entrySet() ) {
try {
logger.finer( "Validating " + val.getKey() );
templates.get( val.getKey() ).parse( action, val.getValue(), ws );
} catch (TemplateException e) {
logger.warning( "Could not validate " + val.getKey() );
}
Expand Down Expand Up @@ -83,12 +99,12 @@ public static HashMap<String,String> getChosenTemplates(String templatestring) {
return chosenTemplates;
}

/**
* Checks to see if the templates are valid, and that the template names are available.
* @param template
* @return
* @throws TemplateException
*/
/**
* Checks to see if the templates are valid, and that the template names are available.
* @param template
* @return
* @throws TemplateException
*/
public static boolean testTemplate( String template ) throws TemplateException {
Matcher m = rx_.matcher( template );
String result = template;
Expand Down Expand Up @@ -117,15 +133,16 @@ public static boolean testTemplate( String template ) throws TemplateException {

return true;
}

/**
* At this point. We do not need to filter chosen templates.
* @param template
* @param action
* @return
* @throws TemplateException
*/
public static String parseTemplate( String template, CCUCMBuildAction action ) throws TemplateException {

/**
* At this point. We do not need to filter chosen templates.
* @param template
* @param action
* @param ws
* @return
* @throws TemplateException
*/
public static String parseTemplate( String template, CCUCMBuildAction action, FilePath ws) throws TemplateException {
Matcher m = rx_.matcher( template );
String result = template;

Expand All @@ -148,7 +165,7 @@ public static String parseTemplate( String template, CCUCMBuildAction action ) t
if( !templates.containsKey( templateName ) ) {
throw new TemplateException( "The template " + templateName + " does not exist" );
} else {
String r = templates.get( templateName ).parse( action, args );
String r = templates.get( templateName ).parse( action, args, ws );
result = result.replace( replace, r );
}
}
Expand All @@ -161,5 +178,6 @@ public static String parseTemplate( String template, CCUCMBuildAction action ) t
}

return result;
}
}

}
@@ -1,11 +1,12 @@
package net.praqma.hudson.nametemplates;

import hudson.FilePath;
import net.praqma.hudson.CCUCMBuildAction;

public class NumberTemplate extends Template {

@Override
public String parse( CCUCMBuildAction action, String args ) {
public String parse( CCUCMBuildAction action, String args, FilePath ws ) {
try {
return action.getBuild().getNumber()+"";
} catch( NullPointerException e ) {
Expand Down
@@ -1,34 +1,36 @@
package net.praqma.hudson.nametemplates;

import hudson.FilePath;
import java.io.File;
import java.util.logging.Level;
import java.util.logging.Logger;
import net.praqma.clearcase.ucm.entities.Baseline;
import net.praqma.clearcase.ucm.entities.Stream;
import net.praqma.hudson.CCUCMBuildAction;
import net.praqma.hudson.remoting.RemoteUtil;

public class ProjectTemplate extends Template {
public class ProjectTemplate extends Template {
private static final Logger logger = Logger.getLogger(ProjectTemplate.class.getName());

@Override
public String parse( CCUCMBuildAction action, String args ) {

public String parse( CCUCMBuildAction action, String args, FilePath ws ) {
try {
Baseline bl = null;
if( !action.getBaseline().isLoaded() ) {
bl = (Baseline) RemoteUtil.loadEntity( new FilePath(new File(action.getWorkspace())), action.getBaseline(), true );
bl = (Baseline) RemoteUtil.loadEntity(ws, action.getBaseline(), true );
} else {
bl = action.getBaseline();
}

Stream st = null;
if( !bl.getStream().isLoaded() ) {
st = (Stream) RemoteUtil.loadEntity(new FilePath(new File(action.getWorkspace())), action.getBaseline().getStream(), true );
st = (Stream) RemoteUtil.loadEntity(ws, action.getBaseline().getStream(), true );
} else {
st = bl.getStream();
}

return st.getProject().getShortname();
} catch ( Exception e ) {
logger.log(Level.SEVERE, "Failed to correctly get project name for template", e);
return "unknownproject";
}
}
Expand Down
@@ -1,11 +1,12 @@
package net.praqma.hudson.nametemplates;

import hudson.FilePath;
import net.praqma.hudson.CCUCMBuildAction;

public class StreamTemplate extends Template {

@Override
public String parse( CCUCMBuildAction action, String args ) {
public String parse( CCUCMBuildAction action, String args, FilePath ws ) {

try {
return action.getStream().getShortname();
Expand Down
3 changes: 2 additions & 1 deletion src/main/java/net/praqma/hudson/nametemplates/Template.java
@@ -1,9 +1,10 @@
package net.praqma.hudson.nametemplates;

import hudson.FilePath;
import java.io.Serializable;
import net.praqma.hudson.CCUCMBuildAction;
import net.praqma.hudson.exception.TemplateException;

public abstract class Template implements Serializable {
public abstract String parse( CCUCMBuildAction action, String args ) throws TemplateException;
public abstract String parse( CCUCMBuildAction action, String args, FilePath ws ) throws TemplateException;
}
@@ -1,5 +1,6 @@
package net.praqma.hudson.nametemplates;

import hudson.FilePath;
import java.text.SimpleDateFormat;
import java.util.Date;

Expand All @@ -10,7 +11,7 @@ public class TimeTemplate extends Template {
private final SimpleDateFormat timeFormat = new SimpleDateFormat( "HHmmss" );

@Override
public String parse( CCUCMBuildAction action, String args ) {
public String parse( CCUCMBuildAction action, String args, FilePath ws ) {

return timeFormat.format( new Date() );
}
Expand Down
@@ -1,11 +1,12 @@
package net.praqma.hudson.nametemplates;

import hudson.FilePath;
import net.praqma.hudson.CCUCMBuildAction;

public class UserTemplate extends Template {

@Override
public String parse( CCUCMBuildAction action, String args ) {
public String parse( CCUCMBuildAction action, String args, FilePath ws ) {

try {
return action.getBaseline().getUser();
Expand Down
@@ -1,11 +1,12 @@
package net.praqma.hudson.nametemplates;

import hudson.FilePath;
import net.praqma.hudson.CCUCMBuildAction;

public class VersionNumberTemplate extends Template {

@Override
public String parse( CCUCMBuildAction action, String args ) {
public String parse( CCUCMBuildAction action, String args, FilePath ws ) {

if( args != null && args.length() > 0 ) {
String result = "";
Expand Down
4 changes: 2 additions & 2 deletions src/main/java/net/praqma/hudson/notifier/CCUCMNotifier.java
Expand Up @@ -214,8 +214,8 @@ private void processBuild( AbstractBuild<?, ?> build, Launcher launcher, BuildLi

pstate.setWorkspace( workspace );

NameTemplate.validateTemplates( pstate );
String name = NameTemplate.parseTemplate( pstate.getNameTemplate(), pstate );
NameTemplate.validateTemplates( pstate, build.getWorkspace() );
String name = NameTemplate.parseTemplate( pstate.getNameTemplate(), pstate, build.getWorkspace() );

targetbaseline = RemoteUtil.createRemoteBaseline( currentWorkspace, listener, name, pstate.getBaseline().getComponent(), action.getViewPath(), pstate.getBaseline().getUser() );
action.setCreatedBaseline( targetbaseline );
Expand Down

0 comments on commit 1da037b

Please sign in to comment.