You are viewing a plain text version of this content. The canonical link for it is here.
Posted to issues@lucene.apache.org by "Jason Gerlowski (Jira)" <ji...@apache.org> on 2021/02/01 14:36:00 UTC

[jira] [Commented] (SOLR-15118) Make /v2/collections APIs annotation-based

    [ 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-unsubscribe@lucene.apache.org
For additional commands, e-mail: issues-help@lucene.apache.org