as i dug into the topic as well already i want to add how i figure we should 
tackle the issue.

On 30.04.2012 08:19, Michaël Michaud wrote:
>> Another option might be to reserve a folder name (say ext/plugins) that is 
>> excluded from the Sextant search.  Each plugin can then have a suitably 
>> named sub-folder to contain whatever data is available to the average user 
>> (images, symbols, etc).
> My proposition was to create this folder (currently FillPatterns folder) 
> beside ext folder and not inside (ex. lib/resources/FillPatterns/), because 
> OpenJUMP plugin manager does a recursive scan of the ext plugin folder (which 
> is convenient for plugins wich have many dependencies like Sextante).

first and foremost, let's keep the simple structure we have. /lib/ext for 
additional extensions and /lib for application libraries or data used by core.

moving folders out of /lib/ext treats symptoms (sometimes easy, right) but does 
not solve the root cause, which lays within the loading routines of 
PluginManager and Sextante Extension. 

> It would probably be possible to exclude FillPatterns folder from Sextante 
> search, but it seems more difficult to me because I think Sextante uses the 
> same mechanism as any plugin, i.e. the one which recursively scans the ext 
> folder and its subfolders. Indeed, sextante loading mechanism is quite 
> complex, and I only could prove it scans FillPatterns from tests, not from 
> the source code :-(

let me have a look, now the source is in our svn. my current vision would be:

for sextante
- scan only *.jar/*.zip files within a dedicated lib/ext/sextante subfolder
- cache the results of scanning within state.xml if the performance boost of 
the above is not enough. save name, size and time attributes and rescan if one 
of them changed.
- check speed over a network share as loading from local disks is already fast 
enough on current hardware

for PluginManager (general loading)
- although the design allowed placing extension jars into lib/ext/subfolders, i 
don't know of extensions that do that and i'd like to retire this.
- only scan lib/ext/*.{zip,jar} for performance reasons, exclude subfolders
- cache the result of scan in state xml, similar as stated above
- add custom classloader that automatically adds a folder and it's contents if 
the name matches the *.jar name e.g. sextante-0.6.jar would add 
lib/ext/sextante-0.6 if existing. i'd reuse the classloader i already have for 
the cts extension, which is a nifty littly thing that actually searches the 
parent classloader /after/ the custom entries so that different extensions 
actually are able to use different versions of the same library.
 
for the future (just brainstorming here)
- when this is done we should look into a live download/install/en-/disable 
plugin manager functionality
- for this i am opposed to central xml files, that have to be maintained but 
rather have extensions deliver this kind of information, so that authors keep 
them up to date.
- we would have to track installed files for uninstallation *or* put the 
extensions in private folders altogether

..ede

------------------------------------------------------------------------------
Live Security Virtual Conference
Exclusive live event will cover all the ways today's security and 
threat landscape has changed and how IT managers can respond. Discussions 
will include endpoint security, mobile security and the latest in malware 
threats. http://www.accelacomm.com/jaw/sfrnl04242012/114/50122263/
_______________________________________________
Jump-pilot-devel mailing list
Jump-pilot-devel@lists.sourceforge.net
https://lists.sourceforge.net/lists/listinfo/jump-pilot-devel

Reply via email to