#
# This is the configuration file for the jackrabbit repository test stub.
#

# Stub implementation class
javax.jcr.tck.repository_stub_impl=org.apache.jackrabbit.core.JackrabbitRepositoryStub

# repository specific configuration
org.apache.jackrabbit.repository.config=applications/test/repository.xml
org.apache.jackrabbit.repository.name=repo
org.apache.jackrabbit.repository.home=applications/test
org.apache.jackrabbit.repository.jaas.config=applications/test/jaas.config

# credential configuration
javax.jcr.tck.superuser.name=superuser
javax.jcr.tck.superuser.pwd=
javax.jcr.tck.readwrite.name=user
javax.jcr.tck.readwrite.pwd=
javax.jcr.tck.readonly.name=anonymous
javax.jcr.tck.readonly.pwd=

# global test configuration
javax.jcr.tck.testroot=/testroot
javax.jcr.tck.nodetype=nt:unstructured
javax.jcr.tck.nodename1=node1
javax.jcr.tck.nodename2=node2
javax.jcr.tck.nodename3=node3
javax.jcr.tck.nodename4=node4
javax.jcr.tck.propertyname1=prop1
javax.jcr.tck.propertyname2=prop2
javax.jcr.tck.workspacename=test

# namespace configuration
javax.jcr.tck.namespaces=test
javax.jcr.tck.namespaces.test=http://www.apache.org/jackrabbit/test

# sample for per test case config overriding
# Test class: AddNodeText
# Test method: testName
javax.jcr.tck.AddNodeTest.testName.nodename1=myname

# ==============================================================================
# JAVAX.JCR CONFIGURATION
# ==============================================================================

# Test class: ItemDefTest
javax.jcr.tck.ItemDefTest.testroot=/testdata

# Test class: ItemReadMethodsTest
javax.jcr.tck.ItemReadMethodsTest.testroot=/testdata

# Test class: NodeReadMethodsTest
javax.jcr.tck.NodeReadMethodsTest.testroot=/testdata

# Test class: PropertyTypeTest
javax.jcr.tck.PropertyTypeTest.testroot=/testdata

# Test class: BinaryPropertyTest
javax.jcr.tck.BinaryPropertyTest.testroot=/testdata

# Test class: BooleanPropertyTest
javax.jcr.tck.BooleanPropertyTest.testroot=/testdata

# Test class: DatePropertyTest
javax.jcr.tck.DatePropertyTest.testroot=/testdata

# Test class: DoublePropertyTest
javax.jcr.tck.DoublePropertyTest.testroot=/testdata

# Test class: LongPropertyTest
javax.jcr.tck.LongPropertyTest.testroot=/testdata

# Test class: NamePropertyTest
javax.jcr.tck.NamePropertyTest.testroot=/testdata

# Test class: PathPropertyTest
javax.jcr.tck.PathPropertyTest.testroot=/testdata

# Test class: ReferencePropertyTest
javax.jcr.tck.ReferencePropertyTest.testroot=/testdata

# Test class: StringPropertyTest
javax.jcr.tck.StringPropertyTest.testroot=/testdata

# Test class: SetValueVersionExceptionTest
# nodetype2: nodetype with a reference property
javax.jcr.tck.SetValueVersionExceptionTest.nodetype2=nt:linkedFile
# propertyname3: name of the single value reference property
javax.jcr.tck.SetValueVersionExceptionTest.propertyname3=jcr:content

# Test class: UndefinedPropertyTest
javax.jcr.tck.UndefinedPropertyTest.testroot=/testdata

# Test class: PropertyReadMethodsTest
javax.jcr.tck.PropertyReadMethodsTest.testroot=/testdata

# Test class: NodeIteratorTest
javax.jcr.tck.NodeIteratorTest.testroot=/testdata

# Test class: NodeDiscoveringNodeTypesTest
javax.jcr.tck.NodeDiscoveringNodeTypesTest.testroot=/testdata

# Test class: RepositoryDescriptorTest
javax.jcr.tck.RepositoryDescriptorTest.testroot=/testdata

# Test class: WorkspaceReadMethodsTest
javax.jcr.tck.WorkspaceReadMethodsTest.testroot=/testdata

# Test class: SessionReadMethodsTest
javax.jcr.tck.SessionReadMethodsTest.testroot=/testdata

