Expand my Community achievements bar.

SOLVED

Adapting metadata node to object is returning null

Avatar

Level 4

I need to adapt document metadata node to an object. The code is as below. But the object returns null. Did anyone face similar issue?

Resource resource = resourceResolver.getResource(destinationPath+"/"+JcrConstants.JCR_CONTENT+"/metadata");

DocumentInfo documentInfo = resource.adaptTo(DocumentInfo.class);

1 Accepted Solution

Avatar

Correct answer by
Employee Advisor

Hi,

I don't know the DocumentInfo class, can you please give the full package name? Is there an adapter factory available for this at all? Check localhost:4502/system/console/adapters if an adapter with adapter class "Resource.class" and adaptable class "DocumentInfo.class" is registered.

adaptTo() is allowed to return "null" in case the adaption fails. Depending on the adapter factory the reasons are logged or not. So we clearly need to know much more information about the resource (or sub-resources) you are trying to adapt.

Jörg

View solution in original post

11 Replies

Avatar

Level 6

Can you pls confirm whats the mine type of  resource of destinationPath is ?

Avatar

Level 10

We have seen this issue with events. If you are using a System user - try using the Admin call and whitelist the bundle. See if that helps resolve this.

Avatar

Level 4

Hi smacdonald2008​,

Thanks for the reply. I tried this too, but it doesn't work. Still the object returns null.

Thanks,

Anusha

Avatar

Level 4

Hi,

The mime type is application/pdf.

Thanks,
Anusha

Avatar

Level 10

We will start this use case for an article near end of  the week.

Avatar

Level 4

Thanks smacdonald2008​. I will wait for the document.

Asset asset = resource.adaptTo(Asset.class);  is also returning null.

Avatar

Community Advisor

Hi,

Reason is why you getting null after adopting because the resource you get from path is not Asset or DocumentInfo type its a Node.

Try like this as a Node and use Node api to deal with properties

Resource resource = resourceResolver.getResource(destinationPath+"/"+JcrConstants.JCR_CONTENT+"/metadata");

Node documentNode = resource.adaptTo(Node.class);

or Like this as a proper resource and use respective API.

Resource resource = resourceResolver.getResource(destinationPath);

DocumentInfo documentInfo = resource.adaptTo(DocumentInfo.class);

/Brijesh Yadav

Avatar

Level 10

Also here is new API to work with assets. Assets HTTP API

Avatar

Correct answer by
Employee Advisor

Hi,

I don't know the DocumentInfo class, can you please give the full package name? Is there an adapter factory available for this at all? Check localhost:4502/system/console/adapters if an adapter with adapter class "Resource.class" and adaptable class "DocumentInfo.class" is registered.

adaptTo() is allowed to return "null" in case the adaption fails. Depending on the adapter factory the reasons are logged or not. So we clearly need to know much more information about the resource (or sub-resources) you are trying to adapt.

Jörg

Avatar

Level 4

Thanks Jorg. I could figure out the issue now. DocumentInfo is a custom class that we have created. We are posting assets to DAM and have additional properties added to metadata.

Currently we are migrating from AEM 6.1 to 6.3. I missed the configuration for making DocumentInfo adaptable. I have added the same and now it is available in "/system/console/adapters" and working as expected.