I want to access Structure Group metadata in my DXA 2.2 java page models. Following the DXA documentation I have added the InheritMetadataPageModelBuilder
model builder to the pipeline in my Page Rendering TBB. When previewing the page, I see that Structure Group metadata is present in the page JSON. I also see following additional json field.
"ExtensionData": {
"Schemas": {
"$type": "RichTextData[]",
"$values": [
{
"Fragments": [
"313729"
]
}
]
}
}
However, on the on my DXA application side, I get the following runtime error when I access a page:
java.lang.ClassCastException: com.sdl.dxa.api.datamodel.model.RichTextData cannot be cast to java.lang.String
at java.util.stream.ReferencePipeline$3$1.accept(ReferencePipeline.java:193)
at java.util.ArrayList$ArrayListSpliterator.forEachRemaining(ArrayList.java:1382)
at java.util.stream.AbstractPipeline.copyInto(AbstractPipeline.java:481)
at java.util.stream.AbstractPipeline.wrapAndCopyInto(AbstractPipeline.java:471)
at java.util.stream.ReduceOps$ReduceOp.evaluateSequential(ReduceOps.java:708)
at java.util.stream.AbstractPipeline.evaluate(AbstractPipeline.java:234)
at java.util.stream.ReferencePipeline.collect(ReferencePipeline.java:499)
at com.sdl.dxa.tridion.mapping.impl.DefaultModelBuilder.getInheritedSemanticSchemas(DefaultModelBuilder.java:168)
It seems DefaultModelBuilder
is not able to parse 'ExtensionData' element of the PageModelData. It is clearly expecting String object instead of RichTextData. ExtensionData is something added by InheritMetadataPageModelBuilder
itself, so I have no control over it.
Did I miss something or is it's a DXA bug?
Any ideas to fix it?