All Downloads are FREE. Search and download functionalities are using the official Maven repository.

com.sprint.framework.web.config.AnnotationDrivenBeanDefinitionParser Maven / Gradle / Ivy

The newest version!
package com.sprint.framework.web.config;

import com.sprint.framework.core.common.utils.Safes;
import org.springframework.beans.factory.support.AbstractBeanDefinition;
import org.springframework.beans.factory.support.BeanDefinitionBuilder;
import org.springframework.beans.factory.xml.AbstractSingleBeanDefinitionParser;
import org.springframework.beans.factory.xml.ParserContext;
import org.springframework.util.StringUtils;
import org.w3c.dom.Element;

import javax.annotation.Nonnull;

/**
 * 支持XML解析。
 *
 * @author hongfeng.li
 * @since 2023/2/28
 */
public class AnnotationDrivenBeanDefinitionParser extends AbstractSingleBeanDefinitionParser {

    public static final String BEAN_NAME = "commonWebConfiguration";
    public static final String ANNOTATION_DRIVEN = "annotation-driven";

    @Override
    protected String getBeanClassName(@Nonnull Element element) {
        return CommonWebConfiguration.class.getName();
    }

    @Nonnull
    @Override
    protected String resolveId(@Nonnull Element element, @Nonnull AbstractBeanDefinition definition,
            @Nonnull ParserContext parserContext) {
        return BEAN_NAME;
    }

    @Override
    protected void doParse(Element element, @Nonnull BeanDefinitionBuilder builder) {
        if (ANNOTATION_DRIVEN.equals(element.getLocalName())) {
            String requestBodyTrim = element.getAttribute("request-trim");
            if (StringUtils.hasLength(requestBodyTrim)) {
                builder.addPropertyValue("requestTrim", Safes.toBoolean(requestBodyTrim, false));
            }
            String reorderXmlToEnd = element.getAttribute("reorder-xml-to-end");
            if (StringUtils.hasLength(reorderXmlToEnd)) {
                builder.addPropertyValue("reorderXmlToEnd", Safes.toBoolean(reorderXmlToEnd, true));
            }
        }
    }
}




© 2015 - 2025 Weber Informatics LLC | Privacy Policy