Properly set namespace context
[lgpl/argeo-commons.git] / org.argeo.cms / src / org / argeo / cms / dav / DavHttpHandler.java
index 0bd3b398e075e479cfa8252d9bb621e7200be231..f7c4ce7de8fbdd93ac9af5f61206578c35eecdac 100644 (file)
@@ -24,7 +24,6 @@ import com.sun.net.httpserver.HttpHandler;
  * ACR-specific code more readable and maintainable.
  */
 public abstract class DavHttpHandler implements HttpHandler {
-       private NamespaceContext namespaceContext;
 
        @Override
        public void handle(HttpExchange exchange) throws IOException {
@@ -49,6 +48,7 @@ public abstract class DavHttpHandler implements HttpHandler {
                                MultiStatusWriter multiStatusWriter = new MultiStatusWriter();
                                CompletableFuture<Void> published = handlePROPFIND(exchange, subPath, davPropfind, multiStatusWriter);
                                exchange.sendResponseHeaders(HttpResponseStatus.MULTI_STATUS.getCode(), 0l);
+                               NamespaceContext namespaceContext = getNamespaceContext(exchange, subPath);
                                try (OutputStream out = exchange.getResponseBody()) {
                                        multiStatusWriter.process(namespaceContext, out, published.minimalCompletionStage(),
                                                        davPropfind.isPropname());
@@ -68,6 +68,8 @@ public abstract class DavHttpHandler implements HttpHandler {
 
        }
 
+       protected abstract NamespaceContext getNamespaceContext(HttpExchange httpExchange, String path);
+
        protected abstract CompletableFuture<Void> handlePROPFIND(HttpExchange exchange, String path,
                        DavPropfind davPropfind, Consumer<DavResponse> consumer) throws IOException;
 
@@ -92,8 +94,4 @@ public abstract class DavHttpHandler implements HttpHandler {
                exchange.getResponseHeaders().add(HttpHeader.ALLOW.getHeaderName(), methods.toString());
        }
 
-       public void setNamespaceContext(NamespaceContext namespaceContext) {
-               this.namespaceContext = namespaceContext;
-       }
-
 }