Expand my Community achievements bar.

SOLVED

Accessing Component Level Policy Using PolicyManager

Avatar

Level 2

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 )

 

titusrk_1-1612099933512.png

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

titusrk_2-1612100084330.png


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

titusrk_3-1612100377051.png

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. */
    @Deleted Account
    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");
            }
        }
    }

    /**
     * @Return carouselItemLimit
     */
    public int getCarouselItemLimit() {
        return carouselItemLimit;
    }
}

 

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

 



1 Accepted Solution

Avatar

Correct answer by
Community Advisor

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

View solution in original post

2 Replies

Avatar

Community Advisor


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

Avatar

Correct answer by
Community Advisor

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