Example usage for org.springframework.beans.factory.support ManagedArray ManagedArray

List of usage examples for org.springframework.beans.factory.support ManagedArray ManagedArray

Introduction

In this page you can find the example usage for org.springframework.beans.factory.support ManagedArray ManagedArray.

Prototype

public ManagedArray(String elementTypeName, int size) 

Source Link

Document

Create a new managed array placeholder.

Usage

From source file:net.phoenix.thrift.xml.ProcessorBeanDefinitionParser.java

/**
 * TMultiplexedProcessor.registerProcessor(String serviceName, TProcessor
 * processor) ?processor ?MethodInvokingFactoryBean?
 *
 * @param serviceName/*from   w  ww.j  a v a2 s.c  o  m*/
 * @param processBeanName
 */
private String registerProcessor(ParserContext parserContext, String serviceName, String processBeanName) {
    BeanDefinitionBuilder builder = BeanDefinitionBuilder.rootBeanDefinition(MethodInvokingBean.class);
    builder.addPropertyReference("targetObject", this.beanName);
    builder.addPropertyValue("targetMethod", "registerProcessor");
    ManagedArray arguments = new ManagedArray(Object.class.getName(), 2);
    arguments.add(serviceName);
    arguments.add(new RuntimeBeanReference(processBeanName));
    builder.addPropertyValue("arguments", arguments);
    String registerProcessorBeanName = processBeanName + "-registerProcessor";
    parserContext.getRegistry().registerBeanDefinition(registerProcessorBeanName, builder.getBeanDefinition());
    return registerProcessorBeanName;
}

From source file:org.brekka.stillingar.spring.config.ConfigurationServiceBeanDefinitionParser.java

/**
 * @param element//from w  w  w  . j  a va 2  s .c  o  m
 * @return
 */
protected void prepareNamespaces(Element element, ParserContext parserContext) {
    String id = element.getAttribute("id");
    this.namespacesId = id + "-Namespaces";
    List<Element> namespaceElements = selectChildElements(element, "namespace");
    ManagedArray array = new ManagedArray(String.class.getName(), namespaceElements.size() * 2);
    for (Element namespaceElement : namespaceElements) {
        array.add(namespaceElement.getAttribute("prefix"));
        array.add(namespaceElement.getAttribute("uri"));
    }
    BeanDefinitionBuilder builder = BeanDefinitionBuilder.genericBeanDefinition(DefaultNamespaceContext.class);
    builder.addConstructorArgValue(array);
    parserContext
            .registerBeanComponent(new BeanComponentDefinition(builder.getBeanDefinition(), this.namespacesId));
}

From source file:org.eclipse.gemini.blueprint.blueprint.config.internal.BlueprintParser.java

/**
 * Parse an array element./*from   w  ww  . ja va  2 s. co m*/
 */
public Object parseArrayElement(Element arrayEle, BeanDefinition bd) {
    String elementType = arrayEle.getAttribute(BeanDefinitionParserDelegate.VALUE_TYPE_ATTRIBUTE);
    NodeList nl = arrayEle.getChildNodes();
    ManagedArray target = new ManagedArray(elementType, nl.getLength());
    target.setSource(extractSource(arrayEle));
    target.setElementTypeName(elementType);
    target.setMergeEnabled(parseMergeAttribute(arrayEle));
    parseCollectionElements(nl, target, bd, elementType);
    return target;
}

From source file:org.kuali.rice.krad.datadictionary.uif.UifBeanFactoryPostProcessor.java

