
ninja.params.ArgumentExtractors Maven / Gradle / Ivy
/**
* Copyright (C) 2012-2016 the original author or authors.
*
* 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 ninja.params;
import java.io.File;
import java.io.InputStream;
import java.util.ArrayList;
import java.util.List;
import java.util.Map;
import ninja.Context;
import ninja.session.FlashScope;
import ninja.session.Session;
import ninja.uploads.FileItem;
import ninja.validation.Validation;
import com.google.common.collect.ImmutableMap;
import com.google.inject.Inject;
/**
* Built in argument extractors
*
* @author James Roper
*/
public class ArgumentExtractors {
private static final Map, ArgumentExtractor>> STATIC_EXTRACTORS =
ImmutableMap., ArgumentExtractor>>builder()
.put(Context.class, new ContextExtractor())
.put(Validation.class, new ValidationExtractor())
.put(Session.class, new SessionExtractor())
.put(FlashScope.class, new FlashExtractor())
.build();
public static ArgumentExtractor> getExtractorForType(Class> type) {
return STATIC_EXTRACTORS.get(type);
}
public static class ContextExtractor implements ArgumentExtractor {
@Override
public Context extract(Context context) {
return context;
}
@Override
public Class getExtractedType() {
return Context.class;
}
@Override
public String getFieldName() {
return null;
}
}
public static class ValidationExtractor implements ArgumentExtractor {
@Override
public Validation extract(Context context) {
return context.getValidation();
}
@Override
public Class getExtractedType() {
return Validation.class;
}
@Override
public String getFieldName() {
return null;
}
}
public static class SessionExtractor implements ArgumentExtractor {
@Override
public Session extract(Context context) {
return context.getSession();
}
@Override
public Class getExtractedType() {
return Session.class;
}
@Override
public String getFieldName() {
return null;
}
}
public static class FlashExtractor implements ArgumentExtractor {
@Override
public FlashScope extract(Context context) {
return context.getFlashScope();
}
@Override
public Class getExtractedType() {
return FlashScope.class;
}
@Override
public String getFieldName() {
return null;
}
}
public static class PathParamExtractor implements ArgumentExtractor {
private final String key;
public PathParamExtractor(PathParam pathParam) {
this.key = pathParam.value();
}
@Override
public String extract(Context context) {
return context.getPathParameter(key);
}
@Override
public Class getExtractedType() {
return String.class;
}
@Override
public String getFieldName() {
return key;
}
}
public static class ParamExtractor implements ArgumentExtractor {
private final String key;
public ParamExtractor(Param param) {
this.key = param.value();
}
@Override
public String extract(Context context) {
return context.getParameter(key);
}
@Override
public Class getExtractedType() {
return String.class;
}
@Override
public String getFieldName() {
return key;
}
}
public static class ParamsExtractor implements ArgumentExtractor {
private final String key;
public ParamsExtractor(Params param) {
this.key = param.value();
}
@Override
public String[] extract(Context context) {
List values = context.getParameterValues(key);
if (values == null || values.isEmpty()) {
return null;
}
return values.toArray(new String[values.size()]);
}
@Override
public Class getExtractedType() {
return String[].class;
}
@Override
public String getFieldName() {
return key;
}
}
public static class FileItemParamExtractor implements ArgumentExtractor {
private final String key;
public FileItemParamExtractor(Param param) {
this.key = param.value();
}
@Override
public FileItem extract(Context context) {
return context.getParameterAsFileItem(key);
}
@Override
public Class getExtractedType() {
return FileItem.class;
}
@Override
public String getFieldName() {
return key;
}
}
public static class FileItemParamsExtractor implements ArgumentExtractor {
private final String key;
public FileItemParamsExtractor(Params param) {
this.key = param.value();
}
@Override
public FileItem[] extract(Context context) {
List values = new ArrayList();
for (FileItem fileItem : context.getParameterAsFileItems(key)) {
values.add(fileItem);
}
return values.toArray(new FileItem[values.size()]);
}
@Override
public Class getExtractedType() {
return FileItem[].class;
}
@Override
public String getFieldName() {
return key;
}
}
public static class FileParamExtractor implements ArgumentExtractor {
private final String key;
public FileParamExtractor(Param param) {
this.key = param.value();
}
@Override
public File extract(Context context) {
return context.getParameterAsFileItem(key).getFile();
}
@Override
public Class getExtractedType() {
return File.class;
}
@Override
public String getFieldName() {
return key;
}
}
public static class FileParamsExtractor implements ArgumentExtractor {
private final String key;
public FileParamsExtractor(Params param) {
this.key = param.value();
}
@Override
public File[] extract(Context context) {
List values = new ArrayList();
for (FileItem fileItem : context.getParameterAsFileItems(key)) {
values.add(fileItem.getFile());
}
return values.toArray(new File[values.size()]);
}
@Override
public Class getExtractedType() {
return File[].class;
}
@Override
public String getFieldName() {
return key;
}
}
public static class InputStreamParamExtractor implements ArgumentExtractor {
private final String key;
public InputStreamParamExtractor(Param param) {
this.key = param.value();
}
@Override
public InputStream extract(Context context) {
return context.getParameterAsFileItem(key).getInputStream();
}
@Override
public Class getExtractedType() {
return InputStream.class;
}
@Override
public String getFieldName() {
return key;
}
}
public static class InputStreamParamsExtractor implements ArgumentExtractor {
private final String key;
public InputStreamParamsExtractor(Params param) {
this.key = param.value();
}
@Override
public InputStream[] extract(Context context) {
List values = new ArrayList();
for (FileItem fileItem : context.getParameterAsFileItems(key)) {
values.add(fileItem.getInputStream());
}
return values.toArray(new InputStream[values.size()]);
}
@Override
public Class getExtractedType() {
return InputStream[].class;
}
@Override
public String getFieldName() {
return key;
}
}
public static class HeaderExtractor implements ArgumentExtractor {
private final String key;
public HeaderExtractor(Header header) {
this.key = header.value();
}
@Override
public String extract(Context context) {
return context.getHeader(key);
}
@Override
public Class getExtractedType() {
return String.class;
}
@Override
public String getFieldName() {
return key;
}
}
public static class HeadersExtractor implements ArgumentExtractor {
private final String key;
public HeadersExtractor(Headers headers) {
this.key = headers.value();
}
@Override
public String[] extract(Context context) {
List values = context.getHeaders(key);
if (values == null || values.isEmpty()) {
return null;
}
return values.toArray(new String[values.size()]);
}
@Override
public Class getExtractedType() {
return String[].class;
}
@Override
public String getFieldName() {
return key;
}
}
public static class SessionParamExtractor implements ArgumentExtractor {
private final String key;
public SessionParamExtractor(SessionParam sessionParam) {
this.key = sessionParam.value();
}
@Override
public String extract(Context context) {
return context.getSession().get(key);
}
@Override
public Class getExtractedType() {
return String.class;
}
@Override
public String getFieldName() {
return key;
}
}
public static class AttributeExtractor implements ArgumentExtractor
© 2015 - 2025 Weber Informatics LLC | Privacy Policy