public InstallTask createTask()

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;
    }