# Test class: NamespaceRegistryReadMethodsTest
javax.jcr.tck.NamespaceRegistryReadMethodsTest.testroot=/testdata

# Test class: NamespaceRemappingTest
javax.jcr.tck.NamespaceRemappingTest.testroot=/testdata

# Test class: SessionTest
# Test method: testMoveItemExistsException
# nodetype that does not allow same name siblings
javax.jcr.tck.SessionTest.testMoveItemExistsException.nodetype2=nt:folder
# valid node type that can be added as child of nodetype2
javax.jcr.tck.SessionTest.testMoveItemExistsException.nodetype3=nt:hierarchyNode

# Test class: SessionTest
# Test method: testSaveContstraintViolationException
# nodetype that has a property that is mandatory but not autocreated
javax.jcr.tck.SessionTest.testSaveContstraintViolationException.nodetype2=nt:file

# Test class: SessionUUIDTest
# node type that has a property of type PropertyType.REFERENCE
javax.jcr.tck.SessionUUIDTest.nodetype=nt:unstructured
# name of the property that is of type PropertyType.REFERENCE
javax.jcr.tck.SessionUUIDTest.propertyname1=foobar
# nodetype that has nodetype mix:referenceable assigned
javax.jcr.tck.SessionUUIDTest.nodetype2=test:refTargetNode

# Test class: SessionUUIDTest
# Test method: testSaveMovedRefNode
# name of the property that can be modified
javax.jcr.tck.SessionUUIDTest.testSaveMovedRefNode.propertyname1=foobar

# Test class: NodeTest
# Test method: testAddNodeItemExistsException
# nodetype that does not allow same name siblings and allows child nodes of
# the same type
javax.jcr.tck.NodeTest.testAddNodeItemExistsException.nodetype=nt:folder

# Test class: NodeTest
# Test method: testRemoveMandatoryNode
# nodetype that has a mandatory child node definition
javax.jcr.tck.NodeTest.testRemoveMandatoryNode.nodetype2=nt:file
# nodetype of the  mandatory child
javax.jcr.tck.NodeTest.testRemoveMandatoryNode.nodetype3=nt:base
# name of the mandatory node
javax.jcr.tck.NodeTest.testRemoveMandatoryNode.nodename3=jcr:content

# Test class: NodeTest
# Test method: testSaveContstraintViolationException
# nodetype that has a property that is mandatory but not autocreated
javax.jcr.tck.NodeTest.testSaveContstraintViolationException.nodetype2=nt:file

# Test class: NodeUUIDTest
# node type that has a property of type PropertyType.REFERENCE
javax.jcr.tck.NodeUUIDTest.nodetype=nt:unstructured
# name of the property that is of type PropertyType.REFERENCE
javax.jcr.tck.NodeUUIDTest.propertyname1=ref
# nodetype that has nodetype mix:referenceable assigned
javax.jcr.tck.NodeUUIDTest.nodetype2=test:refTargetNode

# Test class: NodeUUIDTest
# Test method: testSaveMovedRefNode
# name of the property that can be modified
javax.jcr.tck.NodeUUIDTest.testSaveMovedRefNode.propertyname1=foobar
# nodetype that has nodetype mix:referenceable assigned

# Test class: NodeOrderableChildNodesTest
# nodetype that supports orderable child nodes
javax.jcr.tck.NodeOrderableChildNodesTest.nodetype2=nt:unstructured
# valid node type that can be added as child of nodetype 2
javax.jcr.tck.NodeOrderableChildNodesTest.nodetype3=nt:unstructured

# Test class: NodeOrderableChildNodesTest
# Test method: testOrderBeforeUnsupportedRepositoryOperationException
# nodetype that does not allow ordering of child nodes
javax.jcr.tck.NodeOrderableChildNodesTest.testOrderBeforeUnsupportedRepositoryOperationException.nodetype2=nt:folder
# valid node type that can be added as child of nodetype 2
javax.jcr.tck.NodeOrderableChildNodesTest.testOrderBeforeUnsupportedRepositoryOperationException.nodetype3=nt:hierarchyNode

# Test class: SetPropertyNodeTest
# nodetype which is referenceable
javax.jcr.tck.SetPropertyNodeTest.nodetype=test:setProperty

