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

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

Introduction

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

Prototype

@Nullable
Object getAttribute(String name);

Source Link

Document

Get the value of the attribute identified by name .

Usage

From source file:org.iff.infra.util.spring.script.ScriptFactoryPostProcessor.java

protected boolean resolveProxyTargetClass(BeanDefinition beanDefinition) {
    boolean proxyTargetClass = this.defaultProxyTargetClass;
    Object attributeValue = beanDefinition.getAttribute(PROXY_TARGET_CLASS_ATTRIBUTE);
    if (attributeValue instanceof Boolean) {
        proxyTargetClass = (Boolean) attributeValue;
    } else if (attributeValue instanceof String) {
        proxyTargetClass = Boolean.valueOf((String) attributeValue);
    } else if (attributeValue != null) {
        throw new BeanDefinitionStoreException(
                "Invalid proxy target class attribute [" + PROXY_TARGET_CLASS_ATTRIBUTE + "] with value '"
                        + attributeValue + "': needs to be of type Boolean or String");
    }/* w  ww  .j  av a 2  s.co m*/
    return proxyTargetClass;
}

From source file:lodsve.core.condition.BeanTypeRegistry.java

private Class<?> getConfigurationClassFactoryBeanGeneric(ConfigurableListableBeanFactory beanFactory,
        BeanDefinition definition, String name) throws Exception {
    Method method = getFactoryMethod(beanFactory, definition);
    Class<?> generic = ResolvableType.forMethodReturnType(method).as(FactoryBean.class).resolveGeneric();
    if ((generic == null || generic.equals(Object.class))
            && definition.hasAttribute(FACTORY_BEAN_OBJECT_TYPE)) {
        generic = getTypeFromAttribute(definition.getAttribute(FACTORY_BEAN_OBJECT_TYPE));
    }//ww  w.j a v  a 2  s.  c om
    return generic;
}

From source file:lodsve.core.condition.BeanTypeRegistry.java

private Class<?> getDirectFactoryBeanGeneric(ConfigurableListableBeanFactory beanFactory,
        BeanDefinition definition, String name) throws ClassNotFoundException, LinkageError {
    Class<?> factoryBeanClass = ClassUtils.forName(definition.getBeanClassName(),
            beanFactory.getBeanClassLoader());
    Class<?> generic = ResolvableType.forClass(factoryBeanClass).as(FactoryBean.class).resolveGeneric();
    if ((generic == null || generic.equals(Object.class))
            && definition.hasAttribute(FACTORY_BEAN_OBJECT_TYPE)) {
        generic = getTypeFromAttribute(definition.getAttribute(FACTORY_BEAN_OBJECT_TYPE));
    }/*w  w  w . j av  a2 s  .  c o m*/
    return generic;
}

From source file:org.bigtester.ate.model.page.elementaction.SendKeysActionPostBeanProcessor.java

/**
 * {@inheritDoc}/*from w ww.j a  va2s. c o m*/
 */
@Override
public void postProcessBeanFactory(@Nullable ConfigurableListableBeanFactory beanFactory)
        throws BeansException {
    if (beanFactory == null)
        throw new IllegalStateException("Spring Container initialization error");
    // String[] homePageNames =
    // beanFactory.getBeanNamesForType(IStepInputData.class, true, false);
    String[] allSendKeysActions = beanFactory.getBeanNamesForType(SendKeysAction.class, true, false);
    for (int index = 0; index < allSendKeysActions.length; index++) {
        BeanDefinition sendKeyActDef = beanFactory.getBeanDefinition(allSendKeysActions[index]);
        String dataValue = ((RuntimeBeanReference) sendKeyActDef.getConstructorArgumentValues()
                .getGenericArgumentValue(RuntimeBeanReference.class).getValue()).getBeanName();
        //.getAttribute(XsdElementConstants.ATTR_SENDKEYSACTION_DATAVALUE);
        if (null == dataValue) {
            throw new IllegalStateException("Spring Container sendKeyActionValue initialization error");
        } else {
            try {
                beanFactory.getBeanDefinition(dataValue);
            } catch (NoSuchBeanDefinitionException NoBeanDef) {

                String idstr;
                BeanDefinitionBuilder definitionBuilder;

                if (StringUtils.isEmpty(dataValue)) {
                    definitionBuilder = BeanDefinitionBuilder
                            .genericBeanDefinition(RandomAlphaTextValueDataHolder.class);
                    idstr = (String) sendKeyActDef.getAttribute("id")
                            + "_SendKeysRandomAlphaTextDataValueBean_ID";
                    definitionBuilder.addConstructorArgValue(idstr);
                    definitionBuilder.addConstructorArgValue(10);

                } else {
                    definitionBuilder = BeanDefinitionBuilder
                            .genericBeanDefinition(ManualAssignedValueDataHolder.class);

                    definitionBuilder.addConstructorArgValue(EnumRunTimeDataType.TEXT);
                    definitionBuilder.addConstructorArgValue(dataValue);

                    idstr = (String) sendKeyActDef.getAttribute("id") + "_SendKeysDataValueBean_ID";
                    definitionBuilder.addConstructorArgValue(idstr);

                }

                getBdReg().registerBeanDefinition(idstr, definitionBuilder.getBeanDefinition());
                sendKeyActDef.setAttribute(XsdElementConstants.ATTR_SENDKEYSACTION_DATAVALUE, idstr);
                sendKeyActDef.getConstructorArgumentValues().getGenericArgumentValue(RuntimeBeanReference.class)
                        .setValue(new RuntimeBeanReference(idstr));
            }
        }
    }

}

