有没有办法以编程方式设置资产的元数据?

时间:2014-07-09 11:57:35

标签: cq5 sling

我在CQ5中添加了名为./dc:sample的自定义元数据。有没有办法可以通过编程方式为资产设置此元数据?

我编写了一个截取上传资源的工作流程,并将其替换为第三方服务发送的inputstream。我通过在工作流程中执行以下操作来实现此目的。

Rendition rendition = resource.adaptTo(Rendition.class);
Asset asset = rendition.getAsset();
InputStream newInputStream = myService.sendFile(is);
asset.addRendition(rendition.getName(),newInputStream,asset.getMimeType());

问题

此时我想将./dc:sample元数据设置为类似“test checking”的字符串。这可能吗?

1 个答案:

答案 0 :(得分:2)

您可以调整AssetResource,获取其jcr:content/metadata孙子并将其调整为ModifiableValueMap

Resource metadataRes = asset.adaptTo(Resource.class).getChild("jcr:content/metadata");
ModifiableValueMap map = metadataRes.adaptTo(ModifiableValueMap.class);
map.put("dc:sample", "test checking");
resourceResolver.commit();