Example usage for org.springframework.beans.factory.support BeanDefinitionBuilder addConstructorArgValue

List of usage examples for org.springframework.beans.factory.support BeanDefinitionBuilder addConstructorArgValue

Introduction

In this page you can find the example usage for org.springframework.beans.factory.support BeanDefinitionBuilder addConstructorArgValue.

Prototype

public BeanDefinitionBuilder addConstructorArgValue(@Nullable Object value) 

Source Link

Document

Add an indexed constructor arg value.

Usage

From source file:org.springframework.integration.kafka.config.xml.KafkaProducerContextParser.java

private void parseProducerConfigurations(Element topics, ParserContext parserContext,
        BeanDefinitionBuilder builder, Element parentElem) {
    Map<String, BeanMetadataElement> producerConfigurationsMap = new ManagedMap<String, BeanMetadataElement>();

    for (Element producerConfiguration : DomUtils.getChildElementsByTagName(topics, "producer-configuration")) {

        BeanDefinitionBuilder producerMetadataBuilder = BeanDefinitionBuilder
                .genericBeanDefinition(ProducerMetadata.class);
        producerMetadataBuilder.addConstructorArgValue(producerConfiguration.getAttribute("topic"));
        producerMetadataBuilder.addConstructorArgValue(producerConfiguration.getAttribute("key-class-type"));
        producerMetadataBuilder.addConstructorArgValue(producerConfiguration.getAttribute("value-class-type"));

        String keySerializer = producerConfiguration.getAttribute("key-serializer");
        String keyEncoder = producerConfiguration.getAttribute("key-encoder");
        Assert.isTrue((StringUtils.hasText(keySerializer) ^ StringUtils.hasText(keyEncoder)),
                "Exactly one of 'key-serializer' or 'key-encoder' must be specified");
        if (StringUtils.hasText(keyEncoder)) {
            if (log.isWarnEnabled()) {
                log.warn("'key-encoder' is a deprecated option, use 'key-serializer' instead.");
            }//ww w  . j av  a2  s  . c  o  m
            BeanDefinitionBuilder encoderAdaptingSerializerBean = BeanDefinitionBuilder
                    .genericBeanDefinition(EncoderAdaptingSerializer.class);
            encoderAdaptingSerializerBean.addConstructorArgReference(keyEncoder);
            producerMetadataBuilder.addConstructorArgValue(encoderAdaptingSerializerBean.getBeanDefinition());
        } else {
            producerMetadataBuilder.addConstructorArgReference(keySerializer);
        }

        String valueSerializer = producerConfiguration.getAttribute("value-serializer");
        String valueEncoder = producerConfiguration.getAttribute("value-encoder");
        Assert.isTrue((StringUtils.hasText(valueSerializer) ^ StringUtils.hasText(valueEncoder)),
                "Exactly one of 'value-serializer' or 'value-encoder' must be specified");
        if (StringUtils.hasText(valueEncoder)) {
            if (log.isWarnEnabled()) {
                log.warn("'value-encoder' is a deprecated option, use 'value-serializer' instead.");
            }
            BeanDefinitionBuilder encoderAdaptingSerializerBean = BeanDefinitionBuilder
                    .genericBeanDefinition(EncoderAdaptingSerializer.class);
            encoderAdaptingSerializerBean.addConstructorArgReference(valueEncoder);
            producerMetadataBuilder.addConstructorArgValue(encoderAdaptingSerializerBean.getBeanDefinition());
        } else {
            producerMetadataBuilder.addConstructorArgReference(valueSerializer);
        }

        IntegrationNamespaceUtils.setReferenceIfAttributeDefined(producerMetadataBuilder, producerConfiguration,
                "partitioner");
        if (StringUtils.hasText(producerConfiguration.getAttribute("partitioner"))) {
            if (log.isWarnEnabled()) {
                log.warn("'partitioner' is a deprecated option. Use the 'kafka_partitionId' message header or "
                        + "the partition argument in the send() or convertAndSend() methods");
            }
        }
        IntegrationNamespaceUtils.setValueIfAttributeDefined(producerMetadataBuilder, producerConfiguration,
                "compression-type");
        IntegrationNamespaceUtils.setValueIfAttributeDefined(producerMetadataBuilder, producerConfiguration,
                "batch-bytes");
        AbstractBeanDefinition producerMetadataBeanDefinition = producerMetadataBuilder.getBeanDefinition();

        String producerPropertiesBean = parentElem.getAttribute("producer-properties");

        BeanDefinitionBuilder producerFactoryBuilder = BeanDefinitionBuilder
                .genericBeanDefinition(ProducerFactoryBean.class);
        producerFactoryBuilder.addConstructorArgValue(producerMetadataBeanDefinition);

        final String brokerList = producerConfiguration.getAttribute("broker-list");
        if (StringUtils.hasText(brokerList)) {
            producerFactoryBuilder.addConstructorArgValue(producerConfiguration.getAttribute("broker-list"));
        }

        if (StringUtils.hasText(producerPropertiesBean)) {
            producerFactoryBuilder.addConstructorArgReference(producerPropertiesBean);
        }

        AbstractBeanDefinition producerFactoryBeanDefinition = producerFactoryBuilder.getBeanDefinition();

        BeanDefinitionBuilder producerConfigurationBuilder = BeanDefinitionBuilder
                .genericBeanDefinition(ProducerConfiguration.class)
                .addConstructorArgValue(producerMetadataBeanDefinition)
                .addConstructorArgValue(producerFactoryBeanDefinition);
        IntegrationNamespaceUtils.setReferenceIfAttributeDefined(producerConfigurationBuilder,
                producerConfiguration, "conversion-service");
        producerConfigurationsMap.put(producerConfiguration.getAttribute("topic"),
                producerConfigurationBuilder.getBeanDefinition());
    }

    builder.addPropertyValue("producerConfigurations", producerConfigurationsMap);
}

