#
# 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: 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: 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
# ==============================================================================

# 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: GetPropertyNamesTest
javax.jcr.tck.GetPropertyNamesTest.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
