- Log all the exception messages at the deserialization (especially at the codec's decode process)
- Combine all the exception catches into Exception as the exception messages are almost same and redundant.
Resolves#497
removing duplicate declaration of logger
- Prevent new reflection calls to channels
for Sources, Sinks and Processors, cache bound target
if it's found and try to use it next time as target
should not change.
- One test for checking caching.
- Fixes#759
Fixes#751
- Use Reactor 3.0.4.RELEASE
- Remove Scheduler implementations that were introduced for fixes
- Shade `io.reactivex:rxjava-reactive-streams` classes to replace removed RxJava1 adapter support
Signed-off-by: Marius Bogoevici <mbogoevici@pivotal.io>
Fixes#741
The current code will skip `deserializePayloadIfNecessary` if the
payload is a `byte[]`. There are in fact two conditions that indicate
that a message does not require postprocessing in the binder: that
the payload is not a `byte[]` which indicates that the message has
already been deserialized, and that the `originalContentType` is not
present, or else it'd need to be moved to `contentType`. This fix
adds the secondary condition to the check.
Fixes#519
Introduces some internal changes to the framework allowing the use
of other types than MessageChannel/SubscribableChannel as bindable
types (e.g. Flux, Observable, KStream, etc.)
- Modify BinderFactory to allow the retrieval and lookup of a
binder not only by name, but also by binding target type
- Subsequent changes to ChannelBindingService and tests to account
for the modified signature
- Introduce BindingTargetFactory as the contract for creating bound
elements
- Remove any references to chanels and bound elements and use
'binding target' systematically across the board
Reinstate our own Checkstyle checks with a reduced set of rules so that header
validation can be performed automatically at compile time.
Use ${project.version} for the checkstyle plugin configuration
Renaming some occurences of 'boundElement' to 'bindingTarget'
Renamed a stray occurence of 'channel'
Fix some occurences of String concatenation in the same line after reformatting
Fixes#446
Supports properties prefixed with `spring.cloud.stream.default`
for specifying default values for large number of channels or
for dynamically generated channels.
Note: this does not cover binding specific properties,
as the property objects are created under binder's control
but the same technique can be applied there.
Rework default property binding
Minor: javadoc
Updated documentation
Fixes#723
- Add support for registering an `AggregateApplication` bean for accessing the
components from underlying subcontexts
- Testing support and samples
Signed-off-by: Marius Bogoevici <mbogoevici@pivotal.io>
Fix Javadoc
- Use the same mapping of method/parameters for both declarative and message handler Stream Listeners
- Declarative mode of the StreamListener method is determined if at least one of the the method parameters is annotated with @Input or @Output with either bound elements (e.g. channels) or conversion targets from bound elements via a registered StreamListenerParameterAdapter
- If the method is non-declarative then it is considered to be in message handler mode
- Declarative mode now accepts @Output annotation at method level as well along with @SendTo
- Declarative mode also accepts @Input annotation value at the method level via @StreamListener valuue.
- Message handler mode accepts @Input annotation value at the method parameter level and @Output annotation at the method annotation level
- Both @Output and @SendTo annotations are supported to specify the outbound target value while @SendTo is allowed only as a method level annotation
- Add assertions on allowable use of method and parameter annotations
- Add parameterized tests to cover all possible cases
- Message handler tests
- Reactor and RxJava tests
Resolves#664
Add more error handling and simplify the usage patterns
Address review comments
- Support @Input/@Output only for declarative StreamListener methods
- Support multiple @Output only when there is no return type in the StreamListener method
- Add/Update tests
WIP
Refactor PR based on the review comments
Renamed Table from Schema to SCHEMA_REPOSITORY to avoid potential reserved word clashes with some databases
Postgresql GH-696 requires transactional semantics even for reading operations when using Lob columns
Removed dependency to h2 database. A database driver is now explicitly required when running the server
Resolves#696 and #697
Resolves#691
- If the broker supports native serialization, then the serialization of the
outbound payload is not done by the binder's producer binding outbound message handler.
- At the consumer binding's inbound message handler, the extraction of embedded headers
is performed only for the byte[] payload (given the deserialization would have already
occurred at the broker level)
- Add correspoinding tests in Kafka binder implementation
- Rely on the received message type to decide on using out of the box deserializer (only
if byte[] message payload is received)
Fixes#686
Removing unused imports
Simplify the registration process
- rely on EntityScanPackages.register to properly merge registered packages
- add additional tests validating the process
- In AggregateApplication, support specifying commandline and environment properties based on namespace for each containing applications using namespace as prefix
- As usual, command line properties override the environment as well as the properties specified inside the application
- Set argumentClass to Object when using wildcard/generic types if the StreamListener method parameter for @Input annotated type uses wildcard/generic type, then set the argumentClass to `Object.class` instead of null.
Resolves#665
Address review comments