Example usage for org.springframework.beans.factory.config TypedStringValue TypedStringValue

List of usage examples for org.springframework.beans.factory.config TypedStringValue TypedStringValue

Introduction

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

Prototype

public TypedStringValue(@Nullable String value, String targetTypeName) 

Source Link

Document

Create a new TypedStringValue for the given String value and target type.

Usage

From source file:org.jolokia.jvmagent.spring.config.ConfigBeanDefinitionParser.java

private Map<Object, Object> createConfigMap(NamedNodeMap attributes) {
    ManagedMap<Object, Object> map = new ManagedMap<Object, Object>(attributes.getLength());
    map.setKeyTypeName("java.lang.String");
    map.setValueTypeName("java.lang.String");

    for (int i = 0; i < attributes.getLength(); i++) {
        Attr attr = (Attr) attributes.item(i);
        String name = attr.getName();
        if (skipMap.contains(name)) {
            continue;
        }//from  w  w w.j ava 2  s .c o  m
        Object key = new TypedStringValue(name, String.class);
        Object value = new TypedStringValue(attr.getValue(), String.class);
        map.put(key, value);
    }
    return map;
}

From source file:org.jolokia.jvmagent.spring.config.SpringConfigTest.java

private void verifyConfig(MutablePropertyValues pCProps) {
    Map vals = (Map) pCProps.getPropertyValue("config").getValue();
    assertEquals(vals.size(), 3);//from w  ww.  java 2 s.co m
    for (String k : new String[] { "host", "port", "autoStart" }) {
        assertTrue(vals.containsKey(new TypedStringValue(k, String.class)));
    }
}

From source file:de.acosix.alfresco.mtsupport.repo.subsystems.TenantAwareSubsystemPlaceholderConfigurer.java

/**
 * {@inheritDoc}/* w w w . java  2s . c o  m*/
 */
@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.solmix.runtime.support.spring.AbstractRootBeanDefinitionParser.java

protected void parseAttributes(Element element, ParserContext parserContext, String id,
        RootBeanDefinition beanDefinition) {
    Set<String> props = new HashSet<String>();
    ManagedMap<String, Object> parameters = null;
    for (Method setter : this.type.getMethods()) {
        String name = setter.getName();
        if (name.length() > 3 && name.startsWith("set") && Modifier.isPublic(setter.getModifiers())
                && setter.getParameterTypes().length == 1) {
            Class<?> type = setter.getParameterTypes()[0];
            String property = StringUtils
                    .camelToSplitName(name.substring(3, 4).toLowerCase() + name.substring(4), "-");
            props.add(property);//from w ww.j  a v a  2s .  c  om
            Method getter = null;
            try {
                getter = this.type.getMethod("get" + name.substring(3), new Class<?>[0]);
            } catch (NoSuchMethodException e) {
                try {
                    getter = this.type.getMethod("is" + name.substring(3), new Class<?>[0]);
                } catch (NoSuchMethodException e2) {
                }
            }
            if (getter == null || !Modifier.isPublic(getter.getModifiers())
                    || !type.equals(getter.getReturnType())) {
                continue;
            }
            if ("properties".equals(property)) {
                parameters = parseProperties(element.getChildNodes(), beanDefinition);
            } else if ("arguments".equals(property)) {
                parseArguments(id, element.getChildNodes(), beanDefinition, parserContext);
            } else {
                String value = element.getAttribute(property);
                if (value != null && value.trim().length() > 0) {
                    value = value.trim();
                    parserValue(beanDefinition, property, type, value, parserContext);
                }
            }
        }
    }
    NamedNodeMap attributes = element.getAttributes();
    int len = attributes.getLength();
    for (int i = 0; i < len; i++) {
        Node node = attributes.item(i);
        String name = node.getLocalName();
        if (!props.contains(name)) {
            if (parameters == null) {
                parameters = new ManagedMap<String, Object>();
            }
            String value = node.getNodeValue();
            parameters.put(name, new TypedStringValue(value, String.class));
        }
    }
    if (parameters != null) {
        beanDefinition.getPropertyValues().addPropertyValue("properties", parameters);
    }
}

