Example usage for org.springframework.util.xml DomUtils getChildElementByTagName

List of usage examples for org.springframework.util.xml DomUtils getChildElementByTagName

Introduction

In this page you can find the example usage for org.springframework.util.xml DomUtils getChildElementByTagName.

Prototype

@Nullable
public static Element getChildElementByTagName(Element ele, String childEleName) 

Source Link

Document

Utility method that returns the first child element identified by its name.

Usage

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

void createFormLoginFilter(BeanReference sessionStrategy, BeanReference authManager) {

    Element formLoginElt = DomUtils.getChildElementByTagName(httpElt, Elements.FORM_LOGIN);
    RootBeanDefinition formFilter = null;

    if (formLoginElt != null || autoConfig) {
        FormLoginBeanDefinitionParser parser = new FormLoginBeanDefinitionParser("/login", "POST",
                AUTHENTICATION_PROCESSING_FILTER_CLASS, requestCache, sessionStrategy, allowSessionCreation,
                portMapper, portResolver);

        parser.parse(formLoginElt, pc);/*from w  w  w  . ja  v a 2  s .  c om*/
        formFilter = parser.getFilterBean();
        formEntryPoint = parser.getEntryPointBean();
        loginProcessingUrl = parser.getLoginProcessingUrl();
        formLoginPage = parser.getLoginPage();
    }

    if (formFilter != null) {
        formFilter.getPropertyValues().addPropertyValue("allowSessionCreation", allowSessionCreation);
        formFilter.getPropertyValues().addPropertyValue("authenticationManager", authManager);

        // Id is required by login page filter
        formFilterId = pc.getReaderContext().generateBeanName(formFilter);
        pc.registerBeanComponent(new BeanComponentDefinition(formFilter, formFilterId));
        injectRememberMeServicesRef(formFilter, rememberMeServicesId);
    }
}

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. jav a 2 s. c o  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 void createOpenIDProvider() {
    Element openIDLoginElt = DomUtils.getChildElementByTagName(httpElt, Elements.OPENID_LOGIN);
    BeanDefinitionBuilder openIDProviderBuilder = BeanDefinitionBuilder
            .rootBeanDefinition(OPEN_ID_AUTHENTICATION_PROVIDER_CLASS);

    RootBeanDefinition uds = new RootBeanDefinition();
    uds.setFactoryBeanName(BeanIds.USER_DETAILS_SERVICE_FACTORY);
    uds.setFactoryMethodName("authenticationUserDetailsService");
    uds.getConstructorArgumentValues()/*from  ww w.ja  v  a2s  . co  m*/
            .addGenericArgumentValue(openIDLoginElt.getAttribute(ATT_USER_SERVICE_REF));

    openIDProviderBuilder.addPropertyValue("authenticationUserDetailsService", uds);

    BeanDefinition openIDProvider = openIDProviderBuilder.getBeanDefinition();
    openIDProviderRef = new RuntimeBeanReference(
            pc.getReaderContext().registerWithGeneratedName(openIDProvider));
}

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;/*from ww  w . j a va2 s  .  c o  m*/
    }

    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 createX509Filter(BeanReference authManager) {
    Element x509Elt = DomUtils.getChildElementByTagName(httpElt, Elements.X509);
    RootBeanDefinition filter = null;//from   w w w .j av  a  2 s  .  com

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

        String regex = x509Elt.getAttribute("subject-principal-regex");

        if (StringUtils.hasText(regex)) {
            BeanDefinitionBuilder extractor = BeanDefinitionBuilder
                    .rootBeanDefinition(SubjectDnX509PrincipalExtractor.class);
            extractor.addPropertyValue("subjectDnRegex", regex);

            filterBuilder.addPropertyValue("principalExtractor", extractor.getBeanDefinition());
        }

        injectAuthenticationDetailsSource(x509Elt, filterBuilder);

        filter = (RootBeanDefinition) filterBuilder.getBeanDefinition();
        createPrauthEntryPoint(x509Elt);

        createX509Provider();
    }

    x509Filter = filter;
}

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

