List of usage examples for org.springframework.util.xml DomUtils getChildElementsByTagName
public static List<Element> getChildElementsByTagName(Element ele, String childEleName)
From source file:org.springframework.beans.factory.xml.DefaultXmlBeanDefinitionParser.java
/** * Parse replaced-method sub-elements of the given bean element. *//*from www . ja v a 2s. c o m*/ protected void parseReplacedMethodSubElements(Element beanEle, String beanName, MethodOverrides overrides) throws BeanDefinitionStoreException { NodeList nl = beanEle.getChildNodes(); for (int i = 0; i < nl.getLength(); i++) { Node node = nl.item(i); if (node instanceof Element && REPLACED_METHOD_ELEMENT.equals(node.getNodeName())) { Element replacedMethodEle = (Element) node; String name = replacedMethodEle.getAttribute(NAME_ATTRIBUTE); String callback = replacedMethodEle.getAttribute(REPLACER_ATTRIBUTE); ReplaceOverride replaceOverride = new ReplaceOverride(name, callback); // Look for arg-type match elements. List argTypeEles = DomUtils.getChildElementsByTagName(replacedMethodEle, ARG_TYPE_ELEMENT); for (Iterator it = argTypeEles.iterator(); it.hasNext();) { Element argTypeEle = (Element) it.next(); replaceOverride.addTypeIdentifier(argTypeEle.getAttribute(ARG_TYPE_MATCH_ATTRIBUTE)); } overrides.addOverride(replaceOverride); } } }
From source file:org.springframework.beans.factory.xml.DefaultXmlBeanDefinitionParser.java
/** * Parse a map element.//from w w w . jav a2 s. c o m */ protected Map parseMapElement(Element mapEle, String beanName) throws BeanDefinitionStoreException { List entryEles = DomUtils.getChildElementsByTagName(mapEle, ENTRY_ELEMENT); ManagedMap map = new ManagedMap(entryEles.size()); for (Iterator it = entryEles.iterator(); it.hasNext();) { Element entryEle = (Element) it.next(); // Should only have one value child element: ref, value, list, etc. // Optionally, there might be a key child element. NodeList entrySubNodes = entryEle.getChildNodes(); Element keyEle = null; Element valueEle = null; for (int j = 0; j < entrySubNodes.getLength(); j++) { if (entrySubNodes.item(j) instanceof Element) { Element candidateEle = (Element) entrySubNodes.item(j); if (candidateEle.getTagName().equals(KEY_ELEMENT)) { if (keyEle != null) { throw new BeanDefinitionStoreException(getResource(), beanName, "<entry> element is only allowed to contain one <key> sub-element"); } keyEle = candidateEle; } else { // Child element is what we're looking for. if (valueEle != null) { throw new BeanDefinitionStoreException(getResource(), beanName, "<entry> element must not contain more than one value sub-element"); } valueEle = candidateEle; } } } // Extract key from attribute or sub-element. Object key = null; boolean hasKeyAttribute = entryEle.hasAttribute(KEY_ATTRIBUTE); boolean hasKeyRefAttribute = entryEle.hasAttribute(KEY_REF_ATTRIBUTE); if ((hasKeyAttribute && hasKeyRefAttribute) || ((hasKeyAttribute || hasKeyRefAttribute)) && keyEle != null) { throw new BeanDefinitionStoreException(getResource(), beanName, "<entry> element is only allowed to contain either " + "a 'key' attribute OR a 'key-ref' attribute OR a <key> sub-element"); } if (hasKeyAttribute) { key = entryEle.getAttribute(KEY_ATTRIBUTE); } else if (hasKeyRefAttribute) { String refName = entryEle.getAttribute(KEY_REF_ATTRIBUTE); if (!StringUtils.hasText(refName)) { throw new BeanDefinitionStoreException(getResource(), beanName, "<entry> element contains empty 'key-ref' attribute"); } key = new RuntimeBeanReference(refName); } else if (keyEle != null) { key = parseKeyElement(keyEle, beanName); } else { throw new BeanDefinitionStoreException(getResource(), beanName, "<entry> element must specify a key"); } // Extract value from attribute or sub-element. Object value = null; boolean hasValueAttribute = entryEle.hasAttribute(VALUE_ATTRIBUTE); boolean hasValueRefAttribute = entryEle.hasAttribute(VALUE_REF_ATTRIBUTE); if ((hasValueAttribute && hasValueRefAttribute) || ((hasValueAttribute || hasValueRefAttribute)) && valueEle != null) { throw new BeanDefinitionStoreException(getResource(), beanName, "<entry> element is only allowed to contain either " + "'value' attribute OR 'value-ref' attribute OR <value> sub-element"); } if (hasValueAttribute) { value = entryEle.getAttribute(VALUE_ATTRIBUTE); } else if (hasValueRefAttribute) { String refName = entryEle.getAttribute(VALUE_REF_ATTRIBUTE); if (!StringUtils.hasText(refName)) { throw new BeanDefinitionStoreException(getResource(), beanName, "<entry> element contains empty 'value-ref' attribute"); } value = new RuntimeBeanReference(refName); } else if (valueEle != null) { value = parsePropertySubElement(valueEle, beanName); } else { throw new BeanDefinitionStoreException(getResource(), beanName, "<entry> element must specify a value"); } // Add final key and value to the Map. map.put(key, value); } return map; }
From source file:org.springframework.beans.factory.xml.DefaultXmlBeanDefinitionParser.java
/** * Parse a props element.//www. j a v a 2 s. com */ protected Properties parsePropsElement(Element propsEle, String beanName) throws BeanDefinitionStoreException { Properties props = new Properties(); List propEles = DomUtils.getChildElementsByTagName(propsEle, PROP_ELEMENT); for (Iterator it = propEles.iterator(); it.hasNext();) { Element propEle = (Element) it.next(); String key = propEle.getAttribute(KEY_ATTRIBUTE); // Trim the text value to avoid unwanted whitespace // caused by typical XML formatting. String value = DomUtils.getTextValue(propEle).trim(); props.setProperty(key, value); } return props; }
From source file:org.springframework.data.gemfire.config.AbstractRegionParser.java
protected void doParseCommonRegionConfiguration(Element element, ParserContext parserContext, BeanDefinitionBuilder regionBuilder, BeanDefinitionBuilder regionAttributesBuilder, boolean subRegion) { mergeTemplateRegionAttributes(element, parserContext, regionBuilder, regionAttributesBuilder); String resolvedCacheRef = ParsingUtils.resolveCacheReference(element.getAttribute("cache-ref")); if (!subRegion) { regionBuilder.addPropertyReference("cache", resolvedCacheRef); ParsingUtils.setPropertyValue(element, regionBuilder, "close"); ParsingUtils.setPropertyValue(element, regionBuilder, "destroy"); }//from w ww . j av a2 s. co m ParsingUtils.setPropertyValue(element, regionBuilder, "name"); ParsingUtils.setPropertyValue(element, regionBuilder, "ignore-if-exists", "lookupEnabled"); ParsingUtils.setPropertyValue(element, regionBuilder, "data-policy"); ParsingUtils.setPropertyValue(element, regionBuilder, "persistent"); ParsingUtils.setPropertyValue(element, regionBuilder, "shortcut"); if (StringUtils.hasText(element.getAttribute("disk-store-ref"))) { ParsingUtils.setPropertyValue(element, regionBuilder, "disk-store-ref", "diskStoreName"); regionBuilder.addDependsOn(element.getAttribute("disk-store-ref")); } ParsingUtils.parseOptionalRegionAttributes(parserContext, element, regionAttributesBuilder); ParsingUtils.parseSubscription(parserContext, element, regionAttributesBuilder); ParsingUtils.parseStatistics(element, regionAttributesBuilder); ParsingUtils.parseMembershipAttributes(parserContext, element, regionAttributesBuilder); ParsingUtils.parseExpiration(parserContext, element, regionAttributesBuilder); ParsingUtils.parseEviction(parserContext, element, regionAttributesBuilder); ParsingUtils.parseCompressor(parserContext, element, regionAttributesBuilder); String enableGateway = element.getAttribute("enable-gateway"); String hubId = element.getAttribute("hub-id"); // Factory will enable gateway if it is not set and hub-id is set. if (StringUtils.hasText(enableGateway)) { if (GemfireUtils.isGemfireVersion7OrAbove()) { log.warn("'enable-gateway' has been deprecated since Gemfire 7.0"); } } ParsingUtils.setPropertyValue(element, regionBuilder, "enable-gateway"); if (StringUtils.hasText(hubId)) { if (GemfireUtils.isGemfireVersion7OrAbove()) { log.warn("'hub-id' has been deprecated since Gemfire 7.0"); } if (!CollectionUtils.isEmpty(DomUtils.getChildElementsByTagName(element, "gateway-sender"))) { parserContext.getReaderContext().error("specifying both 'hub-id' and 'gateway-sender' is invalid", element); } } ParsingUtils.setPropertyValue(element, regionBuilder, "hub-id"); parseCollectionOfCustomSubElements(element, parserContext, regionBuilder, AsyncEventQueue.class.getName(), "async-event-queue", "asyncEventQueues"); parseCollectionOfCustomSubElements(element, parserContext, regionBuilder, GatewaySender.class.getName(), "gateway-sender", "gatewaySenders"); List<Element> subElements = DomUtils.getChildElements(element); for (Element subElement : subElements) { if (subElement.getLocalName().equals("cache-listener")) { regionBuilder.addPropertyValue("cacheListeners", ParsingUtils.parseRefOrNestedBeanDeclaration(parserContext, subElement, regionBuilder)); } else if (subElement.getLocalName().equals("cache-loader")) { regionBuilder.addPropertyValue("cacheLoader", ParsingUtils .parseRefOrSingleNestedBeanDeclaration(parserContext, subElement, regionBuilder)); } else if (subElement.getLocalName().equals("cache-writer")) { regionBuilder.addPropertyValue("cacheWriter", ParsingUtils .parseRefOrSingleNestedBeanDeclaration(parserContext, subElement, regionBuilder)); } } if (!subRegion) { parseSubRegions(element, parserContext, resolvedCacheRef); } }
From source file:org.springframework.ide.eclipse.osgi.blueprint.internal.BlueprintParser.java
/** * Parse a props element.//from ww w . java 2 s .c o m */ public Properties parsePropsElement(Element propsEle) { ManagedProperties props = new OrderedManagedProperties(); props.setSource(extractSource(propsEle)); props.setMergeEnabled(parseMergeAttribute(propsEle)); List<Element> propEles = DomUtils.getChildElementsByTagName(propsEle, BeanDefinitionParserDelegate.PROP_ELEMENT); for (Iterator<Element> it = propEles.iterator(); it.hasNext();) { Element propEle = it.next(); String key = propEle.getAttribute(BeanDefinitionParserDelegate.KEY_ATTRIBUTE); // Trim the text value to avoid unwanted whitespace // caused by typical XML formatting. String value = DomUtils.getTextValue(propEle).trim(); TypedStringValue keyHolder = new TypedStringValue(key); keyHolder.setSource(extractSource(propEle)); TypedStringValue valueHolder = new TypedStringValue(value); valueHolder.setSource(extractSource(propEle)); props.put(keyHolder, valueHolder); } return props; }
From source file:org.springframework.integration.config.xml.ChainParser.java
private void validateChild(Element element, ParserContext parserContext) { final Object source = parserContext.extractSource(element); final String order = element.getAttribute(IntegrationNamespaceUtils.ORDER); if (StringUtils.hasText(order)) { parserContext.getReaderContext().error(IntegrationNamespaceUtils.createElementDescription(element) + " must not define " + "an 'order' attribute when used within a chain.", source); }//ww w . j a va2s . c o m final List<Element> pollerChildElements = DomUtils.getChildElementsByTagName(element, "poller"); if (!pollerChildElements.isEmpty()) { parserContext.getReaderContext().error(IntegrationNamespaceUtils.createElementDescription(element) + " must not define " + "a 'poller' sub-element when used within a chain.", source); } }
From source file:org.springframework.integration.jdbc.config.StoredProcParserUtils.java
/** * @param storedProcComponent/*from w w w . j av a2s .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// w ww . j av a 2 s. c om * @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.jdbc.config.StoredProcParserUtils.java
/** * @param storedProcComponent/* w ww .j a v a 2s . c o m*/ * @param parserContext */ public static ManagedMap<String, BeanDefinition> getReturningResultsetBeanDefinitions( Element storedProcComponent, ParserContext parserContext) { List<Element> returningResultsetChildElements = DomUtils.getChildElementsByTagName(storedProcComponent, "returning-resultset"); ManagedMap<String, BeanDefinition> returningResultsetMap = new ManagedMap<String, BeanDefinition>(); for (Element childElement : returningResultsetChildElements) { String name = childElement.getAttribute("name"); String rowMapperAsString = childElement.getAttribute("row-mapper"); BeanDefinitionBuilder rowMapperBuilder = BeanDefinitionBuilder.genericBeanDefinition(rowMapperAsString); returningResultsetMap.put(name, rowMapperBuilder.getBeanDefinition()); } return returningResultsetMap; }
From source file:org.springframework.integration.jpa.config.xml.JpaParserUtils.java
/** * Create a {@link ManagedList} of {@link BeanDefinition}s containing parsed * JPA Parameters.//www . j ava 2 s . c o m * * @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; }