All Downloads are FREE. Search and download functionalities are using the official Maven repository.

com.composum.pages.options.assets.service.AssetsVersionFactory Maven / Gradle / Ivy

package com.composum.pages.options.assets.service;

import com.composum.assets.commons.AssetsConstants;
import com.composum.assets.commons.config.AssetConfig;
import com.composum.pages.commons.model.ContentVersion;
import com.composum.pages.commons.model.SiteRelease;
import com.composum.pages.commons.service.VersionFactory;
import com.composum.pages.options.assets.api.AssetContent;
import com.composum.pages.options.assets.api.AssetVersion;
import com.composum.sling.core.util.ResourceUtil;
import com.composum.sling.platform.staging.versions.PlatformVersionsService;
import org.apache.sling.api.resource.Resource;
import org.osgi.framework.Constants;
import org.osgi.service.component.annotations.Component;

import javax.annotation.Nonnull;
import javax.annotation.Nullable;

@Component(
        property = {
                Constants.SERVICE_DESCRIPTION + "=Composum Pages Assets Version Factory"
        },
        immediate = true
)
public class AssetsVersionFactory implements VersionFactory {

    @Override
    @Nullable
    public ContentVersion getContentVersion(@Nonnull final SiteRelease siteRelease,
                                                          @Nullable final Resource contentResource, @Nonnull final String type,
                                                          @Nonnull final PlatformVersionsService.Status status) {
        boolean isAssetsRelated = false;
        switch (type) {
            case AssetsConstants.NODE_TYPE_ASSET:
            case AssetsConstants.NODE_TYPE_ASSET_CONTENT:
                isAssetsRelated = true;
                break;
            default:
                if (contentResource != null) {
                    Resource assetsConfig = contentResource.getChild(AssetConfig.CHILD_NAME);
                    isAssetsRelated = ResourceUtil.isNodeType(assetsConfig, AssetsConstants.NODE_TYPE_ASSET_CONFIG);
                }
                break;
        }
        return isAssetsRelated ? new AssetVersion(siteRelease, status) : null;
    }
}




© 2015 - 2025 Weber Informatics LLC | Privacy Policy