| java.lang.Object org.apache.harmony.security.provider.cert.Cache
Cache | public class Cache (Code) | | The caching mechanism designed to speed up the process
of Certificates/CRLs generation in the case of their repeated
generation.
It keeps correspondences between Objects (Certificates or CLRs)
and arrays of bytes on the base of which the Objects have been generated,
and provides the means to determine whether it contains the object built on
the base of particular encoded form or not. If there are such
objects they are returned from the cache, if not - newly generated
objects can be saved in the cache.
The process of Certificate/CRL generation
(implemented in X509CertFactoryImpl ) is accompanied with
prereading of the beginning of encoded form. This prefix is used to determine
whether provided form is PEM encoding or not.
So the use of the prefix is the first point to (approximately)
determine whether object to be generated is in the cache or not.
The failure of the predetermination process tells us that there were not
object generated from the encoded form with such prefix and we should
generate (decode) the object. If predetermination is successful,
we conduct the accurate search on the base of whole encoded form.
So to speed up the object generation process this caching mechanism provides
the following functionality:
1. With having of the beginning of the encoded form (prefix)
it is possible to predetermine whether object has already been
generated on the base of the encoding with the SIMILAR prefix or not.
This process is not computationally expensive and takes a little time.
But it prevents us from use of expensive full encoding
search in the case of its failure.
2. If predetermination ends with success, the whole encoding
form should be provided to make the final answer: whether object has
already been generated on the base of this PARTICULAR encoded form or not.
If it is so - the cached object is returned from the cache,
if not - new object should be generated and saved in the cache.
Note: The length of the prefixes of the encoded forms should not be
less than correspondence (default value is 28).
|
Constructor Summary | |
public | Cache(int pref_size, int size) Creates the Cache object. | public | Cache(int pref_size) Creates the Cache object of size of 900. | public | Cache() Creates the Cache object of size of 900. |
Method Summary | |
public boolean | contains(long prefix_hash) Checks if there are any object in the cache generated
on the base of encoding with prefix corresponding
to the specified hash code. | public Object | get(long hash, byte[] encoding) Returns the object built on the base on the specified encoded
form if it is contained in the cache and null otherwise.
This method is computationally expensive and should be called only if
the method contains(long) for the hash code returned true.
Parameters: hash - the hash code for the prefix of the encoding(retrieved by method getHash(byte[]) ) Parameters: encoding - encoded form of the required object. | public long | getHash(byte[] arr) Returns the hash code for the array. | public void | put(long hash, byte[] encoding, Object object) Puts the object into the cache. |
Cache | public Cache(int pref_size, int size)(Code) | | Creates the Cache object.
Parameters: pref_size - specifies how many leading/trailing bytes of object'sencoded form will be used for hash computation Parameters: size - capacity of the cache to be created. |
Cache | public Cache(int pref_size)(Code) | | Creates the Cache object of size of 900.
Parameters: pref_size - specifies how many leading/trailing bytes of object'sencoded form will be used for hash computation |
Cache | public Cache()(Code) | | Creates the Cache object of size of 900.
|
contains | public boolean contains(long prefix_hash)(Code) | | Checks if there are any object in the cache generated
on the base of encoding with prefix corresponding
to the specified hash code.
Parameters: prefix_hash - the hash code for the prefixof the encoding (retrieved by method getHash(byte[])) false if there were not any object generatedon the base of encoding with specified hash code, trueotherwise. |
get | public Object get(long hash, byte[] encoding)(Code) | | Returns the object built on the base on the specified encoded
form if it is contained in the cache and null otherwise.
This method is computationally expensive and should be called only if
the method contains(long) for the hash code returned true.
Parameters: hash - the hash code for the prefix of the encoding(retrieved by method getHash(byte[]) ) Parameters: encoding - encoded form of the required object. the object corresponding to specified encoding or null ifthere is no such correspondence. |
getHash | public long getHash(byte[] arr)(Code) | | Returns the hash code for the array. This code is used to
predetermine whether the object was built on the base of the
similar encoding or not (by means of contains(long) method),
to exactly determine whether object is contained in the cache or not,
and to put the object in the cache.
Note: parameter array should be of length not less than
specified by prefix_size (default 28)
Parameters: arr - the byte array containing at least prefix_size leading bytesof the encoding. hash code for specified encoding prefix |
put | public void put(long hash, byte[] encoding, Object object)(Code) | | Puts the object into the cache.
Parameters: hash - hash code for the prefix of the encoding Parameters: encoding - the encoded form of the object Parameters: object - the object to be saved in the cache |
|
|