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

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

Introduction

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

Prototype

ConstructorArgumentValues getConstructorArgumentValues();

Source Link

Document

Return the constructor argument values for this bean.

Usage

From source file:org.bigtester.ate.xmlschema.HomepageBeanDefinitionParser.java

/**
 * {@inheritDoc}/*from w  w  w. j  a  va  2s . c om*/
 */
@Override
protected AbstractBeanDefinition parseInternal(@Nullable Element element,
        @Nullable ParserContext parserContext) {
    // Here we parse the Spring elements such as < property>
    if (parserContext == null || element == null)
        throw GlobalUtils.createNotInitializedException("element and parserContext");
    // Here we parse the Spring elements such as < property>
    BeanDefinitionHolder holder = parserContext.getDelegate().parseBeanDefinitionElement(element);
    BeanDefinition bDef = holder.getBeanDefinition();
    bDef.setBeanClassName(Homepage.class.getName());

    String homeUrl = element.getAttribute(XsdElementConstants.ATTR_HOMEPAGE_HOMEURL);
    bDef.getConstructorArgumentValues().addGenericArgumentValue(homeUrl);

    String dataFile = element.getAttribute(XsdElementConstants.ATTR_BASEPAGEOBJECT_DATAFILE);
    if (StringUtils.hasText(dataFile))
        bDef.getPropertyValues().addPropertyValue(XsdElementConstants.ATTR_BASEPAGEOBJECT_DATAFILE, dataFile);

    bDef.setParentName(XsdElementConstants.ELEMENT_ID_MYBASEPAGEOBJECT);
    String idstring = element.getAttribute("id");

    parserContext.getRegistry().registerBeanDefinition(idstring, bDef);
    return (AbstractBeanDefinition) bDef;

}

From source file:org.bigtester.ate.xmlschema.BaseElementFinderBeanDefinitionParser.java

/**
 * {@inheritDoc}/*ww w  .java 2 s. c om*/
 */
@Override
protected @Nullable AbstractBeanDefinition parseInternal(@Nullable Element element,
        @Nullable ParserContext parserContext) {
    if (parserContext == null || element == null)
        throw GlobalUtils.createNotInitializedException("element and parserContext");
    BeanDefinitionHolder holder = parserContext.getDelegate().parseBeanDefinitionElement(element);
    BeanDefinition bDef = holder.getBeanDefinition();

    String findbyValue = element.getAttribute(XsdElementConstants.ATTR_GENERICELEMENTFIND_FINDBYVALUE);
    if (StringUtils.hasText(findbyValue))
        bDef.getConstructorArgumentValues().addGenericArgumentValue(findbyValue);

    String strIndex = element.getAttribute(XsdElementConstants.ATTR_GENERICELEMENTFIND_INDEXOFSAMEELEMENTS);
    if (StringUtils.hasText(strIndex)) {
        bDef.getPropertyValues().addPropertyValue(
                XsdElementConstants.ATTR_GENERICELEMENTFIND_INDEXOFSAMEELEMENTS,
                new RuntimeBeanReference(strIndex));
    }
    bDef.setAttribute("id", element.getAttribute("id"));
    return (AbstractBeanDefinition) bDef;
}

From source file:org.brekka.stillingar.spring.pc.ConstructorArgDefChangeListener.java

