package com.github.hburgmeier.jerseyoauth2.protocol.impl.extractor; import java.util.EnumSet; import org.apache.commons.lang3.StringUtils; import com.github.hburgmeier.jerseyoauth2.api.protocol.IHttpRequest; import com.github.hburgmeier.jerseyoauth2.api.types.ParameterStyle; public class CombinedExtractor implements IExtractor { protected final EnumSet<ParameterStyle> styles; protected final String field; public CombinedExtractor(String field) { super(); this.field = field; this.styles = EnumSet.allOf(ParameterStyle.class); } public CombinedExtractor(String field, EnumSet<ParameterStyle> styles) { super(); this.field = field; this.styles = styles; } @Override public String extractValue(IHttpRequest request) { String value = null; for (ParameterStyle style : styles) { IExtractor extractor = getExtractor(field, style); value = extractor.extractValue(request); if (StringUtils.isNotEmpty(value)) break; } return value; } protected IExtractor getExtractor(String field, ParameterStyle parameterStyle) { switch (parameterStyle) { case HEADER: return new HeaderExtractor(field); case QUERY: return new QueryParameterExtractor(field); case BODY: return new FormExtractor(field); } throw new IllegalArgumentException(parameterStyle.toString()); } }