Example usage for org.springframework.beans.factory.config BeanDefinition getScope

List of usage examples for org.springframework.beans.factory.config BeanDefinition getScope

Introduction

In this page you can find the example usage for org.springframework.beans.factory.config BeanDefinition getScope.

Prototype

@Nullable
String getScope();

Source Link

Document

Return the name of the current target scope for this bean, or null if not known yet.

Usage

From source file:org.os890.ds.addon.spring.impl.SpringBridgeExtension.java

public void initContainerBridge(@Observes AfterBeanDiscovery abd, BeanManager beanManager) {
    this.springContext = new EditableConfigurableApplicationContextProxy(
            resolveSpringContext(abd, beanManager));

    if (this.springContext == null) {
        abd.addDefinitionError(new IllegalStateException("no spring-context found/created"));
        return;/*from   ww  w .  j a v a 2  s  . c o  m*/
    }

    for (String beanName : this.springContext.getBeanDefinitionNames()) {
        BeanDefinition beanDefinition = this.springContext.getBeanFactory().getBeanDefinition(beanName);

        String name = beanDefinition.getBeanClassName();

        if (name == null) //can be null in case of config-files as spring bean
        {
            continue;
        }

        Class<?> beanClass = ClassUtils.tryToLoadClassForName(name);

        if (CdiSpringScope.class.getName().equals(beanDefinition.getScope())
                || isFilteredSpringBean(beanClass)) {
            continue; //don't add cdi-beans registered in spring back to cdi
        }

        abd.addBean(
                createBeanAdapter(beanClass, beanName, beanDefinition, this.springContext, beanManager, abd));
    }

    this.beanFilterList.clear();
    this.cdiBeansForSpring.clear();
}

From source file:org.joinfaces.annotations.JsfCdiToSpringBeanFactoryPostProcessor.java

/**
 * Checks how is bean defined and deduces scope name from JSF CDI annotations.
 *
 * @param definition beanDefinition/* www  .j a  va  2s.c  o m*/
 */
private void registerJsfCdiToSpring(BeanDefinition definition) {

    if (definition instanceof AnnotatedBeanDefinition) {
        AnnotatedBeanDefinition annDef = (AnnotatedBeanDefinition) definition;

        String scopeName = null;
        // firstly check whether bean is defined via configuration
        if (annDef.getFactoryMethodMetadata() != null) {
            scopeName = JsfCdiToSpring.deduceScopeName(annDef.getFactoryMethodMetadata());
        } else {
            // fallback to type
            scopeName = JsfCdiToSpring.deduceScopeName(annDef.getMetadata().getAnnotationTypes());
        }

        if (scopeName != null) {
            definition.setScope(scopeName);

            logger.debug(
                    definition.getBeanClassName() + " - Scope(" + definition.getScope().toUpperCase() + ")");
        }
    }
}

From source file:org.impalaframework.spring.dynamic.DynamicBeansProcessor.java

public void postProcessBeanFactory(ConfigurableListableBeanFactory beanFactory) throws BeansException {

    String[] beanDefinitionNames = beanFactory.getBeanDefinitionNames().clone();
    for (String beanName : beanDefinitionNames) {
        BeanDefinition beanDefinition = beanFactory.getBeanDefinition(beanName);
        if (logger.isInfoEnabled())
            logger.info(beanName + ": " + beanDefinition.getScope());

        if (beanDefinition.getScope().equals("dynamic") && beanFactory instanceof BeanDefinitionRegistry) {

            final BeanDefinitionRegistry bdr = (BeanDefinitionRegistry) beanFactory;

            final String implBeanName = beanName + "Impl";
            final String targetSourceBeanName = beanName + "TargetSource";

            bdr.registerBeanDefinition(implBeanName, beanDefinition);

            /*/*from  w  w w  . j  a v a  2  s .  c  o  m*/
             * <bean id="testInterface"
             * class="org.springframework.aop.framework.ProxyFactoryBean">
             * <property name="targetSource"> <bean
             * class="org.impalaframework.spring.externalconfig.RefreshableTargetSourceFactoryBean">
             * <property name="beanName" methodName = "testInterfaceImpl"/>
             * </bean> </property> </bean>
             */

            RootBeanDefinition targetSource = new RootBeanDefinition(PrototypeTargetSource.class);
            targetSource.getPropertyValues().addPropertyValue("targetBeanName", implBeanName);
            bdr.registerBeanDefinition(targetSourceBeanName, targetSource);

            RootBeanDefinition proxy = new RootBeanDefinition(ProxyFactoryBean.class);
            proxy.getPropertyValues().addPropertyValue("targetSource",
                    new RuntimeBeanReference(targetSourceBeanName));
            bdr.registerBeanDefinition(beanName, proxy);

        }
    }
}

