Solved
Getting error while accessing current resource
Hi Everyone,
I am trying to create a multifield dialog using sling model but while accessing the values, my code is failing to get current resource. My code is failing inside try block , i am getting null value of current resource. Please help me to understand and resolve this issue.
package com.site.myproj.core.models.impl;
import com.site.myproj.core.models.MultifieldAccordionFAQModel;
import org.apache.sling.api.SlingHttpServletRequest;
import org.apache.sling.api.resource.Resource;
import org.apache.sling.models.annotations.Default;
import org.apache.sling.models.annotations.DefaultInjectionStrategy;
import org.apache.sling.models.annotations.Model;
import org.apache.sling.models.annotations.injectorspecific.ValueMapValue;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import javax.inject.Inject;
import java.util.ArrayList;
import java.util.HashMap;
import java.util.List;
import java.util.Map;
@Model(
adaptables = SlingHttpServletRequest.class,
adapters = MultifieldAccordionFAQModel.class,
defaultInjectionStrategy = DefaultInjectionStrategy.OPTIONAL
)
public class MultifieldAccordionFAQModelImpl implements MultifieldAccordionFAQModel {
private static final Logger LOG = LoggerFactory.getLogger(MultifieldAccordionFAQModelImpl.class);
@Inject
Resource componentResource;
@ValueMapValue
@Default( values = "FAQ's Default")
private String accordionHeading;
@Override
public String getAccordionHeading() {
return accordionHeading;
}
@Override
public List<Map<String, String>> getAccordionDetails() {
List<Map<String,String>> accordionDetailsMap = new ArrayList<>();
try{
LOG.debug("Component Resource>> {}", componentResource);
Resource accordionParentNode = componentResource.getChild("accordionDetails");
LOG.debug("accordionParentNode >> {}", accordionParentNode);
if(accordionParentNode != null){
for( Resource accordion : accordionParentNode.getChildren()){
Map<String, String> accordionsMap = new HashMap<>();
accordionsMap.put("accordionTitle",accordion.getValueMap().get("accordionTitle", String.class));
accordionsMap.put("accordionDescription",accordion.getValueMap().get("accordionDescription", String.class));
accordionDetailsMap.add(accordionsMap);
}
}
}catch ( Exception e){
LOG.debug("<< Error occured during MultifieldAccordionModelImpl Implementation >> {}", e.getMessage());
}
return accordionDetailsMap;
}
}