in src/main/java/org/apache/sling/installer/core/impl/PersistentResourceList.java [80:140]
public PersistentResourceList(final File dataFile, final InstallationListener listener) {
this.dataFile = dataFile;
this.listener = listener;
Map<String, EntityResourceList> restoredData = null;
List<RegisteredResource> unknownList = null;
if ( dataFile.exists() ) {
ObjectInputStream ois = null;
try {
ois = new ObjectInputStream(new BufferedInputStream(new FileInputStream(dataFile)));
final int version = ois.readInt();
if ( version > 0 && version <= VERSION ) {
restoredData = (Map<String, EntityResourceList>)ois.readObject();
if ( version == VERSION ) {
unknownList = (List<RegisteredResource>)ois.readObject();
}
} else {
logger.warn("Unknown version for persistent resource list: {}", version);
}
logger.debug("Restored resource list: {}", restoredData);
logger.debug("Restored unknown resource list: {}", unknownList);
} catch (final Exception e) {
logger.warn("Unable to restore data, starting with empty list (" + e.getMessage() + ")", e);
restoredData = null;
unknownList = null;
} finally {
if (ois != null) {
try {
ois.close();
} catch (final IOException ignore) {
// ignore
}
}
}
}
data = restoredData != null ? restoredData : new HashMap<String, EntityResourceList>();
this.untransformedResources = unknownList != null ? unknownList : new ArrayList<RegisteredResource>();
this.updateCache();
// update resource ids
for(final Map.Entry<String, EntityResourceList> entry : this.data.entrySet()) {
final EntityResourceList erl = entry.getValue();
erl.setResourceId(entry.getKey());
erl.setListener(listener);
}
// check for special resources
if ( this.getEntityResourceList(RESTART_ACTIVE_BUNDLES_ENTITY_ID) == null ) {
final RegisteredResource rr = this.addOrUpdate(new InternalResource("$sling-installer$",
RESTART_ACTIVE_BUNDLES_ID,
null,
new Hashtable<String, Object>(),
InstallableResource.TYPE_PROPERTIES, "1",
null, null, null));
final TransformationResult result = new TransformationResult();
result.setId(RESTART_ACTIVE_BUNDLES_ID);
result.setResourceType(RESTART_ACTIVE_BUNDLES_TYPE);
this.transform(rr, new TransformationResult[] {result});
}
}