From source file:com.helpinput.spring.BeanRegister.java

public static boolean removeBean(DefaultListableBeanFactory dlbf, BeanInfo beanInfo, String beanName) {
    BeanDefinition bd = null;
    if (!Utils.hasLength(beanName))
        if (beanInfo != null)
            beanName = beanInfo.beanName;
    if (!Utils.hasLength(beanName))
        return false;

    try {/*w w  w. ja va  2s  . c  o m*/
        bd = dlbf.getBeanDefinition(beanName);
        if (bd != null) {
            //?bean? relativePath?, ??
            //               BeanRegister.runOnUnregisger(beanName, dlbf);
            String scope = bd.getScope();
            /**
             * bean?application,singletonbeansession?view? flash?
             * requestbean,
             * session,view,flash,requestbeanapplicationbean
             * application,singletonbean
             * scopebeanbeanbean
             */
            if (application_scope.equals(scope))
                dlbf.destroyScopedBean(beanName);
            else if (singleton_scope.equals(scope))
                dlbf.destroySingleton(beanName);

            dlbf.removeBeanDefinition(beanName);
            if (beanInfo != null && beanInfo.beanClass != null
                    && PropertyEditor.class.isAssignableFrom(beanInfo.beanClass)) {
                ContextHolder.refreshers.remover(beanName);
            }

            List<BeanRegistInterceptor> interceptors = ContextHolder.beanRegistIntercpterHolder.getList();
            if (Utils.hasLength(interceptors)) {
                for (BeanRegistInterceptor beanRegistInterceptor : interceptors) {
                    if (beanRegistInterceptor.afterRemove(beanInfo.beanClass, beanName, scope, dlbf))
                        break;
                }
            }

            logRegist(Info.Removed, (String) bd.getAttribute(relativePath), beanInfo.beanName, scope);
            return true;
        }
    } catch (NoSuchBeanDefinitionException e) {
        //? BeanDefinition,????beanInfo,
        return true;
    }
    return false;
}

From source file:org.iff.infra.util.spring.script.ScriptFactoryPostProcessor.java

