/** https://issues.apache.org/jira/browse/WICKET-4009 */
  @Test
  public void unlockIfNoSuchPage() {
    PageAccessSynchronizer synchronizer = new PageAccessSynchronizer(Duration.seconds(2));
    IPageManager pageManager = new MockPageManager();
    IPageManager synchronizedPageManager = synchronizer.adapt(pageManager);
    synchronizedPageManager.getPage(0);
    ConcurrentMap<Integer, PageLock> locks = synchronizer.getLocks().get();
    PageLock pageLock = locks.get(Integer.valueOf(0));
    assertNull(pageLock);

    int pageId = 1;
    IManageablePage page = new MockPage(pageId);
    synchronizedPageManager.touchPage(page);
    synchronizedPageManager.getPage(pageId);
    PageLock pageLock2 = locks.get(Integer.valueOf(pageId));
    assertNotNull(pageLock2);
  }
 /** @throws Exception */
 @Test
 public void testReentrant() throws Exception {
   final PageAccessSynchronizer sync = new PageAccessSynchronizer(Duration.seconds(5));
   sync.lockPage(0);
   sync.lockPage(0);
 }
 @Override
 public void run() {
   sync.lockPage(5);
 }