Accessing Component Level Policy Using PolicyManager | Community
Skip to main content
Level 2
January 31, 2021
Solved

Accessing Component Level Policy Using PolicyManager

  • January 31, 2021
  • 2 replies
  • 1125 views

AEM version : 6.5

I have created a proxy component for the OOTB Carousel Component. Now I have defined a custom parameter or a field in the cq:design_dialog. ( as shown in image given below )

 

 Now i have authored the aforementioned parameters by editing the component policy as shown below


Now after saving this , Its stored as follows ( Please refer below image )



How do i access this particular property programmatically ?

I did created a sling model as given below And i am trying to access the same in Sightly

public class CarouselPolicy { @SlingObject private ResourceResolver resourceResolver; /** The resource. */ @1961677 private Resource resource; private int carouselItemLimit; private static final Logger LOG = LoggerFactory.getLogger(CarouselPolicy.class); @PostConstruct public void init(){ ContentPolicyManager policyManager = resourceResolver.adaptTo(ContentPolicyManager.class); if (policyManager != null) { ContentPolicy contentPolicy = policyManager.getPolicy(resource); if (contentPolicy != null) { LOG.trace("carouselItemLimit "+carouselItemLimit); carouselItemLimit= (Integer) contentPolicy.getProperties().get("carouselItemLimit"); } } } /** * @2007960 carouselItemLimit */ public int getCarouselItemLimit() { return carouselItemLimit; } }

 

The contentPolicy is coming as Null. Is this the correct approach ? What am i missing here ?  

 



This post is no longer active and is closed to new replies. Need help? Start a new post to ask your question.
Best answer by Umesh_Thakur

I suspect that, there are some issues with the ResourceResolver And Resource. If you are getting resouceResolver from @slingObject then it seems your model is adaptables to request then in this case it seems your resource is not returnign the proper resource that you need.

so better to check the path of the resource with the help of log.

If you have proper resource then you can get the Valuemap of it and get the required field.

Hope this will help.

 

Umesh Thakur

2 replies

SureshDhulipudi
Community Advisor
Community Advisor
February 1, 2021


what adapter are you passing on your Sling Model.
adapters = {Carousel.class)

Umesh_Thakur
Community Advisor
Umesh_ThakurCommunity AdvisorAccepted solution
Community Advisor
February 1, 2021

I suspect that, there are some issues with the ResourceResolver And Resource. If you are getting resouceResolver from @slingObject then it seems your model is adaptables to request then in this case it seems your resource is not returnign the proper resource that you need.

so better to check the path of the resource with the help of log.

If you have proper resource then you can get the Valuemap of it and get the required field.

Hope this will help.

 

Umesh Thakur