@Override
public Object postProcessBeforeInstantiation(Class<?> beanClass, String beanName) {
    // We only apply special treatment to ScriptFactory implementations here.
    if (!ScriptFactory.class.isAssignableFrom(beanClass)) {
        return null;
    }/*  w  w  w. ja v a 2 s .  c om*/

    BeanDefinition bd = this.beanFactory.getMergedBeanDefinition(beanName);
    String scriptFactoryBeanName = SCRIPT_FACTORY_NAME_PREFIX + beanName;
    String scriptedObjectBeanName = SCRIPTED_OBJECT_NAME_PREFIX + beanName;
    prepareScriptBeans(bd, scriptFactoryBeanName, scriptedObjectBeanName);

    ScriptFactory scriptFactory = this.scriptBeanFactory.getBean(scriptFactoryBeanName, ScriptFactory.class);
    ScriptSource scriptSource = getScriptSource(scriptFactoryBeanName, scriptFactory.getScriptSourceLocator());
    boolean isFactoryBean = false;
    try {
        Class<?> scriptedObjectType = scriptFactory.getScriptedObjectType(scriptSource);
        // Returned type may be null if the factory is unable to determine the type.
        if (scriptedObjectType != null) {
            isFactoryBean = FactoryBean.class.isAssignableFrom(scriptedObjectType);
        }
    } catch (Exception ex) {
        throw new BeanCreationException(beanName,
                "Could not determine scripted object type for " + scriptFactory, ex);
    }

    long refreshCheckDelay = resolveRefreshCheckDelay(bd);
    String language = (String) bd.getAttribute(LANGUAGE_ATTRIBUTE);//add by tylerchen
    if (refreshCheckDelay >= 0 || "groovy".equals(language)) {
        Class<?>[] interfaces = scriptFactory.getScriptInterfaces();
        RefreshableScriptTargetSource ts = new RefreshableScriptTargetSource(this.scriptBeanFactory,
                scriptedObjectBeanName, scriptFactory, scriptSource, isFactoryBean);
        boolean proxyTargetClass = resolveProxyTargetClass(bd);
        //String language = (String) bd.getAttribute(LANGUAGE_ATTRIBUTE);//remove by tylerchen
        if (proxyTargetClass && (language == null || !language.equals("groovy"))) {
            throw new BeanDefinitionValidationException(
                    "Cannot use proxyTargetClass=true with script beans where language is not 'groovy': '"
                            + language + "'");
        }
        //ts.setRefreshCheckDelay(refreshCheckDelay);//remove by tylerchen
        ts.setRefreshCheckDelay(-1);//add by tylerchen
        return createRefreshableProxy(ts, interfaces, proxyTargetClass);
    }

    if (isFactoryBean) {
        scriptedObjectBeanName = BeanFactory.FACTORY_BEAN_PREFIX + scriptedObjectBeanName;
    }
    return this.scriptBeanFactory.getBean(scriptedObjectBeanName);
}

From source file:org.bigtester.ate.model.page.elementfind.ElementFinderIndexOfSameProcessor.java

/**
 * {@inheritDoc}/* ww w  .  j  a va2s  .co  m*/
 */
@Override
public void postProcessBeanFactory(@Nullable ConfigurableListableBeanFactory beanFactory)
        throws BeansException {
    if (beanFactory == null)
        throw new IllegalStateException("Spring Container initialization error");
    // String[] homePageNames =
    // beanFactory.getBeanNamesForType(IStepInputData.class, true, false);
    String[] elementFinders = beanFactory.getBeanNamesForType(AbstractElementFind.class, true, false);
    for (int index = 0; index < elementFinders.length; index++) {
        BeanDefinition elementFinderDef = beanFactory.getBeanDefinition(elementFinders[index]);

        Object indexOfSameElementsRef = null; // NOPMD
        if (elementFinderDef.getPropertyValues()
                .getPropertyValue(XsdElementConstants.ATTR_GENERICELEMENTFIND_INDEXOFSAMEELEMENTS) != null) {
            indexOfSameElementsRef = elementFinderDef.getPropertyValues()
                    .getPropertyValue(XsdElementConstants.ATTR_GENERICELEMENTFIND_INDEXOFSAMEELEMENTS)
                    .getValue();
        }
        if (indexOfSameElementsRef == null)
            continue;
        String dataValue = ((RuntimeBeanReference) indexOfSameElementsRef).getBeanName();

        if (null == dataValue) {
            throw new IllegalStateException("Spring Container sendKeyActionValue initialization error");
        } else {
            try {
                beanFactory.getBeanDefinition(dataValue);
            } catch (NoSuchBeanDefinitionException NoBeanDef) {

                String idstr;
                int intDataValue;
                BeanDefinitionBuilder definitionBuilder;

                if (StringUtils.isEmpty(dataValue)) {// assign 0
                    intDataValue = 0;
                } else {
                    try {
                        intDataValue = Integer.parseInt(dataValue);//NOPMD
                    } catch (NumberFormatException nonNumeric) {
                        intDataValue = 0;
                    }
                }
                definitionBuilder = BeanDefinitionBuilder
                        .genericBeanDefinition(AutoIncrementalDataHolder.class);

                definitionBuilder.addConstructorArgValue(intDataValue);
                definitionBuilder.addConstructorArgValue(1);

                idstr = (String) elementFinderDef.getAttribute("id") + "_elementfinderIndexOfSameElements_ID";

                getBdReg().registerBeanDefinition(idstr, definitionBuilder.getBeanDefinition());

                elementFinderDef.getPropertyValues()
                        .removePropertyValue(XsdElementConstants.ATTR_GENERICELEMENTFIND_INDEXOFSAMEELEMENTS);
                elementFinderDef.getPropertyValues().addPropertyValue(
                        XsdElementConstants.ATTR_GENERICELEMENTFIND_INDEXOFSAMEELEMENTS,
                        new RuntimeBeanReference(idstr));

            }
        }
    }

}

