/*
* 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
*/
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;
}
}