Eliminate all Javadoc warnings

- Support external Javadoc links using Gradle's javadoc.options.links

 - Fix all other Javadoc warnings, such as typos, references to
   non-existent (or no longer existent) types and members, etc,
   including changes related to the Quartz 2.0 upgrade (SPR-8275) and
   adding the HTTP PATCH method (SPR-7985).

 - Suppress all output for project-level `javadoc` tasks in order to
   hide false-negative warnings about cross-module @see and @link
   references (e.g. spring-core having a @see reference to spring-web).
   Use the `--info` (-i) flag to gradle at any time to see project-level
   javadoc warnings without running the entire `api` task. e.g.
   `gradle :spring-core:javadoc -i`

 - Favor root project level `api` task for detection of legitimate
   Javadoc warnings. There are now zero Javadoc warnings across the
   entirety of spring-framework. Goal: keep it that way.

 - Remove all @link and @see references to types and members that exist
   only in Servlet <= 2.5 and Hibernate <= 4.0, favoring 3.0+ and 4.0+
   respectively. This is necessary because only one version of each of
   these dependencies can be present on the global `api` javadoc task's
   classpath. To that end, the `api` task classpath has now been
   customized to ensure that the Servlet 3 API and Hibernate Core 4 jars
   have precedence.

 - SPR-8896 replaced our dependency on aspectjrt with a dependency on
   aspectjweaver, which is fine from a POM point of view, but causes
   a spurious warning to be emitted from the ant iajc task that it
   "cannot find aspectjrt on the classpath" - even though aspectjweaver
   is perfectly sufficient. In the name of keeping the console quiet, a
   new `rt` configuration has been added, and aspectjrt added as a
   dependency to it. In turn, configurations.rt.asPath is appended to
   the iajc classpath during both compileJava and compileTestJava for
   spring-aspects.

Issue: SPR-10078, SPR-8275, SPR-7985, SPR-8896
This commit is contained in:
Chris Beams
2012-12-11 11:56:38 +01:00
parent 8f90b487e2
commit f26534700a
72 changed files with 217 additions and 221 deletions

View File

