Commit Graph

15054 Commits

Author SHA1 Message Date
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
Rossen Stoyanchev 134ceac58e Set all strategies in CNM factory bean
ContentNegotiationManagerFactoryBean now provides an option to
explicitly set the strategies to use vs customizing a fixed
list of default strategies.

Issue: SPR-11114
2017-07-11 21:00:57 +02:00
Rossen Stoyanchev befacf4a35 ParameterContentNegotiationStrategy uses MediaTypeFactory
Issue: SPR-15649
2017-07-11 17:54:16 +02:00
Arjen Poutsma c9a3b863c4 Move toEntity(List) from WebClient.ResponseSpec to ClientResponse
This commit moves `toEntity(Class<T>)` and `toEntityList(Class<T>)`
from WebClient.ResponseSpec to ClientResponse. The main reason for doing
so is that the newly introduced `onStatus` method (see
2f9bd6e075) does not apply to these two
methods, and the result would be confusing. Also, `ClientResponse` and
`ResponseEntity` represent the same data: status code, headers, and a
body.

Issue: SPR-15724
2017-07-11 17:40:16 +02:00
Arjen Poutsma 51e02c2911 Add status-based error filter
This commit introduces an ExchangeFilterFunction that throws an
exception given a HTTP status predicate.

Issue: SPR-15724
2017-07-11 16:36:47 +02:00
Arjen Poutsma 2f9bd6e075 Add local error handling in WebClient.retrieve
This commit introduces a way to customize the WebClientExceptions, as
thrown by WebClient.ResponseSpec.bodyTo[Mono|Flux]. The first
customization will override the defaults, additional customizations are
simply tried in order.

Issue: SPR-15724
2017-07-11 16:36:40 +02:00