[ https://issues.apache.org/jira/browse/SOLR-14404?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=17144605#comment-17144605 ]
ASF subversion and git services commented on SOLR-14404: -------------------------------------------------------- Commit 57a892f896f543913d6b22a81577f69184cd94b6 in lucene-solr's branch refs/heads/master from Noble Paul [ https://gitbox.apache.org/repos/asf?p=lucene-solr.git;h=57a892f ] SOLR-14404 CoreContainer level custom requesthandlers (#1432) SOLR-14404 CoreContainer level custom requesthandlers > CoreContainer level custom requesthandlers > ------------------------------------------ > > Key: SOLR-14404 > URL: https://issues.apache.org/jira/browse/SOLR-14404 > Project: Solr > Issue Type: New Feature > Reporter: Noble Paul > Assignee: Noble Paul > Priority: Major > Time Spent: 5h > Remaining Estimate: 0h > > caveats: > * The class should be annotated with {{org.apache.solr.api.EndPoint}}. > Which means only V2 APIs are supported > * The path should have prefix {{/api/plugin}} > add a plugin > {code:java} > curl -X POST -H 'Content-type:application/json' --data-binary ' > { > "add": { > "name":"myplugin", "class": "full.ClassName" > } > }' http://localhost:8983/api/cluster/plugins > {code} > add a plugin from a package > {code:java} > curl -X POST -H 'Content-type:application/json' --data-binary ' > { > "add": { > "name":"myplugin", "class": "pkgName:full.ClassName" , > "version: "1.0" > } > }' http://localhost:8983/api/cluster/plugins > {code} > remove a plugin > {code:java} > curl -X POST -H 'Content-type:application/json' --data-binary ' > { > "remove": "myplugin" > }' http://localhost:8983/api/cluster/plugins > {code} > The configuration will be stored in the {{clusterprops.json}} > as > {code:java} > { > "plugins" : { > "myplugin" : {"class": "full.ClassName" } > } > } > {code} > example plugin > {code:java} > public class MyPlugin { > private final CoreContainer coreContainer; > public MyPlugin(CoreContainer coreContainer) { > this.coreContainer = coreContainer; > } > @EndPoint(path = "/myplugin/path1", > method = METHOD.GET, > permission = READ) > public void call(SolrQueryRequest req, SolrQueryResponse rsp){ > rsp.add("myplugin.version", "2.0"); > } > } > {code} > This plugin will be accessible on all nodes at {{/api/myplugin/path1}}. It's > possible to add more methods at different paths. Ensure that all paths start > with {{myplugin}} because that is the name in which the plugin is registered > with. So {{/myplugin/path2}} , {{/myplugin/my/deeply/nested/path}} are all > valid paths. > It's possible that the user chooses to register the plugin with a different > name. In that case , use a template variable as follows in paths > {{$plugin-name/path1}} -- 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