import java.io.IOException;
import java.io.InputStream;
import java.io.OutputStream;
+import java.net.URLDecoder;
+import java.nio.charset.StandardCharsets;
import java.util.Collections;
import java.util.HashMap;
import java.util.Map;
import javax.servlet.http.HttpServletResponse;
import org.apache.commons.io.FilenameUtils;
-import org.argeo.cms.auth.ServletAuthUtils;
+import org.argeo.cms.servlet.ServletAuthUtils;
import org.argeo.jcr.Jcr;
import org.argeo.support.odk.OdkForm;
+import org.argeo.support.odk.OdkNames;
/** Retrieves a single form. */
public class OdkFormServlet extends HttpServlet {
Session session = ServletAuthUtils.doAs(() -> Jcr.login(repository, null), req);
String pathInfo = req.getPathInfo();
+ if (pathInfo.startsWith("//"))
+ pathInfo = pathInfo.substring(1);
+ boolean oldApproach = false;
try {
- if (session.nodeExists(pathInfo)) {
- session.exportDocumentView(pathInfo + "/h:html", resp.getOutputStream(), true, false);
+ if (!oldApproach) {
+ String path = URLDecoder.decode(pathInfo, StandardCharsets.UTF_8);
+ session.exportDocumentView(path + "/" + OdkNames.H_HTML, resp.getOutputStream(), true, false);
} else {
String fileName = FilenameUtils.getName(pathInfo);