Java 类org.springframework.util.xml.DomUtils 实例源码

项目:JRediClients    文件:RedissonDefinitionParser.java   
private void parseChildElements(Element element, String parentId, String redissonRef, BeanDefinitionBuilder redissonDef, ParserContext parserContext) {
    if (element.hasChildNodes()) {
        CompositeComponentDefinition compositeDef
                = new CompositeComponentDefinition(parentId,
                        parserContext.extractSource(element));
        parserContext.pushContainingComponent(compositeDef);
        List<Element> childElts = DomUtils.getChildElements(element);
        for (Element elt : childElts) {
            if(BeanDefinitionParserDelegate
                    .QUALIFIER_ELEMENT.equals(elt.getLocalName())) {
                continue;//parsed elsewhere
            }
            String localName = parserContext.getDelegate().getLocalName(elt);
            localName = Conventions.attributeNameToPropertyName(localName);
            if (ConfigType.contains(localName)) {
                parseConfigTypes(elt, localName, redissonDef, parserContext);
            } else if (AddressType.contains(localName)) {
                parseAddressTypes(elt, localName, redissonDef, parserContext);
            } else if (helper.isRedissonNS(elt)) {
                elt.setAttribute(REDISSON_REF, redissonRef);
                parserContext.getDelegate().parseCustomElement(elt);
            }
        }
        parserContext.popContainingComponent();
    }
}
项目:cstruct-parser    文件:CjavaFcTemplateBeanDefinitionParser.java   
private void parserBranch(Map<String, Field[]> mixInfo, Element ele)
{
    List<Element> childElts = DomUtils.getChildElements(ele);
    // 解析fields
    if (CollectionUtils.isEmpty(childElts)) {
        //throw new IllegalArgumentException("cjava:branch node must contain child fields");
        mixInfo.put(ele.getAttribute("keyValue"), new Field[]{});
    }else{
        Field[] values = new Field[childElts.size()];
        for (int i = 0; i < childElts.size(); i++) {
            Element node = childElts.get(i);
            // 解析field
            values[i] = parserField(node,true);
        }

        mixInfo.put(ele.getAttribute("keyValue"), values);
    }


}
项目:cstruct-parser    文件:CjavaTcTemplateBeanDefinitionParser.java   
private void parserFieldMixBranchs(BeanDefinitionBuilder builder, Element ele)
{
    List<Element> childElts = DomUtils.getChildElements(ele);

    checkChildBranchs(childElts);

    Map<String, Field[]> mixInfo = new HashMap<String, Field[]>();

    for (int i = 0; i < childElts.size(); i++) {
        Element node = childElts.get(i);
        // 解析branch
        parserBranch(mixInfo, node);
    }

    builder.addPropertyValue("isMix", true);

    builder.addPropertyValue("mixInfo", mixInfo);
}
项目:cstruct-parser    文件:CjavaTcTemplateBeanDefinitionParser.java   
private void parserBranch(Map<String, Field[]> mixInfo, Element ele)
{
    List<Element> childElts = DomUtils.getChildElements(ele);
    // 解析fields
    if (CollectionUtils.isEmpty(childElts)) {
        throw new IllegalArgumentException("cjava:branch node must contain child fields");
    }
    Field[] values = new Field[childElts.size()];
    for (int i = 0; i < childElts.size(); i++) {
        Element node = childElts.get(i);
        // 解析field
        values[i] = parserField(node,false);
    }

    mixInfo.put(ele.getAttribute("keyValue"), values);

}
项目:gemini.blueprint    文件:ServiceParsingUtils.java   
public static boolean parseServiceProperties(Element parent, Element element, ParserContext parserContext,
        BeanDefinitionBuilder builder) {
    String name = element.getLocalName();

    if (PROPS_ID.equals(name)) {
        if (DomUtils.getChildElementsByTagName(element, BeanDefinitionParserDelegate.ENTRY_ELEMENT).size() > 0) {
            Object props = parserContext.getDelegate().parseMapElement(element, builder.getRawBeanDefinition());
            builder.addPropertyValue(Conventions.attributeNameToPropertyName(PROPS_ID), props);
        }
        else {
            parserContext.getReaderContext().error("Invalid service property type", element);
        }
        return true;
    }
    return false;
}
项目:gemini.blueprint    文件:BlueprintBeanDefinitionParser.java   
/**
 * Parses the top elements belonging to the RFC 124 namespace. Namely these are &lt;component&gt;,
 * &lt;description&gt; and &lt;type-converters&gt;
 * 
 * @param ele
 * @param parserContext
 */
