Commit Graph

118 Commits

Author SHA1 Message Date
Oleg Zhurakousky
d1b9a9b3fb Cleaned up FunctionContextUtils
cleaned up FunctionContextUtils to be more generic and return Type instead of FunctionType
2018-11-08 11:17:16 +01:00
Oleg Zhurakousky
8eb7e06e02 GH-227 Moved Kotlin transformation to BFPP
resolves #227
2018-10-31 16:59:53 +01:00
Oleg Zhurakousky
265a9d61aa general cleanup 2018-10-26 16:11:55 +02:00
Oleg Zhurakousky
2e5c6d22b5 Added support for input Collection param
Added support for function parameter type Collection
Updated both Jackson and Gson mappers
Defined a new toObject() operation on JsonMapper and deprecated the old

Resolves #210
2018-10-25 12:47:41 +01:00
Dave Syer
54deae5dba Ensure FunctionalSpringApplication works with String sources 2018-10-23 14:03:43 +01:00
Dave Syer
c3b03a1b11 Use web-application-type=reactive by default if webflux present
We want the default application type to be REACTIVE if webflux is
present (formerly it was NONE). In AWS and Azure we also want
the webflux beans to be switched off in a "lite" application
context (formerly they were unconditional).
2018-10-23 14:03:43 +01:00
Oleg Zhurakousky
af717e445d Polishing
Resolves #219
2018-10-22 14:26:59 +02:00
Dave Syer
ba34d4b81b Add @FunctionalSpringBootTest and mini web server
User can run a minimal HTTP app using an app that is a Function
or an ApplicationContextInitializer. Can also test using
@FunctionalSpringBootTest in place of @SpringBootTest.

Add some tests and documentation for functional beans

Make server.address configurable
2018-10-22 14:26:17 +02:00
Dave Syer
4315cb1d61 SpringApplication->FunctionalSpringApplication (less confusing) 2018-10-18 09:38:27 +01:00
Dave Syer
c4ee7ab065 Add other annotation processors to functional context 2018-10-18 09:36:43 +01:00
Oleg Zhurakousky
ae07a13d03 GH-56 Added support for Function<Flux, Mono> and <Mono, Flux>
Resolves #56
Resolves #218
2018-10-17 21:14:27 -04:00
Dave Syer
baabff9a40 Prefer web application type NONE in functional app 2018-10-17 13:51:42 +01:00
Dave Syer
6c0e1bfc2f Typo in javadoc 2018-10-16 16:39:29 +01:00
Oleg Zhurakousky
31e689b108 GH-208 polishing ec68f64 commit
Ensured that the composed Supplier is of type Mono<Void>
Fix tests
2018-10-14 20:29:13 -04:00
Oleg Zhurakousky
ec68f6453c GH-208 Added support for composing Supplier and Consumer
This essentially returns a terminal Supplier - Supplier<Flux<Void>> which can no longer be composed with anything else
Resolves #208
2018-10-14 19:29:23 -04:00
Dave Syer
666bc100e8 Extract functional bean definition concerns into a common class
SpringApplication looks like the class with the same name in Spring
Boot (and is a subclass of it), but it checks to see if the user
is asking for functional bean registrations and only used those if
it can.
2018-10-12 18:00:41 +01:00
Dave Syer
ca0cc7da49 Remove workaround for SPR issue (there are other ways) 2018-10-09 17:10:10 +01:00
Dave Syer
ea38827739 Alternative strategy for functional registrations
The problem with a BPP that processes FunctionRegistration is that
they might not be instantiated before the FunctionRegistry. It is
better to enforce the dependency order we need by injecting the
registrations explicitly but lazily into the registry.
2018-10-09 09:48:30 +01:00
Dave Syer
c20433e05f Fix logic error detecting gson preferences 2018-10-04 09:55:15 +01:00
Dave Syer
37729e4583 Add support for ApplicationContextInitializer in azure adapter 2018-10-03 09:01:54 +01:00
Dave Syer
bb1c97251f Use ApplicationContextInitializer if provided
An Initializer is more efficient than using @Configuration.
2018-10-02 12:07:51 +01:00
Oleg Zhurakousky
c43f081ef1 Cleanup and added more tests 2018-09-19 14:33:01 +02:00
Oleg Zhurakousky
76e3bf2957 polishing/refactoring
Undeprecated deprecated constructor in FunctionRegistration
Made FunctionRegistration BeanNameAware
Added name assertion in FunctionRegistrationPostProcessor
2018-09-18 13:21:58 +02:00
Dave Syer
3c91914f82 Purge some more deprecated constructor usages 2018-09-17 15:21:40 +01:00
Dave Syer
f7b184c4c3 Revert to more convenient signature in FunctionCatalog 2018-09-17 15:07:24 +01:00
Dave Syer
b3ff7ab680 Compiler warnings and witespace 2018-09-17 13:38:47 +01:00
Oleg Zhurakousky
40b542edfe GH-202 Added size() to FunctionCatalog
Resolves #202
2018-09-12 20:17:19 +02:00
Dave Syer
d1c423e161 Add HTTP headers to outgoing messages by default
Some care is required to prevent request-specific headers being
reflected and interfering with content negotiation.

