ProvidedJcrURLSourceHandler.java 2.07 KB
/*
 * Decompiled with CFR 0_118.
 * 
 * Could not load the following classes:
 *  com.adobe.granite.resourceresolverhelper.ResourceResolverHelper
 *  org.apache.sling.api.resource.ResourceResolver
 */
package com.adobe.aemfd.docmanager.internal.source;

import com.adobe.aemfd.docmanager.internal.source.URLSourceHandler;
import com.adobe.granite.resourceresolverhelper.ResourceResolverHelper;
import java.io.IOException;
import java.io.InputStream;
import java.net.URL;
import java.util.concurrent.Callable;
import org.apache.sling.api.resource.ResourceResolver;

public class ProvidedJcrURLSourceHandler
extends URLSourceHandler {
    private ResourceResolverHelper resourceResolverHelper;
    private ResourceResolver resourceResolver;
    private boolean managed;

    public ProvidedJcrURLSourceHandler(URL url, long length, String contentType, ResourceResolverHelper resourceResolverHelper, ResourceResolver resourceResolver, boolean managed) {
        super(url, length, contentType);
        this.resourceResolverHelper = resourceResolverHelper;
        this.resourceResolver = resourceResolver;
        this.managed = managed;
    }

    public InputStream getInputStream() throws IOException {
        try {
            return (InputStream)this.resourceResolverHelper.callWith(this.resourceResolver, (Callable)new Callable<InputStream>(){

                @Override
                public InputStream call() throws Exception {
                    return ProvidedJcrURLSourceHandler.this.getInputStream();
                }
            });
        }
        catch (IOException e) {
            throw e;
        }
        catch (RuntimeException e) {
            throw e;
        }
        catch (Exception e) {
            throw new RuntimeException("Unexpected error occurred while opening stream to JCR node at location " + this.url.toExternalForm(), e);
        }
    }

    protected void doDispose() {
        if (this.managed) {
            this.resourceResolver.close();
        }
        this.resourceResolver = null;
        this.resourceResolverHelper = null;
        super.doDispose();
    }

}