diff --git a/spring-aop/src/main/java/org/springframework/aop/framework/CglibAopProxy.java b/spring-aop/src/main/java/org/springframework/aop/framework/CglibAopProxy.java index 532c58c3312e93712091f2e30639676913c55072..37399de09bd2827ae5ccc428ee74d3aca5852b6e 100644 --- a/spring-aop/src/main/java/org/springframework/aop/framework/CglibAopProxy.java +++ b/spring-aop/src/main/java/org/springframework/aop/framework/CglibAopProxy.java @@ -1,5 +1,5 @@ /* - * Copyright 2002-2018 the original author or authors. + * Copyright 2002-2019 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. @@ -328,10 +328,11 @@ class CglibAopProxy implements AopProxy, Serializable { // TODO: small memory optimization here (can skip creation for methods with no advice) for (int x = 0; x < methods.length; x++) { - List chain = this.advised.getInterceptorsAndDynamicInterceptionAdvice(methods[x], rootClass); + Method method = methods[x]; + List chain = this.advised.getInterceptorsAndDynamicInterceptionAdvice(method, rootClass); fixedCallbacks[x] = new FixedChainStaticTargetInterceptor( chain, this.advised.getTargetSource().getTarget(), this.advised.getTargetClass()); - this.fixedInterceptorMap.put(methods[x].toString(), x); + this.fixedInterceptorMap.put(methods.toString(), x); } // Now copy both the callbacks from mainCallbacks @@ -614,8 +615,8 @@ class CglibAopProxy implements AopProxy, Serializable { @Override public Object intercept(Object proxy, Method method, Object[] args, MethodProxy methodProxy) throws Throwable { - MethodInvocation invocation = new CglibMethodInvocation(proxy, this.target, method, args, - this.targetClass, this.adviceChain, methodProxy); + MethodInvocation invocation = new CglibMethodInvocation( + proxy, this.target, method, args, this.targetClass, this.adviceChain, methodProxy); // If we get here, we need to create a MethodInvocation. Object retVal = invocation.proceed(); retVal = processReturnType(proxy, this.target, method, retVal); @@ -783,7 +784,7 @@ class CglibAopProxy implements AopProxy, Serializable { *
For advised methods:
*
If the target is static and the advice chain is frozen then a * FixedChainStaticTargetInterceptor specific to the method is used to - * invoke the advice chain. Otherwise a DyanmicAdvisedInterceptor is + * invoke the advice chain. Otherwise a DynamicAdvisedInterceptor is * used.
*
For non-advised methods:
*
Where it can be determined that the method will not return {@code this} diff --git a/spring-aop/src/main/java/org/springframework/aop/framework/ReflectiveMethodInvocation.java b/spring-aop/src/main/java/org/springframework/aop/framework/ReflectiveMethodInvocation.java index d23bb12ba61fd6461f2d218fcce7f5bcd7d79496..0b1298136272baa7228e2b5ed7a53b77b8a3e15e 100644 --- a/spring-aop/src/main/java/org/springframework/aop/framework/ReflectiveMethodInvocation.java +++ b/spring-aop/src/main/java/org/springframework/aop/framework/ReflectiveMethodInvocation.java @@ -1,5 +1,5 @@ /* - * Copyright 2002-2015 the original author or authors. + * Copyright 2002-2019 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. @@ -152,7 +152,7 @@ public class ReflectiveMethodInvocation implements ProxyMethodInvocation, Clonea @Override public Object proceed() throws Throwable { - // We start with an index of -1 and increment early. + // We start with an index of -1 and increment early. if (this.currentInterceptorIndex == this.interceptorsAndDynamicMethodMatchers.size() - 1) { return invokeJoinpoint(); } diff --git a/spring-aop/src/main/java/org/springframework/aop/support/ComposablePointcut.java b/spring-aop/src/main/java/org/springframework/aop/support/ComposablePointcut.java index d47eea4f4f99bfc96e1c97a4df3eaa2d176e5748..54a88cf65a1c4327ef6a5ed1ade5ba7ea61edbe6 100644 --- a/spring-aop/src/main/java/org/springframework/aop/support/ComposablePointcut.java +++ b/spring-aop/src/main/java/org/springframework/aop/support/ComposablePointcut.java @@ -1,5 +1,5 @@ /* - * Copyright 2002-2017 the original author or authors. + * Copyright 2002-2019 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. @@ -24,12 +24,15 @@ import org.springframework.aop.Pointcut; import org.springframework.util.Assert; /** - * Convenient class for building up pointcuts. All methods return - * ComposablePointcut, so we can use a concise idiom like: + * Convenient class for building up pointcuts. * - * {@code - * Pointcut pc = new ComposablePointcut().union(classFilter).intersection(methodMatcher).intersection(pointcut); - * } + *

All methods return {@code ComposablePointcut}, so we can use concise idioms + * like in the following example. + * + *

Pointcut pc = new ComposablePointcut()
+ *                      .union(classFilter)
+ *                      .intersection(methodMatcher)
+ *                      .intersection(pointcut);
* * @author Rod Johnson * @author Juergen Hoeller @@ -199,7 +202,7 @@ public class ComposablePointcut implements Pointcut, Serializable { @Override public String toString() { - return "ComposablePointcut: " + this.classFilter + ", " +this.methodMatcher; + return "ComposablePointcut: " + this.classFilter + ", " + this.methodMatcher; } } diff --git a/spring-aop/src/main/java/org/springframework/aop/support/DefaultIntroductionAdvisor.java b/spring-aop/src/main/java/org/springframework/aop/support/DefaultIntroductionAdvisor.java index de2746ae66f1b4020c8faf805cf8330dd2c46331..066492969ab59419742545a7ece34c840830a1fc 100644 --- a/spring-aop/src/main/java/org/springframework/aop/support/DefaultIntroductionAdvisor.java +++ b/spring-aop/src/main/java/org/springframework/aop/support/DefaultIntroductionAdvisor.java @@ -1,5 +1,5 @@ /* - * Copyright 2002-2018 the original author or authors. + * Copyright 2002-2019 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. @@ -38,7 +38,7 @@ import org.springframework.util.ClassUtils; * @author Juergen Hoeller * @since 11.11.2003 */ -@SuppressWarnings({"serial" }) +@SuppressWarnings("serial") public class DefaultIntroductionAdvisor implements IntroductionAdvisor, ClassFilter, Ordered, Serializable { private final Advice advice; @@ -81,25 +81,25 @@ public class DefaultIntroductionAdvisor implements IntroductionAdvisor, ClassFil /** * Create a DefaultIntroductionAdvisor for the given advice. * @param advice the Advice to apply - * @param intf the interface to introduce + * @param ifc the interface to introduce */ - public DefaultIntroductionAdvisor(DynamicIntroductionAdvice advice, Class intf) { + public DefaultIntroductionAdvisor(DynamicIntroductionAdvice advice, Class ifc) { Assert.notNull(advice, "Advice must not be null"); this.advice = advice; - addInterface(intf); + addInterface(ifc); } /** * Add the specified interface to the list of interfaces to introduce. - * @param intf the interface to introduce + * @param ifc the interface to introduce */ - public void addInterface(Class intf) { - Assert.notNull(intf, "Interface must not be null"); - if (!intf.isInterface()) { - throw new IllegalArgumentException("Specified class [" + intf.getName() + "] must be an interface"); + public void addInterface(Class ifc) { + Assert.notNull(ifc, "Interface must not be null"); + if (!ifc.isInterface()) { + throw new IllegalArgumentException("Specified class [" + ifc.getName() + "] must be an interface"); } - this.interfaces.add(intf); + this.interfaces.add(ifc); } @Override @@ -112,8 +112,8 @@ public class DefaultIntroductionAdvisor implements IntroductionAdvisor, ClassFil for (Class ifc : this.interfaces) { if (this.advice instanceof DynamicIntroductionAdvice && !((DynamicIntroductionAdvice) this.advice).implementsInterface(ifc)) { - throw new IllegalArgumentException("DynamicIntroductionAdvice [" + this.advice + "] " + - "does not implement interface [" + ifc.getName() + "] specified for introduction"); + throw new IllegalArgumentException("DynamicIntroductionAdvice [" + this.advice + "] " + + "does not implement interface [" + ifc.getName() + "] specified for introduction"); } } } diff --git a/spring-aop/src/main/java/org/springframework/aop/support/NameMatchMethodPointcut.java b/spring-aop/src/main/java/org/springframework/aop/support/NameMatchMethodPointcut.java index 68ed522dc01f274d84503844318d1a24b3b98080..ec683195bf148a4d2a7403d3b08ad0c8fc7cabdd 100644 --- a/spring-aop/src/main/java/org/springframework/aop/support/NameMatchMethodPointcut.java +++ b/spring-aop/src/main/java/org/springframework/aop/support/NameMatchMethodPointcut.java @@ -1,5 +1,5 @@ /* - * Copyright 2002-2017 the original author or authors. + * Copyright 2002-2019 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. @@ -26,8 +26,9 @@ import org.springframework.util.ObjectUtils; import org.springframework.util.PatternMatchUtils; /** - * Pointcut bean for simple method name matches, as alternative to regexp patterns. - * Does not handle overloaded methods: all methods with a given name will be eligible. + * Pointcut bean for simple method name matches, as an alternative to regexp patterns. + * + *

Does not handle overloaded methods: all methods with a given name will be eligible. * * @author Juergen Hoeller * @author Rod Johnson diff --git a/spring-aop/src/main/java/org/springframework/aop/support/Pointcuts.java b/spring-aop/src/main/java/org/springframework/aop/support/Pointcuts.java index 576a690b987daae8c1668c1b96ce6412365f95c5..bf6585b941013ba1b91970de06a7ed624679e67d 100644 --- a/spring-aop/src/main/java/org/springframework/aop/support/Pointcuts.java +++ b/spring-aop/src/main/java/org/springframework/aop/support/Pointcuts.java @@ -1,5 +1,5 @@ /* - * Copyright 2002-2015 the original author or authors. + * Copyright 2002-2019 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. @@ -26,7 +26,8 @@ import org.springframework.util.Assert; /** * Pointcut constants for matching getters and setters, * and static methods useful for manipulating and evaluating pointcuts. - * These methods are particularly useful for composing pointcuts + * + *

These methods are particularly useful for composing pointcuts * using the union and intersection methods. * * @author Rod Johnson diff --git a/spring-aop/src/main/java/org/springframework/aop/support/annotation/AnnotationMatchingPointcut.java b/spring-aop/src/main/java/org/springframework/aop/support/annotation/AnnotationMatchingPointcut.java index 95736c631a96b7dad5aa4a62b687a0b7007a843b..ef11405a918c4322c4aace29f10cecfec90755ba 100644 --- a/spring-aop/src/main/java/org/springframework/aop/support/annotation/AnnotationMatchingPointcut.java +++ b/spring-aop/src/main/java/org/springframework/aop/support/annotation/AnnotationMatchingPointcut.java @@ -1,5 +1,5 @@ /* - * Copyright 2002-2017 the original author or authors. + * Copyright 2002-2019 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. @@ -61,7 +61,7 @@ public class AnnotationMatchingPointcut implements Pointcut { } /** - * Create a new AnnotationMatchingPointcut for the given annotation type. + * Create a new AnnotationMatchingPointcut for the given annotation types. * @param classAnnotationType the annotation type to look for at the class level * (can be {@code null}) * @param methodAnnotationType the annotation type to look for at the method level @@ -119,7 +119,7 @@ public class AnnotationMatchingPointcut implements Pointcut { @Override public String toString() { - return "AnnotationMatchingPointcut: " + this.classFilter + ", " +this.methodMatcher; + return "AnnotationMatchingPointcut: " + this.classFilter + ", " + this.methodMatcher; } diff --git a/spring-beans/src/main/java/org/springframework/beans/factory/annotation/AutowiredAnnotationBeanPostProcessor.java b/spring-beans/src/main/java/org/springframework/beans/factory/annotation/AutowiredAnnotationBeanPostProcessor.java index 46e8ba7a6d4dc53aed0c174713ca3bc1088d3612..51ee65d44506e620ad067e5a9f76314dbcd1bf4e 100644 --- a/spring-beans/src/main/java/org/springframework/beans/factory/annotation/AutowiredAnnotationBeanPostProcessor.java +++ b/spring-beans/src/main/java/org/springframework/beans/factory/annotation/AutowiredAnnotationBeanPostProcessor.java @@ -1,5 +1,5 @@ /* - * Copyright 2002-2018 the original author or authors. + * Copyright 2002-2019 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. @@ -141,9 +141,10 @@ public class AutowiredAnnotationBeanPostProcessor extends InstantiationAwareBean /** - * Create a new AutowiredAnnotationBeanPostProcessor - * for Spring's standard {@link Autowired} annotation. - *

Also supports JSR-330's {@link javax.inject.Inject} annotation, if available. + * Create a new {@code AutowiredAnnotationBeanPostProcessor} for Spring's + * standard {@link Autowired @Autowired} annotation. + *

Also supports JSR-330's {@link javax.inject.Inject @Inject} annotation, + * if available. */ @SuppressWarnings("unchecked") public AutowiredAnnotationBeanPostProcessor() { @@ -239,7 +240,7 @@ public class AutowiredAnnotationBeanPostProcessor extends InstantiationAwareBean public Constructor[] determineCandidateConstructors(Class beanClass, final String beanName) throws BeanCreationException { - // Let's check for lookup methods here.. + // Let's check for lookup methods here... if (!this.lookupMethodsChecked.contains(beanName)) { try { ReflectionUtils.doWithMethods(beanClass, new ReflectionUtils.MethodCallback() { @@ -249,7 +250,8 @@ public class AutowiredAnnotationBeanPostProcessor extends InstantiationAwareBean if (lookup != null) { LookupOverride override = new LookupOverride(method, lookup.value()); try { - RootBeanDefinition mbd = (RootBeanDefinition) beanFactory.getMergedBeanDefinition(beanName); + RootBeanDefinition mbd = (RootBeanDefinition) + beanFactory.getMergedBeanDefinition(beanName); mbd.getMethodOverrides().addOverride(override); } catch (NoSuchBeanDefinitionException ex) { diff --git a/spring-beans/src/main/java/org/springframework/beans/factory/support/CglibSubclassingInstantiationStrategy.java b/spring-beans/src/main/java/org/springframework/beans/factory/support/CglibSubclassingInstantiationStrategy.java index 6ba300d286d2261760808e2f681983ed5d56668b..1e5f4712d1cd92c782b04e933628d84a531d3bf6 100644 --- a/spring-beans/src/main/java/org/springframework/beans/factory/support/CglibSubclassingInstantiationStrategy.java +++ b/spring-beans/src/main/java/org/springframework/beans/factory/support/CglibSubclassingInstantiationStrategy.java @@ -1,5 +1,5 @@ /* - * Copyright 2002-2016 the original author or authors. + * Copyright 2002-2019 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. @@ -246,7 +246,7 @@ public class CglibSubclassingInstantiationStrategy extends SimpleInstantiationSt public int accept(Method method) { MethodOverride methodOverride = getBeanDefinition().getMethodOverrides().getOverride(method); if (logger.isTraceEnabled()) { - logger.trace("Override for '" + method.getName() + "' is [" + methodOverride + "]"); + logger.trace("MethodOverride for " + method + ": " + methodOverride); } if (methodOverride == null) { return PASSTHROUGH; diff --git a/spring-beans/src/main/java/org/springframework/beans/factory/support/MethodOverrides.java b/spring-beans/src/main/java/org/springframework/beans/factory/support/MethodOverrides.java index 98b90eff4a201cddcc8b83cc2b12bd94797a5013..a84aae5f20d40f43ff29a38861ef4f02deb02a63 100644 --- a/spring-beans/src/main/java/org/springframework/beans/factory/support/MethodOverrides.java +++ b/spring-beans/src/main/java/org/springframework/beans/factory/support/MethodOverrides.java @@ -1,5 +1,5 @@ /* - * Copyright 2002-2016 the original author or authors. + * Copyright 2002-2019 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. @@ -121,7 +121,6 @@ public class MethodOverrides { } MethodOverrides that = (MethodOverrides) other; return this.overrides.equals(that.overrides); - } @Override diff --git a/spring-webmvc/src/main/java/org/springframework/web/servlet/mvc/method/annotation/SseEmitter.java b/spring-webmvc/src/main/java/org/springframework/web/servlet/mvc/method/annotation/SseEmitter.java index 01f47edca3d58b469728319e34190dca343ef4e8..d6fa1bd00339eb9bf86c33e1ca6efe0631cede52 100644 --- a/spring-webmvc/src/main/java/org/springframework/web/servlet/mvc/method/annotation/SseEmitter.java +++ b/spring-webmvc/src/main/java/org/springframework/web/servlet/mvc/method/annotation/SseEmitter.java @@ -1,5 +1,5 @@ /* - * Copyright 2002-2017 the original author or authors. + * Copyright 2002-2019 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,6 +25,7 @@ import java.util.Set; import org.springframework.http.HttpHeaders; import org.springframework.http.MediaType; import org.springframework.http.server.ServerHttpResponse; +import org.springframework.util.ObjectUtils; import org.springframework.util.StringUtils; /** @@ -39,7 +40,7 @@ public class SseEmitter extends ResponseBodyEmitter { static final MediaType TEXT_PLAIN = new MediaType("text", "plain", Charset.forName("UTF-8")); - static final MediaType UTF8_TEXT_EVENTSTREAM = new MediaType("text", "event-stream", Charset.forName("UTF-8")); + static final MediaType TEXT_EVENTSTREAM = new MediaType("text", "event-stream", Charset.forName("UTF-8")); /** @@ -68,7 +69,7 @@ public class SseEmitter extends ResponseBodyEmitter { HttpHeaders headers = outputMessage.getHeaders(); if (headers.getContentType() == null) { - headers.setContentType(UTF8_TEXT_EVENTSTREAM); + headers.setContentType(TEXT_EVENTSTREAM); } } @@ -112,7 +113,6 @@ public class SseEmitter extends ResponseBodyEmitter { * Send an SSE event prepared with the given builder. For example: *

 	 * // static import of SseEmitter
-	 *
 	 * SseEmitter emitter = new SseEmitter();
 	 * emitter.send(event().name("update").id("1").data(myObject));
 	 * 
@@ -128,6 +128,11 @@ public class SseEmitter extends ResponseBodyEmitter { } } + @Override + public String toString() { + return "SseEmitter@" + ObjectUtils.getIdentityHexString(this); + } + public static SseEventBuilder event() { return new SseEventBuilderImpl(); @@ -140,9 +145,9 @@ public class SseEmitter extends ResponseBodyEmitter { public interface SseEventBuilder { /** - * Add an SSE "comment" line. + * Add an SSE "id" line. */ - SseEventBuilder comment(String comment); + SseEventBuilder id(String id); /** * Add an SSE "event" line. @@ -150,14 +155,14 @@ public class SseEmitter extends ResponseBodyEmitter { SseEventBuilder name(String eventName); /** - * Add an SSE "id" line. + * Add an SSE "retry" line. */ - SseEventBuilder id(String id); + SseEventBuilder reconnectTime(long reconnectTimeMillis); /** - * Add an SSE "event" line. + * Add an SSE "comment" line. */ - SseEventBuilder reconnectTime(long reconnectTimeMillis); + SseEventBuilder comment(String comment); /** * Add an SSE "data" line. @@ -188,8 +193,8 @@ public class SseEmitter extends ResponseBodyEmitter { private StringBuilder sb; @Override - public SseEventBuilder comment(String comment) { - append(":").append(comment != null ? comment : "").append("\n"); + public SseEventBuilder id(String id) { + append("id:").append(id != null ? id : "").append("\n"); return this; } @@ -200,14 +205,14 @@ public class SseEmitter extends ResponseBodyEmitter { } @Override - public SseEventBuilder id(String id) { - append("id:").append(id != null ? id : "").append("\n"); + public SseEventBuilder reconnectTime(long reconnectTimeMillis) { + append("retry:").append(String.valueOf(reconnectTimeMillis)).append("\n"); return this; } @Override - public SseEventBuilder reconnectTime(long reconnectTimeMillis) { - append("retry:").append(String.valueOf(reconnectTimeMillis)).append("\n"); + public SseEventBuilder comment(String comment) { + append(":").append(comment != null ? comment : "").append("\n"); return this; }