# Test class: SetPropertyValueTest
# property that allows multiple values
javax.jcr.tck.SetPropertyValueTest.propertyname2=test:multiProperty
javax.jcr.tck.SetPropertyValueTest.nodetype=test:setProperty

# Test class: SetPropertyStringTest
# property that allows multiple values
javax.jcr.tck.SetPropertyStringTest.propertyname2=test:multiProperty
javax.jcr.tck.SetPropertyStringTest.nodetype=test:setProperty

# Test class: WorkspaceCloneSameNameSibsTest
javax.jcr.tck.WorkspaceCloneSameNameSibsTest.sameNameSibsFalseNodeType=test:sameNameSibsFalseChildNodeDefinition
javax.jcr.tck.WorkspaceCloneSameNameSibsTest.sameNameSibsTrueNodeType=nt:unstructured

# Test class: WorkspaceCopyBetweenWorkspacesSameNameSibsTest
javax.jcr.tck.WorkspaceCopyBetweenWorkspacesSameNameSibsTest.sameNameSibsFalseNodeType=test:sameNameSibsFalseChildNodeDefinition
javax.jcr.tck.WorkspaceCopyBetweenWorkspacesSameNameSibsTest.sameNameSibsTrueNodeType=nt:unstructured

# Test class: WorkspaceCopySameNameSibsTest
javax.jcr.tck.WorkspaceCopySameNameSibsTest.sameNameSibsFalseNodeType=test:sameNameSibsFalseChildNodeDefinition
javax.jcr.tck.WorkspaceCopySameNameSibsTest.sameNameSibsTrueNodeType=nt:unstructured

# Test class: WorkspaceMoveSameNameSibsTest
javax.jcr.tck.WorkspaceMoveSameNameSibsTest.sameNameSibsFalseNodeType=test:sameNameSibsFalseChildNodeDefinition
javax.jcr.tck.WorkspaceMoveSameNameSibsTest.sameNameSibsTrueNodeType=nt:unstructured

# Test class: RepositoryLoginTest
javax.jcr.tck.RepositoryLoginTest.testroot=/testdata

# Test class: RootNodeTest
javax.jcr.tck.RootNodeTest.testroot=/testdata

# Test class: ReferenceableRootNodesTest
javax.jcr.tck.ReferenceableRootNodesTest.testroot=/testdata

# Test class: ExportDocViewTest
javax.jcr.tck.ExportDocViewTest.testroot=/testdata

# ------------------------------------------------------------------------------
# observation configuration
# ------------------------------------------------------------------------------

# Test class: AddEventListenerTest
# Test method: testNodeType
javax.jcr.tck.AddEventListenerTest.testNodeType.nodetype2=nt:folder

# Configuration settings for the serialization.
# Note that the serialization test tries to use as many features of the repository
# as possible, but fails silently if a feature is not available. You have to
# specify all of the following configuration entries, even if your repository does
# not support the feature that is associated with them.

# Root node for the example tree
javax.jcr.tck.SerializationTest.testroot=/testdata/serialization

# Node type to use for the example tree. Specify a node type that allows complex trees and all property types if possible
javax.jcr.tck.SerializationTest.nodetype=nt:unstructured

# Name of the nodes for source and target tree
javax.jcr.tck.SerializationTest.sourceFolderName=source
javax.jcr.tck.SerializationTest.targetFolderName=target
javax.jcr.tck.SerializationTest.rootNodeName=test

# List the properties whose values may change during serialization/deserialization. For example,
# the UUID of a node is unique in the repository, so it will have to change when you re-import
# a tree at a different location.
javax.jcr.tck.SerializationTest.propertyValueMayChange= jcr:created jcr:uuid jcr:versionHistory jcr:baseVersion jcr:predecessors P_Reference

# List all properties which are skipped during xml import according specification chapter 7.3.3
javax.jcr.tck.SerializationTest.propertySkipped=

