Create
cancel
Showing results for 
Search instead for 
Did you mean: 
Sign up Log in

Access TaskType variable in ContextProvider

Cedric COUSSERAN July 7, 2016

Hello,

How can I access set a variable in a TaskType class, and access it in a ContextProvider?

 

I've tried to set the variable like this in the TaskType:

public class CustomTask implements TaskType {
	private CustomVariableContext customVariableContext;

	public void setCustomVariableContext(CustomVariableContext customVariableContext) {
		this.customVariableContext = customVariableContext;
}
	
	@NotNull
	@Override
	public TaskResult execute(@NotNull TaskContext taskContext) throws TaskException {
		VariableContext planVariables = taskContext.getCommonContext().getVariableContext();
		planVariables.addLocalVariable("variable","variable");

		customVariableContext.addCustomData("variable","variable");

		return TaskResultBuilder.newBuilder(taskContext).success().build();
	}
}

 

But I can't seem to access the variable in my ContextProvider:

public class CustomProvider implements ContextProvider {
	private final VariableDefinitionManager variableDefinitionManager;

	public CustomProvider(VariableDefinitionManager variableDefinitionManager) {
    	this.variableDefinitionManager = variableDefinitionManager;
	}

	@Override
	public Map<String, Object> getContextMap(Map<String, Object> context) {
		final ChainResultsSummaryImpl planSummary = (ChainResultsSummaryImpl) context.get("resultSummary");
		
		for (ImmutableJob job : plan.getAllJobs()) {
    		for (TaskDefinition task : job.getBuildDefinition().getTaskDefinitions()) {
    			HashMap<String, String> variables = task.getConfiguration();
			}
		}
		variableDefinitionManager.getPlanVariables(plan);
	}
}

 

Cédric Cousseran

1 answer

1 accepted

Comments for this post are closed

Community moderators have prevented the ability to post new answers.

Post a new question

0 votes
Answer accepted
Cedric COUSSERAN July 18, 2016

I've found the solution.

In the TaskType class:

public class CustomTaskType extends TaksType {
    @NotNull
    @Override
    public TaskResult execute(@NotNull TaskContext taskContext) throws TaskException {
        taskContext.getBuildContext().getBuildResult().getCustomBuildData().put("variable","variable");
 
        return TaskResultBuilder.newBuilder(taskContext).success().build();
    }
}

In the ContextProvider class:

public class CustomProvider implements ContextProvider {

    @Override
    public Map<String, Object> getContextMap(Map<String, Object> context) {
        final ChainResultsSummaryImpl planSummary = (ChainResultsSummaryImpl) context.get("resultSummary");
         
		List<ChainStageResult> resultList = planSummary.getStageResults();
		for (ChainStageResult chainResult:resultList){
			Set<BuildResultsSummary> resultSet = chainResult.getBuildResults();
			for (BuildResultsSummary summary : resultSet) {
				Map<String,String> customBuildData = summary.getCustomBuildData();
				if (customBuildData.get("variable") != null) {
					context.put("variable", "variable");
				}
			}
		}
    }
}
TAGS
AUG Leaders

Atlassian Community Events