DebugInfoHandler.java 4.76 KB
/*
 * Decompiled with CFR 0_118.
 * 
 * Could not load the following classes:
 *  com.scene7.is.provider.DebugInfoEnum
 *  com.scene7.is.provider.ProcessingStatus
 *  com.scene7.is.provider.RequestTypeEnum
 *  com.scene7.is.provider.Response
 *  com.scene7.is.provider.ResponseData
 *  com.scene7.is.provider.TextResponseGenerator
 *  com.scene7.is.provider.TextResponseTypeEnum
 *  com.scene7.is.provider.catalog.Catalog
 *  com.scene7.is.provider.catalog.CatalogException
 *  com.scene7.is.provider.catalog.CatalogUtil
 *  com.scene7.is.provider.catalog.ObjectRecord
 *  com.scene7.is.provider.ruleset.RuleSetResults
 *  com.scene7.is.sleng.CacheEnum
 *  com.scene7.is.util.MimeTypeEnum
 *  com.scene7.is.util.TextEncodingTypeEnum
 *  com.scene7.is.util.XMLUtil
 *  com.scene7.is.util.callbacks.Option
 *  org.jetbrains.annotations.NotNull
 */
package com.scene7.is.ps.provider;

import com.scene7.is.provider.DebugInfoEnum;
import com.scene7.is.provider.ProcessingStatus;
import com.scene7.is.provider.RequestTypeEnum;
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.provider.catalog.Catalog;
import com.scene7.is.provider.catalog.CatalogException;
import com.scene7.is.provider.catalog.CatalogUtil;
import com.scene7.is.provider.catalog.ObjectRecord;
import com.scene7.is.provider.ruleset.RuleSetResults;
import com.scene7.is.ps.provider.Request;
import com.scene7.is.ps.provider.RequestHandler;
import com.scene7.is.sleng.CacheEnum;
import com.scene7.is.util.MimeTypeEnum;
import com.scene7.is.util.TextEncodingTypeEnum;
import com.scene7.is.util.XMLUtil;
import com.scene7.is.util.callbacks.Option;
import java.util.Map;
import org.jetbrains.annotations.NotNull;
import org.w3c.dom.Document;
import org.w3c.dom.Element;
import org.w3c.dom.Node;

class DebugInfoHandler
implements RequestHandler {
    DebugInfoHandler() {
    }

    @NotNull
    @Override
    public Response getResponse(@NotNull Request parsedRequest, @NotNull ProcessingStatus status) {
        DebugInfoEnum debugInfo = parsedRequest.getDebugInfo();
        switch (debugInfo) {
            case REQUEST: {
                Document document = XMLUtil.createDocument();
                Element child = parsedRequest.toXMLElement(document);
                document.appendChild(child);
                return new Response().setData(ResponseData.createResponseMessage((String)XMLUtil.toXMLString((Document)document, (TextEncodingTypeEnum)TextEncodingTypeEnum.UTF_8, (boolean)true), (MimeTypeEnum)MimeTypeEnum.TEXT_XML)).setClientCacheUse(CacheEnum.ON).setRequestType(parsedRequest.getType());
            }
            case CATALOG: {
                return DebugInfoHandler.getCatalog(parsedRequest);
            }
            case RECORD: {
                return DebugInfoHandler.getRecord(parsedRequest);
            }
            case RULESET: {
                RuleSetResults ruleSetResults = (RuleSetResults)parsedRequest.getRuleSetResults().get();
                Document ruleDocument = XMLUtil.createDocument();
                Element ruleChild = ruleSetResults.createDebugXMLElement(ruleDocument);
                ruleDocument.appendChild(ruleChild);
                return new Response().setData(ResponseData.createResponseMessage((String)XMLUtil.toXMLString((Document)ruleDocument, (TextEncodingTypeEnum)TextEncodingTypeEnum.UTF_8, (boolean)true), (MimeTypeEnum)MimeTypeEnum.TEXT_XML)).setClientCacheUse(CacheEnum.ON).setRequestType(parsedRequest.getType());
            }
        }
        throw new AssertionError((Object)debugInfo);
    }

    @NotNull
    private static Response getRecord(@NotNull Request parsedRequest) {
        try {
            ObjectRecord record = parsedRequest.getRecord();
            Map props = CatalogUtil.toMap((ObjectRecord)record);
            return DebugInfoHandler.createResponse(props);
        }
        catch (CatalogException e) {
            throw new AssertionError((Object)e);
        }
    }

    @NotNull
    private static Response getCatalog(@NotNull Request parsedRequest) {
        try {
            ObjectRecord record = parsedRequest.getRecord();
            Catalog catalog = record.getCatalog();
            Map props = CatalogUtil.toMap((Catalog)catalog);
            return DebugInfoHandler.createResponse(props);
        }
        catch (CatalogException e) {
            throw new AssertionError((Object)e);
        }
    }

    private static Response createResponse(Map<String, String> props) {
        byte[] data = TextResponseGenerator.generate(props, (TextResponseTypeEnum)TextResponseTypeEnum.PROPS, (String)"", (String)"");
        return new Response().setData(ResponseData.createResponseData((byte[])data, (MimeTypeEnum)MimeTypeEnum.TEXT_PLAIN));
    }

}