diff options
author | Joakim Erdfelt | 2015-12-02 18:39:52 +0000 |
---|---|---|
committer | Joakim Erdfelt | 2015-12-02 18:39:52 +0000 |
commit | 1e6b94094235aa9a7af543959c3488ea0bbd60d0 (patch) | |
tree | a42cd63b8fd1aaf70a701376e1c7e995bd5936c0 /jetty-util | |
parent | ddba6c20cd78a562abc0766a2e82de16034793ed (diff) | |
parent | c83bf80702734b2f4a4450cad1adbeb24642945b (diff) | |
download | org.eclipse.jetty.project-1e6b94094235aa9a7af543959c3488ea0bbd60d0.tar.gz org.eclipse.jetty.project-1e6b94094235aa9a7af543959c3488ea0bbd60d0.tar.xz org.eclipse.jetty.project-1e6b94094235aa9a7af543959c3488ea0bbd60d0.zip |
Merge branch 'jetty-9.3.x'
Conflicts:
jetty-server/src/test/java/org/eclipse/jetty/server/AbstractHttpTest.java
Diffstat (limited to 'jetty-util')
-rw-r--r-- | jetty-util/src/main/java/org/eclipse/jetty/util/DeprecationWarning.java | 86 |
1 files changed, 86 insertions, 0 deletions
diff --git a/jetty-util/src/main/java/org/eclipse/jetty/util/DeprecationWarning.java b/jetty-util/src/main/java/org/eclipse/jetty/util/DeprecationWarning.java new file mode 100644 index 0000000000..bd00c928d5 --- /dev/null +++ b/jetty-util/src/main/java/org/eclipse/jetty/util/DeprecationWarning.java @@ -0,0 +1,86 @@ +// +// ======================================================================== +// Copyright (c) 1995-2015 Mort Bay Consulting Pty. Ltd. +// ------------------------------------------------------------------------ +// All rights reserved. This program and the accompanying materials +// are made available under the terms of the Eclipse Public License v1.0 +// and Apache License v2.0 which accompanies this distribution. +// +// The Eclipse Public License is available at +// http://www.eclipse.org/legal/epl-v10.html +// +// The Apache License v2.0 is available at +// http://www.opensource.org/licenses/apache2.0.php +// +// You may elect to redistribute this code under either of these licenses. +// ======================================================================== +// + +package org.eclipse.jetty.util; + +import org.eclipse.jetty.util.log.Log; +import org.eclipse.jetty.util.log.Logger; + +public class DeprecationWarning implements Decorator +{ + private static final Logger LOG = Log.getLogger(DeprecationWarning.class); + + @Override + public <T> T decorate(T o) + { + if (o == null) + { + return null; + } + + Class<?> clazz = o.getClass(); + + try + { + Deprecated depr = clazz.getAnnotation(Deprecated.class); + if (depr != null) + { + LOG.warn("Using @Deprecated Class {}",clazz.getName()); + } + } + catch (Throwable t) + { + LOG.ignore(t); + } + + verifyIndirectTypes(clazz.getSuperclass(),clazz,"Class"); + for (Class<?> ifaceClazz : clazz.getInterfaces()) + { + verifyIndirectTypes(ifaceClazz,clazz,"Interface"); + } + + return o; + } + + private void verifyIndirectTypes(Class<?> superClazz, Class<?> clazz, String typeName) + { + try + { + // Report on super class deprecation too + while (superClazz != null && superClazz != Object.class) + { + Deprecated supDepr = superClazz.getAnnotation(Deprecated.class); + if (supDepr != null) + { + LOG.warn("Using indirect @Deprecated {} {} - (seen from {})",typeName,superClazz.getName(),clazz); + } + + superClazz = superClazz.getSuperclass(); + } + } + catch (Throwable t) + { + LOG.ignore(t); + } + } + + @Override + public void destroy(Object o) + { + } +} |