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