Package jadex.platform.service.library
Class LibraryService
- java.lang.Object
- 
- jadex.platform.service.library.LibraryService
 
- 
- All Implemented Interfaces:
- ILibraryService,- IPropertiesProvider
 
 public class LibraryService extends java.lang.Object implements ILibraryService, IPropertiesProvider Library service for loading classpath elements.
- 
- 
Field SummaryFields Modifier and Type Field Description protected java.util.Set<Tuple2<IResourceIdentifier,IResourceIdentifier>>addedlinksThe added links.protected java.util.Set<Tuple2<IResourceIdentifier,IResourceIdentifier>>addtodoThe delayed add links (could not directly be added because the parent was not there).protected ChangeableURLClassLoaderbaseloaderThe base classloader.protected java.util.Map<IResourceIdentifier,DelegationURLClassLoader>classloadersThe map of managed resources 2xrid (local, remote) -> delegate loader).protected java.util.Map<IResourceIdentifier,Future<DelegationURLClassLoader>>clfutsThe class loader futures for currently loading class loaders.protected IInternalAccesscomponentThe component.protected java.util.List<java.lang.String[]>componentmodelsCached list of component models.protected java.lang.Object[]initurlsThe init urls.static java.lang.StringLIBRARY_SERVICEThe (standard) Library service name.protected java.util.Set<ILibraryServiceListener>listenersLibraryService listeners.protected java.util.Set<java.net.URI>nonmanagedThe non-managed urls (cached for speed).protected java.util.Set<Tuple2<IResourceIdentifier,IResourceIdentifier>>removedlinksThe remove links.protected Tuple2<IResourceIdentifier,java.util.Map<IResourceIdentifier,java.util.List<IResourceIdentifier>>>ridsThe dependencies.protected DelegationURLClassLoaderrootloaderThe delegation root loader.protected IResourceIdentifierrootridprotected IFuture<java.util.Collection<java.lang.String[]>>searchstatic IResourceIdentifierSYSTEMCPRIDThe pseudo system classpath rid.
 - 
Constructor SummaryConstructors Constructor 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.
 - 