# The name of the test node types. For easier diagnostics, the node types have names
# that tell you the kind of information they store
javax.jcr.tck.SerializationTest.nodeTypesTestNode=NodeTypes
javax.jcr.tck.SerializationTest.mixinTypeTestNode=MixinTypes
javax.jcr.tck.SerializationTest.propertyTypesTestNode=PropertyTypes
javax.jcr.tck.SerializationTest.sameNameChildrenTestNode=SameNameChildren
javax.jcr.tck.SerializationTest.multiValuePropertiesTestNode=MultiValueProperties
javax.jcr.tck.SerializationTest.referenceableNodeTestNode=ReferenceableNode
javax.jcr.tck.SerializationTest.orderChildrenTestNode=OrderChildren
javax.jcr.tck.SerializationTest.namespaceTestNode=Namespace

# The name of the test property types.
javax.jcr.tck.SerializationTest.stringTestProperty=P_String
javax.jcr.tck.SerializationTest.binaryTestProperty=P_Binary
javax.jcr.tck.SerializationTest.dateTestProperty=P_Date
javax.jcr.tck.SerializationTest.longTestProperty=P_Long
javax.jcr.tck.SerializationTest.doubleTestProperty=P_Double
javax.jcr.tck.SerializationTest.booleanTestProperty=P_Boolean
javax.jcr.tck.SerializationTest.nameTestProperty=P_Name
javax.jcr.tck.SerializationTest.pathTestProperty=P_Path
javax.jcr.tck.SerializationTest.referenceTestProperty=P_Reference
javax.jcr.tck.SerializationTest.multiValueTestProperty=P_MultiValue

# node type not allowing same name sibs
javax.jcr.tck.SerializationTest.sameNameSibsFalseChildNodeDefinition=test:sameNameSibsFalseChildNodeDefinition

# Test method: testVersioningExceptionSessionFileChild
# specified nodetype must be versionable and allow child nodes of the same type.
javax.jcr.tck.SerializationTest.testVersioningExceptionSessionFileChild.nodetype=test:versionable

# Test method: testVersioningExceptionSessionFileParent
# specified nodetype must be versionable and allow child nodes of the same type.
javax.jcr.tck.SerializationTest.testVersioningExceptionSessionFileParent.nodetype=test:versionable

# Test method: testSessionImportXmlOverwriteException
# requires a node type that does not allow same name siblings
javax.jcr.tck.SerializationTest.testSessionImportXmlOverwriteException.nodetype=nt:folder

# Test class: ExportSysViewTest
javax.jcr.tck.ExportSysViewTest.testroot=/testdata

# ==============================================================================
# JAVAX.JCR.QUERY CONFIGURATION
# ==============================================================================

javax.jcr.tck.nodetype.testroot=/testdata

# ==============================================================================
# JAVAX.JCR.QUERY CONFIGURATION
# ==============================================================================

# Test class: SaveTest
# Test method: testConstraintViolationException
# Specified node type must not allow child nodes.
javax.jcr.tck.SaveTest.testConstraintViolationException.nodetype=nt:query

# Test class: XPathQueryLevel1Test
javax.jcr.tck.XPathQueryLevel1Test.testroot=/testdata/query

# Test class: XPathDocOrderTest
javax.jcr.tck.XPathDocOrderTest.testroot=/testdata/query

# Test class: XPathPosIndexTest
javax.jcr.tck.XPathPosIndexTest.testroot=/testdata/query

# Test class: XPathOrderByTest
javax.jcr.tck.XPathOrderByTest.testroot=/testdata/query

# Test class: XPathSyntaxTest
javax.jcr.tck.XPathSyntaxTest.testroot=/testdata/query

# Test class: XPathJcrPathTest
javax.jcr.tck.XPathJcrPathTest.testroot=/testdata

# Test class: SQLQueryLevel1Test
javax.jcr.tck.SQLQueryLevel1Test.testroot=/testdata/query

# Test class: SQLSyntaxTest
javax.jcr.tck.SQLSyntaxTest.testroot=/testdata/query

# Test class: SQLOrderByTest
javax.jcr.tck.SQLOrderByTest.testroot=/testdata/query

# Test class: DerefQueryLevel1Test
javax.jcr.tck.DerefQueryLevel1Test.testroot=/testdata

# Test class: GetLanguageTest
javax.jcr.tck.GetLanguageTest.testroot=/testdata

# Test class: GetPersistentQueryPathLevel1Test
javax.jcr.tck.GetPersistentQueryPathLevel1Test.testroot=/testdata

# Test class: GetPropertyNamesTest
javax.jcr.tck.GetPropertyNamesTest.testroot=/testdata