From source file:org.springframework.ldap.config.ContextSourceParser.java

@Override
public BeanDefinition parse(Element element, ParserContext parserContext) {
    BeanDefinitionBuilder builder = BeanDefinitionBuilder.rootBeanDefinition(LdapContextSource.class);

    String username = element.getAttribute(ATT_USERNAME);
    String password = element.getAttribute(ATT_PASSWORD);
    String url = element.getAttribute(ATT_URL);
    Assert.hasText(url, "url attribute must be specified");

    builder.addPropertyValue("userDn", username);
    builder.addPropertyValue("password", password);

    BeanDefinitionBuilder urlsBuilder = BeanDefinitionBuilder.rootBeanDefinition(UrlsFactory.class)
            .setFactoryMethod("urls").addConstructorArgValue(url);

    builder.addPropertyValue("urls", urlsBuilder.getBeanDefinition());
    builder.addPropertyValue("base", getString(element, ATT_BASE, ""));
    builder.addPropertyValue("referral", getString(element, ATT_REFERRAL, null));

    boolean anonymousReadOnly = getBoolean(element, ATT_ANONYMOUS_READ_ONLY, false);
    builder.addPropertyValue("anonymousReadOnly", anonymousReadOnly);
    boolean nativePooling = getBoolean(element, ATT_NATIVE_POOLING, false);
    builder.addPropertyValue("pooled", nativePooling);

    String authStrategyRef = element.getAttribute(ATT_AUTHENTICATION_STRATEGY_REF);
    if (StringUtils.hasText(authStrategyRef)) {
        builder.addPropertyReference("authenticationStrategy", authStrategyRef);
    }//  w w  w . j  a  v  a 2s .com

    String authSourceRef = element.getAttribute(ATT_AUTHENTICATION_SOURCE_REF);
    if (StringUtils.hasText(authSourceRef)) {
        builder.addPropertyReference("authenticationSource", authSourceRef);
    } else {
        Assert.hasText(username,
                "username attribute must be specified unless an authentication-source-ref explicitly configured");
        Assert.hasText(password,
                "password attribute must be specified unless an authentication-source-ref explicitly configured");
    }

    String baseEnvPropsRef = element.getAttribute(ATT_BASE_ENV_PROPS_REF);
    if (StringUtils.hasText(baseEnvPropsRef)) {
        builder.addPropertyReference("baseEnvironmentProperties", baseEnvPropsRef);
    }

    BeanDefinition targetContextSourceDefinition = builder.getBeanDefinition();
    targetContextSourceDefinition = applyPoolingIfApplicable(targetContextSourceDefinition, element,
            nativePooling);

    BeanDefinition actualContextSourceDefinition = targetContextSourceDefinition;
    if (!anonymousReadOnly) {
        BeanDefinitionBuilder proxyBuilder = BeanDefinitionBuilder
                .rootBeanDefinition(TransactionAwareContextSourceProxy.class);
        proxyBuilder.addConstructorArgValue(targetContextSourceDefinition);
        actualContextSourceDefinition = proxyBuilder.getBeanDefinition();
    }

    String id = getString(element, AbstractBeanDefinitionParser.ID_ATTRIBUTE, DEFAULT_ID);
    parserContext.registerBeanComponent(new BeanComponentDefinition(actualContextSourceDefinition, id));

    return actualContextSourceDefinition;
}