Method SummaryAll Methods Static Methods Instance Methods Concrete Methods Modifier and Type Method Description IFuture<java.lang.Void>addLibraryServiceListener(ILibraryServiceListener listener)Add an Library Service listener.protected voidaddLink(IResourceIdentifier parid, IResourceIdentifier rid)Add a link.IFuture<IResourceIdentifier>addResourceIdentifier(IResourceIdentifier parid, IResourceIdentifier orid, boolean workspace)Add a new resource identifier.protected voidaddSupport(IResourceIdentifier rid, IResourceIdentifier parid)Add support for a rid.IFuture<java.lang.Void>addTopLevelURL(java.net.URL purl)Add a top level url.IFuture<IResourceIdentifier>addURL(IResourceIdentifier parid, java.net.URL purl)Add a new url.protected voidcheckLocalRid(IResourceIdentifier rid)Check if rid has local part and if it is null.protected java.net.URLcheckUri(java.net.URI uri)Check if a local url is backed by a file.protected java.net.URLcheckUrl(java.net.URL url)Check if a local url is backed by a file.protected voidcollectClasspathURLs(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 voidcollectManifestURLs(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 IFuture<DelegationURLClassLoader>createClassLoader(IResourceIdentifier rid, java.util.Map<IResourceIdentifier,java.util.List<IResourceIdentifier>> alldeps, IResourceIdentifier support, boolean workspace)Create a new classloader.protected DelegationURLClassLoadercreateNewDelegationClassLoader(IResourceIdentifier rid, java.lang.ClassLoader baseloader, DelegationURLClassLoader[] delegates)Handle instantiation here, so the DelegationURLClassLoader can be another implementation.protected IFuture<java.lang.Void>downloadResource(IResourceIdentifier rid)Download a resource from another platform.IFuture<java.util.List<IResourceIdentifier>>getAllResourceIdentifiers()Get all resource identifiers (does not include urls of parent loader).IFuture<java.util.List<java.net.URL>>getAllURLs()Get all urls (managed, indirect and non-managed from parent loader).IFuture<java.lang.ClassLoader>getClassLoader(IResourceIdentifier rid)Returns the current ClassLoader.IFuture<java.lang.ClassLoader>getClassLoader(IResourceIdentifier rid, boolean workspace)Returns the current ClassLoader.protected IFuture<DelegationURLClassLoader>getClassLoader(IResourceIdentifier rid, java.util.Map<IResourceIdentifier,java.util.List<IResourceIdentifier>> alldeps, IResourceIdentifier support, boolean workspace)Get or create a classloader for a rid.IFuture<java.util.Collection<java.lang.String[]>>getComponentModels()todo: support all component models Get all startable component models (currently only Java classes with @Agent).protected IFuture<Tuple2<IResourceIdentifier,java.util.Map<IResourceIdentifier,java.util.List<IResourceIdentifier>>>>getDependencies(IResourceIdentifier rid, boolean workspace)Get the dependent urls.protected java.io.FilegetHashRidFile(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.StringgetJarName(java.lang.String filename)Get the name of a jar file without extension and version info.IFuture<java.util.List<java.net.URL>>getNonManagedURLs()Get other contained (but not directly managed) urls from parent classloaders.IFuture<Properties>getProperties()Write current state into properties.IFuture<java.util.Set<Tuple2<IResourceIdentifier,IResourceIdentifier>>>getRemovableLinks()Get the removable links.IFuture<IInputConnection>getResourceAsStream(IResourceIdentifier rid)Get a resource as stream (jar).IFuture<IResourceIdentifier>getResourceIdentifier(java.net.URL url)Get the resource identifier for an url.IFuture<Tuple2<IResourceIdentifier,java.util.Map<IResourceIdentifier,java.util.List<IResourceIdentifier>>>>getResourceIdentifiers()Get the rids.protected java.net.URLgetRidUrl(IResourceIdentifier rid)Get the local file url for a rid.IResourceIdentifiergetRootResourceIdentifier()Get the root resource identifier.java.util.Set<IResourceIdentifier>internalgetAllResourceIdentifiers()Get all managed resource identifiers inlcuding all subdependencies.protected IFuture<IResourceIdentifier>internalGetResourceIdentifier(java.net.URL url)Get the resource identifier for an url.Tuple2<IResourceIdentifier,java.util.Map<IResourceIdentifier,java.util.List<IResourceIdentifier>>>internalGetResourceIdentifiers()protected booleanisAvailable(IResourceIdentifier rid)Test, if a resource is available locally.protected voidnotifyAdditionListeners(IResourceIdentifier parid, IResourceIdentifier rid)Notify listeners about addition.protected voidnotifyRemovalListeners(IResourceIdentifier parid, IResourceIdentifier rid)Notify listeners about removal.IFuture<java.lang.Void>removeLibraryServiceListener(ILibraryServiceListener listener)Remove an Library Service listener.protected voidremoveLink(IResourceIdentifier parid, IResourceIdentifier rid)Remove a link.IFuture<java.lang.Void>removeResourceIdentifier(IResourceIdentifier parid, IResourceIdentifier rid)Remove a resource identifier.protected voidremoveSupport(IResourceIdentifier rid, IResourceIdentifier parid)Remove support for a rid.IFuture<java.lang.Void>removeTopLevelURL(java.net.URL url)Remove a top level url.IFuture<java.lang.Void>removeURL(IResourceIdentifier parid, java.net.URL url)Remove a new url.IFuture<java.lang.Void>setProperties(Properties props)Update from given properties.IFuture<java.lang.Void>shutdownService()Shutdown the service.IFuture<java.lang.Void>startService()Start the service.
 
- 
- 
- 
Field Detail- 
LIBRARY_SERVICEpublic static final java.lang.String LIBRARY_SERVICE The (standard) Library service name.- See Also:
- Constant Field Values
 
 - 
SYSTEMCPRIDpublic static final IResourceIdentifier SYSTEMCPRID The pseudo system classpath rid.
 - 
componentprotected IInternalAccess component The component.
 - 
listenersprotected java.util.Set<ILibraryServiceListener> listeners LibraryService listeners.
 - 
initurlsprotected java.lang.Object[] initurls The init urls.
 - 
clfutsprotected java.util.Map<IResourceIdentifier,Future<DelegationURLClassLoader>> clfuts The class loader futures for currently loading class loaders.
 - 
classloadersprotected java.util.Map<IResourceIdentifier,DelegationURLClassLoader> classloaders The map of managed resources 2xrid (local, remote) -> delegate loader).
 - 
baseloaderprotected ChangeableURLClassLoader baseloader The base classloader.
 - 
rootloaderprotected DelegationURLClassLoader rootloader The delegation root loader.
 - 
rootridprotected IResourceIdentifier rootrid 
 - 
addedlinksprotected java.util.Set<Tuple2<IResourceIdentifier,IResourceIdentifier>> addedlinks The added links.
 - 
removedlinksprotected java.util.Set<Tuple2<IResourceIdentifier,IResourceIdentifier>> removedlinks The remove links.
 - 
addtodoprotected java.util.Set<Tuple2<IResourceIdentifier,IResourceIdentifier>> addtodo The delayed add links (could not directly be added because the parent was not there).
 - 
ridsprotected Tuple2<IResourceIdentifier,java.util.Map<IResourceIdentifier,java.util.List<IResourceIdentifier>>> rids The dependencies.
 - 
nonmanagedprotected java.util.Set<java.net.URI> nonmanaged The non-managed urls (cached for speed).
 - 
componentmodelsprotected java.util.List<java.lang.String[]> componentmodels Cached list of component models.
 - 
searchprotected IFuture<java.util.Collection<java.lang.String[]>> search 
 
- 
 - 
Constructor Detail- 
LibraryServicepublic LibraryService() Creates a new LibraryService.
 - 
LibraryServicepublic LibraryService(java.lang.Object[] urls) Creates a new LibraryService.- Parameters:
- 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).
 
 - 
LibraryServicepublic LibraryService(java.lang.ClassLoader baseloader) Creates a new LibraryService.- Parameters:
- baseloader- The base classloader that is parent of all subloaders.
 
 - 
LibraryServicepublic LibraryService(java.lang.Object[] urls, java.lang.ClassLoader baseloader)Creates a new LibraryService.- Parameters:
- 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).
 
 - 
