<div dir="ltr"><div><div><div>Hi Jay,<br><br>>One of the main things I can't quite envision is how to process the 
annotations of an external .java file at runtime so that I can utilize 
that information<br><br></div>You shouldn't have to do this yourself. By using the SciJava plugin framework you get discovery of all annotated plugins on your classpath, and processing/indexing of those plugins, for free.<br><br></div>I'm assuming the paradigm that would match your needs is a HandlerService[1]. The service would perform some function (e.g. opening a path) and the behavior of that function would be extensible via HandlerPlugins[2] (e.g. a plugin for handling URLs, files on disk, files in a database, etc...).<br><br></div>The simplest example of "service chooses a plugin appropriate for the circumstances" is the AnimalService tutorial[3]. Note that it's not actually a HandlerService but could easily be converted to one. More complex examples would be the IOService[4] or SCIFIO's FormatService[5].<br><div><br></div><div>Best,<br></div><div>Mark<br></div><div><br>[1] <a href="https://github.com/scijava/scijava-common/blob/scijava-common-2.39.0/src/main/java/org/scijava/plugin/HandlerService.java">https://github.com/scijava/scijava-common/blob/scijava-common-2.39.0/src/main/java/org/scijava/plugin/HandlerService.java</a><br>[2] <a href="https://github.com/scijava/scijava-common/blob/scijava-common-2.39.0/src/main/java/org/scijava/plugin/HandlerPlugin.java">https://github.com/scijava/scijava-common/blob/scijava-common-2.39.0/src/main/java/org/scijava/plugin/HandlerPlugin.java</a><br>[3] <a href="https://github.com/imagej/imagej-tutorials/tree/00394f9f5010d1787b9bf584b6e90eed01beec0d/create-a-new-plugin-type/src/main/java">https://github.com/imagej/imagej-tutorials/tree/00394f9f5010d1787b9bf584b6e90eed01beec0d/create-a-new-plugin-type/src/main/java</a><br>[4] <a href="https://github.com/scijava/scijava-common/blob/scijava-common-2.39.0/src/main/java/org/scijava/io/IOService.java">https://github.com/scijava/scijava-common/blob/scijava-common-2.39.0/src/main/java/org/scijava/io/IOService.java</a><br>[5] <a href="https://github.com/scifio/scifio/blob/scifio-0.21.1/src/main/java/io/scif/services/FormatService.java">https://github.com/scifio/scifio/blob/scifio-0.21.1/src/main/java/io/scif/services/FormatService.java</a></div></div><div class="gmail_extra"><br><div class="gmail_quote">On Wed, Mar 18, 2015 at 6:42 PM, Jay Warrick <span dir="ltr"><<a href="mailto:jay.w.warrick@gmail.com" target="_blank">jay.w.warrick@gmail.com</a>></span> wrote:<br><blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex">Hi All,<br>
<br>
I am using the scijava plugin framework, ImageJ2, and its Plugin service. I would like to allow other people to write a plugin for my software. I'm open to suggestions but I'd probably like to enable them to place their java/jar/class plugin file in a folder, and I could look into that folder to load their plugin. I'm thinking along the lines of how how old ImageJ did things. Does anyone have suggestions or example code (e.g., in FIJI somewhere) for loading/compiling such plugin files during runtime. One of the main things I can't quite envision is how to process the annotations of an external .java file at runtime so that I can utilize that information (e.g., in conjunction with the PluginService). If there is an inherent problem in what I'm hoping to do, please let me know :-) (e.g., if I am provided compiled code, I suspect I might need an annotation index to go with it if I need that information).<br>
<br>
I figured you guys have tackled this problem thoroughly already and thus would be a good resource. Thanks in advance!<br>
<br>
Regards,<br>
<br>
Jay<br>
<br>
<br>
_______________________________________________<br>
ImageJ-devel mailing list<br>
<a href="mailto:ImageJ-devel@imagej.net">ImageJ-devel@imagej.net</a><br>
<a href="http://imagej.net/mailman/listinfo/imagej-devel" target="_blank">http://imagej.net/mailman/listinfo/imagej-devel</a><br>
</blockquote></div><br></div>