From source file:org.springframework.ldap.config.ContextSourceParser.java

private void populatePoolConfigProperties(BeanDefinitionBuilder builder, Element element) {
    BeanDefinitionBuilder configBuilder = BeanDefinitionBuilder.rootBeanDefinition(PoolConfig.class);

    configBuilder.addPropertyValue("maxTotal",
            getString(element, ATT_MAX_TOTAL, String.valueOf(DEFAULT_MAX_TOTAL)));
    configBuilder.addPropertyValue("maxTotalPerKey",
            getString(element, ATT_MAX_TOTAL_PER_KEY, String.valueOf(DEFAULT_MAX_TOTAL_PER_KEY)));
    configBuilder.addPropertyValue("maxIdlePerKey",
            getString(element, ATT_MAX_IDLE_PER_KEY, String.valueOf(DEFAULT_MAX_IDLE_PER_KEY)));
    configBuilder.addPropertyValue("minIdlePerKey",
            getString(element, ATT_MIN_IDLE_PER_KEY, String.valueOf(DEFAULT_MIN_IDLE_PER_KEY)));
    configBuilder.addPropertyValue("evictionPolicyClassName",
            getString(element, ATT_EVICTION_POLICY_CLASS, DEFAULT_EVICTION_POLICY_CLASS_NAME));
    configBuilder.addPropertyValue("fairness", getBoolean(element, ATT_FAIRNESS, DEFAULT_FAIRNESS));
    configBuilder.addPropertyValue("jmxEnabled", getBoolean(element, ATT_JMX_ENABLE, DEFAULT_JMX_ENABLE));
    configBuilder.addPropertyValue("jmxNameBase", getString(element, ATT_JMX_NAME_BASE, DEFAULT_JMX_NAME_BASE));
    configBuilder.addPropertyValue("jmxNamePrefix",
            getString(element, ATT_JMX_NAME_PREFIX, DEFAULT_JMX_NAME_PREFIX));
    configBuilder.addPropertyValue("lifo", getBoolean(element, ATT_LIFO, DEFAULT_LIFO));
    configBuilder.addPropertyValue("maxWaitMillis",
            getString(element, ATT_MAX_WAIT, String.valueOf(DEFAULT_MAX_WAIT_MILLIS)));
    configBuilder.addPropertyValue("blockWhenExhausted", Boolean.valueOf(
            getString(element, ATT_BLOCK_WHEN_EXHAUSTED, String.valueOf(DEFAULT_BLOCK_WHEN_EXHAUSTED))));
    configBuilder.addPropertyValue("testOnBorrow", getBoolean(element, ATT_TEST_ON_BORROW, false));
    configBuilder.addPropertyValue("testOnCreate", getBoolean(element, ATT_TEST_ON_CREATE, false));
    configBuilder.addPropertyValue("testOnReturn", getBoolean(element, ATT_TEST_ON_RETURN, false));
    configBuilder.addPropertyValue("testWhileIdle", getBoolean(element, ATT_TEST_WHILE_IDLE, false));
    configBuilder.addPropertyValue("timeBetweenEvictionRunsMillis",
            getString(element, ATT_EVICTION_RUN_MILLIS, String.valueOf(DEFAULT_EVICTION_RUN_MILLIS)));
    configBuilder.addPropertyValue("numTestsPerEvictionRun",
            getString(element, ATT_TESTS_PER_EVICTION_RUN, String.valueOf(DEFAULT_TESTS_PER_EVICTION_RUN)));
    configBuilder.addPropertyValue("minEvictableIdleTimeMillis",
            getString(element, ATT_EVICTABLE_TIME_MILLIS, String.valueOf(DEFAULT_EVICTABLE_MILLIS)));
    configBuilder.addPropertyValue("softMinEvictableIdleTimeMillis",
            getString(element, ATT_SOFT_MIN_EVICTABLE_IDLE_TIME_MILLIS,
                    String.valueOf(DEFAULT_SOFT_MIN_EVICTABLE_IDLE_TIME_MILLIS)));

    builder.addConstructorArgValue(configBuilder.getBeanDefinition());
}

