Commit Graph

265 Commits

Author SHA1 Message Date
Oleg Zhurakousky
1ec107abbd GH-474 Add TypeResolver library and simplify type discovery
For complex cases where deep hierarchies are used there was still an issue with the fix in #473.
By adding TypeResolver library we essentially simplify our discovery process

Resolves #474
2020-03-30 17:26:01 +02:00
Oleg Zhurakousky
86d12f3a84 GH-473 Fix type discovery for generic parameters
Resolves #473
2020-03-30 10:56:00 +02:00
Oleg Zhurakousky
9434a68bd2 GH-461 Add to register more than one functional class
Similar to the way we allow multiple functions to be listed with 'definition' property, this enhancement allows several functional classes to be deployed

Resolves #461
2020-03-23 14:51:56 +01:00
Oleg Zhurakousky
85000ee084 GH-460 Add support for function filtering
Added support for function filtering in the event there are more then one function in catalog. This is primarily to ensure that
we have a mechanism to specify which functions to export as web enpoints (instead of all)

Resolves #460
2020-03-23 11:19:40 +01:00
Oleg Zhurakousky
919b9902e9 Improved handling of output Message conversion
remove the check for 'accept' header
added test

Resolves #465
2020-03-18 17:01:55 +01:00
Eric Bottard
b28c7c5cfc Add a test for accept being multi-valued and tested in order 2020-03-18 16:59:09 +01:00
Oleg Zhurakousky
fb095f7ac3 Improve output type conversion handling
- Re-enable, clean and improve  special handling for collection/array output type
- Add tests to validate and demonstrate the differences in  special handling of collection of Messages ve collection of non-Messages

Resolves #464
2020-03-18 15:50:55 +01:00
Eric Bottard
b1d9890e0c Don't treat byte[] or collections in a special way. 2020-03-18 13:59:21 +01:00
Oleg Zhurakousky
0acff2b1d3 Enhancements to content-type negotiation
- Added logic to wrap custom (user) message converters with NegotiatingMessageConverterWrapper
- Removed 'addDefaultConverters' flag from ContextFunctionCatalogAutoConfiguration as it is more confusing then useful
- Added test which uses wild card accept content-type with several converters available to ensure the appropriate one is used
- Made NegotiatingMessageConverterWrapper package private and moved it and it's test to a contex.config package

Resolves #462
2020-03-18 11:15:03 +01:00
Florent Biville
046913de99 Add tests to NegotiatingMessageConverterWrapper 2020-03-18 11:05:16 +01:00
Eric Bottard
161ac0efae Introduce better content-type negotiation when converting to messages.
This commit introduces a MessageConverter wrapper that supports a
wildcard-aware Accept header.
2020-03-18 11:05:16 +01:00
Arno
013e714c42 Add consumer lookup, for single consumer in catalog
Related to issue #454

Resolves #455
2020-03-16 09:05:42 +01:00
Oleg Zhurakousky
005611b682 Polish javadoc in RoutingFunction 2020-03-11 09:04:58 +01:00
Oleg Zhurakousky
b71c793dab GH-458 Remove default dependency on ApplicationJsonMessageMarshallingConverter
Resolves #458
2020-03-10 16:13:28 +01:00
Oleg Zhurakousky
777f0d8afa GH-453 Provide continuation model for reactive consumer
Modified invocation model of the reactive consumer to ensure it provides reasonable continuation path via MonoIgnoreElements (Mono.. . .then())

Resolves #453
2020-03-05 08:56:46 +01:00
Oleg Zhurakousky
df32fd6954 Add MessageConverter filtering logic
Aligned ApplicationJsonMessageMarshallingConverter with the same from s-c-Stream
2020-03-02 13:08:45 +01:00
Oleg Zhurakousky
2b4f8c7958 Clean up FunctionTypeUtils.isOfType method 2020-03-02 09:55:45 +01:00
Oleg Zhurakousky
67a4642b2d Polish/cleanup FunctionTypeUtils 2020-02-27 13:48:21 +01:00
Oleg Zhurakousky
f4530e0d89 Fix to-Message conversion logic
Fixed  logic to ensure that for cases where user may return a Message with no contentType set, the property-set content type is propagated
2020-02-22 08:24:27 +01:00
Oleg Zhurakousky
6c4b5051c3 Minor enhancements to the previosu commit
Resolves #448
2020-02-10 20:43:33 +01:00
Eric Bottard
005d87181f Throw identifiable exceptions on input/output conversion failure. 2020-02-10 19:23:39 +01:00
Oleg Zhurakousky
72a3c44bcb Upgraded access modifier in FunctionInvocationWrapper 2020-02-10 16:16:10 +01:00
Oleg Zhurakousky
0f4c8b21cf GH-449 Added initial support for providing a message enriching callback
For now an undocumented feature as it may need some more work

Resolves #449
2020-02-05 16:50:04 +01:00
Oleg Zhurakousky
912dc31568 Streamlined output conversion logic 2020-02-03 13:22:34 +01:00
Oleg Zhurakousky
313f10946d GH-439 Fixed main class discovery
The regression was caused by filtering main classes that are @SpringVootApplication only, essentially excluding @SpringBootConfiguration

