List of usage examples for org.springframework.beans.factory.config TypedStringValue TypedStringValue
public TypedStringValue(@Nullable String value, String targetTypeName)
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; }