Use node identifiers instead of paths.
authorMathieu Baudier <mbaudier@argeo.org>
Mon, 18 Oct 2021 08:24:33 +0000 (10:24 +0200)
committerMathieu Baudier <mbaudier@argeo.org>
Mon, 18 Oct 2021 08:24:33 +0000 (10:24 +0200)
knowledge/org.argeo.support.odk/src/org/argeo/support/odk/OdkUtils.java

index 887d655d516cbb58061d3a0c21fa984f8889d120..585b897a5197a8a161b60e124d37d5acbeb40096 100644 (file)
@@ -70,9 +70,12 @@ public class OdkUtils {
                                                        String path = instanceUri.getPath();
                                                        if (!path.endsWith(".xml"))
                                                                throw new IllegalArgumentException("File uri " + instanceUri + " must end with .xml");
-                                                       path = path.substring(0, path.length() - ".xml".length());
+                                                       // Work around bug in ODK Collect not supporting paths
+                                                       // path = path.substring(0, path.length() - ".xml".length());
+                                                       // Node target = file.getSession().getNode(path);
+                                                       String uuid = path.substring(1, path.length() - ".xml".length());
+                                                       Node target = file.getSession().getNodeByIdentifier(uuid);
                                                        // FIXME hard code terms path in order to test ODK Collect bug
-                                                       Node target = file.getSession().getNode("/example/terms"+path);
                                                        if (target.isNodeType(NodeType.MIX_REFERENCEABLE)) {
                                                                file.setProperty(Property.JCR_ID, target);
                                                                if (file.hasProperty(Property.JCR_PATH))