azus_Khan
azus_Khan
25-01-2019
I am trying to access page properties using services in AEM 6.4
I have created an interface,
public interface AccessPageProp {
public String getPageProp();
}
I have created a class that implements this interface,
@Component(service = AcccessPagePropImpl.class, immediate = true)
public class AcccessPagePropImpl implements AccessPageProp {
Logger logger = LoggerFactory.getLogger(AcccessPagePropImpl.class);
@Reference
private ResourceResolverFactory resolverFactory;
@Override
public String getPageProp() {
logger.info("Entering into getPageProp()...");
String title = "";
Map<String, Object> param = new HashMap<String, Object>();
param.put(ResourceResolverFactory.SUBSERVICE, "readService");
ResourceResolver resourceResolver = null;
try {
resourceResolver = resolverFactory.getServiceResourceResolver(param);
Resource pageResource = resourceResolver.getResource("/content/MyProject/en/TestPageName/jcr:content");
Page myPage = pageResource.adaptTo(Page.class);
title = myPage.getTitle();
return title;
} catch (Exception e) {
logger.info("Exception...."+e.toString());
e.printStackTrace();
}
return title;
}
}
I am getting "java.lang.NullPointerException" in line "resourceResolver = resolverFactory.getServiceResourceResolver(param);"
Gaurav-Behl
MVP
Gaurav-Behl
MVP
25-01-2019
What versions of scr-annotations, maven-bundle-plugin and uber-jar do you use in 6.4?
Can you check in /system/console/bundles and /components that the service is generated/active?
Check if you have assigned appropriate permissions to the "readService" against the package name of bundle.
Could you also share the stack trace?
smacdonald2008
smacdonald2008
25-01-2019
Looks like you Sling Service Mapping may not have been configured properly. DId you use the Symbolic name of the OSGi bundle?
As @Gaurav Behl mentions too - ensure that your system user has the correct permissions.
I strongly recommend that you go through this HELPX Article. It will walk you through this use case on 6.4:
It even uses the PageManager API.
azus_Khan
azus_Khan
27-01-2019
I used the Symbolic name of my OSGi Bundle in user mapper service, I gave all the required permissions to my system user and I followed this article too but still I am getting Null Pointer Exception.
Veena_Vikram
MVP
Veena_Vikram
MVP
28-01-2019
Can you please paste the error log here. I doubt there should be something we can figure out from the error logs itself .
PS:- Do cross verify the imports for your @Reference .
azus_Khan
azus_Khan
28-01-2019
I used below import statement for @Reference
import org.osgi.service.component.annotations.Reference;
I used logger to print exception in my catch block like,
catch (Exception e) {
logger.info("Exception...." + e.toString());
e.printStackTrace();
}
It prints the below message,
com.myproject.core.AcccessPagePropImpl Exception....java.lang.NullPointerException
Gaurav-Behl
MVP
Gaurav-Behl
MVP
28-01-2019
What versions of scr-annotations, maven-bundle-plugin and uber-jar do you use in 6.4?
Can you check in /system/console/bundles and /components that the service is generated/active?
Veena_Vikram
MVP
Veena_Vikram
MVP
29-01-2019
Instead of logger.info("Exception...." + e.toString()); Could you replace + with , logger.info("Exception...." +, e);
This should print the entire stack trace for you.
azus_Khan
azus_Khan
29-01-2019
My issue has been resolved when I used getSlingHelper() instead of creating a new object using new keyword in the Activate() method.
AccessPageProp accessPageProp = getSlingScriptHelper().getService(AccessPagePropImpl.class);
karl515-YhciiQ
karl515-YhciiQ
14-05-2019
Hello,
I am getting the error your getting. may I know how did you resolve it?
but I have a different approach.
I am accessing "ResourceResolver resourceResolver = resolverFactory.getServiceResourceResolver(param);:
in a PostConstruct init() class.