Package com.alibaba.citrus.service.form.impl

Source Code of com.alibaba.citrus.service.form.impl.FormParameters$FormParameter

/*
* Copyright (c) 2002-2012 Alibaba Group Holding Limited.
* All rights reserved.
*
* 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 com.alibaba.citrus.service.form.impl;

import static com.alibaba.citrus.service.requestcontext.util.RequestContextUtil.*;
import static com.alibaba.citrus.util.CollectionUtil.*;

import java.util.Map;
import javax.servlet.http.HttpServletRequest;

import com.alibaba.citrus.service.requestcontext.parser.ParserRequestContext;
import com.alibaba.citrus.util.ToStringBuilder;

final class FormParameters {
    private final Map<String, FormParameter> params = createLinkedHashMap();
    private final HttpServletRequest   request;
    private final ParserRequestContext prc;

    public FormParameters(HttpServletRequest request) {
        this.request = request;
        this.prc = findRequestContext(request, ParserRequestContext.class);
    }

    public void addFormParameter(FormParameter param) {
        params.put(param.normalizedKey, param);
    }

    public FormParameter getFormParameter(String normalizedKey) {
        return params.get(normalizedKey);
    }

    public Object[] getValues(String normalizedKey) {
        FormParameter param = params.get(normalizedKey);

        if (param == null) {
            return null;
        } else if (prc != null) {
            // 假如配置了ParserRequestContext,则取得objects,以便支持FileItem,否则只支持字符串值。
            return prc.getParameters().getObjects(param.originalKey);
        } else {
            return request.getParameterValues(param.originalKey);
        }
    }

    public String getStringValue(String normalizedKey) {
        FormParameter param = params.get(normalizedKey);

        if (param == null) {
            return null;
        } else if (prc != null) {
            // 假如配置了ParserRequestContext,则取得objects,以便支持FileItem,否则只支持字符串值。
            return prc.getParameters().getString(param.originalKey);
        } else {
            return request.getParameter(param.originalKey);
        }
    }

    @Override
    public String toString() {
        return new ToStringBuilder().append("FormParameters").append(params.values()).toString();
    }

    /** 代表一个表单参数的信息。 */
    final static class FormParameter {
        public final String groupKey;
        public final String fieldKey;
        public final String instanceKey;
        public final String additionalInfo;
        public final String originalKey;
        public final String normalizedKey;

        FormParameter(String groupKey, String fieldKey, String instanceKey, String additionalInfo, String originalKey,
                      String normalizedKey) {
            this.groupKey = groupKey;
            this.fieldKey = fieldKey;
            this.instanceKey = instanceKey;
            this.additionalInfo = additionalInfo;
            this.originalKey = originalKey;
            this.normalizedKey = normalizedKey;
        }

        @Override
        public String toString() {
            return normalizedKey;
        }
    }
}
TOP

Related Classes of com.alibaba.citrus.service.form.impl.FormParameters$FormParameter

TOP
Copyright © 2018 www.massapi.com. All rights reserved.
All source code are property of their respective owners. Java is a trademark of Sun Microsystems, Inc and owned by ORACLE Inc. Contact coftware#gmail.com.