From source file:org.eclipse.gemini.blueprint.blueprint.container.support.internal.config.CycleOrderingProcessor.java

private void addSyntheticDependsOn(BeanDefinition definition, String beanName) {
    if (StringUtils.hasText(beanName)) {
        String[] dependsOn = definition.getDependsOn();
        if (dependsOn != null && dependsOn.length > 0) {
            for (String dependOn : dependsOn) {
                if (beanName.equals(dependOn)) {
                    return;
                }/*from  w  ww  . j a va  2s.  c  o m*/
            }
        }

        // add depends on
        dependsOn = (String[]) ObjectUtils.addObjectToArray(dependsOn, beanName);
        definition.setDependsOn(dependsOn);
        Collection<String> markers = (Collection<String>) definition.getAttribute(SYNTHETIC_DEPENDS_ON);
        if (markers == null) {
            markers = new ArrayList<String>(2);
            definition.setAttribute(SYNTHETIC_DEPENDS_ON, markers);
        }
        markers.add(beanName);
    }
}

From source file:org.metaeffekt.dcc.commons.spring.xml.CapabilityInheritanceBeanDefinitionPostProcessor.java

@SuppressWarnings("unchecked")
private List<AttributeKey> processInheritance(BeanDefinitionRegistry registry, String definitionName) {
    BeanDefinition definition = registry.getBeanDefinition(definitionName);
    List<AttributeKey> inheritedKeys = null;
    if (definition != null) {
        // explicitly grab a reference to the List from the BeanDefinition
        inheritedKeys = (List<AttributeKey>) definition.getPropertyValues()
                .getPropertyValue(DCCConfigurationBeanDefinitionParser.PROPERTY_CAPABILITY_DEF_ATTRIBUTE_KEYS)
                .getValue();//from w  w  w . java 2s.c  om

        List<CapabilityDefinitionReference> ancestorsAttributeReference = (List<CapabilityDefinitionReference>) definition
                .getAttribute(DCCConfigurationBeanDefinitionParser.PROPERTY_CAPABILITY_DEF_ANCESTORS);

        if (!ancestorsAttributeReference.isEmpty()) {
            List<CapabilityDefinitionReference> ancestors = new ArrayList<>();
            ancestors.addAll(ancestorsAttributeReference);
            for (CapabilityDefinitionReference ancestor : ancestors) {
                // recursive call to get additional attribute keys
                String uniqueDefinitionRefId = createUniqueAncestorReferenceId(definitionName, ancestor);
                if (!definitionRefsInProgress.contains(uniqueDefinitionRefId)) {
                    definitionRefsInProgress.add(uniqueDefinitionRefId);
                    List<AttributeKey> ancestorsAttributeKeys = processInheritance(registry,
                            DCCConfigurationBeanDefinitionParser
                                    .createCapabilityDefBeanName(ancestor.getReferencedCapabilityDefId()));
                    for (AttributeKey ancestorAttributeKey : ancestorsAttributeKeys) {
                        AttributeKey localAttributeKey = prefixAttributeKeyIfAppropriate(ancestorAttributeKey,
                                ancestor.getPrefix());
                        if (inheritedKeys.contains(localAttributeKey)) {
                            throw new BeanDefinitionValidationException(
                                    "Duplicate attribute key [" + localAttributeKey
                                            + "] detected while processing CapabilityDefinitionReference ["
                                            + uniqueDefinitionRefId + "].");
                        }
                        // add to attributeKeys - List is a reference to BeanDefinition
                        inheritedKeys.add(localAttributeKey);
                    }
                    definitionRefsInProgress.remove(uniqueDefinitionRefId);
                } else {
                    throw new BeanDefinitionValidationException("Cyclic inheritance definition detected. "
                            + "DefinitionRefsInProgress (BeanDefinitionName:ReferencePrefix#ReferenceCapabilityId) "
                            + "[" + definitionRefsInProgress + "]");
                }
                ancestorsAttributeReference.remove(ancestor);
            }
        }
    }

    return (inheritedKeys != null) ? inheritedKeys : Collections.<AttributeKey>emptyList();
}

From source file:org.mule.config.spring.MuleHierarchicalBeanDefinitionParserDelegate.java

public static boolean testFlag(BeanDefinition bean, String flag) {
    return null != bean && bean.hasAttribute(flag) && bean.getAttribute(flag) instanceof Boolean
            && ((Boolean) bean.getAttribute(flag)).booleanValue();
}