LibraryServicepublic LibraryService(java.lang.Object[] urls, java.lang.ClassLoader baseloader, java.util.Map<java.lang.String,java.lang.Object> properties)Creates a new LibraryService.- Parameters:
- 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).
 
 
- 
 - 
Method Detail- 
checkLocalRidprotected void checkLocalRid(IResourceIdentifier rid) Check if rid has local part and if it is null.
 - 
addResourceIdentifierpublic IFuture<IResourceIdentifier> addResourceIdentifier(IResourceIdentifier parid, IResourceIdentifier orid, boolean workspace) Add a new resource identifier.- Specified by:
- addResourceIdentifierin interface- ILibraryService
- Parameters:
- parid- The optional parent rid.
- orid- The resource identifier.
 
 - 
removeResourceIdentifierpublic IFuture<java.lang.Void> removeResourceIdentifier(IResourceIdentifier parid, IResourceIdentifier rid) Remove a resource identifier.- Specified by:
- removeResourceIdentifierin interface- ILibraryService
- Parameters:
- uri- The resource identifier.
 
 - 
getRootResourceIdentifierpublic IResourceIdentifier getRootResourceIdentifier() Get the root resource identifier.- Specified by:
- getRootResourceIdentifierin interface- ILibraryService
- Parameters:
- uri- The url.
- Returns:
- The corresponding resource identifier.
 
 - 
getAllResourceIdentifierspublic IFuture<java.util.List<IResourceIdentifier>> getAllResourceIdentifiers() Get all resource identifiers (does not include urls of parent loader).- Specified by:
- getAllResourceIdentifiersin interface- ILibraryService
- Returns:
- The list of resource identifiers.
 
 - 
getResourceIdentifierspublic IFuture<Tuple2<IResourceIdentifier,java.util.Map<IResourceIdentifier,java.util.List<IResourceIdentifier>>>> getResourceIdentifiers() Get the rids.- Specified by:
- getResourceIdentifiersin interface- ILibraryService
 
 - 
internalGetResourceIdentifierspublic Tuple2<IResourceIdentifier,java.util.Map<IResourceIdentifier,java.util.List<IResourceIdentifier>>> internalGetResourceIdentifiers() 
 - 
