diff --git a/server-core/src/main/java/io/onedev/server/model/Build.java b/server-core/src/main/java/io/onedev/server/model/Build.java
index 77476d3b03..e2531497c7 100644
--- a/server-core/src/main/java/io/onedev/server/model/Build.java
+++ b/server-core/src/main/java/io/onedev/server/model/Build.java
@@ -519,25 +519,21 @@ public class Build extends AbstractEntity implements Referenceable {
if (!checkedParamNames.add(paramName))
return false;
- ParamSpec paramSpec = getJob().getParamSpecMap().get(paramName);
- if (paramSpec != null) {
- if (paramSpec.getShowCondition() != null) {
- Input dependentInput = getParamInputs().get(paramSpec.getShowCondition().getInputName());
- Preconditions.checkNotNull(dependentInput);
- String value;
- if (!dependentInput.getValues().isEmpty())
- value = dependentInput.getValues().iterator().next();
- else
- value = null;
- if (paramSpec.getShowCondition().getValueMatcher().matches(value))
- return isParamVisible(dependentInput.getName(), checkedParamNames);
- else
- return false;
- } else {
- return true;
- }
+ ParamSpec paramSpec = Preconditions.checkNotNull(getJob().getParamSpecMap().get(paramName));
+ if (paramSpec.getShowCondition() != null) {
+ Input dependentInput = getParamInputs().get(paramSpec.getShowCondition().getInputName());
+ Preconditions.checkNotNull(dependentInput);
+ String value;
+ if (!dependentInput.getValues().isEmpty())
+ value = dependentInput.getValues().iterator().next();
+ else
+ value = null;
+ if (paramSpec.getShowCondition().getValueMatcher().matches(value))
+ return isParamVisible(dependentInput.getName(), checkedParamNames);
+ else
+ return false;
} else {
- return false;
+ return true;
}
}
diff --git a/server-core/src/main/java/io/onedev/server/web/component/build/ParamValuesLabel.java b/server-core/src/main/java/io/onedev/server/web/component/build/ParamValuesLabel.java
new file mode 100644
index 0000000000..5a68817aab
--- /dev/null
+++ b/server-core/src/main/java/io/onedev/server/web/component/build/ParamValuesLabel.java
@@ -0,0 +1,27 @@
+package io.onedev.server.web.component.build;
+
+import org.apache.wicket.markup.html.basic.Label;
+import org.apache.wicket.model.Model;
+
+import io.onedev.commons.utils.StringUtils;
+import io.onedev.server.buildspec.job.paramspec.ParamSpec;
+import io.onedev.server.util.Input;
+import io.onedev.server.util.inputspec.SecretInput;
+
+@SuppressWarnings("serial")
+public class ParamValuesLabel extends Label {
+
+ public ParamValuesLabel(String id, Input param) {
+ super(id);
+
+ if (param.getType().equals(ParamSpec.SECRET)) {
+ setDefaultModel(Model.of(SecretInput.MASK));
+ } else if (!param.getValues().isEmpty()) {
+ setDefaultModel(Model.of(StringUtils.join(param.getValues(), ",")));
+ } else {
+ setDefaultModel(Model.of("Unspecified"));
+ setEscapeModelStrings(false);
+ }
+ }
+
+}
diff --git a/server-core/src/main/java/io/onedev/server/web/component/build/list/BuildListPanel.java b/server-core/src/main/java/io/onedev/server/web/component/build/list/BuildListPanel.java
index cf8ece54ee..7e0b2c2c45 100644
--- a/server-core/src/main/java/io/onedev/server/web/component/build/list/BuildListPanel.java
+++ b/server-core/src/main/java/io/onedev/server/web/component/build/list/BuildListPanel.java
@@ -49,7 +49,6 @@ import com.google.common.collect.Sets;
import de.agilecoders.wicket.core.markup.html.bootstrap.common.NotificationPanel;
import io.onedev.commons.utils.StringUtils;
import io.onedev.server.OneDev;
-import io.onedev.server.buildspec.job.paramspec.ParamSpec;
import io.onedev.server.entitymanager.BuildManager;
import io.onedev.server.entitymanager.BuildParamManager;
import io.onedev.server.entitymanager.ProjectManager;
@@ -63,12 +62,11 @@ import io.onedev.server.search.entity.build.BuildQuery;
import io.onedev.server.util.BuildConstants;
import io.onedev.server.util.Input;
import io.onedev.server.util.SecurityUtils;
-import io.onedev.server.util.inputspec.SecretInput;
import io.onedev.server.web.WebConstants;
import io.onedev.server.web.behavior.BuildQueryBehavior;
import io.onedev.server.web.behavior.WebSocketObserver;
import io.onedev.server.web.behavior.clipboard.CopyClipboardBehavior;
-import io.onedev.server.web.component.MultilineLabel;
+import io.onedev.server.web.component.build.ParamValuesLabel;
import io.onedev.server.web.component.build.status.BuildStatusIcon;
import io.onedev.server.web.component.datatable.DefaultDataTable;
import io.onedev.server.web.component.datatable.LoadableDetachableDataProvider;
@@ -557,8 +555,8 @@ public abstract class BuildListPanel extends Panel {
}
});
- for (String param: getListParams()) {
- columns.add(new AbstractColumn(Model.of(param)) {
+ for (String paramName: getListParams()) {
+ columns.add(new AbstractColumn(Model.of(paramName)) {
@Override
public String getCssClass() {
@@ -566,22 +564,13 @@ public abstract class BuildListPanel extends Panel {
}
@Override
- public void populateItem(Item> cellItem, String componentId,
- IModel rowModel) {
+ public void populateItem(Item> cellItem, String componentId, IModel rowModel) {
Build build = rowModel.getObject();
- if (build.isParamVisible(param)) {
- Input input = build.getParamInputs().get(param);
- if (input != null) {
- if (input.getType().equals(ParamSpec.SECRET))
- cellItem.add(new Label(componentId, SecretInput.MASK));
- else
- cellItem.add(new MultilineLabel(componentId, StringUtils.join(input.getValues(), ",")));
- } else {
- cellItem.add(new Label(componentId, "Undefined").setEscapeModelStrings(false));
- }
- } else {
- cellItem.add(new Label(componentId, "Undefined").setEscapeModelStrings(false));
- }
+ Input param = build.getParamInputs().get(paramName);
+ if (param != null && build.isParamVisible(paramName))
+ cellItem.add(new ParamValuesLabel(componentId, param));
+ else
+ cellItem.add(new Label(componentId, "Unspecified").setEscapeModelStrings(false));
}
});
diff --git a/server-core/src/main/java/io/onedev/server/web/component/build/side/BuildSidePanel.java b/server-core/src/main/java/io/onedev/server/web/component/build/side/BuildSidePanel.java
index b1583ca9d3..235b425b2b 100644
--- a/server-core/src/main/java/io/onedev/server/web/component/build/side/BuildSidePanel.java
+++ b/server-core/src/main/java/io/onedev/server/web/component/build/side/BuildSidePanel.java
@@ -24,9 +24,7 @@ import org.apache.wicket.request.mapper.parameter.PageParameters;
import org.apache.wicket.util.time.Duration;
import org.eclipse.jgit.revwalk.RevCommit;
-import io.onedev.commons.utils.StringUtils;
import io.onedev.server.OneDev;
-import io.onedev.server.buildspec.job.paramspec.ParamSpec;
import io.onedev.server.entitymanager.BuildManager;
import io.onedev.server.git.GitUtils;
import io.onedev.server.model.Build;
@@ -36,10 +34,9 @@ import io.onedev.server.search.entity.build.BuildQuery;
import io.onedev.server.util.DateUtils;
import io.onedev.server.util.Input;
import io.onedev.server.util.SecurityUtils;
-import io.onedev.server.util.inputspec.SecretInput;
import io.onedev.server.util.userident.UserIdent;
import io.onedev.server.web.behavior.clipboard.CopyClipboardBehavior;
-import io.onedev.server.web.component.MultilineLabel;
+import io.onedev.server.web.component.build.ParamValuesLabel;
import io.onedev.server.web.component.entity.nav.EntityNavPanel;
import io.onedev.server.web.component.job.JobDefLink;
import io.onedev.server.web.component.link.ViewStateAwarePageLink;
@@ -211,10 +208,7 @@ public abstract class BuildSidePanel extends Panel {
protected void populateItem(ListItem item) {
Input param = item.getModelObject();
item.add(new Label("name", param.getName()));
- if (param.getType().equals(ParamSpec.SECRET))
- item.add(new Label("value", SecretInput.MASK));
- else
- item.add(new MultilineLabel("value", StringUtils.join(param.getValues(), ",")));
+ item.add(new ParamValuesLabel("value", param));
}
@Override