Package org.apache.webdav.lib

Source Code of org.apache.webdav.lib.BaseProperty

/*
* $Header: /home/cvs/jakarta-slide/src/webdav/client/src/org/apache/webdav/lib/BaseProperty.java,v 1.2 2001/08/24 20:16:39 dirkv Exp $
* $Revision: 1.2 $
* $Date: 2001/08/24 20:16:39 $
*
* ====================================================================
*
* The Apache Software License, Version 1.1
*
* Copyright (c) 1999 The Apache Software Foundation.  All rights
* reserved.
*
* Redistribution and use in source and binary forms, with or without
* modification, are permitted provided that the following conditions
* are met:
*
* 1. Redistributions of source code must retain the above copyright
*    notice, this list of conditions and the following disclaimer.
*
* 2. Redistributions in binary form must reproduce the above copyright
*    notice, this list of conditions and the following disclaimer in
*    the documentation and/or other materials provided with the
*    distribution.
*
* 3. The end-user documentation included with the redistribution, if
*    any, must include the following acknowlegement:
*       "This product includes software developed by the
*        Apache Software Foundation (http://www.apache.org/)."
*    Alternately, this acknowlegement may appear in the software itself,
*    if and wherever such third-party acknowlegements normally appear.
*
* 4. The names "The Jakarta Project", "Tomcat", and "Apache Software
*    Foundation" must not be used to endorse or promote products derived
*    from this software without prior written permission. For written
*    permission, please contact apache@apache.org.
*
* 5. Products derived from this software may not be called "Apache"
*    nor may "Apache" appear in their names without prior written
*    permission of the Apache Group.
*
* THIS SOFTWARE IS PROVIDED ``AS IS'' AND ANY EXPRESSED OR IMPLIED
* WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES
* OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
* DISCLAIMED.  IN NO EVENT SHALL THE APACHE SOFTWARE FOUNDATION OR
* ITS CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
* SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
* LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF
* USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND
* ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY,
* OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT
* OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
* SUCH DAMAGE.
* ====================================================================
*
* This software consists of voluntary contributions made by many
* individuals on behalf of the Apache Software Foundation.  For more
* information on the Apache Software Foundation, please see
* <http://www.apache.org/>.
*
* [Additional notices, if required by prior licensing conditions]
*
*/

package org.apache.webdav.lib;

import java.io.StringWriter;

import org.w3c.dom.Element;

import org.apache.util.DOMUtils;
import org.apache.util.DOMWriter;

/**
* This interface models a DAV property.
*
* @author Remy Maucherat
* @version $Revision: 1.2 $
*/
public class BaseProperty implements Property {


    // ----------------------------------------------------------- Constructors


    /**
     * Default constructor for the property.
     */
    public BaseProperty(ResponseEntity response, Element element) {
        this.element = element;
        this.response = response;
    }


    // ----------------------------------------------------- Instance Variables


    /**
     * Associated response entity.
     */
    protected ResponseEntity response;


    /**
     * Associated node element.
     */
    protected Element element;


    // --------------------------------------------------------- Public Methods


    /**
     * This method returns the full name of the property.  Thus, for example,
     * calling this method on a property such as
     * <code>&lt;D:getlastmodified&gt;Tue, 05 Dec 2000
     * 05:25:02&lt;/D:getlastmodified&gt;</code> returns
     * <code>D:getlastmodified</code>.
     */
    public String getName() {
        return element.getTagName();
    }


    /**
     * This method returns the local name of the property.  Thus, for example,
     * calling this method on a property such as
     * <code>&lt;D:getlastmodified&gt;Tue, 05 Dec 2000
     * 05:25:02&lt;/D:getlastmodified&gt;</code> returns
     * <code>getlastmodified</code>.
     */
    public String getLocalName() {
        return DOMUtils.getElementLocalName(element);
    }


    /**
     * This method returns the namespace of the property.  Thus, for example,
     * calling this method on a property such as
     * <code>&lt;D:getlastmodified&gt;Tue, 05 Dec 2000
     * 05:25:02&lt;/D:getlastmodified&gt;</code> returns
     * <code>DAV:</code>.
     */
    public String getNamespaceURI() {
        return DOMUtils.getElementNamespaceURI(element);
    }


    /**
     * This method returns the property as a DOM Element.
     */
    public Element getElement() {
        return element;
    }


    /**
     * This method returns the namespace of the property.  Thus, for example,
     * calling this method on a property such as
     * <code>&lt;D:getlastmodified&gt;Tue, 05 Dec 2000
     * 05:25:02&lt;/D:getlastmodified&gt;</code> returns
     * <code>Tue, 05 Dec 2000 05:25:02</code>.
     */
    public String getPropertyAsString() {
        return DOMUtils.getTextValue(element);
    }


    /**
     * This method returns the status code associated with the property.
     */
    public int getStatusCode() {
        // A response can have multiple propstat elements each with
        // their own status, return the (mandatory) status before asking
        // the resoponse for its status
       
        //  <multistatus xmlns=\DAV:\>
        //    <response>
        //      <href>/slide/files/</href>
        //      <propstat>
        //        <prop><displayname>files</displayname></prop>
        //        <status>HTTP/1.1 200 OK</status>
        //      </propstat>
        //      <propstat>
        //        <prop><displayname>files</displayname></prop>
        //        <status>HTTP/1.1 200 OK</status>
        //      </propstat>
        //    </response>
        //  </multistatus>

        Element status = DOMUtils.getFirstElement(element.getParentNode().getParentNode(),"DAV:", "status");
        if (status != null) {
            return DOMUtils.parseStatus(DOMUtils.getTextValue(status));
        }
   
        return response.getStatusCode();
    }


    /**
     * This method returns URL file path of the resource to which this
     * property belongs.
     */
    public String getOwningURL() {
        return response.getHref();
    }


    /**
     * Get a String representation of the property.
     */
    public String toString () {
        StringWriter tmp = new StringWriter();
        DOMWriter domWriter = new DOMWriter(tmp, true);
        domWriter.print(element);
        return tmp.getBuffer().toString();
    }


}
TOP

Related Classes of org.apache.webdav.lib.BaseProperty

TOP
Copyright © 2018 www.massapi.com. All rights reserved.
All source code are property of their respective owners. Java is a trademark of Sun Microsystems, Inc and owned by ORACLE Inc. Contact coftware#gmail.com.