3

Originally, I had extended DynamicList<FAQs, SimpleBrokerQuery> from my custom model FAQsContentList where I want to execute a SimpleBrokerQuery on a few filterKeywords. In the logs I can see that I get query results but when it goes through the default Model Builder, the entity returns n results with null values. Originally I get a list of entity objects but with null values c.s.d.t.m.impl.DefaultModelBuilder - Expected class is pre-set to class com.sdl.dxa.modules.faqs.model.FAQs for model EntityModelData(id=4979, componentTemplate=null, linkUrl=null, content=null, binaryContent=null, externalContent=null)

Now, I get the another error (shown below) when I played around with the template, but the bottom issue is that I am not getting any field values.

The exception is .api.mapping.semantic.SemanticMappingException: Ambiguous semantic mapping for http://www.sdl.com/web/schemas/core:FAQs, found these mappings: [class com.sdl.dxa.modules.faqs.model.FAQs, class com.sdl.dxa.modules.faqs.model.FAQs] but there are no core schemas called FAQs

Caused by: com.sdl.webapp.common.exceptions.DxaException: Exception happened while creating a entity model from: EntityModelData(id=4560, componentTemplate=null, linkUrl=null, content=null, binaryContent=null, externalContent=null)     at com.sdl.dxa.tridion.mapping.impl.DefaultModelBuilder.buildEntityModel(DefaultModelBuilder.java:133)  at com.sdl.dxa.tridion.mapping.impl.ModelBuilderPipelineImpl.createEntityModel(ModelBuilderPipelineImpl.java:86)    at com.sdl.dxa.tridion.mapping.impl.DefaultContentProvider._convertEntities(DefaultContentProvider.java:120)    at com.sdl.dxa.tridion.mapping.impl.DefaultContentProvider.populateDynamicList(DefaultContentProvider.java:213)     ... 122 common frames omitted Caused by: com.sdl.webapp.common.exceptions.DxaException: Cannot get a view model tpe because of semantic mapping exception   at 

com.sdl.webapp.common.impl.model.ViewModelRegistryImpl.getMappedModelTypes(ViewModelRegistryImpl.java:109)


Caused by: com.sdl.webapp.common.api.mapping.semantic.SemanticMappingException: Ambiguous semantic mapping for http://www.sdl.com/web/schemas/core:FAQs, found these mappings: [class com.sdl.dxa.modules.faqs.model.FAQs, class com.sdl.dxa.modules.faqs.model.FAQs]
    at com.sdl.webapp.common.impl.mapping.SemanticMappingRegistryImpl.getEntityClassByFullyQualifiedName(SemanticMappingRegistryImpl.java:334)

To resolve the SemanticMappingException caused by Ambiguous semantic mapping, I then created a customTeaser which is mapped to my schema FAQs @SemanticEntity(entityName = "FAQs", vocabulary = SDL_CORE, prefix = "f") . In my custom ContentListController.enrichModel function, when it calls contentProvider.populateDynamicList(dynamicList, webRequestContext.getLocalization());, I can see from the logs that it calls my custom DynamicList and the DefaultModelBuilder that is called after this prints the following logs.

c.s.d.t.m.impl.DefaultModelBuilder - Expected class is pre-set to class com.sdl.dxa.modules.contentlist.model.ContentTeaser for model EntityModelData(id=4560, componentTemplate=null, linkUrl=null, content=null, binaryContent=null, externalContent=null)
09:33:37.128 [ajp-nio-8214-exec-1] DEBUG o.s.c.a.AnnotationCacheOperationSource - Adding cacheable method 'getMappedModelTypes' with attribute: [Builder[public java.lang.Class com.sdl.webapp.common.impl.model.ViewModelRegistryImpl.getMappedModelTypes(java.util.Set,java.lang.Class) throws com.sdl.webapp.common.exceptions.DxaException] caches=[defaultCache] | key='' | keyGenerator='localizationAwareKeyGenerator' | cacheManager='' | cacheResolver='' | condition='' | unless='' | sync='false']
09:33:37.128 [ajp-nio-8214-exec-1] DEBUG o.s.b.f.s.DefaultListableBeanFactory - Returning cached instance of singleton bean 'localizationAwareKeyGenerator'
09:33:37.128 [ajp-nio-8214-exec-1] DEBUG o.s.b.f.s.DefaultListableBeanFactory - Returning cached instance of singleton bean 'cacheManager'
09:33:37.138 [ajp-nio-8214-exec-1] DEBUG o.s.b.f.s.DefaultListableBeanFactory - Returning cached instance of singleton bean 'genericSemanticModelDataConverter'
09:33:37.138 [ajp-nio-8214-exec-1] DEBUG o.s.b.f.s.DefaultListableBeanFactory - Returning cached instance of singleton bean 'r2modelBuilder'
09:33:37.139 [ajp-nio-8214-exec-1] DEBUG c.s.d.t.m.i.DefaultSemanticFieldDataProvider - No data is found for path FieldPath(head=question, tail=null) for semantic field
09:33:37.145 [ajp-nio-8214-exec-1] DEBUG c.s.d.t.m.i.DefaultSemanticFieldDataProvider - No data is found for path FieldPath(head=answer, tail=null) for semantic field
09:33:37.152 [ajp-nio-8214-exec-1] DEBUG c.s.d.t.m.i.DefaultSemanticFieldDataProvider - No data is found for path FieldPath(head=faqsByTopic, tail=null) for semantic field
09:33:37.155 [ajp-nio-8214-exec-1] DEBUG c.s.d.t.m.i.DefaultSemanticFieldDataProvider - No data is found for path FieldPath(head=active, tail=null) for semantic field
3
  • To bypass the SemanticMappingException, I created a customTeaser to map all FAQs schema fields. Now I don't get the SemanticException, but I get the following: .DefaultSemanticFieldDataProvider - No data is found for path FieldPath(head=question, tail=null) for semantic field
    – Rache
    Apr 1, 2018 at 6:41
  • That error about "ambiguous semantic mapping" looks really fishy: it is reporting the same class 2 times. So, it seems there is not really an ambiguous mapping; this seems to be a bug in DXA. Makes sense to report this on GitHub: github.com/sdl/dxa-web-application-java/issues Apr 5, 2018 at 8:58
  • @RickPannekoek thanks for the reply. Could you suggest some workaround until the bug is fixed? Note that we are already working on a workaround as explained in tridion.stackexchange.com/questions/18689/… Apr 5, 2018 at 10:23

0

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service and acknowledge you have read our privacy policy.

Browse other questions tagged or ask your own question.