PropertiesHandler.java 3.52 KB
/*
 * Decompiled with CFR 0_118.
 * 
 * Could not load the following classes:
 *  com.scene7.is.provider.FmtSpec
 *  com.scene7.is.provider.ProcessingStatus
 *  com.scene7.is.provider.RequestTypeEnum
 *  com.scene7.is.provider.RequestTypeSpec
 *  com.scene7.is.provider.Response
 *  com.scene7.is.provider.ResponseData
 *  com.scene7.is.provider.TextResponseGenerator
 *  com.scene7.is.provider.TextResponseTypeEnum
 *  com.scene7.is.sleng.CacheEnum
 *  com.scene7.is.sleng.ResponseFormatEnum
 *  com.scene7.is.util.MimeTypeEnum
 *  com.scene7.is.util.error.ApplicationException
 *  org.jetbrains.annotations.NotNull
 */
package com.scene7.is.ps.provider;

import com.scene7.is.provider.FmtSpec;
import com.scene7.is.provider.ProcessingStatus;
import com.scene7.is.provider.RequestTypeEnum;
import com.scene7.is.provider.RequestTypeSpec;
import com.scene7.is.provider.Response;
import com.scene7.is.provider.ResponseData;
import com.scene7.is.provider.TextResponseGenerator;
import com.scene7.is.provider.TextResponseTypeEnum;
import com.scene7.is.ps.provider.ModifierSet;
import com.scene7.is.ps.provider.Request;
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.sleng.CacheEnum;
import com.scene7.is.sleng.ResponseFormatEnum;
import com.scene7.is.util.MimeTypeEnum;
import com.scene7.is.util.error.ApplicationException;
import java.util.Map;
import org.jetbrains.annotations.NotNull;

public abstract class PropertiesHandler
implements RequestHandler {
    private CacheEnum useClientCache = CacheEnum.ON;

    @NotNull
    @Override
    public Response getResponse(@NotNull Request parsedRequest, @NotNull ProcessingStatus status) throws ApplicationException {
        ModifierSet attr = parsedRequest.getGlobalAttributes();
        Map<String, Object> props = this.getProperties(parsedRequest);
        FmtSpec fmt = attr.getOrDie(ModifierEnum.FMT);
        ResponseFormatEnum format = fmt.format;
        TextResponseTypeEnum format2 = attr.getOrDie(ModifierEnum.REQ).format;
        String jsonId = attr.get(ModifierEnum.ID, "");
        String jsonHandler = attr.get(ModifierEnum.HANDLER, "");
        if (format2 == null) {
            format2 = format == ResponseFormatEnum.XML ? TextResponseTypeEnum.XML : (format == ResponseFormatEnum.JAVA_SCRIPT ? TextResponseTypeEnum.JAVASCRIPT : TextResponseTypeEnum.TEXT);
        }
        byte[] data = TextResponseGenerator.generate(props, (TextResponseTypeEnum)format2, (String)jsonId, (String)jsonHandler);
        Response response = new Response().setData(ResponseData.createResponseData((byte[])data, (MimeTypeEnum)format2.getMimeType())).setClientCacheUse(this.useClientCache).setRequestType(parsedRequest.getType());
        if (PropertiesHandler.useExpiresHeader(attr.getOrDie(ModifierEnum.REQ).type)) {
            response.setExpiration(Util.computeNonImgExpiration(parsedRequest));
        }
        return response;
    }

    protected void useClientCache(boolean useCache) {
        this.useClientCache = useCache ? CacheEnum.ON : CacheEnum.OFF;
    }

    protected abstract Map<String, Object> getProperties(Request var1) throws ApplicationException;

    private static boolean useExpiresHeader(RequestTypeEnum requestType) {
        return requestType == RequestTypeEnum.CATALOG_PROPS || requestType == RequestTypeEnum.IMAGE_PROPS || requestType == RequestTypeEnum.RESPONSE_PROPS || requestType == RequestTypeEnum.EXISTS || requestType == RequestTypeEnum.TRANSLATION_PROPS || requestType == RequestTypeEnum.IMAGE_SET;
    }
}