2014-07-09 2 views
1

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 메타 데이터를 설정하려는이 시점에서 질문

. 가능한가요?

답변

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

ModifiableValueMap'은'2.5.0'에서 사용할 수'것으로 보인다. 나는 2.2.4를 사용했다. 내 POM 버전을 변경하고 코드가 컴파일되고 번들이 작성됩니다. 그러나이 번들을 CQ5에 업로드하면 오류가 발생합니다 :'번들에 해결되지 않은 제약 [345] : 해결할 수 없습니다 345.0 : 누락 된 요구 사항 [345.0] osgi.wiring.package; (버전 (= 3.0.0)))))' – Anthony

+0

기본적으로 번들이 설치되어 있습니다 (& osgi.wiring.package = org.apache.sling.api.resource) (버전> = 2.4.0) '2.4.3.R1488084' 버전의'Apache Sling API (org.apache.sling.api)'. 내가 그것을 삭제하고'2.5.0'을 업로드해야합니까? CQ5에서 다른 것들을 깨뜨릴 수 있습니까? – Anthony

+0

[이 답변] (http://stackoverflow.com/questions/24663090/how-to-set-a-resource-property/24663091#24663091)은 다양한 슬링 및 CQ 버전에서 속성을 설정하는 몇 가지 방법을 제공합니다. –

관련 문제