From source file:org.springframework.security.config.debug.SecurityDebugBeanFactoryPostProcessor.java

public void postProcessBeanDefinitionRegistry(BeanDefinitionRegistry registry) throws BeansException {
    logger.warn("\n\n" + "********************************************************************\n"
            + "**********        Security debugging is enabled.       *************\n"
            + "**********    This may include sensitive information.  *************\n"
            + "**********      Do not use in a production system!     *************\n"
            + "********************************************************************\n\n");
    // SPRING_SECURITY_FILTER_CHAIN does not exist yet since it is an alias that has
    // not been processed, so use FILTER_CHAIN_PROXY
    if (registry.containsBeanDefinition(BeanIds.FILTER_CHAIN_PROXY)) {
        BeanDefinition fcpBeanDef = registry.getBeanDefinition(BeanIds.FILTER_CHAIN_PROXY);
        BeanDefinitionBuilder debugFilterBldr = BeanDefinitionBuilder.genericBeanDefinition(DebugFilter.class);
        debugFilterBldr.addConstructorArgValue(fcpBeanDef);
        // Remove the alias to SPRING_SECURITY_FILTER_CHAIN, so that it does not
        // override the new
        // SPRING_SECURITY_FILTER_CHAIN definition
        registry.removeAlias(BeanIds.SPRING_SECURITY_FILTER_CHAIN);
        registry.registerBeanDefinition(BeanIds.SPRING_SECURITY_FILTER_CHAIN,
                debugFilterBldr.getBeanDefinition());
    }/*w ww  .  j  av a  2s . c  om*/
}

From source file:org.springframework.security.config.http.AuthenticationConfigBuilder.java

void createOpenIDLoginFilter(BeanReference sessionStrategy, BeanReference authManager) {
    Element openIDLoginElt = DomUtils.getChildElementByTagName(httpElt, Elements.OPENID_LOGIN);
    RootBeanDefinition openIDFilter = null;

    if (openIDLoginElt != null) {
        FormLoginBeanDefinitionParser parser = new FormLoginBeanDefinitionParser("/login/openid", null,
                OPEN_ID_AUTHENTICATION_PROCESSING_FILTER_CLASS, requestCache, sessionStrategy,
                allowSessionCreation, portMapper, portResolver);

        parser.parse(openIDLoginElt, pc);
        openIDFilter = parser.getFilterBean();
        openIDEntryPoint = parser.getEntryPointBean();
        openidLoginProcessingUrl = parser.getLoginProcessingUrl();
        openIDLoginPage = parser.getLoginPage();

        List<Element> attrExElts = DomUtils.getChildElementsByTagName(openIDLoginElt,
                Elements.OPENID_ATTRIBUTE_EXCHANGE);

        if (!attrExElts.isEmpty()) {
            // Set up the consumer with the required attribute list
            BeanDefinitionBuilder consumerBldr = BeanDefinitionBuilder
                    .rootBeanDefinition(OPEN_ID_CONSUMER_CLASS);
            BeanDefinitionBuilder axFactory = BeanDefinitionBuilder
                    .rootBeanDefinition(OPEN_ID_ATTRIBUTE_FACTORY_CLASS);
            ManagedMap<String, ManagedList<BeanDefinition>> axMap = new ManagedMap<String, ManagedList<BeanDefinition>>();

            for (Element attrExElt : attrExElts) {
                String identifierMatch = attrExElt.getAttribute("identifier-match");

                if (!StringUtils.hasText(identifierMatch)) {
                    if (attrExElts.size() > 1) {
                        pc.getReaderContext()
                                .error("You must supply an identifier-match attribute if using more"
                                        + " than one " + Elements.OPENID_ATTRIBUTE_EXCHANGE + " element",
                                        attrExElt);
                    }//from   w w w .ja  v a2s.co m
                    // Match anything
                    identifierMatch = ".*";
                }

                axMap.put(identifierMatch, parseOpenIDAttributes(attrExElt));
            }
            axFactory.addConstructorArgValue(axMap);

            consumerBldr.addConstructorArgValue(axFactory.getBeanDefinition());
            openIDFilter.getPropertyValues().addPropertyValue("consumer", consumerBldr.getBeanDefinition());
        }
    }

    if (openIDFilter != null) {
        openIDFilter.getPropertyValues().addPropertyValue("allowSessionCreation", allowSessionCreation);
        openIDFilter.getPropertyValues().addPropertyValue("authenticationManager", authManager);
        // Required by login page filter
        openIDFilterId = pc.getReaderContext().generateBeanName(openIDFilter);
        pc.registerBeanComponent(new BeanComponentDefinition(openIDFilter, openIDFilterId));
        injectRememberMeServicesRef(openIDFilter, rememberMeServicesId);

        createOpenIDProvider();
    }
}

