Skip to content

Commit

Permalink
[JENKINS-20008] Using DirectlyModifiableTopLevelItemGroup.
Browse files Browse the repository at this point in the history
  • Loading branch information
jglick committed Dec 18, 2013
1 parent d5a2ea3 commit 1fc6c3d
Show file tree
Hide file tree
Showing 4 changed files with 47 additions and 155 deletions.
2 changes: 1 addition & 1 deletion pom.xml
Expand Up @@ -4,7 +4,7 @@
<parent>
<groupId>org.jenkins-ci.plugins</groupId>
<artifactId>plugin</artifactId>
<version>1.480.3</version>
<version>1.545-SNAPSHOT</version>
</parent>
<artifactId>cloudbees-folder</artifactId>
<version>4.2-SNAPSHOT</version>
Expand Down
62 changes: 18 additions & 44 deletions src/main/java/com/cloudbees/hudson/plugins/folder/Folder.java
Expand Up @@ -28,7 +28,6 @@
import com.cloudbees.hudson.plugins.folder.health.FolderHealthMetricDescriptor;
import com.cloudbees.hudson.plugins.folder.icons.StockFolderIcon;
import com.cloudbees.hudson.plugins.folder.properties.AuthorizationMatrixProperty;
import com.cloudbees.hudson.plugins.folder.relocate.ItemGroupModifier;
import hudson.AbortException;
import hudson.CopyOnWrite;
import hudson.Extension;
Expand Down Expand Up @@ -69,7 +68,6 @@
import hudson.views.ListViewColumn;
import hudson.views.ViewJobFilter;
import hudson.views.ViewsTabBar;
import jenkins.model.ModifiableTopLevelItemGroup;
import net.sf.json.JSONObject;
import org.kohsuke.stapler.AncestorInPath;
import org.kohsuke.stapler.HttpResponse;
Expand All @@ -88,7 +86,6 @@
import java.net.URLEncoder;
import java.text.ParseException;
import java.util.ArrayList;
import java.util.Arrays;
import java.util.Collection;
import java.util.Collections;
import java.util.HashSet;
Expand All @@ -113,14 +110,15 @@
import hudson.util.FormApply;
import java.util.concurrent.atomic.AtomicBoolean;
import java.util.concurrent.atomic.AtomicInteger;
import jenkins.model.DirectlyModifiableTopLevelItemGroup;
import jenkins.model.Jenkins;
import org.kohsuke.stapler.interceptor.RequirePOST;

/**
* {@link Item} that contains other {@link Item}s, without modeling dependency.
*/
public class Folder extends AbstractItem
implements ModifiableTopLevelItemGroup, ViewGroup, TopLevelItem, StaplerOverridable, StaplerFallback {
implements DirectlyModifiableTopLevelItemGroup, ViewGroup, TopLevelItem, StaplerOverridable, StaplerFallback {

/**
* @see #getNewPronoun
Expand Down Expand Up @@ -762,6 +760,7 @@ public boolean isAllowedChildDescriptor(TopLevelItemDescriptor tid) {
return true;
}

/** Historical synonym for {@link #canAdd}. */
public boolean isAllowedChild(TopLevelItem tid) {
for (FolderProperty<?> p : properties) {
if (!p.allowsParentToHave(tid)) {
Expand Down Expand Up @@ -850,6 +849,21 @@ public HttpResponse doLastBuild(StaplerRequest req) {
return HttpResponses.redirectToDot();
}

@Override public boolean canAdd(TopLevelItem item) {
return isAllowedChild(item);
}

@Override public <I extends TopLevelItem> I add(I item, String name) throws IOException, IllegalArgumentException {
if (!canAdd(item)) {
throw new IllegalArgumentException();
}
if (items.containsKey(name)) {
throw new IllegalArgumentException("already an item '" + name + "'");
}
items.put(item.getName(), item);
return item;
}

@Extension
public static class DescriptorImpl extends TopLevelItemDescriptor {
@Override
Expand Down Expand Up @@ -959,45 +973,5 @@ protected File getRootDirFor(String name) {
}
}

/**
* Handles modifying folders.
*/
@Extension
public static class FolderModifier implements ItemGroupModifier<Folder, TopLevelItem> {

/**
* {@inheritDoc}
*/
public Class<Folder> getTargetClass() {
return Folder.class;
}

/**
* {@inheritDoc}
*/
public <II extends TopLevelItem> boolean canAdd(Folder target, II item) {
if (target == null || item == null) {
return false;
}
return target.isAllowedChild(item);
}

/**
* {@inheritDoc}
*/
public <I extends TopLevelItem> I add(Folder target, I item) throws IOException {
target.items.put(item.getName(), item);
item.onLoad(target, item.getName());
return item;
}

/**
* {@inheritDoc}
*/
public void remove(Folder target, TopLevelItem item) throws IOException {
target.onDeleted(item);
}
}

private static final Logger LOGGER = Logger.getLogger(Folder.class.getName());
}
Expand Up @@ -24,17 +24,16 @@

package com.cloudbees.hudson.plugins.folder.relocate;

import hudson.Extension;
import hudson.ExtensionPoint;
import hudson.model.ItemGroup;
import hudson.model.TopLevelItem;
import jenkins.model.Jenkins;

import java.io.IOException;
import jenkins.model.DirectlyModifiableTopLevelItemGroup;
import jenkins.model.Jenkins;

/**
* An extension point for modifying item groups.
* TODO this should probably be in core instead.
*/
/** @deprecated Use {@link DirectlyModifiableTopLevelItemGroup} instead. */
@Deprecated
public interface ItemGroupModifier<G extends ItemGroup<I>, I extends TopLevelItem> extends ExtensionPoint {

/**
Expand Down Expand Up @@ -107,4 +106,27 @@ public static <G extends ItemGroup<I>, I extends TopLevelItem> ItemGroupModifier
return best;
}
}

@Extension final class StandardModifier implements ItemGroupModifier<DirectlyModifiableTopLevelItemGroup,TopLevelItem> {

@Override public Class<DirectlyModifiableTopLevelItemGroup> getTargetClass() {
return DirectlyModifiableTopLevelItemGroup.class;
}

@Override public <II extends TopLevelItem> boolean canAdd(DirectlyModifiableTopLevelItemGroup target, II item) {
return target.canAdd(item);
}

@Override public <II extends TopLevelItem> II add(DirectlyModifiableTopLevelItemGroup target, II item) throws IOException {
II _item = target.add(item, item.getName());
_item.onLoad(target, item.getName());
return _item;
}

@Override public void remove(DirectlyModifiableTopLevelItemGroup target, TopLevelItem item) throws IOException {
target.onDeleted(item);
}

}

}

This file was deleted.

0 comments on commit 1fc6c3d

Please sign in to comment.