private void createX509Provider() {
    Element x509Elt = DomUtils.getChildElementByTagName(httpElt, Elements.X509);
    BeanDefinition provider = new RootBeanDefinition(PreAuthenticatedAuthenticationProvider.class);

    RootBeanDefinition uds = new RootBeanDefinition();
    uds.setFactoryBeanName(BeanIds.USER_DETAILS_SERVICE_FACTORY);
    uds.setFactoryMethodName("authenticationUserDetailsService");
    uds.getConstructorArgumentValues().addGenericArgumentValue(x509Elt.getAttribute(ATT_USER_SERVICE_REF));

    provider.getPropertyValues().addPropertyValue("preAuthenticatedUserDetailsService", uds);

    x509ProviderRef = new RuntimeBeanReference(pc.getReaderContext().registerWithGeneratedName(provider));
}

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;/*from  w  w w .  j a v  a  2s.co  m*/

    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

private void createJeeProvider() {
    Element jeeElt = DomUtils.getChildElementByTagName(httpElt, Elements.JEE);
    BeanDefinition provider = new RootBeanDefinition(PreAuthenticatedAuthenticationProvider.class);

    RootBeanDefinition uds;//from  w ww  . j av  a2  s .  c om
    if (StringUtils.hasText(jeeElt.getAttribute(ATT_USER_SERVICE_REF))) {
        uds = new RootBeanDefinition();
        uds.setFactoryBeanName(BeanIds.USER_DETAILS_SERVICE_FACTORY);
        uds.setFactoryMethodName("authenticationUserDetailsService");
        uds.getConstructorArgumentValues().addGenericArgumentValue(jeeElt.getAttribute(ATT_USER_SERVICE_REF));
    } else {
        uds = new RootBeanDefinition(PreAuthenticatedGrantedAuthoritiesUserDetailsService.class);
    }

    provider.getPropertyValues().addPropertyValue("preAuthenticatedUserDetailsService", uds);

    jeeProviderRef = new RuntimeBeanReference(pc.getReaderContext().registerWithGeneratedName(provider));
}

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

void createLogoutFilter() {
    Element logoutElt = DomUtils.getChildElementByTagName(httpElt, Elements.LOGOUT);
    if (logoutElt != null || autoConfig) {
        String formLoginPage = this.formLoginPage;
        if (formLoginPage == null) {
            formLoginPage = DefaultLoginPageGeneratingFilter.DEFAULT_LOGIN_PAGE_URL;
        }//from   w w  w  .j  a  va 2  s  . c  om
        LogoutBeanDefinitionParser logoutParser = new LogoutBeanDefinitionParser(formLoginPage,
                rememberMeServicesId, csrfLogoutHandler);
        logoutFilter = logoutParser.parse(logoutElt, pc);
        logoutHandlers = logoutParser.getLogoutHandlers();
    }
}

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

void createAnonymousFilter() {
    Element anonymousElt = DomUtils.getChildElementByTagName(httpElt, Elements.ANONYMOUS);

    if (anonymousElt != null && "false".equals(anonymousElt.getAttribute("enabled"))) {
        return;//from  w  w w.  ja  va 2  s  .c o m
    }

    String grantedAuthority = null;
    String username = null;
    String key = null;
    Object source = pc.extractSource(httpElt);

    if (anonymousElt != null) {
        grantedAuthority = anonymousElt.getAttribute("granted-authority");
        username = anonymousElt.getAttribute("username");
        key = anonymousElt.getAttribute(ATT_KEY);
        source = pc.extractSource(anonymousElt);
    }

    if (!StringUtils.hasText(grantedAuthority)) {
        grantedAuthority = "ROLE_ANONYMOUS";
    }

    if (!StringUtils.hasText(username)) {
        username = "anonymousUser";
    }

    if (!StringUtils.hasText(key)) {
        // Generate a random key for the Anonymous provider
        key = createKey();
    }

    anonymousFilter = new RootBeanDefinition(AnonymousAuthenticationFilter.class);
    anonymousFilter.getConstructorArgumentValues().addIndexedArgumentValue(0, key);
    anonymousFilter.getConstructorArgumentValues().addIndexedArgumentValue(1, username);
    anonymousFilter.getConstructorArgumentValues().addIndexedArgumentValue(2,
            AuthorityUtils.commaSeparatedStringToAuthorityList(grantedAuthority));
    anonymousFilter.setSource(source);

    RootBeanDefinition anonymousProviderBean = new RootBeanDefinition(AnonymousAuthenticationProvider.class);
    anonymousProviderBean.getConstructorArgumentValues().addIndexedArgumentValue(0, key);
    anonymousProviderBean.setSource(anonymousFilter.getSource());
    String id = pc.getReaderContext().generateBeanName(anonymousProviderBean);
    pc.registerBeanComponent(new BeanComponentDefinition(anonymousProviderBean, id));

    anonymousProviderRef = new RuntimeBeanReference(id);

}