Hello,
I am trying to modify metadata/dc:description when I create an asset, but changes does not commited on CRX.
My asset is a PDF and my code:
Asset assetFitxer = assetManager.createAsset(pathDAM, inStream, mimeType, true);
Resource metadataRes = assetFitxer.adaptTo(Resource.class).getChild("jcr:content/metadata");
ModifiableValueMap map = metadataRes.adaptTo(ModifiableValueMap.class);
map.put("dc:description", newCode);
ResourceResolver rs = metadataRes.getResourceResolver();
rs.commit();
--> PDF's file has own metadata and I need to modify dc:description
If I did commit before to change metadata and after it, changes do not save yet.
I think workflow dam asset does not end before I try to change dc:description, so metadata field has original value.
Any suggestions?
Thanks!
Views
Replies
Total Likes
can you try like, after creating the asset :
AssetManager assetManager = resourceResolver.adaptTo(AssetManager.class);
Asset assetFitxer = assetManager.createAsset(pathDAM, inStream, mimeType, true);
resourceResolver.commit();
resourceResolver.refresh();
Then get the resource and update/set the dc:description property
Can you try like ValueMap
ValueMap map = metadataRes.adaptTo(ModifiableValueMap.class);
map.put("dc:description", newCode);
or
can you adaptTo Node node and set the property
metadata = node.getNode("jcr:content/metadata");
metadata.setProperty("dam:sha1").getString()dc:description", newCode);
Hi @abcr1
Try below code which I used a while ago. Hope this works for you as well.
AssetManager assetManager = resourceResolver.adaptTo(AssetManager.class);
Asset newAsset = assetManager.createAsset(assetPath, is, mimeType, true);
Node asssetNode = newAsset.adaptTo(Node.class);
Node jcr_content = (asssetNode != null && asssetNode.hasNode("jcr:content")) ? asssetNode.getNode("jcr:content") : null;
Node metadata = (jcr_content != null && jcr_content.hasNode("metadata")) ? jcr_content.getNode("metadata") : null;
metadata.setProperty("dc:description", "value");
metadata.getSession().save();
AG
Hi @Anudeep_Garnepudi , I execute this code on a service in a step on own workflow. I create an asset, a pdf file wich has previous metadata. Then, I need to modify its dc:description with a new value.
My code is simple:
Asset assetFitxer = assetManager.createAsset(pathDAM, inStream, mimeType, true);
Resource metadataRes = assetFitxer.adaptTo(Resource.class).getChild("jcr:content/metadata");
ResourceResolver rs = metadataRes.getResourceResolver();
rs.commit();
Thread.sleep(5000); --> sometimes it works, I think it depends on executime time on update asset workflow not?
ModifiableValueMap map = metadataRes.adaptTo(ModifiableValueMap.class);
map.put("dc:description", codiEADOP);
rs.commit();
Thanks!
Views
Likes
Replies
Views
Likes
Replies