All Downloads are FREE. Search and download functionalities are using the official Maven repository.

com.atlassian.connect.spring.internal.jwt.CanonicalRequestUtil Maven / Gradle / Ivy

There is a newer version: 5.1.7
Show newest version
package com.atlassian.connect.spring.internal.jwt;

import org.apache.commons.lang3.builder.ToStringBuilder;
import org.apache.commons.lang3.builder.ToStringStyle;

import java.util.Arrays;
import java.util.Iterator;
import java.util.Map;

public class CanonicalRequestUtil {

    // So we can share between different impls.
    // Likely too large to be a useful toString
    public static String toVerboseString(CanonicalHttpRequest request) {
        return new ToStringBuilder(request, ToStringStyle.SHORT_PREFIX_STYLE)
                .append("method", request.getMethod())
                .append("relativePath", request.getRelativePath())
                .append("parameterMap", mapToString(request.getParameterMap()))
                .toString();
    }

    private static String mapToString(Map parameterMap) {
        StringBuilder sb = new StringBuilder()
                .append('[');

        for (Map.Entry entry : parameterMap.entrySet()) {
            sb.append(entry.getKey()).append(" -> ");
            String[] value = entry.getValue();
            if (value != null) {
                sb.append("(");
                appendTo(sb, Arrays.asList(value), ",");
                sb.append(")");
            }
            sb.append(','); // I know being lazy
        }

        return sb.append(']')
                .toString();
    }

    // borrowed from guava Join so can avoid guava dependency and OSGI fun
    private static StringBuilder appendTo(StringBuilder appendable, Iterable parts, CharSequence separator) {
        Iterator iterator = parts.iterator();
        if (iterator.hasNext()) {
            appendable.append(toString(iterator.next()));
            while (iterator.hasNext()) {
                appendable.append(separator);
                appendable.append(toString(iterator.next()));
            }
        }
        return appendable;
    }

    private static CharSequence toString(Object part) {
        return (part instanceof CharSequence) ? (CharSequence) part : part.toString();
    }
}




© 2015 - 2025 Weber Informatics LLC | Privacy Policy