2014-01-13 5 views
0

Jackrabbit 노드 내용이 한 경로에서 다른 경로로 이동하는 문제가 있습니다.JCR 이동 내용

노드 아래의 문서 목록 (jcr의 임시 노드에서)을 새 경로 (문서가없는 새 노드)로 이동하려고합니다.

노드는 믹스 인 유형입니다.

다음은 문서 노드를 생성하는 부분 조각입니다 :

/** 
* Document node 
*/ 
[et:document] > nt:file, mix:title, mix:versionable, mix:shareable 
+ * (nt:file) VERSION 
- et:tags multiple 
- et:role multiple 
- et:id (LONG) 

는 JCR API 자체를 사용하는 대신 모든 하위 노드가 반복 받고 내용을 이동 구함 : 노드 유형 설명

Node documentNode = session.getNode("/1/doc/1").addNode("Test_Sample", "et:document"); 
documentNode.setProperty(PROPERTY_ID, 123); 
documentNode.setProperty(Property.JCR_TITLE, "Test Sample"); 
documentNode.setProperty(Property.JCR_DESCRIPTION, "Sample Description"); 
documentNode.setProperty(ETNodeTypes.ET_TAGS.getName(), "web"); 

Node resourceNode = documentNode.addNode (Property.JCR_CONTENT, "nt:resource"); 
resourceNode.setProperty (Property.JCR_MIMETYPE, "application/xstream"); 
resourceNode.setProperty (Property.JCR_ENCODING, "UTF-8"); 
Binary value = session.getValueFactory().createBinary(new ByteArrayInputStream(document.getData())); 
resourceNode.setProperty (Property.JCR_DATA, value); 

Calendar lastModified = Calendar.getInstance(); 
resourceNode.setProperty (Property.JCR_LAST_MODIFIED, lastModified); 
session.save(); 

VersionManager versionManager = session.getWorkspace().getVersionManager(); 
documentNode.addMixin(JcrConstants.MIX_VERSIONABLE); 
versionManager.checkin(documentNode.getPath()); 
doc.setVersionNumber(versionManager.getBaseVersion(documentNode.getPath()).getName()); 
return documentNode.getIdentifier(); 

대상 폴더로 이동합니다.

JCR 2.0과 함께 Jackrabbit 코어 2.6.0 사용.

답변

0

정확한 문제가 확실하지 않은 경우 Session.move 또는 Workspace.move을 사용하여 노드를 이동할 수 있습니다. API 문서는 링크를 통해 차이점을 설명합니다.

목표 노드 정의가 이동중인 노드 유형을 허용하는지 또는 nt:unstructured 대상 노드를 사용하여 노드 유형을 허용하는지 확인하십시오.