AbstractURLPassivationHandler.java 2.07 KB
/*
 * Decompiled with CFR 0_118.
 * 
 * Could not load the following classes:
 *  org.slf4j.Logger
 *  org.slf4j.LoggerFactory
 */
package com.adobe.aemfd.docmanager.internal.passivation.url;

import com.adobe.aemfd.docmanager.internal.source.URLSourceHandler;
import com.adobe.aemfd.docmanager.passivation.AbstractPassivationHandler;
import com.adobe.aemfd.docmanager.passivation.PassivationConnection;
import com.adobe.aemfd.docmanager.source.DocumentSourceHandler;
import java.io.IOException;
import java.io.InputStream;
import java.net.URL;
import java.net.URLConnection;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;

public abstract class AbstractURLPassivationHandler
extends AbstractPassivationHandler {
    private static final Logger logger = LoggerFactory.getLogger(AbstractURLPassivationHandler.class);

    public AbstractURLPassivationHandler() {
        super(false, true, true);
    }

    private static long getHeaderFieldLong(URLConnection uc, String name, long def) {
        String value = uc.getHeaderField(name);
        try {
            return Long.parseLong(value);
        }
        catch (Exception e) {
            logger.warn("Error parsing string " + value + " to a long", (Throwable)e);
            return def;
        }
    }

    private static long getContentLengthLong(URLConnection uc) {
        return AbstractURLPassivationHandler.getHeaderFieldLong(uc, "content-length", -1);
    }

    protected abstract URL getURL() throws IOException;

    public PassivationConnection openConnectionForPassivation() throws IOException {
        URL url = this.getURL();
        URLConnection uc = url.openConnection();
        PassivationConnection pc = new PassivationConnection(uc.getInputStream(), AbstractURLPassivationHandler.getContentLengthLong(uc), uc.getContentType());
        pc.setPayload(url);
        return pc;
    }

    protected DocumentSourceHandler doPassivate(byte[] preBuffer, PassivationConnection conn, long length) throws IOException {
        URL url = (URL)conn.getPayload();
        return new URLSourceHandler(url, length, conn.getContentType());
    }
}