public class LibraryService
extends java.lang.Object
implements jadex.bridge.service.types.library.ILibraryService, jadex.commons.IPropertiesProvider
Modifier and Type | Field and Description |
---|---|
protected java.util.Set<jadex.commons.Tuple2<jadex.bridge.IResourceIdentifier,jadex.bridge.IResourceIdentifier>> |
addedlinks
The added links.
|
protected java.util.Set<jadex.commons.Tuple2<jadex.bridge.IResourceIdentifier,jadex.bridge.IResourceIdentifier>> |
addtodo
The delayed add links (could not directly be added because the parent was not there).
|
protected ChangeableURLClassLoader |
baseloader
The base classloader.
|
protected java.util.Map<jadex.bridge.IResourceIdentifier,DelegationURLClassLoader> |
classloaders
The map of managed resources 2xrid (local, remote) -> delegate loader).
|
protected java.util.Map<jadex.bridge.IResourceIdentifier,jadex.commons.future.Future<DelegationURLClassLoader>> |
clfuts
The class loader futures for currently loading class loaders.
|
protected jadex.bridge.IInternalAccess |
component
The component.
|
protected java.lang.Object[] |
initurls
The init urls.
|
static java.lang.String |
LIBRARY_SERVICE
The (standard) Library service name.
|
protected java.util.Set<jadex.bridge.service.types.library.ILibraryServiceListener> |
listeners
LibraryService listeners.
|
protected java.util.Set<java.net.URI> |
nonmanaged
The non-managed urls (cached for speed).
|
protected java.util.Set<jadex.commons.Tuple2<jadex.bridge.IResourceIdentifier,jadex.bridge.IResourceIdentifier>> |
removedlinks
The remove links.
|
protected jadex.commons.Tuple2<jadex.bridge.IResourceIdentifier,java.util.Map<jadex.bridge.IResourceIdentifier,java.util.List<jadex.bridge.IResourceIdentifier>>> |
rids
The dependencies.
|
protected DelegationURLClassLoader |
rootloader
The delegation root loader.
|
protected jadex.bridge.IResourceIdentifier |
rootrid |
static jadex.bridge.IResourceIdentifier |
SYSTEMCPRID
The pseudo system classpath rid.
|
Constructor and Description |
---|
LibraryService()
Creates a new LibraryService.
|
LibraryService(java.lang.ClassLoader baseloader)
Creates a new LibraryService.
|
LibraryService(java.lang.Object[] urls)
Creates a new LibraryService.
|
LibraryService(java.lang.Object[] urls,
java.lang.ClassLoader baseloader)
Creates a new LibraryService.
|
LibraryService(java.lang.Object[] urls,
java.lang.ClassLoader baseloader,
java.util.Map<java.lang.String,java.lang.Object> properties)
Creates a new LibraryService.
|
Modifier and Type | Method and Description |
---|---|
jadex.commons.future.IFuture<java.lang.Void> |
addLibraryServiceListener(jadex.bridge.service.types.library.ILibraryServiceListener listener)
Add an Library Service listener.
|
protected void |
addLink(jadex.bridge.IResourceIdentifier parid,
jadex.bridge.IResourceIdentifier rid)
Add a link.
|
jadex.commons.future.IFuture<jadex.bridge.IResourceIdentifier> |
addResourceIdentifier(jadex.bridge.IResourceIdentifier parid,
jadex.bridge.IResourceIdentifier orid,
boolean workspace)
Add a new resource identifier.
|
protected void |
addSupport(jadex.bridge.IResourceIdentifier rid,
jadex.bridge.IResourceIdentifier parid)
Add support for a rid.
|
jadex.commons.future.IFuture<java.lang.Void> |
addTopLevelURL(java.net.URL purl)
Add a top level url.
|
jadex.commons.future.IFuture<jadex.bridge.IResourceIdentifier> |
addURL(jadex.bridge.IResourceIdentifier parid,
java.net.URL purl)
Add a new url.
|
protected void |
checkLocalRid(jadex.bridge.IResourceIdentifier rid)
Check if rid has local part and if it is null.
|
protected java.net.URL |
checkUri(java.net.URI uri)
Check if a local url is backed by a file.
|
protected java.net.URL |
checkUrl(java.net.URL url)
Check if a local url is backed by a file.
|
protected void |
collectClasspathURLs(java.lang.ClassLoader classloader,
java.util.Set<java.net.URI> set,
java.util.Set<java.lang.String> jarnames)
Collect all URLs belonging to a class loader.
|
protected void |
collectManifestURLs(java.net.URI url,
java.util.Set<java.net.URI> set,
java.util.Set<java.lang.String> jarnames)
Collect all URLs as specified in a manifest.
|
protected jadex.commons.future.IFuture<DelegationURLClassLoader> |
createClassLoader(jadex.bridge.IResourceIdentifier rid,
java.util.Map<jadex.bridge.IResourceIdentifier,java.util.List<jadex.bridge.IResourceIdentifier>> alldeps,
jadex.bridge.IResourceIdentifier support,
boolean workspace)
Create a new classloader.
|
protected DelegationURLClassLoader |
createNewDelegationClassLoader(jadex.bridge.IResourceIdentifier rid,
java.lang.ClassLoader baseloader,
DelegationURLClassLoader[] delegates)
Handle instantiation here, so the DelegationURLClassLoader can be another
implementation.
|
protected jadex.commons.future.IFuture<java.lang.Void> |
downloadResource(jadex.bridge.IResourceIdentifier rid)
Download a resource from another platform.
|
jadex.commons.future.IFuture<java.util.List<jadex.bridge.IResourceIdentifier>> |
getAllResourceIdentifiers()
Get all resource identifiers (does not include urls of parent loader).
|
jadex.commons.future.IFuture<java.util.List<java.net.URL>> |
getAllURLs()
Get all urls (managed, indirect and non-managed from parent loader).
|
jadex.commons.future.IFuture<java.lang.ClassLoader> |
getClassLoader(jadex.bridge.IResourceIdentifier rid)
Returns the current ClassLoader.
|
jadex.commons.future.IFuture<java.lang.ClassLoader> |
getClassLoader(jadex.bridge.IResourceIdentifier rid,
boolean workspace)
Returns the current ClassLoader.
|
protected jadex.commons.future.IFuture<DelegationURLClassLoader> |
getClassLoader(jadex.bridge.IResourceIdentifier rid,
java.util.Map<jadex.bridge.IResourceIdentifier,java.util.List<jadex.bridge.IResourceIdentifier>> alldeps,
jadex.bridge.IResourceIdentifier support,
boolean workspace)
Get or create a classloader for a rid.
|
protected jadex.commons.future.IFuture<jadex.commons.Tuple2<jadex.bridge.IResourceIdentifier,java.util.Map<jadex.bridge.IResourceIdentifier,java.util.List<jadex.bridge.IResourceIdentifier>>>> |
getDependencies(jadex.bridge.IResourceIdentifier rid,
boolean workspace)
Get the dependent urls.
|
protected java.io.File |
getHashRidFile(jadex.bridge.IResourceIdentifier rid)
Get the file for a hash rid.
|
protected java.util.Set<java.net.URI> |
getInternalNonManagedURLs()
Get other contained (but not directly managed) urls from parent classloaders.
|
protected static java.lang.String |
getJarName(java.lang.String filename)
Get the name of a jar file without extension and version info.
|
jadex.commons.future.IFuture<java.util.List<java.net.URL>> |
getNonManagedURLs()
Get other contained (but not directly managed) urls from parent classloaders.
|
jadex.commons.future.IFuture<jadex.commons.Properties> |
getProperties()
Write current state into properties.
|
jadex.commons.future.IFuture<java.util.Set<jadex.commons.Tuple2<jadex.bridge.IResourceIdentifier,jadex.bridge.IResourceIdentifier>>> |
getRemovableLinks()
Get the removable links.
|
jadex.commons.future.IFuture<jadex.bridge.IInputConnection> |
getResourceAsStream(jadex.bridge.IResourceIdentifier rid)
Get a resource as stream (jar).
|
jadex.commons.future.IFuture<jadex.bridge.IResourceIdentifier> |
getResourceIdentifier(java.net.URL url)
Get the resource identifier for an url.
|
jadex.commons.future.IFuture<jadex.commons.Tuple2<jadex.bridge.IResourceIdentifier,java.util.Map<jadex.bridge.IResourceIdentifier,java.util.List<jadex.bridge.IResourceIdentifier>>>> |
getResourceIdentifiers()
Get the rids.
|
protected java.net.URL |
getRidUrl(jadex.bridge.IResourceIdentifier rid)
Get the local file url for a rid.
|
jadex.bridge.IResourceIdentifier |
getRootResourceIdentifier()
Get the root resource identifier.
|
java.util.Set<jadex.bridge.IResourceIdentifier> |
internalgetAllResourceIdentifiers()
Get all managed resource identifiers inlcuding all subdependencies.
|
protected jadex.commons.future.IFuture<jadex.bridge.IResourceIdentifier> |
internalGetResourceIdentifier(java.net.URL url)
Get the resource identifier for an url.
|
jadex.commons.Tuple2<jadex.bridge.IResourceIdentifier,java.util.Map<jadex.bridge.IResourceIdentifier,java.util.List<jadex.bridge.IResourceIdentifier>>> |
internalGetResourceIdentifiers() |
protected boolean |
isAvailable(jadex.bridge.IResourceIdentifier rid)
Test, if a resource is available locally.
|
protected void |
notifyAdditionListeners(jadex.bridge.IResourceIdentifier parid,
jadex.bridge.IResourceIdentifier rid)
Notify listeners about addition.
|
protected void |
notifyRemovalListeners(jadex.bridge.IResourceIdentifier parid,
jadex.bridge.IResourceIdentifier rid)
Notify listeners about removal.
|
jadex.commons.future.IFuture<java.lang.Void> |
removeLibraryServiceListener(jadex.bridge.service.types.library.ILibraryServiceListener listener)
Remove an Library Service listener.
|
protected void |
removeLink(jadex.bridge.IResourceIdentifier parid,
jadex.bridge.IResourceIdentifier rid)
Remove a link.
|
jadex.commons.future.IFuture<java.lang.Void> |
removeResourceIdentifier(jadex.bridge.IResourceIdentifier parid,
jadex.bridge.IResourceIdentifier rid)
Remove a resource identifier.
|
protected void |
removeSupport(jadex.bridge.IResourceIdentifier rid,
jadex.bridge.IResourceIdentifier parid)
Remove support for a rid.
|
jadex.commons.future.IFuture<java.lang.Void> |
removeTopLevelURL(java.net.URL url)
Remove a top level url.
|
jadex.commons.future.IFuture<java.lang.Void> |
removeURL(jadex.bridge.IResourceIdentifier parid,
java.net.URL url)
Remove a new url.
|
jadex.commons.future.IFuture<java.lang.Void> |
setProperties(jadex.commons.Properties props)
Update from given properties.
|
jadex.commons.future.IFuture<java.lang.Void> |
shutdownService()
Shutdown the service.
|
jadex.commons.future.IFuture<java.lang.Void> |
startService()
Start the service.
|
public static final java.lang.String LIBRARY_SERVICE
public static final jadex.bridge.IResourceIdentifier SYSTEMCPRID
protected jadex.bridge.IInternalAccess component
protected java.util.Set<jadex.bridge.service.types.library.ILibraryServiceListener> listeners
protected java.lang.Object[] initurls
protected java.util.Map<jadex.bridge.IResourceIdentifier,jadex.commons.future.Future<DelegationURLClassLoader>> clfuts
protected java.util.Map<jadex.bridge.IResourceIdentifier,DelegationURLClassLoader> classloaders
protected ChangeableURLClassLoader baseloader
protected DelegationURLClassLoader rootloader
protected jadex.bridge.IResourceIdentifier rootrid
protected java.util.Set<jadex.commons.Tuple2<jadex.bridge.IResourceIdentifier,jadex.bridge.IResourceIdentifier>> addedlinks
protected java.util.Set<jadex.commons.Tuple2<jadex.bridge.IResourceIdentifier,jadex.bridge.IResourceIdentifier>> removedlinks
protected java.util.Set<jadex.commons.Tuple2<jadex.bridge.IResourceIdentifier,jadex.bridge.IResourceIdentifier>> addtodo
protected jadex.commons.Tuple2<jadex.bridge.IResourceIdentifier,java.util.Map<jadex.bridge.IResourceIdentifier,java.util.List<jadex.bridge.IResourceIdentifier>>> rids
protected java.util.Set<java.net.URI> nonmanaged
public LibraryService()
public LibraryService(java.lang.Object[] urls)
urls
- Urls may be specified as java.net.URLs, java.io.Files or java.lang.Strings.
Strings are interpreted as relative files (relative to current directory),
absolute files or URLs (whatever can be found).public LibraryService(java.lang.ClassLoader baseloader)
baseloader
- The base classloader that is parent of all subloaders.public LibraryService(java.lang.Object[] urls, java.lang.ClassLoader baseloader)
urls
- Urls may be specified as java.net.URLs, java.io.Files or java.lang.Strings.
Strings are interpreted as relative files (relative to current directory),
absolute files or URLs (whatever can be found).public LibraryService(java.lang.Object[] urls, java.lang.ClassLoader baseloader, java.util.Map<java.lang.String,java.lang.Object> properties)
urls
- Urls may be specified as java.net.URLs, java.io.Files or java.lang.Strings.
Strings are interpreted as relative files (relative to current directory),
absolute files or URLs (whatever can be found).protected void checkLocalRid(jadex.bridge.IResourceIdentifier rid)
public jadex.commons.future.IFuture<jadex.bridge.IResourceIdentifier> addResourceIdentifier(jadex.bridge.IResourceIdentifier parid, jadex.bridge.IResourceIdentifier orid, boolean workspace)
addResourceIdentifier
in interface jadex.bridge.service.types.library.ILibraryService
parid
- The optional parent rid.orid
- The resource identifier.public jadex.commons.future.IFuture<java.lang.Void> removeResourceIdentifier(jadex.bridge.IResourceIdentifier parid, jadex.bridge.IResourceIdentifier rid)
removeResourceIdentifier
in interface jadex.bridge.service.types.library.ILibraryService
uri
- The resource identifier.public jadex.bridge.IResourceIdentifier getRootResourceIdentifier()
getRootResourceIdentifier
in interface jadex.bridge.service.types.library.ILibraryService
uri
- The url.public jadex.commons.future.IFuture<java.util.List<jadex.bridge.IResourceIdentifier>> getAllResourceIdentifiers()
getAllResourceIdentifiers
in interface jadex.bridge.service.types.library.ILibraryService
public jadex.commons.future.IFuture<jadex.commons.Tuple2<jadex.bridge.IResourceIdentifier,java.util.Map<jadex.bridge.IResourceIdentifier,java.util.List<jadex.bridge.IResourceIdentifier>>>> getResourceIdentifiers()
getResourceIdentifiers
in interface jadex.bridge.service.types.library.ILibraryService
public jadex.commons.Tuple2<jadex.bridge.IResourceIdentifier,java.util.Map<jadex.bridge.IResourceIdentifier,java.util.List<jadex.bridge.IResourceIdentifier>>> internalGetResourceIdentifiers()
public jadex.commons.future.IFuture<jadex.bridge.IResourceIdentifier> addURL(jadex.bridge.IResourceIdentifier parid, java.net.URL purl)
addURL
in interface jadex.bridge.service.types.library.ILibraryService
uri
- The resource identifier.public jadex.commons.future.IFuture<java.lang.Void> removeURL(jadex.bridge.IResourceIdentifier parid, java.net.URL url)
removeURL
in interface jadex.bridge.service.types.library.ILibraryService
url
- The resource identifier.public jadex.commons.future.IFuture<java.lang.Void> addTopLevelURL(java.net.URL purl)
addTopLevelURL
in interface jadex.bridge.service.types.library.ILibraryService
uri
- The url.public jadex.commons.future.IFuture<java.lang.Void> removeTopLevelURL(java.net.URL url)
removeTopLevelURL
in interface jadex.bridge.service.types.library.ILibraryService
url
- The url.
note: top level url removal will only take
effect after restart of the platform.public jadex.commons.future.IFuture<java.util.List<java.net.URL>> getNonManagedURLs()
getNonManagedURLs
in interface jadex.bridge.service.types.library.ILibraryService
protected java.util.Set<java.net.URI> getInternalNonManagedURLs()
public jadex.commons.future.IFuture<java.util.List<java.net.URL>> getAllURLs()
getAllURLs
in interface jadex.bridge.service.types.library.ILibraryService
public jadex.commons.future.IFuture<java.lang.ClassLoader> getClassLoader(jadex.bridge.IResourceIdentifier rid)
getClassLoader
in interface jadex.bridge.service.types.library.ILibraryService
public jadex.commons.future.IFuture<java.lang.ClassLoader> getClassLoader(jadex.bridge.IResourceIdentifier rid, boolean workspace)
getClassLoader
in interface jadex.bridge.service.types.library.ILibraryService
rid
- The resource identifier (null for current global loader).public jadex.commons.future.IFuture<jadex.bridge.IResourceIdentifier> getResourceIdentifier(java.net.URL url)
getResourceIdentifier
in interface jadex.bridge.service.types.library.ILibraryService
public jadex.commons.future.IFuture<java.lang.Void> addLibraryServiceListener(jadex.bridge.service.types.library.ILibraryServiceListener listener)
addLibraryServiceListener
in interface jadex.bridge.service.types.library.ILibraryService
listener
- The listener to be added.public jadex.commons.future.IFuture<java.lang.Void> removeLibraryServiceListener(jadex.bridge.service.types.library.ILibraryServiceListener listener)
removeLibraryServiceListener
in interface jadex.bridge.service.types.library.ILibraryService
listener
- The listener to be removed.protected jadex.commons.future.IFuture<DelegationURLClassLoader> getClassLoader(jadex.bridge.IResourceIdentifier rid, java.util.Map<jadex.bridge.IResourceIdentifier,java.util.List<jadex.bridge.IResourceIdentifier>> alldeps, jadex.bridge.IResourceIdentifier support, boolean workspace)
protected jadex.commons.future.IFuture<DelegationURLClassLoader> createClassLoader(jadex.bridge.IResourceIdentifier rid, java.util.Map<jadex.bridge.IResourceIdentifier,java.util.List<jadex.bridge.IResourceIdentifier>> alldeps, jadex.bridge.IResourceIdentifier support, boolean workspace)
protected DelegationURLClassLoader createNewDelegationClassLoader(jadex.bridge.IResourceIdentifier rid, java.lang.ClassLoader baseloader, DelegationURLClassLoader[] delegates)
rid
- baseloader
- delegates
- DelegationURLClassLoader
or subclass.protected java.net.URL getRidUrl(jadex.bridge.IResourceIdentifier rid)
protected boolean isAvailable(jadex.bridge.IResourceIdentifier rid)
protected java.io.File getHashRidFile(jadex.bridge.IResourceIdentifier rid)
protected jadex.commons.future.IFuture<java.lang.Void> downloadResource(jadex.bridge.IResourceIdentifier rid)
public jadex.commons.future.IFuture<jadex.bridge.IInputConnection> getResourceAsStream(jadex.bridge.IResourceIdentifier rid)
getResourceAsStream
in interface jadex.bridge.service.types.library.ILibraryService
protected jadex.commons.future.IFuture<jadex.commons.Tuple2<jadex.bridge.IResourceIdentifier,java.util.Map<jadex.bridge.IResourceIdentifier,java.util.List<jadex.bridge.IResourceIdentifier>>>> getDependencies(jadex.bridge.IResourceIdentifier rid, boolean workspace)
protected void addSupport(jadex.bridge.IResourceIdentifier rid, jadex.bridge.IResourceIdentifier parid)
protected void removeSupport(jadex.bridge.IResourceIdentifier rid, jadex.bridge.IResourceIdentifier parid)
protected void notifyAdditionListeners(jadex.bridge.IResourceIdentifier parid, jadex.bridge.IResourceIdentifier rid)
protected void notifyRemovalListeners(jadex.bridge.IResourceIdentifier parid, jadex.bridge.IResourceIdentifier rid)
protected jadex.commons.future.IFuture<jadex.bridge.IResourceIdentifier> internalGetResourceIdentifier(java.net.URL url)
public jadex.commons.future.IFuture<java.lang.Void> startService()
public jadex.commons.future.IFuture<java.lang.Void> shutdownService()
listener
- The listener.protected void collectClasspathURLs(java.lang.ClassLoader classloader, java.util.Set<java.net.URI> set, java.util.Set<java.lang.String> jarnames)
protected static java.lang.String getJarName(java.lang.String filename)
protected void collectManifestURLs(java.net.URI url, java.util.Set<java.net.URI> set, java.util.Set<java.lang.String> jarnames)
protected void addLink(jadex.bridge.IResourceIdentifier parid, jadex.bridge.IResourceIdentifier rid)
protected void removeLink(jadex.bridge.IResourceIdentifier parid, jadex.bridge.IResourceIdentifier rid)
public jadex.commons.future.IFuture<java.util.Set<jadex.commons.Tuple2<jadex.bridge.IResourceIdentifier,jadex.bridge.IResourceIdentifier>>> getRemovableLinks()
getRemovableLinks
in interface jadex.bridge.service.types.library.ILibraryService
public jadex.commons.future.IFuture<java.lang.Void> setProperties(jadex.commons.Properties props)
setProperties
in interface jadex.commons.IPropertiesProvider
public jadex.commons.future.IFuture<jadex.commons.Properties> getProperties()
getProperties
in interface jadex.commons.IPropertiesProvider
protected java.net.URL checkUri(java.net.URI uri)
protected java.net.URL checkUrl(java.net.URL url)
public java.util.Set<jadex.bridge.IResourceIdentifier> internalgetAllResourceIdentifiers()