[ 
https://issues.apache.org/jira/browse/CAY-2772?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=17633269#comment-17633269
 ] 

Andrus Adamchik commented on CAY-2772:
--------------------------------------

See https://github.com/apache/cayenne/pull/536 for the (partial) 
implementation. 

> Bootique-style module "extenders" for smoother configuration
> ------------------------------------------------------------
>
>                 Key: CAY-2772
>                 URL: https://issues.apache.org/jira/browse/CAY-2772
>             Project: Cayenne
>          Issue Type: Task
>            Reporter: Andrus Adamchik
>            Assignee: Andrus Adamchik
>            Priority: Major
>             Fix For: 5.0.M1
>
>          Time Spent: 10m
>  Remaining Estimate: 0h
>
> I would like to make our runtime extensions API more user-friendly. 
> 1. Our current module "contribute" API in ServerModule was intended to expose 
> DI collections to the users for extension. But is still too "technical".
> 2. Other modules (such as crypto and commitlog) already have extenders 
> similar to Bootique extenders, but they produce Module instances (while 
> Bootique extenders have a binder internally, and not building own Module). 
> The Bootique approach seems less confusing, as service assembly still happens 
> in the main module, and the extender simply provides building blocks for it.
> I would like to unify that into something like this, which seems to be the 
> most flexible format from Bootique experience:
> {noformat}
> ServerRuntime
>    .builder()
>    .addQueryFilter(MyFilter.class) // cover method for "addModule" with 
> extender
>    .addModule(b -> ServerModule.extend(b).addQueryFilter(MyFilter.class))
>    .addModule(b -> CommitLogModule.extend(b).addListener(MyListener.class))
>    .build();
> {noformat}
> I am working on a PR now.
>  



--
This message was sent by Atlassian Jira
(v8.20.10#820010)

Reply via email to