Ejemplo n.º 1
0
  public void testImmediateRemoval() throws Exception {
    eagerCleaner.setEagerOrphanCleanup(false);

    final StoreRef storeRef = nodeService.createStore("test", getName() + "-" + GUID.generate());
    RetryingTransactionCallback<ContentData> testCallback =
        new RetryingTransactionCallback<ContentData>() {
          public ContentData execute() throws Throwable {
            // Create some content
            NodeRef rootNodeRef = nodeService.getRootNode(storeRef);
            Map<QName, Serializable> properties = new HashMap<QName, Serializable>(13);
            properties.put(ContentModel.PROP_NAME, (Serializable) "test.txt");
            NodeRef contentNodeRef =
                nodeService
                    .createNode(
                        rootNodeRef,
                        ContentModel.ASSOC_CHILDREN,
                        ContentModel.ASSOC_CHILDREN,
                        ContentModel.TYPE_CONTENT,
                        properties)
                    .getChildRef();
            ContentWriter writer =
                contentService.getWriter(contentNodeRef, ContentModel.PROP_CONTENT, true);
            writer.setMimetype(MimetypeMap.MIMETYPE_TEXT_PLAIN);
            writer.putContent("INITIAL CONTENT");
            ContentData contentData = writer.getContentData();

            // Delete the first node
            nodeService.deleteNode(contentNodeRef);

            // Done
            return contentData;
          }
        };
    ContentData contentData =
        transactionService.getRetryingTransactionHelper().doInTransaction(testCallback);
    // Make sure that the content URL still exists
    ContentReader reader = contentService.getRawReader(contentData.getContentUrl());
    assertNotNull(reader);
    assertTrue("Content should not have been eagerly deleted.", reader.exists());

    // fire the cleaner
    cleaner.setProtectDays(0);
    cleaner.execute();

    reader = contentService.getRawReader(contentData.getContentUrl());
    // the content should have disappeared as it is not in the database
    assertFalse("Unprotected content was not deleted", reader.exists());
    assertTrue("Content listener was not called", deletedUrls.contains(reader.getContentUrl()));
  }
Ejemplo n.º 2
0
  public void testProtectedRemoval() throws Exception {
    cleaner.setProtectDays(1);
    // add some content to the store
    ContentWriter writer = store.getWriter(ContentStore.NEW_CONTENT_CONTEXT);
    writer.putContent("ABC");
    String contentUrl = writer.getContentUrl();

    // fire the cleaner
    cleaner.execute();

    // the content should have disappeared as it is not in the database
    assertTrue("Protected content was deleted", store.exists(contentUrl));
    assertFalse(
        "Content listener was called with deletion of protected URL",
        deletedUrls.contains(contentUrl));
  }
  private void clean() {
    ContentStoreCleanerListener listener =
        new ContentStoreCleanerListener() {
          private int count = 0;

          public void beforeDelete(ContentStore store, String contentUrl)
              throws ContentIOException {
            count++;
            if (count % 1000 == 0) {
              System.out.println(String.format("   Total deleted: %6d", count));
            }
          }
        };
    // We use the default cleaners, but fix them up a bit
    EagerContentStoreCleaner eagerCleaner =
        (EagerContentStoreCleaner) ctx.getBean("eagerContentStoreCleaner");
    eagerCleaner.setListeners(Collections.singletonList(listener));
    eagerCleaner.setStores(Collections.singletonList(contentStore));
    cleaner = (ContentStoreCleaner) ctx.getBean("contentStoreCleaner");
    cleaner.setProtectDays(0);

    // The cleaner has its own txns
    cleaner.execute();
  }
Ejemplo n.º 4
0
  @Override
  public void setUp() throws Exception {
    AuthenticationUtil.setRunAsUserSystem();

    ServiceRegistry serviceRegistry = (ServiceRegistry) ctx.getBean("ServiceRegistry");
    contentService = serviceRegistry.getContentService();
    nodeService = serviceRegistry.getNodeService();
    transactionService = serviceRegistry.getTransactionService();
    jobLockService = serviceRegistry.getJobLockService();
    TransactionService transactionService = serviceRegistry.getTransactionService();
    DictionaryService dictionaryService = serviceRegistry.getDictionaryService();
    NodeDaoService nodeDaoService = (NodeDaoService) ctx.getBean("nodeDaoService");
    AVMNodeDAO avmNodeDAO = (AVMNodeDAO) ctx.getBean("newAvmNodeDAO");
    ContentDataDAO contentDataDAO = (ContentDataDAO) ctx.getBean("contentDataDAO");

    // we need a store
    store = (ContentStore) ctx.getBean("fileContentStore");
    // and a listener
    listener = new DummyCleanerListener();
    // initialise record of deleted URLs
    deletedUrls = new ArrayList<String>(5);

    // Construct the test cleaners
    eagerCleaner = (EagerContentStoreCleaner) ctx.getBean("eagerContentStoreCleaner");
    eagerCleaner.setEagerOrphanCleanup(false);
    eagerCleaner.setStores(Collections.singletonList(store));
    eagerCleaner.setListeners(Collections.singletonList(listener));

    cleaner = new ContentStoreCleaner();
    cleaner.setEagerContentStoreCleaner(eagerCleaner);
    cleaner.setJobLockService(jobLockService);
    cleaner.setContentDataDAO(contentDataDAO);
    cleaner.setTransactionService(transactionService);
    cleaner.setDictionaryService(dictionaryService);
    cleaner.setContentService(contentService);
    cleaner.setNodeDaoService(nodeDaoService);
    cleaner.setAvmNodeDAO(avmNodeDAO);
  }