TagManager.getNameSpaces giving null | Community
Skip to main content
Level 2
Sep 27, 2019 11:38 AM UTC
Solved

TagManager.getNameSpaces giving null

Hi Experts,

Whenever I am trying to do TagManager.getNameSpaces()
or TagManager.getTags(resource)

I am getting null pointer Exception.

My Tags are present under /content/cq:tags/

Also I have installed Service Pack 6.4.3

Also  resourceResolver is having readSystem as subservice.

Can you anyone help on this?

This post is no longer active and is closed to new replies. Need help? Start a new post to ask your question.
ArpitVarshney
ArpitVarshneyAccepted solution
New Participant
Oct 9, 2019 10:32 AM UTC

Hi sagarv13144480 ,

As you're using the service user to read the tags.Can you please make sure the below things:

  • After creating the service user , you need to add an entry in the “Apache Sling Service User Mapper Service”. This entry is to allow your bundle to access the permissions of the system user.Go to Configuration Manager in the system console and search for “User Mapper Service”

          <bundle symbolic name>:<any name of service>=<system user id>

         Reference: How to get Service Resource Resolver? – Rahul Mengji

  • Check whether the service user has read permission to appropriate folder(/content/cq:tags).Please verify this on  http://<host>:port/useradmin URL and search for service user and check the permissions

10 replies

ArpitVarshney
ArpitVarshneyAccepted solution
New Participant
Oct 9, 2019 10:32 AM UTC

Hi sagarv13144480 ,

As you're using the service user to read the tags.Can you please make sure the below things:

  • After creating the service user , you need to add an entry in the “Apache Sling Service User Mapper Service”. This entry is to allow your bundle to access the permissions of the system user.Go to Configuration Manager in the system console and search for “User Mapper Service”

          <bundle symbolic name>:<any name of service>=<system user id>

         Reference: How to get Service Resource Resolver? – Rahul Mengji

  • Check whether the service user has read permission to appropriate folder(/content/cq:tags).Please verify this on  http://<host>:port/useradmin URL and search for service user and check the permissions
Translate
New Participant
Oct 9, 2019 10:18 AM UTC

Hi,

I think its because, the sling request is not sent in your servlet.I also faced the same issue.Try using sling request in resource resolver.I Hope it will work.

private static final String tagid = "/content/cq:tags/properties";

TagManager tagManager = slingRequest.getResourceResolver().adaptTo(TagManager.class);

Tag tag = tagManager.resolve(tagid);

Resource resource = slingRequest.getResourceResolver().getResource(tagid);

Tag[] pagetag = tagManager.getTags(resource);

out.print(tag.getNamespace());

Translate
joerghoh
Employee
Oct 4, 2019 8:45 PM UTC

A resource can also be adapted to the TagManager.

Translate
joerghoh
Employee
Oct 4, 2019 8:45 PM UTC

To see the full list of available adaptions please check [1].

[1] localhost:4502/system/console/adapters

Translate
BrijeshYadav
Level 5
Oct 2, 2019 12:38 PM UTC

At line number 3.

adapt TagManager from ResourceResolver instead of Resource.

TagManager tagManager = resourceResolver.adaptTo(TagManager.class);

Translate
joerghoh
Employee
Oct 1, 2019 9:26 PM UTC

In which statement do you get the NPE? Please ensure that you check the return value of the adaptTo() call. But also resourceResolver.getResource() can return null if the resource does not exist.

Does your service user have read permission on /content/cq:tags?

Translate
Level 2
Sep 30, 2019 6:47 AM UTC

Hi

resourceResolver = resourceResolverFactory.getServiceResourceResolver(Map having readSystem subservice)

Resource resource = resourceResolver.getResource("/content/cq:Tags");

TagManager tagMgr = resource.adaptTo(TagManager.class);

Tag[] Tags = tagMgr.getNamespaces();

Translate
joerghoh
Employee
Sep 29, 2019 4:46 PM UTC

How have you acquired the TagManager? What kind of resource resolver are you using?

Translate
Level 2
Sep 28, 2019 11:27 AM UTC

Hi Arun,

resourceResolver is not null and I am doing the same as suggested by you hence confused.

Is it a bug?

Translate
arunpatidar
New Participant
Sep 27, 2019 6:02 PM UTC

Hi,

Can you please check if resourceResolver is not null?

If it is not null, then you can do

TagManager tm = resourceResolver.adaptTo(TagManager.class)

tm.getNameSpaces()

TagManager ("The Adobe AEM Quickstart and Web Application.")

Translate
Arun Patidar