Highlighted

NullPointerException in resolverFactory.getServiceResourceResolver(param)

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);"

Replies

Highlighted

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?

Highlighted

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:

Adobe Experience Manager Help | Using the Sling Strongly-typed API to retrieve content from Adobe Ex...

It even uses the PageManager API.

Highlighted

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.

Highlighted

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 .

Highlighted

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

Highlighted

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?

Highlighted

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.

Highlighted

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);

Highlighted

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.