Commit Graph

963 Commits

Author SHA1 Message Date
Juergen Hoeller
154ef8bf10 Polishing 2016-12-20 19:57:52 +01:00
Juergen Hoeller
12aa14ddbc Support @Nullable annotations as indicators for optional injection points
Issue: SPR-15028
2016-12-18 21:04:08 +01:00
Juergen Hoeller
39d2769bd0 Autodetect Kotlin nullability for optional injection points (analogous to java.util.Optional)
Built-in support in MethodParameter and DependencyDescriptor supersedes our separate KotlinUtils helper.

Issue: SPR-14951
2016-12-13 17:38:58 +01:00
Juergen Hoeller
e49813f2c4 Polishing 2016-12-12 22:49:40 +01:00
Juergen Hoeller
aef1460a64 TypeDescriptor properly narrows ResolvableType for non-typed collection elements
Issue: SPR-14971
2016-12-12 22:28:48 +01:00
Juergen Hoeller
7714eeccf3 MimeType parsing properly handles quoted semicolons
Issue:  SPR-14986
2016-12-09 15:04:26 +01:00
Juergen Hoeller
8ab977e7d1 Revised forClass argument names
Issue: SPR-14976
2016-12-08 18:28:03 +01:00
Juergen Hoeller
5458a427a1 Polishing 2016-11-30 22:31:47 +01:00
Juergen Hoeller
01868096a3 Consistent catching of Throwable for introspection failures
Issue: SPR-12889
2016-11-30 22:24:14 +01:00
Juergen Hoeller
f6b8b84df9 Efficient type plus annotation comparisons during converter retrieval
Issue: SPR-14926
Issue: SPR-12926
2016-11-30 22:22:44 +01:00
Rossen Stoyanchev
729551f375 Use full package names in ReactiveAdapterRegistry
The recent refactoring lead to
java.lang.NoClassDefFoundError: io/reactivex/Completable

where only RxJava 1 is in the classpath. Most likely due to the
lack of prefix in Completable::complete with rx package to avoid
the RxJava 2 reference.
2016-11-29 13:29:49 -05:00
Rossen Stoyanchev
5651c2180e Further refactoring of ReactiveAdapter/Registry
Simplify getAdapterFrom/To into a single getAdapter method that looks
for an exact match by type first and then isAssignableFrom.

Also expose shortcut methods in ReactiveAdapter to minimize the need
for access to the ReactiveTypeDescriptor.

Issue: SPR-14902
2016-11-28 12:43:22 -05:00
Rossen Stoyanchev
ac86acde53 ReactiveAdapterRegistry detects Reactor
The ReactiveAdapterRegistry now detects the presence of Reactor. In
practice Reactor is required for the Spring Framework reactive support
and it is expected to be present.

The registry however is now capable of being neutral if Reactor is not
present on the classpath for example where other Spring projects may
not have the same assumptions about Reactor's presence.

Issue: SPR-14902
2016-11-27 21:41:07 -05:00
Rossen Stoyanchev
52096ab8b9 Refactor ReactiveAdapter hierarchy
Collapse ReactiveAdapter hierarchy into a single class that simply
delegates to functions for converting to/from a Publisher.

A private ReactorAdapter extension automaticlaly wraps adapted,  "raw"
Publisher's as Flux or Mono depending on the semantics of the target
reactive type.

Issue: SPR-14902
2016-11-27 21:41:07 -05:00
Rossen Stoyanchev
e563326357 Polish ReactiveAdapterRegistry
Issue: SPR-14902
2016-11-27 21:41:07 -05:00
Rossen Stoyanchev
2e7d16df04 Improved reactive type descriptor support
ReactiveTypeDescriptor is now a top-level type with named constructors.
It also contains and provides a getter for the actual type.

Issue: SPR-14902
2016-11-27 21:41:07 -05:00
Sebastien Deleuze
a143b57d4b Polish Kotlin nullable support
This commit polishes Kotlin nullable support by reusing
MethodParameter#isOptional() instead of adding a new
MethodParameter#isNullable() method, adds
Kotlin tests and introduces Spring Web Reactive
support.

Issue: SPR-14165
2016-11-24 18:28:50 +01:00
Raman Gupta
fada91e538 Treat Kotlin nullable as non-required
Where `isOptional` is used, also check for `isNullable` i.e.
values are not considered required if they are Kotlin nullables:
- spring-messaging: named value method arguments
- spring-web: named value method arguments
- spring-webmvc: request parts

This means that Kotlin client code no longer has to explicity specify
"required=false" for Kotlin nullables -- this information is inferred
automatically by the framework.