From source file:org.solmix.runtime.support.spring.AbstractRootBeanDefinitionParser.java

/**
 * @param childNodes/* w  w  w  . jav  a 2s.c  o  m*/
 * @param beanDefinition
 * @return
 */
protected ManagedMap<String, Object> parseProperties(NodeList nodeList, RootBeanDefinition beanDefinition) {
    if (nodeList != null && nodeList.getLength() > 0) {
        ManagedMap<String, Object> parameters = null;
        for (int i = 0; i < nodeList.getLength(); i++) {
            Node node = nodeList.item(i);
            if (node instanceof Element) {
                if ("parameter".equals(node.getNodeName()) || "parameter".equals(node.getLocalName())) {
                    if (parameters == null) {
                        parameters = new ManagedMap<String, Object>();
                    }
                    String key = ((Element) node).getAttribute("key");
                    String value = ((Element) node).getAttribute("value");
                    parameters.put(key, new TypedStringValue(value, String.class));
                }
            }
        }
        return parameters;
    }
    return null;
}

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

/**
 * Parse a value, ref or collection sub-element of a property or
 * constructor-arg element.// w  w w.j  a v  a  2 s.  co m
 * @param ele subelement of property element; we don't know which yet
 */
protected Object parsePropertySubElement(Element ele, String beanName) throws BeanDefinitionStoreException {
    if (ele.getTagName().equals(BEAN_ELEMENT)) {
        try {
            return parseBeanDefinitionElement(ele, true);
        } catch (BeanDefinitionStoreException ex) {
            throw new BeanDefinitionStoreException(getResource(), beanName,
                    "Could not parse inner bean definition", ex);
        }
    } else if (ele.getTagName().equals(REF_ELEMENT)) {
        // A generic reference to any name of any bean.
        String refName = ele.getAttribute(BEAN_REF_ATTRIBUTE);
        boolean toParent = false;
        if (!StringUtils.hasLength(refName)) {
            // A reference to the id of another bean in the same XML file.
            refName = ele.getAttribute(LOCAL_REF_ATTRIBUTE);
            if (!StringUtils.hasLength(refName)) {
                // A reference to the id of another bean in a parent context.
                refName = ele.getAttribute(PARENT_REF_ATTRIBUTE);
                toParent = true;
                if (!StringUtils.hasLength(refName)) {
                    throw new BeanDefinitionStoreException(getResource(), beanName,
                            "'bean', 'local' or 'parent' is required for <ref> element");
                }
            }
        }
        if (!StringUtils.hasText(refName)) {
            throw new BeanDefinitionStoreException(getResource(), beanName,
                    "<ref> element contains empty target attribute");
        }
        return new RuntimeBeanReference(refName, toParent);
    } else if (ele.getTagName().equals(IDREF_ELEMENT)) {
        // A generic reference to any name of any bean.
        String beanRef = ele.getAttribute(BEAN_REF_ATTRIBUTE);
        if (!StringUtils.hasLength(beanRef)) {
            // A reference to the id of another bean in the same XML file.
            beanRef = ele.getAttribute(LOCAL_REF_ATTRIBUTE);
            if (!StringUtils.hasLength(beanRef)) {
                throw new BeanDefinitionStoreException(getResource(), beanName,
                        "Either 'bean' or 'local' is required for <idref> element");
            }
        }
        return beanRef;
    } else if (ele.getTagName().equals(VALUE_ELEMENT)) {
        // It's a literal value.
        String value = DomUtils.getTextValue(ele);
        if (ele.hasAttribute(TYPE_ATTRIBUTE)) {
            String typeClassName = ele.getAttribute(TYPE_ATTRIBUTE);
            try {
                Class typeClass = ClassUtils.forName(typeClassName,
                        this.beanDefinitionReader.getBeanClassLoader());
                return new TypedStringValue(value, typeClass);
            } catch (ClassNotFoundException ex) {
                throw new BeanDefinitionStoreException(getResource(), beanName,
                        "Type class [" + typeClassName + "] not found for <value> element", ex);
            }
        }
        return value;
    } else if (ele.getTagName().equals(NULL_ELEMENT)) {
        // It's a distinguished null value.
        return null;
    } else if (ele.getTagName().equals(LIST_ELEMENT)) {
        return parseListElement(ele, beanName);
    } else if (ele.getTagName().equals(SET_ELEMENT)) {
        return parseSetElement(ele, beanName);
    } else if (ele.getTagName().equals(MAP_ELEMENT)) {
        return parseMapElement(ele, beanName);
    } else if (ele.getTagName().equals(PROPS_ELEMENT)) {
        return parsePropsElement(ele, beanName);
    }
    throw new BeanDefinitionStoreException(getResource(), beanName,
            "Unknown property sub-element: <" + ele.getTagName() + ">");
}

