Skip to content

FormValidator: accept input from stdin - #110

Open
alxndrsn wants to merge 1 commit into
getodk:masterfrom
alxndrsn:accept-input-from-stdin
Open

alxndrsn wants to merge 1 commit into
getodk:masterfrom
alxndrsn:accept-input-from-stdin

Conversation

@alxndrsn

@alxndrsn alxndrsn commented Nov 2, 2026

Copy link
Copy Markdown

Closes #97

What has been done to verify that this works as intended?

No tests, just ran it locally:

./gradlew jar &&
cat src/test/resources/xml_external_instance.xml | java -jar ./build/libs/ODK-Validate-null.jar - &&
java -jar ./build/libs/ODK-Validate-null.jar &&
java -jar ./build/libs/ODK-Validate-null.jar src/test/resources/xml_external_instance.xml &&
echo -e "\n\n--- Expect this one to fail:\n" &&
echo booboo | java -jar ./build/libs/ODK-Validate-null.jar -
Starting a Gradle Daemon, 1 busy and 1 incompatible and 1 stopped Daemons could not be reused, use --status for details
> Task :generateBuildConfig UP-TO-DATE
> Task :compileBuildConfig UP-TO-DATE
> Task :compileJava UP-TO-DATE
> Task :processResources UP-TO-DATE
> Task :classes UP-TO-DATE
> Task :jar UP-TO-DATE

BUILD SUCCESSFUL in 2s
5 actionable tasks: 5 up-to-date


>> Xform parsing completed!



>> Xform is valid!
Validating: src/test/resources/xml_external_instance.xml


>> Xform parsing completed!



>> Xform is valid!


--- Expect this one to fail:

[Fatal Error] :1:1: Content is not allowed in prolog.



>> XML is invalid.
org.xml.sax.SAXParseException; lineNumber: 1; columnNumber: 1; Content is not allowed in prolog.
	at java.xml/com.sun.org.apache.xerces.internal.parsers.DOMParser.parse(DOMParser.java:262)
	at java.xml/com.sun.org.apache.xerces.internal.jaxp.DocumentBuilderImpl.parse(DocumentBuilderImpl.java:342)
	at java.xml/javax.xml.parsers.DocumentBuilder.parse(DocumentBuilder.java:122)
	at org.opendatakit.validate.FormValidator.validate(FormValidator.java:434)
	at org.opendatakit.validate.FormValidator.validate(FormValidator.java:422)
	at org.opendatakit.validate.FormValidator.main(FormValidator.java:131)

Why is this the best possible solution? Were any other approaches considered?

Are there any risks to merging this code? If so, what are they?

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

Accept bytes from stdin as alternative to reading file from disk

1 participant