protected void parseTopLevelElement(Element ele, ParserContext parserContext) {
    // description
    if (DomUtils.nodeNameEquals(ele, DESCRIPTION)) {
        // ignore description for now
    } else if (DomUtils.nodeNameEquals(ele, BEAN)) {
        parseComponentElement(ele, parserContext);
    } else if (DomUtils.nodeNameEquals(ele, REFERENCE)) {
        parseReferenceElement(ele, parserContext);
    } else if (DomUtils.nodeNameEquals(ele, SERVICE)) {
        parseServiceElement(ele, parserContext);
    } else if (DomUtils.nodeNameEquals(ele, REFERENCE_LIST)) {
        parseListElement(ele, parserContext);
    } else if (DomUtils.nodeNameEquals(ele, REFERENCE_SET)) {
        parseSetElement(ele, parserContext);
    } else if (DomUtils.nodeNameEquals(ele, TypeConverterBeanDefinitionParser.TYPE_CONVERTERS)) {
        parseConvertersElement(ele, parserContext);
    } else {
        throw new IllegalArgumentException("Unknown element " + ele);
    }
}
项目:gemini.blueprint    文件:BlueprintParser.java   
/**
 * Return a typed String value Object for the given value element.
 * 
 * @param ele element
 * @param defaultTypeName type class name
 * @return typed String value Object
 */
private Object parseValueElement(Element ele, String defaultTypeName) {
    // It's a literal value.
    String value = DomUtils.getTextValue(ele);
    String specifiedTypeName = ele.getAttribute(BeanDefinitionParserDelegate.TYPE_ATTRIBUTE);
    String typeName = specifiedTypeName;
    if (!StringUtils.hasText(typeName)) {
        typeName = defaultTypeName;
    }
    try {
        TypedStringValue typedValue = buildTypedStringValue(value, typeName);
        typedValue.setSource(extractSource(ele));
        typedValue.setSpecifiedTypeName(specifiedTypeName);
        return typedValue;
    } catch (ClassNotFoundException ex) {
        error("Type class [" + typeName + "] not found for <value> element", ele, ex);
        return value;
    }
}
项目:gemini.blueprint    文件:BlueprintParser.java   
/**
 * Parse a props element.
 */
