/*
 * JBoss, Home of Professional Open Source.
 * Copyright 2014 Red Hat, Inc., and individual contributors
 * as indicated by the @author tags.
 *
 * Licensed under the Apache License, Version 2.0 (the "License");
 * you may not use this file except in compliance with the License.
 * You may obtain a copy of the License at
 *
 *     http://www.apache.org/licenses/LICENSE-2.0
 *
 *  Unless required by applicable law or agreed to in writing, software
 *  distributed under the License is distributed on an "AS IS" BASIS,
 *  WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
 *  See the License for the specific language governing permissions and
 *  limitations under the License.
 */

package io.undertow.attribute;

import io.undertow.server.HttpServerExchange;
import io.undertow.util.HttpString;

import java.util.Arrays;
import java.util.Collections;

Utility class for retrieving exchange attributes
Author:Stuart Douglas
/** * Utility class for retrieving exchange attributes * * @author Stuart Douglas */
public class ExchangeAttributes { public static ExchangeAttributeParser parser(final ClassLoader classLoader) { return new ExchangeAttributeParser(classLoader, Collections.<ExchangeAttributeWrapper>emptyList()); } public static ExchangeAttributeParser parser(final ClassLoader classLoader, ExchangeAttributeWrapper ... wrappers) { return new ExchangeAttributeParser(classLoader, Arrays.asList(wrappers)); } public static ExchangeAttribute cookie(final String cookieName) { return new CookieAttribute(cookieName); } public static ExchangeAttribute bytesSent(boolean dashIfZero) { return new BytesSentAttribute(dashIfZero); } public static ExchangeAttribute dateTime() { return DateTimeAttribute.INSTANCE; } public static ExchangeAttribute localIp() { return LocalIPAttribute.INSTANCE; } public static ExchangeAttribute localPort() { return LocalPortAttribute.INSTANCE; } public static ExchangeAttribute localServerName() { return LocalServerNameAttribute.INSTANCE; } public static ExchangeAttribute queryString() { return QueryStringAttribute.INSTANCE; } public static ExchangeAttribute relativePath() { return RelativePathAttribute.INSTANCE; } public static ExchangeAttribute remoteIp() { return RemoteIPAttribute.INSTANCE; } public static ExchangeAttribute remoteUser() { return RemoteUserAttribute.INSTANCE; } public static ExchangeAttribute requestHeader(final HttpString header) { return new RequestHeaderAttribute(header); } public static ExchangeAttribute requestList() { return RequestLineAttribute.INSTANCE; } public static ExchangeAttribute requestMethod() { return RequestMethodAttribute.INSTANCE; } public static ExchangeAttribute requestProtocol() { return RequestProtocolAttribute.INSTANCE; } public static ExchangeAttribute requestURL() { return RequestURLAttribute.INSTANCE; } public static ExchangeAttribute responseCode() { return ResponseCodeAttribute.INSTANCE; } public static ExchangeAttribute responseReasonPhrase() { return ResponseReasonPhraseAttribute.INSTANCE; } public static ExchangeAttribute responseHeader(final HttpString header) { return new ResponseHeaderAttribute(header); } public static ExchangeAttribute transportProtocol() { return TransportProtocolAttribute.INSTANCE; } public static ExchangeAttribute threadName() { return ThreadNameAttribute.INSTANCE; } public static ExchangeAttribute constant(String value) { return new ConstantExchangeAttribute(value); } public static String resolve(final HttpServerExchange exchange, final ExchangeAttribute[] attributes) { final StringBuilder result = new StringBuilder(); for (int i = 0; i < attributes.length; ++i) { final String str = attributes[i].readAttribute(exchange); if (str != null) { result.append(str); } } return result.toString(); } private ExchangeAttributes() { } public static ExchangeAttribute authenticationType() { return AuthenticationTypeExchangeAttribute.INSTANCE; } }