HeemangHan
729ce4108d
Correct typos ( #2018 )
2018-11-17 16:31:01 +01:00
Juergen Hoeller
9614817e88
Do not proxy test instances based on "original instance" convention
...
Issue: SPR-17137
2018-08-24 00:49:01 +02:00
Juergen Hoeller
04d2d1da0d
Consistently use double quotes (even if no interpolation needed)
...
Includes upgrade to Hibernate ORM 5.3.5, EclipseLink 2.7.3, Selenium HtmlUnit Driver 2.32.1, Jetty 9.4.12 RC2.
2018-08-16 15:32:44 +02:00
Juergen Hoeller
71d4dbea13
Post-processors ignore AopInfrastructureBean (includes ScopedObject)
...
Issue: SPR-17166
2018-08-11 23:10:57 +02:00
Juergen Hoeller
8bf8092740
Post-processors consistently ignore ScopedObject/AopInfrastructureBean
...
ScheduledAnnotationBeanPostProcessor also ignores TaskScheduler and ScheduledExecutorService, avoiding unnecessary annotation introspection on framework classes.
Issue: SPR-17166
Issue: SPR-16933
2018-08-11 22:20:07 +02:00
Juergen Hoeller
aebb2d52e0
Logging refinements for transaction and cache processing (debug/trace)
...
Issue: SPR-16946
2018-08-10 15:45:46 +02:00
Juergen Hoeller
8f513f8561
AnnotationMatchingPointcut uses AnnotatedElementUtils.hasAnnotation
...
For consistency with AnnotationAsyncExecutionInterceptor (based on AnnotatedElementUtils.findMergedAnnotation) which is the main companion of AnnotationMatchingPointcut's checkInherited mode.
Issue: SPR-16933
2018-08-09 11:58:57 +02:00
Juergen Hoeller
915afa77f4
Polishing
2018-08-09 03:07:05 +02:00
Juergen Hoeller
65f29a39ca
AbstractAspectJAdvisorFactory uses AnnotationUtils.getValue
2018-08-09 02:26:28 +02:00
Juergen Hoeller
7cf98261ce
Polishing
2018-08-08 23:56:17 +02:00
Kazuhiro Sera
be211ceead
Fix typos detected by github.com/client9/misspell
2018-08-08 12:50:46 +02:00
Juergen Hoeller
b325c74216
Pruning of outdated JDK 6/7 references (plus related polishing)
2018-08-07 20:36:47 +02:00
Juergen Hoeller
c037e75f26
Improve debug logging at BeanDefinitionReader and BeanFactory level
...
Issue: SPR-17090
2018-07-27 17:46:05 +02:00
Juergen Hoeller
4e03d3fdcb
MethodBeforeAdviceInterceptor implements BeforeAdvice marker interface
...
Includes related polishing in the advice interceptor implementations.
Issue: SPR-17088
2018-07-25 20:12:14 +02:00
Juergen Hoeller
7f1a8d78b5
BeanFactoryAdvisorRetrievalHelper avoids synchronization for name cache
...
Issue: SPR-16570
2018-07-24 16:16:44 +02:00
Juergen Hoeller
bccff73e2b
AspectJExpressionPointcut leniently ignores non-composable interfaces
...
Issue: SPR-17003
2018-07-22 22:28:48 +02:00
stsypanov
5051850fa9
SPR-17074 Replace iteration over Map::ketSet with Map::entrySet
2018-07-21 13:12:43 +02:00
Juergen Hoeller
9a43d2ec20
Revised log levels: less WARN and INFO, fine-tuned DEBUG vs TRACE
...
Issue: SPR-16946
2018-07-20 15:05:16 +02:00
Juergen Hoeller
252f52ab07
Tighten (IntroductionAware)MethodMatcher contract
...
Provides a non-null guarantee for MethodMatcher's targetClass argument and strict separation between IntroductionAwareMethodMatcher and regular MethodMatcher, enabling DefaultAdvisorChainFactory to defer its IntroductionAdvisor determination until encountering an actual IntroductionAwareMethodMatcher (even behind union/intersection).
Issue: SPR-17068
2018-07-20 00:17:31 +02:00
Juergen Hoeller
9c08a482d1
Prefer ArrayList/ArrayDeque over LinkedList for multi-element holders
...
LinkedList remains in place where a List is likely to remain empty or single-element (in order to avoid unused capacity).
Issue: SPR-17037
2018-07-18 22:17:42 +02:00
Juergen Hoeller
5fcfe0fa8e
Polishing
2018-07-18 14:27:16 +02:00
Juergen Hoeller
f6fdffd663
Lazily retrieve delegate beans in AsyncConfigurer and CachingConfigurer
...
Introduces a configure method pattern for Supplier-style configuration and a common SingletonSupplier decorator for method reference suppliers. Also declares jcache.config and jcache.interceptor for non-null conventions.
Issue: SPR-17021
2018-07-14 19:29:32 +02:00
Juergen Hoeller
f123d6c3bc
Upgrade to Netty 4.1.27 and Commons Pool 2.6
2018-07-12 16:53:37 +02:00
stsypanov
6d6aa72e8f
improve performance of projection instantiation
2018-07-09 13:39:23 +02:00
Juergen Hoeller
e5a6711d29
Consistent final declaration for static delegate classes
...
Issue: SPR-16968
2018-07-02 13:55:18 +02:00
Juergen Hoeller
d34e6f7f70
Polishing
2018-06-28 18:02:07 +02:00
Juergen Hoeller
8ad5299f4a
Polishing
2018-06-28 17:12:29 +02:00
Juergen Hoeller
40efcc933c
Polishing
2018-06-28 14:51:33 +02:00
Juergen Hoeller
81cb740e0a
New postProcessProperties variant on InstantiationAwareBeanPostProcessor
...
Allows for skipping the now-deprecated postProcessPropertyValues callback with its expensive PropertyDescriptor retrieval requirement. RequiredAnnotationBeanPostProcessor (which is dependent on postProcessPropertyValues) and the @Required annotation itself are also deprecated now: in favor of constructor injection (or afterPropertiesSet).
Issue: SPR-16918
2018-06-28 14:15:16 +02:00
Phillip Webb
a89e716cc7
Use tabs rather than spaces in tests
...
Update tests to ensure that tabs are used instead of spaces. Also
consistently apply a new line at the end of each file.
Issue: SPR-16968
2018-06-28 10:28:44 +02:00
Phillip Webb
5cedd0d5d4
Consistently use tabs rather than spaces
...
Update code that has accidentally used spaces instead of tabs.
Also remove all trailing whitespace.
Issue: SPR-16968
2018-06-28 10:28:44 +02:00
Phillip Webb
634f5c2792
Ensure when equals() is implemented so is hashCode()
...
Update classes that override `equals()` to ensure that they also
implement `hashCode()`.
Issue: SPR-16968
2018-06-28 10:28:44 +02:00
Phillip Webb
9de3689f63
Never use 'this.' when accessing loggers
...
Ensure that `this.` is never used when accessing loggers.
Issue: SPR-16968
2018-06-28 10:28:44 +02:00
Phillip Webb
0b53c1096a
Always use 'this.' when accessing fields
...
Ensure that `this.` is used consistently when accessing class
fields.
Issue: SPR-16968
2018-06-28 10:28:44 +02:00
Phillip Webb
eeebd51f57
Use consistent class design
...
Update all classes so that inner classes are always last. Also
ensure that utility classes are always final and have a private
constructor and make exceptions final whenever possible.
Issue: SPR-16968
2018-06-28 10:28:44 +02:00
Phillip Webb
866e9d702e
Use consistent block style
...
Update all code to use a consistent block style.
Issue: SPR-16968
2018-06-28 10:28:44 +02:00
Phillip Webb
e9d1b39aff
Apply consistent copyright header
...
Add copyright header to `package-info.java` files and fix a few
malformed headers on existing java files.
Issue: SPR-16968
2018-06-28 10:28:44 +02:00
Phillip Webb
c3a17dfd47
Ensure all files end with a newline
...
Update all files to ensure that they always end with a new line.
Issue: SPR-16968
2018-06-28 10:28:44 +02:00
Phillip Webb
e0480f75ac
Fix javadoc checkstyle issues
...
Fix checkstyle violations for javadoc.
Issue: SPR-16968
2018-06-28 10:28:44 +02:00
Juergen Hoeller
bba5dcaab3
AspectJExpressionPointcut evaluates interface method on proxy as well
...
Issue: SPR-16803
2018-05-16 00:43:51 +02:00
Juergen Hoeller
3917737df2
Polishing
2018-05-07 14:17:15 +02:00
Johnny Lim
fb898e1727
Remove inconsistent spaces
2018-05-05 11:07:35 +02:00
Juergen Hoeller
aa11721ff0
AopUtils.getMostSpecificMethod exposes dynamic proxy class methods
...
Includes efficient canApply check for IntroductionAwareMethodMatcher.
Issue: SPR-16757
2018-04-27 18:23:34 +02:00
Juergen Hoeller
de4ff4b1fc
Polishing
2018-04-14 21:02:53 +02:00
Juergen Hoeller
b95e05db04
AspectJExpressionPointcut consistently resolves superinterface methods
...
Includes efficient check for same ClassLoader in ClassUtils.isVisible, efficient MethodMatchers check for IntroductionAwareMethodMatcher, and supertype method resolution in MethodMapTransactionAttributeSource.
Issue: SPR-16723
2018-04-14 15:10:05 +02:00
Juergen Hoeller
a6885c7235
Polishing
2018-04-11 16:05:35 +02:00
Juergen Hoeller
61c3db0869
MethodHandles.Lookup.defineClass for CGLIB class definition purposes
...
Spring's CGLIB fork is patched with local copies of affected files here, introducing the notion of a "contextClass" (e.g. the proxy superclass) which gets passed through to ReflectUtils.defineClass for delegating to MethodHandles.Lookup.defineClass eventually, against a privateLookupIn(contextClass) lookup context on JDK 9/10/11.
Issue: SPR-15859
2018-04-11 12:47:55 +02:00
Juergen Hoeller
6102715b8d
Consistent treatment of proxy classes and interfaces for introspection
...
Issue: SPR-16675
Issue: SPR-16677
2018-04-03 02:42:41 +02:00
Juergen Hoeller
cc379f1cc7
Polishing
2018-04-01 12:57:19 +02:00
Juergen Hoeller
666037ec5c
Pointcut checking directly against superclass in case of CGLIB subclass
...
Issue: SPR-16675
2018-04-01 12:57:02 +02:00
Juergen Hoeller
6393e5ce0c
Consistent Ordered.LOWEST_PRECEDENCE declarations for default order
2018-03-31 00:20:44 +02:00
igor-suhorukov
93abe0e94b
All branches in a conditional structure should not have exactly the same implementation
2018-03-29 23:33:50 +02:00
igor-suhorukov
e6020ed377
avoid unnecessary autoboxing
2018-03-28 23:48:12 +02:00
Christoph Dreis
d3a0a8e007
Use Collection.removeIf() where possible ( #1747 )
...
Use Collection.removeIf() where possible
Issue: SPR-16622
2018-03-22 11:36:11 +01:00
Juergen Hoeller
50253f670e
Quick access to volatile field (full synchronization only for lazy init)
...
Issue: SPR-16570
2018-03-08 18:13:00 +01:00
Juergen Hoeller
139dc1d373
Polishing (collapsed if checks, consistent downcasts, refined javadoc)
2018-03-08 18:11:57 +01:00
igor-suhorukov
0f7485b01d
Polish: reorder the modifiers to comply with the Java Language Specification.
2018-03-08 17:57:47 +01:00
Juergen Hoeller
a19d4deb24
Polishing
2018-02-28 16:41:59 +01:00
Juergen Hoeller
9962df6527
Polishing
2018-02-28 00:09:15 +01:00
igor-suhorukov
49fd724d8f
Polish: String function use should be optimized for single characters
2018-02-25 20:48:47 +01:00
Juergen Hoeller
578c078082
Polishing
2018-02-22 15:14:20 +01:00
Juergen Hoeller
a5cbf5fe24
Consistent use of Collection.toArray with zero-sized array argument
...
Includes consistent use of ClassUtils.toClassArray (as non-null variant)
Issue: SPR-16523
2018-02-22 11:29:46 +01:00
Juergen Hoeller
8d3264f680
Prefer List.sort(Comparator) over Collections.sort(List, Comparator)
2018-02-16 10:23:18 +01:00
igor-suhorukov
2be4985b8f
Polish: anonymous inner classes containing only one method should become lambdas,
...
use getOrDefault instead of ternary operator
2018-02-16 09:38:19 +01:00
Juergen Hoeller
3b810f3544
Consistent Class array vs vararg declarations (and related polishing)
2018-02-14 14:44:00 +01:00
Juergen Hoeller
b449928691
Avoid unused arguments for internal delegates
2018-02-13 11:40:28 +01:00
Juergen Hoeller
b089ded5b0
Polishing
2018-02-12 15:55:18 +01:00
igor-suhorukov
9a6fbf59c5
Polish: follow name convention - make immutable fields final
2018-02-10 12:09:19 +01:00
Juergen Hoeller
0a06bce3a6
Relaxed BeanFactory assertion in resolveInterceptorNames
...
Issue: SPR-16347
2018-01-07 23:23:25 +01:00
nkjackzhang
ec6eed6c63
Polish Javadoc
...
Closes gh-1627
2017-12-23 14:19:56 +01:00
Juergen Hoeller
4577a19190
Upgrade to Commons Pool 2.5 (and Jackson Kotlin Module 2.9.3)
2017-12-21 13:52:00 +01:00
Juergen Hoeller
996d747aed
Upgrade to Mockito 2.11
...
Includes fixes for invalid exception declarations in Mockito-based unit tests. Also includes FreeMarker 2.3.27, Commons Pool 2.4.3, JSON-P 1.1.2.
Issue: SPR-16157
2017-11-04 01:06:59 +01:00
Juergen Hoeller
a4b2ae583e
Expose AspectJ 1.8.11 in POMs (and use it for all tests)
...
Issue: SPR-15974
2017-09-27 01:34:02 +02:00
Juergen Hoeller
ac45aa2022
Upgrade to AspectJ 1.9 beta 7 (with 1.8.10 exposed in POMs)
...
Issue: SPR-15974
2017-09-25 13:50:50 +02:00
Juergen Hoeller
9190b76ab9
Latest dependency updates (POI 3.17, Rome 1.8, EhCache 3.4, Caffeine 2.5.6, RxJava 2.1.4, Tomcat 8.5.21, JRuby 9.1.13, Rhino 1.7.7.2)
2017-09-23 11:28:19 +02:00
Juergen Hoeller
7ae59d0c2a
Nullability refinements on private and static methods
...
Based on IntelliJ IDEA 2017.3 introspection results.
Issue: SPR-15756
2017-09-22 18:22:14 +02:00
Sebastien Deleuze
1bc93e3d0f
Revisit nullability annotations
...
This commit introduces the following changes.
1) It adds a new Spring @NonNull annotation which allows to apply
@NonNullApi semantic on a specific element, like @Nullable does.
Combined with @Nullable, it allows partial null-safety support when
package granularity is too broad.
2) @Nullable and @NonNull can apply to ElementType.TYPE_USE in order
to be used on generic type arguments (SPR-15942).
3) Annotations does not apply to ElementType.TYPE_PARAMETER anymore
since it is not supported yet (applicability for such use case is
controversial and need to be discussed).
4) @NonNullApi does not apply to ElementType.FIELD anymore since in a
lot of use cases (private, protected) it is not part for the public API
+ its usage should remain opt-in. A dedicated @NonNullFields annotation
has been added in order to set fields default to non-nullable.
5) Updated Javadoc and reference documentation.
Issue: SPR-15756
2017-09-15 13:26:41 +02:00
Brian Clozel
2eeb428e95
Move modules to independent build files
...
The main `build.gradle` file contains now only the common build
infrastructure; all module-specific build configurations have
been moved to their own build file.
Issue: SPR-15885
2017-08-21 14:41:55 +02:00
Juergen Hoeller
47a7475898
Resolve remaining nullability warnings
...
Issue: SPR-15869
2017-08-18 00:15:46 +02:00
Sebastien Deleuze
73cf07e9a4
Fix overridden methods nullability
...
Issue: SPR-15869
2017-08-17 15:02:59 +02:00
Sebastien Deleuze
1e07468d20
Prevent warning about final private methods in CglibAopProxy
...
Issue: SPR-15820
2017-07-26 15:57:57 +02:00
Juergen Hoeller
6d6d772f31
Polishing
2017-07-20 00:14:56 +02:00
Juergen Hoeller
118d1470fd
Ignore (Auto)Closeable for interface-based proxy decisions
...
Issue: SPR-15779
2017-07-19 22:40:45 +02:00
Juergen Hoeller
ac1d3b22c9
Polishing
2017-07-19 22:22:27 +02:00
Juergen Hoeller
46eba3dbfa
Nullability fine-tuning around declaration inconsistencies
...
Issue: SPR-15720
Issue: SPR-15792
2017-07-19 22:22:20 +02:00
Sebastien Deleuze
fb4ddb0746
Make getters and setters null-safety consistent
...
This commit ensure that null-safety is consistent between
getters and setters in order to be able to provide beans
with properties with a common type when type safety is
taken in account like with Kotlin.
It also add a few missing property level @Nullable
annotations.
Issue: SPR-15792
2017-07-19 09:07:56 +02:00
Juergen Hoeller
c292a89b24
Http(Async)Client not actually nullable, plus MethodInterceptor nullability
...
Issue: SPR-15720
2017-07-19 00:15:37 +02:00
Juergen Hoeller
57f961e36b
No nullability declarations in AOP Alliance sources
...
Issue: SPR-15720
2017-07-14 15:10:20 +02:00
Juergen Hoeller
6d7612e052
AbstractTraceInterceptor provides logExceptionStackTrace flag and writeToLog delegates
...
Issue: SPR-15763
(cherry picked from commit aa0d7a6
)
2017-07-13 13:19:40 +02:00
Juergen Hoeller
19a8efc717
Revised assertions and $[invocationTime] support for exceptionMessage
...
Issue: SPR-15763
2017-07-12 19:13:12 +02:00
Stephane Nicoll
6e5e5913d7
Polish contribution
...
Closes gh-1469
2017-07-12 17:24:17 +02:00
tianjunwei
03b409f891
Use dedicated addAdvisors
...
See gh-1469
2017-07-12 17:22:26 +02:00
Juergen Hoeller
cc74a2891a
@Nullable all the way: null-safety at field level
...
This commits extends nullability declarations to the field level, formalizing the interaction between methods and their underlying fields and therefore avoiding any nullability mismatch.
Issue: SPR-15720
2017-06-30 01:54:16 +02:00
Juergen Hoeller
87430f3cd3
ListenableFuture provides CompletableFuture adaptation via completable()
...
Issue: SPR-15696
2017-06-27 00:43:37 +02:00
Stephane Nicoll
58242f2249
Polish
2017-06-13 10:13:14 +02:00
Stephane Nicoll
fc64b8040f
Polish "Replace relevant code with lambda"
...
Closes gh-1454
2017-06-13 09:42:20 +02:00
diguage
4b1478d830
Replace relevant code with lambda
...
See gh-1454
2017-06-13 08:55:38 +02:00
Juergen Hoeller
738160538e
TargetSource.getTarget() is nullable again (for compatibility with MethodInvocation.getThis)
...
Issue: SPR-15651
2017-06-13 03:11:36 +02:00
Juergen Hoeller
47ec966757
TargetSource.getTarget() is nullable again (for compatibility with MethodInvocation.getThis)
...
Issue: SPR-15651
2017-06-12 22:54:18 +02:00
Juergen Hoeller
fd53d2a51a
Consistent use of @Nullable in spring-test
...
This commit also removes nullability from two common spots: ResolvableType.getType() and TargetSource.getTarget(), both of which are never effectively null with any regular implementation. For such scenarios, a non-null empty type/target is the cleaner contract.
Issue: SPR-15540
2017-06-08 22:52:59 +02:00
Juergen Hoeller
f813712f5b
Consistent use of @Nullable across the codebase (even for internals)
...
Beyond just formally declaring the current behavior, this revision actually enforces non-null behavior in selected signatures now, not tolerating null values anymore when not explicitly documented. It also changes some utility methods with historic null-in/null-out tolerance towards enforced non-null return values, making them a proper citizen in non-null assignments.
Some issues are left as to-do: in particular a thorough revision of spring-test, and a few tests with unclear failures (ignored as "TODO: NULLABLE") to be sorted out in a follow-up commit.
Issue: SPR-15540
2017-06-07 14:19:15 +02:00
Sebastien Deleuze
b47d713e14
Add missing @Nullable annotations on parameters
...
Issue: SPR-15540
2017-05-31 16:56:08 +02:00
Sebastien Deleuze
87598f48e4
Introduce null-safety of Spring Framework API
...
This commit introduces 2 new @Nullable and @NonNullApi
annotations that leverage JSR 305 (dormant but available via
Findbugs jsr305 dependency and already used by libraries
like OkHttp) meta-annotations to specify explicitly
null-safety of Spring Framework parameters and return values.
In order to avoid adding too much annotations, the
default is set at package level with @NonNullApi and
@Nullable annotations are added when needed at parameter or
return value level. These annotations are intended to be used
on Spring Framework itself but also by other Spring projects.
@Nullable annotations have been introduced based on Javadoc
and search of patterns like "return null;". It is expected that
nullability of Spring Framework API will be polished with
complementary commits.
In practice, this will make the whole Spring Framework API
null-safe for Kotlin projects (when KT-10942 will be fixed)
since Kotlin will be able to leverage these annotations to
know if a parameter or a return value is nullable or not. But
this is also useful for Java developers as well since IntelliJ
IDEA, for example, also understands these annotations to
generate warnings when unsafe nullable usages are detected.
Issue: SPR-15540
2017-05-27 08:57:01 +02:00
Juergen Hoeller
3cc94ae8b5
Consistently accept "taskExecutor" bean of type Executor (as stated in @EnableAsync's javadoc)
...
Issue: SPR-15566
2017-05-25 23:37:02 +02:00
Juergen Hoeller
0183576215
Polishing
2017-05-23 22:05:22 +02:00
Juergen Hoeller
6c43d14a77
Async annotations on interface methods with CGLIB proxies
...
Issue: SPR-14949
2017-04-26 18:16:40 +02:00
John Ryan
33d7816de3
Remove extraneous asterisk
...
Closes gh-1397
2017-04-21 09:48:03 +02:00
Juergen Hoeller
43e806c733
Refined log message for interface-implementing method
...
Issue: SPR-15436
(cherry picked from commit 665e6cf
)
2017-04-17 19:47:24 +02:00
Juergen Hoeller
0d0b879a23
CglibAopProxy logs explicit warning for interface-implementing method marked as final
...
Issue: SPR-15436
2017-04-17 15:02:13 +02:00
Juergen Hoeller
9abf249cee
Explicitly replace target ApplicationListener with singleton proxy, if any (avoiding double registration/invocation)
...
Issue: SPR-15452
2017-04-15 14:10:28 +02:00
Stephane Nicoll
bf6e7d0c26
Update copyright header
...
Closes gh-1382
2017-04-09 09:47:16 +02:00
John S. Ryan
9287bbb91a
Fix typo in AfterReturningAdviceInterceptor JavaDoc
...
See gh-1382
2017-04-09 09:45:46 +02:00
Juergen Hoeller
67ea4b3a05
package-info for repackaged libraries (and other polishing)
2017-04-06 14:10:46 +02:00
Juergen Hoeller
f4de1ea147
Polishing
2017-02-22 15:32:19 +01:00
Juergen Hoeller
5f531a7a7d
Comparators entry point with generically typed factory methods
...
Issue: SPR-14779
2017-02-15 18:05:32 +01:00
Juergen Hoeller
1b2dc3638f
Revisit Assert to avoid single-arg assert methods (with refined messages)
...
Issue: SPR-15196
2017-01-30 22:15:55 +01:00
Juergen Hoeller
ed40b1c8ee
Remove outdated abstractions/delegates from core/util
...
Issue: SPR-15159
2017-01-23 13:41:55 +01:00
Juergen Hoeller
fc629bb508
Polishing
2016-12-29 22:39:36 +01:00
Juergen Hoeller
209e7a700d
Avoid FactoryBean initialization on isSingleton check for decorated bean definition
...
Issue: SPR-14892
Issue: SPR-15042
2016-12-28 17:27:06 +01:00
Juergen Hoeller
a8741dd371
Polishing
2016-12-26 11:26:58 +01:00
Juergen Hoeller
f51fe5fd39
Polishing
2016-12-23 12:27:07 +01:00
Juergen Hoeller
d64d9ab370
Consistent ClassLoader propagation and ConcurrentHashMap setup for AspectJ pointcuts
...
Issue: SPR-15040
2016-12-22 17:00:04 +01:00
Juergen Hoeller
97ea22cb4a
Defensively catch any exception from match attempts (for compatibility with AspectJ 1.8.10)
...
Issue: SPR-15019
2016-12-20 12:17:51 +01:00
Juergen Hoeller
3370f41c61
Defensively catch IllegalStateException from match attempts (for compatibility with AspectJ 1.8.10)
...
Issue: SPR-15019
2016-12-14 22:06:13 +01:00
Juergen Hoeller
6d1cae2f57
Avoid proxy replacement for generic return type signatures
...
Issue: SPR-15010
2016-12-14 22:00:41 +01:00
Juergen Hoeller
84d3808b3b
Upgrade to Mockito 2.2
...
Issue: SPR-14880
2016-11-03 22:53:35 +01:00
Juergen Hoeller
36332441ae
DefaultListableBeanFactory allows early type matching against ScopedProxyFactoryBean
...
Issue: SPR-14816
2016-10-28 23:37:58 +02:00
Juergen Hoeller
5ac5ec1046
No external locking for singleton advice/aspect beans
...
Issue: SPR-14324
2016-10-28 23:35:01 +02:00
Juergen Hoeller
3726c6f18d
Polishing
2016-10-21 12:26:27 +02:00
Juergen Hoeller
cfa0f6c84b
Consistent final logger fields
2016-10-04 23:00:36 +02:00
Juergen Hoeller
ab0d523cc0
Polishing
...
(cherry picked from commit 1932a9d
)
2016-08-17 21:54:40 +02:00
Juergen Hoeller
214c919742
AspectJ bean pointcut supports qualifier match
...
Issue: SPR-11217
2016-08-17 00:43:41 +02:00
Juergen Hoeller
b9ab895743
Inferred generics for newSetFromMap arrangements
...
Issue: SPR-13188
2016-07-26 21:26:31 +02:00
Juergen Hoeller
e03dea1d64
Polishing
2016-07-26 17:15:19 +02:00
Juergen Hoeller
0e3f0bd9d0
Avoid JDK proxy against CGLIB Factory interface and assert required type when resolving dependency
...
Issue: SPR-14478
2016-07-20 18:05:51 +02:00
Juergen Hoeller
a4743c07d4
Polishing
2016-07-19 20:09:00 +02:00
Juergen Hoeller
88fcd0a2ed
Framework build compatible with JDK 9 (tests running against java.base module)
...
Issue: SPR-13344
2016-07-19 19:37:34 +02:00
Juergen Hoeller
aaac199e8b
Consistently use constructor-based instantiation instead of Class.newInstance / BeanUtils.instantiate
...
Issue: SPR-14486
2016-07-19 19:21:06 +02:00
Juergen Hoeller
a1f5fb53db
Java 8 getParameterCount() instead of getParameterTypes().length
...
Issue: SPR-13188
2016-07-07 01:04:24 +02:00
Stephane Nicoll
e4b0486c5a
Add @FunctionalInterface on candidate interfaces
...
Issue: SPR-14432
2016-07-06 14:32:13 +02:00
Juergen Hoeller
bc2c22d51e
Streamline XML namespace support towards unversioned schemas
...
This commit also removes support code for outdated options which were only available in older schema versions.
Issue: SPR-13499
2016-07-05 20:50:03 +02:00
Juergen Hoeller
acdb43f470
Remove remaining JRuby and Commons Pool test resources
...
Issue: SPR-14429
2016-07-05 20:47:39 +02:00
Sam Brannen
1391248ea6
Introduce log4j 2 for Spring's test suite
...
This commit adds a test runtime dependency on log4j 2 for every project
and migrates all log4j.properties files to log4j2-test.xml files.
Issue: SPR-14431
2016-07-05 19:19:09 +02:00
Stephane Nicoll
00d2606b00
Explicit type can be replaced by <>
...
Issue: SPR-13188
2016-07-05 17:00:34 +02:00
Juergen Hoeller
0fc0ce78ae
Drop deprecated dependencies on Log4j, JRuby, JExcel, Burlap, Commons Pool/DBCP
...
This commit also removes outdated support classes for Oracle, GlassFish, JBoss.
Issue: SPR-14429
2016-07-05 15:46:53 +02:00
Juergen Hoeller
51252ebbca
Avoid defensive checks against Java 8 API (java.util.Optional etc)
...
This commit also fixes broken javadoc links and code references.
Issue: SPR-13188
2016-07-05 02:09:00 +02:00
Juergen Hoeller
fd9d518c36
Avoid potential deadlock in AbstractBeanFactoryPointcutAdvisor
...
Issue: SPR-14388
2016-06-22 14:41:20 +02:00
Juergen Hoeller
8cb9d5ebae
EnableAspectJAutoProxy features exposeProxy flag (analogous to XML namespace)
...
Issue: SPR-10454
2016-06-20 13:50:04 +02:00
Juergen Hoeller
162aedccbe
Polishing
2016-05-04 17:02:16 +02:00
Juergen Hoeller
e6e3ca3e96
LazySingletonAspectInstanceFactoryDecorator uses shared singleton mutex
...
Issue: SPR-14241
2016-05-04 09:03:28 +02:00
Johnny Lim
44e652f99e
Remove duplicate words
...
Closes gh-1039
2016-04-19 08:24:21 +02:00
Juergen Hoeller
999112216d
AopUtils.canApply properly matches package-visible methods (aligned with advice matching within proxies)
...
Also, AbstractAutoProxyCreator considers Pointcut as infrastructure class, analogous to Advice and Advisor.
Issue: SPR-14174
2016-04-14 21:46:25 +02:00
Juergen Hoeller
54aeb7a5d6
Cache key classes implement Comparable and consistently provide a toString representation
...
Issue: SPR-14017
2016-03-26 14:32:10 +01:00
Juergen Hoeller
517ebd1d3e
Consistent formatting
2016-03-24 19:22:50 +01:00
Juergen Hoeller
6e3fac85f3
AnnotationAwareOrderComparator uses DecoratingProxy interface for target class introspection
...
Issue: SPR-13884
2016-03-18 22:12:10 +01:00
Juergen Hoeller
f2f87ff1e0
Explicit javadoc references to BeanFactory-based default executor lookup
...
Issue: SPR-14030
2016-03-11 23:52:31 +01:00
Juergen Hoeller
155fa3754b
Consistent lazy resolution of default executor/scheduler for Async/ScheduledAnnotationBeanPostProcessor
...
Issue: SPR-14030
2016-03-11 23:23:58 +01:00
Juergen Hoeller
ab16053ed4
Redistribute AOP Alliance interfaces in spring-aop again (as in Spring 2.x)
...
Issue: SPR-13984
2016-02-26 12:40:00 +01:00
Juergen Hoeller
470ea977e1
Consistent validation of annotated methods behind AOP proxies
...
Issue: SPR-13816
2015-12-23 20:47:28 +01:00
Juergen Hoeller
1cfeb07fa5
Consistent use of varargs plus related polishing
...
(cherry picked from commit deae872
)
2015-12-23 00:31:11 +01:00
Juergen Hoeller
4adb7e2500
AOP proxies with annotation-based aspects are serializable now
...
Issue: SPR-6910
2015-12-22 21:20:33 +01:00
Stephane Nicoll
752d3c715a
Initiate structure for 4.3 XSDs
2015-12-17 15:43:23 +01:00
Juergen Hoeller
753347ea98
Consistent static final logger declarations
2015-12-16 20:44:00 +01:00
Juergen Hoeller
11806b9215
Class identity comparisons wherever possible (and further polishing)
...
Issue: SPR-12926
2015-12-09 12:28:09 +01:00
Juergen Hoeller
20a286b4d6
ASM ClassWriter uses application ClassLoader for its getCommonSuperClass check
...
Issue: SPR-13695
2015-11-24 17:38:02 +01:00
Sam Brannen
de9c030ba1
Suppress warnings in Gradle build
2015-11-17 14:10:35 +01:00
Juergen Hoeller
4b2ce60d65
Polishing
2015-11-13 08:31:13 +01:00
Juergen Hoeller
98be36a306
Extended default collection size for common per-bean caches
...
Issue: SPR-13621
2015-11-13 08:31:00 +01:00
Juergen Hoeller
7b711c4aac
AbstractAutoProxyCreator uses prefixed bean name as cache key
...
Issue: SPR-13655
2015-11-13 08:26:43 +01:00
Juergen Hoeller
90c9d96a4d
Avoid exposeTargetClass attempt if bean name is null
...
Issue: SPR-13650
2015-11-13 08:23:15 +01:00
Johnny Lim
2defb6555e
Fix broken Javadoc related to `<` and `>`
2015-11-12 11:22:08 +01:00
Juergen Hoeller
d5efe4f983
Detect event listener methods behind interface proxies as well
...
Issue: SPR-13650
2015-11-09 15:00:03 +01:00
Juergen Hoeller
400749667a
Polishing
2015-10-26 23:10:33 +01:00
Juergen Hoeller
8c4b8d253a
Auto-adapt reflective arguments in case of vararg array type mismatch
...
Issue: SPR-13328
2015-10-26 22:43:37 +01:00
Sam Brannen
d5ee787e1e
Migrate JUnit 3 tests to JUnit 4
...
This commit migrates all remaining tests from JUnit 3 to JUnit 4, with
the exception of Spring's legacy JUnit 3.8 based testing framework that
is still in use in the spring-orm module.
Issue: SPR-13514
2015-09-27 21:17:51 +02:00
Sam Brannen
d91806d7ab
Suppress warnings in Gradle build
2015-09-24 19:56:10 +02:00
Juergen Hoeller
a8432bc8a1
Tests for enum array with varargs (and related refinements)
...
Issue: SPR-13328
2015-09-08 11:13:23 +02:00
Kazuki Shimizu
9524f96405
Fix default value of CommonsPool2TargetSource#maxWait
...
Issue: SPR-13350
2015-08-14 16:34:32 +02:00
Stephane Nicoll
a3f39d5257
Add missing 4.2 XSDs
...
Issue: SPR-13300
2015-08-01 09:50:36 +02:00
Juergen Hoeller
edd6e76b9f
Polishing
2015-07-21 22:58:34 +02:00
Juergen Hoeller
2934256257
Polishing
2015-07-15 00:08:11 +02:00
Juergen Hoeller
dd4bc630c3
Common code in AsyncExecutionAspectSupport allows for CompletableFuture processing with AspectJ as well
...
Issue: SPR-13128
2015-06-22 00:29:44 +02:00
Juergen Hoeller
600e5915b4
ObjenesisCglibAopProxy defensively catches Throwable
...
Issue: SPR-13131
2015-06-17 17:03:01 +02:00
Juergen Hoeller
9f64230131
TransactionAttributeSourcePointcut pointcut skips target classes with TransactionalProxy marker (e.g. Spring Data proxies)
...
This 4.2 commit also makes TransactionProxyFactoryBean expose the TransactionalProxy marker and refines SpringProxy marker handling.
Issue: SPR-13109
2015-06-17 13:02:26 +02:00
Juergen Hoeller
92f1754b1e
Fixed fallback mode in ObjenesisCglibAopProxy, plus consistent support for bypassing Objenesis (e.g. on Google App Engine)
...
This 4.2 commit revises SpringObjenesis towards a smart delegate, including support for a "spring.objenesis.ignore" system property.
Issue: SPR-13131
2015-06-16 22:01:37 +02:00
Juergen Hoeller
c41779f895
AsyncExecutionInterceptor supports Java 8's CompletableFuture as a return type
...
Issue: SPR-13128
2015-06-15 20:35:48 +02:00
Juergen Hoeller
75edb3979e
AspectJExpressionPointcut defensively catches exceptions thrown from ShadowMatch.matchesJoinPoint
...
Issue: SPR-13102
2015-06-11 14:44:19 +02:00
Stephane Nicoll
e8441edcb7
Remove commons pool 2.x workaround
...
While working on SPR-12532, an extra IdentityWrapper was added to work
around a backward compatible issue between commons pool 1.x and 2.x. This
issue (POOL-283) has actually been fixed in 2.4 and their IdentityWrapper
is using object equality so our wrapper is in the way.
Looking retrospectively, the code looks all fine without the workaround
and commons pool 2.4 or later so it has been removed.
2015-06-05 16:41:21 +02:00
Juergen Hoeller
d195ad216a
Polishing
2015-06-04 23:27:40 +02:00
Juergen Hoeller
9410dff99c
AsyncResult allows for exposing an execution exception
...
Issue: SPR-13076
2015-06-04 23:25:18 +02:00
Stephane Nicoll
3d86f15a84
Merge BeanWrapperImpl and DirectFieldAccessor
...
`BeanWrapperImpl` and `DirectFieldAccessor` are two
`ConfigurablePropertyAccessor` implementations with different features
set.
This commit harmonizes the two implementations to use a common base class
that delegates the actual property handling to the sub-classes:
* `BeanWrapperImpl`: `PropertyDescriptor` and introspection utilities
* `DirectFieldAccessor`: reflection on `java.lang.Field`
Issues: SPR-12206 - SPR-12805
2015-05-21 13:49:55 +02:00
Juergen Hoeller
b4095c3e1d
Class identity comparisons wherever possible
...
Issue: SPR-12926
2015-05-20 14:34:16 +02:00
Sam Brannen
1f54ba001b
Polish Javadoc for AopUtils, Advised, & related classes
2015-05-09 20:32:27 +02:00
Juergen Hoeller
dbd82d128d
Polishing
2015-05-07 20:18:17 +02:00
Juergen Hoeller
e1395a6c68
Avoid repeated exposure of SpringProxy/Advised for fallback interfaces as well
...
Issue: SPR-12870
2015-04-01 18:54:47 +02:00
Juergen Hoeller
f9c2d1d171
DefaultAopProxyFactory falls back to JdkDynamicAopProxy when encountering JDK proxy as target
...
Issue: SPR-12870
2015-03-31 16:15:22 +02:00
Juergen Hoeller
bc6a98c144
Polishing (in particular updating javadoc references to Apache Commons)
2015-03-13 18:19:10 +01:00
Juergen Hoeller
13659d645b
Consistent support for @Order annotation as alternative to Ordered interface
...
Issue: SPR-12806
2015-03-13 18:18:33 +01:00
Stephane Nicoll
8f8a85912a
Call AsyncUncaughtExceptionHandler when necessary
...
If a sub-class of Future (such as ListenableFuture) is used as a return
type and an exception is thrown, the AsyncUncaughtExceptionHandler is
called. Now checking for any Future implementation instead of a faulty
strict matching.
Issue: SPR-12797
2015-03-09 09:57:53 +01:00
Juergen Hoeller
ee74fe6c27
Latest dependency updates (HttpClient 4.4, TestNG 6.8.21, SnakeYAML 1.15, FreeMarker 2.3.22, JRuby 1.7.19, JAMon 2.81, JiBX 1.2.6, XMLUnit 1.6, JsonPath 1.2)
2015-03-02 20:00:17 +01:00
Stephane Nicoll
babbf6e871
Harmonize resources location
...
Issue: SPR-12766
2015-02-28 10:32:40 +01:00
Juergen Hoeller
287045ef74
Allow for shared Objenesis caching in ObjenesisCglibAopProxy
...
Issue: SPR-12755
2015-02-26 18:34:52 +01:00
Stephane Nicoll
44075d7205
Add missing test
...
Add test that wasn't committed because it matches the ignore list.
2015-02-25 13:29:10 +01:00
Stephane Nicoll
aabf73dea4
Add Commons Pool 2 support
...
Deprecated CommonsPoolTargetSource (supporting commons pool 1.5+) in
favor of CommonsPool2TargetSource with a similar contract.
Commons Pool 2.x uses object equality while Commons Pool 1.x used
identity equality. This clearly means that Commons Pool 2 behaves
differently if several instances having the same identity according to
their `Object#equals(Object)` method are managed in the same pool. To
provide a smooth upgrade, a backward-compatible pool is created by
default; use `setUseObjectEquality(boolean)` if you need the standard
Commons Pool 2.x behavior.
Issue: SPR-12532
2015-02-19 13:07:04 +01:00
John Tims
4c00a3b4c8
fix javadoc typo
2015-02-12 08:43:01 +01:00
Juergen Hoeller
9ac02b319d
Remove pre-3.2 deprecated classes and methods
...
Issue: SPR-12578
2014-12-30 20:05:15 +01:00
Juergen Hoeller
86b8112c90
Polishing
2014-12-29 15:13:40 +01:00
Stephane Nicoll
cae217de94
Handle scoped proxy properly in MBeanExporter
...
Previously, if a bean has a scoped proxy and is annotated to be exposed
to the JMX domain, both the scoped proxy and the target instance were
exposed in the JMX domain, resulting in a duplicate entries. Worse, if
such bean defines an explicit name, the application wouldn't start
because of a name conflict.
This commit deals explicitely with scoped proxy and make sure to only
expose the relevant bean.
Issue: SPR-12529
2014-12-23 16:03:52 +01:00
Juergen Hoeller
1146d5ba1d
Polishing
2014-10-29 22:44:59 +01:00
Juergen Hoeller
8325b10080
Consistent formatting of license headers, package javadocs, and import declarations
2014-10-21 01:44:07 +02:00
Juergen Hoeller
fb08644e46
ExposeInvocationInterceptor declares itself as PriorityOrdered now
...
Issue: SPR-12351
2014-10-20 15:45:09 +02:00
Juergen Hoeller
5a631177ff
Consistent use of LinkedHashSet for interfaces (since interface order may matter in subtle cases)
2014-10-07 16:37:59 +02:00
Juergen Hoeller
9d832816a8
Further locking optimizations for the retrieval of non-singleton beans
...
Issue: SPR-12250
2014-10-06 17:42:51 +02:00
Juergen Hoeller
98eb0f75bc
Polishing
2014-09-02 22:15:53 +02:00
Juergen Hoeller
51e4b07856
JamonPerformanceMonitorInterceptor tracks exceptions as well (consistent with JAMon's other interceptors)
...
Issue: SPR-12068
2014-08-18 21:50:24 +02:00
Stephane Nicoll
8fc191c95e
Apply AsyncUncaughtExceptionHandler to AspectJ
...
Prior to this commit, only @Async annotated methods with proxy style
had their custom uncaught exception handler applied. This commit
harmonizes the configuration so that AspectJ applies that behaviour as
well.
Issue: SPR-12090
2014-08-18 10:51:21 +02:00
Juergen Hoeller
ad475ffadf
Consistent vararg declarations for String array setters
2014-08-08 17:17:09 +02:00
Stephane Nicoll
3da68cfe21
Remove unused imports
2014-08-04 14:13:40 +02:00
Stephane Nicoll
9fe7780865
Revert accidental class name change
2014-07-30 08:53:14 +02:00
Kang Baek-kyu
c7babab2dd
Fix javadoc typo
2014-07-30 08:47:01 +02:00
Juergen Hoeller
9d6c38bd54
Consistent bracket alignment
2014-07-18 17:21:58 +02:00
Stephane Nicoll
b676c41805
Add missing 4.1 XSDs
...
This commit adds the missing 4.1 XSDs for the following components:
* spring-aop
* spring-context
* spring-jee
* spring-lang
* spring-tx
* spring-util
These are strictly identical to the definition of the 4.0 XSDs.
Issue: SPR-11990
2014-07-14 17:59:54 +02:00
Juergen Hoeller
442bd682a7
Polishing
...
Issue: SPR-11910
2014-06-26 18:14:51 +02:00
Juergen Hoeller
a9b650fd0f
DefaultAdvisorChainFactory never passes null into ClassFilter, enabling async advisor to work without target class as well
...
Issue: SPR-11910
2014-06-26 18:12:44 +02:00
Juergen Hoeller
46dc07a005
AsyncExecutionInterceptor uses submitListenable if method signature indicates ListenableFuture
...
Issue: SPR-11909
2014-06-26 15:19:17 +02:00
Juergen Hoeller
18131bf611
Consistent declaration of private static final logger variables
...
Issue: SPR-11905
2014-06-24 14:02:05 +02:00
Juergen Hoeller
03ce4a5024
Polishing
2014-05-20 00:31:24 +02:00
Juergen Hoeller
7230d6a1aa
Polishing
2014-05-15 17:07:13 +02:00
Juergen Hoeller
b0f0d2f289
Polishing
2014-05-15 14:39:06 +02:00
Juergen Hoeller
1b2014a52d
AbstractAutoProxyCreator and AbstractAdvisingBeanPostProcessor consistently not considering configuration callbacks and internal language interfaces as reasonable proxy interfaces
...
Issue: SPR-11715
2014-04-29 19:07:29 +02:00
Juergen Hoeller
a0658c5832
AbstractAdvisingBeanPostProcessor uses target class check for existing proxy but checks against actual exposed object otherwise (catching introductions)
...
Issue: SPR-11725
2014-04-29 15:44:55 +02:00
Juergen Hoeller
be5f2a8b4e
Polishing
2014-04-28 23:37:07 +02:00
Juergen Hoeller
ce4912b627
AspectJExpressionPointcut defensively handles fallback expression parsing
...
Issue: SPR-9335
2014-04-28 21:49:36 +02:00
Juergen Hoeller
9353332a61
Polishing
2014-04-23 23:55:43 +02:00
Philippe Marschall
fc3df29b2e
Clean up spring-aop tests warnings
...
Clean up compiler warnings in the tests of spring-aop. This commit
adds type parameters to all the types.
2014-04-22 07:27:43 +02:00
Sam Brannen
a0b6175d78
Update doc for DefaultAopProxyFactory re: CGLIB
2014-04-21 11:11:14 -04:00
Juergen Hoeller
90309ab0b5
CglibAopProxy detects package-visible methods when defined in a different ClassLoader
...
Issue: SPR-11618
2014-04-16 18:07:10 +02:00
Stephane Nicoll
db23ec733b
Add exception handling of asynchronous method
...
Prior to this commit, an exception thrown by an @Async void method
was not further processed as there is no way to transmit that
exception to the caller.
The AsyncUncaughtExceptionHandler is a new strategy interface that
can be implemented to handle unexpected exception thrown during the
invocation of such asynchronous method.
The handler can be specified using either the XML namespace or by
implementing the AsyncConfigurer interface with the EnableAsync
annotation.
Issue: SPR-8995
2014-04-02 15:04:40 +02:00
Stephane Nicoll
dcf5f4a6a3
javax.annotation.Priority alternative to @Order
...
This commit rationalizes the use of @Order so that the standard
@Priority annotation can be used instead. The handling of both
annotations are now defined in OrderUtils.
This also updates the link to the JavaEE API so that we refer to
JavaEE7 instead of JavaEE6.
Issue: SPR-11639
2014-04-01 14:30:47 +02:00
Stephane Nicoll
4cd818b9e4
Harmonize log configuration
...
Prior to this commit, the codebase was using a mix of log4j.xml
and log4j.properties for test-related logging configuration. This
can be an issue as log4j takes the xml variant first when looking
for a default bootstrap configuration.
In practice, some modules declaring the properties variant were
taking the xml variant configuration from another module.
The general structure of the configuration has also been
harmonized to provide a standard console output as well as an
easy way to enable trace logs for the current module.
2014-03-20 09:43:29 -07:00
Juergen Hoeller
189cd663c5
Polishing
2014-03-15 00:46:06 +01:00
Juergen Hoeller
949338009b
Ignore container callback and marker interfaces for auto-proxy decisions
...
Issue: SPR-11416
2014-02-12 00:01:20 +01:00
Sam Brannen
1f778530b5
Polish test classes
...
- Consistent importing of org.junit.Assert.*;
- Proper declaration of expected exceptions via @Test(expected).
- Renamed SpEL ExpressionTestCase to AbstractExpressionTests.
- Formatting and test method naming conventions.
2014-02-08 17:24:11 +01:00
Juergen Hoeller
8c4e372558
Introduced SpringNamingPolicy for CGLIB
...
Issue: SPR-11398
2014-02-06 20:25:11 +01:00
Juergen Hoeller
56b7d7a94a
Consistently declare @SuppressWarnings("serial") instead of dummy serialVersionUID
2014-01-26 00:11:11 +01:00
Juergen Hoeller
3310ab55e0
Polishing
...
Issue: SPR-11344
(cherry picked from commit d434ef9
)
2014-01-23 00:10:02 +01:00
Juergen Hoeller
6a6a23f0a3
Avoid class loading during AspectJ expression evaluation
...
Fixed through downcasting to AspectJ's ReflectionType and ReflectionBasedReferenceTypeDelegate, obtaining the myClass field there. We only fall back to regular class loading if we encounter any other kind of type.
Issue: SPR-11344
(cherry picked from commit c406c56
)
2014-01-23 00:06:43 +01:00
Juergen Hoeller
12c393eb6d
Switched 'order' attributes across namespaces to 'xsd:token'
...
Issue: SPR-10886
Issue: SPR-7342
2014-01-22 11:35:21 +01:00
Juergen Hoeller
f15a5fef8e
Fixed assert in setAspectJAdvisorFactory()
...
Issue: SPR-11330
2014-01-20 17:37:50 +01:00
Juergen Hoeller
675b650290
Polishing
2014-01-05 00:16:01 +01:00