in src/main/java/org/apache/sling/installer/factory/packages/impl/PackageTransformer.java [204:243]
public InstallTask createTask(final TaskResourceGroup toActivate) {
final TaskResource resource = toActivate.getActiveResource();
if (resource == null) {
logger.warn("The given resource to createTask is null");
return null;
}
InstallTask task = null;
switch (resource.getType()) {
case RESOURCE_TYPE_REGULAR:
// extract the package id
final String id = (String) resource.getAttribute(ATTR_PCK_ID);
final PackageId pkgId = PackageId.fromString(id);
if (pkgId == null) {
String message = MessageFormat.format("Error during processing of {0}: Package id cannot be parsed from {1}.", resource, id);
logger.error(message);
return new ChangeStateTask(toActivate, ResourceState.IGNORED, message);
}
if (resource.getState() == ResourceState.INSTALL) {
task = new InstallPackageTask(pkgId, toActivate);
} else {
task = new UninstallPackageTask(pkgId, toActivate);
}
break;
case RESOURCE_TYPE_HOLLOW:
if (resource.getState() == ResourceState.INSTALL) {
task = new InstallHollowPackageTask(toActivate);
} else {
// most probably uninstallation is not successful because this has also been installed as hollow-package!
String message = MessageFormat.format("Do not uninstall {0}: Hollow-Packages cannot be uninstalled.", resource);
logger.info(message);
return new ChangeStateTask(toActivate, ResourceState.IGNORED, message);
}
break;
default:
String message = MessageFormat.format("Unsupported type of {0}: {1}.", resource, resource.getType());
logger.debug(message);
}
return task;
}