# Test class: GetStatementTest
javax.jcr.tck.GetStatementTest.testroot=/testdata

# Test class: GetSupportedQueryLanguagesTest
javax.jcr.tck.GetSupportedQueryLanguagesTest.testroot=/testdata

# Test class: SQLJcrPathTest
javax.jcr.tck.SQLJcrPathTest.testroot=/testdata

# Test class: SQLPathTest
javax.jcr.tck.SQLPathTest.testroot=/testdata

# Test class: PredicatesTest
javax.jcr.tck.PredicatesTest.testroot=/testdata

# Test class: SimpleSelectionTest
javax.jcr.tck.SimpleSelectionTest.testroot=/testdata

# ==============================================================================
# JAVAX.JCR.VERSIONING CONFIGURATION
# ==============================================================================

# nodetye that is versionable. if it is not, an attempt is made to create versionable nodes
# by adding a mix:versionable mixin-type.
# NOTE: javax.jcr.tck.nodetype must define a non-versionable nodetype!
javax.jcr.tck.version.versionableNodeType=test:versionable
javax.jcr.tck.version.propertyValue=aPropertyValue

# testroot for the version package
# the test root must allow versionable and non-versionable nodes being created below
javax.jcr.tck.version.testroot=/testroot

# 3 nodes (nodeName1, nodeName2, nodeName3 with nt=versionableNodeType / nt=nonVersionableNodeType will be cloned to 2nd workspace
# nodename1 > used to persistently create versionable node below testroot
# nodename2 > used to create second versionable node below testroot (used for restore/workspace.restore with uuid-conflict)
# nodename3 > used to persistently create non-versionable node below testroot
javax.jcr.tck.version.nodename1=versionableNodeName1
javax.jcr.tck.version.nodename2=versionableNodeName2
javax.jcr.tck.version.nodename3=nonVersionableNodeName1

# nodename 4: versionabel child-node of the first versionable node with nodeName1 and nodetype 'versionableNodeType'
# used for:
# + creation of a node in the 2nd workspace, that does not exist in the first workspace
# + creation of a node in the 2nd workspace, in order to test uuid-conflicts with Workspace.restore.
# + creation of a sub-node in the default workspace, in order to test uuid-conflicts with Node.restore.
# + NOTE: the nodetype with 'versionableNodeType' must define its children nodes to either have COPY or VERSION
#         OPV behaviour in order to successfully test Node.restore and Workspace.restore with uuid conflict.
javax.jcr.tck.version.nodename4=childNodeName

# path to existing String-properties and a new value for the property, that allows to test the indicated OPV behaviour
javax.jcr.tck.OnParentVersionAbortTest.propertyname1=test:abortOnParentVersionProp
javax.jcr.tck.OnParentVersionComputeTest.propertyname1=test:computeOnParentVersionProp
javax.jcr.tck.OnParentVersionCopyTest.propertyname1=test:copyOnParentVersionProp
javax.jcr.tck.OnParentVersionIgnoreTest.propertyname1=test:ignoreOnParentVersionProp
javax.jcr.tck.OnParentVersionInitializeTest.propertyname1=test:initializeOnParentVersionProp

# Test class: RestoreTest
# Test method: testRestoreWithUUIDConflict
# nodename4 must be the name of a child node with a OPV definition COPY or VERSION
javax.jcr.tck.RestoreTest.testRestoreWithUUIDConflict.nodename4=test:versionOnParentVersion

# config for nodes that show the indicated OPV behaviour:
# nodes are added in order to test the versioning behaviour indicated by the test-class name.
# NOTE:
# - nodename4 is uses as name for the childnode
# - nodetype is used as nodetype name for the childnode
# - the specified child node is created below nodename1 with versionableNodeType
#   the versionableNodeType and/or nodename1 may be overwritten with the individual
#   testclass below.
javax.jcr.tck.OnParentVersionCopyTest.nodename4=test:copyOnParentVersion
javax.jcr.tck.OnParentVersionCopyTest.nodetype=nt:unstructured
javax.jcr.tck.OnParentVersionAbortTest.nodename4=test:abortOnParentVersion
javax.jcr.tck.OnParentVersionAbortTest.nodetype=nt:unstructured
