<?xml version="1.0" encoding="UTF-8"?>

<!--
   Licensed to the Apache Software Foundation (ASF) under one or more
   contributor license agreements.  See the NOTICE file distributed with
   this work for additional information regarding copyright ownership.
   The ASF licenses this file to You under the Apache License, Version 2.0
   (the "License"); you may not use this file except in compliance with
   the License.  You may obtain a copy of the License at

       http://www.apache.org/licenses/LICENSE-2.0

   Unless required by applicable law or agreed to in writing, software
   distributed under the License is distributed on an "AS IS" BASIS,
   WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
   See the License for the specific language governing permissions and
   limitations under the License.
  -->

<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/maven-v4_0_0.xsd ">
  <modelVersion>4.0.0</modelVersion>

  <parent>
    <groupId>org.apache.jackrabbit</groupId>
    <artifactId>oak-parent</artifactId>
    <version>0.7.1-SNAPSHOT</version>
    <relativePath>../oak-parent/pom.xml</relativePath>
  </parent>

  <artifactId>oak-jcr</artifactId>
  <name>Oak JCR Binding</name>
  <packaging>bundle</packaging>

  <properties>
    <known.issues>
      org.apache.jackrabbit.test.api.AddNodeTest#testSameNameSiblings<!-- OAK-203 -->
      org.apache.jackrabbit.test.api.SessionTest#testMoveConstraintViolationExceptionSrc<!--OAK-132-->
      org.apache.jackrabbit.test.api.SessionTest#testMoveConstraintViolationExceptionDest<!--OAK-132-->
      org.apache.jackrabbit.test.api.SessionTest#testHasCapability
      org.apache.jackrabbit.test.api.SessionTest#testMoveLockException
      org.apache.jackrabbit.test.api.SessionUUIDTest#testSaveReferentialIntegrityException<!--OAK-66-->
      org.apache.jackrabbit.test.api.NodeTest#testRefreshInvalidItemStateException<!--OAK-141-->
      org.apache.jackrabbit.test.api.NodeTest#testRemoveNodeLockedItself
      org.apache.jackrabbit.test.api.NodeTest#testRemoveNodeParentLocked
      org.apache.jackrabbit.test.api.NodeUUIDTest#testSaveReferentialIntegrityException<!--OAK-66-->
      org.apache.jackrabbit.test.api.NodeUUIDTest#testSaveMovedRefNode<!--OAK-66-->
      org.apache.jackrabbit.test.api.SetValueValueFormatExceptionTest#testNodeNotReferenceable
      org.apache.jackrabbit.test.api.NodeSetPrimaryTypeTest#testLocked
      org.apache.jackrabbit.test.api.WorkspaceCopyReferenceableTest#testCopyNodesNewUUID                    <!-- OAK-118 -->
      org.apache.jackrabbit.test.api.WorkspaceCopyVersionableTest#testCopyNodesVersionableAndCheckedIn      <!-- OAK-118 -->
      org.apache.jackrabbit.test.api.WorkspaceMoveReferenceableTest#testMoveNodesReferenceableNodesNewUUID  <!-- OAK-118 -->
      org.apache.jackrabbit.test.api.WorkspaceMoveVersionableTest#testMoveNodesVersionableAndCheckedIn      <!-- OAK-118 -->
      org.apache.jackrabbit.test.api.SessionRemoveItemTest#testRemoveLockedNode
      org.apache.jackrabbit.test.api.SessionRemoveItemTest#testRemoveLockedChildItem
      org.apache.jackrabbit.test.api.SessionRemoveItemTest#testRemoveCheckedInItem
      org.apache.jackrabbit.test.api.NodeAddMixinTest#testLocked
      org.apache.jackrabbit.test.api.NodeCanAddMixinTest#testLocked
      org.apache.jackrabbit.test.api.NodeRemoveMixinTest#testLocked
      org.apache.jackrabbit.test.api.ValueFactoryTest#testValueFormatException<!--OAK-204-->
      org.apache.jackrabbit.test.api.WorkspaceCopySameNameSibsTest                                     <!-- OAK-118 -->
      org.apache.jackrabbit.test.api.WorkspaceCopyTest#testCopyNodesAccessDenied                       <!-- OAK-118 -->
      org.apache.jackrabbit.test.api.WorkspaceCopyTest#testCopyNodesLocked                             <!-- OAK-118 -->
      org.apache.jackrabbit.test.api.WorkspaceMoveSameNameSibsTest                                     <!-- OAK-118 -->
      org.apache.jackrabbit.test.api.WorkspaceMoveTest#testMoveNodesLocked                             <!-- OAK-118 -->
      org.apache.jackrabbit.test.api.WorkspaceMoveTest#testMoveNodesAccessDenied                       <!-- OAK-118 -->
      org.apache.jackrabbit.test.api.CheckPermissionTest
      org.apache.jackrabbit.test.api.DocumentViewImportTest#testSameUUIDAtAncestorWorkspaceHandler              <!-- OAK-127: no workspace import yet -->
      org.apache.jackrabbit.test.api.DocumentViewImportTest#testSameUUIDAtAncestorWorkspace                     <!-- OAK-127: no workspace import yet -->
      org.apache.jackrabbit.test.api.DocumentViewImportTest#testSessionGetImportContentHandler                  <!-- OAK-127: no workspace import yet, test method is misnamed -->
      org.apache.jackrabbit.test.api.DocumentViewImportTest#testWorkspaceImportXml                              <!-- OAK-127: no workspace import yet -->
      org.apache.jackrabbit.test.api.SerializationTest#testVersioningExceptionFileParentWorkspaceContentHandler <!-- OAK-127: no workspace import yet, NodeImpl.checkin() not implemented -->
      org.apache.jackrabbit.test.api.SerializationTest#testVersioningExceptionFileParentSessionContentHandler   <!-- OAK-127: NodeImpl.checkin() not implemented -->
      org.apache.jackrabbit.test.api.SerializationTest#testVersioningExceptionFileParentWorkspace               <!-- OAK-127: no workspace import yet, NodeImpl.checkin() not implemented -->
      org.apache.jackrabbit.test.api.SerializationTest#testVersioningExceptionFileParentSession                 <!-- OAK-127: NodeImpl.checkin() not implemented -->
      org.apache.jackrabbit.test.api.SerializationTest#testVersioningExceptionFileChildWorkspaceContentHandler  <!-- OAK-127: no workspace import yet, NodeImpl.checkin() not implemented -->
      org.apache.jackrabbit.test.api.SerializationTest#testVersioningExceptionFileChildSessionContentHandler    <!-- OAK-127: NodeImpl.checkin() not implemented -->
      org.apache.jackrabbit.test.api.SerializationTest#testVersioningExceptionFileChildWorkspace                <!-- OAK-127: no workspace import yet, NodeImpl.checkin() not implemented -->
      org.apache.jackrabbit.test.api.SerializationTest#testVersioningExceptionFileChildSession                  <!-- OAK-127: NodeImpl.checkin() not implemented -->
      org.apache.jackrabbit.test.api.SerializationTest#testLockExceptionWorkspaceWithHandler                    <!-- OAK-127: no workspace import yet, no session scoped locking -->
      org.apache.jackrabbit.test.api.SerializationTest#testLockExceptionSessionWithHandler                      <!-- OAK-127: no session scoped locking -->
      org.apache.jackrabbit.test.api.SerializationTest#testLockExceptionWorkspace                               <!-- OAK-127: no workspace import yet, no session scoped locking -->
      org.apache.jackrabbit.test.api.SerializationTest#testLockExceptionSession                                 <!-- OAK-127: no session scoped locking -->
      org.apache.jackrabbit.test.api.SerializationTest#testWorkspaceGetImportContentHandlerExceptions           <!-- OAK-127: no workspace import yet -->
      org.apache.jackrabbit.test.api.SerializationTest#testWorkspaceImportXmlExceptions                         <!-- OAK-127: no workspace import yet -->
      org.apache.jackrabbit.test.api.SerializationTest#testOverwriteExceptionWorkspaceWithHandler               <!-- OAK-127: no workspace import yet -->
      org.apache.jackrabbit.test.api.SerializationTest#testOverwriteExceptionWorkspace                          <!-- OAK-127: no workspace import yet -->
      org.apache.jackrabbit.test.api.SerializationTest#testNodeTypeConstraintViolationWorkspaceWithHandler      <!-- OAK-127: no workspace import yet -->
      org.apache.jackrabbit.test.api.SerializationTest#testNodeTypeConstraintViolationWorkspace                 <!-- OAK-127: no workspace import yet -->
      org.apache.jackrabbit.test.api.SerializationTest#testStreamHandling                                       <!-- OAK-127: no workspace import yet -->
      org.apache.jackrabbit.test.api.SerializationTest#testInvalidXmlThrowsSaxException                         <!-- OAK-127: no workspace import yet -->
      org.apache.jackrabbit.test.api.SerializationTest#testInvalidXmlThrowsInvalidSerializedDataException       <!-- OAK-127: no workspace import yet -->
      org.apache.jackrabbit.test.api.SerializationTest#testExportSysView_stream_workspace_skipBinary_noRecurse  <!-- OAK-127: no workspace import yet -->
      org.apache.jackrabbit.test.api.SerializationTest#testExportSysView_stream_workspace_skipBinary_recurse    <!-- OAK-127: no workspace import yet -->
      org.apache.jackrabbit.test.api.SerializationTest#testExportSysView_stream_workspace_saveBinary_noRecurse  <!-- OAK-127: no workspace import yet -->
      org.apache.jackrabbit.test.api.SerializationTest#testExportSysView_stream_workspace_saveBinary_recurse    <!-- OAK-127: no workspace import yet -->
      org.apache.jackrabbit.test.api.SerializationTest#testExportSysView_handler_workspace_skipBinary_noRecurse <!-- OAK-127: no workspace import yet -->
      org.apache.jackrabbit.test.api.SerializationTest#testExportSysView_handler_workspace_skipBinary_recurse   <!-- OAK-127: no workspace import yet -->
      org.apache.jackrabbit.test.api.SerializationTest#testExportSysView_handler_workspace_saveBinary_noRecurse <!-- OAK-127: no workspace import yet -->
      org.apache.jackrabbit.test.api.SerializationTest#testExportSysView_handler_workspace_saveBinary_recurse   <!-- OAK-127: no workspace import yet -->
      org.apache.jackrabbit.test.api.HasPermissionTest
      org.apache.jackrabbit.test.api.lock.LockManagerTest#testAddInvalidLockToken                      <!-- OAK-150 ... -->
      org.apache.jackrabbit.test.api.lock.LockManagerTest#testLockNonLockable
      org.apache.jackrabbit.test.api.lock.LockTest#testGetNode
      org.apache.jackrabbit.test.api.lock.LockTest#testAddRemoveLockToken
      org.apache.jackrabbit.test.api.lock.LockTest#testNodeLocked
      org.apache.jackrabbit.test.api.lock.LockTest#testGetLockOwnerProperty
      org.apache.jackrabbit.test.api.lock.LockTest#testGetLockOwner
      org.apache.jackrabbit.test.api.lock.LockTest#testShallowLock
      org.apache.jackrabbit.test.api.lock.LockTest#testParentChildLock
      org.apache.jackrabbit.test.api.lock.LockTest#testParentChildDeepLock
      org.apache.jackrabbit.test.api.lock.LockTest#testIsDeep
      org.apache.jackrabbit.test.api.lock.LockTest#testIsSessionScoped
      org.apache.jackrabbit.test.api.lock.LockTest#testLogout
      org.apache.jackrabbit.test.api.lock.LockTest#testLockTransfer
      org.apache.jackrabbit.test.api.lock.LockTest#testOpenScopedLocks
      org.apache.jackrabbit.test.api.lock.LockTest#testRefresh
      org.apache.jackrabbit.test.api.lock.LockTest#testRefreshNotLive
      org.apache.jackrabbit.test.api.lock.LockTest#testGetLock
      org.apache.jackrabbit.test.api.lock.LockTest#testMoveLocked
      org.apache.jackrabbit.test.api.lock.SetValueLockExceptionTest#testSetValueLockException
      org.apache.jackrabbit.test.api.lock.DeepLockTest#testParentChildDeepLock
      org.apache.jackrabbit.test.api.lock.DeepLockTest#testGetNodeOnLockObtainedFromChild
      org.apache.jackrabbit.test.api.lock.DeepLockTest#testGetNodeOnLockObtainedFromNewChild
      org.apache.jackrabbit.test.api.lock.DeepLockTest#testDeepLockAboveLockedChild
      org.apache.jackrabbit.test.api.lock.DeepLockTest#testShallowLockAboveLockedChild
      org.apache.jackrabbit.test.api.lock.DeepLockTest#testRemoveLockedChild
      org.apache.jackrabbit.test.api.lock.DeepLockTest#testIsLive
      org.apache.jackrabbit.test.api.lock.DeepLockTest#testIsDeep
      org.apache.jackrabbit.test.api.lock.DeepLockTest#testIsSessionScoped
      org.apache.jackrabbit.test.api.lock.DeepLockTest#testRefresh
      org.apache.jackrabbit.test.api.lock.DeepLockTest#testRefreshNotLive
      org.apache.jackrabbit.test.api.lock.DeepLockTest#testLockHoldingNode
      org.apache.jackrabbit.test.api.lock.DeepLockTest#testNodeIsLocked
      org.apache.jackrabbit.test.api.lock.DeepLockTest#testNodeHoldsLocked
      org.apache.jackrabbit.test.api.lock.DeepLockTest#testLockVisibility
      org.apache.jackrabbit.test.api.lock.DeepLockTest#testIsLockOwningSession
      org.apache.jackrabbit.test.api.lock.DeepLockTest#testGetSecondsRemaining
      org.apache.jackrabbit.test.api.lock.DeepLockTest#testGetSecondsRemainingAfterUnlock
      org.apache.jackrabbit.test.api.lock.DeepLockTest#testLockExpiration
      org.apache.jackrabbit.test.api.lock.DeepLockTest#testOwnerHint
      org.apache.jackrabbit.test.api.lock.DeepLockTest#testUnlock
      org.apache.jackrabbit.test.api.lock.DeepLockTest#testUnlockByOtherSession
      org.apache.jackrabbit.test.api.lock.DeepLockTest#testIsLockedChild
      org.apache.jackrabbit.test.api.lock.DeepLockTest#testIsLockedNewChild
      org.apache.jackrabbit.test.api.lock.DeepLockTest#testHoldsLockChild
      org.apache.jackrabbit.test.api.lock.DeepLockTest#testHoldsLockNewChild
      org.apache.jackrabbit.test.api.lock.DeepLockTest#testGetLockOnChild
      org.apache.jackrabbit.test.api.lock.DeepLockTest#testGetLockOnNewChild
      org.apache.jackrabbit.test.api.lock.DeepLockTest#testRemoveMixLockableFromLockedNode
      org.apache.jackrabbit.test.api.lock.LockManagerTest#testLockTransfer
      org.apache.jackrabbit.test.api.lock.LockManagerTest#testLockWithPendingChanges
      org.apache.jackrabbit.test.api.lock.LockManagerTest#testNullOwnerHint
      org.apache.jackrabbit.test.api.lock.LockManagerTest#testGetLockTokens
      org.apache.jackrabbit.test.api.lock.LockManagerTest#testGetLockTokensAfterUnlock
      org.apache.jackrabbit.test.api.lock.LockManagerTest#testGetLockTokensSessionScoped
      org.apache.jackrabbit.test.api.lock.LockManagerTest#testAddLockToken
      org.apache.jackrabbit.test.api.lock.LockManagerTest#testAddLockTokenToAnotherSession
      org.apache.jackrabbit.test.api.lock.LockManagerTest#testRemoveLockToken
      org.apache.jackrabbit.test.api.lock.LockManagerTest#testRemoveLockToken2
      org.apache.jackrabbit.test.api.lock.LockManagerTest#testRemoveLockToken3
      org.apache.jackrabbit.test.api.lock.LockManagerTest#testRemoveLockTokenTwice
      org.apache.jackrabbit.test.api.lock.LockManagerTest#testAddLockTokenAgain
      org.apache.jackrabbit.test.api.lock.LockManagerTest#testLockTransfer2
      org.apache.jackrabbit.test.api.lock.LockManagerTest#testLockTransfer3
      org.apache.jackrabbit.test.api.lock.OpenScopedLockTest#testGetLockToken
      org.apache.jackrabbit.test.api.lock.OpenScopedLockTest#testIsLive
      org.apache.jackrabbit.test.api.lock.OpenScopedLockTest#testIsDeep
      org.apache.jackrabbit.test.api.lock.OpenScopedLockTest#testIsSessionScoped
      org.apache.jackrabbit.test.api.lock.OpenScopedLockTest#testRefresh
      org.apache.jackrabbit.test.api.lock.OpenScopedLockTest#testRefreshNotLive
      org.apache.jackrabbit.test.api.lock.OpenScopedLockTest#testLockHoldingNode
      org.apache.jackrabbit.test.api.lock.OpenScopedLockTest#testNodeIsLocked
      org.apache.jackrabbit.test.api.lock.OpenScopedLockTest#testNodeHoldsLocked
      org.apache.jackrabbit.test.api.lock.OpenScopedLockTest#testLockVisibility
      org.apache.jackrabbit.test.api.lock.OpenScopedLockTest#testIsLockOwningSession
      org.apache.jackrabbit.test.api.lock.OpenScopedLockTest#testGetSecondsRemaining
      org.apache.jackrabbit.test.api.lock.OpenScopedLockTest#testGetSecondsRemainingAfterUnlock
      org.apache.jackrabbit.test.api.lock.OpenScopedLockTest#testLockExpiration
      org.apache.jackrabbit.test.api.lock.OpenScopedLockTest#testOwnerHint
      org.apache.jackrabbit.test.api.lock.OpenScopedLockTest#testUnlock
      org.apache.jackrabbit.test.api.lock.OpenScopedLockTest#testUnlockByOtherSession
      org.apache.jackrabbit.test.api.lock.OpenScopedLockTest#testIsLockedChild
      org.apache.jackrabbit.test.api.lock.OpenScopedLockTest#testIsLockedNewChild
      org.apache.jackrabbit.test.api.lock.OpenScopedLockTest#testHoldsLockChild
      org.apache.jackrabbit.test.api.lock.OpenScopedLockTest#testHoldsLockNewChild
      org.apache.jackrabbit.test.api.lock.OpenScopedLockTest#testGetLockOnChild
      org.apache.jackrabbit.test.api.lock.OpenScopedLockTest#testGetLockOnNewChild
      org.apache.jackrabbit.test.api.lock.OpenScopedLockTest#testRemoveMixLockableFromLockedNode
      org.apache.jackrabbit.test.api.lock.SessionScopedLockTest#testGetLockToken
      org.apache.jackrabbit.test.api.lock.SessionScopedLockTest#testImplicitUnlock
      org.apache.jackrabbit.test.api.lock.SessionScopedLockTest#testImplicitUnlock2
      org.apache.jackrabbit.test.api.lock.SessionScopedLockTest#testIsLive
      org.apache.jackrabbit.test.api.lock.SessionScopedLockTest#testIsDeep
      org.apache.jackrabbit.test.api.lock.SessionScopedLockTest#testIsSessionScoped
      org.apache.jackrabbit.test.api.lock.SessionScopedLockTest#testRefresh
      org.apache.jackrabbit.test.api.lock.SessionScopedLockTest#testRefreshNotLive
      org.apache.jackrabbit.test.api.lock.SessionScopedLockTest#testLockHoldingNode
      org.apache.jackrabbit.test.api.lock.SessionScopedLockTest#testNodeIsLocked
      org.apache.jackrabbit.test.api.lock.SessionScopedLockTest#testNodeHoldsLocked
      org.apache.jackrabbit.test.api.lock.SessionScopedLockTest#testLockVisibility
      org.apache.jackrabbit.test.api.lock.SessionScopedLockTest#testIsLockOwningSession
      org.apache.jackrabbit.test.api.lock.SessionScopedLockTest#testGetSecondsRemaining
      org.apache.jackrabbit.test.api.lock.SessionScopedLockTest#testGetSecondsRemainingAfterUnlock
      org.apache.jackrabbit.test.api.lock.SessionScopedLockTest#testLockExpiration
      org.apache.jackrabbit.test.api.lock.SessionScopedLockTest#testOwnerHint
      org.apache.jackrabbit.test.api.lock.SessionScopedLockTest#testUnlock
      org.apache.jackrabbit.test.api.lock.SessionScopedLockTest#testUnlockByOtherSession
      org.apache.jackrabbit.test.api.lock.SessionScopedLockTest#testIsLockedChild
      org.apache.jackrabbit.test.api.lock.SessionScopedLockTest#testIsLockedNewChild
      org.apache.jackrabbit.test.api.lock.SessionScopedLockTest#testHoldsLockChild
      org.apache.jackrabbit.test.api.lock.SessionScopedLockTest#testHoldsLockNewChild
      org.apache.jackrabbit.test.api.lock.SessionScopedLockTest#testGetLockOnChild
      org.apache.jackrabbit.test.api.lock.SessionScopedLockTest#testGetLockOnNewChild
      org.apache.jackrabbit.test.api.lock.SessionScopedLockTest#testRemoveMixLockableFromLockedNode  <!-- ... OAK-150 -->
      org.apache.jackrabbit.test.api.LifecycleTest
      org.apache.jackrabbit.test.api.query.ElementTest#testElementTestNameTestSomeNTWithSNS          <!-- OAK-203 -->
      org.apache.jackrabbit.test.api.query.SaveTest#testItemExistsException                          <!-- OAK-203 -->
      org.apache.jackrabbit.test.api.query.SaveTest#testLockException
      org.apache.jackrabbit.test.api.query.SQLJoinTest#testJoin                                      <!-- OAK-474 -->
      org.apache.jackrabbit.test.api.query.SQLJoinTest#testJoinNtBase                                <!-- OAK-474 -->
      org.apache.jackrabbit.test.api.query.SQLJoinTest#testJoinFilterPrimaryType                     <!-- OAK-474 -->
      org.apache.jackrabbit.test.api.query.SQLJoinTest#testJoinSNS                                   <!-- OAK-474 -->
      org.apache.jackrabbit.test.api.query.qom.DescendantNodeJoinConditionTest#testInnerJoin         <!-- odd side-effect of OAK-325 -->
      org.apache.jackrabbit.test.api.observation.EventTest#testGetUserId
      org.apache.jackrabbit.test.api.observation.NodeMovedTest#testMoveNode
      org.apache.jackrabbit.test.api.observation.NodeMovedTest#testMoveTree
      org.apache.jackrabbit.test.api.observation.NodeMovedTest#testMoveWithRemove
      org.apache.jackrabbit.test.api.observation.AddEventListenerTest#testNoLocalTrue
      org.apache.jackrabbit.test.api.observation.GetIdentifierTest#testNodeAdded
      org.apache.jackrabbit.test.api.observation.GetIdentifierTest#testNodeMoved
      org.apache.jackrabbit.test.api.observation.GetIdentifierTest#testNodeRemoved
      org.apache.jackrabbit.test.api.observation.GetIdentifierTest#testPropertyAdded
      org.apache.jackrabbit.test.api.observation.GetIdentifierTest#testPropertyChanged
      org.apache.jackrabbit.test.api.observation.GetIdentifierTest#testPropertyRemoved
      org.apache.jackrabbit.test.api.observation.GetUserDataTest#testSave
      org.apache.jackrabbit.test.api.observation.GetUserDataTest#testWorkspaceOperation
      org.apache.jackrabbit.test.api.observation.AddEventListenerTest#testUUID
      org.apache.jackrabbit.test.api.observation.LockingTest#testAddLockToNode
      org.apache.jackrabbit.test.api.observation.LockingTest#testRemoveLockFromNode
      org.apache.jackrabbit.oak.jcr.security.user.GroupTest#testCyclicGroups2                               <!-- OAK-615 -->
      org.apache.jackrabbit.oak.jcr.security.authorization.AccessControlImporterTest#testImportACLRemoveACE <!-- OAK-414 -->
      org.apache.jackrabbit.oak.jcr.security.authorization.AccessControlImporterTest#testImportACLUnknown   <!-- OAK-414 -->
      org.apache.jackrabbit.oak.jcr.security.authorization.AccessControlImporterTest#testImportPolicyExists <!-- OAK-414 -->
      org.apache.jackrabbit.oak.jcr.security.user.UserImportTest#testImportGroupIntoUsersTree               <!-- OAK-414 -->
      org.apache.jackrabbit.oak.jcr.security.user.UserImportTest#testExistingPrincipal                      <!-- OAK-414 -->
      org.apache.jackrabbit.oak.jcr.security.user.UserImportTest#testConflictingPrincipalsWithinImport      <!-- OAK-414 -->
      org.apache.jackrabbit.oak.jcr.security.user.UserImportTest#testMultiValuedPrincipalName               <!-- OAK-414 -->
      org.apache.jackrabbit.oak.jcr.security.user.UserImportTest#testMultiValuedPassword                    <!-- OAK-414 -->
      org.apache.jackrabbit.oak.jcr.security.user.UserImportTest#testIncompleteUser                         <!-- OAK-414 -->
      org.apache.jackrabbit.oak.jcr.security.user.UserImportTest#testImportImpersonation                    <!-- OAK-414 -->
      org.apache.jackrabbit.oak.jcr.security.user.UserImportTest#testImportNonExistingMemberAbort           <!-- OAK-414 -->
      org.apache.jackrabbit.oak.jcr.security.user.UserImportTest#testImportSelfAsGroupAbort                 <!-- OAK-414 -->
      org.apache.jackrabbit.oak.jcr.security.user.UserImportTest#testImportInvalidImpersonationAbort        <!-- OAK-414 -->
      org.apache.jackrabbit.oak.jcr.security.user.UserImportTest#testImportGroupMembersFromNodesBestEffort  <!-- OAK-414 -->
      org.apache.jackrabbit.oak.jcr.security.user.MemberNodeImportTest                                      <!-- OAK-414, OAK-482 -->
      org.apache.jackrabbit.oak.jcr.version.VersionHistoryTest#testGetVersionHistoryFromNode             <!-- OAK-601 -->
      org.apache.jackrabbit.oak.jcr.version.VersionHistoryTest#testGetVersionHistory                     <!-- OAK-602 -->
      org.apache.jackrabbit.oak.jcr.version.VersionHistoryTest#testGetVersionHistoryAfterMove            <!-- OAK-602 -->

      org.apache.jackrabbit.oak.jcr.security.authorization.AccessControlManagementTest#testRemoveMixin              <!-- OAK-767 -->
      org.apache.jackrabbit.oak.jcr.security.authorization.WriteTest#testRemoveNodeWithInvisibleNonRemovableChild   <!-- OAK-51 -->
      org.apache.jackrabbit.oak.jcr.security.authorization.NodeTypeManagementTest#testRemoveMixin                   <!-- OAK-767 -->
      org.apache.jackrabbit.oak.jcr.security.authorization.NodeTypeManagementTest#testRemoveMixinWithoutPermission  <!-- OAK-767 -->
      org.apache.jackrabbit.oak.jcr.security.authorization.NodeTypeManagementTest#testCopy                          <!-- OAK-711 -->
      org.apache.jackrabbit.oak.jcr.security.authorization.NodeTypeManagementTest#testWorkspaceMove                 <!-- OAK-711 -->
      org.apache.jackrabbit.oak.jcr.security.authorization.NodeTypeManagementTest#testSessionMove                   <!-- OAK-711 -->
      org.apache.jackrabbit.oak.jcr.security.authorization.NodeTypeManagementTest#testWorkspaceImportXML            <!-- OAK-773 -->
    </known.issues>
  </properties>

  <build>
    <plugins>
      <plugin>
        <groupId>org.apache.felix</groupId>
        <artifactId>maven-bundle-plugin</artifactId>
        <configuration>
          <instructions>
            <Export-Package>
              !
            </Export-Package>
            <Bundle-Activator>
              org.apache.jackrabbit.oak.jcr.osgi.Activator
            </Bundle-Activator>
          </instructions>
        </configuration>
      </plugin>
    </plugins>
    <pluginManagement>
      <plugins>
        <plugin>
          <groupId>org.apache.rat</groupId>
          <artifactId>apache-rat-plugin</artifactId>
          <configuration>
            <excludes />
          </configuration>
        </plugin>
      </plugins>
    </pluginManagement>
  </build>

  <dependencies>
    <!-- Optional OSGi dependencies, used only when running within OSGi -->
    <dependency>
      <groupId>org.osgi</groupId>
      <artifactId>org.osgi.core</artifactId>
      <scope>provided</scope>
    </dependency>
    <dependency>
      <groupId>org.osgi</groupId>
      <artifactId>org.osgi.compendium</artifactId>
      <scope>provided</scope>
    </dependency>

    <dependency>
      <groupId>javax.jcr</groupId>
      <artifactId>jcr</artifactId>
      <version>2.0</version>
    </dependency>

    <dependency>
      <groupId>org.apache.jackrabbit</groupId>
      <artifactId>oak-core</artifactId>
      <version>${project.version}</version>
    </dependency>
    <dependency>
      <groupId>org.apache.jackrabbit</groupId>
      <artifactId>oak-commons</artifactId>
      <version>${project.version}</version>
    </dependency>
    <dependency>
      <groupId>org.apache.jackrabbit</groupId>
      <artifactId>jackrabbit-api</artifactId>
      <version>${jackrabbit.version}</version>
    </dependency>
    <dependency>
      <groupId>org.apache.jackrabbit</groupId>
      <artifactId>jackrabbit-jcr-commons</artifactId>
      <version>${jackrabbit.version}</version>
    </dependency>

    <dependency>
      <groupId>com.google.guava</groupId>
      <artifactId>guava</artifactId>
    </dependency>
    <dependency>
      <groupId>org.slf4j</groupId>
      <artifactId>slf4j-api</artifactId>
    </dependency>

    <!-- Findbugs annotations -->
    <dependency>
      <groupId>com.google.code.findbugs</groupId>
      <artifactId>jsr305</artifactId>
      <version>2.0.0</version>
      <scope>provided</scope>
    </dependency>

    <!-- Test dependencies -->
    <dependency>
      <groupId>org.apache.jackrabbit</groupId>
      <artifactId>oak-mongomk</artifactId>
      <version>${project.version}</version>
      <scope>test</scope>
    </dependency>
    <dependency>
      <groupId>junit</groupId>
      <artifactId>junit</artifactId>
      <scope>test</scope>
    </dependency>
    <dependency>
      <groupId>ch.qos.logback</groupId>
      <artifactId>logback-classic</artifactId>
      <scope>test</scope>
    </dependency>
    <dependency>
      <groupId>org.slf4j</groupId>
      <artifactId>jul-to-slf4j</artifactId>
      <scope>test</scope>
    </dependency>
    <dependency>
      <groupId>com.h2database</groupId>
      <artifactId>h2</artifactId>
      <version>1.3.158</version>
      <scope>test</scope>
    </dependency>
    <dependency>
      <groupId>org.apache.jackrabbit</groupId>
      <artifactId>jackrabbit-jcr-tests</artifactId>
      <version>${jackrabbit.version}</version>
      <optional>true</optional>
    </dependency>
    <dependency>
      <groupId>org.apache.jackrabbit</groupId>
      <artifactId>jackrabbit-core</artifactId>
      <version>${jackrabbit.version}</version>
      <classifier>tests</classifier>
      <scope>test</scope>
    </dependency>
  </dependencies>
</project>
