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

Ishan Chattopadhyaya commented on SOLR-14404:
---------------------------------------------

I tested with https://github.com/apache/lucene-solr/pull/1624 and there are no 
security exceptions any more. Thanks a lot, [~uschindler] and [~rcmuir]! It is 
troubling, though, that same issue cannot be reproduced by our tests. Tests 
enjoy much more relaxed restrictions with the security manager and issues like 
these can only be caught by running Solr as a user would. I strongly feel we 
should have same restrictions on tests too, even if that means throwing out 
things like Mockito and reworking our tests. Or, alternatively, split up the 
tests into unit tests and integration tests.

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

Reply via email to