org.apache.jackrabbit.webdav.xml
Class DomUtil

java.lang.Object
  extended by org.apache.jackrabbit.webdav.xml.DomUtil

public class DomUtil
extends Object

DomUtil provides some common utility methods related to w3c-DOM.


Constructor Summary
DomUtil()
           
 
Method Summary
static Element addChildElement(Element parent, String localName, Namespace namespace)
          Add a new child element with the given local name and namespace to the specified parent.
static Element addChildElement(Element parent, String localName, Namespace namespace, String text)
          Add a new child element with the given local name and namespace to the specified parent.
static Element addChildElement(Node parent, String localName, Namespace namespace)
          Add a new child element with the given local name and namespace to the specified parent.
static Document createDocument()
          Creates and returns a new empty DOM document.
static Element createElement(Document factory, String localName, Namespace namespace)
          Create a new DOM element with the specified local name and namespace.
static Element createElement(Document factory, String localName, Namespace namespace, String text)
          Create a new DOM element with the specified local name and namespace and add the specified text as Text node to it.
static Element depthToXml(boolean isDeep, Document factory)
          Returns the Xml representation of a boolean isDeep, where false presents a depth value of '0', true a depth value of 'infinity'.
static Element depthToXml(String depth, Document factory)
          Returns the Xml representation of a depth String.
static String getAttribute(Element parent, String localName, Namespace namespace)
          Returns the value of the named attribute of the current element.
static Element getChildElement(Node parent, String childLocalName, Namespace childNamespace)
          Returns the first child element that matches the given local name and namespace.
static ElementIterator getChildren(Element parent)
          Return an ElementIterator over all child elements.
static ElementIterator getChildren(Element parent, String childLocalName, Namespace childNamespace)
          Returns a ElementIterator containing all child elements of the given parent node that match the given local name and namespace.
static String getChildText(Element parent, String childLocalName, Namespace childNamespace)
          Calls getText(Element) on the first child element that matches the given local name and namespace.
static String getChildTextTrim(Element parent, String childLocalName, Namespace childNamespace)
          Calls getTextTrim(Element) on the first child element that matches the given local name and namespace.
static List<Node> getContent(Node parent)
          Return a list of all child nodes that are either Element, Text or CDATA.
static String getExpandedName(String localName, Namespace namespace)
          Returns a string representation of the name of a DOM node consisting of "{" + namespace uri + "}" + localName.
static Element getFirstChildElement(Node parent)
          Return the first child element
static Namespace getNamespace(Element element)
          Build a Namespace from the prefix and uri retrieved from the given element.
static Attr[] getNamespaceAttributes(Element element)
          Returns the namespace attributes of the given element.
static String getPrefixedName(String localName, Namespace namespace)
          Return the qualified name of a DOM node consisting of namespace prefix + ":" + local name.
static String getQualifiedName(String localName, Namespace namespace)
          Deprecated. As of 2.0. Please use getExpandedName(String, Namespace) instead. This method was named according to usage of 'qualified name' in JSR 170 that conflicts with the terminology used in XMLNS. As of JCR 2.0 the String consisting of "{" + namespace uri + "}" + localName is called Expanded Name.
static String getText(Element element)
          Concatenates the values of all child nodes of type 'Text' or 'CDATA'/
static String getText(Element element, String defaultValue)
          Same as getText(Element) except that 'defaultValue' is returned instead of null, if the element does not contain any text.
static String getTextTrim(Element element)
          Removes leading and trailing whitespace after calling getText(Element).
static boolean hasChildElement(Node parent, String childLocalName, Namespace childNamespace)
          Returns true if the given parent node has a child element that matches the specified local name and namespace.
static boolean hasContent(Node parent)
          Return true if the given parent contains any child that is either an Element, Text or CDATA.
static Element hrefToXml(String href, Document factory)
          Builds a 'DAV:href' Xml element from the given href.
static boolean matches(Node node, String requiredLocalName, Namespace requiredNamespace)
          Returns true if the specified node matches the required names.
static Document parseDocument(InputStream stream)
          Parses the given input stream and returns the resulting DOM document.
static void setAttribute(Element element, String attrLocalName, Namespace attrNamespace, String attrValue)
          Add an attribute node to the given element.
static void setNamespaceAttribute(Element element, String prefix, String uri)
          Adds a namespace attribute on the given element.
static void setText(Element element, String text)
          Create a new text node and add it as child to the given element.
static Element timeoutToXml(long timeout, Document factory)
          Converts the given timeout (long value defining the number of milli- second until timeout is reached) to its Xml representation as defined by RTF 2518.
 
Methods inherited from class java.lang.Object
clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait
 

Constructor Detail

DomUtil

public DomUtil()
Method Detail

createDocument

public static Document createDocument()
                               throws ParserConfigurationException
Creates and returns a new empty DOM document.

Returns:
new DOM document
Throws:
ParserConfigurationException - if the document can not be created

parseDocument

public static Document parseDocument(InputStream stream)
                              throws ParserConfigurationException,
                                     SAXException,
                                     IOException