From source file:org.springframework.integration.jdbc.config.StoredProcParserUtils.java

/**
 * @param storedProcComponent//from   w  ww . ja  v  a2 s .co m
 * @param parserContext
 */
public static ManagedList<BeanDefinition> getSqlParameterDefinitionBeanDefinitions(Element storedProcComponent,
        ParserContext parserContext) {
    List<Element> sqlParameterDefinitionChildElements = DomUtils.getChildElementsByTagName(storedProcComponent,
            "sql-parameter-definition");
    ManagedList<BeanDefinition> sqlParameterList = new ManagedList<BeanDefinition>();

    for (Element childElement : sqlParameterDefinitionChildElements) {

        String name = childElement.getAttribute("name");
        String sqlType = childElement.getAttribute("type");
        String direction = childElement.getAttribute("direction");
        String scale = childElement.getAttribute("scale");
        String typeName = childElement.getAttribute("type-name");
        String returnType = childElement.getAttribute("return-type");

        if (StringUtils.hasText(typeName) && StringUtils.hasText(scale)) {
            parserContext.getReaderContext().error("'type-name' and 'scale' attributes are mutually exclusive "
                    + "for 'sql-parameter-definition' element.", storedProcComponent);
        }

        if (StringUtils.hasText(returnType) && StringUtils.hasText(scale)) {
            parserContext.getReaderContext().error("'returnType' and 'scale' attributes are mutually exclusive "
                    + "for 'sql-parameter-definition' element.", storedProcComponent);
        }

        final BeanDefinitionBuilder parameterBuilder;

        if ("OUT".equalsIgnoreCase(direction)) {
            parameterBuilder = BeanDefinitionBuilder.genericBeanDefinition(SqlOutParameter.class);
        } else if ("INOUT".equalsIgnoreCase(direction)) {
            parameterBuilder = BeanDefinitionBuilder.genericBeanDefinition(SqlInOutParameter.class);
        } else {
            parameterBuilder = BeanDefinitionBuilder.genericBeanDefinition(SqlParameter.class);
            if (StringUtils.hasText(returnType)) {
                parserContext.getReaderContext().error("'return-type' attribute can't be provided "
                        + "for IN 'sql-parameter-definition' element.", storedProcComponent);
            }
        }

        if (StringUtils.hasText(name)) {
            parameterBuilder.addConstructorArgValue(name);
        } else {
            parserContext.getReaderContext().error(
                    "The 'name' attribute must be set for the Sql parameter element.", storedProcComponent);
        }

        if (StringUtils.hasText(sqlType)) {

            JdbcTypesEnum jdbcTypeEnum = JdbcTypesEnum.convertToJdbcTypesEnum(sqlType);

            if (jdbcTypeEnum != null) {
                parameterBuilder.addConstructorArgValue(jdbcTypeEnum.getCode());
            } else {
                parameterBuilder.addConstructorArgValue(sqlType);
            }

        } else {
            parameterBuilder.addConstructorArgValue(Types.VARCHAR);
        }

        if (StringUtils.hasText(typeName)) {
            parameterBuilder.addConstructorArgValue(typeName);
        } else if (StringUtils.hasText(scale)) {
            parameterBuilder.addConstructorArgValue(new TypedStringValue(scale, Integer.class));
        } else {
            parameterBuilder.addConstructorArgValue(null);
        }

        if (StringUtils.hasText(returnType)) {
            parameterBuilder.addConstructorArgReference(returnType);
        }

        sqlParameterList.add(parameterBuilder.getBeanDefinition());
    }
    return sqlParameterList;
}

