Search in sources :

Example 71 with BeanDefinitionRegistry

use of org.springframework.beans.factory.support.BeanDefinitionRegistry in project spring-security by spring-projects.

the class MessageSecurityPostProcessorTests method handlesBeansWithoutClass.

@Test
public void handlesBeansWithoutClass() {
    BeanDefinitionRegistry registry = new SimpleBeanDefinitionRegistry();
    registry.registerBeanDefinition("beanWithoutClass", new GenericBeanDefinition());
    this.postProcessor.postProcessBeanDefinitionRegistry(registry);
}
Also used : SimpleBeanDefinitionRegistry(org.springframework.beans.factory.support.SimpleBeanDefinitionRegistry) GenericBeanDefinition(org.springframework.beans.factory.support.GenericBeanDefinition) SimpleBeanDefinitionRegistry(org.springframework.beans.factory.support.SimpleBeanDefinitionRegistry) BeanDefinitionRegistry(org.springframework.beans.factory.support.BeanDefinitionRegistry) Test(org.junit.jupiter.api.Test)

Example 72 with BeanDefinitionRegistry

use of org.springframework.beans.factory.support.BeanDefinitionRegistry in project motan by weibocom.

the class AnnotationBean method postProcessBeanFactory.

/**
 * @param beanFactory
 * @throws BeansException
 */
@Override
public void postProcessBeanFactory(ConfigurableListableBeanFactory beanFactory) throws BeansException {
    if (annotationPackage == null || annotationPackage.length() == 0) {
        return;
    }
    if (beanFactory instanceof BeanDefinitionRegistry) {
        try {
            // init scanner
            Class<?> scannerClass = ClassUtils.forName("org.springframework.context.annotation.ClassPathBeanDefinitionScanner", AnnotationBean.class.getClassLoader());
            Object scanner = scannerClass.getConstructor(new Class<?>[] { BeanDefinitionRegistry.class, boolean.class }).newInstance(new Object[] { (BeanDefinitionRegistry) beanFactory, true });
            // add filter
            Class<?> filterClass = ClassUtils.forName("org.springframework.core.type.filter.AnnotationTypeFilter", AnnotationBean.class.getClassLoader());
            Object filter = filterClass.getConstructor(Class.class).newInstance(MotanService.class);
            Method addIncludeFilter = scannerClass.getMethod("addIncludeFilter", ClassUtils.forName("org.springframework.core.type.filter.TypeFilter", AnnotationBean.class.getClassLoader()));
            addIncludeFilter.invoke(scanner, filter);
            // scan packages
            Method scan = scannerClass.getMethod("scan", new Class<?>[] { String[].class });
            scan.invoke(scanner, new Object[] { annotationPackages });
        } catch (Throwable e) {
        // spring 2.0
        }
    }
}
Also used : BeanDefinitionRegistry(org.springframework.beans.factory.support.BeanDefinitionRegistry) Method(java.lang.reflect.Method)

Example 73 with BeanDefinitionRegistry

use of org.springframework.beans.factory.support.BeanDefinitionRegistry in project spring-security by spring-projects.

the class HttpConfigurationBuilder method createConcurrencyControlFilterAndSessionRegistry.

private void createConcurrencyControlFilterAndSessionRegistry(Element element) {
    CompositeComponentDefinition compositeDef = new CompositeComponentDefinition(element.getTagName(), this.pc.extractSource(element));
    this.pc.pushContainingComponent(compositeDef);
    BeanDefinitionRegistry beanRegistry = this.pc.getRegistry();
    String sessionRegistryId = element.getAttribute(ATT_SESSION_REGISTRY_REF);
    if (!StringUtils.hasText(sessionRegistryId)) {
        // Register an internal SessionRegistryImpl if no external reference supplied.
        RootBeanDefinition sessionRegistry = new RootBeanDefinition(SessionRegistryImpl.class);
        sessionRegistryId = this.pc.getReaderContext().registerWithGeneratedName(sessionRegistry);
        this.pc.registerComponent(new BeanComponentDefinition(sessionRegistry, sessionRegistryId));
    }
    String registryAlias = element.getAttribute(ATT_SESSION_REGISTRY_ALIAS);
    if (StringUtils.hasText(registryAlias)) {
        beanRegistry.registerAlias(sessionRegistryId, registryAlias);
    }
    BeanDefinitionBuilder filterBuilder = BeanDefinitionBuilder.rootBeanDefinition(ConcurrentSessionFilter.class);
    filterBuilder.addConstructorArgReference(sessionRegistryId);
    Object source = this.pc.extractSource(element);
    filterBuilder.getRawBeanDefinition().setSource(source);
    filterBuilder.setRole(BeanDefinition.ROLE_INFRASTRUCTURE);
    String expiryUrl = element.getAttribute(ATT_EXPIRY_URL);
    String expiredSessionStrategyRef = element.getAttribute(ATT_EXPIRED_SESSION_STRATEGY_REF);
    if (StringUtils.hasText(expiryUrl) && StringUtils.hasText(expiredSessionStrategyRef)) {
        this.pc.getReaderContext().error("Cannot use 'expired-url' attribute and 'expired-session-strategy-ref'" + " attribute together.", source);
    }
    if (StringUtils.hasText(expiryUrl)) {
        BeanDefinitionBuilder expiredSessionBldr = BeanDefinitionBuilder.rootBeanDefinition(SimpleRedirectSessionInformationExpiredStrategy.class);
        expiredSessionBldr.addConstructorArgValue(expiryUrl);
        filterBuilder.addConstructorArgValue(expiredSessionBldr.getBeanDefinition());
    } else if (StringUtils.hasText(expiredSessionStrategyRef)) {
        filterBuilder.addConstructorArgReference(expiredSessionStrategyRef);
    }
    this.pc.popAndRegisterContainingComponent();
    this.concurrentSessionFilter = filterBuilder.getBeanDefinition();
    this.sessionRegistryRef = new RuntimeBeanReference(sessionRegistryId);
}
Also used : BeanDefinitionBuilder(org.springframework.beans.factory.support.BeanDefinitionBuilder) CompositeComponentDefinition(org.springframework.beans.factory.parsing.CompositeComponentDefinition) BeanDefinitionRegistry(org.springframework.beans.factory.support.BeanDefinitionRegistry) RootBeanDefinition(org.springframework.beans.factory.support.RootBeanDefinition) BeanComponentDefinition(org.springframework.beans.factory.parsing.BeanComponentDefinition) RuntimeBeanReference(org.springframework.beans.factory.config.RuntimeBeanReference)

