Working read-only WebDav server
[lgpl/argeo-commons.git] / org.argeo.cms / src / org / argeo / cms / dav / DavResponse.java
index 6d45246db6fd2a8fd66b370271deafeb1af1ef59..828dc2640902d7571e91fa0b1cc8e6aa3b2f76df 100644 (file)
@@ -2,19 +2,23 @@ package org.argeo.cms.dav;
 
 import java.util.ArrayList;
 import java.util.HashMap;
-import java.util.HashSet;
 import java.util.List;
 import java.util.Map;
 import java.util.Set;
+import java.util.TreeMap;
+import java.util.TreeSet;
 
 import javax.xml.namespace.QName;
 
+import org.argeo.util.http.HttpStatus;
+
+/** The WebDav response for a given resource. */
 public class DavResponse {
        final static String MOD_DAV_NAMESPACE = "http://apache.org/dav/props/";
 
        private String href;
        private boolean collection;
-       private Set<QName> propertyNames = new HashSet<>();
+       private Map<HttpStatus, Set<QName>> propertyNames = new TreeMap<>();
        private Map<QName, String> properties = new HashMap<>();
        private List<QName> resourceTypes = new ArrayList<>();
 
@@ -42,8 +46,14 @@ public class DavResponse {
                return resourceTypes;
        }
 
-       public Set<QName> getPropertyNames() {
-               return propertyNames;
+       public Set<QName> getPropertyNames(HttpStatus status) {
+               if (!propertyNames.containsKey(status))
+                       propertyNames.put(status, new TreeSet<>(DavXmlElement.QNAME_COMPARATOR));
+               return propertyNames.get(status);
+       }
+
+       public Set<HttpStatus> getStatuses() {
+               return propertyNames.keySet();
        }
 
 }