Skip to content

Commit c5468bf

Browse files
authored
Merge pull request #47 from jglick/argumentsToString-JENKINS-45101
[JENKINS-45101] argumentsToString implementations
2 parents 1cd4d63 + 2834d59 commit c5468bf

19 files changed

Lines changed: 221 additions & 14 deletions

File tree

pom.xml

Lines changed: 15 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -28,7 +28,7 @@
2828
<parent>
2929
<groupId>org.jenkins-ci.plugins</groupId>
3030
<artifactId>plugin</artifactId>
31-
<version>2.30</version>
31+
<version>2.31</version>
3232
<relativePath />
3333
</parent>
3434
<groupId>org.jenkins-ci.plugins.workflow</groupId>
@@ -63,8 +63,8 @@
6363
</pluginRepositories>
6464
<properties>
6565
<jenkins.version>1.642.3</jenkins.version>
66-
<workflow-step-api-plugin.version>2.11</workflow-step-api-plugin.version>
67-
<workflow-cps-plugin.version>2.30</workflow-cps-plugin.version>
66+
<workflow-step-api-plugin.version>2.12</workflow-step-api-plugin.version>
67+
<workflow-cps-plugin.version>2.32</workflow-cps-plugin.version>
6868
<workflow-support-plugin.version>2.14</workflow-support-plugin.version>
6969
</properties>
7070
<dependencies>
@@ -156,6 +156,12 @@
156156
<artifactId>mock-javamail</artifactId>
157157
<version>1.9</version>
158158
<scope>test</scope>
159+
<exclusions>
160+
<exclusion>
161+
<groupId>javax.mail</groupId>
162+
<artifactId>mail</artifactId>
163+
</exclusion>
164+
</exclusions>
159165
</dependency>
160166
<dependency>
161167
<groupId>org.jenkins-ci.main</groupId>
@@ -175,5 +181,11 @@
175181
<version>1.28</version>
176182
<scope>test</scope>
177183
</dependency>
184+
<dependency>
185+
<groupId>org.jenkins-ci.plugins</groupId>
186+
<artifactId>ansicolor</artifactId>
187+
<version>0.5.0</version>
188+
<scope>test</scope>
189+
</dependency>
178190
</dependencies>
179191
</project>

src/main/java/org/jenkinsci/plugins/workflow/steps/CoreStep.java

Lines changed: 27 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -36,15 +36,17 @@
3636
import hudson.model.TaskListener;
3737
import hudson.tasks.Builder;
3838
import hudson.tasks.Publisher;
39-
4039
import java.util.ArrayList;
4140
import java.util.Collection;
41+
import java.util.HashMap;
4242
import java.util.List;
43+
import java.util.Map;
4344
import java.util.Set;
44-
45+
import javax.annotation.CheckForNull;
4546
import jenkins.model.Jenkins;
4647
import jenkins.tasks.SimpleBuildStep;
47-
48+
import org.jenkinsci.plugins.structs.describable.DescribableModel;
49+
import org.jenkinsci.plugins.structs.describable.UninstantiatedDescribable;
4850
import org.kohsuke.stapler.DataBoundConstructor;
4951

