Duplicate properties resourceapi SPA response

Hi all.

I’ve just took over a project that is working on a SPA with Brx version 14.7
First issue I found is the big amout of duplicate properties that the site is generating for the front end.

As you can see in this example, some elements such as headercomponent or metadata are duplicated (one with camel case and one with lower case). Inside this elements you can find again more duplicated elements with the same pattern.

Having a look at the beans:

I figured out that adding @PageModelIgnore in the getter methods that match with the duplicate elements fix my problem (elements in camel case are gone now), but not sure if this is a proper fix or just a workarroud. I’ll like to know from where comes all this mess in the response.

Best regards.

Hi @Alvaro_Rojas,

Could you please share the yaml definition of xxx:contentdocument so we can check?
Also, is there a reason why @XmlRootElement, @XmlAccessorType, @XmlElement annotations are used in the content bean?

Regards,
Erdem

Thanks @Erdem_Karakus for having a look.
This is how the xxx:contentdocument looks like (I guess you are looking for duplicated nodes on the namespaces, I can’t see anything strange there):

Regarding your question about @Xml annotations, I dont have an answer yet about why is it there, but I removed it from the content bean an nothing happens (duplicated elements still on the json response).

Best regards.

definitions:
  config:
    /hippo:namespaces/xxx/contentdocument:
      jcr:primaryType: hipposysedit:templatetype
      jcr:mixinTypes: ['editor:editable', 'mix:referenceable']
      jcr:uuid: e0a4ae26-d7ab-44eb-8021-2f796d04428f
      /hipposysedit:nodetype:
        jcr:primaryType: hippo:handle
        jcr:mixinTypes: ['mix:referenceable']
        jcr:uuid: 90f823a1-afe5-48cd-a94c-386259eef75b
        /hipposysedit:nodetype:
          jcr:primaryType: hipposysedit:nodetype
          jcr:mixinTypes: ['hipposysedit:remodel', 'mix:referenceable']
          jcr:uuid: 53066179-a3ba-4e8c-a23f-8fa77d643a96
          hipposysedit:node: true
          hipposysedit:supertype: ['xxx:basedocument', 'hippostd:relaxed', 'hippotranslation:translated']
          hipposysedit:uri: http://www.xxx.com/xxx/nt/1.0
          /contentblocks:
            jcr:primaryType: hipposysedit:field
            hipposysedit:multiple: true
            hipposysedit:ordered: true
            hipposysedit:path: xxx:contentblocks
            hipposysedit:type: hippo:compound
            hipposysedit:validators: [contentblocks-validator]
          /headercomponent:
            jcr:primaryType: hipposysedit:field
            hipposysedit:mandatory: false
            hipposysedit:multiple: false
            hipposysedit:ordered: false
            hipposysedit:path: xxx:headercomponent
            hipposysedit:primary: false
            hipposysedit:type: xxx:headercomponent
            hipposysedit:validators: [optional]
          /metadata:
            jcr:primaryType: hipposysedit:field
            hipposysedit:mandatory: false
            hipposysedit:multiple: false
            hipposysedit:ordered: false
            hipposysedit:path: xxx:metadata
            hipposysedit:primary: false
            hipposysedit:type: xxx:metadata
      /hipposysedit:prototypes:
        jcr:primaryType: hipposysedit:prototypeset
        /hipposysedit:prototype:
          jcr:primaryType: xxx:contentdocument
          jcr:mixinTypes: ['mix:referenceable']
          jcr:uuid: f3c54af6-e2ac-4a23-bdf2-7e6a56f5b961
          hippo:related___pathreference: []
          hippostd:holder: holder
          hippostd:state: draft
          hippostdpubwf:createdBy: ''
          hippostdpubwf:creationDate: 2014-03-25T10:56:00+01:00
          hippostdpubwf:lastModificationDate: 2014-03-25T10:56:00+01:00
          hippostdpubwf:lastModifiedBy: ''
          hippotranslation:id: document-type-locale-id
          hippotranslation:locale: document-type-locale
          /xxx:headercomponent:
            jcr:primaryType: xxx:headercomponent
            jcr:mixinTypes: ['hippostd:publishableSummary', 'hippostdpubwf:document',
              'hippotranslation:translated', 'mix:referenceable']
            jcr:uuid: 45fa6646-5bd0-4223-a6b9-5d95c35d2e50
            xxx:imageSlanted: false
            xxx:introtitle: ''
            xxx:subtitle: ''
            xxx:text: ''
            xxx:title: ''
            hippostd:holder: holder
            hippostd:state: draft
            hippostdpubwf:createdBy: ''
            hippostdpubwf:creationDate: 2020-10-22T14:28:41.145+02:00
            hippostdpubwf:lastModificationDate: 2020-10-22T14:28:41.144+02:00
            hippostdpubwf:lastModifiedBy: ''
            hippotranslation:id: document-type-locale-id
            hippotranslation:locale: document-type-locale
            xxx:breadcrumbs: false
            /xxx:calltoaction:
              jcr:primaryType: xxx:calltoaction
              xxx:buttonText: ''
              /xxx:buttonLink:
                jcr:primaryType: hippo:mirror
                hippo:docbase: cafebabe-cafe-babe-cafe-babecafebabe
              /xxx:calltoactionextern:
                jcr:primaryType: xxx:calltoactionextern
                xxx:linkextern: ''
            /xxx:image:
              jcr:primaryType: hippogallerypicker:imagelink
              hippo:docbase: cafebabe-cafe-babe-cafe-babecafebabe
              hippo:facets: []
              hippo:modes: []
              hippo:values: []
            /xxx:headercard:
              jcr:primaryType: xxx:headercard
              xxx:title: ''
              xxx:usp: ['']
              /xxx:calltoaction:
                jcr:primaryType: xxx:calltoaction
                xxx:buttonText: ''
                /xxx:buttonLink:
                  jcr:primaryType: hippo:mirror
                  hippo:docbase: cafebabe-cafe-babe-cafe-babecafebabe
                /xxx:calltoactionextern:
                  jcr:primaryType: xxx:calltoactionextern
                  xxx:linkextern: ''
              /xxx:imagelink:
                jcr:primaryType: hippogallerypicker:imagelink
                hippo:docbase: cafebabe-cafe-babe-cafe-babecafebabe
                hippo:facets: []
                hippo:modes: []
                hippo:values: []
              /xxx:icon:
                jcr:primaryType: hippogallerypicker:imagelink
                hippo:docbase: cafebabe-cafe-babe-cafe-babecafebabe
                hippo:facets: []
                hippo:modes: []
                hippo:values: []
          /xxx:metadata:
            jcr:primaryType: xxx:metadata
            xxx:googleindex: true
            xxx:metadescription: ''
            xxx:metatitle: ''
            xxx:ogdescription: ''
            xxx:ogtitle: ''
            xxx:structureddata: ''
            xxx:index: true
            /xxx:ogimage:
              jcr:primaryType: hippogallerypicker:imagelink
              hippo:docbase: cafebabe-cafe-babe-cafe-babecafebabe
              hippo:facets: []
              hippo:modes: []
              hippo:values: []
      /editor:templates:
        jcr:primaryType: editor:templateset
        /_default_:
          jcr:primaryType: frontend:plugincluster
          frontend:properties: [mode]
          frontend:references: [wicket.model, model.compareTo, engine, validator.id]
          frontend:services: [wicket.id, validator.id]
          type: xxx:contentdocument
          /root:
            jcr:primaryType: frontend:plugin
            extension.left: ${cluster.id}.left
            extension.right: ${cluster.id}.right
            plugin.class: org.hippoecm.frontend.editor.layout.TwoColumn
            wicket.extensions: [extension.left, extension.right]
          /left:
            jcr:primaryType: frontend:plugin
            item: ${cluster.id}.left.item
            plugin.class: org.hippoecm.frontend.service.render.ListViewPlugin
            wicket.id: ${cluster.id}.left
          /right:
            jcr:primaryType: frontend:plugin
            item: ${cluster.id}.right.item
            plugin.class: org.hippoecm.frontend.service.render.ListViewPlugin
            wicket.id: ${cluster.id}.right
          /headercomponent:
            jcr:primaryType: frontend:plugin
            caption: headercomponent
            field: headercomponent
            plugin.class: org.hippoecm.frontend.editor.plugins.field.NodeFieldPlugin
            wicket.id: ${cluster.id}.left.item
            hint: ''
            /cluster.options:
              jcr:primaryType: frontend:pluginconfig
          /contentblocks:
            jcr:primaryType: frontend:plugin
            caption: Description items
            compoundList: xxx:ankeilercomponent,xxx:articleconversionblock,xxx:faqlistcomponent,xxx:insurednotinsured,xxx:linkblockcomponent,xxx:paragraphcomponent,xxx:relatedarticle,xxx:relatedarticles,xxx:reusablecomponent,xxx:salesblockcomponent,xxx:searchheader,xxx:servicelistcomponent,xxx:tipblockcomponent,xxx:toggletablistcomponent,xxx:uspblockcomponent,
              xxx:partialinsuredlist
            contentPickerType: links
            field: contentblocks
            plugin.class: org.onehippo.forge.contentblocks.ContentBlocksFieldPlugin
            wicket.id: ${cluster.id}.left.item
            hint: ''
            /cluster.options:
              jcr:primaryType: frontend:pluginconfig
              showCompoundNames: true
          /metadata:
            jcr:primaryType: frontend:plugin
            caption: metadata
            field: metadata
            plugin.class: org.hippoecm.frontend.editor.plugins.field.NodeFieldPlugin
            wicket.id: ${cluster.id}.right.item
            hint: ''
            /cluster.options:
              jcr:primaryType: frontend:pluginconfig