@Override
protected void onChange(String newValue) {
    ConfigurableListableBeanFactory beanFactory = beanFactoryRef.get();
    if (beanFactory == null) {
        return;/*  w  w w. j  a  v  a 2 s  .c o m*/
    }

    BeanDefinition beanDef = beanFactory.getMergedBeanDefinition(beanName);
    ConstructorArgumentValues mutableConstructorValues = beanDef.getConstructorArgumentValues();
    ValueHolder valueHolder = null;
    List<ValueHolder> genericArgumentValues = mutableConstructorValues.getGenericArgumentValues();
    if (constructorArgIndex != null) {
        valueHolder = mutableConstructorValues.getIndexedArgumentValues().get(constructorArgIndex);
        if (valueHolder == null) {
            throw new IllegalStateException(
                    String.format("Failed to find constructor arg at index %d", constructorArgIndex));
        }
    } else if (genericArgumentValues.size() == 1) {
        valueHolder = genericArgumentValues.get(0);
    } else {
        for (ValueHolder vh : genericArgumentValues) {
            if (vh.getType().equals(constructorArgType)) {
                valueHolder = vh;
            }
        }
        if (valueHolder == null) {
            throw new IllegalStateException(
                    String.format("Failed to find constructor arg with type '%s'", constructorArgType));
        }
    }
    if (!ObjectUtils.nullSafeEquals(newValue, valueHolder.getValue())) {
        valueHolder.setValue(newValue);
        try {
            /*
             * Spring implements caching of constructor values, which can be reset by clearing the package-private
             * field 'resolvedConstructorOrFactoryMethod' on RootBeanDefinition. Naturally this will fail if a
             * security manager is present but there doesn't seem to be any other way to do it. Make sure to warn
             * about this in the documentation!
             */
            Field field = beanDef.getClass().getDeclaredField("resolvedConstructorOrFactoryMethod");
            field.setAccessible(true);
            field.set(beanDef, null);
        } catch (Exception e) {
            throw new ConfigurationException(String.format(
                    "Unable to update value for constructor argument '%s'. "
                            + "Failed to reset the cached constructor state for bean '%s'",
                    (constructorArgIndex != null ? constructorArgIndex.toString() : constructorArgType),
                    beanName), e);
        }
    }
}

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

/**
 * {@inheritDoc}//w ww  . j  a  va  2  s .  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[] 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:org.bigtester.ate.xmlschema.BasePageModelBeanDefinitionParser.java

/**
 * {@inheritDoc}//from  w w w  . j av  a2s  .  co m
 */
@Override
protected AbstractBeanDefinition parseInternal(@Nullable Element element,
        @Nullable ParserContext parserContext) {
    // Here we parse the Spring elements such as < property>
    if (parserContext == null || element == null)
        throw GlobalUtils.createNotInitializedException("element and parserContext");
    BeanDefinitionHolder holder = parserContext.getDelegate().parseBeanDefinitionElement(element);
    BeanDefinition bDef = holder.getBeanDefinition();
    bDef.setBeanClassName(PageModelBase.class.getName());
    String myWd = element.getAttribute(XsdElementConstants.ATTR_BASEPAGEMODEL_MYWD);
    if (StringUtils.hasText(myWd)) {
        bDef.getConstructorArgumentValues().addGenericArgumentValue(new RuntimeBeanReference(myWd));
    }
    // String text = element.getAttribute("text");
    // bd.getPropertyValues().addPropertyValue("text", text);
    parserContext.getRegistry().registerBeanDefinition(element.getAttribute("id"), bDef);
    return (AbstractBeanDefinition) bDef;

}

From source file:com.apporiented.spring.override.BeanOverrideProcessor.java

private void overwriteBeanDefinition(BeanDefinition target, BeanDefinition source) {
    log.debug("Replacing bean [" + ref + "] with a [" + source.getBeanClassName() + "]");

    target.setBeanClassName(source.getBeanClassName());
    ConstructorArgumentValues cas = target.getConstructorArgumentValues();
    cas.clear();//from   ww w  .  j  av  a2s. c o m
    cas.addArgumentValues(source.getConstructorArgumentValues());

    MutablePropertyValues pvs = target.getPropertyValues();
    if (!merge) {
        pvs.getPropertyValueList().clear();
    }
    pvs.addPropertyValues(source.getPropertyValues());
}

From source file:org.bigtester.ate.xmlschema.BaseERValueBeanDefinitionParser.java

/**
 * {@inheritDoc}//from  ww  w. j av  a 2  s .  c om
 */
