Refine search
ConfigFileStore getStore() { // TODO only add property when its really needed (eg. don't add it if there is no config to be saved) FolderConfigFileProperty folderConfigFileProperty = folder.getProperties().get(FolderConfigFileProperty.class); if(folderConfigFileProperty == null) { folderConfigFileProperty = new FolderConfigFileProperty(folder); try { folder.addProperty(folderConfigFileProperty); } catch (IOException e) { throw new RuntimeException(e); } } return folderConfigFileProperty; }
@Override public TopLevelItem newInstance(ItemGroup parent, String name) { return new Folder(parent, name); }
public <T extends TopLevelItem> T createProject(Class<T> type, String name) throws IOException { return type.cast(createProject((TopLevelItemDescriptor) Jenkins.getActiveInstance().getDescriptor(type), name)); }
Folder folder = jdbcTemplate.query( query, (ResultSetExtractor<Folder>) r -> { Folder folder = new Folder(); folder.setId(r.getLong("id")); folder.setFolderName(r.getString("folder_name")); folder.setFullPath(r.getString("full_path")); return folder; }, folderId); folders.add(folder); return folders;
public class WicketApplication extends WebApplication { private Folder uploadFolder = null; @Override public Class<? extends WebPage> getHomePage(){ return HomePage.class; } public Folder getUploadFolder(){ return uploadFolder; } @Override public void init(){ super.init(); getResourceSettings().setThrowExceptionOnMissingResource(false); uploadFolder = new Folder(System.getProperty("java.io.tmpdir"), "wicket-uploads"); uploadFolder.mkdirs(); getApplicationSettings().setUploadProgressUpdatesEnabled(true); } }
@Override public List<? extends ItemGroup<?>> validDestinations(Item item) { List<DirectlyModifiableTopLevelItemGroup> result = new ArrayList<DirectlyModifiableTopLevelItemGroup>(); Jenkins instance = Jenkins.getActiveInstance(); if (permitted(item, instance) && (instance.getItem(item.getName()) == null) || instance.getItem(item.getName()) == item) { result.add(instance); if (folder.getItem(item.getName()) != null) { continue;
@Issue("JENKINS-32359") @Test public void shouldProperlyPersistFolderPropertiesOnMultipleReloads() throws Exception { Folder folder = r.jenkins.createProject(Folder.class, "myFolder"); folder.addProperty(new FolderCredentialsProvider.FolderCredentialsProperty(new DomainCredentials[0])); r.jenkins.reload(); sids.add("admin"); grantedPermissions.put(Jenkins.ADMINISTER, sids); folder = r.jenkins.getItemByFullName("myFolder", Folder.class); ProjectMatrixAuthorizationStrategy as = new ProjectMatrixAuthorizationStrategy(); r.jenkins.setAuthorizationStrategy(as); folder.addProperty(new com.cloudbees.hudson.plugins.folder.properties.AuthorizationMatrixProperty(grantedPermissions)); assertThat("Folder has not been found after the reloading", reloadedFolder, notNullValue()); assertThat("Property has not been reloaded, hence it has not been saved properly", reloadedFolder.getProperties().get(com.cloudbees.hudson.plugins.folder.properties.AuthorizationMatrixProperty.class), notNullValue());
@Override public List<? extends ItemGroup<?>> validDestinations(Item item) { List<DirectlyModifiableTopLevelItemGroup> result = new ArrayList<>(); Jenkins instance = Jenkins.get(); if (permitted(item, instance) && (instance.getItem(item.getName()) == null) || instance.getItem(item.getName()) == item) { result.add(instance); if (folder.getItem(item.getName()) != null) { continue;
public <T extends TopLevelItem> T createProject(Class<T> type, String name) throws IOException { return type.cast(createProject((TopLevelItemDescriptor) Jenkins.get().getDescriptor(type), name)); }
@Test public void reloadJenkinsAndFindBuildInProgress() throws Exception { Folder f1 = r.jenkins.createProject(Folder.class, "f"); FreeStyleProject p1 = f1.createProject(FreeStyleProject.class, "test1"); FreeStyleBuild p1b1 = p1.scheduleBuild2(0).get(); // one completed build p1.getBuildersList().add(new SleepBuilder(99999999)); p1.save(); FreeStyleBuild p1b2 = p1.scheduleBuild2(0).waitForStart(); // another build in progress // trigger the full Jenkins reload r.jenkins.reload(); Folder f2 = (Folder) r.jenkins.getItem("f"); assertNotSame(f1,f2); FreeStyleProject p2 = (FreeStyleProject) f2.getItem("test1"); /* Fails now. Why was this here? assertNotSame(p1,p2); */ FreeStyleBuild p2b1 = p2.getBuildByNumber(1); FreeStyleBuild p2b2 = p2.getBuildByNumber(2); assertTrue(p2b2.isBuilding()); assertSame(p2b2,p1b2); assertNotSame(p1b1,p2b1); p1b2.getExecutor().interrupt(); // kill the executor }
@Test public void getDestinations() throws Exception { Folder d1 = r.jenkins.createProject(Folder.class, "d1"); // where we start FreeStyleProject j = d1.createProject(FreeStyleProject.class, "j"); final Folder d2 = r.jenkins.createProject(Folder.class, "d2"); // where we could go Folder d3 = r.jenkins.createProject(Folder.class, "d3"); // where we cannot r.jenkins.setSecurityRealm(r.createDummySecurityRealm()); r.jenkins.setAuthorizationStrategy(new MockAuthorizationStrategy(). grant(Jenkins.READ, Item.READ).everywhere().to("joe"). grant(Item.CREATE).onItems(d2).to("joe")); try (ACLContext ctx = ACL.as(User.get("joe"))) { assertEquals(Arrays.asList(d1, d2), new StandardHandler().validDestinations(j)); assertEquals(Arrays.asList(r.jenkins, d2), new StandardHandler().validDestinations(d1)); assertNotEquals(Arrays.asList(r.jenkins, d3), new StandardHandler().validDestinations(j)); assertNotEquals(Arrays.asList(d1, d3), new StandardHandler().validDestinations(d1)); } }
/** * Returns true if the specified descriptor type is allowed for this container. * * @param tid the type of child item. * @return {@code true} if it can be added. */ public boolean isAllowedChildDescriptor(TopLevelItemDescriptor tid) { for (FolderProperty<?> p : getProperties().getAll(FolderProperty.class)) { if (!p.allowsParentToCreate(tid)) { return false; } } if (!getACL().hasCreatePermission(Jenkins.getAuthentication(), this, tid)) { return false; } return tid.isApplicableIn(this); }
new UsernamePasswordCredentialsImpl(CredentialsScope.GLOBAL, "foo-manchu", "Prof. Xavier", "prof", "xavier")); Folder child = f.createProject(Folder.class, "child"); getFolderStore(child).addCredentials(Domain.global(), new UsernamePasswordCredentialsImpl(CredentialsScope.GLOBAL, "foo-manchu", "Dr. Fu Manchu", "foo", "manchu")); FreeStyleProject prj = child.createProject(FreeStyleProject.class, "job"); prj.getBuildersList().add(new HasCredentialBuilder("foo-manchu", Matchers.hasProperty("username", is("foo")))); r.jenkins.setSecurityRealm(realm); strategy.grant(Computer.BUILD).everywhere().to("bob"); r.jenkins.setAuthorizationStrategy(strategy); HashMap<String, Authentication> jobsToUsers = new HashMap<String, Authentication>(); jobsToUsers.put(prj.getFullName(), User.get("bob").impersonate());
@Test public void getDestinationsMovingAParentFolderInToTheTree() throws Exception { Folder d1 = r.jenkins.createProject(Folder.class, "d1"); Folder d11 = d1.createProject(Folder.class, "d2"); Folder d12 = d11.createProject(Folder.class, "d3"); Folder d4 = r.jenkins.createProject(Folder.class, "d4"); assertEquals(Arrays.asList(r.jenkins, d4), new StandardHandler().validDestinations(d1)); assertNotEquals(Arrays.asList(d11, d12), new StandardHandler().validDestinations(d1)); }
@Issue("JENKINS-46547") @Test public void pipelineDefinedInLibraryInFolder() throws Exception { otherRepo.init(); otherRepo.write("vars/fromLib.groovy", pipelineSourceFromResources("libForPipelineDefinedInLibrary")); otherRepo.git("add", "vars"); otherRepo.git("commit", "--message=init"); LibraryConfiguration firstLib = new LibraryConfiguration("from-lib", new SCMSourceRetriever(new GitSCMSource(null, otherRepo.toString(), "", "*", "", true))); Folder folder = j.jenkins.createProject(Folder.class, "libInFolder"); folder.getProperties().add(new FolderLibraries(Collections.singletonList(firstLib))); expect("pipelineDefinedInLibrary") .inFolder(folder) .logContains("[Pipeline] { (One)", "[Pipeline] { (Two)") .logNotContains("World") .go(); }
@BeforeClass public static void setup() throws Exception { CredentialsStore store = CredentialsProvider.lookupStores(j.jenkins).iterator().next(); String usernamePasswordCredentialsId = "FOOcredentials"; UsernamePasswordCredentialsImpl usernamePassword = new UsernamePasswordCredentialsImpl(CredentialsScope.GLOBAL, usernamePasswordCredentialsId, "sample", usernamePasswordUsername, usernamePasswordPassword); store.addCredentials(Domain.global(), usernamePassword); StringCredentialsImpl mixedEnvCred1 = new StringCredentialsImpl(CredentialsScope.GLOBAL, mixedEnvCred1Id, "test", Secret.fromString(mixedEnvCred1Secret)); store.addCredentials(Domain.global(), mixedEnvCred1); UsernamePasswordCredentialsImpl mixedEnvCred2 = new UsernamePasswordCredentialsImpl(CredentialsScope.GLOBAL, mixedEnvCred2Id, "sample", mixedEnvCred2U, mixedEnvCred2P); store.addCredentials(Domain.global(), mixedEnvCred2); StringCredentialsImpl mixedEnvCred3 = new StringCredentialsImpl(CredentialsScope.GLOBAL, mixedEnvCred3Id, "test", Secret.fromString(mixedEnvCred3Secret)); store.addCredentials(Domain.global(), mixedEnvCred3); FileCredentialsImpl fileCred = new FileCredentialsImpl(CredentialsScope.GLOBAL, fileCredId, "test", fileCredName, SecretBytes.fromBytes(fileCredContent.getBytes())); store.addCredentials(Domain.global(), fileCred); FileCredentialsImpl otherFileCred = new FileCredentialsImpl(CredentialsScope.GLOBAL, otherFileCredId, "test", otherFileCredName, SecretBytes.fromBytes(otherFileCredContent.getBytes())); store.addCredentials(Domain.global(), otherFileCred); folder = j.jenkins.createProject(Folder.class, "testFolder"); folder.addProperty(new FolderCredentialsProvider.FolderCredentialsProperty(new DomainCredentials[0])); j.configRoundtrip(folder); CredentialsStore folderStore = folder.getProperties().get(FolderCredentialsProvider.FolderCredentialsProperty.class).getStore(); StringCredentialsImpl sc = new StringCredentialsImpl(CredentialsScope.GLOBAL, mixedEnvCred1Id, "test", Secret.fromString(mixedEnvInFolderCred1Secret)); folderStore.addCredentials(Domain.global(), sc); UsernamePasswordCredentialsImpl c = new UsernamePasswordCredentialsImpl(CredentialsScope.GLOBAL, mixedEnvCred2Id, "sample", mixedEnvInFoldercred2U, mixedEnvInFolderCred2P); folderStore.addCredentials(Domain.global(), c); SSHUserPrivateKey k = new BasicSSHUserPrivateKey(CredentialsScope.GLOBAL, "sshCred1", "bobby", new BasicSSHUserPrivateKey.DirectEntryPrivateKeySource("abc123"), null, "sample"); store.addCredentials(Domain.global(), k); }
@Issue("JENKINS-34939") @Test public void delete() throws Exception { Folder d1 = r.jenkins.createProject(Folder.class, "d1"); d1.createProject(FreeStyleProject.class, "p1"); d1.createProject(FreeStyleProject.class, "p2"); d1.createProject(Folder.class, "d2").createProject(FreeStyleProject.class, "p4"); d1.delete(); assertEquals("AbstractFolder.items is sorted by name so we can predict deletion order", "{d1=[d1], d1/d2=[d1, d1/d2, d1/p1, d1/p2], d1/d2/p4=[d1, d1/d2, d1/d2/p4, d1/p1, d1/p2], d1/p1=[d1, d1/p1, d1/p2], d1/p2=[d1, d1/p2]}", DeleteListener.whatRemainedWhenDeleted.toString()); } @TestExtension("delete") public static class DeleteListener extends ItemListener {
@Test public void search() throws Exception { FreeStyleProject topJob = r.jenkins.createProject(FreeStyleProject.class, "top job"); Folder f1 = r.jenkins.createProject(Folder.class, "f1"); FreeStyleProject middleJob = f1.createProject(FreeStyleProject.class, "middle job"); Folder f2 = f1.createProject(Folder.class, "f2"); FreeStyleProject bottomJob = f2.createProject(FreeStyleProject.class, "bottom job"); List<SearchItem> items = new ArrayList<SearchItem>(); f1.getSearchIndex().suggest("job", items); assertEquals(new HashSet<SearchItem>(Arrays.asList(middleJob, bottomJob)), new HashSet<SearchItem>(items)); }