All Downloads are FREE. Search and download functionalities are using the official Maven repository.

org.eclipse.webdav.dom.PropFind Maven / Gradle / Ivy

Go to download

We build this plugin because eclipse no longer distributes it and Guvnor tools needs it.

There is a newer version: 7.48.0.Final
Show newest version
package org.eclipse.webdav.dom;

import org.eclipse.webdav.Policy;
import org.w3c.dom.Document;
import org.w3c.dom.Element;

/**
 * An element editor for the WebDAV propfind element. See RFC2518
 * section 12.14 for the element's definition.
 * 

* Note: This class/interface is part of an interim API that is still under * development and expected to change significantly before reaching stability. * It is being made available at this early stage to solicit feedback from pioneering * adopters on the understanding that any code that uses this API will almost * certainly be broken (repeatedly) as the API evolves. *

* * @see Prop */ public class PropFind extends ElementEditor { /** * An ordered collection of the element names of the propfind * element's children. */ protected static final String[] childNames = new String[] {"allprop", "propname", "prop"}; //$NON-NLS-1$ //$NON-NLS-2$ //$NON-NLS-3$ /** * Creates a new editor on the given WebDAV propfind element. The * element is assumed to be well formed. * * @param root a propfind element * @throws MalformedElementException if there is reason to * believe that the element is not well formed */ public PropFind(Element root) throws MalformedElementException { super(root, "propfind"); //$NON-NLS-1$ } /** * Creates a new WebDAV propfind element and sets it as the root of the * given document. Returns an editor on the new propfind element. The * document must not be null, and must not already have a * root element. * * @param document the document that will become the root of a new * propfind element * @return an element editor on a propfind element */ public static PropFind create(Document document) { Assert.isNotNull(document); Assert.isTrue(document.getDocumentElement() == null); Element element = create(document, "propfind"); //$NON-NLS-1$ try { return new PropFind(element); } catch (MalformedElementException e) { Assert.isTrue(false, Policy.bind("assert.internalError")); //$NON-NLS-1$ return null; } } /** * Returns this propfind's prop. * * @return this propfind's prop * @throws MalformedElementException if there is reason to believe that * this editor's underlying element is not well formed, or if * this propfind is not in the "prop" form */ public Prop getProp() throws MalformedElementException { Element prop = getFirstChild(root, "prop"); //$NON-NLS-1$ ensureNotNull(Policy.bind("ensure.missingPropElmt"), prop); //$NON-NLS-1$ return new Prop(prop); } /** * Returns true iff this propfind is in the "all prop" * form. * * @return a boolean indicating whether this propfind is in the "all * prop" form * @throws MalformedElementException if there is reason to believe that * this editor's underlying element is not well formed */ public boolean isAllProp() throws MalformedElementException { Element child = getFirstChild(root, childNames); ensureNotNull(Policy.bind("ensure.missingAllpropOrPropnameOrPropElmt"), child); //$NON-NLS-1$ boolean isAllProp = isDAVElement(child, "allprop"); //$NON-NLS-1$ child = getNextSibling(child, childNames); ensureNull(Policy.bind("ensure.conflictingAllpropOrPropnameOrPropElmt"), child); //$NON-NLS-1$ return isAllProp; } /** * Returns true iff this propfind is in the "prop" form. * * @return a boolean indicating whether this propfind is in the "prop" * form * @throws MalformedElementException if there is reason to believe that * this editor's underlying element is not well formed */ public boolean isProp() throws MalformedElementException { Element child = getFirstChild(root, childNames); ensureNotNull(Policy.bind("ensure.missingAllpropOrPropnameOrPropElmt"), child); //$NON-NLS-1$ boolean isProp = isDAVElement(child, "prop"); //$NON-NLS-1$ child = getNextSibling(child, childNames); ensureNull(Policy.bind("ensure.conflictingAllpropOrPropnameOrPropElmt"), child); //$NON-NLS-1$ return isProp; } /** * Returns true iff this propfind is in the "prop name" * form. * * @return a boolean indicating whether this propfind is in the * "propname" form * @throws MalformedElementException if there is reason to believe that * this editor's underlying element is not well formed */ public boolean isPropName() throws MalformedElementException { Element child = getFirstChild(root, childNames); ensureNotNull(Policy.bind("ensure.missingAllpropOrPropnameOrPropElmt"), child); //$NON-NLS-1$ boolean isPropName = isDAVElement(child, "propname"); //$NON-NLS-1$ child = getNextSibling(child, childNames); ensureNull(Policy.bind("ensure.conflictingAllpropOrPropnameOrPropElmt"), child); //$NON-NLS-1$ return isPropName; } /** * Sets whether this propfind is in the "all prop" form. * * @param isAllProp boolean indicating whether this propfind will be in the * "all prop" form */ public void setIsAllProp(boolean isAllProp) { Element child = getFirstChild(root, childNames); boolean isAlreadyAllProp = isDAVElement(child, "allprop"); //$NON-NLS-1$ if (isAllProp) { if (!isAlreadyAllProp) { if (child != null) root.removeChild(child); appendChild(root, "allprop"); //$NON-NLS-1$ } } else if (isAlreadyAllProp) root.removeChild(child); } /** * Sets whether this propfind is in the "prop name" form. * * @param isPropName boolean indicating whether this propfind will be in the * "prop name" form */ public void setIsPropName(boolean isPropName) { Element child = getFirstChild(root, childNames); boolean isAlreadyPropName = isDAVElement(child, "propname"); //$NON-NLS-1$ if (isPropName) { if (!isAlreadyPropName) { if (child != null) root.removeChild(child); appendChild(root, "propname"); //$NON-NLS-1$ } } else if (isAlreadyPropName) root.removeChild(child); } /** * Creates and sets a new prop on this propfind and returns an editor on * it. This propfind must not already be in the "all prop" or "prop * name" form. * * @return an editor on a new prop element */ public Prop setProp() { Assert.isTrue(getFirstChild(root, new String[] {"allprop", "propname"}) == null); //$NON-NLS-1$ //$NON-NLS-2$ Element prop = setChild(root, "prop", new String[] {"prop"}, true); //$NON-NLS-1$ //$NON-NLS-2$ try { return new Prop(prop); } catch (MalformedElementException e) { Assert.isTrue(false, Policy.bind("assert.internalError")); //$NON-NLS-1$ return null; // Never reached. } } }




© 2015 - 2024 Weber Informatics LLC | Privacy Policy