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(); } }
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); } }
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); }
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); }
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; }
/** * Parses the top elements belonging to the RFC 124 namespace. Namely these are <component>, * <description> and <type-converters> * * @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); } }
/** * 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; } }
/** * 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; }
@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); }
/** * 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)); } }
@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")); } }
/** * 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; } }
/** * 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); } } }
/** * 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; } }
/** * 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; }
@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)); } }
@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; }
@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)); } }
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; }
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; }
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()); }
@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")); } }
@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")); } }
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; }
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; }
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; }
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); }
@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); } }
/** * 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; }
/** * 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; }