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);"
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?
Views
Replies
Total Likes
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.
Views
Replies
Total Likes
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.
Views
Replies
Total Likes
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 .
Views
Replies
Total Likes
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
Views
Replies
Total Likes
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?
Views
Replies
Total Likes
Instead of logger.info("Exception...." + e.toString()); Could you replace + with , logger.info("Exception...." +, e);
This should print the entire stack trace for you.
Views
Replies
Total Likes
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);
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.
Views
Replies
Total Likes
Are your service user available for the bundle ? Do you get any error in the logs ?
Thanks
Veena
Views
Replies
Total Likes
I already have an alternative.
by using
SlingHttpServletRequest request;
request.getResourceResolver().getResource(location);
But I believe I will run into that service method someday. Hope I will not get the error by then.
Thanks!
Views
Replies
Total Likes
Views
Like
Replies