Example 74 with BeanDefinitionRegistry

use of org.springframework.beans.factory.support.BeanDefinitionRegistry in project spring-security by spring-projects.

the class WebSocketMessageBrokerSecurityBeanDefinitionParser method parse.

/**
 * @param element
 * @param parserContext
 * @return the {@link BeanDefinition}
 */
@Override
public BeanDefinition parse(Element element, ParserContext parserContext) {
    BeanDefinitionRegistry registry = parserContext.getRegistry();
    XmlReaderContext context = parserContext.getReaderContext();
    ManagedMap<BeanDefinition, String> matcherToExpression = new ManagedMap<>();
    String id = element.getAttribute(ID_ATTR);
    Element expressionHandlerElt = DomUtils.getChildElementByTagName(element, Elements.EXPRESSION_HANDLER);
    String expressionHandlerRef = (expressionHandlerElt != null) ? expressionHandlerElt.getAttribute("ref") : null;
    boolean expressionHandlerDefined = StringUtils.hasText(expressionHandlerRef);
    boolean sameOriginDisabled = Boolean.parseBoolean(element.getAttribute(DISABLED_ATTR));
    List<Element> interceptMessages = DomUtils.getChildElementsByTagName(element, Elements.INTERCEPT_MESSAGE);
    for (Element interceptMessage : interceptMessages) {
        String matcherPattern = interceptMessage.getAttribute(PATTERN_ATTR);
        String accessExpression = interceptMessage.getAttribute(ACCESS_ATTR);
        String messageType = interceptMessage.getAttribute(TYPE_ATTR);
        BeanDefinition matcher = createMatcher(matcherPattern, messageType, parserContext, interceptMessage);
        matcherToExpression.put(matcher, accessExpression);
    }
    BeanDefinitionBuilder mds = BeanDefinitionBuilder.rootBeanDefinition(ExpressionBasedMessageSecurityMetadataSourceFactory.class);
    mds.setFactoryMethod("createExpressionMessageMetadataSource");
    mds.addConstructorArgValue(matcherToExpression);
    if (expressionHandlerDefined) {
        mds.addConstructorArgReference(expressionHandlerRef);
    }
    String mdsId = context.registerWithGeneratedName(mds.getBeanDefinition());
    ManagedList<BeanDefinition> voters = new ManagedList<>();
    BeanDefinitionBuilder messageExpressionVoterBldr = BeanDefinitionBuilder.rootBeanDefinition(MessageExpressionVoter.class);
    if (expressionHandlerDefined) {
        messageExpressionVoterBldr.addPropertyReference("expressionHandler", expressionHandlerRef);
    }
    voters.add(messageExpressionVoterBldr.getBeanDefinition());
    BeanDefinitionBuilder adm = BeanDefinitionBuilder.rootBeanDefinition(ConsensusBased.class);
    adm.addConstructorArgValue(voters);
    BeanDefinitionBuilder inboundChannelSecurityInterceptor = BeanDefinitionBuilder.rootBeanDefinition(ChannelSecurityInterceptor.class);
    inboundChannelSecurityInterceptor.addConstructorArgValue(registry.getBeanDefinition(mdsId));
    inboundChannelSecurityInterceptor.addPropertyValue("accessDecisionManager", adm.getBeanDefinition());
    String inSecurityInterceptorName = context.registerWithGeneratedName(inboundChannelSecurityInterceptor.getBeanDefinition());
    if (StringUtils.hasText(id)) {
        registry.registerAlias(inSecurityInterceptorName, id);
        if (!registry.containsBeanDefinition(PATH_MATCHER_BEAN_NAME)) {
            registry.registerBeanDefinition(PATH_MATCHER_BEAN_NAME, new RootBeanDefinition(AntPathMatcher.class));
        }
    } else {
        BeanDefinitionBuilder mspp = BeanDefinitionBuilder.rootBeanDefinition(MessageSecurityPostProcessor.class);
        mspp.addConstructorArgValue(inSecurityInterceptorName);
        mspp.addConstructorArgValue(sameOriginDisabled);
        context.registerWithGeneratedName(mspp.getBeanDefinition());
    }
    return null;
}
Also used : Element(org.w3c.dom.Element) XmlReaderContext(org.springframework.beans.factory.xml.XmlReaderContext) BeanDefinitionRegistry(org.springframework.beans.factory.support.BeanDefinitionRegistry) ManagedList(org.springframework.beans.factory.support.ManagedList) RootBeanDefinition(org.springframework.beans.factory.support.RootBeanDefinition) BeanDefinition(org.springframework.beans.factory.config.BeanDefinition) BeanDefinitionBuilder(org.springframework.beans.factory.support.BeanDefinitionBuilder) RootBeanDefinition(org.springframework.beans.factory.support.RootBeanDefinition) AntPathMatcher(org.springframework.util.AntPathMatcher) ManagedMap(org.springframework.beans.factory.support.ManagedMap)

