-import org.argeo.util.http.HttpHeader;
-import org.argeo.util.http.HttpMethod;
-import org.argeo.util.http.HttpResponseStatus;
-import org.argeo.util.http.HttpServerUtils;
+import org.argeo.cms.http.HttpHeader;
+import org.argeo.cms.http.HttpMethod;
+import org.argeo.cms.http.HttpStatus;
+import org.argeo.cms.http.server.HttpServerUtils;
import com.sun.net.httpserver.HttpExchange;
import com.sun.net.httpserver.HttpHandler;
/**
* Centralise patterns which are not ACR specific. Not really meant as a
import com.sun.net.httpserver.HttpExchange;
import com.sun.net.httpserver.HttpHandler;
/**
* Centralise patterns which are not ACR specific. Not really meant as a
* ACR-specific code more readable and maintainable.
*/
public abstract class DavHttpHandler implements HttpHandler {
* ACR-specific code more readable and maintainable.
*/
public abstract class DavHttpHandler implements HttpHandler {
handleGET(exchange, subPath);
} else if (HttpMethod.OPTIONS.name().equals(method)) {
handleOPTIONS(exchange, subPath);
handleGET(exchange, subPath);
} else if (HttpMethod.OPTIONS.name().equals(method)) {
handleOPTIONS(exchange, subPath);
} else if (HttpMethod.PROPFIND.name().equals(method)) {
DavDepth depth = DavDepth.fromHttpExchange(exchange);
if (depth == null) {
} else if (HttpMethod.PROPFIND.name().equals(method)) {
DavDepth depth = DavDepth.fromHttpExchange(exchange);
if (depth == null) {
try (InputStream in = exchange.getRequestBody()) {
davPropfind = DavPropfind.load(depth, in);
}
try (InputStream in = exchange.getRequestBody()) {
davPropfind = DavPropfind.load(depth, in);
}
CompletableFuture<Void> published = handlePROPFIND(exchange, subPath, davPropfind, multiStatusWriter);
CompletableFuture<Void> published = handlePROPFIND(exchange, subPath, davPropfind, multiStatusWriter);
- exchange.sendResponseHeaders(HttpResponseStatus.MULTI_STATUS.getCode(), 0l);
+ exchange.sendResponseHeaders(HttpStatus.MULTI_STATUS.getCode(), 0l);
+ NamespaceContext namespaceContext = getNamespaceContext(exchange, subPath);
try (OutputStream out = exchange.getResponseBody()) {
multiStatusWriter.process(namespaceContext, out, published.minimalCompletionStage(),
davPropfind.isPropname());
try (OutputStream out = exchange.getResponseBody()) {
multiStatusWriter.process(namespaceContext, out, published.minimalCompletionStage(),
davPropfind.isPropname());
throw new IllegalArgumentException("Unsupported method " + method);
}
} catch (ContentNotFoundException e) {
throw new IllegalArgumentException("Unsupported method " + method);
}
} catch (ContentNotFoundException e) {
protected abstract CompletableFuture<Void> handlePROPFIND(HttpExchange exchange, String path,
DavPropfind davPropfind, Consumer<DavResponse> consumer) throws IOException;
protected abstract CompletableFuture<Void> handlePROPFIND(HttpExchange exchange, String path,
DavPropfind davPropfind, Consumer<DavResponse> consumer) throws IOException;