org.apache.felix.framework.cache

## Class BundleCache

- java.lang.Object
- - org.apache.felix.framework.cache.BundleCache

    public class BundleCache
    extends Object

This class, combined with `BundleArchive`, and concrete `BundleRevision` subclasses, implement the Felix bundle cache. It is possible to configure the default behavior of this class by passing properties into Felix' constructor. The configuration properties for this class are (properties starting with "`felix`" are specific to Felix, while those starting with "`org.osgi`" are standard OSGi properties):

- `felix.cache.filelimit` - The integer value of this string sets an upper limit on how many files the cache will open. The default value is zero, which means there is no limit.
- `org.osgi.framework.storage` - Sets the directory to use as the bundle cache; by default bundle cache directory is `felix-cache` in the current working directory. The value should be a valid directory name. The directory name can be either absolute or relative. Relative directory names are relative to the current working directory. The specified directory will be created if it does not exist.
- `felix.cache.rootdir` - Sets the root directory to use to calculate the bundle cache directory for relative directory names. If `org.osgi.framework.storage` is set to a relative name, by default it is relative to the current working directory. If this property is set, then it will be calculated as being relative to the specified root directory.
- `felix.cache.locking` - Enables or disables bundle cache locking, which is used to prevent concurrent access to the bundle cache. This is enabled by default, but on older/smaller JVMs file channel locking is not available; set this property to `false` to disable it.
- `felix.cache.bufsize` - Sets the buffer size to be used by the cache; the default value is 4096. The integer value of this string provides control over the size of the internal buffer of the disk cache for performance reasons.

For specific information on how to configure the Felix framework, refer to the Felix framework usage documentation.

See Also:
  `BundleArchive`

### Field Summary

Fields
`static String` `CACHE_BUFSIZE_PROP`
`static String` `CACHE_FILELIMIT_PROP`
`static String` `CACHE_LOCKING_PROP`
`static String` `CACHE_ROOTDIR_PROP`

### Constructor Summary

Constructors
Constructor and Description
`BundleCache(Logger logger, Map configMap)`

### Method Summary

All Methods Static Methods Instance Methods Concrete Methods
`BundleArchive` `create(long id, int startLevel, String location, InputStream is, ModuleConnector connectFactory)`
`void` `delete()`
`BundleArchive[]` `getArchives(ModuleConnector connectFactory)`
`File` `getCacheDir()`
`static Map<String,Object>` `getMainAttributes(Map<String,Object> headers, InputStream inputStream, int size)`
`static Map<String,Object>` `getMainAttributes(Map<String,Object> headers, InputStream inputStream, long size)`
`File` `getSystemBundleDataFile(String fileName)` Provides the system bundle access to its private storage area; this special case is necessary since the system bundle is not really a bundle and therefore must be treated in a special way.
`void` `release()`

### Methods inherited from class java.lang.Object

`clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait`

### Field Detail

#### CACHE_BUFSIZE_PROP

    public static final String CACHE_BUFSIZE_PROP

See Also:
  Constant Field Values

#### CACHE_ROOTDIR_PROP

    public static final String CACHE_ROOTDIR_PROP

See Also:
  Constant Field Values

#### CACHE_LOCKING_PROP

    public static final String CACHE_LOCKING_PROP

See Also:
  Constant Field Values

#### CACHE_FILELIMIT_PROP

    public static final String CACHE_FILELIMIT_PROP

See Also:
  Constant Field Values

### Constructor Detail

#### BundleCache

    public BundleCache(Logger logger,
                       Map configMap)
                throws Exception

Throws:
  `Exception`

### Method Detail

#### getMainAttributes

    public static Map<String,Object> getMainAttributes(Map<String,Object> headers,
                                                       InputStream inputStream,
                                                       long size)
                                                throws Exception

Throws:
  `Exception`

#### getMainAttributes

    public static Map<String,Object> getMainAttributes(Map<String,Object> headers,
                                                       InputStream inputStream,
                                                       int size)
                                                throws Exception

Throws:
  `Exception`

#### release

    public void release()

#### getCacheDir

    public File getCacheDir()

#### delete

    public void delete()
                throws Exception

Throws:
  `Exception`

#### getArchives

    public BundleArchive[] getArchives(ModuleConnector connectFactory)
                                throws Exception

Throws:
  `Exception`

#### create

    public BundleArchive create(long id,
                                int startLevel,
                                String location,
                                InputStream is,
                                ModuleConnector connectFactory)
                         throws Exception

Throws:
  `Exception`

#### getSystemBundleDataFile

    public File getSystemBundleDataFile(String fileName)
                                 throws Exception

Provides the system bundle access to its private storage area; this special case is necessary since the system bundle is not really a bundle and therefore must be treated in a special way.

Parameters:
  `fileName` - the name of the file in the system bundle's private area.
Returns:
  a `File` object corresponding to the specified file name.
Throws:
  `Exception` - if any error occurs.