You are viewing a plain text version of this content. The canonical link for it is here.
Posted to issues@lucene.apache.org by "Andrzej Bialecki (Jira)" <ji...@apache.org> on 2019/09/25 13:33:00 UTC

[jira] [Commented] (SOLR-13787) An annotation based system to write v2 only APIs

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

Andrzej Bialecki  commented on SOLR-13787:
------------------------------------------

I think the idea that we discussed during the committer's meeting was to eliminate the need for creating JSON specs. As it is this proposal adds complexity because now you need to both annotate *and* create a spec file. 

> An annotation based system to write v2 only APIs
> ------------------------------------------------
>
>                 Key: SOLR-13787
>                 URL: https://issues.apache.org/jira/browse/SOLR-13787
>             Project: Solr
>          Issue Type: Task
>      Security Level: Public(Default Security Level. Issues are Public) 
>            Reporter: Noble Paul
>            Assignee: Noble Paul
>            Priority: Major
>
> example v2 API may look as follows
> {code:java}
> @EndPoint(
>  spec = "cluster.package",
>  method = POST,
>  permission = PKG_EDIT
> )
> static class PkgEdit {
>  @Command(name = "add")
>  public void add(CallInfo callInfo) throws Exception {
>  }
>  @Command(name = "update")
>  public void update(CallInfo callInfo) throws Exception {
> }
>  @Command(name = "delete")
>  boolean deletePackage(CallInfo params) throws Exception {
> }
> {code}
> This expects you to already have the API spec json 
>  
> The annotations are:
>  
> {code:java}
> @Retention(RetentionPolicy.RUNTIME)
> @Target({ElementType.TYPE})
> public @interface EndPoint {
>   /**name of the API spec file without the '.json' suffix
>    */
>   String spec();
>   /**Http method
>    */
>   SolrRequest.METHOD method();
>   /**The well known persmission name if any
>    */
>   PermissionNameProvider.Name permission();
> }
> {code}
> {code:java}
> @Retention(RetentionPolicy.RUNTIME)
> @Target(ElementType.METHOD)
> public @interface Command {
>   String name() default "";
> }
> {code}



--
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