juergen     02/05/15 22:22:17

  Modified:    src/webdav/server/org/apache/slide/webdav/method
                        LockMethod.java PropPatchMethod.java
  Log:
  Use JDOM to create the response instead of the XMLPrinter.
  
  Revision  Changes    Path
  1.31      +30 -63    
jakarta-slide/src/webdav/server/org/apache/slide/webdav/method/LockMethod.java
  
  Index: LockMethod.java
  ===================================================================
  RCS file: 
/home/cvs/jakarta-slide/src/webdav/server/org/apache/slide/webdav/method/LockMethod.java,v
  retrieving revision 1.30
  retrieving revision 1.31
  diff -u -r1.30 -r1.31
  --- LockMethod.java   25 Apr 2002 21:27:30 -0000      1.30
  +++ LockMethod.java   16 May 2002 05:22:17 -0000      1.31
  @@ -1,7 +1,7 @@
   /*
  - * $Header: 
/home/cvs/jakarta-slide/src/webdav/server/org/apache/slide/webdav/method/LockMethod.java,v
 1.30 2002/04/25 21:27:30 jericho Exp $
  - * $Revision: 1.30 $
  - * $Date: 2002/04/25 21:27:30 $
  + * $Header: 
/home/cvs/jakarta-slide/src/webdav/server/org/apache/slide/webdav/method/LockMethod.java,v
 1.31 2002/05/16 05:22:17 juergen Exp $
  + * $Revision: 1.31 $
  + * $Date: 2002/05/16 05:22:17 $
    *
    * ====================================================================
    *
  @@ -84,6 +84,9 @@
   import org.apache.slide.security.AccessDeniedException;
   import org.apache.slide.structure.*;
   
  +import org.apache.slide.webdav.util.PropertyHelper;
  +import org.apache.slide.webdav.util.XMLValue;
  +
   /**
    * LOCK method.
    *
  @@ -175,6 +178,15 @@
        */
       private String lockInfo_lockSubject;
       
  +    /**
  +     * The PropertyHelper used by this instance.
  +     */
  +    protected PropertyHelper propertyHelper = null;
  +    
  +    /**
  +     * The URL of the server, e.g. <code>http://www.aloha.com:8080</code>
  +     */
  +    protected String serverURL = null;
       
       // ----------------------------------------------------------- Constructors
       
  @@ -191,6 +203,7 @@
       public LockMethod(NamespaceAccessToken token, HttpServletRequest req,
                         HttpServletResponse resp, WebdavServletConfig config) {
           super(token, req, resp, config);
  +        propertyHelper = PropertyHelper.getPropertyHelper(slideToken, token);
           readRequestContent();
       }
       
  @@ -206,6 +219,8 @@
       protected void parseRequest()
           throws WebdavException {
           
  +        serverURL = HTTP_PROTOCOL + req.getServerName()+ ":" + req.getServerPort();
  +
           // Loads the associated object from the store.
           lockInfo_lockSubject = requestUri;
           if (lockInfo_lockSubject == null) {
  @@ -556,6 +571,7 @@
                       // error is on the resource which we attempted to lock
                       String errorMessage = generateErrorMessage(e);
                       // Write it on the servlet writer
  +                        resp.setContentType(TEXT_XML_UTF_8);
                       resp.setStatus(WebdavStatus.SC_MULTI_STATUS);
                       try {
                           resp.getWriter().write(errorMessage);
  @@ -643,72 +659,23 @@
           throws WebdavException {
           
           // Generating XML response
  -        
  -        XMLPrinter generatedXML = new XMLPrinter();
  -        
  -        generatedXML.writeXMLHeader();
  -        generatedXML.writeElement("d", "DAV:", "prop", XMLPrinter.OPENING);
  -        
  -        generatedXML.writeElement("d", null, "lockdiscovery",
  -                                  XMLPrinter.OPENING);
  -        
  -        generatedXML.writeElement("d", null, "activelock", XMLPrinter.OPENING);
  -        
  -        generatedXML.writeElement("d", null, "locktype", XMLPrinter.OPENING);
  -        generatedXML.writeElement("d", null, "write", XMLPrinter.NO_CONTENT);
  -        generatedXML.writeElement("d", null, "locktype", XMLPrinter.CLOSING);
  -        
  -        generatedXML.writeElement("d", null, "lockscope", XMLPrinter.OPENING);
  -        
  -        if (token.isExclusive()) {
  -            generatedXML.writeElement("d", null, "exclusive",
  -                                      XMLPrinter.NO_CONTENT);
  -        } else {
  -            generatedXML.writeElement("d", null, "shared",
  -                                      XMLPrinter.NO_CONTENT);
  +        org.jdom.Element prop = new org.jdom.Element(E_PROP, DAV_NAMESPACE);
  +        org.jdom.Element lockdiscovery = new org.jdom.Element(E_LOCKDISCOVERY, 
DAV_NAMESPACE);
  +        prop.addContent(lockdiscovery);
  +        XMLValue xmlValue = propertyHelper.computeLockDiscovery(token,
  +                                                             serverURL,
  +                                                             req.getContextPath());
  +        Iterator iterator = xmlValue.iterator();
  +        while (iterator.hasNext()) {
  +            lockdiscovery.addContent((org.jdom.Element)iterator.next());
           }
  -        generatedXML.writeElement("d", null, "lockscope", XMLPrinter.CLOSING);
  -        
  -        generatedXML.writeElement("d", null, "depth", XMLPrinter.OPENING);
  -        if (token.isInheritable()) {
  -            generatedXML.writeText("infinity");
  -        } else {
  -            generatedXML.writeText("0");
  -        }
  -        generatedXML.writeElement("d", null, "depth", XMLPrinter.CLOSING);
  -        
  -        generatedXML.writeElement("d", null, "owner", XMLPrinter.OPENING);
  -        generatedXML.writeText(getFullPath(token.getSubjectUri()));
  -        generatedXML.writeElement("d", null, "owner", XMLPrinter.CLOSING);
  -        
  -        generatedXML.writeElement("d", null, "timeout", XMLPrinter.OPENING);
  -        generatedXML.writeText("Second-"
  -                               + (new Long((token.getExpirationDate().getTime()
  -                                            - (new Date()).getTime())/1000))
  -                               .toString());
  -        generatedXML.writeElement("d", null, "timeout", XMLPrinter.CLOSING);
  -        
  -        generatedXML.writeElement("d", null, "locktoken", XMLPrinter.OPENING);
  -        generatedXML.writeElement("d", null, "href", XMLPrinter.OPENING);
  -        // Put here the token Id
  -        generatedXML.writeText("opaquelocktoken:" + token.getLockId());
  -        
  -        generatedXML.writeElement("d", null, "href", XMLPrinter.CLOSING);
  -        generatedXML.writeElement("d", null, "locktoken", XMLPrinter.CLOSING);
  -        
  -        generatedXML.writeElement("d", null, "activelock", XMLPrinter.CLOSING);
  -        
  -        generatedXML.writeElement("d", null, "lockdiscovery",
  -                                  XMLPrinter.CLOSING);
  -        
  -        generatedXML.writeElement("d", null, "prop", XMLPrinter.CLOSING);
  -        
           
           try {
               //System.out.println("Query result");
               //System.out.println(generatedXML.toString());
  +            resp.setContentType(TEXT_XML_UTF_8);
               Writer writer = resp.getWriter();
  -            writer.write(generatedXML.toString());
  +            new org.jdom.output.XMLOutputter().output(prop, writer);
               writer.flush();
           } catch (Exception e) {
               e.printStackTrace();
  
  
  
  1.41      +51 -45    
jakarta-slide/src/webdav/server/org/apache/slide/webdav/method/PropPatchMethod.java
  
  Index: PropPatchMethod.java
  ===================================================================
  RCS file: 
/home/cvs/jakarta-slide/src/webdav/server/org/apache/slide/webdav/method/PropPatchMethod.java,v
  retrieving revision 1.40
  retrieving revision 1.41
  diff -u -r1.40 -r1.41
  --- PropPatchMethod.java      14 May 2002 15:33:42 -0000      1.40
  +++ PropPatchMethod.java      16 May 2002 05:22:17 -0000      1.41
  @@ -1,7 +1,7 @@
   /*
  - * $Header: 
/home/cvs/jakarta-slide/src/webdav/server/org/apache/slide/webdav/method/PropPatchMethod.java,v
 1.40 2002/05/14 15:33:42 pnever Exp $
  - * $Revision: 1.40 $
  - * $Date: 2002/05/14 15:33:42 $
  + * $Header: 
/home/cvs/jakarta-slide/src/webdav/server/org/apache/slide/webdav/method/PropPatchMethod.java,v
 1.41 2002/05/16 05:22:17 juergen Exp $
  + * $Revision: 1.41 $
  + * $Date: 2002/05/16 05:22:17 $
    *
    * ====================================================================
    *
  @@ -134,6 +134,11 @@
        */
       private String resourcePath;
       
  +    /**
  +     * Constant for the <code>DAV:</code> namespace (with prefix <code>D</code>)
  +     */
  +    protected static final org.jdom.Namespace DAV_NAMESPACE = 
org.jdom.Namespace.getNamespace(DEFAULT_PREFIX,
  +                                                                                    
          DEFAULT_NAMESPACE);
       
       // ----------------------------------------------------------- Constructors
       
  @@ -503,8 +508,8 @@
           boolean result;
           if (originalProperty == null) {
               // those virtual live properties can not be modified
  -            result = (!property.name.equals("lockdiscovery")) &&
  -                     (!property.name.equals("supportedlock"));
  +            result = (!property.name.equals(P_LOCKDISCOVERY)) &&
  +                (!property.name.equals(P_SUPPORTEDLOCK));
           }
           else {
               result = !originalProperty.isProtected();
  @@ -522,18 +527,12 @@
       private void writeReport()
           throws WebdavException {
           
  -        // Create multistatus object
  -        XMLPrinter generatedXML = new XMLPrinter();
  -        
  -        generatedXML.writeXMLHeader();
  -        generatedXML.writeElement("d", "DAV:", "multistatus",
  -                                  XMLPrinter.OPENING);
  -        
  -        generatedXML.writeElement("d", null, "response", XMLPrinter.OPENING);
  -        generatedXML.writeProperty("d", null, "href",
  -                                   getFullPath(requestUri));
  -        
  -        
  +        org.jdom.Element multistatus = new org.jdom.Element(E_MULTISTATUS, 
DAV_NAMESPACE);
  +        org.jdom.Element response = new org.jdom.Element(E_RESPONSE, DAV_NAMESPACE);
  +        multistatus.addContent(response);
  +        org.jdom.Element href = new org.jdom.Element(E_HREF, DAV_NAMESPACE);
  +        href.setText(getFullPath(requestUri));
  +        response.addContent(href);
           
           // Parse the two properties list, and printout their status
           Enumeration propertyList = null;
  @@ -542,50 +541,57 @@
           
           while(propertyList.hasMoreElements()) {
               Property property = (Property) propertyList.nextElement();
  -            generatedXML.writeElement("d", null, "propstat",
  -                                      XMLPrinter.OPENING);
  -            generatedXML.writeElement("d", null, "prop", XMLPrinter.OPENING);
  -            generatedXML.writeElement(property.namespaceAbbrev,
  -                                      property.namespace, property.name,
  -                                      XMLPrinter.NO_CONTENT);
  -            generatedXML.writeElement("d", null, "prop", XMLPrinter.CLOSING);
  -            generatedXML.writeProperty
  -                ("d", null, "status", "HTTP/1.1 " + property.status + " "
  -                     + WebdavStatus.getStatusText(property.status));
  -            generatedXML.writeElement("d", null, "propstat",
  -                                      XMLPrinter.CLOSING);
  +            org.jdom.Element propstat = createPropstatElement(property);
  +            response.addContent(propstat);
           }
           
           propertyList = propertiesToRemove.elements();
           
           while(propertyList.hasMoreElements()) {
               Property property = (Property) propertyList.nextElement();
  -            generatedXML.writeElement("d", null, "propstat",
  -                                      XMLPrinter.OPENING);
  -            generatedXML.writeElement("d", null, "prop", XMLPrinter.OPENING);
  -            generatedXML.writeElement(property.namespaceAbbrev,
  -                                      property.namespace, property.name,
  -                                      XMLPrinter.NO_CONTENT);
  -            generatedXML.writeElement("d", null, "prop", XMLPrinter.CLOSING);
  -            generatedXML.writeProperty
  -                ("d", null, "status", "HTTP/1.1 " + property.status + " "
  -                     + WebdavStatus.getStatusText(property.status));
  -            generatedXML.writeElement("d", null, "propstat",
  -                                      XMLPrinter.CLOSING);
  +            org.jdom.Element propstat = createPropstatElement(property);
  +            response.addContent(propstat);
           }
           
  -        generatedXML.writeElement("d", null, "response", XMLPrinter.CLOSING);
  -        generatedXML.writeElement("d", "multistatus", XMLPrinter.CLOSING);
  -        
           try {
  +            resp.setContentType(TEXT_XML_UTF_8);
               Writer writer = resp.getWriter();
  -            writer.write(generatedXML.toString());
  +            new org.jdom.output.XMLOutputter().output(multistatus, writer);
               writer.flush();
           } catch (Exception e) {
               e.printStackTrace();
               throw new WebdavException(WebdavStatus.SC_INTERNAL_SERVER_ERROR);
           }
           
  +    }
  +    
  +    /**
  +     * Creates a <code>&lt;propstat&gt;</code> element for the given
  +     * <code>property</code>.
  +     *
  +     * @param      property  the Property for which to create a
  +     *                       <code>&lt;propstat&gt;</code> element.
  +     *
  +     * @return     the created <code>&lt;propstat&gt;</code> element.
  +     */
  +    private org.jdom.Element createPropstatElement(Property property) {
  +        
  +        org.jdom.Element propstat = new org.jdom.Element(E_PROPSTAT, DAV_NAMESPACE);
  +        org.jdom.Element prop = new org.jdom.Element(E_PROP, DAV_NAMESPACE);
  +        propstat.addContent(prop);
  +        
  +        org.jdom.Namespace namespace = 
org.jdom.Namespace.getNamespace(property.namespace);
  +        if ( (property.namespace != null) && 
property.namespace.equals(DAV_NAMESPACE.getURI()) ) {
  +            namespace = DAV_NAMESPACE;
  +        }
  +        org.jdom.Element propertyElement = new org.jdom.Element(property.name, 
namespace);
  +        prop.addContent(propertyElement);
  +        
  +        org.jdom.Element status = new org.jdom.Element(E_STATUS, DAV_NAMESPACE);
  +        status.setText("HTTP/1.1 " + property.status + " "
  +                           + WebdavStatus.getStatusText(property.status));
  +        propstat.addContent(status);
  +        return propstat;
       }
       
       
  
  
  

--
To unsubscribe, e-mail:   <mailto:[EMAIL PROTECTED]>
For additional commands, e-mail: <mailto:[EMAIL PROTECTED]>

Reply via email to