Saving a pretty large xml file in JCR produces a NPE after upgrading to version 15

Hi everyone,

We have a need to save a pretty large xml file (used for our sitemap index) in JCR. It used to work properly when we were in Bloomreach 14.x. After upgrading to version 15, we notice that below code importTask.createOrUpdateBinaryFromContentNode produces an NPE, where importTask is new DefaultBinaryImportTask(documentManager);

    String[] binaryFolderFolderTypes = {"new-file-folder"};
    String[] binaryFolderGalleryTypes = {"hippogallery:exampleAssetSet"};

    String binaryFolderPath =
            importTask.createOrUpdateBinaryFolder(folderLocation, "hippogallery:stdAssetGallery", binaryFolderFolderTypes, binaryFolderGalleryTypes);

    String updatedBinaryLocation =
            importTask.createOrUpdateBinaryFromContentNode(contentNode, "hippogallery:exampleAssetSet",
                    binaryFolderPath, fileName);

binar
yFolderPath is /content/assets/assets/cavcodotcom/generated-sitemaps and fileName is sitemap-index.xml.

Here is the stacktrace

[INFO] [talledLocalContainer] org.onehippo.forge.content.exim.core.ContentMigrationException: java.lang.NullPointerException
[INFO] [talledLocalContainer] at org.onehippo.forge.content.exim.core.impl.DefaultBinaryImportTask.createOrUpdateBinaryFromContentNode(DefaultBinaryImportTask.java:137) ~[content-exim-core-4.0.1.jar:?]
[INFO] [talledLocalContainer] at com.cavco.cronjobs.RestfulRepositoryJob.persistBinaryImage(RestfulRepositoryJob.java:124) ~[classes/:?]
[INFO] [talledLocalContainer] at com.cavco.cronjobs.dynamicsitemap.BrandSiteSitemapJob.createSitemapIndexFile(BrandSiteSitemapJob.java:182) ~[classes/:?]
[INFO] [talledLocalContainer] at com.cavco.cronjobs.dynamicsitemap.BrandSiteSitemapJob.execute(BrandSiteSitemapJob.java:68) [classes/:?]
[INFO] [talledLocalContainer] at org.hippoecm.repository.quartz.RepositoryJobJob.execute(RepositoryJobJob.java:50) [hippo-repository-engine-15.7.1.jar:15.7.1]
[INFO] [talledLocalContainer] at org.quartz.core.JobRunShell.run(JobRunShell.java:202) [quartz-2.3.2.jar:?]
[INFO] [talledLocalContainer] at org.quartz.simpl.SimpleThreadPool$WorkerThread.run(SimpleThreadPool.java:573) [quartz-2.3.2.jar:?]
[INFO] [talledLocalContainer] Caused by: java.lang.NullPointerException
[INFO] [talledLocalContainer] at org.apache.jackrabbit.util.ISO8601.getYear(ISO8601.java:395) ~[jackrabbit-jcr-commons-2.21.19-h4.jar:?]
[INFO] [talledLocalContainer] at org.apache.jackrabbit.spi.commons.value.ValueFactoryQImpl.createValue(ValueFactoryQImpl.java:142) ~[jackrabbit-spi-commons-2.21.19-h4.jar:?]
[INFO] [talledLocalContainer] at org.hippoecm.repository.impl.ValueFactoryDecorator.createValue(ValueFactoryDecorator.java:59) ~[hippo-repository-engine-15.7.1.jar:15.7.1]
[INFO] [talledLocalContainer] at org.onehippo.forge.content.pojo.common.jcr.DefaultJcrContentValueConverter.toJcrValue(DefaultJcrContentValueConverter.java:242) ~[hippo-pojo-bind-jcr-1.3.1.jar:?]
[INFO] [talledLocalContainer] at org.onehippo.forge.content.pojo.common.jcr.DefaultJcrContentValueConverter.toJcrValue(DefaultJcrContentValueConverter.java:59) ~[hippo-pojo-bind-jcr-1.3.1.jar:?]
[INFO] [talledLocalContainer] at org.onehippo.forge.content.pojo.binder.jcr.DefaultJcrContentNodeBinder.createJcrValuesFromContentProperty(DefaultJcrContentNodeBinder.java:307) ~[hippo-pojo-bind-jcr-1.3.1.jar:?]
[INFO] [talledLocalContainer] at org.onehippo.forge.content.pojo.binder.jcr.DefaultJcrContentNodeBinder.bindProperties(DefaultJcrContentNodeBinder.java:192) ~[hippo-pojo-bind-jcr-1.3.1.jar:?]
[INFO] [talledLocalContainer] at org.onehippo.forge.content.pojo.binder.jcr.DefaultJcrContentNodeBinder.bind(DefaultJcrContentNodeBinder.java:148) ~[hippo-pojo-bind-jcr-1.3.1.jar:?]
[INFO] [talledLocalContainer] at org.onehippo.forge.content.pojo.binder.jcr.DefaultJcrContentNodeBinder.addSubNodes(DefaultJcrContentNodeBinder.java:256) ~[hippo-pojo-bind-jcr-1.3.1.jar:?]
[INFO] [talledLocalContainer] at org.onehippo.forge.content.pojo.binder.jcr.DefaultJcrContentNodeBinder.bind(DefaultJcrContentNodeBinder.java:152) ~[hippo-pojo-bind-jcr-1.3.1.jar:?]
[INFO] [talledLocalContainer] at org.onehippo.forge.content.pojo.binder.jcr.DefaultJcrContentNodeBinder.bind(DefaultJcrContentNodeBinder.java:48) ~[hippo-pojo-bind-jcr-1.3.1.jar:?]
[INFO] [talledLocalContainer] at org.onehippo.forge.content.exim.core.impl.DefaultBinaryImportTask.updateBinaryHandleAndVariantNodeFromBinaryVariantContentNode(DefaultBinaryImportTask.java:171) ~[content-exim-core-4.0.1.ja
r:?]
[INFO] [talledLocalContainer] at org.onehippo.forge.content.exim.core.impl.DefaultBinaryImportTask.createOrUpdateBinaryFromContentNode(DefaultBinaryImportTask.java:127) ~[content-exim-core-4.0.1.jar:?]
[INFO] [talledLocalContainer] … 6 more

