OffloadingUtil.java 6.85 KB
/*
 * Decompiled with CFR 0_118.
 * 
 * Could not load the following classes:
 *  org.apache.commons.lang.StringUtils
 *  org.apache.sling.api.resource.ValueMap
 *  org.slf4j.Logger
 *  org.slf4j.LoggerFactory
 */
package com.adobe.granite.offloading.impl.util;

import com.adobe.granite.offloading.api.OffloadingJobProperties;
import java.net.URI;
import java.net.URISyntaxException;
import java.util.ArrayList;
import java.util.Collection;
import java.util.HashSet;
import java.util.List;
import java.util.Set;
import java.util.TreeSet;
import org.apache.commons.lang.StringUtils;
import org.apache.sling.api.resource.ValueMap;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;

public class OffloadingUtil {
    private static final Logger LOG = LoggerFactory.getLogger(OffloadingUtil.class);

    public static String[] getInputPayloadPaths(ValueMap jobProperties) {
        if (jobProperties == null) {
            throw new IllegalArgumentException("jobProperties must not be null");
        }
        String inputPayload = (String)jobProperties.get(OffloadingJobProperties.INPUT_PAYLOAD.propertyName(), (Object)"");
        return OffloadingUtil.convertToArray(inputPayload);
    }

    public static String getInstanceIdFromJobId(String jobId) {
        String[] idParts;
        if (jobId == null) {
            throw new IllegalArgumentException("job id must not be null");
        }
        String instanceId = "";
        if (StringUtils.isBlank((String)jobId)) {
            instanceId = "";
        }
        if ((idParts = jobId.split("_")).length >= 2) {
            instanceId = idParts[1];
        }
        return instanceId;
    }

    public static String getAssignedInstanceFromJobPath(String pathPrefix, String jobPath) {
        String[] parts;
        if (StringUtils.isBlank((String)pathPrefix)) {
            throw new IllegalArgumentException("path prefix must not be blank");
        }
        if (StringUtils.isBlank((String)jobPath)) {
            throw new IllegalArgumentException("jobPath must not be blank");
        }
        if (!pathPrefix.endsWith("/")) {
            pathPrefix = pathPrefix + "/";
        }
        if ((parts = (jobPath = jobPath.replace(pathPrefix, "")).split("/")).length > 1) {
            return parts[0].trim();
        }
        return "";
    }

    public static String convertSlingJobPathToOffloadingJobPath(String slingPathPrefix, String offloadingPathPrefix, String slingJobPath) {
        if (StringUtils.isBlank((String)slingPathPrefix)) {
            throw new IllegalArgumentException("slingPathPrefix must not be blank");
        }
        if (StringUtils.isBlank((String)offloadingPathPrefix)) {
            throw new IllegalArgumentException("offloadingPathPrefix must not be blank");
        }
        if (StringUtils.isBlank((String)slingJobPath)) {
            throw new IllegalArgumentException("slingJobPath must not be blank");
        }
        if (slingJobPath.startsWith(slingPathPrefix)) {
            return slingJobPath.replace(slingPathPrefix, offloadingPathPrefix);
        }
        return "";
    }

    public static String getJobPathFromJobId(String pathPrefix, String targetInstance, String jobTopic, String jobId) {
        if (pathPrefix == null || StringUtils.isBlank((String)pathPrefix)) {
            throw new IllegalArgumentException("path prefix must not be blank");
        }
        if (targetInstance == null || StringUtils.isBlank((String)targetInstance)) {
            throw new IllegalArgumentException("target instance id must not be blank");
        }
        if (jobId == null || StringUtils.isBlank((String)pathPrefix)) {
            throw new IllegalArgumentException("job id must not be blank");
        }
        jobTopic = jobTopic.replace("/", ".");
        StringBuffer pathBuffer = new StringBuffer();
        pathBuffer.append(pathPrefix);
        if (!pathPrefix.endsWith("/")) {
            pathBuffer.append("/");
        }
        pathBuffer.append(targetInstance).append("/");
        pathBuffer.append(jobTopic).append("/");
        pathBuffer.append(jobId);
        return pathBuffer.toString();
    }

    public static String getHostFromEndpoint(String endpoint) {
        String host = null;
        URI uri = null;
        try {
            uri = new URI(endpoint);
            host = uri.getHost();
        }
        catch (URISyntaxException e) {
            LOG.error("Unable to get host from endpoint String " + endpoint, (Throwable)e);
        }
        catch (NullPointerException e) {
            LOG.error("Unable to get host from endpoint String " + endpoint, (Throwable)e);
        }
        return host;
    }

    public static int getPortFromEndpoint(String endpoint) {
        int port = -1;
        URI uri = null;
        try {
            uri = new URI(endpoint);
            port = uri.getPort();
        }
        catch (URISyntaxException e) {
            LOG.warn("Unable to get port from endpoint String " + endpoint, (Throwable)e);
        }
        catch (NullPointerException e) {
            LOG.warn("Unable to get port from endpoint String " + endpoint, (Throwable)e);
        }
        return port;
    }

    public static String[] getOutputPayloadPaths(ValueMap jobProperties) {
        if (jobProperties == null) {
            throw new IllegalArgumentException("jobProperties must not be null");
        }
        String outputPayload = (String)jobProperties.get(OffloadingJobProperties.OUTPUT_PAYLOAD.propertyName(), (Object)"");
        return OffloadingUtil.convertToArray(outputPayload);
    }

    private static String[] convertToArray(String payload) {
        ArrayList<String> inputPaths = new ArrayList<String>();
        if (StringUtils.isNotBlank((String)payload)) {
            String[] paths;
            for (String path : paths = payload.split(",")) {
                if (!StringUtils.isNotBlank((String)path)) continue;
                inputPaths.add(path.trim());
            }
        }
        return inputPaths.toArray(new String[inputPaths.size()]);
    }

    public static Set<String> expandCSV(String csvString) {
        TreeSet<String> set = new TreeSet<String>();
        if (StringUtils.isNotEmpty((String)csvString)) {
            set.addAll(OffloadingUtil.getOrderedSetFromArray(csvString.split(",")));
        }
        return set;
    }

    public static Set<String> getOrderedSetFromArray(String[] array) {
        TreeSet<String> set = new TreeSet<String>();
        if (array != null) {
            for (String s : array) {
                set.add(s);
            }
        }
        return set;
    }

    public static Set<String> filterKeySet(Set<String> unfiltered, List<String> filter) {
        HashSet<String> filteredSet = new HashSet<String>();
        if (unfiltered != null && filter != null) {
            for (String key : unfiltered) {
                if (filter.contains(key)) continue;
                filteredSet.add(key);
            }
        }
        return filteredSet;
    }
}