@SuppressWarnings("unchecked")
protected void visitArray(String propertyName, Map<String, String> parentExpressionGraph,
        Map<String, String> expressionGraph, Object array, ConfigurableListableBeanFactory beanFactory,
        Set<String> processedBeanNames) {
    Object newArray = null;/*from w  w  w.  j  a va 2 s . c  o m*/
    Object[] arrayVal = null;

    boolean isMergeEnabled = false;
    if (array instanceof ManagedArray) {
        isMergeEnabled = ((ManagedArray) array).isMergeEnabled();
        arrayVal = (Object[]) ((ManagedArray) array).getSource();

        newArray = new ManagedArray(((ManagedArray) array).getElementTypeName(), arrayVal.length);
        ((ManagedArray) newArray).setMergeEnabled(isMergeEnabled);
    } else {
        arrayVal = (Object[]) array;
        newArray = new Object[arrayVal.length];
    }

    for (int i = 0; i < arrayVal.length; i++) {
        Object elem = arrayVal[i];
        String elemPropertyName = propertyName + "[" + i + "]";

        if (hasExpression(elem)) {
            String strValue = getStringValue(elem);
            expressionGraph.put(elemPropertyName, strValue);
            arrayVal[i] = null;
        } else {
            // process set value bean definition as a top level bean
            if ((elem instanceof BeanDefinition) || (elem instanceof BeanDefinitionHolder)) {
                String beanName = null;
                BeanDefinition beanDefinition;
                if (elem instanceof BeanDefinition) {
                    beanDefinition = (BeanDefinition) elem;
                } else {
                    beanDefinition = ((BeanDefinitionHolder) elem).getBeanDefinition();
                    beanName = ((BeanDefinitionHolder) elem).getBeanName();
                }

                processBeanDefinition(beanName, beanDefinition, beanFactory, processedBeanNames);
            }

            arrayVal[i] = elem;
        }

        if (isMergeEnabled && parentExpressionGraph.containsKey(elemPropertyName)) {
            parentExpressionGraph.remove(elemPropertyName);
        }
    }

    // determine if we need to clear any parent expressions for this list
    if (!isMergeEnabled) {
        // clear any expressions that match the property name minus index
        Map<String, String> adjustedParentExpressionGraph = new HashMap<String, String>();
        for (Map.Entry<String, String> parentExpression : parentExpressionGraph.entrySet()) {
            if (!parentExpression.getKey().startsWith(propertyName + "[")) {
                adjustedParentExpressionGraph.put(parentExpression.getKey(), parentExpression.getValue());
            }
        }

        parentExpressionGraph.clear();
        parentExpressionGraph.putAll(adjustedParentExpressionGraph);
    }

    if (array instanceof ManagedArray) {
        ((ManagedArray) array).setSource(newArray);
    } else {
        array = newArray;
    }
}

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

/**
 * Parse an array element.//from  w  w  w.  j  av  a2s. c o  m
 */
public Object parseArrayElement(Element arrayEle, @Nullable BeanDefinition bd) {
    String elementType = arrayEle.getAttribute(VALUE_TYPE_ATTRIBUTE);
    NodeList nl = arrayEle.getChildNodes();
    ManagedArray target = new ManagedArray(elementType, nl.getLength());
    target.setSource(extractSource(arrayEle));
    target.setElementTypeName(elementType);
    target.setMergeEnabled(parseMergeAttribute(arrayEle));
    parseCollectionElements(nl, target, bd, elementType);
    return target;
}

From source file:org.springframework.data.gemfire.config.AbstractRegionParser.java

protected void parseCollectionOfCustomSubElements(Element element, ParserContext parserContext,
        BeanDefinitionBuilder builder, String className, String subElementName, String propertyName) {
    List<Element> subElements = DomUtils.getChildElementsByTagName(element, subElementName,
            subElementName + "-ref");

    if (!CollectionUtils.isEmpty(subElements)) {
        ManagedArray array = new ManagedArray(className, subElements.size());

        for (Element subElement : subElements) {
            array.add(ParsingUtils.parseRefOrNestedCustomElement(parserContext, subElement, builder));
        }// w w  w  .ja v  a 2s  .co  m

        builder.addPropertyValue(propertyName, array);
    }
}

From source file:org.springframework.data.gemfire.config.xml.AbstractRegionParser.java

protected void parseCollectionOfCustomSubElements(Element element, ParserContext parserContext,
        BeanDefinitionBuilder builder, String className, String subElementName, String propertyName) {

    List<Element> subElements = DomUtils.getChildElementsByTagName(element, subElementName,
            subElementName + "-ref");

    if (!CollectionUtils.isEmpty(subElements)) {

        ManagedArray array = new ManagedArray(className, subElements.size());

        for (Element subElement : subElements) {
            array.add(ParsingUtils.parseRefOrNestedCustomElement(subElement, parserContext, builder));
        }//from  ww w.  j  a va  2 s.  co  m

        builder.addPropertyValue(propertyName, array);
    }
}