From source file:org.springframework.security.config.http.AuthenticationConfigBuilder.java

private ManagedList<BeanDefinition> parseOpenIDAttributes(Element attrExElt) {
    ManagedList<BeanDefinition> attributes = new ManagedList<>();
    for (Element attElt : DomUtils.getChildElementsByTagName(attrExElt, Elements.OPENID_ATTRIBUTE)) {
        String name = attElt.getAttribute("name");
        String type = attElt.getAttribute("type");
        String required = attElt.getAttribute("required");
        String count = attElt.getAttribute("count");
        BeanDefinitionBuilder attrBldr = BeanDefinitionBuilder.rootBeanDefinition(OPEN_ID_ATTRIBUTE_CLASS);
        attrBldr.addConstructorArgValue(name);
        attrBldr.addConstructorArgValue(type);
        if (StringUtils.hasLength(required)) {
            attrBldr.addPropertyValue("required", Boolean.valueOf(required));
        }//  w  ww.j  av a 2  s.  c  o m

        if (StringUtils.hasLength(count)) {
            attrBldr.addPropertyValue("count", Integer.parseInt(count));
        }
        attributes.add(attrBldr.getBeanDefinition());
    }

    return attributes;
}

From source file:org.springframework.security.config.http.AuthenticationConfigBuilder.java

void createBasicFilter(BeanReference authManager) {
    Element basicAuthElt = DomUtils.getChildElementByTagName(httpElt, Elements.BASIC_AUTH);

    if (basicAuthElt == null && !autoConfig) {
        // No basic auth, do nothing
        return;/*  w  ww  . j a  v  a 2 s.  c om*/
    }

    String realm = httpElt.getAttribute(ATT_REALM);
    if (!StringUtils.hasText(realm)) {
        realm = DEF_REALM;
    }

    BeanDefinitionBuilder filterBuilder = BeanDefinitionBuilder
            .rootBeanDefinition(BasicAuthenticationFilter.class);

    String entryPointId;

    if (basicAuthElt != null) {
        if (StringUtils.hasText(basicAuthElt.getAttribute(ATT_ENTRY_POINT_REF))) {
            basicEntryPoint = new RuntimeBeanReference(basicAuthElt.getAttribute(ATT_ENTRY_POINT_REF));
        }

        injectAuthenticationDetailsSource(basicAuthElt, filterBuilder);

    }

    if (basicEntryPoint == null) {
        RootBeanDefinition entryPoint = new RootBeanDefinition(BasicAuthenticationEntryPoint.class);
        entryPoint.setSource(pc.extractSource(httpElt));
        entryPoint.getPropertyValues().addPropertyValue("realmName", realm);
        entryPointId = pc.getReaderContext().generateBeanName(entryPoint);
        pc.registerBeanComponent(new BeanComponentDefinition(entryPoint, entryPointId));
        basicEntryPoint = new RuntimeBeanReference(entryPointId);
    }

    filterBuilder.addConstructorArgValue(authManager);
    filterBuilder.addConstructorArgValue(basicEntryPoint);
    basicFilter = filterBuilder.getBeanDefinition();
}

From source file:org.springframework.security.config.http.AuthenticationConfigBuilder.java

