webdav: delete the PropSystem and MemPS types.

Change-Id: I569993723942f71599411a25ff31e97c1bc8875c
Reviewed-on: https://go-review.googlesource.com/10305
Reviewed-by: Robert Stepanek <robert.stepanek@gmail.com>
Reviewed-by: Nigel Tao <nigeltao@golang.org>
diff --git a/webdav/webdav.go b/webdav/webdav.go
index 637e0e0..334abef 100644
--- a/webdav/webdav.go
+++ b/webdav/webdav.go
@@ -5,8 +5,6 @@
 // Package webdav etc etc TODO.
 package webdav // import "golang.org/x/net/webdav"
 
-// TODO: ETag, properties.
-
 import (
 	"encoding/xml"
 	"errors"
@@ -45,8 +43,6 @@
 	FileSystem FileSystem
 	// LockSystem is the lock management system.
 	LockSystem LockSystem
-	// PropSystem is the property management system.
-	PropSystem PropSystem
 	// Logger is an optional error logger. If non-nil, it will be called
 	// for all HTTP requests.
 	Logger func(*http.Request, error)
@@ -58,8 +54,6 @@
 		status, err = http.StatusInternalServerError, errNoFileSystem
 	} else if h.LockSystem == nil {
 		status, err = http.StatusInternalServerError, errNoLockSystem
-	} else if h.PropSystem == nil {
-		status, err = http.StatusInternalServerError, errNoPropSystem
 	} else {
 		switch r.Method {
 		case "OPTIONS":
@@ -209,7 +203,7 @@
 	if err != nil {
 		return http.StatusNotFound, err
 	}
-	pstats, err := h.PropSystem.Find(r.URL.Path, []xml.Name{
+	pstats, err := props(h.FileSystem, h.LockSystem, r.URL.Path, []xml.Name{
 		{Space: "DAV:", Local: "getetag"},
 		{Space: "DAV:", Local: "getcontenttype"},
 	})
@@ -264,7 +258,7 @@
 	if closeErr != nil {
 		return http.StatusMethodNotAllowed, closeErr
 	}
-	pstats, err := h.PropSystem.Find(r.URL.Path, []xml.Name{
+	pstats, err := props(h.FileSystem, h.LockSystem, r.URL.Path, []xml.Name{
 		{Space: "DAV:", Local: "getetag"},
 	})
 	if err != nil {
@@ -502,19 +496,19 @@
 		}
 		var pstats []Propstat
 		if pf.Propname != nil {
-			propnames, err := h.PropSystem.Propnames(path)
+			pnames, err := propnames(h.FileSystem, h.LockSystem, path)
 			if err != nil {
 				return err
 			}
 			pstat := Propstat{Status: http.StatusOK}
-			for _, xmlname := range propnames {
+			for _, xmlname := range pnames {
 				pstat.Props = append(pstat.Props, Property{XMLName: xmlname})
 			}
 			pstats = append(pstats, pstat)
 		} else if pf.Allprop != nil {
-			pstats, err = h.PropSystem.Allprop(path, pf.Prop)
+			pstats, err = allprop(h.FileSystem, h.LockSystem, path, pf.Prop)
 		} else {
-			pstats, err = h.PropSystem.Find(path, pf.Prop)
+			pstats, err = props(h.FileSystem, h.LockSystem, path, pf.Prop)
 		}
 		if err != nil {
 			return err
@@ -550,7 +544,7 @@
 	if err != nil {
 		return status, err
 	}
-	pstats, err := h.PropSystem.Patch(r.URL.Path, patches)
+	pstats, err := patch(h.FileSystem, h.LockSystem, r.URL.Path, patches)
 	if err != nil {
 		return http.StatusInternalServerError, err
 	}
@@ -671,7 +665,6 @@
 	errInvalidTimeout          = errors.New("webdav: invalid timeout")
 	errNoFileSystem            = errors.New("webdav: no file system")
 	errNoLockSystem            = errors.New("webdav: no lock system")
-	errNoPropSystem            = errors.New("webdav: no property system")
 	errNotADirectory           = errors.New("webdav: not a directory")
 	errRecursionTooDeep        = errors.New("webdav: recursion too deep")
 	errUnsupportedLockInfo     = errors.New("webdav: unsupported lock info")