Scene7AssetDAMPublishServlet.java 5.63 KB
/*
 * Decompiled with CFR 0_118.
 * 
 * Could not load the following classes:
 *  javax.jcr.RepositoryException
 *  javax.jcr.Session
 *  javax.servlet.ServletException
 *  org.apache.felix.scr.annotations.Component
 *  org.apache.felix.scr.annotations.Properties
 *  org.apache.felix.scr.annotations.Property
 *  org.apache.felix.scr.annotations.Reference
 *  org.apache.felix.scr.annotations.Service
 *  org.apache.sling.api.SlingHttpServletRequest
 *  org.apache.sling.api.SlingHttpServletResponse
 *  org.apache.sling.api.resource.Resource
 *  org.apache.sling.api.resource.ResourceResolver
 *  org.apache.sling.api.servlets.SlingAllMethodsServlet
 *  org.apache.sling.commons.json.JSONException
 *  org.apache.sling.commons.json.JSONObject
 *  org.apache.sling.jcr.api.SlingRepository
 *  org.apache.sling.jcr.resource.JcrResourceResolverFactory
 *  org.slf4j.Logger
 *  org.slf4j.LoggerFactory
 */
package com.day.cq.dam.scene7.impl.servlets;

import com.day.cq.dam.scene7.api.S7Config;
import com.day.cq.dam.scene7.api.S7ConfigResolver;
import java.io.IOException;
import java.io.PrintWriter;
import javax.jcr.RepositoryException;
import javax.jcr.Session;
import javax.servlet.ServletException;
import org.apache.felix.scr.annotations.Component;
import org.apache.felix.scr.annotations.Properties;
import org.apache.felix.scr.annotations.Property;
import org.apache.felix.scr.annotations.Reference;
import org.apache.felix.scr.annotations.Service;
import org.apache.sling.api.SlingHttpServletRequest;
import org.apache.sling.api.SlingHttpServletResponse;
import org.apache.sling.api.resource.Resource;
import org.apache.sling.api.resource.ResourceResolver;
import org.apache.sling.api.servlets.SlingAllMethodsServlet;
import org.apache.sling.commons.json.JSONException;
import org.apache.sling.commons.json.JSONObject;
import org.apache.sling.jcr.api.SlingRepository;
import org.apache.sling.jcr.resource.JcrResourceResolverFactory;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;

@Component
@Service
@Properties(value={@Property(name="sling.servlet.resourceTypes", value={"dam:Asset", "sling:OrderedFolder", "sling:Folder"}), @Property(name="sling.servlet.selectors", value={"s7config"}), @Property(name="sling.servlet.extensions", value={"json"}), @Property(name="sling.servlet.methods", value={"GET"})})
public class Scene7AssetDAMPublishServlet
extends SlingAllMethodsServlet {
    private static final Logger LOGGER = LoggerFactory.getLogger(Scene7AssetDAMPublishServlet.class);
    @Reference
    private S7ConfigResolver s7ConfigResolver;
    @Reference
    private SlingRepository slingRepository;
    @Reference
    private JcrResourceResolverFactory resolverFactory;

    /*
     * WARNING - Removed try catching itself - possible behaviour change.
     */
    protected void doGet(SlingHttpServletRequest request, SlingHttpServletResponse response) throws ServletException, IOException {
        String scene7ConfigPath;
        block10 : {
            Resource damResource = request.getResource();
            scene7ConfigPath = "";
            if (damResource != null) {
                S7Config scene7Config = null;
                scene7ConfigPath = this.s7ConfigResolver.getS7ConfigPathForResource(damResource.getResourceResolver(), damResource);
                Session configSession = null;
                try {
                    configSession = this.slingRepository.loginService("scene7configservice", null);
                    ResourceResolver resolver = this.resolverFactory.getResourceResolver(configSession);
                    scene7Config = this.s7ConfigResolver.getS7Config(resolver, scene7ConfigPath);
                    if (scene7Config != null) {
                        scene7ConfigPath = scene7Config.getCloudConfigPath();
                    }
                    break block10;
                }
                catch (RepositoryException ee) {
                    LOGGER.error("Could not access a S7Config for resource {}", (Object)(damResource != null ? damResource.getPath() : "null"));
                }
                finally {
                    if (configSession != null) {
                        configSession.logout();
                        configSession = null;
                    }
                }
            }
            LOGGER.error("No resource found on the request!");
        }
        PrintWriter out = response.getWriter();
        JSONObject jsonObject = new JSONObject();
        try {
            jsonObject.put("scene7ConfigPath", (Object)scene7ConfigPath);
        }
        catch (JSONException e) {
            LOGGER.error("Error adding element to the JSON response", (Throwable)e);
        }
        out.write(jsonObject.toString());
    }

    protected void bindS7ConfigResolver(S7ConfigResolver s7ConfigResolver) {
        this.s7ConfigResolver = s7ConfigResolver;
    }

    protected void unbindS7ConfigResolver(S7ConfigResolver s7ConfigResolver) {
        if (this.s7ConfigResolver == s7ConfigResolver) {
            this.s7ConfigResolver = null;
        }
    }

    protected void bindSlingRepository(SlingRepository slingRepository) {
        this.slingRepository = slingRepository;
    }

    protected void unbindSlingRepository(SlingRepository slingRepository) {
        if (this.slingRepository == slingRepository) {
            this.slingRepository = null;
        }
    }

    protected void bindResolverFactory(JcrResourceResolverFactory jcrResourceResolverFactory) {
        this.resolverFactory = jcrResourceResolverFactory;
    }

    protected void unbindResolverFactory(JcrResourceResolverFactory jcrResourceResolverFactory) {
        if (this.resolverFactory == jcrResourceResolverFactory) {
            this.resolverFactory = null;
        }
    }
}