void createJeeFilter(BeanReference authManager) {
    final String ATT_MAPPABLE_ROLES = "mappable-roles";

    Element jeeElt = DomUtils.getChildElementByTagName(httpElt, Elements.JEE);
    RootBeanDefinition filter = null;/* ww  w  .j  a v  a  2 s.  c om*/

    if (jeeElt != null) {
        BeanDefinitionBuilder filterBuilder = BeanDefinitionBuilder
                .rootBeanDefinition(J2eePreAuthenticatedProcessingFilter.class);
        filterBuilder.getRawBeanDefinition().setSource(pc.extractSource(jeeElt));
        filterBuilder.addPropertyValue("authenticationManager", authManager);

        BeanDefinitionBuilder adsBldr = BeanDefinitionBuilder
                .rootBeanDefinition(J2eeBasedPreAuthenticatedWebAuthenticationDetailsSource.class);
        adsBldr.addPropertyValue("userRoles2GrantedAuthoritiesMapper",
                new RootBeanDefinition(SimpleAttributes2GrantedAuthoritiesMapper.class));

        String roles = jeeElt.getAttribute(ATT_MAPPABLE_ROLES);
        Assert.hasLength(roles, "roles is expected to have length");
        BeanDefinitionBuilder rolesBuilder = BeanDefinitionBuilder.rootBeanDefinition(StringUtils.class);
        rolesBuilder.addConstructorArgValue(roles);
        rolesBuilder.setFactoryMethod("commaDelimitedListToSet");

        RootBeanDefinition mappableRolesRetriever = new RootBeanDefinition(
                SimpleMappableAttributesRetriever.class);
        mappableRolesRetriever.getPropertyValues().addPropertyValue("mappableAttributes",
                rolesBuilder.getBeanDefinition());
        adsBldr.addPropertyValue("mappableRolesRetriever", mappableRolesRetriever);
        filterBuilder.addPropertyValue("authenticationDetailsSource", adsBldr.getBeanDefinition());

        filter = (RootBeanDefinition) filterBuilder.getBeanDefinition();

        createPrauthEntryPoint(jeeElt);
        createJeeProvider();
    }

    jeeFilter = filter;
}

From source file:org.springframework.security.config.http.AuthenticationConfigBuilder.java

void createExceptionTranslationFilter() {
    BeanDefinitionBuilder etfBuilder = BeanDefinitionBuilder
            .rootBeanDefinition(ExceptionTranslationFilter.class);
    accessDeniedHandler = createAccessDeniedHandler(httpElt, pc);
    etfBuilder.addPropertyValue("accessDeniedHandler", accessDeniedHandler);
    assert requestCache != null;
    mainEntryPoint = selectEntryPoint();
    etfBuilder.addConstructorArgValue(mainEntryPoint);
    etfBuilder.addConstructorArgValue(requestCache);

    etf = etfBuilder.getBeanDefinition();
}

From source file:org.springframework.security.config.http.FilterInvocationSecurityMetadataSourceParser.java

static RootBeanDefinition createSecurityMetadataSource(List<Element> interceptUrls, boolean addAllAuth,
        Element httpElt, ParserContext pc) {
    MatcherType matcherType = MatcherType.fromElement(httpElt);
    boolean useExpressions = isUseExpressions(httpElt);

    ManagedMap<BeanMetadataElement, BeanDefinition> requestToAttributesMap = parseInterceptUrlsForFilterInvocationRequestMap(
            matcherType, interceptUrls, useExpressions, addAllAuth, pc);
    BeanDefinitionBuilder fidsBuilder;

    if (useExpressions) {
        Element expressionHandlerElt = DomUtils.getChildElementByTagName(httpElt, Elements.EXPRESSION_HANDLER);
        String expressionHandlerRef = expressionHandlerElt == null ? null
                : expressionHandlerElt.getAttribute("ref");

        if (StringUtils.hasText(expressionHandlerRef)) {
            logger.info("Using bean '" + expressionHandlerRef
                    + "' as web SecurityExpressionHandler implementation");
        } else {/* ww  w  .j a  v  a2  s  . c  o  m*/
            expressionHandlerRef = registerDefaultExpressionHandler(pc);
        }

        fidsBuilder = BeanDefinitionBuilder
                .rootBeanDefinition(ExpressionBasedFilterInvocationSecurityMetadataSource.class);
        fidsBuilder.addConstructorArgValue(requestToAttributesMap);
        fidsBuilder.addConstructorArgReference(expressionHandlerRef);
    } else {
        fidsBuilder = BeanDefinitionBuilder
                .rootBeanDefinition(DefaultFilterInvocationSecurityMetadataSource.class);
        fidsBuilder.addConstructorArgValue(requestToAttributesMap);
    }

    fidsBuilder.getRawBeanDefinition().setSource(pc.extractSource(httpElt));

    return (RootBeanDefinition) fidsBuilder.getBeanDefinition();
}