Any help is greatly appreciated.

Thanks,

Billy

It looks like you are using content-exim version 4.0.1. For CMS 15 you need to update to version 5.0.1

HJasper,

Thank you for pointing that out.

I just upgraded content-exim to 5.0.1, but I am still getting NPE. Anything else I can try?

Thanks,

Billy

[INFO] [talledLocalContainer] 10.03.2025 09:45:01 ERROR Hippo JCR Quartz Job Scheduler_Worker-1 [BrandSiteSitemapJob.execute:72] Error while building cavcodotcom Sitemap
[INFO] [talledLocalContainer] org.onehippo.forge.content.exim.core.ContentMigrationException: java.lang.NullPointerException
[INFO] [talledLocalContainer] at org.onehippo.forge.content.exim.core.impl.DefaultBinaryImportTask.createOrUpdateBinaryFromContentNode(DefaultBinaryImportTask.java:137) ~[content-exim-core-5.0.1.jar:?]
[INFO] [talledLocalContainer] at com.cavco.cronjobs.RestfulRepositoryJob.persistBinaryImage(RestfulRepositoryJob.java:124) ~[classes/:?]
[INFO] [talledLocalContainer] at com.cavco.cronjobs.dynamicsitemap.BrandSiteSitemapJob.createSitemapIndexFile(BrandSiteSitemapJob.java:182) ~[classes/:?]
[INFO] [talledLocalContainer] at com.cavco.cronjobs.dynamicsitemap.BrandSiteSitemapJob.execute(BrandSiteSitemapJob.java:68) [classes/:?]
[INFO] [talledLocalContainer] at org.hippoecm.repository.quartz.RepositoryJobJob.execute(RepositoryJobJob.java:50) [hippo-repository-engine-15.7.1.jar:15.7.1]
[INFO] [talledLocalContainer] at org.quartz.core.JobRunShell.run(JobRunShell.java:202) [quartz-2.3.2.jar:?]

Its an NPE, so looking at the code there is a limited number of objects that could be NULL, unfortunately without any extra logging to be able to determine what. If you can attach a debugger it might become more clear. Failing that, check the values that are actually passed to the method. Check whether the nodes/folders actually exist.