addURLpublic IFuture<IResourceIdentifier> addURL(IResourceIdentifier parid, java.net.URL purl) Add a new url.- Specified by:
- addURLin interface- ILibraryService
- Parameters:
- uri- The resource identifier.
 
 - 
removeURLpublic IFuture<java.lang.Void> removeURL(IResourceIdentifier parid, java.net.URL url) Remove a new url.- Specified by:
- removeURLin interface- ILibraryService
- Parameters:
- url- The resource identifier.
- parid- The resource identifier (null for root entry).
 
 - 
addTopLevelURLpublic IFuture<java.lang.Void> addTopLevelURL(java.net.URL purl) Add a top level url. A top level url will be available for all subordinated resources.- Specified by:
- addTopLevelURLin interface- ILibraryService
- Parameters:
- uri- The url.
 
 - 
removeTopLevelURLpublic IFuture<java.lang.Void> removeTopLevelURL(java.net.URL url) Remove a top level url. A top level url will be available for all subordinated resources.- Specified by:
- removeTopLevelURLin interface- ILibraryService
- Parameters:
- url- The url. note: top level url removal will only take effect after restart of the platform.
 
 - 
getNonManagedURLspublic IFuture<java.util.List<java.net.URL>> getNonManagedURLs() Get other contained (but not directly managed) urls from parent classloaders.- Specified by:
- getNonManagedURLsin interface- ILibraryService
- Returns:
- The list of urls.
 
 - 
getInternalNonManagedURLsprotected java.util.Set<java.net.URI> getInternalNonManagedURLs() Get other contained (but not directly managed) urls from parent classloaders.- Returns:
- The set of urls.
 
 - 
getAllURLspublic IFuture<java.util.List<java.net.URL>> getAllURLs() Get all urls (managed, indirect and non-managed from parent loader).- Specified by:
- getAllURLsin interface- ILibraryService
- Returns:
- The list of urls.
 
 - 
getClassLoaderpublic IFuture<java.lang.ClassLoader> getClassLoader(IResourceIdentifier rid) Returns the current ClassLoader.- Specified by:
- getClassLoaderin interface- ILibraryService
- Parameters:
- rid- The resource identifier.
- Returns:
- the current ClassLoader
 
 - 
getClassLoaderpublic IFuture<java.lang.ClassLoader> getClassLoader(IResourceIdentifier rid, boolean workspace) Returns the current ClassLoader.- Specified by:
- getClassLoaderin interface- ILibraryService
- Parameters:
- rid- The resource identifier (null for current global loader).
- workspace- True if workspace resolution is ok.
- Returns:
- the current ClassLoader
 
 - 
getResourceIdentifierpublic IFuture<IResourceIdentifier> getResourceIdentifier(java.net.URL url) Get the resource identifier for an url.- Specified by:
- getResourceIdentifierin interface- ILibraryService
- Parameters:
- url- The url.
- Returns:
- The resource identifier.
 
 - 
addLibraryServiceListenerpublic IFuture<java.lang.Void> addLibraryServiceListener(ILibraryServiceListener listener) Add an Library Service listener. The listener is registered for changes in the loaded library states.- Specified by:
- addLibraryServiceListenerin interface- ILibraryService
- Parameters:
- listener- The listener to be added.
 
 - 
removeLibraryServiceListenerpublic IFuture<java.lang.Void> removeLibraryServiceListener(ILibraryServiceListener listener) Remove an Library Service listener.- Specified by:
- removeLibraryServiceListenerin interface- ILibraryService
- Parameters:
- listener- The listener to be removed.
 
 - 
getClassLoaderprotected IFuture<DelegationURLClassLoader> getClassLoader(IResourceIdentifier rid, java.util.Map<IResourceIdentifier,java.util.List<IResourceIdentifier>> alldeps, IResourceIdentifier support, boolean workspace) Get or create a classloader for a rid.
 - 
createClassLoaderprotected IFuture<DelegationURLClassLoader> createClassLoader(IResourceIdentifier rid, java.util.Map<IResourceIdentifier,java.util.List<IResourceIdentifier>> alldeps, IResourceIdentifier support, boolean workspace) Create a new classloader.
 - 
