Skip to content

Commit 988efd3

Browse files
committed
[bugfix] Make Internet Media Type resolution more robust when restoring a database backup
1 parent 1ae9079 commit 988efd3

1 file changed

Lines changed: 9 additions & 3 deletions

File tree

exist-core/src/main/java/org/exist/backup/restore/AbstractRestoreHandler.java

Lines changed: 9 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -379,9 +379,15 @@ private DeferredPermission restoreResourceEntry(final Attributes attributes) thr
379379
listener.warn("Missing mimetype attribute in the backup __contents__.xml file for: " + commonAttributes.name + ", assuming: " + mediaType);
380380
} else {
381381
mediaType = mediaTypeResolver.fromString(mediaTypeStr.trim());
382-
if (xmlType && mediaType.getStorageType() != StorageType.XML) {
383-
mediaType = MediaTypeImpl.builder(mediaTypeStr.trim(), StorageType.XML).build();
384-
} else if ((!xmlType) && mediaType.getStorageType() != StorageType.BINARY) {
382+
if (mediaType != null) {
383+
if (xmlType && mediaType.getStorageType() != StorageType.XML) {
384+
mediaType = MediaTypeImpl.builder(mediaTypeStr.trim(), StorageType.XML).build();
385+
} else if ((!xmlType) && mediaType.getStorageType() != StorageType.BINARY) {
386+
mediaType = MediaTypeImpl.builder(mediaTypeStr.trim(), StorageType.BINARY).build();
387+
}
388+
} else {
389+
// could not find a MediaType for the mediaTypeStr - this could mean we are missing a Media Type in mime.types or media-type-aliases.xml
390+
listener.warn("Could not find MediaType for: " + mediaTypeStr + " when restoring: " + is.getSymbolicPath() + ". Document will be stored as a binary document.");
385391
mediaType = MediaTypeImpl.builder(mediaTypeStr.trim(), StorageType.BINARY).build();
386392
}
387393
}

0 commit comments

Comments
 (0)