새 리포지토리가 인스턴스화 될 때 Apache Jackrabbit에 대한 사용자 정의 node types을 등록 할 수있는 방법이 있습니까?Apache Jackrabbit에서 사용자 정의 노드 정의를 구성하는 방법은 무엇입니까?
나는 Apache Maven을 사용하고 Jetty 실행하는 JUnit 및 통합 테스트를 실행하는 일부 단위 테스트를 쉽게 업을 설정하고 눈물 다운 테스트 저장소를 할 수 있도록하려면 내 빌드를 자동화하고 있습니다.
새 리포지토리가 인스턴스화 될 때 Apache Jackrabbit에 대한 사용자 정의 node types을 등록 할 수있는 방법이 있습니까?Apache Jackrabbit에서 사용자 정의 노드 정의를 구성하는 방법은 무엇입니까?
나는 Apache Maven을 사용하고 Jetty 실행하는 JUnit 및 통합 테스트를 실행하는 일부 단위 테스트를 쉽게 업을 설정하고 눈물 다운 테스트 저장소를 할 수 있도록하려면 내 빌드를 자동화하고 있습니다.
새로 출시 된 Jackrabbit 2.0.0으로 업그레이드 할 수 있다면 프로그래밍 방식으로 노드 유형을 만들고 등록 할 수 있습니다. 주요 후크는 JSR-283 NodeTypeManager이며 새로운 NodeTypes의 팩토리 및 그 위치를 등록 할 수 있습니다. JUnit 테스트의 설정 방법에 등록하기 만하면됩니다.
nodetypes에 대해서는 확실하지 않지만 패키지 (osgi 번들)를 설치할 때 슬링에 초기 내용을 지정하는 방법이 있습니다. 적어도 당신이 염두에두고있는 것과 비슷하게 들린다.
CND file을 사용하여 노드 유형을 정의하고이 example과 같이 JUnit 테스트 케이스를 등록하도록 구성하는 것이 좋습니다. 가장 적절한 방법은이 구성을 수행하는 추상 테스트 케이스를 정의하는 것입니다.
또한 노드 유형이 전체 저장소가 아닌 작업 공간과 연관되어 있습니다.
아니, 노드 유형은 잭 래빗에서 저장소 전체 설치되고 또한 사양에 의해이 방법을 볼 수 있습니다 . 그 이유는 한 작업 공간에서 다른 작업 공간으로 노드를 복제/복사 할 수 있기 때문에 노드 유형 등록을 분리하는 것이 적절하지 않기 때문입니다. 그렇지 않으면 답을 두 번째로 줄 것입니다. –
Silverpeas의 코드를 살펴볼 수 있습니다. 일부 단위 테스트에서 Apache Jackrabbit을 사용하고 있습니다. 현재 내 dev 브랜치에서 진행중인 작업 : https://github.com/ehsavoie/Silverpeas-Core/tree/feature_82 메모리 리포지토리에서 CND 파일로드 및 봄 테스트. NodeTypeManager에 따르면 DocumentRepositoryTest
에서 예를 들어 봐,이 노드 유형을 생성하는 코드 샘플입니다 :
import javax.jcr.PropertyType;
import javax.jcr.Session;
import javax.jcr.nodetype.NodeType;
import javax.jcr.nodetype.NodeTypeManager;
import javax.jcr.nodetype.NodeTypeTemplate;
import javax.jcr.nodetype.PropertyDefinitionTemplate;
/**
*
* @author Aroniaina
*/
public class FileType {
public static void RegisterFileType(Session session) throws Exception {
NodeTypeManager nodeTypeManager = session.getWorkspace().getNodeTypeManager();
NodeTypeTemplate nodeType = nodeTypeManager.createNodeTypeTemplate();
nodeType.setName("FileType");
String[] str = {"nt:resource"};
nodeType.setDeclaredSuperTypeNames(str);
nodeType.setMixin(false);
nodeType.setQueryable(true);
PropertyDefinitionTemplate path = nodeTypeManager.createPropertyDefinitionTemplate();
path.setName("jcr:path");
path.setRequiredType(PropertyType.PATH);
path.setQueryOrderable(false);
path.setFullTextSearchable(false);
nodeType.getPropertyDefinitionTemplates().add(path);
PropertyDefinitionTemplate nom = nodeTypeManager.createPropertyDefinitionTemplate();
nom.setName("jcr:nom");
nom.setRequiredType(PropertyType.STRING);
nom.setQueryOrderable(true);
nom.setFullTextSearchable(true);
nodeType.getPropertyDefinitionTemplates().add(nom);
PropertyDefinitionTemplate description = nodeTypeManager.createPropertyDefinitionTemplate();
description.setName("jcr:description");
description.setRequiredType(PropertyType.STRING);
description.setQueryOrderable(true);
description.setFullTextSearchable(true);
nodeType.getPropertyDefinitionTemplates().add(description);
PropertyDefinitionTemplate motsCles = nodeTypeManager.createPropertyDefinitionTemplate();
motsCles.setName("jcr:motsCles");
motsCles.setRequiredType(PropertyType.STRING);
motsCles.setQueryOrderable(true);
motsCles.setFullTextSearchable(true);
nodeType.getPropertyDefinitionTemplates().add(motsCles);
PropertyDefinitionTemplate size = nodeTypeManager.createPropertyDefinitionTemplate();
size.setName("jcr:size");
size.setRequiredType(PropertyType.STRING);
size.setQueryOrderable(true);
size.setFullTextSearchable(false);
nodeType.getPropertyDefinitionTemplates().add(size);
PropertyDefinitionTemplate users = nodeTypeManager.createPropertyDefinitionTemplate();
users.setName("jcr:users");
users.setRequiredType(PropertyType.STRING);
users.setQueryOrderable(true);
users.setFullTextSearchable(false);
nodeType.getPropertyDefinitionTemplates().add(users);
PropertyDefinitionTemplate groupe = nodeTypeManager.createPropertyDefinitionTemplate();
groupe.setName("jcr:groupe");
groupe.setRequiredType(PropertyType.STRING);
groupe.setQueryOrderable(true);
groupe.setFullTextSearchable(false);
nodeType.getPropertyDefinitionTemplates().add(groupe);
NodeType newnodetype = nodeTypeManager.registerNodeType(nodeType, true);
session.save();
}
}
안녕하세요 acfoltzer !. createNodeTypeTemplate()를 호출 할 때 UnsupportedRepositoryOperationException이 발생했습니다. 문제가 어디에 있습니까? – Amir