FvctxRequestHandler.java 4.59 KB
/*
 * Decompiled with CFR 0_118.
 * 
 * Could not load the following classes:
 *  com.scene7.is.provider.CacheSpec
 *  com.scene7.is.provider.ProcessingStatus
 *  com.scene7.is.provider.RequestContext
 *  com.scene7.is.provider.RequestTypeEnum
 *  com.scene7.is.provider.Response
 *  com.scene7.is.sleng.CacheEnum
 *  com.scene7.is.sleng.FXGServer
 *  com.scene7.is.sleng.ImageServer
 *  com.scene7.is.util.error.ApplicationException
 *  org.jetbrains.annotations.NotNull
 */
package com.scene7.is.ps.provider;

import com.scene7.is.provider.CacheSpec;
import com.scene7.is.provider.ProcessingStatus;
import com.scene7.is.provider.RequestContext;
import com.scene7.is.provider.RequestTypeEnum;
import com.scene7.is.provider.Response;
import com.scene7.is.ps.provider.ModifierSet;
import com.scene7.is.ps.provider.Request;
import com.scene7.is.ps.provider.RequestBuilder;
import com.scene7.is.ps.provider.RequestHandler;
import com.scene7.is.ps.provider.Util;
import com.scene7.is.ps.provider.defs.ModifierEnum;
import com.scene7.is.ps.provider.fvctx.FvctxCachingPolicy;
import com.scene7.is.ps.provider.fvctx.FvctxFilter;
import com.scene7.is.ps.provider.fvctx.FvctxFilterMissingImageChecker;
import com.scene7.is.ps.provider.fvctx.FvctxImageSetRequest;
import com.scene7.is.ps.provider.fvctx.FvctxRequestBuilder;
import com.scene7.is.ps.provider.fvctx.FvctxRequestBuilderImpl;
import com.scene7.is.ps.provider.fvctx.FvctxRequester;
import com.scene7.is.ps.provider.fvctx.FvctxUtil;
import com.scene7.is.ps.provider.util.CacheAgent;
import com.scene7.is.ps.provider.util.CachingPolicy;
import com.scene7.is.ps.provider.util.Requester;
import com.scene7.is.sleng.CacheEnum;
import com.scene7.is.sleng.FXGServer;
import com.scene7.is.sleng.ImageServer;
import com.scene7.is.util.error.ApplicationException;
import org.jetbrains.annotations.NotNull;

public abstract class FvctxRequestHandler
implements RequestHandler {
    private static final int MAX_FRAMES_PER_FRAMESET = 10;
    @NotNull
    private final RequestBuilder requestBuilder;
    @NotNull
    private final CacheAgent cacheAgent;
    private boolean useCatalogRecordValidation;
    private final boolean useCache;
    private int nestingLimit;
    @NotNull
    private final ImageServer imageServer;
    @NotNull
    private final FXGServer fxgServer;

    FvctxRequestHandler(@NotNull ImageServer server, @NotNull FXGServer fxgServer, @NotNull RequestBuilder requestBuilder, boolean useCatalogRecordValidation, boolean useCache, boolean removeEmptyFrames, int nestingLimit, @NotNull CacheAgent cacheAgent) {
        this.requestBuilder = requestBuilder;
        this.cacheAgent = cacheAgent;
        this.useCatalogRecordValidation = useCatalogRecordValidation;
        this.useCache = useCache;
        FvctxUtil.removeEmptyFrames = removeEmptyFrames;
        this.nestingLimit = nestingLimit;
        this.imageServer = server;
        this.fxgServer = fxgServer;
    }

    @NotNull
    @Override
    public Response getResponse(@NotNull Request request, @NotNull ProcessingStatus status) throws ApplicationException {
        RequestContext context = this.getRequestContext();
        FvctxRequestBuilderImpl fvctxRequestBuilder = new FvctxRequestBuilderImpl(this.requestBuilder, context, request);
        FvctxImageSetRequest imagesetReq = FvctxImageSetRequest.createImageSetRequest(request, fvctxRequestBuilder);
        CachingPolicy cachingPolicy = FvctxCachingPolicy.createFvctxCachingPolicy(this.useCache, this.useCatalogRecordValidation, imagesetReq.request);
        CacheSpec cacheSpec = request.getGlobalAttributes().get(ModifierEnum.CACHE, CacheSpec.ON);
        FvctxFilterMissingImageChecker missingImageChecker = new FvctxFilterMissingImageChecker(context);
        FvctxRequester requester = new FvctxRequester(fvctxRequestBuilder, context, imagesetReq, missingImageChecker, 10, this.nestingLimit, this.imageServer, this.fxgServer);
        Response response = this.cacheAgent.getResponse(request.getRootId(), requester, cachingPolicy);
        return response.setClientCacheUse(cacheSpec.getClient()).setRequestType(request.getType()).setExpiration(Util.computeNonImgExpiration(request)).setMissingImageHasCatalogEntry(missingImageChecker.isMissingImageHasCatalogEntry());
    }

    public void setUseCatalogRecordValidation(boolean v) {
        this.useCatalogRecordValidation = v;
    }

    public boolean getUseCatalogRecordValidation() {
        return this.useCatalogRecordValidation;
    }

    public void setNestingLimit(int v) {
        this.nestingLimit = v;
    }

    public int getNestingLimit() {
        return this.nestingLimit;
    }

    protected abstract RequestContext getRequestContext();
}