SUGGESTED FIX
The cause is that the hibernate jar has an entry with absolute path, which get mistaken by CacheEntry on read from cache as a compressed-package-named entry.
To fix with backward compatibility, on writing manifest info to cache we need to escape absolute paths with special character that is not allowed to be part of filename: '\\t'. On reading from cache, we need to exclude this escape character from the entry names.
Add unit test to directly verify the writing and reading of signing info.
|
EVALUATION
??The reason of the missing signer for absolute path was the "path-compressing" mechanism of CacheEntry where next entry that have same path as previous entry is recorded only as a filename with beginning "/" as following example:
org/hibernate/mapping/PrimitiveArray.class
2 0 1
/MetaAttribute.class
2 0 1
On uncompressing, the absolute path was mistaken as a name with compressed-path, so the name get incorrectly expanded.
The back-ward compatible fix is to escape the absolute path with a character like ":" as following:
:??/hibernate-distribution-3.5.2-Final.pom
2 0 1
|