FormsContextImpl.java 2.31 KB
/*
 * Decompiled with CFR 0_118.
 * 
 * Could not load the following classes:
 *  com.adobe.forms.external.service.FormsContext
 *  com.adobe.granite.resourceresolverhelper.ResourceResolverHelper
 *  com.adobe.service.ResolverCallbackHelper
 *  org.apache.felix.scr.annotations.Component
 *  org.apache.felix.scr.annotations.Reference
 *  org.apache.felix.scr.annotations.Service
 *  org.apache.sling.api.resource.ResourceResolver
 */
package com.adobe.fd.forms.impl;

import com.adobe.fd.forms.internal.logging.FormsServiceLogger;
import com.adobe.forms.external.service.FormsContext;
import com.adobe.granite.resourceresolverhelper.ResourceResolverHelper;
import com.adobe.service.ResolverCallbackHelper;
import java.io.UnsupportedEncodingException;
import org.apache.felix.scr.annotations.Component;
import org.apache.felix.scr.annotations.Reference;
import org.apache.felix.scr.annotations.Service;
import org.apache.sling.api.resource.ResourceResolver;

@Component(label="AEMFD Forms Context Service", description="AEMFD Forms Context Service")
@Service(value={FormsContext.class})
public class FormsContextImpl
implements FormsContext {
    private static FormsServiceLogger logger = new FormsServiceLogger(FormsContextImpl.class);
    private static ThreadLocal<String> tickets = new ThreadLocal();
    @Reference
    ResourceResolverHelper resourceResolverHelper;

    public void begin() {
        ResourceResolver rr = this.resourceResolverHelper.getResourceResolver();
        String ticket = ResolverCallbackHelper.registerResolver((ResourceResolver)rr);
        tickets.set(ticket);
    }

    public void end() {
        ResolverCallbackHelper.unregisterResolver((String)tickets.get());
        tickets.remove();
    }

    public byte[] getContextBytes() throws UnsupportedEncodingException {
        String ticket = tickets.get();
        if (ticket != null) {
            return ticket.getBytes("UTF-8");
        }
        return new byte[0];
    }

    protected void bindResourceResolverHelper(ResourceResolverHelper resourceResolverHelper) {
        this.resourceResolverHelper = resourceResolverHelper;
    }

    protected void unbindResourceResolverHelper(ResourceResolverHelper resourceResolverHelper) {
        if (this.resourceResolverHelper == resourceResolverHelper) {
            this.resourceResolverHelper = null;
        }
    }
}