From 5dddebcf9489c19ccfcd994d79bce8fdb7456d1b Mon Sep 17 00:00:00 2001 From: Kohsuke Kawaguchi Date: Fri, 17 Jun 2011 21:53:13 -0700 Subject: [PATCH] Corrected backward incompatible signature changes in 70c10658148c3eab3b4c. --- .../java/hudson/ClassicPluginStrategy.java | 6 +-- .../java/hudson/DescriptorExtensionList.java | 28 ++++++++-- .../src/main/java/hudson/ExtensionFinder.java | 20 ++++---- core/src/main/java/hudson/ExtensionList.java | 51 +++++++++++++++---- .../main/java/hudson/LocalPluginManager.java | 12 ++--- core/src/main/java/hudson/PluginStrategy.java | 10 ++-- .../main/java/hudson/UDPBroadcastThread.java | 23 ++++++--- .../hudson/cli/declarative/CLIRegisterer.java | 3 +- .../java/hudson/init/InitializerFinder.java | 3 +- .../src/main/java/hudson/tasks/Publisher.java | 2 +- core/src/main/java/jenkins/model/Jenkins.java | 1 - .../hudson/test/TestExtensionLoader.java | 4 +- 12 files changed, 112 insertions(+), 51 deletions(-) diff --git a/core/src/main/java/hudson/ClassicPluginStrategy.java b/core/src/main/java/hudson/ClassicPluginStrategy.java index df7668a3d1..853ff1c8ef 100644 --- a/core/src/main/java/hudson/ClassicPluginStrategy.java +++ b/core/src/main/java/hudson/ClassicPluginStrategy.java @@ -24,7 +24,7 @@ package hudson; import hudson.PluginWrapper.Dependency; -import jenkins.model.Jenkins; +import hudson.model.Hudson; import hudson.util.IOException2; import hudson.util.MaskingClassLoader; import hudson.util.VersionNumber; @@ -258,7 +258,7 @@ public class ClassicPluginStrategy implements PluginStrategy { public void initializeComponents(PluginWrapper plugin) { } - public List> findComponents(Class type, Jenkins hudson) { + public List> findComponents(Class type, Hudson hudson) { List finders; if (type==ExtensionFinder.class) { @@ -269,7 +269,7 @@ public class ClassicPluginStrategy implements PluginStrategy { } /** - * See {@link ExtensionFinder#scout(Class, jenkins.model.Jenkins)} for the dead lock issue and what this does. + * See {@link ExtensionFinder#scout(Class, Hudson)} for the dead lock issue and what this does. */ if (LOGGER.isLoggable(Level.FINER)) LOGGER.log(Level.FINER,"Scout-loading ExtensionList: "+type, new Throwable()); diff --git a/core/src/main/java/hudson/DescriptorExtensionList.java b/core/src/main/java/hudson/DescriptorExtensionList.java index 902d951d08..162e4bd914 100644 --- a/core/src/main/java/hudson/DescriptorExtensionList.java +++ b/core/src/main/java/hudson/DescriptorExtensionList.java @@ -25,6 +25,7 @@ package hudson; import hudson.model.Descriptor; import hudson.model.Describable; +import hudson.model.Hudson; import jenkins.model.Jenkins; import hudson.model.ViewDescriptor; import hudson.model.Descriptor.FormException; @@ -67,11 +68,20 @@ public class DescriptorExtensionList, D extends Descrip */ @SuppressWarnings({"unchecked", "rawtypes"}) public static ,D extends Descriptor> - DescriptorExtensionList createDescriptorList(Jenkins hudson, Class describableType) { + DescriptorExtensionList createDescriptorList(Jenkins jenkins, Class describableType) { if (describableType == (Class) Publisher.class) { - return (DescriptorExtensionList) new DescriptorExtensionListImpl(hudson); + return (DescriptorExtensionList) new DescriptorExtensionListImpl(jenkins); } - return new DescriptorExtensionList(hudson,describableType); + return new DescriptorExtensionList(jenkins,describableType); + } + + /** + * @deprecated as of 1.416 + * Use {@link #create(Jenkins, Class)} + */ + public static ,D extends Descriptor> + DescriptorExtensionList createDescriptorList(Hudson hudson, Class describableType) { + return createDescriptorList((Jenkins)hudson,describableType); } /** @@ -79,8 +89,16 @@ public class DescriptorExtensionList, D extends Descrip */ private final Class describableType; - protected DescriptorExtensionList(Jenkins hudson, Class describableType) { - super(hudson, (Class)Descriptor.class, (CopyOnWriteArrayList)getLegacyDescriptors(describableType)); + /** + * @deprecated as of 1.416 + * Use {@link #DescriptorExtensionList(Jenkins, Class)} + */ + protected DescriptorExtensionList(Hudson hudson, Class describableType) { + this((Jenkins)hudson,describableType); + } + + protected DescriptorExtensionList(Jenkins jenkins, Class describableType) { + super(jenkins, (Class)Descriptor.class, (CopyOnWriteArrayList)getLegacyDescriptors(describableType)); this.describableType = describableType; } diff --git a/core/src/main/java/hudson/ExtensionFinder.java b/core/src/main/java/hudson/ExtensionFinder.java index 41054de16b..213df5f0c0 100644 --- a/core/src/main/java/hudson/ExtensionFinder.java +++ b/core/src/main/java/hudson/ExtensionFinder.java @@ -25,10 +25,10 @@ package hudson; import com.google.common.collect.ImmutableList; import hudson.init.InitMilestone; +import hudson.model.Hudson; import jenkins.model.Jenkins; import net.java.sezpoz.Index; import net.java.sezpoz.IndexItem; -import hudson.model.Descriptor; import org.kohsuke.accmod.Restricted; import org.kohsuke.accmod.restrictions.NoExternalUse; @@ -59,10 +59,10 @@ import java.lang.reflect.Method; public abstract class ExtensionFinder implements ExtensionPoint { /** * @deprecated as of 1.356 - * Use and implement {@link #find(Class, jenkins.model.Jenkins)} that allows us to put some metadata. + * Use and implement {@link #find(Class,Hudson)} that allows us to put some metadata. */ @Restricted(NoExternalUse.class) - public Collection findExtensions(Class type, Jenkins hudson) { + public Collection findExtensions(Class type, Hudson hudson) { return Collections.emptyList(); } @@ -82,15 +82,15 @@ public abstract class ExtensionFinder implements ExtensionPoint { * @return * Can be empty but never null. * @since 1.356 - * Older implementations provide {@link #findExtensions(Class, jenkins.model.Jenkins)} + * Older implementations provide {@link #findExtensions(Class,Hudson)} */ - public abstract Collection> find(Class type, Jenkins hudson); + public abstract Collection> find(Class type, Hudson hudson); /** * A pointless function to work around what appears to be a HotSpot problem. See JENKINS-5756 and bug 6933067 * on BugParade for more details. */ - public Collection> _find(Class type, Jenkins hudson) { + public Collection> _find(Class type, Hudson hudson) { return find(type,hudson); } @@ -115,7 +115,7 @@ public abstract class ExtensionFinder implements ExtensionPoint { * This inconsistent locking order results in a dead lock, you see. * *

- * So to reduce the likelihood, this method is called in prior to {@link #find(Class, jenkins.model.Jenkins)} invocation, + * So to reduce the likelihood, this method is called in prior to {@link #find(Class,Hudson)} invocation, * but from outside the lock. The implementation is expected to perform all the class initialization activities * from here. * @@ -124,7 +124,7 @@ public abstract class ExtensionFinder implements ExtensionPoint { * Also see http://kohsuke.org/2010/09/01/deadlock-that-you-cant-avoid/ for how class initialization * can results in a dead lock. */ - public void scout(Class extensionType, Jenkins hudson) { + public void scout(Class extensionType, Hudson hudson) { } /** @@ -158,7 +158,7 @@ public abstract class ExtensionFinder implements ExtensionPoint { return indices; } - public Collection> find(Class type, Jenkins hudson) { + public Collection> find(Class type, Hudson hudson) { List> result = new ArrayList>(); for (IndexItem item : getIndices()) { @@ -194,7 +194,7 @@ public abstract class ExtensionFinder implements ExtensionPoint { } @Override - public void scout(Class extensionType, Jenkins hudson) { + public void scout(Class extensionType, Hudson hudson) { for (IndexItem item : getIndices()) { try { // we might end up having multiple threads concurrently calling into element(), diff --git a/core/src/main/java/hudson/ExtensionList.java b/core/src/main/java/hudson/ExtensionList.java index 6de9b182cd..c168789eba 100644 --- a/core/src/main/java/hudson/ExtensionList.java +++ b/core/src/main/java/hudson/ExtensionList.java @@ -24,6 +24,7 @@ package hudson; import hudson.init.InitMilestone; +import hudson.model.Hudson; import jenkins.model.Jenkins; import hudson.util.AdaptedIterator; import hudson.util.DescriptorList; @@ -64,7 +65,12 @@ import java.util.logging.Logger; * @see jenkins.model.Jenkins#getDescriptorList(Class) */ public class ExtensionList extends AbstractList { - public final Jenkins hudson; + /** + * @deprecated as of 1.417 + * Use {@link #jenkins} + */ + public final Hudson hudson; + public final Jenkins jenkins; public final Class extensionType; /** @@ -79,8 +85,24 @@ public class ExtensionList extends AbstractList { */ private final CopyOnWriteArrayList> legacyInstances; - protected ExtensionList(Jenkins hudson, Class extensionType) { - this(hudson,extensionType,new CopyOnWriteArrayList>()); + /** + * @deprecated as of 1.416 + * Use {@link #ExtensionList(Jenkins, Class)} + */ + protected ExtensionList(Hudson hudson, Class extensionType) { + this((Jenkins)hudson,extensionType); + } + + protected ExtensionList(Jenkins jenkins, Class extensionType) { + this(jenkins,extensionType,new CopyOnWriteArrayList>()); + } + + /** + * @deprecated as of 1.416 + * Use {@link #ExtensionList(Jenkins, Class, CopyOnWriteArrayList)} + */ + protected ExtensionList(Hudson hudson, Class extensionType, CopyOnWriteArrayList> legacyStore) { + this((Jenkins)hudson,extensionType,legacyStore); } /** @@ -90,8 +112,9 @@ public class ExtensionList extends AbstractList { * omits this uses a new {@link Vector}, making the storage lifespan tied to the life of {@link ExtensionList}. * If the manually registered instances are scoped to VM level, the caller should pass in a static list. */ - protected ExtensionList(Jenkins hudson, Class extensionType, CopyOnWriteArrayList> legacyStore) { - this.hudson = hudson; + protected ExtensionList(Jenkins jenkins, Class extensionType, CopyOnWriteArrayList> legacyStore) { + this.hudson = (Hudson)jenkins; + this.jenkins = jenkins; this.extensionType = extensionType; this.legacyInstances = legacyStore; } @@ -215,7 +238,7 @@ public class ExtensionList extends AbstractList { * Chooses the object that locks the loading of the extension instances. */ protected Object getLoadLock() { - return hudson.lookup.setIfNull(Lock.class,new Lock()); + return jenkins.lookup.setIfNull(Lock.class,new Lock()); } /** @@ -232,7 +255,7 @@ public class ExtensionList extends AbstractList { if (LOGGER.isLoggable(Level.FINE)) LOGGER.log(Level.FINE,"Loading ExtensionList: "+extensionType, new Throwable()); - return hudson.getPluginManager().getPluginStrategy().findComponents(extensionType, hudson); + return jenkins.getPluginManager().getPluginStrategy().findComponents(extensionType, hudson); } /** @@ -248,11 +271,19 @@ public class ExtensionList extends AbstractList { return r; } - public static ExtensionList create(Jenkins hudson, Class type) { + /** + * @deprecated as of 1.416 + * Use {@link #create(Jenkins, Class)} + */ + public static ExtensionList create(Hudson hudson, Class type) { + return create((Jenkins)hudson,type); + } + + public static ExtensionList create(Jenkins jenkins, Class type) { if(type.getAnnotation(LegacyInstancesAreScopedToHudson.class)!=null) - return new ExtensionList(hudson,type); + return new ExtensionList(jenkins,type); else { - return new ExtensionList(hudson,type,staticLegacyInstances.get(type)); + return new ExtensionList(jenkins,type,staticLegacyInstances.get(type)); } } diff --git a/core/src/main/java/hudson/LocalPluginManager.java b/core/src/main/java/hudson/LocalPluginManager.java index 335f5b5278..2b96c7dccc 100644 --- a/core/src/main/java/hudson/LocalPluginManager.java +++ b/core/src/main/java/hudson/LocalPluginManager.java @@ -42,10 +42,10 @@ import java.util.logging.Logger; * @author Kohsuke Kawaguchi */ public class LocalPluginManager extends PluginManager { - private final Jenkins hudson; - public LocalPluginManager(Jenkins hudson) { - super(hudson.servletContext, new File(hudson.getRootDir(),"plugins")); - this.hudson = hudson; + private final Jenkins jenkins; + public LocalPluginManager(Jenkins jenkins) { + super(jenkins.servletContext, new File(jenkins.getRootDir(),"plugins")); + this.jenkins = jenkins; } /** @@ -63,7 +63,7 @@ public class LocalPluginManager extends PluginManager { Set names = new HashSet(); - for( String path : Util.fixNull((Set)hudson.servletContext.getResourcePaths("/WEB-INF/plugins"))) { + for( String path : Util.fixNull((Set) jenkins.servletContext.getResourcePaths("/WEB-INF/plugins"))) { String fileName = path.substring(path.lastIndexOf('/')+1); if(fileName.length()==0) { // see http://www.nabble.com/404-Not-Found-error-when-clicking-on-help-td24508544.html @@ -73,7 +73,7 @@ public class LocalPluginManager extends PluginManager { try { names.add(fileName); - URL url = hudson.servletContext.getResource(path); + URL url = jenkins.servletContext.getResource(path); copyBundledPlugin(url, fileName); } catch (IOException e) { LOGGER.log(Level.SEVERE, "Failed to extract the bundled plugin "+fileName,e); diff --git a/core/src/main/java/hudson/PluginStrategy.java b/core/src/main/java/hudson/PluginStrategy.java index ad645bee5d..b8bd1ed2f2 100644 --- a/core/src/main/java/hudson/PluginStrategy.java +++ b/core/src/main/java/hudson/PluginStrategy.java @@ -23,6 +23,7 @@ */ package hudson; +import hudson.model.Hudson; import jenkins.model.Jenkins; import java.io.File; @@ -69,10 +70,11 @@ public interface PluginStrategy extends ExtensionPoint { /** * Find components of the given type using the assigned strategy. * - * @param type The component type - * @param hudson The Hudson scope - * @return Sequence of components + * + * @param type The component type + * @param hudson The Hudson scope + * @return Sequence of components * @since 1.400 */ - public abstract List> findComponents(Class type, Jenkins hudson); + public abstract List> findComponents(Class type, Hudson hudson); } diff --git a/core/src/main/java/hudson/UDPBroadcastThread.java b/core/src/main/java/hudson/UDPBroadcastThread.java index a3586ea4e9..79318d6686 100644 --- a/core/src/main/java/hudson/UDPBroadcastThread.java +++ b/core/src/main/java/hudson/UDPBroadcastThread.java @@ -23,6 +23,7 @@ */ package hudson; +import hudson.model.Hudson; import jenkins.model.Jenkins; import hudson.util.OneShotEvent; @@ -46,15 +47,23 @@ import java.util.logging.Logger; * @author Kohsuke Kawaguchi */ public class UDPBroadcastThread extends Thread { - private final Jenkins hudson; + private final Jenkins jenkins; public final OneShotEvent ready = new OneShotEvent(); private MulticastSocket mcs; private boolean shutdown; - public UDPBroadcastThread(Jenkins hudson) throws IOException { - super("Hudson UDP "+PORT+" monitoring thread"); - this.hudson = hudson; + /** + * @deprecated as of 1.416 + * Use {@link #UDPBroadcastThread(Jenkins)} + */ + public UDPBroadcastThread(Hudson jenkins) throws IOException { + this((Jenkins)jenkins); + } + + public UDPBroadcastThread(Jenkins jenkins) throws IOException { + super("Jenkins UDP "+PORT+" monitoring thread"); + this.jenkins = jenkins; mcs = new MulticastSocket(PORT); } @@ -72,12 +81,12 @@ public class UDPBroadcastThread extends Thread { SocketAddress sender = p.getSocketAddress(); // prepare a response - TcpSlaveAgentListener tal = hudson.getTcpSlaveAgentListener(); + TcpSlaveAgentListener tal = jenkins.getTcpSlaveAgentListener(); StringBuilder rsp = new StringBuilder(""); tag(rsp,"version", Jenkins.VERSION); - tag(rsp,"url",hudson.getRootUrl()); - tag(rsp,"server-id", Util.getDigestOf(hudson.getSecretKey())); + tag(rsp,"url", jenkins.getRootUrl()); + tag(rsp,"server-id", Util.getDigestOf(jenkins.getSecretKey())); tag(rsp,"slave-port",tal==null?null:tal.getPort()); for (UDPBroadcastFragment f : UDPBroadcastFragment.all()) diff --git a/core/src/main/java/hudson/cli/declarative/CLIRegisterer.java b/core/src/main/java/hudson/cli/declarative/CLIRegisterer.java index 3d92cf0502..bf55bf3e81 100644 --- a/core/src/main/java/hudson/cli/declarative/CLIRegisterer.java +++ b/core/src/main/java/hudson/cli/declarative/CLIRegisterer.java @@ -29,6 +29,7 @@ import hudson.ExtensionFinder; import hudson.Util; import hudson.cli.CLICommand; import hudson.cli.CloneableCLICommand; +import hudson.model.Hudson; import jenkins.model.Jenkins; import hudson.remoting.Channel; import hudson.security.CliAuthenticator; @@ -63,7 +64,7 @@ import java.util.logging.Logger; */ @Extension public class CLIRegisterer extends ExtensionFinder { - public Collection> find(Class type, Jenkins hudson) { + public Collection> find(Class type, Hudson hudson) { if (type==CLICommand.class) return (List)discover(hudson); else diff --git a/core/src/main/java/hudson/init/InitializerFinder.java b/core/src/main/java/hudson/init/InitializerFinder.java index d77d366fcf..e8b170a408 100644 --- a/core/src/main/java/hudson/init/InitializerFinder.java +++ b/core/src/main/java/hudson/init/InitializerFinder.java @@ -23,6 +23,7 @@ */ package hudson.init; +import hudson.model.Hudson; import jenkins.model.Jenkins; import org.jvnet.hudson.annotation_indexer.Index; import org.jvnet.hudson.reactor.Milestone; @@ -118,7 +119,7 @@ public class InitializerFinder extends TaskBuilder { * Determines the parameter injection of the initialization method. */ private Object lookUp(Class type) { - if (type== Jenkins.class) + if (type==Jenkins.class || type==Hudson.class) return Jenkins.getInstance(); throw new IllegalArgumentException("Unable to inject "+type); } diff --git a/core/src/main/java/hudson/tasks/Publisher.java b/core/src/main/java/hudson/tasks/Publisher.java index 372b0c73b8..23a29ad800 100644 --- a/core/src/main/java/hudson/tasks/Publisher.java +++ b/core/src/main/java/hudson/tasks/Publisher.java @@ -126,7 +126,7 @@ public abstract class Publisher extends BuildStepCompatibilityLayer implements B /** * {@link Publisher} has a special sort semantics that requires a subtype. * - * @see DescriptorExtensionList#createDescriptorList(jenkins.model.Jenkins, Class) + * @see DescriptorExtensionList#createDescriptorList(hudson.model.Hudson, Class */ public static final class DescriptorExtensionListImpl extends DescriptorExtensionList> implements Comparator>> { diff --git a/core/src/main/java/jenkins/model/Jenkins.java b/core/src/main/java/jenkins/model/Jenkins.java index 673cc40ed6..350daf6600 100644 --- a/core/src/main/java/jenkins/model/Jenkins.java +++ b/core/src/main/java/jenkins/model/Jenkins.java @@ -216,7 +216,6 @@ import java.util.TreeSet; import java.util.UUID; import java.util.concurrent.ConcurrentHashMap; import java.util.concurrent.CopyOnWriteArrayList; -import java.util.concurrent.CopyOnWriteArraySet; import java.util.concurrent.ExecutionException; import java.util.concurrent.ExecutorService; import java.util.concurrent.Executors; diff --git a/test/src/main/java/org/jvnet/hudson/test/TestExtensionLoader.java b/test/src/main/java/org/jvnet/hudson/test/TestExtensionLoader.java index c324fe695b..e9f050b618 100644 --- a/test/src/main/java/org/jvnet/hudson/test/TestExtensionLoader.java +++ b/test/src/main/java/org/jvnet/hudson/test/TestExtensionLoader.java @@ -26,7 +26,7 @@ package org.jvnet.hudson.test; import hudson.Extension; import hudson.ExtensionComponent; import hudson.ExtensionFinder; -import jenkins.model.Jenkins; +import hudson.model.Hudson; import net.java.sezpoz.Index; import net.java.sezpoz.IndexItem; @@ -47,7 +47,7 @@ import java.util.logging.Logger; @Extension public class TestExtensionLoader extends ExtensionFinder { @Override - public Collection> find(Class type, Jenkins hudson) { + public Collection> find(Class type, Hudson hudson) { TestEnvironment env = TestEnvironment.get(); List> result = new ArrayList>();