Commit Graph

15059 Commits

Author SHA1 Message Date
Brian Clozel
a06da0019f Remove PathPatternParser from PatternsRequestCondition
Since `PathPattern.combine` now returns another `PathPattern` instance
(it was previously returning a String instance), we can now safely
remove the parser instance included in `PatternsRequestCondition`.

Issue: SPR-15663
2017-07-18 11:40:30 +02:00
Rossen Stoyanchev
7a0e5a378a Update for reactor-core change 2017-07-18 04:09:25 +02:00
Rossen Stoyanchev
b0422d02dc Resource transformers use AsynchronousFileChannel
Issue: SPR-15773
2017-07-18 03:58:21 +02:00
Juergen Hoeller
bca5a36216 Explicit error message for bean name clash with containing configuration class
Issue: SPR-15775
2017-07-18 00:54:49 +02:00
Juergen Hoeller
12114a9d4c Consistent use of NIO.2 for file read/write interactions
Issue: SPR-15748
2017-07-18 00:54:41 +02:00
Rossen Stoyanchev
d56fedc226 Methods for reading a Resource in DataBufferUtils
Currently ResourceEncoder and ResourceRegionEncoder use DataBufferUtils
to read resource with an AsynchronousFileChannel if it is a file or
otherwise fallback on getting the channel from the resource.

The same is now required in other places where a Resource needs to be
read and is also generally useful.

Issue: SPR-15773
2017-07-17 12:25:25 +02:00
Rossen Stoyanchev
ee91e52c3a Polish 2017-07-17 11:39:32 +02:00
Rossen Stoyanchev
e2ee23bfc5 WebSession supports changeSessionId
Issue: SPR-15571
2017-07-17 11:09:38 +02:00
Rossen Stoyanchev
70252a7335 Add tests for SPR-15777 2017-07-17 08:35:58 +02:00
Rossen Stoyanchev
b0fc83ee05 Polish CssLinkResourceTransformer 2017-07-17 08:16:25 +02:00
Rossen Stoyanchev
d3749bc1ec Add timeout to DataBufferUtilsTests to avoid hanging 2017-07-14 23:07:48 +02:00
Rossen Stoyanchev
47b63150d1 Refactor DefaultWebSession
Use copy constructor to refresh a session with lastAccessTime and a
save function referencing the current exchange. As a result both fields
are now final and ConfigurableWebSession is no longer needed.
2017-07-14 22:55:56 +02:00
Rossen Stoyanchev
bf712957f6 Polish WebSession support code 2017-07-14 22:55:56 +02:00
Arjen Poutsma
c802827f0f Change write methods to return Flux<DataBuffer>
This commit changes the write methods to return `Flux<DataBuffer>`
instead of `Mono<Void>`, giving access to the original buffers,
so that they can decided whether the buffers need to be closed or not.

Issue: SPR-15726
2017-07-14 18:55:25 +02:00
Juergen Hoeller
efc5b47b9a Polishing 2017-07-14 17:37:06 +02:00
Arjen Poutsma
83051b06b8 Add write methods to DataBufferUtils
This commit adds an overloaded write method to `DataBufferUtils`. There
are three parameter variants: `OutputStream`, `WritableByteChannel`, and
`AsynchronousFileChannel`.

Issue: SPR-15726
2017-07-14 17:13:59 +02:00
Rossen Stoyanchev
e37af83459 Improve docs on on use of urlDecode=false
Issue: SPR-15643
2017-07-14 16:52:02 +02:00
Juergen Hoeller
1ad6180019 Expression javadoc alignment 2017-07-14 16:46:22 +02:00
Rossen Stoyanchev
f5c54f90b3 Add shortcut to mutate + apply to WebTestClient
Issue: SPR-15770
2017-07-14 16:24:15 +02:00
Juergen Hoeller
bcf9f21ecc PropertyOrFieldReference checks cached PropertyAccessor against current EvaluationContext
Issue: SPR-15769
2017-07-14 15:18:05 +02:00
Juergen Hoeller
57f961e36b No nullability declarations in AOP Alliance sources
Issue: SPR-15720
2017-07-14 15:10:20 +02:00
Rossen Stoyanchev
9d04c0424d Allow empty body with no content type in BodyExtractors
Issue: SPR-15758
2017-07-14 14:38:42 +02:00
Rossen Stoyanchev
d2c6ea5b1b Polish 2017-07-14 13:23:11 +02:00
Arjen Poutsma
805b7159b0 Add ParameterizedTypeReference variants to bodyTo[Mono|Flux], toEntity[List]
This commit introduces overloaded variants of `bodytoMono`,
`bodyToFlux`, `toEntity`, and `toEntityList` that take a
`ParameterizedTypeReference`. It also adds similar methods to
`WebClient.ResponseSpec`.

Issue: SPR-15725
2017-07-14 13:09:44 +02:00
Rossen Stoyanchev
095cc2283e Replace constant from QueueSupplier with local one 2017-07-13 22:07:19 +02:00
Juergen Hoeller
301e2ea493 Nullability fine-tuning and related polishing
Issue: SPR-15720
2017-07-13 21:20:42 +02:00
Sebastien Deleuze
f46520e6e8 Add Jackson Smile support to WebFlux
This binary format more efficient than JSON should be useful for server
to server communication, for example in micro-services use cases.