From source file:org.kuali.rice.krad.datadictionary.DataDictionary.java

/**
 * Returns a property value for the bean with the given name from the dictionary.
 *
 * @param beanName id or name for the bean definition
 * @param propertyName name of the property to retrieve, must be a valid property configured on
 * the bean definition/*from w  w  w. j av  a 2 s .  c om*/
 * @return Object property value for property
 */
public Object getDictionaryBeanProperty(String beanName, String propertyName) {
    Object bean = ddBeans.getSingleton(beanName);
    if (bean != null) {
        return ObjectPropertyUtils.getPropertyValue(bean, propertyName);
    }

    BeanDefinition beanDefinition = ddBeans.getMergedBeanDefinition(beanName);

    if (beanDefinition == null) {
        throw new RuntimeException("Unable to get bean for bean name: " + beanName);
    }

    PropertyValues pvs = beanDefinition.getPropertyValues();
    if (pvs.contains(propertyName)) {
        PropertyValue propertyValue = pvs.getPropertyValue(propertyName);

        Object value;
        if (propertyValue.isConverted()) {
            value = propertyValue.getConvertedValue();
        } else if (propertyValue.getValue() instanceof String) {
            String unconvertedValue = (String) propertyValue.getValue();
            Scope scope = ddBeans.getRegisteredScope(beanDefinition.getScope());
            BeanExpressionContext beanExpressionContext = new BeanExpressionContext(ddBeans, scope);

            value = ddBeans.getBeanExpressionResolver().evaluate(unconvertedValue, beanExpressionContext);
        } else {
            value = propertyValue.getValue();
        }

        return value;
    }

    return null;
}

From source file:org.pentaho.platform.engine.core.system.objfac.spring.PentahoBeanScopeValidatorPostProcessor.java

protected void validateBeanScope(String beanName, BeanDefinition bd) {

    if (bd != null && StringUtils.isEmpty(bd.getScope())) {
        logger.info("Setting '" + beanName + "' with 'singleton' scope");
        bd.setScope(BeanDefinition.SCOPE_SINGLETON);
    }//from w w w . j a  va2  s.  c  o m
}

From source file:org.springframework.amqp.rabbit.stocks.context.RefreshScope.java

public void postProcessBeanFactory(ConfigurableListableBeanFactory beanFactory) throws BeansException {

    beanFactory.registerScope(name, this);
    setSerializationId(beanFactory);/*from  w w  w  .  j a  v  a  2 s  .c o  m*/

    this.beanFactory = beanFactory;

    evaluationContext = new StandardEvaluationContext();
    evaluationContext.addPropertyAccessor(new BeanFactoryAccessor());

    Assert.state(beanFactory instanceof BeanDefinitionRegistry,
            "BeanFactory was not a BeanDefinitionRegistry, so RefreshScope cannot be used.");
    BeanDefinitionRegistry registry = (BeanDefinitionRegistry) beanFactory;

    for (String beanName : beanFactory.getBeanDefinitionNames()) {
        BeanDefinition definition = beanFactory.getBeanDefinition(beanName);
        // Replace this or any of its inner beans with scoped proxy if it
        // has this scope
        boolean scoped = name.equals(definition.getScope());
        Scopifier scopifier = new Scopifier(registry, name, proxyTargetClass, scoped);
        scopifier.visitBeanDefinition(definition);
        if (scoped) {
            createScopedProxy(beanName, definition, registry, proxyTargetClass);
        }
    }

}

From source file:org.springframework.batch.core.jsr.configuration.xml.JsrBeanDefinitionDocumentReaderTests.java

