[ https://issues.apache.org/jira/browse/SOLR-13787?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=16937932#comment-16937932 ]
Noble Paul commented on SOLR-13787: ----------------------------------- This is not a wholesale rewrite of v2 APIs. Basically, there are 2 types of v2 APIs. # Without a json payload # With a json payload #1 can avoid a spec file and we can avoid it. #2 would need a spec file which contains the json schema of the payload. The schema is best expressed in json schema format. > 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-unsubscr...@lucene.apache.org For additional commands, e-mail: issues-h...@lucene.apache.org