Parses the given input stream and returns the resulting DOM document.

Parameters:
stream - XML input stream
Returns:
parsed DOM document
Throws:
ParserConfigurationException - if the document can not be created
SAXException - if the document can not be parsed
IOException - if the input stream can not be read

getAttribute

public static String getAttribute(Element parent,
                                  String localName,
                                  Namespace namespace)
Returns the value of the named attribute of the current element.

Parameters:
parent -
localName - attribute local name or 'nodeName' if no namespace is specified.
namespace - or null
Returns:
attribute value, or null if not found

getNamespaceAttributes

public static Attr[] getNamespaceAttributes(Element element)
Returns the namespace attributes of the given element.

Parameters:
element -
Returns:
the namespace attributes.

getText

public static String getText(Element element)
Concatenates the values of all child nodes of type 'Text' or 'CDATA'/

Parameters:
element -
Returns:
String representing the value of all Text and CDATA child nodes or null if the length of the resulting String is 0.
See Also:
isText(Node)

getText

public static String getText(Element element,
                             String defaultValue)
Same as getText(Element) except that 'defaultValue' is returned instead of null, if the element does not contain any text.

Parameters:
element -
defaultValue -
Returns:
the text contained in the specified element or defaultValue if the element does not contain any text.

getTextTrim

public static String getTextTrim(Element element)
Removes leading and trailing whitespace after calling getText(Element).

Parameters:
element -
Returns:
Trimmed text or null

getChildText

public static String getChildText(Element parent,
                                  String childLocalName,
                                  Namespace childNamespace)
Calls getText(Element) on the first child element that matches the given local name and namespace.

Parameters:
parent -
childLocalName -
childNamespace -
Returns:
text contained in the first child that matches the given local name and namespace or null.
See Also:
getText(Element)

getChildTextTrim

public static String getChildTextTrim(Element parent,
                                      String childLocalName,
                                      Namespace childNamespace)
Calls getTextTrim(Element) on the first child element that matches the given local name and namespace.

Parameters:
parent -
childLocalName -
childNamespace -
Returns:
text contained in the first child that matches the given local name and namespace or null. Note, that leading and trailing whitespace is removed from the text.
See Also:
getTextTrim(Element)

hasChildElement

public static boolean hasChildElement(Node parent,
                                      String childLocalName,
                                      Namespace childNamespace)
Returns true if the given parent node has a child element that matches the specified local name and namespace.

Parameters:
parent -
childLocalName -
childNamespace -
Returns:
returns true if a child element exists that matches the specified local name and namespace.

getChildElement

public static Element getChildElement(Node parent,
                                      String childLocalName,
                                      Namespace childNamespace)
Returns the first child element that matches the given local name and namespace. If no child element is present or no child element matches, null is returned.

Parameters:
parent -
childLocalName -
childNamespace -
Returns:
first child element matching the specified names or null.

getChildren

public static ElementIterator getChildren(Element parent,
                                          String childLocalName,
                                          Namespace childNamespace)
Returns a ElementIterator containing all child elements of the given parent node that match the given local name and namespace. If the namespace is null only the localName is compared.

Parameters:
parent - the node the children elements should be retrieved from
childLocalName -
childNamespace -
Returns:
an ElementIterator giving access to all child elements that match the specified localName and namespace.

getChildren

public static ElementIterator getChildren(Element parent)
Return an ElementIterator over all child elements.

Parameters:
parent -
Returns:
See Also:
for a method that only retrieves child elements that match a specific local name and namespace.

getFirstChildElement

public static Element getFirstChildElement(Node parent)
Return the first child element

Returns:
the first child element or null if the given node has no child elements.

hasContent

public static boolean hasContent(Node parent)
Return true if the given parent contains any child that is either an Element, Text or CDATA.

Parameters:
parent -
Returns:
true if the given parent contains any child that is either an Element, Text or CDATA.

getContent

public static List<Node> getContent(Node parent)
Return a list of all child nodes that are either Element, Text or CDATA.

Parameters:
parent -
Returns:
a list of all child nodes that are either Element, Text or CDATA.

getNamespace

public static Namespace getNamespace(Element element)
Build a Namespace from the prefix and uri retrieved from the given element.

Returns:
the Namespace of the given element.

matches

public static boolean matches(Node node,
                              String requiredLocalName,
                              Namespace requiredNamespace)
Returns true if the specified node matches the required names. Note, that that tests return true if the required name is null.

Parameters:
node -
requiredLocalName -
requiredNamespace -
Returns:
true if local name and namespace match the corresponding properties of the given DOM node.

createElement

public static Element createElement(Document factory,
                                    String localName,
                                    Namespace namespace)
Create a new DOM element with the specified local name and namespace.

Parameters:
factory -
localName -
namespace -
Returns:
a new DOM element
See Also:
Document.createElement(String), Document.createElementNS(String, String)

createElement

public static Element createElement(Document factory,
                                    String localName,
                                    Namespace namespace,
                                    String text)
