* ACR-specific code more readable and maintainable.
*/
public abstract class DavHttpHandler implements HttpHandler {
- private NamespaceContext namespaceContext;
@Override
public void handle(HttpExchange exchange) throws IOException {
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());
}
+ protected abstract NamespaceContext getNamespaceContext(HttpExchange httpExchange, String path);
+
protected abstract CompletableFuture<Void> handlePROPFIND(HttpExchange exchange, String path,
DavPropfind davPropfind, Consumer<DavResponse> consumer) throws IOException;
exchange.getResponseHeaders().add(HttpHeader.ALLOW.getHeaderName(), methods.toString());
}
- public void setNamespaceContext(NamespaceContext namespaceContext) {
- this.namespaceContext = namespaceContext;
- }
-
}