Issue: SPR-15424
2017-07-13 17:57:07 +02:00
Juergen Hoeller
50493a0f5f Missing abstract declaration on ReflectionTestUtils
Issue: SPR-15757
2017-07-13 13:19:52 +02:00
Juergen Hoeller
fd2b4f2427 DefaultListableBeanFactory falls back to empty DLBF instance on deserialization
Issue: SPR-15766
(cherry picked from commit c9ffa64)
2017-07-13 13:19:45 +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
Rossen Stoyanchev
ed5cc27f7b Support empty body without content type in WebFlux
Issue: SPR-15758
2017-07-13 11:11:34 +02:00
Rossen Stoyanchev
d9eafce266 Polish 2017-07-13 06:10:29 +02:00
Juergen Hoeller
25f3aef1ab Latest dependency updates (Caffeine 2.5.3, Netty 4.1.13, XPP3 1.1.6) 2017-07-12 19:13:21 +02:00
Juergen Hoeller
19a8efc717 Revised assertions and $[invocationTime] support for exceptionMessage
Issue: SPR-15763
2017-07-12 19:13:12 +02:00
Juergen Hoeller
5f767a86f5 Always invoke Jackson serialization with AtomicReference cause
Issue: SPR-15760
2017-07-12 19:13:03 +02:00
Rossen Stoyanchev
8359201a0d Improve write completion handling in ChannelSendOperator
Avoid re-using the WriteBarrier as the Subscription to both the
completionSubscriber and the writeSubscriber.

Instead DownstreamBridge is now called WriteCompletionBarrier and is
both a Subscriber and Subscription, i.e. handles all signals to and
from the completion Subscriber.

This frees the request method implementation in WriteBarrier to assume
it can only be called by the writeSubscriber and hence it's safe to
pass on request signals to the write source outside the synchronized
block.
2017-07-12 18:49:28 +02:00
Arjen Poutsma
6329ccb327 Read-Only HttpHeaders only created when necessary
This commit introduces a boolean `readOnly` flag in `HttpHeaders`,
which is used to check if creating a new `HttpHeaders` instance is
necessary in `readOnlyHttpHeaders`.
2017-07-12 18:13:24 +02:00
Stephane Nicoll
1764f905d8 Merge pull request #1469 from IAMTJW:master
* pr/1469:
  Polish contribution
  Use dedicated addAdvisors
2017-07-12 17:25:02 +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
Stephane Nicoll
e90583fb58 Merge pull request #1465 from hackerwins:fix-typo
* pr/1465:
  Fix typo
2017-07-12 17:15:35 +02:00
Alan Hong
fc7e7a3304 Fix typo
closes gh-1465
2017-07-12 17:12:34 +02:00
Sebastien Deleuze
1f011467b8 Introduce Kotlin functional bean definition DSL
As a follow-up of the ApplicationContext Kotlin extensions, close to
the Kotlin functional WebFlux DSL and partially inspired of the
Groovy/Scala bean configuration DSL, this commit introduces a
lightweight Kotlin DSL for functional bean declaration.

It allows declaring beans as following:

beans {
	bean<Foo>()
	profile("bar") {
		bean<Bar>("bar", scope = Scope.PROTOTYPE)
	}
	environment({ it.activeProfiles.contains("baz") }) {
		bean { Baz(it.ref()) }
		bean { Baz(it.ref("bar")) }
	}
}

Advantages compared to Regular ApplicationContext API are:
 - No exposure of low-level ApplicationContext API
 - Focused DSL easier to read, but also easier to write with a fewer
   entries in the auto-complete
 - Declarative syntax instead of functions with verbs like registerBeans
   while still allowing programmatic registration of beans if needed
 - Such DSL is idiomatic in Kotlin
 - No need to have an ApplicationContext instance to write how you
   register your beans since beans { } DSL is conceptually a
   Consumer<GenericApplicationContext>

This DSL effectively replaces ApplicationContext Kotlin extensions as
the recommended way to register beans in a functional way with Kotlin.

Issue: SPR-15755
2017-07-12 16:38:41 +02:00
Arjen Poutsma
f4180eb359 Removed faulty test 2017-07-12 15:02:50 +02:00
Arjen Poutsma
d6c102d1b8 Add apply method to WebClient.Builder
This commit introduces an apply method to `WebClient.Builder`, allowing
users to make multiple changes to the builder in one consumer.

Issue: SPR-15743
2017-07-12 14:53:06 +02:00
Rossen Stoyanchev
9ac71afbda Fix one failing test and @Ignore another
The failures look like older failures possibly exposed by recent
changes in Reactor.

The one in ViewResolutionResultHandler is very old test error.
The one in Jackson2JsonDecoderTests is more recent but went unreported.
2017-07-12 13:16:51 +02:00
Rossen Stoyanchev
89a5c857ac Fix recently intorduced bug in ChannelSendOperator
WriteBarrier acts as Subscription to both completionSubscriber and
writeSubscriber so the request method needs to be careful not to
pass on the request outside of readyToWrite or writeSubscriber checks.
2017-07-12 12:40:51 +02:00
Rossen Stoyanchev
fbcd554f42 Fix method order in ChannelSendOperator
1. Group by contract
2. Follow lifecycle -- Subscriber 1st, Subscription 2nd, Publisher last
3. Order of declaration in implemented contracts
2017-07-12 12:29:38 +02:00
Rossen Stoyanchev
42188020b4 Polish ChannelSendOperator 2017-07-12 12:21:04 +02:00
Stephane Maldini
b3a05ebac9 Inline super SubscriberAdapter with ChannelSendOperator
Add support for CoreSubscriber context passing
2017-07-11 13:12:07 -07:00