List of usage examples for org.springframework.beans.factory.config BeanDefinition getScope
@Nullable String getScope();
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; }