diff --git a/core/src/main/java/hudson/Extension.java b/core/src/main/java/hudson/Extension.java index b240e37f87db..cd69e576f9b6 100644 --- a/core/src/main/java/hudson/Extension.java +++ b/core/src/main/java/hudson/Extension.java @@ -87,7 +87,10 @@ /** * If an extension is optional, don't log any class loading errors when reading it. * @since 1.358 + * @deprecated This is very difficult to use correctly and rarely what you actually wanted. + * Use {@code OptionalExtension} from the {@code variant} plugin instead. */ + @Deprecated boolean optional() default false; /** diff --git a/core/src/main/java/hudson/ExtensionFinder.java b/core/src/main/java/hudson/ExtensionFinder.java index 7301bcc39988..2fa4f34b941e 100644 --- a/core/src/main/java/hudson/ExtensionFinder.java +++ b/core/src/main/java/hudson/ExtensionFinder.java @@ -193,6 +193,7 @@ public DefaultGuiceExtensionAnnotation() { super(Extension.class); } + @SuppressWarnings("deprecation") @Override protected boolean isOptional(Extension annotation) { return annotation.optional(); @@ -779,6 +780,7 @@ public void scout(Class extensionType, Hudson hudson) { } } + @SuppressWarnings("deprecation") private Level logLevel(IndexItem item) { return item.annotation().optional() ? Level.FINE : Level.WARNING; } diff --git a/core/src/main/java/hudson/lifecycle/ExitLifecycle.java b/core/src/main/java/hudson/lifecycle/ExitLifecycle.java index 038dafc442a3..aff8430e9423 100644 --- a/core/src/main/java/hudson/lifecycle/ExitLifecycle.java +++ b/core/src/main/java/hudson/lifecycle/ExitLifecycle.java @@ -25,7 +25,6 @@ package hudson.lifecycle; import edu.umd.cs.findbugs.annotations.SuppressFBWarnings; -import hudson.Extension; import hudson.util.BootFailure; import java.util.logging.Level; import java.util.logging.Logger; @@ -44,7 +43,6 @@ * @author Alon Bar-Lev */ @Restricted(NoExternalUse.class) -@Extension public class ExitLifecycle extends Lifecycle { private static final Logger LOGGER = Logger.getLogger(ExitLifecycle.class.getName()); diff --git a/core/src/main/java/hudson/lifecycle/Lifecycle.java b/core/src/main/java/hudson/lifecycle/Lifecycle.java index 028c3d1826b7..3fd86157f226 100644 --- a/core/src/main/java/hudson/lifecycle/Lifecycle.java +++ b/core/src/main/java/hudson/lifecycle/Lifecycle.java @@ -26,7 +26,6 @@ import edu.umd.cs.findbugs.annotations.CheckForNull; import edu.umd.cs.findbugs.annotations.NonNull; -import hudson.ExtensionPoint; import hudson.Functions; import hudson.PluginManager; import hudson.Util; @@ -62,7 +61,7 @@ * @author Kohsuke Kawaguchi * @since 1.254 */ -public abstract class Lifecycle implements ExtensionPoint { +public abstract class Lifecycle { private static Lifecycle INSTANCE = null; /** diff --git a/core/src/main/java/hudson/lifecycle/SystemdLifecycle.java b/core/src/main/java/hudson/lifecycle/SystemdLifecycle.java index 8d6b684cfe41..2fa10a7c4c76 100644 --- a/core/src/main/java/hudson/lifecycle/SystemdLifecycle.java +++ b/core/src/main/java/hudson/lifecycle/SystemdLifecycle.java @@ -4,7 +4,6 @@ import com.sun.jna.Native; import edu.umd.cs.findbugs.annotations.CheckForNull; import edu.umd.cs.findbugs.annotations.NonNull; -import hudson.Extension; import java.util.concurrent.TimeUnit; import java.util.logging.Level; import java.util.logging.Logger; @@ -17,7 +16,6 @@ * @author Basil Crow */ @Restricted(NoExternalUse.class) -@Extension(optional = true) public class SystemdLifecycle extends ExitLifecycle { private static final Logger LOGGER = Logger.getLogger(SystemdLifecycle.class.getName()); diff --git a/core/src/main/java/jenkins/diagnosis/HsErrPidList.java b/core/src/main/java/jenkins/diagnosis/HsErrPidList.java index 41f2ba418a4c..b261ab3244e1 100644 --- a/core/src/main/java/jenkins/diagnosis/HsErrPidList.java +++ b/core/src/main/java/jenkins/diagnosis/HsErrPidList.java @@ -34,8 +34,7 @@ * * @author Kohsuke Kawaguchi */ -@Extension(optional = true) @Symbol("hsErrPid") -// TODO why would an extension using a built-in extension point need to be marked optional? +@Extension @Symbol("hsErrPid") public class HsErrPidList extends AdministrativeMonitor { /** * hs_err_pid files that we think belong to us.