Your achievements

Level 1

0% to

Level 2

Tip /
Sign in

Sign in to Community

to gain points, level up, and earn exciting badges like the new
Bedrock Mission!

Learn more

View all

Sign in to view all badges

SOLVED

TagManager.getNameSpaces giving null

sagarv13144480
Level 3
Level 3

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?

1 Accepted Solution
ArpitVarshney
Correct answer by
Community Advisor
Community Advisor

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

View solution in original post

0 Replies
Arun_Patidar
Community Advisor
Community Advisor

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

sagarv13144480
Level 3
Level 3

Hi Arun,

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

Is it a bug?

Jörg_Hoh
Employee
Employee

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

sagarv13144480
Level 3
Level 3

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

Jörg_Hoh
Employee
Employee

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?

BrijeshYadav
Level 5
Level 5

At line number 3.

adapt TagManager from ResourceResolver instead of Resource.

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

Jörg_Hoh
Employee
Employee

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

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

Jörg_Hoh
Employee
Employee

A resource can also be adapted to the TagManager.

ragulmsd
Level 1
Level 1

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

ArpitVarshney
Correct answer by
Community Advisor
Community Advisor

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