createNewDelegationClassLoaderprotected DelegationURLClassLoader createNewDelegationClassLoader(IResourceIdentifier rid, java.lang.ClassLoader baseloader, DelegationURLClassLoader[] delegates) Handle instantiation here, so the DelegationURLClassLoader can be another implementation.- Parameters:
- rid-
- baseloader-
- delegates-
- Returns:
- DelegationURLClassLoaderor subclass.
 
 - 
getRidUrlprotected java.net.URL getRidUrl(IResourceIdentifier rid) Get the local file url for a rid.
 - 
isAvailableprotected boolean isAvailable(IResourceIdentifier rid) Test, if a resource is available locally.
 - 
getHashRidFileprotected java.io.File getHashRidFile(IResourceIdentifier rid) Get the file for a hash rid.
 - 
downloadResourceprotected IFuture<java.lang.Void> downloadResource(IResourceIdentifier rid) Download a resource from another platform.
 - 
getResourceAsStreampublic IFuture<IInputConnection> getResourceAsStream(IResourceIdentifier rid) Get a resource as stream (jar).- Specified by:
- getResourceAsStreamin interface- ILibraryService
 
 - 
getDependenciesprotected IFuture<Tuple2<IResourceIdentifier,java.util.Map<IResourceIdentifier,java.util.List<IResourceIdentifier>>>> getDependencies(IResourceIdentifier rid, boolean workspace) Get the dependent urls.
 - 
addSupportprotected void addSupport(IResourceIdentifier rid, IResourceIdentifier parid) Add support for a rid.
 - 
removeSupportprotected void removeSupport(IResourceIdentifier rid, IResourceIdentifier parid) Remove support for a rid.
 - 
notifyAdditionListenersprotected void notifyAdditionListeners(IResourceIdentifier parid, IResourceIdentifier rid) Notify listeners about addition.
 - 
notifyRemovalListenersprotected void notifyRemovalListeners(IResourceIdentifier parid, IResourceIdentifier rid) Notify listeners about removal.
 - 
internalGetResourceIdentifierprotected IFuture<IResourceIdentifier> internalGetResourceIdentifier(java.net.URL url) Get the resource identifier for an url.
 - 
startServicepublic IFuture<java.lang.Void> startService() Start the service.
 - 
shutdownServicepublic IFuture<java.lang.Void> shutdownService() Shutdown the service. Releases all cached resources and shuts down the library service.- Parameters:
- listener- The listener.
 
 - 
collectClasspathURLsprotected 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.
 - 
getJarNameprotected static java.lang.String getJarName(java.lang.String filename) Get the name of a jar file without extension and version info.
 - 
collectManifestURLsprotected 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.
 - 
addLinkprotected void addLink(IResourceIdentifier parid, IResourceIdentifier rid) Add a link.
 - 
removeLinkprotected void removeLink(IResourceIdentifier parid, IResourceIdentifier rid) Remove a link.
 - 
getRemovableLinkspublic IFuture<java.util.Set<Tuple2<IResourceIdentifier,IResourceIdentifier>>> getRemovableLinks() Get the removable links.- Specified by:
- getRemovableLinksin interface- ILibraryService
 
 - 
setPropertiespublic IFuture<java.lang.Void> setProperties(Properties props) Update from given properties.- Specified by:
- setPropertiesin interface- IPropertiesProvider
 
 - 
getPropertiespublic IFuture<Properties> getProperties() Write current state into properties.- Specified by:
- getPropertiesin interface- IPropertiesProvider
 
 - 
checkUriprotected java.net.URL checkUri(java.net.URI uri) Check if a local url is backed by a file.
 - 
checkUrlprotected java.net.URL checkUrl(java.net.URL url) Check if a local url is backed by a file.
 - 
internalgetAllResourceIdentifierspublic java.util.Set<IResourceIdentifier> internalgetAllResourceIdentifiers() Get all managed resource identifiers inlcuding all subdependencies.- Returns:
- The resource identifiers.
 
 - 
getComponentModelspublic IFuture<java.util.Collection<java.lang.String[]>> getComponentModels() todo: support all component models Get all startable component models (currently only Java classes with @Agent).- Specified by:
- getComponentModelsin interface- ILibraryService
- Returns:
- The file names of the component models.
 
 
- 
 
-