public Properties parsePropsElement(Element propsEle) {
    ManagedProperties props = new OrderedManagedProperties();
    props.setSource(extractSource(propsEle));
    props.setMergeEnabled(parseMergeAttribute(propsEle));

    List propEles = DomUtils.getChildElementsByTagName(propsEle, BeanDefinitionParserDelegate.PROP_ELEMENT);
    for (Iterator it = propEles.iterator(); it.hasNext();) {
        Element propEle = (Element) 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;
}
项目:gemini.blueprint    文件:BlueprintServiceDefinitionParser.java   
@Override
protected void doParse(Element element, ParserContext parserContext, BeanDefinitionBuilder builder) {
    // first check the attributes
    if (element.hasAttribute(AUTOEXPORT) && !DISABLED.equals(element.getAttribute(AUTOEXPORT).trim())) {
        if (element.hasAttribute(INTERFACE)) {
            parserContext.getReaderContext().error(
                    "either 'auto-export' or 'interface' attribute has be specified but not both", element);
        }
        if (DomUtils.getChildElementByTagName(element, INTERFACES) != null) {
            parserContext.getReaderContext().error(
                    "either 'auto-export' attribute or <intefaces> sub-element has be specified but not both",
                    element);

        }

    }

    builder.addPropertyValue(CACHE_TARGET, true);
    super.doParse(element, parserContext, builder);
}
项目:gemini.blueprint    文件:LocalFileSystemMavenRepository.java   
/**
 * Returns the <code>localRepository</code> settings as indicated by the
 * <code>settings.xml</code> file.
 * 
 * @return local repository as indicated by a Maven settings.xml file
 */
String getMavenSettingsLocalRepository(Resource m2Settings) {
    // no file found, return null to continue the discovery process
    if (!m2Settings.exists()) {
        return null;
       }

    try {
        DocumentLoader docLoader = new DefaultDocumentLoader();
        Document document = docLoader.loadDocument(new InputSource(m2Settings.getInputStream()), null, null,
            XmlValidationModeDetector.VALIDATION_NONE, false);

        return (DomUtils.getChildElementValueByTagName(document.getDocumentElement(), LOCAL_REPOSITORY_ELEM));
    } catch (Exception ex) {
        throw new RuntimeException(new ParserConfigurationException("error parsing resource=" + m2Settings).initCause(ex));
    }
}
项目:lams    文件:TxAdviceBeanDefinitionParser.java   
@Override
protected void doParse(Element element, ParserContext parserContext, BeanDefinitionBuilder builder) {
    builder.addPropertyReference("transactionManager", TxNamespaceHandler.getTransactionManagerName(element));

    List<Element> txAttributes = DomUtils.getChildElementsByTagName(element, ATTRIBUTES_ELEMENT);
    if (txAttributes.size() > 1) {
        parserContext.getReaderContext().error(
                "Element <attributes> is allowed at most once inside element <advice>", element);
    }
    else if (txAttributes.size() == 1) {
        // Using attributes source.
        Element attributeSourceElement = txAttributes.get(0);
        RootBeanDefinition attributeSourceDefinition = parseAttributeSource(attributeSourceElement, parserContext);
        builder.addPropertyValue("transactionAttributeSource", attributeSourceDefinition);
    }
    else {
        // Assume annotations source.
        builder.addPropertyValue("transactionAttributeSource",
                new RootBeanDefinition("org.springframework.transaction.annotation.AnnotationTransactionAttributeSource"));
    }
}
项目:lams    文件:ScriptBeanDefinitionParser.java   
/**
 * Resolves the script source from either the '{@code script-source}' attribute or
 * the '{@code inline-script}' element. Logs and {@link XmlReaderContext#error} and
 * returns {@code null} if neither or both of these values are specified.
 */
private String resolveScriptSource(Element element, XmlReaderContext readerContext) {
    boolean hasScriptSource = element.hasAttribute(SCRIPT_SOURCE_ATTRIBUTE);
    List<Element> elements = DomUtils.getChildElementsByTagName(element, INLINE_SCRIPT_ELEMENT);
    if (hasScriptSource && !elements.isEmpty()) {
        readerContext.error("Only one of 'script-source' and 'inline-script' should be specified.", element);
        return null;
    }
    else if (hasScriptSource) {
        return element.getAttribute(SCRIPT_SOURCE_ATTRIBUTE);
    }
    else if (!elements.isEmpty()) {
        Element inlineElement = elements.get(0);
        return "inline:" + DomUtils.getTextValue(inlineElement);
    }
    else {
        readerContext.error("Must specify either 'script-source' or 'inline-script'.", element);
        return null;
    }
}
项目:lams    文件:BeanDefinitionParserDelegate.java   
/**
 * Parse replaced-method sub-elements of the given bean element.
 */
public void parseReplacedMethodSubElements(Element beanEle, MethodOverrides overrides) {
    NodeList nl = beanEle.getChildNodes();
    for (int i = 0; i < nl.getLength(); i++) {
        Node node = nl.item(i);
        if (isCandidateElement(node) && nodeNameEquals(node, REPLACED_METHOD_ELEMENT)) {
            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<Element> argTypeEles = DomUtils.getChildElementsByTagName(replacedMethodEle, ARG_TYPE_ELEMENT);
            for (Element argTypeEle : argTypeEles) {
                String match = argTypeEle.getAttribute(ARG_TYPE_MATCH_ATTRIBUTE);
                match = (StringUtils.hasText(match) ? match : DomUtils.getTextValue(argTypeEle));
                if (StringUtils.hasText(match)) {
                    replaceOverride.addTypeIdentifier(match);
                }
            }
            replaceOverride.setSource(extractSource(replacedMethodEle));
            overrides.addOverride(replaceOverride);
        }
    }
}
项目:lams    文件:BeanDefinitionParserDelegate.java   
/**
 * Return a typed String value Object for the given value element.
 */
public Object parseValueElement(Element ele, String defaultTypeName) {
    // It's a literal value.
    String value = DomUtils.getTextValue(ele);
    String specifiedTypeName = ele.getAttribute(TYPE_ATTRIBUTE);
    String typeName = specifiedTypeName;
    if (!StringUtils.hasText(typeName)) {
        typeName = defaultTypeName;
    }
    try {
        TypedStringValue typedValue = buildTypedStringValue(value, typeName);
        typedValue.setSource(extractSource(ele));
        typedValue.setSpecifiedTypeName(specifiedTypeName);
        return typedValue;
    }
    catch (ClassNotFoundException ex) {
        error("Type class [" + typeName + "] not found for <value> element", ele, ex);
        return value;
    }
}
项目:lams    文件:BeanDefinitionParserDelegate.java   
/**
 * Parse a props element.
 */
public Properties parsePropsElement(Element propsEle) {
    ManagedProperties props = new ManagedProperties();
    props.setSource(extractSource(propsEle));
    props.setMergeEnabled(parseMergeAttribute(propsEle));

    List<Element> propEles = DomUtils.getChildElementsByTagName(propsEle, PROP_ELEMENT);
    for (Element propEle : propEles) {
        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();
        TypedStringValue keyHolder = new TypedStringValue(key);
        keyHolder.setSource(extractSource(propEle));
        TypedStringValue valueHolder = new TypedStringValue(value);
        valueHolder.setSource(extractSource(propEle));
        props.put(keyHolder, valueHolder);
    }

    return props;
}
项目:lams    文件:CacheAdviceParser.java   
@Override
protected void doParse(Element element, ParserContext parserContext, BeanDefinitionBuilder builder) {
    builder.addPropertyReference("cacheManager", CacheNamespaceHandler.extractCacheManager(element));
    CacheNamespaceHandler.parseKeyGenerator(element, builder.getBeanDefinition());

    List<Element> cacheDefs = DomUtils.getChildElementsByTagName(element, DEFS_ELEMENT);
    if (cacheDefs.size() >= 1) {
        // Using attributes source.
        List<RootBeanDefinition> attributeSourceDefinitions = parseDefinitionsSources(cacheDefs, parserContext);
        builder.addPropertyValue("cacheOperationSources", attributeSourceDefinitions);
    } else {
        // Assume annotations source.
        builder.addPropertyValue("cacheOperationSources", new RootBeanDefinition(
                AnnotationCacheOperationSource.class));
    }
}
项目:lams    文件:ConfigBeanDefinitionParser.java   
@Override
public BeanDefinition parse(Element element, ParserContext parserContext) {
    CompositeComponentDefinition compositeDef =
            new CompositeComponentDefinition(element.getTagName(), parserContext.extractSource(element));
    parserContext.pushContainingComponent(compositeDef);

    configureAutoProxyCreator(parserContext, element);

    List<Element> childElts = DomUtils.getChildElements(element);
    for (Element elt: childElts) {
        String localName = parserContext.getDelegate().getLocalName(elt);
        if (POINTCUT.equals(localName)) {
            parsePointcut(elt, parserContext);
        }
        else if (ADVISOR.equals(localName)) {
            parseAdvisor(elt, parserContext);
        }
        else if (ASPECT.equals(localName)) {
            parseAspect(elt, parserContext);
        }
    }

    parserContext.popAndRegisterContainingComponent();
    return null;
}
项目:lams    文件:AbstractJndiLocatingBeanDefinitionParser.java   
@Override
protected void postProcess(BeanDefinitionBuilder definitionBuilder, Element element) {
    Object envValue = DomUtils.getChildElementValueByTagName(element, ENVIRONMENT);
    if (envValue != null) {
        // Specific environment settings defined, overriding any shared properties.
        definitionBuilder.addPropertyValue(JNDI_ENVIRONMENT, envValue);
    }
    else {
        // Check whether there is a reference to shared environment properties...
        String envRef = element.getAttribute(ENVIRONMENT_REF);
        if (StringUtils.hasLength(envRef)) {
            definitionBuilder.addPropertyValue(JNDI_ENVIRONMENT, new RuntimeBeanReference(envRef));
        }
    }

    String lazyInit = element.getAttribute(LAZY_INIT_ATTRIBUTE);
    if (StringUtils.hasText(lazyInit) && !DEFAULT_VALUE.equals(lazyInit)) {
        definitionBuilder.setLazyInit(TRUE_VALUE.equals(lazyInit));
    }
}
项目:game    文件:NioServerBeanDefinitionParser.java   
private String parseServerConfig(Element element, ParserContext parserContext) {
Element ipconfigs = DomUtils.getChildElementByTagName(element, AttributeNames.IPCONFIGS);
List<Element> ips = DomUtils.getChildElementsByTagName(ipconfigs, AttributeNames.IPCONFIG);
BeanDefinitionBuilder serverConfigBuilder = BeanDefinitionBuilder.genericBeanDefinition(ServerConfig.class);
serverConfigBuilder.addConstructorArgValue(element.getAttribute(AttributeNames.READ_SIZE));
serverConfigBuilder.addConstructorArgValue(element.getAttribute(AttributeNames.WRITE_SIZE));
ManagedList<BeanDefinition> inetSocketAddress = new ManagedList<BeanDefinition>();
for (Element ip : ips) {
    BeanDefinitionBuilder inetBuilder = BeanDefinitionBuilder.genericBeanDefinition(IpConfig.class);
    inetBuilder.addConstructorArgValue(ip.getAttribute(AttributeNames.HOST_NAME));
    inetBuilder.addConstructorArgValue(ip.getAttribute(AttributeNames.PORT));
    inetSocketAddress.add(inetBuilder.getBeanDefinition());
}
serverConfigBuilder.addConstructorArgValue(inetSocketAddress);
String serverConfig = StringUtils.uncapitalize(ServerConfig.class.getSimpleName());
parserContext.getRegistry().registerBeanDefinition(serverConfig, serverConfigBuilder.getBeanDefinition());
return serverConfig;
   }
项目:game    文件:NioServerBeanDefinitionParser.java   
private String parseMessageParse(Element element, ParserContext parserContext) {
Element parse = DomUtils.getChildElementByTagName(element, AttributeNames.PARSE);
String basePackage = parse.getAttribute(AttributeNames.BASE_PACKAGE);
String ref = parse.getAttribute(AttributeNames.REF);
if (!StringUtils.hasLength(ref)) {
    BeanDefinitionBuilder serverConfigBuilder = BeanDefinitionBuilder
        .genericBeanDefinition(SerializerHelper.class);
    serverConfigBuilder.addConstructorArgValue(basePackage);
    String serializerHelper = StringUtils.uncapitalize(SerializerHelper.class.getSimpleName());
    parserContext.getRegistry().registerBeanDefinition(serializerHelper,
        serverConfigBuilder.getBeanDefinition());
    return serializerHelper;
}
return ref;

   }
项目:game    文件:ResourceBeanDefinitionParser.java   
private void parseDebug(Element element, ParserContext parserContext) {
Element debug = DomUtils.getChildElementByTagName(element, AttributeNames.DEBUG);
BeanDefinitionBuilder builder = BeanDefinitionBuilder.genericBeanDefinition(DebugConfig.class);
boolean all = Boolean.valueOf(debug.getAttribute(AttributeNames.IGNORE_ALL));
boolean convert = Boolean.valueOf(debug.getAttribute(AttributeNames.IGNORE_CONVERT));
boolean absent = Boolean.valueOf(debug.getAttribute(AttributeNames.IGNORE_ABSENT));
if (all) {
    log.warn("Resource资源注入启动Ignore_All模式");
} else {
    if (convert) {
    log.warn("Resource资源注入启动Ignore_convert模式");
    }
    if (absent) {
    log.warn("Resource资源注入启动Ignore_absent模式");
    }
}
builder.addConstructorArgValue(all);
builder.addConstructorArgValue(convert);
builder.addConstructorArgValue(absent);
parserContext.getRegistry().registerBeanDefinition(StringUtils.uncapitalize(DebugConfig.class.getSimpleName()),
    builder.getBeanDefinition());
   }
项目:spring4-understanding    文件:ConfigBeanDefinitionParser.java   
@Override
public BeanDefinition parse(Element element, ParserContext parserContext) {
    CompositeComponentDefinition compositeDef =
            new CompositeComponentDefinition(element.getTagName(), parserContext.extractSource(element));
    parserContext.pushContainingComponent(compositeDef);

    configureAutoProxyCreator(parserContext, element);

    List<Element> childElts = DomUtils.getChildElements(element);
    for (Element elt: childElts) {
        String localName = parserContext.getDelegate().getLocalName(elt);
        if (POINTCUT.equals(localName)) {
            parsePointcut(elt, parserContext);
        }
        else if (ADVISOR.equals(localName)) {
            parseAdvisor(elt, parserContext);
        }
        else if (ASPECT.equals(localName)) {
            parseAspect(elt, parserContext);
        }
    }

    parserContext.popAndRegisterContainingComponent();
    return null;
}
项目:spring4-understanding    文件:ScriptBeanDefinitionParser.java   
/**
 * Resolves the script source from either the '{@code script-source}' attribute or
 * the '{@code inline-script}' element. Logs and {@link XmlReaderContext#error} and
 * returns {@code null} if neither or both of these values are specified.
 */
private String resolveScriptSource(Element element, XmlReaderContext readerContext) {
    boolean hasScriptSource = element.hasAttribute(SCRIPT_SOURCE_ATTRIBUTE);
    List<Element> elements = DomUtils.getChildElementsByTagName(element, INLINE_SCRIPT_ELEMENT);
    if (hasScriptSource && !elements.isEmpty()) {
        readerContext.error("Only one of 'script-source' and 'inline-script' should be specified.", element);
        return null;
    }
    else if (hasScriptSource) {
        return element.getAttribute(SCRIPT_SOURCE_ATTRIBUTE);
    }
    else if (!elements.isEmpty()) {
        Element inlineElement = elements.get(0);
        return "inline:" + DomUtils.getTextValue(inlineElement);
    }
    else {
        readerContext.error("Must specify either 'script-source' or 'inline-script'.", element);
        return null;
    }
}
项目:spring4-understanding    文件:CacheAdviceParser.java   
@Override
protected void doParse(Element element, ParserContext parserContext, BeanDefinitionBuilder builder) {
    builder.addPropertyReference("cacheManager", CacheNamespaceHandler.extractCacheManager(element));
    CacheNamespaceHandler.parseKeyGenerator(element, builder.getBeanDefinition());

    List<Element> cacheDefs = DomUtils.getChildElementsByTagName(element, DEFS_ELEMENT);
    if (cacheDefs.size() >= 1) {
        // Using attributes source.
        List<RootBeanDefinition> attributeSourceDefinitions = parseDefinitionsSources(cacheDefs, parserContext);
        builder.addPropertyValue("cacheOperationSources", attributeSourceDefinitions);
    }
    else {
        // Assume annotations source.
        builder.addPropertyValue("cacheOperationSources",
                new RootBeanDefinition("org.springframework.cache.annotation.AnnotationCacheOperationSource"));
    }
}
项目:spring4-understanding    文件:AbstractJndiLocatingBeanDefinitionParser.java   
@Override
protected void postProcess(BeanDefinitionBuilder definitionBuilder, Element element) {
    Object envValue = DomUtils.getChildElementValueByTagName(element, ENVIRONMENT);
    if (envValue != null) {
        // Specific environment settings defined, overriding any shared properties.
        definitionBuilder.addPropertyValue(JNDI_ENVIRONMENT, envValue);
    }
    else {
        // Check whether there is a reference to shared environment properties...
        String envRef = element.getAttribute(ENVIRONMENT_REF);
        if (StringUtils.hasLength(envRef)) {
            definitionBuilder.addPropertyValue(JNDI_ENVIRONMENT, new RuntimeBeanReference(envRef));
        }
    }

    String lazyInit = element.getAttribute(LAZY_INIT_ATTRIBUTE);
    if (StringUtils.hasText(lazyInit) && !DEFAULT_VALUE.equals(lazyInit)) {
        definitionBuilder.setLazyInit(TRUE_VALUE.equals(lazyInit));
    }
}
项目:spring4-understanding    文件:TxAdviceBeanDefinitionParser.java   
@Override
protected void doParse(Element element, ParserContext parserContext, BeanDefinitionBuilder builder) {
    builder.addPropertyReference("transactionManager", TxNamespaceHandler.getTransactionManagerName(element));

    List<Element> txAttributes = DomUtils.getChildElementsByTagName(element, ATTRIBUTES_ELEMENT);
    if (txAttributes.size() > 1) {
        parserContext.getReaderContext().error(
                "Element <attributes> is allowed at most once inside element <advice>", element);
    }
    else if (txAttributes.size() == 1) {
        // Using attributes source.
        Element attributeSourceElement = txAttributes.get(0);
        RootBeanDefinition attributeSourceDefinition = parseAttributeSource(attributeSourceElement, parserContext);
        builder.addPropertyValue("transactionAttributeSource", attributeSourceDefinition);
    }
    else {
        // Assume annotations source.
        builder.addPropertyValue("transactionAttributeSource",
                new RootBeanDefinition("org.springframework.transaction.annotation.AnnotationTransactionAttributeSource"));
    }
}
项目:spring4-understanding    文件:TilesConfigurerBeanDefinitionParser.java   
@Override
protected void doParse(Element element, ParserContext parserContext, BeanDefinitionBuilder builder) {
    List<Element> childElements = DomUtils.getChildElementsByTagName(element, "definitions");
    if (!childElements.isEmpty()) {
        List<String> locations = new ArrayList<String>(childElements.size());
        for (Element childElement : childElements) {
            locations.add(childElement.getAttribute("location"));
        }
        builder.addPropertyValue("definitions", locations.toArray(new String[locations.size()]));
    }
    if (element.hasAttribute("check-refresh")) {
        builder.addPropertyValue("checkRefresh", element.getAttribute("check-refresh"));
    }
    if (element.hasAttribute("validate-definitions")) {
        builder.addPropertyValue("validateDefinitions", element.getAttribute("validate-definitions"));
    }
    if (element.hasAttribute("definitions-factory")) {
        builder.addPropertyValue("definitionsFactoryClass", element.getAttribute("definitions-factory"));
    }
    if (element.hasAttribute("preparer-factory")) {
        builder.addPropertyValue("preparerFactoryClass", element.getAttribute("preparer-factory"));
    }
}
项目:spring4-understanding    文件:ViewResolversBeanDefinitionParser.java   
private BeanDefinition createContentNegotiatingViewResolver(Element resolverElement, ParserContext context) {
    RootBeanDefinition beanDef = new RootBeanDefinition(ContentNegotiatingViewResolver.class);
    beanDef.setSource(context.extractSource(resolverElement));
    beanDef.setRole(BeanDefinition.ROLE_INFRASTRUCTURE);
    MutablePropertyValues values = beanDef.getPropertyValues();

    List<Element> elements = DomUtils.getChildElementsByTagName(resolverElement, new String[] {"default-views"});
    if (!elements.isEmpty()) {
        ManagedList<Object> list = new ManagedList<Object>();
        for (Element element : DomUtils.getChildElementsByTagName(elements.get(0), "bean", "ref")) {
            list.add(context.getDelegate().parsePropertySubElement(element, null));
        }
        values.add("defaultViews", list);
    }
    if (resolverElement.hasAttribute("use-not-acceptable")) {
        values.add("useNotAcceptableStatusCode", resolverElement.getAttribute("use-not-acceptable"));
    }
    Object manager = getContentNegotiationManager(context);
    if (manager != null) {
        values.add("contentNegotiationManager", manager);
    }
    return beanDef;
}
项目:spring4-understanding    文件:AnnotationDrivenBeanDefinitionParser.java   
private ManagedList<?> getCallableInterceptors(Element element, Object source, ParserContext parserContext) {
    ManagedList<? super Object> interceptors = new ManagedList<Object>();
    Element asyncElement = DomUtils.getChildElementByTagName(element, "async-support");
    if (asyncElement != null) {
        Element interceptorsElement = DomUtils.getChildElementByTagName(asyncElement, "callable-interceptors");
        if (interceptorsElement != null) {
            interceptors.setSource(source);
            for (Element converter : DomUtils.getChildElementsByTagName(interceptorsElement, "bean")) {
                BeanDefinitionHolder beanDef = parserContext.getDelegate().parseBeanDefinitionElement(converter);
                beanDef = parserContext.getDelegate().decorateBeanDefinitionIfRequired(converter, beanDef);
                interceptors.add(beanDef);
            }
        }
    }
    return interceptors;
}
项目:spring4-understanding    文件:AnnotationDrivenBeanDefinitionParser.java   
private ManagedList<?> getDeferredResultInterceptors(Element element, Object source, ParserContext parserContext) {
    ManagedList<? super Object> interceptors = new ManagedList<Object>();
    Element asyncElement = DomUtils.getChildElementByTagName(element, "async-support");
    if (asyncElement != null) {
        Element interceptorsElement = DomUtils.getChildElementByTagName(asyncElement, "deferred-result-interceptors");
        if (interceptorsElement != null) {
            interceptors.setSource(source);
            for (Element converter : DomUtils.getChildElementsByTagName(interceptorsElement, "bean")) {
                BeanDefinitionHolder beanDef = parserContext.getDelegate().parseBeanDefinitionElement(converter);
                beanDef = parserContext.getDelegate().decorateBeanDefinitionIfRequired(converter, beanDef);
                interceptors.add(beanDef);
            }
        }
    }
    return interceptors;
}
项目:spring4-understanding    文件:MessageBrokerBeanDefinitionParser.java   
private RuntimeBeanReference registerUserDestHandler(Element brokerElem,
        RuntimeBeanReference userRegistry, RuntimeBeanReference inChannel,
        RuntimeBeanReference brokerChannel, ParserContext context, Object source) {

    Object userDestResolver = registerUserDestResolver(brokerElem, userRegistry, context, source);

    RootBeanDefinition beanDef = new RootBeanDefinition(UserDestinationMessageHandler.class);
    beanDef.getConstructorArgumentValues().addIndexedArgumentValue(0, inChannel);
    beanDef.getConstructorArgumentValues().addIndexedArgumentValue(1, brokerChannel);
    beanDef.getConstructorArgumentValues().addIndexedArgumentValue(2, userDestResolver);

    Element relayElement = DomUtils.getChildElementByTagName(brokerElem, "stomp-broker-relay");
    if (relayElement != null && relayElement.hasAttribute("user-destination-broadcast")) {
        String destination = relayElement.getAttribute("user-destination-broadcast");
        beanDef.getPropertyValues().add("broadcastDestination", destination);
    }

    String beanName = registerBeanDef(beanDef, context, source);
    return new RuntimeBeanReference(beanName);
}
项目:spring4-understanding    文件:Jaxb2MarshallerBeanDefinitionParser.java   
@Override
protected void doParse(Element element, ParserContext parserContext, BeanDefinitionBuilder beanDefinitionBuilder) {
    String contextPath = element.getAttribute("context-path");
    if (!StringUtils.hasText(contextPath)) {
        // Backwards compatibility with 3.x version of the xsd
        contextPath = element.getAttribute("contextPath");
    }
    if (StringUtils.hasText(contextPath)) {
        beanDefinitionBuilder.addPropertyValue("contextPath", contextPath);
    }

    List<Element> classes = DomUtils.getChildElementsByTagName(element, "class-to-be-bound");
    if (!classes.isEmpty()) {
        ManagedList<String> classesToBeBound = new ManagedList<String>(classes.size());
        for (Element classToBeBound : classes) {
            String className = classToBeBound.getAttribute("name");
            classesToBeBound.add(className);
        }
        beanDefinitionBuilder.addPropertyValue("classesToBeBound", classesToBeBound);
    }
}
项目:spring4-understanding    文件:BeanDefinitionParserDelegate.java   
/**
 * Parse replaced-method sub-elements of the given bean element.
 */
public void parseReplacedMethodSubElements(Element beanEle, MethodOverrides overrides) {
    NodeList nl = beanEle.getChildNodes();
    for (int i = 0; i < nl.getLength(); i++) {
        Node node = nl.item(i);
        if (isCandidateElement(node) && nodeNameEquals(node, REPLACED_METHOD_ELEMENT)) {
            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<Element> argTypeEles = DomUtils.getChildElementsByTagName(replacedMethodEle, ARG_TYPE_ELEMENT);
            for (Element argTypeEle : argTypeEles) {
                String match = argTypeEle.getAttribute(ARG_TYPE_MATCH_ATTRIBUTE);
                match = (StringUtils.hasText(match) ? match : DomUtils.getTextValue(argTypeEle));
                if (StringUtils.hasText(match)) {
                    replaceOverride.addTypeIdentifier(match);
                }
            }
            replaceOverride.setSource(extractSource(replacedMethodEle));
            overrides.addOverride(replaceOverride);
        }
    }
}
项目:spring4-understanding    文件:BeanDefinitionParserDelegate.java   
/**
 * Return a typed String value Object for the given value element.
 */
public Object parseValueElement(Element ele, String defaultTypeName) {
    // It's a literal value.
    String value = DomUtils.getTextValue(ele);
    String specifiedTypeName = ele.getAttribute(TYPE_ATTRIBUTE);
    String typeName = specifiedTypeName;
    if (!StringUtils.hasText(typeName)) {
        typeName = defaultTypeName;
    }
    try {
        TypedStringValue typedValue = buildTypedStringValue(value, typeName);
        typedValue.setSource(extractSource(ele));
        typedValue.setSpecifiedTypeName(specifiedTypeName);
        return typedValue;
    }
    catch (ClassNotFoundException ex) {
        error("Type class [" + typeName + "] not found for <value> element", ele, ex);
        return value;
    }
}
项目:spring4-understanding    文件:BeanDefinitionParserDelegate.java   
/**
 * Parse a props element.
 */
public Properties parsePropsElement(Element propsEle) {
    ManagedProperties props = new ManagedProperties();
    props.setSource(extractSource(propsEle));
    props.setMergeEnabled(parseMergeAttribute(propsEle));

    List<Element> propEles = DomUtils.getChildElementsByTagName(propsEle, PROP_ELEMENT);
    for (Element propEle : propEles) {
        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();
        TypedStringValue keyHolder = new TypedStringValue(key);
        keyHolder.setSource(extractSource(propEle));
        TypedStringValue valueHolder = new TypedStringValue(value);
        valueHolder.setSource(extractSource(propEle));
        props.put(keyHolder, valueHolder);
    }

    return props;
}
项目:citrus-admin    文件:TestNGTestReportLoader.java   
/**
 * Fills result object with test method information.
 * @param test
 * @param testMethod
 * @return
 */
private TestResult getResult(Test test, Element testMethod) {
    TestResult result = new TestResult();
    result.setTest(test);
    result.setStatus(TestStatus.valueOf(testMethod.getAttribute("status")));

    Element exceptionElement = DomUtils.getChildElementByTagName(testMethod, "exception");
    if (exceptionElement != null) {
        Element messageElement = DomUtils.getChildElementByTagName(exceptionElement, "message");
        if (messageElement != null) {
            result.setErrorMessage(DomUtils.getTextValue(messageElement).trim());
        }

        result.setErrorCause(exceptionElement.getAttribute("class"));

        Element stackTraceElement = DomUtils.getChildElementByTagName(exceptionElement, "full-stacktrace");
        if (stackTraceElement != null) {
            result.setStackTrace(DomUtils.getTextValue(stackTraceElement).trim());
        }
    }

    return result;
}
项目:citrus-admin    文件:JUnit4TestReportLoader.java   
/**
 * Fills result object with test case information.
 * @param test
 * @param testCase
 * @return
 */
private TestResult getResult(Test test, Element testCase) {
    TestResult result = new TestResult();
    result.setTest(test);

    Element failureElement = DomUtils.getChildElementByTagName(testCase, "failure");
    if (failureElement != null) {
        result.setStatus(TestStatus.FAIL);
        result.setErrorMessage(failureElement.getAttribute("message"));
        result.setErrorCause(failureElement.getAttribute("type"));
        result.setStackTrace(DomUtils.getTextValue(failureElement).trim());
    } else {
        result.setStatus(TestStatus.PASS);
    }

    return result;
}
项目:my-spring-cache-redis    文件:ScriptBeanDefinitionParser.java   
/**
 * Resolves the script source from either the '{@code script-source}' attribute or
 * the '{@code inline-script}' element. Logs and {@link XmlReaderContext#error} and
 * returns {@code null} if neither or both of these values are specified.
 */
private String resolveScriptSource(Element element, XmlReaderContext readerContext) {
    boolean hasScriptSource = element.hasAttribute(SCRIPT_SOURCE_ATTRIBUTE);
    List<Element> elements = DomUtils.getChildElementsByTagName(element, INLINE_SCRIPT_ELEMENT);
    if (hasScriptSource && !elements.isEmpty()) {
        readerContext.error("Only one of 'script-source' and 'inline-script' should be specified.", element);
        return null;
    }
    else if (hasScriptSource) {
        return element.getAttribute(SCRIPT_SOURCE_ATTRIBUTE);
    }
    else if (!elements.isEmpty()) {
        Element inlineElement = elements.get(0);
        return "inline:" + DomUtils.getTextValue(inlineElement);
    }
    else {
        readerContext.error("Must specify either 'script-source' or 'inline-script'.", element);
        return null;
    }
}
项目:my-spring-cache-redis    文件:CacheAdviceParser.java   
@Override
protected void doParse(Element element, ParserContext parserContext, BeanDefinitionBuilder builder) {
    builder.addPropertyReference("cacheManager", CacheNamespaceHandler.extractCacheManager(element));
    CacheNamespaceHandler.parseKeyGenerator(element, builder.getBeanDefinition());

    List<Element> cacheDefs = DomUtils.getChildElementsByTagName(element, DEFS_ELEMENT);
    if (cacheDefs.size() >= 1) {
        // Using attributes source.
        List<RootBeanDefinition> attributeSourceDefinitions = parseDefinitionsSources(cacheDefs, parserContext);
        builder.addPropertyValue("cacheOperationSources", attributeSourceDefinitions);
    } else {
        // Assume annotations source.
        builder.addPropertyValue("cacheOperationSources", new RootBeanDefinition(
                AnnotationCacheOperationSource.class));
    }
}
项目:my-spring-cache-redis    文件:AbstractJndiLocatingBeanDefinitionParser.java   
@Override
protected void postProcess(BeanDefinitionBuilder definitionBuilder, Element element) {
    Object envValue = DomUtils.getChildElementValueByTagName(element, ENVIRONMENT);
    if (envValue != null) {
        // Specific environment settings defined, overriding any shared properties.
        definitionBuilder.addPropertyValue(JNDI_ENVIRONMENT, envValue);
    }
    else {
        // Check whether there is a reference to shared environment properties...
        String envRef = element.getAttribute(ENVIRONMENT_REF);
        if (StringUtils.hasLength(envRef)) {
            definitionBuilder.addPropertyValue(JNDI_ENVIRONMENT, new RuntimeBeanReference(envRef));
        }
    }

    String lazyInit = element.getAttribute(LAZY_INIT_ATTRIBUTE);
    if (StringUtils.hasText(lazyInit) && !DEFAULT_VALUE.equals(lazyInit)) {
        definitionBuilder.setLazyInit(TRUE_VALUE.equals(lazyInit));
    }
}