ProductCollectionPreviewProvider.java 2.63 KB
/*
 * Decompiled with CFR 0_118.
 * 
 * Could not load the following classes:
 *  com.day.cq.dam.api.Asset
 *  com.day.cq.dam.api.ui.preview.CollectionPreviewProvider
 *  org.apache.felix.scr.annotations.Component
 *  org.apache.felix.scr.annotations.Service
 *  org.apache.sling.api.resource.Resource
 *  org.apache.sling.api.resource.ResourceResolver
 *  org.apache.sling.resource.collection.ResourceCollection
 */
package com.adobe.cq.commerce.impl.collection;

import com.adobe.cq.commerce.api.Product;
import com.adobe.cq.commerce.api.asset.ProductAssetManager;
import com.adobe.cq.commerce.api.collection.ProductCollection;
import com.day.cq.dam.api.Asset;
import com.day.cq.dam.api.ui.preview.CollectionPreviewProvider;
import java.util.ArrayList;
import java.util.Iterator;
import org.apache.felix.scr.annotations.Component;
import org.apache.felix.scr.annotations.Service;
import org.apache.sling.api.resource.Resource;
import org.apache.sling.api.resource.ResourceResolver;
import org.apache.sling.resource.collection.ResourceCollection;

@Component(metatype=0, label="Adobe CQ Product Collection Preview Provider", description="Adobe CQ Product Collection Preview Provider")
@Service
public class ProductCollectionPreviewProvider
implements CollectionPreviewProvider {
    public Iterator<Asset> getCollectionAssets(ResourceResolver resolver, ResourceCollection collection) {
        if (resolver == null || collection == null) {
            return null;
        }
        Resource collectionRes = resolver.getResource(collection.getPath());
        if (collectionRes == null) {
            return null;
        }
        ProductCollection productCollection = (ProductCollection)collectionRes.adaptTo(ProductCollection.class);
        if (productCollection == null) {
            return null;
        }
        ArrayList<Asset> assets = new ArrayList<Asset>();
        Iterator<Product> productIterator = productCollection.getProducts();
        while (productIterator.hasNext()) {
            Asset referencedAsset;
            String referencedAssetPath;
            Resource referencedAssetRes;
            Product product = productIterator.next();
            Resource assetRes = product.getAsset();
            ProductAssetManager productAssetManager = (ProductAssetManager)resolver.adaptTo(ProductAssetManager.class);
            if (assetRes == null || (referencedAssetRes = resolver.getResource(referencedAssetPath = productAssetManager.getReferencedAsset(assetRes.getPath()))) == null || (referencedAsset = (Asset)referencedAssetRes.adaptTo(Asset.class)) == null) continue;
            assets.add(referencedAsset);
        }
        return assets.iterator();
    }
}