Example 75 with BeanDefinitionRegistry

use of org.springframework.beans.factory.support.BeanDefinitionRegistry in project spring-framework by spring-projects.

the class AnnotationBeanNameGeneratorTests method generateBeanNameWithDefaultNamedComponent.

@Test
public void generateBeanNameWithDefaultNamedComponent() {
    BeanDefinitionRegistry registry = new SimpleBeanDefinitionRegistry();
    AnnotatedBeanDefinition bd = new AnnotatedGenericBeanDefinition(DefaultNamedComponent.class);
    String beanName = this.beanNameGenerator.generateBeanName(bd, registry);
    assertThat(beanName).as("The generated beanName must *never* be null.").isNotNull();
    assertThat(StringUtils.hasText(beanName)).as("The generated beanName must *never* be blank.").isTrue();
    assertThat(beanName).isEqualTo("thoreau");
}
Also used : SimpleBeanDefinitionRegistry(org.springframework.beans.factory.support.SimpleBeanDefinitionRegistry) AnnotatedBeanDefinition(org.springframework.beans.factory.annotation.AnnotatedBeanDefinition) SimpleBeanDefinitionRegistry(org.springframework.beans.factory.support.SimpleBeanDefinitionRegistry) BeanDefinitionRegistry(org.springframework.beans.factory.support.BeanDefinitionRegistry) AnnotatedGenericBeanDefinition(org.springframework.beans.factory.annotation.AnnotatedGenericBeanDefinition) Test(org.junit.jupiter.api.Test)

Aggregations

BeanDefinitionRegistry (org.springframework.beans.factory.support.BeanDefinitionRegistry)86 BeanDefinition (org.springframework.beans.factory.config.BeanDefinition)36 RootBeanDefinition (org.springframework.beans.factory.support.RootBeanDefinition)20 Test (org.junit.jupiter.api.Test)15 AnnotatedBeanDefinition (org.springframework.beans.factory.annotation.AnnotatedBeanDefinition)13 SimpleBeanDefinitionRegistry (org.springframework.beans.factory.support.SimpleBeanDefinitionRegistry)13 BeanDefinitionBuilder (org.springframework.beans.factory.support.BeanDefinitionBuilder)12 ApplicationContext (org.springframework.context.ApplicationContext)10 Map (java.util.Map)9 AbstractBeanDefinition (org.springframework.beans.factory.support.AbstractBeanDefinition)8 AnnotatedGenericBeanDefinition (org.springframework.beans.factory.annotation.AnnotatedGenericBeanDefinition)7 ConfigurableListableBeanFactory (org.springframework.beans.factory.config.ConfigurableListableBeanFactory)7 Test (org.junit.Test)5 MutablePropertyValues (org.springframework.beans.MutablePropertyValues)5 NoSuchBeanDefinitionException (org.springframework.beans.factory.NoSuchBeanDefinitionException)5 CompositeComponentDefinition (org.springframework.beans.factory.parsing.CompositeComponentDefinition)5 AutowireCapableBeanFactory (org.springframework.beans.factory.config.AutowireCapableBeanFactory)4 BeanComponentDefinition (org.springframework.beans.factory.parsing.BeanComponentDefinition)4 DefaultListableBeanFactory (org.springframework.beans.factory.support.DefaultListableBeanFactory)4 XmlBeanDefinitionReader (org.springframework.beans.factory.xml.XmlBeanDefinitionReader)4