Issue: SPR-14165
2016-11-24 17:18:55 +01:00
Juergen Hoeller
b22a59a0c4 Polishing 2016-11-24 15:32:06 +01:00
Juergen Hoeller
80931b211c Shared DefaultConversionService instance for simple fallback purposes
Issue: SPR-14948
2016-11-24 15:29:17 +01:00
Juergen Hoeller
b3e94dc747 PathMatchingResourcePatternResolver tries all root URLs (any file extension) as jar file
Issue: SPR-14936
2016-11-23 14:01:37 +01:00
Juergen Hoeller
89802cfc11 TypeDescriptor avoids merged annotations for equality comparisons
Issue: SPR-14926
Issue: SPR-14929
2016-11-23 12:25:01 +01:00
Juergen Hoeller
8662b7773c PathMatchingResourcePatternResolver converts manifest entries to absolute paths
Issue: SPR-14934
2016-11-22 16:05:30 +01:00
Juergen Hoeller
9bf4d7cf4e Polishing 2016-11-22 14:57:00 +01:00
Juergen Hoeller
85b0ce1ef7 Avoid defensive checks against java.time API
Issue: SPR-13188
2016-11-22 14:55:03 +01:00
Juergen Hoeller
3a29daac45 ASM-generated class names get interned for better memory allocation
Issue: SPR-14886
2016-11-08 17:38:57 +01:00
Juergen Hoeller
c44c607570 Consistent references to plain class names in exception messages
Issue: SPR-14883
2016-11-07 22:10:26 +01:00
Juergen Hoeller
b3cd1ad7f1 Refined throwing of BeanCreationExceptions (and reflection exceptions)
Issue: SPR-14883
2016-11-07 19:03:18 +01:00
Juergen Hoeller
cf479bf893 Consistent throwing of BeanCreationExceptions (and reflection exceptions)
Issue: SPR-14883
(cherry picked from commit b42d731)
2016-11-07 18:00:21 +01:00
Juergen Hoeller
be853d466b AnnotatedElementAdapter explicitly declares isAnnotationPresent method
Issue: SPR-14872
(cherry picked from commit 17863df)
2016-11-02 14:54:43 +01:00
Juergen Hoeller
61d7d1621b ASM-generated class names get interned for better memory allocation
Issue: SPR-14862
(cherry picked from commit d859826)
2016-10-31 12:28:29 +01:00
Juergen Hoeller
9659bc5fe7 ObjectToObjectConverter properly handles constructors on non-public classes
Issue: SPR-14304
2016-10-30 22:29:53 +01:00
Juergen Hoeller
ac80ac6f8b Consistent instanceof/casting of Class references 2016-10-30 21:40:27 +01:00
Juergen Hoeller
2f9ed5917b Polishing 2016-10-28 23:49:21 +02:00
Juergen Hoeller
bf9083d60f TypeDescriptor supports merged annotation lookups (for composable formatting annotations)
Issue: SPR-14844
2016-10-28 23:33:26 +02:00
Juergen Hoeller
20419d72ef Tightened StringValueResolver contract
Issue: SPR-14842
2016-10-28 15:28:42 +02:00
Sebastien Deleuze
2075932780 Add support for RxJava 2 Maybe type
Issue: SPR-14843
2016-10-25 16:49:22 +02:00
Arjen Poutsma
08931950f4 Add byte[] encoder and decoder
This commit adds a ByteArrayDecoder and ByteArrayEncoder.
2016-10-21 12:34:06 +02:00
Juergen Hoeller
3726c6f18d Polishing 2016-10-21 12:26:27 +02:00
Juergen Hoeller
be187babf9 ResolvableType equals/hashCode does not consider TypeProvider source
Issue: SPR-14826
2016-10-21 12:26:06 +02:00
Juergen Hoeller
f7d740fa69 ConversionService detects generic type declaration on target class behind proxy as well
Issue: SPR-14822
2016-10-21 12:24:12 +02:00
Juergen Hoeller
52b029d71d DefaultTransactionAttribute stores descriptor (method identification)
Issue: SPR-14760
2016-10-21 12:23:13 +02:00
Sebastien Deleuze
921bf5fb70 Use the official RxJava to Reactive Streams adapter
This commit removes the usage of Reactor adapters (about to
be moved from Reactor Core to a new Reactor Adapter module).
Instead, RxReactiveStreams is now used for adapting RxJava
1 and Flowable methods are used for RxJava 2.

Issue: SPR-14824
2016-10-20 15:08:05 +02:00
Violeta Georgieva
882b075fdf DefaultDataBuffer improvements
DefaultDataBuffer.grow(int):
- Copy only the remaining data
- Update readPosition/writePosition
2016-10-18 14:39:08 +03:00
Juergen Hoeller
ffc781b163 Explicit calls on Buffer base type (for compatibility with covariant return type on JDK 9's ByteBuffer)
Issue: SPR-14645
2016-10-05 00:10:06 +02:00
Sebastien Deleuze
dbc86ec043 Refine Jackson canEncode() / canDecode() implementation
This commit refine Jackson canEncode() / canDecode()
implementation by using ObjectMapper canSerialize() /
canDeserialize() methods.

Issue: SPR-14748
2016-09-27 23:59:44 +02:00
Juergen Hoeller
fb7ae010c8 Avoid unnecessary generics on emptyMap/Set/List 2016-09-26 18:04:49 +02:00
Juergen Hoeller
36f7c7a13e Clarified that getResource never returns null 2016-09-26 15:27:01 +02:00
Juergen Hoeller
74c618892e YamlPropertiesFactoryBean consistently exposes String values
Issue: SPR-14737
2016-09-25 21:05:40 +02:00
Juergen Hoeller
d94ce0a1b2 Avoid package dependency cycles 2016-09-20 22:41:11 +02:00