5052
/**
@@ -122,6 +124,28 @@ private <T extends Describable<T>,D extends Descriptor<T>> void populate(List<De
122124
return ImmutableSet.of(Run.class, FilePath.class, Launcher.class, TaskListener.class);
123125
}
124126

127+
@Override public String argumentsToString(Map<String, Object> namedArgs) {
128+
Map<String, Object> delegateArguments = delegateArguments(namedArgs.get("delegate"));
129+
return delegateArguments != null ? super.argumentsToString(delegateArguments) : null;
130+
}
131+
132+
@SuppressWarnings("unchecked")
133+
static @CheckForNull Map<String, Object> delegateArguments(@CheckForNull Object delegate) {
134+
if (delegate instanceof UninstantiatedDescribable) {
135+
// TODO JENKINS-45101 getStepArgumentsAsString does not resolve its arguments
136+
// thus delegate.model == null and we cannot inspect DescribableModel.soleRequiredParameter
137+
// thus for, e.g., `junit testResults: '*.xml', keepLongStdio: true` we will get null
138+
return new HashMap<>(((UninstantiatedDescribable) delegate).getArguments());
139+
} else if (delegate instanceof Map) {
140+
Map<String, Object> r = new HashMap<>();
141+
r.putAll((Map) delegate);
142+
r.remove(DescribableModel.CLAZZ);
143+
return r;
144+
} else {
145+
return null;
146+
}
147+
}
148+
125149
}
126150

127151
}

src/main/java/org/jenkinsci/plugins/workflow/steps/CoreWrapperStep.java

Lines changed: 5 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -161,6 +161,11 @@ public Collection<BuildWrapperDescriptor> getApplicableDescriptors() {
161161
return ImmutableSet.of(Run.class, FilePath.class, Launcher.class, TaskListener.class, EnvVars.class);
162162
}
163163

164+
@Override public String argumentsToString(Map<String, Object> namedArgs) {
165+
Map<String, Object> delegateArguments = CoreStep.DescriptorImpl.delegateArguments(namedArgs.get("delegate"));
166+
return delegateArguments != null ? super.argumentsToString(delegateArguments) : null;
167+
}
168+
164169
}
165170

166171
}

src/main/java/org/jenkinsci/plugins/workflow/steps/EnvStep.java

Lines changed: 21 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -138,6 +138,27 @@ private static final class ExpanderImpl extends EnvironmentExpander {
138138
return Collections.emptySet();
139139
}
140140

141+
@Override public String argumentsToString(Map<String, Object> namedArgs) {
142+
Object overrides = namedArgs.get("overrides");
143+
if (overrides instanceof List) {
144+
StringBuilder b = new StringBuilder();
145+
for (Object pair : (List) overrides) {
146+
if (pair instanceof String) {
147+
int idx = ((String) pair).indexOf('=');
148+
if (idx > 0) {
149+
if (b.length() > 0) {
150+
b.append(", ");
151+
}
152+
b.append(((String) pair).substring(0, idx));
153+
}
154+
}
155+
}
156+
return b.toString();
157+
} else {
158+
return null;
159+
}
160+
}
161+
141162
}
142163

143164
}

src/main/java/org/jenkinsci/plugins/workflow/steps/MailStep.java

Lines changed: 6 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -28,6 +28,7 @@
2828
import hudson.Util;
2929
import hudson.model.TaskListener;
3030
import java.util.Collections;
31+
import java.util.Map;
3132
import java.util.Set;
3233
import jenkins.plugins.mailer.tasks.MimeMessageBuilder;
3334

@@ -114,6 +115,11 @@ public static final class DescriptorImpl extends StepDescriptor {
114115
@Override public Set<? extends Class<?>> getRequiredContext() {
115116
return Collections.singleton(TaskListener.class);
116117
}
118+
119+
@Override public String argumentsToString(Map<String, Object> namedArgs) {
120+
Object subject = namedArgs.get("subject");
121+
return subject instanceof String ? (String) subject : null;
122+
}
117123
}
118124

119125
/**

src/main/java/org/jenkinsci/plugins/workflow/steps/PwdStep.java

Lines changed: 5 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -29,6 +29,7 @@
2929
import hudson.FilePath;
3030
import hudson.slaves.WorkspaceList;
3131
import java.util.Collections;
32+
import java.util.Map;
3233
import java.util.Set;
3334
import org.kohsuke.stapler.DataBoundConstructor;
3435
import org.kohsuke.stapler.DataBoundSetter;
@@ -76,6 +77,10 @@ public boolean isTmp() {
7677
return Collections.singleton(FilePath.class);
7778
}
7879

80+
@Override public String argumentsToString(Map<String, Object> namedArgs) {
81+
return null; // "true" is not a reasonable description
82+
}
83+
7984
}
8085

8186
// TODO use 1.652 use WorkspaceList.tempDir

src/main/java/org/jenkinsci/plugins/workflow/steps/SleepStep.java

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -151,5 +151,7 @@ public ListBoxModel doFillUnitItems() {
151151
return Collections.singleton(TaskListener.class);
152152
}
153153

154+
// TODO argumentsToString should perhaps return "3m" etc.
155+
154156
}
155157
}

src/main/java/org/jenkinsci/plugins/workflow/steps/TimeoutStep.java

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -81,6 +81,8 @@ public Set<? extends Class<?>> getRequiredContext() {
8181
return Collections.singleton(TaskListener.class);
8282
}
8383

84+
// TODO argumentsToString as for SleepStep
85+
8486
}
8587

8688
private static final long serialVersionUID = 1L;

src/main/java/org/jenkinsci/plugins/workflow/steps/ToolStep.java

Lines changed: 6 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -36,6 +36,7 @@
3636
import hudson.tools.ToolDescriptor;
3737
import hudson.tools.ToolInstallation;
3838
import hudson.util.ListBoxModel;
39+
import java.util.Map;
3940

4041
import javax.annotation.CheckForNull;
4142

@@ -122,6 +123,11 @@ public ListBoxModel doFillNameItems(@QueryParameter String type) {
122123
return ImmutableSet.of(TaskListener.class, EnvVars.class, Node.class);
123124
}
124125

126+
@Override public String argumentsToString(Map<String, Object> namedArgs) {
127+
Object name = namedArgs.get("name");
128+
return name instanceof String ? (String) name : null;
129+
}
130+
125131
}
126132

127133
public static final class Execution extends SynchronousNonBlockingStepExecution<String> {

src/main/java/org/jenkinsci/plugins/workflow/steps/WriteFileStep.java

Lines changed: 6 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -28,6 +28,7 @@
2828
import hudson.FilePath;
2929
import hudson.Util;
3030
import java.util.Collections;
31+
import java.util.Map;
3132
import java.util.Set;
3233

3334

@@ -79,6 +80,11 @@ public String getEncoding() {
7980
return Collections.singleton(FilePath.class);
8081
}
8182

83+
@Override public String argumentsToString(Map<String, Object> namedArgs) {
84+
Object file = namedArgs.get("file");
85+
return file instanceof String ? (String) file : null;
86+
}
87+
8288
}
8389

8490
public static final class Execution extends SynchronousNonBlockingStepExecution<Void> {

0 commit comments

Comments
 (0)