DataConservancy / osf-packaging

DEPRECATED - Do not clone or fork! See https://github.com/DataConservancy/dcs-packaging-osf/tree/master/osf-packager
1 stars 3 forks source link

Filenames with special characters need to be handled #18

Open emetsger opened 7 years ago

emetsger commented 7 years ago

According to the BagIt profile section 2.2.2.1, filenames must not contain characters encoded as:

The OsfContentProvider does not handle the escaping of these characters, which can lead to the production of malformed packages.

emetsger commented 7 years ago

Example stacktrace:

Invalid path string:obj/root/osfstorage_Lake_Pehoé.jpg.ttl
Error deserializing package tree: One or more of the files provided to the package assembler has an invalid file name.
The stack trace follows:
java.lang.RuntimeException: Error deserializing package tree: One or more of the files provided to the package assembler has an invalid file name.
at org.dataconservancy.packaging.shared.IpmPackager.buildPackage(IpmPackager.java:104)
at org.dataconservancy.cos.packaging.cli.PackageGenerationApp.run(PackageGenerationApp.java:242)
at org.dataconservancy.cos.packaging.cli.PackageGenerationApp.main(PackageGenerationApp.java:157)
Caused by: java.lang.RuntimeException: Error deserializing package tree: One or more of the files provided to the package assembler has an invalid file name.
at org.dataconservancy.packaging.tool.impl.generator.PackageModelBuilderImpl.buildModel(PackageModelBuilderImpl.java:111)
at org.dataconservancy.packaging.tool.impl.BOREMPackageGenerator.generatePackage(BOREMPackageGenerator.java:115)
at org.dataconservancy.packaging.tool.impl.BasicPackageGenerationService.generatePackage(BasicPackageGenerationService.java:77)
at org.dataconservancy.packaging.shared.IpmPackager.buildPackage(IpmPackager.java:102)
... 2 more
Caused by: org.dataconservancy.packaging.tool.model.PackageToolException: One or more of the files provided to the package assembler has an invalid file name.
at org.dataconservancy.packaging.tool.impl.generator.BagItPackageAssembler.reserve(BagItPackageAssembler.java:366)
at org.dataconservancy.packaging.tool.impl.generator.BagItPackageAssembler.reserveResource(BagItPackageAssembler.java:348)
at org.dataconservancy.packaging.tool.impl.generator.DomainObjectResourceBuilder.lambda5(DomainObjectResourceBuilder.java:136)
at org.dataconservancy.packaging.tool.model.ipm.Node.walk(Node.java:251)
at org.dataconservancy.packaging.tool.model.ipm.Node.lambda(Node.java:254)
at java.util.ArrayList.forEach(ArrayList.java:1249)
at org.dataconservancy.packaging.tool.model.ipm.Node.walk(Node.java:254)
at org.dataconservancy.packaging.tool.impl.generator.DomainObjectResourceBuilder.init(DomainObjectResourceBuilder.java:97)
at org.dataconservancy.packaging.tool.impl.generator.PackageModelBuilderImpl.lambda9(PackageModelBuilderImpl.java:103)
at java.util.ArrayList.forEach(ArrayList.java:1249)
at org.dataconservancy.packaging.tool.impl.generator.PackageModelBuilderImpl.buildModel(PackageModelBuilderImpl.java:103)
... 5 more