Fixes gh-207
2018-09-12 15:41:34 +01:00
Oleg Zhurakousky
87c67427df GH-77 added initial Kotlin support
Added mixed java/kotlin POM configuration

added tests, javadocs

Resolves #77
Resolves #204
2018-09-11 11:37:13 +02:00
Oleg Zhurakousky
30187b583b GH-199 Added support for typeless lookup in FunctionCatalog
Updated both the interface as well as InMemoryFunctionCatalog BeanFactoryFunctionCatalog and SingleEntryFunctionRegistry implementations
Added tests

Resolves #199
2018-08-15 17:56:29 +02:00
Oleg Zhurakousky
ed14474b9f GH-191 Made 'name' required in FunctionRegistration 2018-07-30 13:48:48 +02:00
Oleg Zhurakousky
32ee27165b GH-190 Added null check for publisher
Resolves #190
2018-07-27 16:07:57 +02:00
Oleg Zhurakousky
e1a7e16c18 ContextFunctionCatalogAutoConfiguration improvements
Removed FunctionEntry as it was no longer referenced by anything
2018-07-12 16:29:47 +02:00
Oleg Zhurakousky
377c4d93f0 Code polishing and general cleanup 2018-06-27 08:43:28 -04:00
Oleg Zhurakousky
bb397c6a07 General polishing in InMemoryFunctionCatalog 2018-06-25 23:49:47 -04:00
Dave Syer
94b1e56d55 Allow user to provide own Gson or ObjectMapper 2018-06-22 16:06:39 +01:00
Dave Syer
4c9627aee3 Fix Build and upgrade fully to Boot 2.0
Some tests still ignored.

Also adds draft functional bean registration support. The AWS sample
is using that now (it starts up 4x faster in AWS). To activate the
functional beans user has to supply a main class of type
ApplicationContextInitializer.
2018-06-21 17:57:50 +01:00
Oleg Zhurakousky
8c7c8f9a1c GH-180 added null assertion to FunctionRegistration
Resolves #180
2018-06-12 15:32:22 -04:00
Dave Syer
8599be2255 Make Jackson and Gson beans conditional 2018-05-21 09:05:08 +01:00
Dave Syer
66476559ed Move JsonMapper to spring-cloud-function-context
...in case it is needed elsewhere (see gh-151)
2018-05-21 08:50:35 +01:00
Dave Syer
e34324b5b4 Double check that a Function can return a Mono 2018-05-15 08:43:58 +01:00
Dave Syer
b59b43ddc5 Only expose Publisher via FunctionCatalog
Flux.from() is cheap and can be used to marshal the inputs everywhere
internally. With this change users ought to be able to register any
function of any Publisher type.
2018-05-01 12:06:34 -04:00
Dave Syer
fb04324ac9 Factor out a new strategy for wrapper type detection
Using this strategy libraries could be developed for supporting
Flux-like libraries (e.g. kstreams) that are not actually
reactive streams implementations.
2018-05-01 12:06:29 -04:00
Dave Syer
59f94c1533 Fix potential issue when Message is not available but not needed
If an isolated function doesn't have Message in its classpath, we
will never actually need to instantiate that class. This change
makes sure we check first.
2018-04-25 07:27:33 +01:00
Dave Syer
57c05970e5 Use concurrent hash map in function catalog 2018-04-24 10:23:22 +01:00
Dave Syer
5aeba1ea96 Convert Consumer<Foo> to Function<Flux<Foo>,Mono<Void>>
This results in a better experience for users because the consumer
that they write is only applied to a Flux that is subscribed to
by the framework once. It gives better control over the flow of
foos, e.g. if some component wants to subscribe on a thread.
2018-03-26 10:06:13 +01:00
Dave Syer
a1b624b28a Inspect bean class if it is available
Avoids instantiating beans if not necessary, and allows user to
provide Function as a @SpringBootApplication (for instance), or
more generally as a source to the application context (as opposed
to being component scanned).
2018-03-21 11:09:57 +00:00
Dave Syer
773dddbe68 Ensure composite wrapper type reflects reality
When a Supplier<Flux<Foo>> is composed with a Function<Foo,Bar>
the resulting handler (supplier) should have Flux as its output
wrapper still (the most general output wrapper type in the chain).
2018-03-16 08:35:21 -04:00
Dave Syer
47f86671ca Allow pipe as well as comma in function composition 2018-03-16 08:05:29 -04:00
Dave Syer
5528659b4b Inspect bean definition more thoroughly for factory arguments
Fixes gh-153
2018-03-02 11:28:33 +00:00