Package org.apache.maven.internal.xml
Class DefaultXmlService
java.lang.Object
org.apache.maven.api.xml.XmlService
org.apache.maven.internal.xml.DefaultXmlService
-
Nested Class Summary
Nested classes/interfaces inherited from class org.apache.maven.api.xml.XmlService
XmlService.InputLocationBuilder -
Field Summary
Fields inherited from class org.apache.maven.api.xml.XmlService
CHILDREN_COMBINATION_APPEND, CHILDREN_COMBINATION_MERGE, CHILDREN_COMBINATION_MODE_ATTRIBUTE, DEFAULT_CHILDREN_COMBINATION_MODE, DEFAULT_SELF_COMBINATION_MODE, ID_COMBINATION_MODE_ATTRIBUTE, KEYS_COMBINATION_MODE_ATTRIBUTE, SELF_COMBINATION_MERGE, SELF_COMBINATION_MODE_ATTRIBUTE, SELF_COMBINATION_OVERRIDE, SELF_COMBINATION_REMOVE -
Constructor Summary
Constructors -
Method Summary
Modifier and TypeMethodDescriptionMerges one DOM into another, given a specific algorithm and possible override points for that algorithm.doRead(InputStream input, XmlService.InputLocationBuilder locationBuilder) doRead(Reader reader, XmlService.InputLocationBuilder locationBuilder) doRead(XMLStreamReader parser, XmlService.InputLocationBuilder locationBuilder) voidMethods inherited from class org.apache.maven.api.xml.XmlService
merge, merge, newXMLInputFactory, read, read, read, read, read, write
-
Constructor Details
-
DefaultXmlService
public DefaultXmlService()
-
-
Method Details
-
doRead
@Nonnull public XmlNode doRead(InputStream input, @Nullable XmlService.InputLocationBuilder locationBuilder) throws XMLStreamException - Specified by:
doReadin classXmlService- Throws:
XMLStreamException
-
doRead
@Nonnull public XmlNode doRead(Reader reader, @Nullable XmlService.InputLocationBuilder locationBuilder) throws XMLStreamException - Specified by:
doReadin classXmlService- Throws:
XMLStreamException
-
doRead
@Nonnull public XmlNode doRead(XMLStreamReader parser, @Nullable XmlService.InputLocationBuilder locationBuilder) throws XMLStreamException - Specified by:
doReadin classXmlService- Throws:
XMLStreamException
-
doWrite
- Specified by:
doWritein classXmlService- Throws:
IOException
-
doMerge
Merges one DOM into another, given a specific algorithm and possible override points for that algorithm.The algorithm is as follows:
- if the recessive DOM is null, there is nothing to do... return.
- Determine whether the dominant node will suppress the recessive one (flag=mergeSelf).
- retrieve the 'combine.self' attribute on the dominant node, and try to match against 'override'... if it matches 'override', then set mergeSelf == false...the dominant node suppresses the recessive one completely.
- otherwise, use the default value for mergeSelf, which is true...this is the same as specifying 'combine.self' == 'merge' as an attribute of the dominant root node.
- If mergeSelf == true
- Determine whether children from the recessive DOM will be merged or appended to the dominant DOM as
siblings (flag=mergeChildren).
- if childMergeOverride is set (non-null), use that value (true/false)
- retrieve the 'combine.children' attribute on the dominant node, and try to match against 'append'...
- if it matches 'append', then set mergeChildren == false...the recessive children will be appended as siblings of the dominant children.
- otherwise, use the default value for mergeChildren, which is true...this is the same as specifying 'combine.children' == 'merge' as an attribute on the dominant root node.
- Iterate through the recessive children, and:
- if mergeChildren == true and there is a corresponding dominant child (matched by element name), merge the two.
- otherwise, add the recessive child as a new child on the dominant root node.
- Determine whether children from the recessive DOM will be merged or appended to the dominant DOM as
siblings (flag=mergeChildren).
- Specified by:
doMergein classXmlService
-