Your achievements

Level 1

0% to

Level 2

Tip /
Sign in

Sign in to Community

to gain points, level up, and earn exciting badges like the new
Bedrock Mission!

Learn more

View all

Sign in to view all badges

SOLVED

Getting a Custom Object from CIF's Product class

cobregon
Level 1
Level 1

Hi!

 

There's a Product in Magento which has a custom attribute. If I run this GraphQL:

{products(filter: { sku: { eq: "HAMC8489B717" } }) {items {name product_performances}}}

I get this answer:

{
  "data": {
    "products": {
      "items": [
        {
          "name": "252",
          "product_performances": "[{\"record_id\":\"0\",\"title\":\"Performance Title1\",\"description\":\"Performance Description\",\"icon\":[{\"type\":\"image\\/jpeg\",\"name\":\"A33A8D44-E98C-4C95-94B9-3CA1A29ECEF9.jpeg\",\"size\":\"346408\",\"url\":\"\\/media\\/catalog\\/category\\/A33A8D44-E98C-4C95-94B9-3CA1A29ECEF9.jpeg\",\"previewType\":\"image\",\"id\":\"QTMzQThENDQtRTk4Qy00Qzk1LTk0QjktM0NBMUEyOUVDRUY5LmpwZWc,\"}]},{\"record_id\":\"1\",\"title\":\"Performance Title2\",\"description\":\"Performance Description2\",\"icon\":[{\"type\":\"image\\/jpeg\",\"name\":\"image_resized_card.jpeg\",\"size\":\"43256\",\"url\":\"\\/media\\/catalog\\/category\\/image_resized_card.jpeg\",\"previewType\":\"image\",\"id\":\"aW1hZ2VfcmVzaXplZF9jYXJkLmpwZWc,\"}]}]"
        }
      ]
    }
  }
}

In my code I'm doing this:

@Self
@Via(type= ResourceSuperType.class)
private Product product;

@PostConstruct
private void init() {
AbstractProductRetriever productRetriever = product.getProductRetriever();
if (Objects.nonNull(productRetriever)) {
CustomFieldQueryDefinition queryDefinition = q -> q.addCustomSimpleField("title");
productRetriever.extendProductQueryWith(q -> q.addCustomObjectField(PRODUCT_PERFORMANCES, queryDefinition));
}
}

The Product Retriever is not being null but if I tried to do something product I get a NPE:

 

at com.adobe.cq.commerce.core.components.models.retriever.AbstractProductRetriever.populate(AbstractProductRetriever.java:217)

 

If I remove the two lines in the if statement, no exception is thrown.

 

What's the correct way to retrieve data from a Custom Object in CIF?

 

Thanks

 

1 Accepted Solution
Asutosh_Jena_
Correct answer by
Community Advisor
Community Advisor
1 Reply
Asutosh_Jena_
Correct answer by
Community Advisor
Community Advisor