Resolves #439
2020-01-29 18:38:09 +01:00
Oleg Zhurakousky
d334ed609c GH-444 Fixed support for default function lookup
Given that function can be looked up with no definition, the fallback alternative should be 'spring.cloud.function.definition' property

Resolves #444
2020-01-28 15:50:42 +01:00
Oleg Zhurakousky
35d3c45959 GH-1896Stream Fixed conversion of collection of messages 2020-01-27 17:25:21 +01:00
Oleg Zhurakousky
2a8c3cdda6 Minor fix to avoid NPE when output content type is not present 2020-01-15 07:02:08 +01:00
Oleg Zhurakousky
52b0fdea50 GH-434 Added generic FunctionInvoker for AWS
- Added generic FunctionInvoker capable of handling the request generically without requiring user to implemen specific AWS request handler

Resolves #434
2019-12-16 14:27:41 +01:00
Oleg Zhurakousky
0f38ea47b8 GGH-431 Fixed discovery of a start class
- Ensured that FunctionClassUtils performs additional check to ensure that located star class is SpringBootApplication
- Added additional lookup to look for Main-Class if nothing was found in Start-Class primarily to support Azure
- Updated Azure samples
- Updated documentation

Resolves #431
2019-12-12 15:15:36 +01:00
Oleg Zhurakousky
12f4260271 GH-421 Fix Start-Class discovery logic
- Fixed logic behind discovery of Start-Class which didn't work well with some JVMs
- Isolated the Start-Class in a separate utility class as it is going to be used elsewhere

Resolves #421
2019-12-11 16:58:22 +01:00
Oleg Zhurakousky
a0f072a11d GH-429 Fixed logic behind 'composed' flag
Fixed and simplified logic behind 'composed' flag in FunctionInvocationWrapper and added additional test

Resolves #429
2019-12-06 09:27:22 +01:00
Oleg Zhurakousky
8fac135937 Quick fix in the logic to determine 'composed' flag 2019-12-05 21:39:29 +01:00
Oleg Zhurakousky
744e32aed4 Changed default value of 'splittable' attribute of PollableBean annotation to 'true' 2019-11-22 10:32:15 +01:00
Oleg Zhurakousky
00ec268aca GH-420 Fix discovery of function type from class
Fix introspection over ScannedGenericBeanDefinition

Resolves #420
2019-10-29 19:50:39 +01:00
Oleg Zhurakousky
8ec28bb004 GH-419 Fix output type conversion
Ensured that we check for the output type and see if and what type of conversion needs to be applied. If output is already a message with payload byte[], then no conversion is necessary

Resolves #419
2019-10-24 12:19:14 +02:00
Oleg Zhurakousky
0d536fae71 Added temporary checks for Kafka stream types 2019-10-23 21:50:27 +02:00
Oleg Zhurakousky
7e3681dafe Rename Pollable to PollableBean 2019-10-16 14:07:09 +02:00
Oleg Zhurakousky
6c3b574213 Relaxed default function lookup assertion
polish
2019-10-11 10:37:17 -04:00
Oleg Zhurakousky
a83d2e70ee Change PollableSupplier to Pollable 2019-10-07 09:51:08 -05:00
Oleg Zhurakousky
38e06a9dd0 GH-413 Fix type discovery logic in BeanFactoryAwareFunctionRegistry
- added 'discoverFunctionTypeFromFunctionalObject' method to FunctionTypeUtils
- added tests to reproduce and validate the issue
2019-10-02 12:23:55 -04:00
Eric Bottard
32fb70a573 Don't assume function is a bean
Fixes #412
2019-10-02 13:10:14 +02:00
Oleg Zhurakousky
52f1f04020 GH-395 Add support for non-message json to be converted as POJO
Resolves #395
2019-10-01 14:06:17 -04:00
Oleg Zhurakousky
97bea81836 Discover function type from FactoryBean
* Fix spring-integration sample

* Added discoverFunctionTypeFromClass() method to FunctionTypeUtils

* A `FactoryBean` may produce a function instance as well.
Add a logic into `BeanFactoryAwareFunctionRegistry` to discover a function type from the `FactoryBean.getObjectType()`
2019-09-25 10:24:07 -04:00
Phillip Webb
bdd4320a59 Migrate from deprecate methods
Migrate away from deprecated Spring Boot configuration property
bean classes and methods.
Resolves #410
2019-09-25 09:59:03 -04:00
Oleg Zhurakousky
2217d8aace Polishing 2019-09-23 11:27:09 -04:00
Oleg Zhurakousky
e490eda5ff Add skip conversion header logic 2019-09-23 11:15:25 -04:00
Oleg Zhurakousky
11a6e923ee GH-409 Fix default discovery of functions
Fixed discovery of functions to ensure that even in cases where default function is found but it's type can not be determined such function is discarded. This effectively ensures that if the actual instance does not match the declared type such function is not treated as function.

Resolves #409
2019-09-22 17:15:19 -04:00
Oleg Zhurakousky
9011615c30 Minor enhancements and polishing to accomodate s-c-stream requirements for multi-in/out bindings 2019-09-17 17:53:54 +02:00
Oleg Zhurakousky
d93febd4c4 GH-364 Additional cleanup and small refactoring for Kotlin lambda support 2019-09-10 13:48:32 +02:00