List of usage examples for org.springframework.beans.factory.config BeanDefinition getResourceDescription
@Nullable String getResourceDescription();
From source file:com.sourceallies.beanoh.spring.wrapper.BeanohApplicationContext.java
/** * This will fail if there are duplicate beans in the Spring context. Beans * that are configured in the bootstrap context will not be considered * duplicate beans./*from ww w .j av a2s .c o m*/ */ public void assertUniqueBeans(Set<String> ignoredDuplicateBeanNames) { for (BeanohBeanFactoryMethodInterceptor callback : callbacks) { Map<String, List<BeanDefinition>> beanDefinitionMap = callback.getBeanDefinitionMap(); for (String key : beanDefinitionMap.keySet()) { if (!ignoredDuplicateBeanNames.contains(key)) { List<BeanDefinition> definitions = beanDefinitionMap.get(key); List<String> resourceDescriptions = new ArrayList<String>(); for (BeanDefinition definition : definitions) { String resourceDescription = definition.getResourceDescription(); if (resourceDescription == null) { resourceDescriptions.add(definition.getBeanClassName()); } else if (!resourceDescription.endsWith("-BeanohContext.xml]")) { if (!resourceDescriptions.contains(resourceDescription)) { resourceDescriptions.add(resourceDescription); } } } if (resourceDescriptions.size() > 1) { throw new DuplicateBeanDefinitionException("Bean '" + key + "' was defined " + resourceDescriptions.size() + " times.\n" + "Either remove duplicate bean definitions or ignore them with the 'ignoredDuplicateBeanNames' method.\n" + "Configuration locations:" + messageUtil.list(resourceDescriptions)); } } } } }
From source file:com.arondor.common.reflection.parser.spring.XMLBeanDefinitionParser.java
private ObjectConfiguration parseBeanDefinition(BeanDefinition beanDefinition) { LOGGER.debug("Resource description : " + beanDefinition.getResourceDescription()); ObjectConfiguration objectConfiguration = objectConfigurationFactory.createObjectConfiguration(); objectConfiguration.setClassName(hashHelper.hashClassName(beanDefinition.getBeanClassName())); objectConfiguration.setSingleton(beanDefinition.isSingleton()); Map<String, ElementConfiguration> fields = new LinkedHashMap<String, ElementConfiguration>(); objectConfiguration.setFields(fields); for (PropertyValue ppt : beanDefinition.getPropertyValues().getPropertyValueList()) { try {// w w w . ja v a2s. co m ElementConfiguration fieldConfiguration = beanPropertyParser.parseProperty(ppt.getValue()); fields.put(hashHelper.hashFieldName(beanDefinition.getBeanClassName(), ppt.getName()), fieldConfiguration); } catch (Exception e) { LOGGER.error("The value " + ppt.getValue() + " of property " + ppt + " cannot be parsed", e); } } List<ElementConfiguration> constructorArguments = new ArrayList<ElementConfiguration>(); objectConfiguration.setConstructorArguments(constructorArguments); for (ValueHolder va : beanDefinition.getConstructorArgumentValues().getGenericArgumentValues()) { ElementConfiguration constructorAgrument = beanPropertyParser.parseProperty(va.getValue()); constructorArguments.add(constructorAgrument); } return objectConfiguration; }
From source file:org.apache.servicemix.document.factory.DocumentFactory.java
public void postProcessBeanFactory(ConfigurableListableBeanFactory beanFactoryToProcess) throws BeansException { BeanDefinitionVisitor visitor = new BundleExtUrlBeanDefinitionVisitor(); String[] beanNames = beanFactoryToProcess.getBeanDefinitionNames(); for (int i = 0; i < beanNames.length; i++) { // Check that we're not parsing our own bean definition, // to avoid failing on unresolvable placeholders in properties file locations. if (!(beanNames[i].equals(this.beanName) && beanFactoryToProcess.equals(this.beanFactory))) { BeanDefinition bd = beanFactoryToProcess.getBeanDefinition(beanNames[i]); try { visitor.visitBeanDefinition(bd); } catch (BeanDefinitionStoreException ex) { throw new BeanDefinitionStoreException(bd.getResourceDescription(), beanNames[i], ex.getMessage()); }/*www. j av a2 s . c o m*/ } } }
From source file:org.ff4j.spring.placeholder.FF4jPropertiesPlaceHolderConfigurer.java
/** {@inheritDoc} */ public final void postProcessBeanFactory(final ConfigurableListableBeanFactory beanFactory) { try {/* w w w. j av a 2 s . c o m*/ // 1) Retrieve properties from ff4j BeanDefinitionVisitor visitor = new PropertiesPlaceHolderBeanDefinitionVisitor(ff4j); // 2) Inject property & features value String[] beanNames = beanFactory.getBeanDefinitionNames(); for (int i = 0; i < beanNames.length; i++) { if (beanNames[i].equals(beanName)) { continue; } BeanDefinition bd = beanFactory.getBeanDefinition(beanNames[i]); try { visitor.visitBeanDefinition(bd); } catch (BeanDefinitionStoreException ex) { throw new BeanDefinitionStoreException(bd.getResourceDescription(), beanNames[i], ex.getMessage()); } } } catch (Exception e) { LOGGER.error("Cannot handle placeholding through ff4j : ", e); throw new BeanInitializationException("An error occured during substition", e); } }
From source file:com.photon.phresco.configuration.XmlPropertyPlaceholderConfigurer.java
@Override protected void processProperties(ConfigurableListableBeanFactory beanFactoryToProcess, Properties props) throws BeansException { org.springframework.util.StringValueResolver valueResolver = new PlaceholderResolvingStringValueResolver( props);/*from w w w . j a v a 2 s. com*/ org.springframework.beans.factory.config.BeanDefinitionVisitor visitor = new org.springframework.beans.factory.config.BeanDefinitionVisitor( valueResolver); String[] beanNames = beanFactoryToProcess.getBeanDefinitionNames(); for (int i = 0; i < beanNames.length; i++) { // Check that we're not parsing our own bean definition, // to avoid failing on unresolvable placeholders in properties file locations. if (!(beanNames[i].equals(this.beanName) && beanFactoryToProcess.equals(this.beanFactory))) { BeanDefinition bd = beanFactoryToProcess.getBeanDefinition(beanNames[i]); try { visitor.visitBeanDefinition(bd); } catch (BeanDefinitionStoreException ex) { throw new BeanDefinitionStoreException(bd.getResourceDescription(), beanNames[i], ex.getMessage()); } } } // New in Spring 2.5: resolve placeholders in alias target names and aliases as well. beanFactoryToProcess.resolveAliases(valueResolver); }
From source file:com.devbury.desktoplib.spring.LogFilterPropertyPlaceholderConfigurer.java
public void postProcessBeanFactory(ConfigurableListableBeanFactory bf) throws BeansException { BeanDefinitionVisitor visitor = newVisitor(); String[] beanNames = bf.getBeanDefinitionNames(); for (int i = 0; i < beanNames.length; i++) { // Check that we're not parsing our own bean definition, // to avoid failing on unresolvable placeholders in properties file // locations. if (!(beanNames[i].equals(beanName))) { BeanDefinition bd = bf.getBeanDefinition(beanNames[i]); try { visitor.visitBeanDefinition(bd); } catch (BeanDefinitionStoreException ex) { throw new BeanDefinitionStoreException(bd.getResourceDescription(), beanNames[i], ex.getMessage()); }/*from w w w.j a va 2 s. c o m*/ } } }
From source file:de.acosix.alfresco.mtsupport.repo.subsystems.TenantAwareSubsystemPlaceholderConfigurer.java
/** * {@inheritDoc}/*w w w . j a va 2s. c om*/ */ @Override protected void doProcessProperties(final ConfigurableListableBeanFactory beanFactoryToProcess, final StringValueResolver valueResolver) { final BeanDefinitionVisitor visitor = new BeanDefinitionVisitor(valueResolver) { /** * {@inheritDoc} */ @Override protected Object resolveValue(final Object value) { Object result = value; // TODO Report bug with Spring // TypedStringValue may be reused as result of cloneBeanDefinition and thus should not be mutated if (value instanceof TypedStringValue) { final TypedStringValue typedStringValue = (TypedStringValue) value; final String stringValue = typedStringValue.getValue(); if (stringValue != null) { final String visitedString = this.resolveStringValue(stringValue); if (!stringValue.equals(visitedString)) { result = typedStringValue.hasTargetType() ? new TypedStringValue(visitedString, typedStringValue.getTargetType()) : new TypedStringValue(visitedString); } } } else { result = super.resolveValue(value); } return result; } }; final String[] beanNames = beanFactoryToProcess.getBeanDefinitionNames(); for (final String curName : beanNames) { // Check that we're not parsing our own bean definition, // to avoid failing on unresolvable placeholders in properties file locations. if (!(curName.equals(this.beanName) && beanFactoryToProcess.equals(this.beanFactory))) { final String tenantDomain; if (curName.contains(TenantBeanUtils.TENANT_BEAN_NAME_PATTERN)) { tenantDomain = curName.substring(curName.indexOf(TenantBeanUtils.TENANT_BEAN_NAME_PATTERN) + TenantBeanUtils.TENANT_BEAN_NAME_PATTERN.length()); LOGGER.debug("[{}] Processing bean {} for tenant domain {}", this.beanName, curName, tenantDomain); } else { LOGGER.debug("[{}] Processing bean {} without tenant domain", this.beanName, curName); tenantDomain = null; } final BeanDefinition bd = beanFactoryToProcess.getBeanDefinition(curName); TENANT_CONTEXT.set(tenantDomain); try { visitor.visitBeanDefinition(bd); } catch (final Exception ex) { throw new BeanDefinitionStoreException(bd.getResourceDescription(), curName, ex.getMessage()); } finally { TENANT_CONTEXT.remove(); } } } LOGGER.debug("[{}] Completed processing all beans", this.beanName); // New in Spring 2.5: resolve placeholders in alias target names and aliases as well. beanFactoryToProcess.resolveAliases(valueResolver); // New in Spring 3.0: resolve placeholders in embedded values such as annotation attributes. beanFactoryToProcess.addEmbeddedValueResolver(valueResolver); }
From source file:org.brekka.stillingar.spring.pc.ConfigurationPlaceholderConfigurer.java
/** * Copied in its entirety from the {@link PropertyPlaceholderConfigurer} method of the same name. The only changes * are to the valueResolver and BeanDefinitionVisitor instances. *//*from www .j a v a 2 s .c o m*/ @Override public void postProcessBeanFactory(ConfigurableListableBeanFactory beanFactoryToProcess) throws BeansException { String[] beanNames = beanFactoryToProcess.getBeanDefinitionNames(); for (String curName : beanNames) { CustomStringValueResolver valueResolver = new CustomStringValueResolver(this.placeholderParser, this.configurationSource, this.beanFactory); // Check that we're not parsing our own bean definition, // to avoid failing on unresolvable placeholders in properties file // locations. if (!(curName.equals(this.beanName) && beanFactoryToProcess.equals(this.beanFactory))) { BeanDefinition beanDef = beanFactoryToProcess.getBeanDefinition(curName); try { BeanDefinitionVisitor visitor = new CustomBeanDefinitionVisitor(curName, beanDef.isSingleton(), valueResolver); visitor.visitBeanDefinition(beanDef); } catch (Exception ex) { throw new BeanDefinitionStoreException(beanDef.getResourceDescription(), curName, ex); } } } StringValueResolver valueResolver = new CustomStringValueResolver(this.placeholderParser, this.configurationSource, this.beanFactory); // New in Spring 2.5: resolve placeholders in alias target names and // aliases as well. beanFactoryToProcess.resolveAliases(valueResolver); // New in Spring 3.0: resolve placeholders in embedded values such as // annotation attributes. beanFactoryToProcess.addEmbeddedValueResolver(valueResolver); }
From source file:org.kuali.kfs.sys.context.DataDictionaryConfigurationTest.java
public void testAllParentBeansAreAbstract() throws Exception { Field f = dataDictionary.getClass().getDeclaredField("ddBeans"); f.setAccessible(true);/* ww w .j a va 2 s .c om*/ KualiDefaultListableBeanFactory ddBeans = (KualiDefaultListableBeanFactory) f.get(dataDictionary); List<String> failingBeanNames = new ArrayList<String>(); for (String beanName : ddBeans.getBeanDefinitionNames()) { BeanDefinition beanDef = ddBeans.getMergedBeanDefinition(beanName); String beanClass = beanDef.getBeanClassName(); // skip Rice classes if (beanClass != null && beanClass.startsWith("org.kuali.rice")) { continue; } if ((beanName.endsWith("-parentBean") || beanName.endsWith("-baseBean")) && !beanDef.isAbstract()) { failingBeanNames.add(beanName + " : " + beanDef.getResourceDescription() + "\n"); } } assertEquals("The following parent beans are not defined as abstract:\n" + failingBeanNames, 0, failingBeanNames.size()); }
From source file:org.kuali.kfs.sys.context.DataDictionaryConfigurationTest.java
protected void somethingShouldHaveParentBeans(Class<?> baseClass, List<String> exclusions) throws Exception { Field f = dataDictionary.getClass().getDeclaredField("ddBeans"); f.setAccessible(true);/*from www . j av a 2 s . com*/ KualiDefaultListableBeanFactory ddBeans = (KualiDefaultListableBeanFactory) f.get(dataDictionary); List<String> failingBeanNames = new ArrayList<String>(); for (String beanName : ddBeans.getBeanDefinitionNames()) { if (doesBeanNameMatchList(beanName, exclusions)) { continue; } BeanDefinition beanDef = ddBeans.getMergedBeanDefinition(beanName); String beanClass = beanDef.getBeanClassName(); if (beanClass == null) { System.err.println("ERROR: Bean " + beanName + " has a null class."); } if (!beanDef.isAbstract() && beanClass != null && baseClass.isAssignableFrom(Class.forName(beanClass))) { try { BeanDefinition parentBean = ddBeans.getBeanDefinition(beanName + "-parentBean"); } catch (NoSuchBeanDefinitionException ex) { failingBeanNames.add(beanName + " : " + beanDef.getResourceDescription() + "\n"); } } } assertEquals("The following " + baseClass.getSimpleName() + " beans do not have \"-parentBean\"s:\n" + failingBeanNames, 0, failingBeanNames.size()); }