+ All Categories
Home > Documents > Advanced DSpace: plugins

Advanced DSpace: plugins

Date post: 02-Jan-2017
Category:
Upload: doanhuong
View: 224 times
Download: 0 times
Share this document with a friend
30
Advanced DSpace: plugins
Transcript
Page 1: Advanced DSpace: plugins

Advanced DSpace: plugins

Page 2: Advanced DSpace: plugins

wiki.dspace.org/PluginManager

Page 3: Advanced DSpace: plugins

Three types of plugin:

- - -

singleton plugins named plugins sequence plugins

Page 4: Advanced DSpace: plugins

singleton plugins

Page 5: Advanced DSpace: plugins

key characteristic: only one implementing class

Page 6: Advanced DSpace: plugins

example: site authentication

Page 7: Advanced DSpace: plugins

example: site authenticationplugin.single.org.dspace.app.webui.SiteAuthenticator = com.hp.hpl.CustomAuthenticator

Page 8: Advanced DSpace: plugins

example: site authenticationplugin.single.org.dspace.app.webui.SiteAuthenticator = com.hp.hpl.CustomAuthenticator

Page 9: Advanced DSpace: plugins

plugin.single.org.dspace.app.webui.SiteAuthenticator = com.hp.hpl.CustomAuthenticator

dspace.cfg:

FooServlet.java:SiteAuthenticator siteAuth = (SiteAuthenticator) PluginManager.getSinglePlugin(SiteAuthenticator.class);

Page 10: Advanced DSpace: plugins

when to use:

Page 11: Advanced DSpace: plugins

When you need a uniform mechanism to perform a given function,but don't want to be constrained to that mechanism forever.

when to use:

Page 12: Advanced DSpace: plugins

named plugins

Page 13: Advanced DSpace: plugins

key characteristic: multiple implementations available, app choses one by name

Page 14: Advanced DSpace: plugins

example: crosswalks

Page 15: Advanced DSpace: plugins

example: crosswalksplugin.named.org.dspace.content.crosswalk.DisseminationCrosswalk = \ org.dspace.content.Crosswalk.SimpleDCDisseminationCrosswalk = dc \ org.dspace.content.Crosswalk.METSDisseminationCrosswalk = mets

Page 16: Advanced DSpace: plugins

example: crosswalksplugin.named.org.dspace.content.crosswalk.DisseminationCrosswalk = \ org.dspace.content.Crosswalk.SimpleDCDisseminationCrosswalk = dc \ org.dspace.content.Crosswalk.METSDisseminationCrosswalk = mets

Page 17: Advanced DSpace: plugins

dspace.cfg:

DisseminationCrosswalk xwalk = (DisseminationCrosswalk) PluginManager.getNamedPlugin(DisseminationCrosswalk.class, “dc”);

plugin.named.org.dspace.content.crosswalk.DisseminationCrosswalk = \ org.dspace.content.Crosswalk.SimpleDCDisseminationCrosswalk = dc \ org.dspace.content.Crosswalk.METSDisseminationCrosswalk = mets

FooDisseminator.java

Page 18: Advanced DSpace: plugins

note:

named plugins must have names (keys) that are unique for the interface

Page 19: Advanced DSpace: plugins

note:

names may contain any characters other than',' and '=', but alphanumeric is preferred

Page 20: Advanced DSpace: plugins

when to use:

Page 21: Advanced DSpace: plugins

when to use:

When you need multiple implementations to be available / supportedthroughout the application, leaving the implementing classes to choosewhich option to use.

Page 22: Advanced DSpace: plugins

sequence plugins

Page 23: Advanced DSpace: plugins

key characteristic: “stack of singletons”

Page 24: Advanced DSpace: plugins

example: stackable authentication

Page 25: Advanced DSpace: plugins

plugin.sequence.org.dspace.authenticate.AuthenticationMethod = \ org.dspace.authenticate.X509Authentication, \ org.dspace.authenticate.PasswordAuthentication

example: stackable authentication

Page 26: Advanced DSpace: plugins

plugin.sequence.org.dspace.authenticate.AuthenticationMethod = \ org.dspace.authenticate.X509Authentication, \ org.dspace.authenticate.PasswordAuthentication

example: stackable authentication

Page 27: Advanced DSpace: plugins

dspace.cfg:plugin.sequence.org.dspace.authenticate.AuthenticationMethod = \ org.dspace.authenticate.X509Authentication, \ org.dspace.authenticate.PasswordAuthentication

AuthenticationManager.java:private static AuthenticationMethod stack[] = (AuthenticationMethod[]) PluginManager.getPluginSequence(AuthenticationMethod.class);

Page 28: Advanced DSpace: plugins

when to use:

Page 29: Advanced DSpace: plugins

when to use:

When you want to pass the responsibility for processing through astack of implementing classes.

Page 30: Advanced DSpace: plugins

wiki.dspace.org/Category:HOWTOwiki.dspace.org/Guide_to_Developing_with_DSpace

[email protected]


Recommended