[ https://issues.apache.org/jira/browse/SOLR-13787?page=com.atlassian.jira.plugin.system.issuetabpanels:all-tabpanel ]
Noble Paul updated SOLR-13787: ------------------------------ Parent: (was: SOLR-13661) Issue Type: Improvement (was: Sub-task) > 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: Improvement > Security Level: Public(Default Security Level. Issues are Public) > Reporter: Noble Paul > Assignee: Noble Paul > Priority: Major > Fix For: master (9.0), 8.3 > > Time Spent: 1h 10m > Remaining Estimate: 0h > > example v2 API may look as follows > {code:java} > @V2EndPoint(method = POST, path = "/cluster/package", permission = > PermissionNameProvider.Name.ALL) > public static class ApiTest { > @Command(name = "add") > public void add(SolrQueryRequest req, SolrQueryResponse rsp, AddVersion > addVersion) { > } > @Command(name = "delete") > public void del(SolrQueryRequest req, SolrQueryResponse rsp, List<String> > names) { > } > } > public static class AddVersion { > @JsonProperty(value = "package", required = true) > public String pkg; > @JsonProperty(value = "version", required = true) > public String version; > @JsonProperty(value = "files", required = true) > public List<String> files; > } > {code} > This expects you to already hava a POJO annotated with jackson annotations > > The annotations are: > > {code:java} > @Retention(RetentionPolicy.RUNTIME) > @Target({ElementType.TYPE}) > public @interface EndPoint { > /**The suoported http methods*/ > SolrRequest.METHOD[] method(); > /**supported paths*/ > String[] path(); > PermissionNameProvider.Name permission(); > } > {code} > {code:java} > @Retention(RetentionPolicy.RUNTIME) > @Target(ElementType.METHOD) > public @interface Command { > /**if this is not a json command , leave it empty. > * Keep in mind that you cannot have duplicates. > * Only one method per name > * > */ > 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