@Test
@SuppressWarnings("resource")
public void testGenerationOfSpringBeanDefinitionsForMultipleReferences() {
    JsrXmlApplicationContext applicationContext = new JsrXmlApplicationContext(new Properties());
    applicationContext.setValidating(false);
    applicationContext.load(new ClassPathResource("jsrBaseContext.xml"),
            new ClassPathResource("/META-INF/batch-jobs/jsrSpringInstanceTests.xml"));

    applicationContext.refresh();//w  w w.  j  av a 2s .c  o  m

    assertTrue("exitStatusSettingStepListener bean definition not found",
            applicationContext.containsBeanDefinition("exitStatusSettingStepListener"));
    assertTrue("scopedTarget.exitStatusSettingStepListener bean definition not found",
            applicationContext.containsBeanDefinition("scopedTarget.exitStatusSettingStepListener"));

    BeanDefinition exitStatusSettingStepListenerBeanDefinition = applicationContext
            .getBeanDefinition("scopedTarget.exitStatusSettingStepListener");
    assertTrue("step".equals(exitStatusSettingStepListenerBeanDefinition.getScope()));

    assertTrue("Should not contain bean definition for exitStatusSettingStepListener1",
            !applicationContext.containsBeanDefinition("exitStatusSettingStepListener1"));
    assertTrue("Should not contain bean definition for exitStatusSettingStepListener2",
            !applicationContext.containsBeanDefinition("exitStatusSettingStepListener2"));
    assertTrue("Should not contain bean definition for exitStatusSettingStepListener3",
            !applicationContext.containsBeanDefinition("exitStatusSettingStepListener3"));

    assertTrue("Should not contain bean definition for testBatchlet1",
            !applicationContext.containsBeanDefinition("testBatchlet1"));
    assertTrue("Should not contain bean definition for testBatchlet2",
            !applicationContext.containsBeanDefinition("testBatchlet2"));

    assertTrue("testBatchlet bean definition not found",
            applicationContext.containsBeanDefinition("testBatchlet"));

    BeanDefinition testBatchletBeanDefinition = applicationContext.getBeanDefinition("testBatchlet");
    assertTrue("singleton".equals(testBatchletBeanDefinition.getScope()));
}

From source file:org.springframework.batch.core.partition.gemfire.RemoteScope.java

public void postProcessBeanFactory(ConfigurableListableBeanFactory beanFactory) throws BeansException {

    beanFactory.registerScope(name, this);

    this.beanFactory = beanFactory;
    evaluationContext = new StandardEvaluationContext();
    evaluationContext.addPropertyAccessor(new BeanFactoryAccessor());

    Assert.state(beanFactory instanceof BeanDefinitionRegistry,
            "BeanFactory was not a BeanDefinitionRegistry, so RefreshScope cannot be used.");
    BeanDefinitionRegistry registry = (BeanDefinitionRegistry) beanFactory;

    String id = this.id;
    if (id == null) {
        String names = Arrays.asList(registry.getBeanDefinitionNames()).toString();
        logger.debug("Generating bean factory id from names: " + names);
        id = UUID.nameUUIDFromBytes(names.getBytes()).toString();
        logger.debug("Generated bean factory id: " + id);
    }/*from  ww w .  ja  va2s .  c om*/

    Assert.state(beanFactory instanceof BeanDefinitionRegistry,
            "BeanFactory was not a DefaultListableBeanFactory, so RefreshScope cannot be used.");
    ((DefaultListableBeanFactory) beanFactory).setSerializationId(id);

    for (String beanName : beanFactory.getBeanDefinitionNames()) {
        BeanDefinition definition = beanFactory.getBeanDefinition(beanName);
        // Replace this or any of its inner beans with scoped proxy if it
        // has this scope
        boolean scoped = name.equals(definition.getScope());
        Scopifier scopifier = new Scopifier(registry, name, proxyTargetClass, scoped);
        scopifier.visitBeanDefinition(definition);
        if (scoped) {
            createScopedProxy(beanName, definition, registry, proxyTargetClass);
        }
    }

}

From source file:org.springframework.beans.factory.DefaultListableBeanFactoryTests.java

@Test
public void testScopeInheritanceForChildBeanDefinitions() throws Exception {
    RootBeanDefinition parent = new RootBeanDefinition();
    parent.setScope("bonanza!");

    AbstractBeanDefinition child = new ChildBeanDefinition("parent");
    child.setBeanClass(TestBean.class);

    DefaultListableBeanFactory factory = new DefaultListableBeanFactory();
    factory.registerBeanDefinition("parent", parent);
    factory.registerBeanDefinition("child", child);

    BeanDefinition def = factory.getMergedBeanDefinition("child");
    assertEquals("Child 'scope' not inherited", "bonanza!", def.getScope());
}

