Class XmlModuleDescriptorUpdater.UpdaterHandler
- java.lang.Object
-
- org.xml.sax.helpers.DefaultHandler
-
- org.apache.ivy.plugins.parser.xml.XmlModuleDescriptorUpdater.UpdaterHandler
-
- All Implemented Interfaces:
org.xml.sax.ContentHandler,org.xml.sax.DTDHandler,org.xml.sax.EntityResolver,org.xml.sax.ErrorHandler,org.xml.sax.ext.LexicalHandler
- Enclosing class:
- XmlModuleDescriptorUpdater
private static class XmlModuleDescriptorUpdater.UpdaterHandler extends org.xml.sax.helpers.DefaultHandler implements org.xml.sax.ext.LexicalHandler
-
-
Field Summary
Fields Modifier and Type Field Description private java.util.Stack<XmlModuleDescriptorUpdater.ExtendedBuffer>buffersprivate java.util.Stack<XmlModuleDescriptorUpdater.ExtendedBuffer>confAttributeBuffersprivate static intCONFIGURATIONS_POSITIONelement position of "configurations" inside "ivy-module"private java.lang.BooleanconfMappingOverrideprivate java.util.List<java.lang.String>confsprivate java.util.Stack<java.lang.String>contextprivate java.lang.StringBuildercurrentIndentprivate java.lang.StringdefaultConfprivate java.lang.StringdefaultConfMappingprivate static intDEPENDENCIES_POSITIONelement position of "dependencies" inside "ivy-module"private booleangenerateRevConstraintprivate booleanhasDescriptionprivate booleanindentingprivate java.util.List<java.lang.String>indentLevelsprivate static java.util.Collection<java.lang.String>INFO_ELEMENTSelements that may appear inside of ivy-module/infoprivate booleaninHeaderprivate java.lang.StringjustOpenprivate booleanmergedConfigurationsprivate booleanmergedDependenciesprivate static java.util.List<java.lang.String>MODULE_ELEMENTSelements that may appear inside ivy-module, in expected orderprivate java.lang.StringnewDefaultConfprivate Namespacensprivate UpdateOptionsoptionsprivate java.lang.Stringorganisationprivate java.io.PrintWriteroutprivate java.util.Datepubdateprivate java.net.URLrelativePathCtxprivate booleanreplaceIncludeprivate java.util.Map<ModuleRevisionId,java.lang.String>resolvedBranchesprivate java.util.Map<ModuleRevisionId,java.lang.String>resolvedRevisionsprivate java.lang.Stringrevisionprivate ParserSettingssettingsprivate java.lang.Stringstatusprivate static java.util.Collection<java.lang.String>STD_ATTSstandard attributes of ivy-module/info
-
Constructor Summary
Constructors Constructor Description UpdaterHandler(java.net.URL relativePathCtx, java.io.PrintWriter out, UpdateOptions options)
-
Method Summary
All Methods Instance Methods Concrete Methods Modifier and Type Method Description voidcharacters(char[] ch, int start, int length)private java.util.Map<ModuleRevisionId,java.util.List<InheritableItem>>collateInheritedItems(ModuleDescriptor merged, InheritableItem[] items)Collect the given list of inherited descriptor items into lists keyed by parent Id.voidcomment(char[] ch, int start, int length)voidendCDATA()voidendDocument()voidendDTD()voidendElement(java.lang.String uri, java.lang.String localName, java.lang.String qName)voidendEntity(java.lang.String name)private voidendIndent()record the current indent level for future elements that appear at the same depthvoiderror(org.xml.sax.SAXParseException e)voidfatalError(org.xml.sax.SAXParseException e)private voidfillIndents(int level)Guarantee that indent levels have been calculated up to and including the given depth (starting at 0).private voidflushAllMergedElements()private voidflushMergedElementsBefore(java.lang.String moduleElement)If publishing in merge mode, guarantee that any merged elements appearing beforemoduleElementhave been written.private java.lang.StringgetContext()private java.lang.StringgetIndent()get the whitespace that should precede new elements at the current depth in the documentprivate java.io.PrintWritergetWriter()voidignorableWhitespace(char[] ch, int start, int length)private voidincludeStarted(org.xml.sax.Attributes attributes)private voidinfoStarted(org.xml.sax.Attributes attributes)voidprocessingInstruction(java.lang.String target, java.lang.String data)private java.lang.StringremoveConfigurationsFromList(java.lang.String list)private java.lang.StringremoveConfigurationsFromMapping(java.lang.String mapping)private voidsetIndent(int level, java.lang.String indent)Set the indent for the given depth.voidstartCDATA()voidstartDTD(java.lang.String name, java.lang.String publicId, java.lang.String systemId)voidstartElement(java.lang.String uri, java.lang.String localName, java.lang.String qName, org.xml.sax.Attributes attributes)private voidstartElementInConfigurationsConf(java.lang.String qName, org.xml.sax.Attributes attributes)private voidstartElementInDependency(org.xml.sax.Attributes attributes)private voidstartElementWithConfAttributes(java.lang.String qName, org.xml.sax.Attributes attributes)voidstartEntity(java.lang.String name)private voidstartExtends(org.xml.sax.Attributes attributes)private voidstartPublications(org.xml.sax.Attributes attributes)private java.lang.Stringsubstitute(ParserSettings ivy, java.lang.String value)voidwarning(org.xml.sax.SAXParseException e)private voidwrite(java.lang.String content)private voidwriteInheritanceComment(java.lang.String itemDescription, java.lang.Object parentInfo)private voidwriteInheritedConfigurations(ModuleDescriptor merged)private voidwriteInheritedDependencies(ModuleDescriptor merged)private voidwriteInheritedDescription(ModuleDescriptor merged)If no info/description element has yet been written, write the description inherited from the parent descriptor, if any.private voidwriteInheritedItems(ModuleDescriptor merged, InheritableItem[] items, XmlModuleDescriptorUpdater.ItemPrinter printer, java.lang.String itemName, boolean includeContainer)Write XML elements that do not appear in the source descriptor, but have been copied in from a parent module descriptor via <extends> declaration.
-
-
-
Field Detail
-
STD_ATTS
private static final java.util.Collection<java.lang.String> STD_ATTS
standard attributes of ivy-module/info
-
MODULE_ELEMENTS
private static final java.util.List<java.lang.String> MODULE_ELEMENTS
elements that may appear inside ivy-module, in expected order
-
CONFIGURATIONS_POSITION
private static final int CONFIGURATIONS_POSITION
element position of "configurations" inside "ivy-module"
-
DEPENDENCIES_POSITION
private static final int DEPENDENCIES_POSITION
element position of "dependencies" inside "ivy-module"
-
INFO_ELEMENTS
private static final java.util.Collection<java.lang.String> INFO_ELEMENTS
elements that may appear inside of ivy-module/info
-
settings
private final ParserSettings settings
-
out
private final java.io.PrintWriter out
-
resolvedRevisions
private final java.util.Map<ModuleRevisionId,java.lang.String> resolvedRevisions
-
resolvedBranches
private final java.util.Map<ModuleRevisionId,java.lang.String> resolvedBranches
-
status
private final java.lang.String status
-
revision
private final java.lang.String revision
-
pubdate
private final java.util.Date pubdate
-
ns
private final Namespace ns
-
replaceInclude
private final boolean replaceInclude
-
generateRevConstraint
private final boolean generateRevConstraint
-
inHeader
private boolean inHeader
-
confs
private final java.util.List<java.lang.String> confs
-
relativePathCtx
private final java.net.URL relativePathCtx
-
options
private final UpdateOptions options
-
organisation
private java.lang.String organisation
-
defaultConf
private java.lang.String defaultConf
-
defaultConfMapping
private java.lang.String defaultConfMapping
-
confMappingOverride
private java.lang.Boolean confMappingOverride
-
justOpen
private java.lang.String justOpen
-
indenting
private boolean indenting
-
currentIndent
private java.lang.StringBuilder currentIndent
-
indentLevels
private java.util.List<java.lang.String> indentLevels
-
hasDescription
private boolean hasDescription
-
mergedConfigurations
private boolean mergedConfigurations
-
mergedDependencies
private boolean mergedDependencies
-
newDefaultConf
private java.lang.String newDefaultConf
-
context
private java.util.Stack<java.lang.String> context
-
buffers
private java.util.Stack<XmlModuleDescriptorUpdater.ExtendedBuffer> buffers
-
confAttributeBuffers
private java.util.Stack<XmlModuleDescriptorUpdater.ExtendedBuffer> confAttributeBuffers
-
-
Constructor Detail
-
UpdaterHandler
public UpdaterHandler(java.net.URL relativePathCtx, java.io.PrintWriter out, UpdateOptions options)
-
-
Method Detail
-
startElement
public void startElement(java.lang.String uri, java.lang.String localName, java.lang.String qName, org.xml.sax.Attributes attributes) throws org.xml.sax.SAXException- Specified by:
startElementin interfaceorg.xml.sax.ContentHandler- Overrides:
startElementin classorg.xml.sax.helpers.DefaultHandler- Throws:
org.xml.sax.SAXException
-
startExtends
private void startExtends(org.xml.sax.Attributes attributes)
-
startElementInConfigurationsConf
private void startElementInConfigurationsConf(java.lang.String qName, org.xml.sax.Attributes attributes)
-
startElementWithConfAttributes
private void startElementWithConfAttributes(java.lang.String qName, org.xml.sax.Attributes attributes)
-
startPublications
private void startPublications(org.xml.sax.Attributes attributes)
-
startElementInDependency
private void startElementInDependency(org.xml.sax.Attributes attributes)
-
includeStarted
private void includeStarted(org.xml.sax.Attributes attributes) throws org.xml.sax.SAXException- Throws:
org.xml.sax.SAXException
-
infoStarted
private void infoStarted(org.xml.sax.Attributes attributes)
-
write
private void write(java.lang.String content)
-
getWriter
private java.io.PrintWriter getWriter()
-
getContext
private java.lang.String getContext()
-
substitute
private java.lang.String substitute(ParserSettings ivy, java.lang.String value)
-
removeConfigurationsFromMapping
private java.lang.String removeConfigurationsFromMapping(java.lang.String mapping)
-
removeConfigurationsFromList
private java.lang.String removeConfigurationsFromList(java.lang.String list)
-
ignorableWhitespace
public void ignorableWhitespace(char[] ch, int start, int length) throws org.xml.sax.SAXException- Specified by:
ignorableWhitespacein interfaceorg.xml.sax.ContentHandler- Overrides:
ignorableWhitespacein classorg.xml.sax.helpers.DefaultHandler- Throws:
org.xml.sax.SAXException
-
characters
public void characters(char[] ch, int start, int length) throws org.xml.sax.SAXException- Specified by:
charactersin interfaceorg.xml.sax.ContentHandler- Overrides:
charactersin classorg.xml.sax.helpers.DefaultHandler- Throws:
org.xml.sax.SAXException
-
endIndent
private void endIndent()
record the current indent level for future elements that appear at the same depth
-
setIndent
private void setIndent(int level, java.lang.String indent)Set the indent for the given depth. Indents less than the provided depth will be calculated automatically, if they have not already been defined.
-
fillIndents
private void fillIndents(int level)
Guarantee that indent levels have been calculated up to and including the given depth (starting at 0).
-
getIndent
private java.lang.String getIndent()
get the whitespace that should precede new elements at the current depth in the document
-
writeInheritedItems
private void writeInheritedItems(ModuleDescriptor merged, InheritableItem[] items, XmlModuleDescriptorUpdater.ItemPrinter printer, java.lang.String itemName, boolean includeContainer)
Write XML elements that do not appear in the source descriptor, but have been copied in from a parent module descriptor via <extends> declaration.- Parameters:
merged- child descriptor containing the merged dataitems- the list of inherited items to printprinter- a printer that knows how to write the given type of itemitemName- the name of the container element, e.g. "configurations"includeContainer- if true, include an enclosing element nameditemName. Otherwise just write the inherited items inline, with a comment indicating where they came from.
-
writeInheritanceComment
private void writeInheritanceComment(java.lang.String itemDescription, java.lang.Object parentInfo)
-
collateInheritedItems
private java.util.Map<ModuleRevisionId,java.util.List<InheritableItem>> collateInheritedItems(ModuleDescriptor merged, InheritableItem[] items)
Collect the given list of inherited descriptor items into lists keyed by parent Id. Thus all of the items inherited from parent A can be written together, then all of the items from parent B, and so on.- Parameters:
merged- the merged child descriptoritems- the inherited items to collate- Returns:
- maps parent ModuleRevisionId to a List of InheritedItems imported from that parent
-
writeInheritedDescription
private void writeInheritedDescription(ModuleDescriptor merged)
If no info/description element has yet been written, write the description inherited from the parent descriptor, if any. Calling this method more than once has no affect.
-
writeInheritedConfigurations
private void writeInheritedConfigurations(ModuleDescriptor merged)
-
writeInheritedDependencies
private void writeInheritedDependencies(ModuleDescriptor merged)
-
flushMergedElementsBefore
private void flushMergedElementsBefore(java.lang.String moduleElement)
If publishing in merge mode, guarantee that any merged elements appearing before
moduleElementhave been written. This method should be called before we write the start tag ofmoduleElement. This covers cases where merged elements like "configurations" and "dependencies" appear in the parent descriptor, but are completely missing in the child descriptor.For example, if "moduleElement" is "dependencies", guarantees that "configurations" has been written. If
moduleElementisnull, then all missing merged elements will be flushed.- Parameters:
moduleElement- a descriptor element name, for example "configurations" or "info"
-
flushAllMergedElements
private void flushAllMergedElements()
-
endElement
public void endElement(java.lang.String uri, java.lang.String localName, java.lang.String qName) throws org.xml.sax.SAXException- Specified by:
endElementin interfaceorg.xml.sax.ContentHandler- Overrides:
endElementin classorg.xml.sax.helpers.DefaultHandler- Throws:
org.xml.sax.SAXException
-
endDocument
public void endDocument() throws org.xml.sax.SAXException- Specified by:
endDocumentin interfaceorg.xml.sax.ContentHandler- Overrides:
endDocumentin classorg.xml.sax.helpers.DefaultHandler- Throws:
org.xml.sax.SAXException
-
processingInstruction
public void processingInstruction(java.lang.String target, java.lang.String data) throws org.xml.sax.SAXException- Specified by:
processingInstructionin interfaceorg.xml.sax.ContentHandler- Overrides:
processingInstructionin classorg.xml.sax.helpers.DefaultHandler- Throws:
org.xml.sax.SAXException
-
warning
public void warning(org.xml.sax.SAXParseException e) throws org.xml.sax.SAXException- Specified by:
warningin interfaceorg.xml.sax.ErrorHandler- Overrides:
warningin classorg.xml.sax.helpers.DefaultHandler- Throws:
org.xml.sax.SAXException
-
error
public void error(org.xml.sax.SAXParseException e) throws org.xml.sax.SAXException- Specified by:
errorin interfaceorg.xml.sax.ErrorHandler- Overrides:
errorin classorg.xml.sax.helpers.DefaultHandler- Throws:
org.xml.sax.SAXException
-
fatalError
public void fatalError(org.xml.sax.SAXParseException e) throws org.xml.sax.SAXException- Specified by:
fatalErrorin interfaceorg.xml.sax.ErrorHandler- Overrides:
fatalErrorin classorg.xml.sax.helpers.DefaultHandler- Throws:
org.xml.sax.SAXException
-
endCDATA
public void endCDATA() throws org.xml.sax.SAXException- Specified by:
endCDATAin interfaceorg.xml.sax.ext.LexicalHandler- Throws:
org.xml.sax.SAXException
-
endDTD
public void endDTD() throws org.xml.sax.SAXException- Specified by:
endDTDin interfaceorg.xml.sax.ext.LexicalHandler- Throws:
org.xml.sax.SAXException
-
startCDATA
public void startCDATA() throws org.xml.sax.SAXException- Specified by:
startCDATAin interfaceorg.xml.sax.ext.LexicalHandler- Throws:
org.xml.sax.SAXException
-
comment
public void comment(char[] ch, int start, int length) throws org.xml.sax.SAXException- Specified by:
commentin interfaceorg.xml.sax.ext.LexicalHandler- Throws:
org.xml.sax.SAXException
-
endEntity
public void endEntity(java.lang.String name) throws org.xml.sax.SAXException- Specified by:
endEntityin interfaceorg.xml.sax.ext.LexicalHandler- Throws:
org.xml.sax.SAXException
-
startEntity
public void startEntity(java.lang.String name) throws org.xml.sax.SAXException- Specified by:
startEntityin interfaceorg.xml.sax.ext.LexicalHandler- Throws:
org.xml.sax.SAXException
-
startDTD
public void startDTD(java.lang.String name, java.lang.String publicId, java.lang.String systemId) throws org.xml.sax.SAXException- Specified by:
startDTDin interfaceorg.xml.sax.ext.LexicalHandler- Throws:
org.xml.sax.SAXException
-
-