InstallStatusServlet.java 2.39 KB
/*
 * Decompiled with CFR 0_118.
 * 
 * Could not load the following classes:
 *  javax.jcr.Session
 *  javax.servlet.ServletException
 *  javax.servlet.http.HttpServletRequest
 *  javax.servlet.http.HttpServletResponse
 *  org.apache.sling.commons.json.JSONException
 *  org.apache.sling.commons.json.io.JSONWriter
 *  org.apache.sling.installer.api.info.InfoProvider
 *  org.apache.sling.installer.api.info.InstallationState
 *  org.osgi.framework.BundleContext
 */
package com.day.crx.packmgr.impl.servlets;

import com.day.crx.packmgr.impl.AbstractServlet;
import java.io.IOException;
import java.io.PrintWriter;
import java.io.Writer;
import java.util.List;
import javax.jcr.Session;
import javax.servlet.ServletException;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import org.apache.sling.commons.json.JSONException;
import org.apache.sling.commons.json.io.JSONWriter;
import org.apache.sling.installer.api.info.InfoProvider;
import org.apache.sling.installer.api.info.InstallationState;
import org.osgi.framework.BundleContext;

public class InstallStatusServlet
extends AbstractServlet {
    private final InfoProvider infoProvider;

    public InstallStatusServlet(BundleContext bc, InfoProvider ip) {
        super(bc);
        this.infoProvider = ip;
    }

    @Override
    protected void doService(HttpServletRequest request, HttpServletResponse res, Session session) throws ServletException, IOException {
        res.setContentType("application/json");
        res.setCharacterEncoding("UTF-8");
        InstallationState state = this.infoProvider.getInstallationState();
        boolean finished = this.isFinished(state);
        int itemCount = state.getActiveResources().size();
        JSONWriter writer = new JSONWriter((Writer)res.getWriter());
        try {
            writer.object();
            writer.key("status");
            writer.object();
            writer.key("finished");
            writer.value(finished);
            writer.key("itemCount");
            writer.value((long)itemCount);
            writer.endObject();
            writer.endObject();
        }
        catch (JSONException e) {
            throw (IOException)new IOException().initCause((Throwable)e);
        }
    }

    private boolean isFinished(InstallationState state) {
        if (state.getActiveResources().size() > 0) {
            return false;
        }
        return true;
    }
}