From source file:org.springframework.beans.factory.xml.BeanDefinitionParserDelegate.java

/**
 * Apply the attributes of the given bean element to the given bean * definition.
 * @param ele bean declaration element//from   w  ww.ja  v  a2 s. co m
 * @param beanName bean name
 * @param containingBean containing bean definition
 * @return a bean definition initialized according to the bean element attributes
 */
public AbstractBeanDefinition parseBeanDefinitionAttributes(Element ele, String beanName,
        @Nullable BeanDefinition containingBean, AbstractBeanDefinition bd) {

    if (ele.hasAttribute(SINGLETON_ATTRIBUTE)) {
        error("Old 1.x 'singleton' attribute in use - upgrade to 'scope' declaration", ele);
    } else if (ele.hasAttribute(SCOPE_ATTRIBUTE)) {
        bd.setScope(ele.getAttribute(SCOPE_ATTRIBUTE));
    } else if (containingBean != null) {
        // Take default from containing bean in case of an inner bean definition.
        bd.setScope(containingBean.getScope());
    }

    if (ele.hasAttribute(ABSTRACT_ATTRIBUTE)) {
        bd.setAbstract(TRUE_VALUE.equals(ele.getAttribute(ABSTRACT_ATTRIBUTE)));
    }

    String lazyInit = ele.getAttribute(LAZY_INIT_ATTRIBUTE);
    if (DEFAULT_VALUE.equals(lazyInit)) {
        lazyInit = this.defaults.getLazyInit();
    }
    bd.setLazyInit(TRUE_VALUE.equals(lazyInit));

    String autowire = ele.getAttribute(AUTOWIRE_ATTRIBUTE);
    bd.setAutowireMode(getAutowireMode(autowire));

    if (ele.hasAttribute(DEPENDS_ON_ATTRIBUTE)) {
        String dependsOn = ele.getAttribute(DEPENDS_ON_ATTRIBUTE);
        bd.setDependsOn(StringUtils.tokenizeToStringArray(dependsOn, MULTI_VALUE_ATTRIBUTE_DELIMITERS));
    }

    String autowireCandidate = ele.getAttribute(AUTOWIRE_CANDIDATE_ATTRIBUTE);
    if ("".equals(autowireCandidate) || DEFAULT_VALUE.equals(autowireCandidate)) {
        String candidatePattern = this.defaults.getAutowireCandidates();
        if (candidatePattern != null) {
            String[] patterns = StringUtils.commaDelimitedListToStringArray(candidatePattern);
            bd.setAutowireCandidate(PatternMatchUtils.simpleMatch(patterns, beanName));
        }
    } else {
        bd.setAutowireCandidate(TRUE_VALUE.equals(autowireCandidate));
    }

    if (ele.hasAttribute(PRIMARY_ATTRIBUTE)) {
        bd.setPrimary(TRUE_VALUE.equals(ele.getAttribute(PRIMARY_ATTRIBUTE)));
    }

    if (ele.hasAttribute(INIT_METHOD_ATTRIBUTE)) {
        String initMethodName = ele.getAttribute(INIT_METHOD_ATTRIBUTE);
        bd.setInitMethodName(initMethodName);
    } else if (this.defaults.getInitMethod() != null) {
        bd.setInitMethodName(this.defaults.getInitMethod());
        bd.setEnforceInitMethod(false);
    }

    if (ele.hasAttribute(DESTROY_METHOD_ATTRIBUTE)) {
        String destroyMethodName = ele.getAttribute(DESTROY_METHOD_ATTRIBUTE);
        bd.setDestroyMethodName(destroyMethodName);
    } else if (this.defaults.getDestroyMethod() != null) {
        bd.setDestroyMethodName(this.defaults.getDestroyMethod());
        bd.setEnforceDestroyMethod(false);
    }

    if (ele.hasAttribute(FACTORY_METHOD_ATTRIBUTE)) {
        bd.setFactoryMethodName(ele.getAttribute(FACTORY_METHOD_ATTRIBUTE));
    }
    if (ele.hasAttribute(FACTORY_BEAN_ATTRIBUTE)) {
        bd.setFactoryBeanName(ele.getAttribute(FACTORY_BEAN_ATTRIBUTE));
    }

    return bd;
}