@Override
protected AbstractBeanDefinition parseInternal(@Nullable Element element,
        @Nullable ParserContext parserContext) {
    // Here we parse the Spring elements such as < property>
    if (parserContext == null || element == null)
        throw new IllegalStateException("Incorrect xsd xml parsing.");
    BeanDefinitionHolder holder = parserContext.getDelegate().parseBeanDefinitionElement(element);
    BeanDefinition bDef = holder.getBeanDefinition();
    bDef.setBeanClassName(BaseERValue.class.getName());
    String stepERDao = element.getAttribute(XsdElementConstants.ELEMENT_BASEERVALUE_STEPERDAO);
    if (StringUtils.hasText(stepERDao)) {
        bDef.getConstructorArgumentValues().addGenericArgumentValue(new RuntimeBeanReference(stepERDao));
    }

    //        String text = element.getAttribute("text");
    //        bd.getPropertyValues().addPropertyValue("text", text);
    parserContext.getRegistry().registerBeanDefinition(element.getAttribute("id"), bDef);
    return (AbstractBeanDefinition) bDef;

}

From source file:biz.c24.io.spring.config.C24MarshallerBeanDefinitionParserIntegrationTests.java

@Test
public void plainMessageConverterElementSetsUpAConverterAndDefaultMarshaller() {

    BeanDefinition definition = getDefinitionFromFile("converter.xml", "xml");

    assertThat(definition, is(notNullValue()));
    assertThat(definition.getBeanClassName(), is(C24HttpMessageConverter.class.getName()));

    ValueHolder constructorArgument = definition.getConstructorArgumentValues().getArgumentValue(0, null);
    assertThat(constructorArgument, is(notNullValue()));
    Object argument = constructorArgument.getValue();
    assertThat(argument, is(RuntimeBeanReference.class));
    assertThat(((RuntimeBeanReference) argument).getBeanName(),
            is(C24ModelBeanDefinitionParser.DEFAULT_BEAN_NAME));

    constructorArgument = definition.getConstructorArgumentValues().getArgumentValue(1, null);
    assertThat(constructorArgument, is(notNullValue()));
    assertThat(constructorArgument.getValue(), is(Collection.class));
}

From source file:org.bigtester.ate.xmlschema.BaseInputDataValueBeanDefinitionParser.java

/**
 * {@inheritDoc}// w  ww  . jav  a2  s. c o m
 */
@Override
protected AbstractBeanDefinition parseInternal(@Nullable Element element,
        @Nullable ParserContext parserContext) {
    // Here we parse the Spring elements such as < property>
    if (parserContext == null || element == null)
        throw new IllegalStateException("Incorrect xsd xml parsing.");
    BeanDefinitionHolder holder = parserContext.getDelegate().parseBeanDefinitionElement(element);
    BeanDefinition bDef = holder.getBeanDefinition();
    bDef.setBeanClassName(BaseInputDataValue.class.getName());
    String elementDataDao = element.getAttribute(XsdElementConstants.ATTR_BASEINPUTDATAVALUE_ELEMENTDATADAO);
    if (StringUtils.hasText(elementDataDao)) {
        bDef.getConstructorArgumentValues().addGenericArgumentValue(new RuntimeBeanReference(elementDataDao));
    }
    parserContext.getRegistry().registerBeanDefinition(element.getAttribute("id"), bDef);
    return (AbstractBeanDefinition) bDef;

}

From source file:org.bigtester.ate.xmlschema.InputDataValueParentBeanDefinitionParser.java

/**
 * {@inheritDoc}//  w w w .j  av a  2  s  .  c o  m
 */
@Override
protected AbstractBeanDefinition parseInternal(@Nullable Element element,
        @Nullable ParserContext parserContext) {
    // Here we parse the Spring elements such as < property>
    if (parserContext == null || element == null)
        throw new IllegalStateException("Incorrect xsd xml parsing.");
    BeanDefinitionHolder holder = parserContext.getDelegate().parseBeanDefinitionElement(element);
    BeanDefinition bDef = holder.getBeanDefinition();
    bDef.setBeanClassName(StepInputDataValue.class.getName());
    String elementDataDao = element.getAttribute(XsdElementConstants.ATTR_BASEINPUTDATAVALUE_ELEMENTDATADAO);
    if (StringUtils.hasText(elementDataDao)) {
        bDef.getConstructorArgumentValues().addGenericArgumentValue(new RuntimeBeanReference(elementDataDao));
    }
    parserContext.getRegistry().registerBeanDefinition(element.getAttribute("id"), bDef);
    return (AbstractBeanDefinition) bDef;

}