@@ -1,5 +1,5 @@
/*
* Copyright 2002-2010 the original author or authors.
* Copyright 2002-2012 the original author or authors.
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
@@ -43,7 +43,7 @@ public class ProxyFactoryBean implements FactoryBean<Proxy>, InitializingBean {
private Proxy proxy;
/**
* Sets the proxy type. Defaults to {@link Proxy.Type#HTTP}.
* Sets the proxy type. Defaults to {@link java.net.Proxy.Type#HTTP}.
*/
public void setType(Proxy.Type type) {
this.type = type;

View File

@@ -50,7 +50,6 @@ public interface GenericHttpMessageConverter<T> extends HttpMessageConverter<T>
* @param type the type of object to return. This type must have previously
* been passed to the {@link #canRead canRead} method of this interface,
* which must have returned {@code true}.
* @param type the type of the target object
* @param contextClass a context class for the target type, for example a class
* in which the target type appears in a method signature, can be {@code null}
* @param inputMessage the HTTP input message to read from

View File

@@ -221,8 +221,8 @@ public class Jackson2ObjectMapperFactoryBean implements FactoryBean<ObjectMapper
* @see MapperFeature
* @see SerializationFeature
* @see DeserializationFeature
* @see JsonParser.Feature
* @see JsonGenerator.Feature
* @see org.codehaus.jackson.map.JsonParser.Feature
* @see org.codehaus.jackson.map.JsonGenerator.Feature
*/
public void setFeaturesToEnable(Object... featuresToEnable) {
if (featuresToEnable != null) {
@@ -238,8 +238,8 @@ public class Jackson2ObjectMapperFactoryBean implements FactoryBean<ObjectMapper
* @see MapperFeature
* @see SerializationFeature
* @see DeserializationFeature
* @see JsonParser.Feature
* @see JsonGenerator.Feature
* @see org.codehaus.jackson.map.JsonParser.Feature
* @see org.codehaus.jackson.map.JsonGenerator.Feature
*/
public void setFeaturesToDisable(Object... featuresToDisable) {
if (featuresToDisable != null) {

View File

@@ -128,8 +128,8 @@ public class JacksonObjectMapperFactoryBean implements FactoryBean<ObjectMapper>
}
/**
* Shortcut for {@link SerializationConfig.Feature#AUTO_DETECT_FIELDS} and
* {@link DeserializationConfig.Feature#AUTO_DETECT_FIELDS}.
* Shortcut for {@link org.codehaus.jackson.map.SerializationConfig.Feature#AUTO_DETECT_FIELDS} and
* {@link org.codehaus.jackson.map.DeserializationConfig.Feature#AUTO_DETECT_FIELDS}.
*/
public void setAutoDetectFields(boolean autoDetectFields) {
this.features.put(DeserializationConfig.Feature.AUTO_DETECT_FIELDS, autoDetectFields);
@@ -137,8 +137,8 @@ public class JacksonObjectMapperFactoryBean implements FactoryBean<ObjectMapper>
}
/**
* Shortcut for {@link SerializationConfig.Feature#AUTO_DETECT_GETTERS} and
* {@link DeserializationConfig.Feature#AUTO_DETECT_SETTERS}.
* Shortcut for {@link org.codehaus.jackson.map.SerializationConfig.Feature#AUTO_DETECT_GETTERS} and
* {@link org.codehaus.jackson.map.DeserializationConfig.Feature#AUTO_DETECT_SETTERS}.
*/
public void setAutoDetectGettersSetters(boolean autoDetectGettersSetters) {
this.features.put(SerializationConfig.Feature.AUTO_DETECT_GETTERS, autoDetectGettersSetters);
@@ -146,14 +146,14 @@ public class JacksonObjectMapperFactoryBean implements FactoryBean<ObjectMapper>
}
/**
* Shortcut for {@link SerializationConfig.Feature#FAIL_ON_EMPTY_BEANS}.
* Shortcut for {@link org.codehaus.jackson.map.SerializationConfig.Feature#FAIL_ON_EMPTY_BEANS}.
*/
public void setFailOnEmptyBeans(boolean failOnEmptyBeans) {
this.features.put(SerializationConfig.Feature.FAIL_ON_EMPTY_BEANS, failOnEmptyBeans);
}
/**
* Shortcut for {@link SerializationConfig.Feature#INDENT_OUTPUT}.
* Shortcut for {@link org.codehaus.jackson.map.SerializationConfig.Feature#INDENT_OUTPUT}.
*/
public void setIndentOutput(boolean indentOutput) {
this.features.put(SerializationConfig.Feature.INDENT_OUTPUT, indentOutput);
@@ -162,10 +162,10 @@ public class JacksonObjectMapperFactoryBean implements FactoryBean<ObjectMapper>
/**
* Specify features to enable.
*
* @see SerializationConfig.Feature
* @see DeserializationConfig.Feature
* @see JsonParser.Feature
* @see JsonGenerator.Feature
* @see org.codehaus.jackson.map.SerializationConfig.Feature
* @see org.codehaus.jackson.map.DeserializationConfig.Feature
* @see org.codehaus.jackson.map.JsonParser.Feature
* @see org.codehaus.jackson.map.JsonGenerator.Feature
*/
public void setFeaturesToEnable(Object[] featuresToEnable) {
if (featuresToEnable != null) {
@@ -178,10 +178,10 @@ public class JacksonObjectMapperFactoryBean implements FactoryBean<ObjectMapper>
/**
* Specify features to disable.
*
* @see SerializationConfig.Feature
* @see DeserializationConfig.Feature
* @see JsonParser.Feature
* @see JsonGenerator.Feature
* @see org.codehaus.jackson.map.SerializationConfig.Feature
* @see org.codehaus.jackson.map.DeserializationConfig.Feature
* @see org.codehaus.jackson.map.JsonParser.Feature
* @see org.codehaus.jackson.map.JsonGenerator.Feature
*/
public void setFeaturesToDisable(Object[] featuresToDisable) {
if (featuresToDisable != null) {

View File

@@ -1,5 +1,5 @@
/*
* Copyright 2002-2009 the original author or authors.
* Copyright 2002-2012 the original author or authors.
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
@@ -25,12 +25,6 @@ import javax.xml.rpc.Service;
* or one of its subclasses: {@link LocalJaxRpcServiceFactoryBean},
* {@link JaxRpcPortClientInterceptor}, or {@link JaxRpcPortProxyFactoryBean}.
*
* <p>Useful, for example, to register custom type mappings. See the
* {@link org.springframework.remoting.jaxrpc.support.AxisBeanMappingServicePostProcessor}
* class that registers Axis-specific bean mappings for specified bean classes.
* This is defined for the domain objects in the JPetStore same application,
* for example.
*
* @author Juergen Hoeller
* @since 1.1.4
* @see LocalJaxRpcServiceFactory#setServicePostProcessors

View File

@@ -84,7 +84,7 @@ public class ContentNegotiationManager implements ContentNegotiationStrategy, Me
* implement {@link MediaTypeFileExtensionResolver} and the class constructor
* accepting the former will also detect implementations of the latter. Therefore
* you only need to use this method to register additional instances.
* @param one more resolvers
* @param resolvers one or more resolvers
*/
public void addFileExtensionResolvers(MediaTypeFileExtensionResolver... resolvers) {
this.fileExtensionResolvers.addAll(Arrays.asList(resolvers));
@@ -93,7 +93,7 @@ public class ContentNegotiationManager implements ContentNegotiationStrategy, Me
/**
* Delegate to all configured ContentNegotiationStrategy instances until one
* returns a non-empty list.
* @param request the current request
* @param webRequest the current request
* @return the requested media types or an empty list, never {@code null}
* @throws HttpMediaTypeNotAcceptableException if the requested media types cannot be parsed
*/

View File

@@ -37,7 +37,7 @@ import org.springframework.web.context.ServletContextAware;
* <p>By default strategies for checking the extension of the request path and
* the {@code Accept} header are registered. The path extension check will perform
* lookups through the {@link ServletContext} and the Java Activation Framework
* (if present) unless {@linkplain #setMediaTypes(Map) media types} are configured.
* (if present) unless {@linkplain #setMediaTypes(Properties) media types} are configured.
*
* @author Rossen Stoyanchev
* @since 3.2
@@ -99,7 +99,7 @@ public class ContentNegotiationManagerFactoryBean
* {@link #setFavorPathExtension(boolean)} is set to {@code true}.
* <p>The default value is {@code true}.
* @see #parameterName
* @see #setMediaTypes(Map)
* @see #setMediaTypes(Properties)
*/
public void setUseJaf(boolean useJaf) {
this.useJaf = useJaf;
@@ -113,7 +113,7 @@ public class ContentNegotiationManagerFactoryBean
* for {@code /hotels?format=pdf} will be interpreted as a request for
* {@code "application/pdf"} regardless of the {@code Accept} header.
* <p>To use this option effectively you must also configure the MediaType
* type mappings via {@link #setMediaTypes(Map)}.
* type mappings via {@link #setMediaTypes(Properties)}.
* @see #setParameterName(String)
*/
public void setFavorParameter(boolean favorParameter) {

View File

@@ -34,7 +34,7 @@ public interface ContentNegotiationStrategy {
* Resolve the given request to a list of media types. The returned list is
* ordered by specificity first and by quality parameter second.
*
* @param request the current request
* @param webRequest the current request
* @return the requested media types or an empty list, never {@code null}
*
* @throws HttpMediaTypeNotAcceptableException if the requested media types cannot be parsed

View File

@@ -109,7 +109,7 @@ import java.util.concurrent.Callable;
* converters}. Such parameters may optionally be annotated with {@code @Valid}
* and also support access to validation results through an
* {@link org.springframework.validation.Errors} argument.
* Instead a {@link org.springframework.web.servlet.mvc.method.annotation.MethodArgumentNotValidException}
* Instead a {@link org.springframework.web.bind.MethodArgumentNotValidException}
* exception is raised.
* <li>{@link RequestPart @RequestPart} annotated parameters
* (Servlet-only, {@literal @MVC 3.1-only})
@@ -120,7 +120,7 @@ import java.util.concurrent.Callable;
* converters}. Such parameters may optionally be annotated with {@code @Valid}
* and support access to validation results through a
* {@link org.springframework.validation.Errors} argument.
* Instead a {@link org.springframework.web.servlet.mvc.method.annotation.MethodArgumentNotValidException}
* Instead a {@link org.springframework.web.bind.MethodArgumentNotValidException}
* exception is raised.
* <li>{@link org.springframework.http.HttpEntity HttpEntity&lt;?&gt;} parameters
* (Servlet-only) for access to the Servlet request HTTP headers and contents.

View File

@@ -139,7 +139,7 @@ public class DeferredResult<T> {
/**
* Provide a handler to use to handle the result value.
* @param resultHandler the handler
* @see {@link DeferredResultProcessingInterceptor}
* @see DeferredResultProcessingInterceptor
*/
public final void setResultHandler(DeferredResultHandler resultHandler) {
Assert.notNull(resultHandler, "DeferredResultHandler is required");

View File

@@ -51,9 +51,8 @@ import org.springframework.web.util.UrlPathHelper;
*
* @see org.springframework.web.context.request.AsyncWebRequestInterceptor
* @see org.springframework.web.servlet.AsyncHandlerInterceptor
* @see org.springframework.web.filter.OncePerRequestFilter#shouldFilterAsyncDispatches
* @see org.springframework.web.filter.OncePerRequestFilter#shouldNotFilterAsyncDispatch
* @see org.springframework.web.filter.OncePerRequestFilter#isAsyncDispatch
* @see org.springframework.web.filter.OncePerRequestFilter#isLastRequestThread
*/
public final class WebAsyncManager {
@@ -195,7 +194,7 @@ public final class WebAsyncManager {
/**
* Register a {@link CallableProcessingInterceptor} without a key.
* The key is derived from the class name and hashcode.
* @param interceptor the interceptor to register
* @param interceptors one or more interceptors to register
*/
public void registerCallableInterceptors(CallableProcessingInterceptor... interceptors) {
Assert.notNull(interceptors, "A CallableProcessingInterceptor is required");
@@ -219,8 +218,7 @@ public final class WebAsyncManager {
/**
* Register a {@link DeferredResultProcessingInterceptor} without a key.
* The key is derived from the class name and hashcode.
* @param key the key
* @param interceptors the interceptor to register
* @param interceptors one or more interceptors to register
*/
public void registerDeferredResultInterceptors(DeferredResultProcessingInterceptor... interceptors) {
Assert.notNull(interceptors, "A DeferredResultProcessingInterceptor is required");

View File

@@ -70,7 +70,7 @@ public class StandardServletEnvironment extends StandardEnvironment
* environment variables contributed by the {@link StandardEnvironment} superclass.
* <p>The {@code Servlet}-related property sources are added as {@link
* StubPropertySource stubs} at this stage, and will be {@linkplain
* #initPropertySources(ServletContext) fully initialized} once the actual
* #initPropertySources(ServletContext, ServletConfig) fully initialized} once the actual
* {@link ServletContext} object becomes available.
* @see StandardEnvironment#customizePropertySources
* @see org.springframework.core.env.AbstractEnvironment#customizePropertySources
@@ -78,7 +78,7 @@ public class StandardServletEnvironment extends StandardEnvironment
* @see ServletContextPropertySource
* @see org.springframework.jndi.JndiPropertySource
* @see org.springframework.context.support.AbstractApplicationContext#initPropertySources
* @see #initPropertySources(ServletContext)
* @see #initPropertySources(ServletContext, ServletConfig)
*/
@Override
protected void customizePropertySources(MutablePropertySources propertySources) {

View File

@@ -247,7 +247,8 @@ public abstract class WebApplicationContextUtils {
* <p>This method is idempotent with respect to the fact it may be called any number
* of times but will perform replacement of stub property sources with their
* corresponding actual property sources once and only once.
* @param propertySources the {@link PropertySources} to initialize (must not be {@code null})
* @param propertySources the {@link MutablePropertySources} to initialize (must not
* be {@code null})
* @param servletContext the current {@link ServletContext} (ignored if {@code null}
* or if the {@link StandardServletEnvironment#SERVLET_CONTEXT_PROPERTY_SOURCE_NAME
* servlet context property source} has already been initialized)