From source file:org.springframework.integration.jdbc.config.StoredProcParserUtils.java

/**
 * @param storedProcComponent//www .ja  v a  2  s . c  o m
 * @param parserContext
 */
public static ManagedList<BeanDefinition> getProcedureParameterBeanDefinitions(Element storedProcComponent,
        ParserContext parserContext) {

    ManagedList<BeanDefinition> procedureParameterList = new ManagedList<BeanDefinition>();

    List<Element> parameterChildElements = DomUtils.getChildElementsByTagName(storedProcComponent, "parameter");

    for (Element childElement : parameterChildElements) {

        BeanDefinitionBuilder parameterBuilder = BeanDefinitionBuilder
                .genericBeanDefinition(ProcedureParameter.class);

        String name = childElement.getAttribute("name");
        String expression = childElement.getAttribute("expression");
        String value = childElement.getAttribute("value");
        String type = childElement.getAttribute("type");

        if (StringUtils.hasText(name)) {
            parameterBuilder.addPropertyValue("name", name);
        }

        if (StringUtils.hasText(expression)) {
            parameterBuilder.addPropertyValue("expression", expression);
        }

        if (StringUtils.hasText(value)) {

            if (!StringUtils.hasText(type)) {

                if (LOGGER.isInfoEnabled()) {
                    LOGGER.info(String.format("Type attribute not set for Store "
                            + "Procedure parameter '%s'. Defaulting to " + "'java.lang.String'.", value));
                }

                parameterBuilder.addPropertyValue("value", new TypedStringValue(value, String.class));

            } else {
                parameterBuilder.addPropertyValue("value", new TypedStringValue(value, type));
            }

        }

        procedureParameterList.add(parameterBuilder.getBeanDefinition());
    }

    return procedureParameterList;

}

From source file:org.springframework.integration.jpa.config.xml.JpaParserUtils.java

/**
 * Create a {@link ManagedList} of {@link BeanDefinition}s containing parsed
 * JPA Parameters.//from w  w  w . j av a2  s .  c om
 *
 * @param jpaComponent Must not be null
 * @param parserContext Must not be null
 *
 * @return {@link ManagedList} of {@link BeanDefinition}s
 */
public static ManagedList<BeanDefinition> getJpaParameterBeanDefinitions(Element jpaComponent,
        ParserContext parserContext) {

    Assert.notNull(jpaComponent, "The provided element must not be null.");
    Assert.notNull(parserContext, "The provided parserContext must not be null.");

    final ManagedList<BeanDefinition> parameterList = new ManagedList<BeanDefinition>();

    final List<Element> parameterChildElements = DomUtils.getChildElementsByTagName(jpaComponent, "parameter");

    for (Element childElement : parameterChildElements) {

        final BeanDefinitionBuilder parameterBuilder = BeanDefinitionBuilder
                .genericBeanDefinition(JpaParameter.class);

        String name = childElement.getAttribute("name");
        String expression = childElement.getAttribute("expression");
        String value = childElement.getAttribute("value");
        String type = childElement.getAttribute("type");

        if (StringUtils.hasText(name)) {
            parameterBuilder.addPropertyValue("name", name);
        }

        if (StringUtils.hasText(expression)) {
            parameterBuilder.addPropertyValue("expression", expression);
        }

        if (StringUtils.hasText(value)) {

            if (!StringUtils.hasText(type)) {

                if (logger.isInfoEnabled()) {
                    logger.info(String.format(
                            "Type attribute not set for parameter '%s'. Defaulting to " + "'java.lang.String'.",
                            value));
                }

                parameterBuilder.addPropertyValue("value", new TypedStringValue(value, String.class));

            } else {
                parameterBuilder.addPropertyValue("value", new TypedStringValue(value, type));
            }

        }

        parameterList.add(parameterBuilder.getBeanDefinition());
    }

    return parameterList;

}