■ ■ ■ ■ ■ ■
server-core/src/main/java/io/onedev/server/buildspec/job/ProjectDependency.java
server-core/src/main/java/io/onedev/server/buildspec/job/projectdependency/ProjectDependency.java
1 - package io.onedev.server.buildspec.job; 1 + package io.onedev.server.buildspec.job. projectdependency ; 2 2 3 3 import java.io.Serializable; 4 4 import java.util.ArrayList; skipped 1 lines 6 6 import java.util.stream.Collectors; 7 7 8 8 import javax.annotation.Nullable; 9 + import javax.validation.constraints.NotNull; 9 10 10 11 import org.hibernate.validator.constraints.NotEmpty; 11 12 skipped 1 lines 13 14 import io.onedev.commons.codeassist.InputSuggestion; 14 15 import io.onedev.server.OneDev; 15 16 import io.onedev.server.buildspec.BuildSpec; 16 - import io.onedev.server.entitymanager.BuildManager; 17 17 import io.onedev.server.entitymanager.ProjectManager; 18 - import io.onedev.server.model.Build; 19 18 import io.onedev.server.model.Project; 20 19 import io.onedev.server.security.SecurityUtils; 21 20 import io.onedev.server.security.permission.AccessProject; 22 21 import io.onedev.server.util.EditContext; 23 - import io.onedev.server.util.interpolative.Interpolative.Segment; 24 - import io.onedev.server.web.behavior.inputassist.InputAssistBehavior; 25 22 import io.onedev.server.web.editable.annotation.ChoiceProvider; 26 23 import io.onedev.server.web.editable.annotation.Editable; 27 24 import io.onedev.server.web.editable.annotation.Interpolative; 28 25 import io.onedev.server.web.editable.annotation.NameOfEmptyValue; 29 26 import io.onedev.server.web.editable.annotation.Patterns; 30 27 import io.onedev.server.web.page.project.ProjectPage; 31 - import io.onedev.server.web.util.SuggestionUtils; 32 28 import io.onedev.server.web.util.WicketUtils; 33 29 34 30 @Editable skipped 3 lines 38 34 39 35 private String projectName; 40 36 41 - private String buildNumber; 37 + private BuildProvider buildProvider = new LastFinishedBuild(); 42 38 43 39 private String artifacts = "**"; 44 40 skipped 25 lines 70 66 return choices; 71 67 } 72 68 73 - @Editable(order=300, name="Build", description = " Specify build to retrieve artifacts from " ) 74 - @Interpolative(variableSuggester="suggestVariables", literalSuggester="suggestBuilds") 75 - @NotEmpty 76 - public String getBuildNumber() { 77 - return buildNumber; 69 + @Editable(order=300, name="Build") 70 + @NotNull 71 + public BuildProvider getBuildProvider() { 72 + return buildProvider; 78 73 } 79 74 80 - public void setBuildNumber(String buildNumber) { 81 - this.buildNumber = buildNumber; 75 + public void setBuildProvider(BuildProvider buildProvider) { 76 + this.buildProvider = buildProvider; 82 77 } 83 78 84 79 @Nullable 85 - private static Project getInputProject() { 86 - String projectName = (String) EditContext . get ( ) .getInputValue("projectName"); 80 + static Project getInputProject(EditContext editContext ) { 81 + String projectName = (String) editContext .getInputValue("projectName"); 87 82 if (projectName != null) { 88 83 Project project = OneDev.getInstance(ProjectManager.class).find(projectName); 89 84 if (project != null && SecurityUtils.canReadCode(project)) skipped 2 lines 92 87 return null; 93 88 } 94 89 95 - @SuppressWarnings("unused") 96 - private static List<InputSuggestion> suggestBuilds(String matchWith) { 97 - Project project = getInputProject(); 98 - if (project != null) 99 - return SuggestionUtils.suggestBuilds(project, matchWith, InputAssistBehavior.MAX_SUGGESTIONS); 100 - else 101 - return new ArrayList<>(); 102 - } 103 - 104 90 @Editable(order=400, name="Artifacts to Retrieve", description="Specify artifacts to retrieve into <a href='$docRoot/pages/concepts.md#job-workspace'>job workspace</a>") 105 91 @Interpolative(variableSuggester="suggestVariables") 106 - @Patterns(suggester = " suggestArtifacts " , path=true) 92 + @Patterns(path=true) 107 93 @NotEmpty 108 94 public String getArtifacts() { 109 95 return artifacts; skipped 6 lines 116 102 @SuppressWarnings("unused") 117 103 private static List<InputSuggestion> suggestVariables(String matchWith) { 118 104 return BuildSpec.suggestVariables(matchWith, false, false); 119 - } 120 - 121 - @SuppressWarnings("unused") 122 - private static List<InputSuggestion> suggestArtifacts(String matchWith) { 123 - Project project = getInputProject(); 124 - String buildNumber = (String) EditContext.get().getInputValue("buildNumber"); 125 - if (project != null && buildNumber != null 126 - && io.onedev.server.util.interpolative.Interpolative.parse(buildNumber).getSegments(Segment.Type.VARIABLE).isEmpty()) { 127 - if (buildNumber.startsWith("#")) 128 - buildNumber = buildNumber.substring(1); 129 - Build build = OneDev.getInstance(BuildManager.class).find(project, Long.parseLong(buildNumber)); 130 - if (build != null) 131 - return SuggestionUtils.suggestArtifacts(build, matchWith); 132 - } 133 - return new ArrayList<>(); 134 105 } 135 106 136 107 @Editable(order=500, description="Specify a secret to be used as access token to retrieve artifacts " skipped 20 lines