Create a new DOM element with the specified local name and namespace and add the specified text as Text node to it.

Parameters:
factory -
localName -
namespace -
text -
Returns:
a new DOM element
See Also:
Document.createElement(String), Document.createElementNS(String, String), Document.createTextNode(String), Node.appendChild(org.w3c.dom.Node)

addChildElement

public static Element addChildElement(Element parent,
                                      String localName,
                                      Namespace namespace)
Add a new child element with the given local name and namespace to the specified parent.

Parameters:
parent -
localName -
namespace -
Returns:
the new element that was attached to the given parent.

addChildElement

public static Element addChildElement(Node parent,
                                      String localName,
                                      Namespace namespace)
Add a new child element with the given local name and namespace to the specified parent.

Parameters:
parent -
localName -
namespace -
Returns:
the new element that was attached to the given parent.

addChildElement

public static Element addChildElement(Element parent,
                                      String localName,
                                      Namespace namespace,
                                      String text)
Add a new child element with the given local name and namespace to the specified parent. The specified text is added as Text node to the created child element.

Parameters:
parent -
localName -
namespace -
text -
Returns:
child element that was added to the specified parent
See Also:
Document.createElement(String), Document.createElementNS(String, String), Document.createTextNode(String), Node.appendChild(org.w3c.dom.Node)

setText

public static void setText(Element element,
                           String text)
Create a new text node and add it as child to the given element.

Parameters:
element -
text -

setAttribute

public static void setAttribute(Element element,
                                String attrLocalName,
                                Namespace attrNamespace,
                                String attrValue)
Add an attribute node to the given element.

Parameters:
element -
attrLocalName -
attrNamespace -
attrValue -

setNamespaceAttribute

public static void setNamespaceAttribute(Element element,
                                         String prefix,
                                         String uri)
Adds a namespace attribute on the given element.

Parameters:
element -
prefix -
uri -

timeoutToXml

public static Element timeoutToXml(long timeout,
                                   Document factory)
Converts the given timeout (long value defining the number of milli- second until timeout is reached) to its Xml representation as defined by RTF 2518.
Note, that DavConstants.INFINITE_TIMEOUT is not represented by the String 'Infinite' defined by RFC 2518, due to a known issue with Microsoft Office that opens the document "read only" and never unlocks the resource if the timeout is missing or 'Infinite'.

Parameters:
timeout - number of milli-seconds until timeout is reached.
Returns:
'timeout' Xml element

depthToXml

public static Element depthToXml(boolean isDeep,
                                 Document factory)
Returns the Xml representation of a boolean isDeep, where false presents a depth value of '0', true a depth value of 'infinity'.

Parameters:
isDeep -
Returns:
Xml representation

depthToXml

public static Element depthToXml(String depth,
                                 Document factory)
Returns the Xml representation of a depth String. Webdav defines the following valid values for depths: 0, 1, infinity

Parameters:
depth -
Returns:
'deep' XML element

hrefToXml

public static Element hrefToXml(String href,
                                Document factory)
Builds a 'DAV:href' Xml element from the given href. Please note, that the path present in the given String should be properly escaped in order to prevent problems with WebDAV clients.

Parameters:
href - String representing the text of the 'href' Xml element
factory - the Document used as factory
Returns:
Xml representation of a 'href' according to RFC 2518.

getQualifiedName

public static String getQualifiedName(String localName,
                                      Namespace namespace)
Deprecated. As of 2.0. Please use getExpandedName(String, Namespace) instead. This method was named according to usage of 'qualified name' in JSR 170 that conflicts with the terminology used in XMLNS. As of JCR 2.0 the String consisting of "{" + namespace uri + "}" + localName is called Expanded Name.

Same as getExpandedName(String, Namespace).

Parameters:
localName -
namespace -
Returns:
the expanded name of a DOM node consisting of "{" + namespace uri + "}" + localName. If the specified namespace is null or represents the empty namespace, the local name is returned.

getExpandedName

public static String getExpandedName(String localName,
                                     Namespace namespace)
Returns a string representation of the name of a DOM node consisting of "{" + namespace uri + "}" + localName. If the specified namespace is null or represents the empty namespace, the local name is returned.

Parameters:
localName -
namespace -
Returns:
String representation of the name of a DOM node consisting of "{" + namespace uri + "}" + localName. If the specified namespace is null or represents the empty namespace, the local name is returned.
Since:
2.0 Replaces the deprecated method getQualifiedName(String, Namespace).

getPrefixedName

public static String getPrefixedName(String localName,
                                     Namespace namespace)
Return the qualified name of a DOM node consisting of namespace prefix + ":" + local name. If the specified namespace is null or contains an empty prefix, the local name is returned.
NOTE, that this is the value to be used for the 'qualified Name' parameter expected with the namespace sensitive factory methods.

Parameters:
localName -
namespace -
Returns:
qualified name consisting of prefix, ':' and local name.
See Also:
Document.createAttributeNS(String, String), Document.createElementNS(String, String)


Copyright © 2004-2010 The Apache Software Foundation. All Rights Reserved.