Class CloseableBundleFile<E>
java.lang.Object
org.eclipse.osgi.storage.bundlefile.BundleFile
org.eclipse.osgi.storage.bundlefile.CloseableBundleFile<E>
- Type Parameters:
E- a type specified by extending classes to callgetInputStream(Object)
- Direct Known Subclasses:
ZipBundleFile
A BundleFile that manages the number of open bundle files by using the
MRUBundleFileList
-
Field Summary
FieldsModifier and TypeFieldDescriptionprotected final org.eclipse.osgi.internal.debug.Debugprotected final BundleInfo.GenerationFields inherited from class org.eclipse.osgi.storage.bundlefile.BundleFile
basefile -
Constructor Summary
ConstructorsConstructorDescriptionCloseableBundleFile(File basefile, BundleInfo.Generation generation, MRUBundleFileList mruList, org.eclipse.osgi.internal.debug.Debug debug) -
Method Summary
Modifier and TypeMethodDescriptionvoidclose()Closes the BundleFile.booleancontainsDir(String dir) Determines if any BundleEntries exist in the given directory path.protected abstract voiddoClose()Closes the bundle fileprotected abstract InputStreamdoGetInputStream(E entry) Gets the input stream for the specified entry.protected abstract voiddoOpen()Opens the bundle fileprotected abstract BundleEntryFinds the bundle entry for the specified pathLocates a file name in this bundle and returns a BundleEntry objectgetEntryPaths(String path, boolean recurse) Allows to access the entries of the bundle.Returns a File for the bundle entry specified by the path.getInputStream(E entry) Gets the input stream for the specified entry.getPaths()protected booleanlockOpen()Checks if the bundle file is openvoidopen()Opens the BundleFiles.protected abstract voidCalled after closing the bundle file.protected voidUnlocks the open lockMethods inherited from class org.eclipse.osgi.storage.bundlefile.BundleFile
createResourceURL, createURL, fixTrailingSlash, getBaseFile, getEntryPaths, getResourceURL, toString
-
Field Details
-
generation
-
debug
protected final org.eclipse.osgi.internal.debug.Debug debug
-
-
Constructor Details
-
CloseableBundleFile
public CloseableBundleFile(File basefile, BundleInfo.Generation generation, MRUBundleFileList mruList, org.eclipse.osgi.internal.debug.Debug debug)
-
-
Method Details
-
lockOpen
protected boolean lockOpen()Checks if the bundle file is open- Returns:
- true if the bundle file is open and locked
-
releaseOpen
protected void releaseOpen()Unlocks the open lock -
doOpen
Opens the bundle file- Throws:
IOException- if an error occurs
-
getPaths
-
getFile
Description copied from class:BundleFileReturns a File for the bundle entry specified by the path. If required the content of the bundle entry is extracted into a file on the file system.- Specified by:
getFilein classBundleFile- Parameters:
entry- The path to the entry to locate a File for.nativeCode- true if the path is native code.- Returns:
- A File object to access the contents of the bundle entry.
-
containsDir
Description copied from class:BundleFileDetermines if any BundleEntries exist in the given directory path.- Specified by:
containsDirin classBundleFile- Parameters:
dir- The directory path to check existence of.- Returns:
- true if the BundleFile contains entries under the given directory path; false otherwise.
-
getEntry
Description copied from class:BundleFileLocates a file name in this bundle and returns a BundleEntry object- Specified by:
getEntryin classBundleFile- Parameters:
path- path of the entry to locate in the bundle- Returns:
- BundleEntry object or null if the file name does not exist in the bundle
-
findEntry
Finds the bundle entry for the specified path- Parameters:
path- the path of the entry to find- Returns:
- the entry or
nullif no entry exists
-
getEntryPaths
Description copied from class:BundleFileAllows to access the entries of the bundle. Since the bundle content is usually a jar, this allows to access the jar contents. GetEntryPaths allows to enumerate the content of "path". If path is a directory, it is equivalent to listing the directory contents. The returned names are either files or directories themselves. If a returned name is a directory, it finishes with a slash. If a returned name is a file, it does not finish with a slash.- Specified by:
getEntryPathsin classBundleFile- Parameters:
path- path of the entry to locate in the bundlerecurse- - Iftrue, provide entries for the files and directories within the directory denoted bypathplus all sub-directories and files; otherwise, provide only the entries within the immediate directory.- Returns:
- an Enumeration of Strings that indicate the paths found or null if the path does not exist.
-
close
Description copied from class:BundleFileCloses the BundleFile.- Specified by:
closein classBundleFile- Throws:
IOException- if any error occurs.
-
doClose
Closes the bundle file- Throws:
IOException- if an error occurs closing
-
postClose
protected abstract void postClose()Called after closing the bundle file. -
open
Description copied from class:BundleFileOpens the BundleFiles.- Specified by:
openin classBundleFile- Throws:
IOException- if any error occurs.
-
getInputStream
Gets the input stream for the specified entry. This method will ensure the bundle file is open, calldoGetInputStream(Object)to get the actual input stream, then if the bundle file limit is enabled it will wrapper the input stream in a special input stream that keeps track of active input streams to prevent the bundle file from being closed until the stream is closed (or a timeout happens).- Parameters:
entry- the entry to get the input stream for- Returns:
- the input stream for the entry
- Throws:
IOException
-
doGetInputStream
Gets the input stream for the specified entry.- Parameters:
entry- the entry to get the input stream for. The type is specified by the extending class.- Returns:
- the input steam for the entry
- Throws:
IOException- if an error occurs
-