繁体   English   中英

在Alfresco。 如何创建临时文件进行测试?

[英]In Alfresco. How can I create a temporary file for testing?

我的想法是在测试中创建一个文件,然后消除它,但我的代码失败了

我的代码:

 @RunWith(RemoteTestRunner.class)
 @Remote(runnerClass=SpringJUnit4ClassRunner.class)
 @ContextConfiguration("classpath:alfresco/application-context.xml")
 public class FooTest {
   private static final String ADMIN_USER_NAME = "admin";

   @Autowired
   @Qualifier("NodeService")
   protected NodeService nodeService;

   @Autowired
   private FileFolderService fileFolderService;

   @Autowired
   protected Repository repositoryHelper;

   @Test
   public void testCreateTempFile() {
     AuthenticationUtil.setFullyAuthenticatedUser(ADMIN_USER_NAME);

     NodeRef root = repositoryHelper.getSharedHome();

     // create the node
     // this line throw an exception
     FileInfo fileInfo = fileFolderService.create(root,
       "foo.txt", ContentModel.PROP_CONTENT);
     ...
   }
 }

它出现以下错误:

org.alfresco.error.AlfrescoRuntimeException:07170002事务必须处于活动状态并且需要同步:org.alfresco.util.transaction.TransactionSupportUtil.registerSynchronizations(TransactionSupportUtil.java:188)中的线程[main,5,main]

交易如何运作? 我该怎么激活它?

为了使用临时文件,alfresco提供了一个实用程序类

org.alfresco.util.TempFileProvider

它具有允许您创建临时文件和目录的所有API。

如果您有大量临时文件的使用,您甚至可以考虑使用此实用程序 ,它允许您定期清除临时文件。

你试过@Transactional注释吗?

@Test
@Transactional
public void testCreateTempFile() {
....

这应该可以解决您的问题。

我找到了解决方案:

RetryingTransactionHelper transactionHelper = transactionService.getRetryingTransactionHelper();
final String filename =  "TestSite" + System.currentTimeMillis();

NodeRef noderef = transactionHelper.doInTransaction(new RetryingTransactionCallback<NodeRef>() {
    public NodeRef execute() throws Throwable {
      final NodeRef parent = repositoryHelper.getCompanyHome();
      FileInfo fileInfo = fileFolderService.create(parent, filename, ContentModel.PROP_CONTENT);
      NodeRef node = fileInfo.getNodeRef();

      ContentWriter writer = contentService.getWriter(node, ContentModel.PROP_CONTENT, true);
      writer.setMimetype(MimetypeMap.MIMETYPE_TEXT_PLAIN);
      writer.setEncoding("UTF-8");
      writer.putContent(content);
      return node;
    }
});

在Junit中必须使用事务来创建文件。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM