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

Jason Gerlowski commented on SOLR-15118:
----------------------------------------

I've pushed up a PR for this work.  It still needs a bit of cleanup, but is 
otherwise well tested and ready to go.

----

Unrelated comment:

Right now, the the v2 APIs built on the annotation mechanism are initially 
deserialized into a strongly typed POJO (e.g. {{CreateConfigInfo}}, then 
converted into a {{Map<String,Object>}} and massaged a bit to line up with the 
parameters the corresponding v1 API expects. (e.g. {{ClusterAPI}})  Lastly the 
weakly-typed map is passed to the API implementation itself (e.g. 
{{CollectionsHandler.handleRequestBody}}).

It'd be a big change, but it'd be awesome if we could eventually push use of 
the strongly-typed POJO down into the API functionality itself (e.g. 
{{CollectionsHandler}}).  That'd get rid of a ton of map-inspection, and 
casting, and type-errors in our code.  For v2 APIs we could pass the serialized 
POJO directly to (e.g.) CollectionsHandler, while flat v1 Maps would need 
converted into the POJO (the logical reverse of the conversion code we 
currently have).

Definitely a long term idea, just thought it was a neat future to imagine and 
worth mentioning.  Maybe this has been the plan all along and I'm only 
realizing it now.

> Make /v2/collections APIs annotation-based
> ------------------------------------------
>
>                 Key: SOLR-15118
>                 URL: https://issues.apache.org/jira/browse/SOLR-15118
>             Project: Solr
>          Issue Type: Sub-task
>      Security Level: Public(Default Security Level. Issues are Public) 
>          Components: v2 API
>    Affects Versions: master (9.0)
>            Reporter: Jason Gerlowski
>            Assignee: Jason Gerlowski
>            Priority: Major
>          Time Spent: 10m
>  Remaining Estimate: 0h
>
> The {{ApiBag}} class used to register v2 APIs (and the {{PathTrie}} object 
> underlying it) only holds a single {{Api}} object for a given "method" and 
> "path" combination.  In short this means that API commands with the same 
> method and path must be declared homogenously: they either have to all be in 
> the JSON spec, or all be in annotated Java classes.
> The SIP-12 proposal calls for new "list-backups" and "delete-backups" APIs.  
> For these v2 APIs to be annotation-based, as is preferred going forward, all 
> of the existing /v2/collections APIs must be changed to be annotation-based 
> as well.
> It's worth noting that this will cause the introspection output to lose the 
> "description" text for these APIs and their parameters, as there's no support 
> for this yet for annotation-based v2 APIs.  See SOLR-15117 for more details.



--
This message was sent by Atlassian Jira
(v8.3.4#803005)

---------------------------------------------------------------------
To unsubscribe, e-mail: issues-unsubscr...@lucene.apache.org
For additional commands, e-mail: issues-h...@lucene.apache.org

Reply via email to