Java Code Examples for org.springframework.test.context.transaction.TestTransaction#flagForCommit()
The following examples show how to use
org.springframework.test.context.transaction.TestTransaction#flagForCommit() .
You can vote up the ones you like or vote down the ones you don't like,
and go to the original project or source file by following the links above each example. You may check out the related API usage on the sidebar.
Example 1
Source File: ProgrammaticTxMgmtTests.java From spring-analysis-note with MIT License | 6 votes |
@Test public void commitTxAndStartNewTx() { assertInTransaction(true); assertTrue(TestTransaction.isActive()); assertUsers("Dilbert"); deleteFromTables("user"); assertUsers(); // Commit TestTransaction.flagForCommit(); assertFalse(TestTransaction.isFlaggedForRollback()); TestTransaction.end(); assertInTransaction(false); assertFalse(TestTransaction.isActive()); assertUsers(); executeSqlScript("classpath:/org/springframework/test/context/jdbc/data-add-dogbert.sql", false); assertUsers("Dogbert"); TestTransaction.start(); assertInTransaction(true); assertTrue(TestTransaction.isActive()); }
Example 2
Source File: ProgrammaticTxMgmtTests.java From spring4-understanding with Apache License 2.0 | 6 votes |
@Test public void commitTxButDoNotStartNewTx() { assertInTransaction(true); assertTrue(TestTransaction.isActive()); assertUsers("Dilbert"); deleteFromTables("user"); assertUsers(); // Commit TestTransaction.flagForCommit(); assertFalse(TestTransaction.isFlaggedForRollback()); TestTransaction.end(); assertFalse(TestTransaction.isActive()); assertInTransaction(false); assertUsers(); executeSqlScript("classpath:/org/springframework/test/context/jdbc/data-add-dogbert.sql", false); assertUsers("Dogbert"); }
Example 3
Source File: ActionServiceImplTest.java From alfresco-repository with GNU Lesser General Public License v3.0 | 6 votes |
public void xtestAsyncLoadTest() { // TODO this is very weak .. how do we improve this ??? Action action = this.actionService.createAction(AddFeaturesActionExecuter.NAME); action.setParameterValue(AddFeaturesActionExecuter.PARAM_ASPECT_NAME, ContentModel.ASPECT_VERSIONABLE); action.setExecuteAsynchronously(true); for (int i = 0; i < 1000; i++) { this.actionService.executeAction(action, this.nodeRef); } TestTransaction.flagForCommit(); TestTransaction.end(); // TODO how do we assess whether the large number of actions stacked cause a problem ?? }
Example 4
Source File: ProgrammaticTxMgmtTestNGTests.java From java-technology-stack with MIT License | 6 votes |
@Test public void commitTxButDoNotStartNewTx() { assertInTransaction(true); assertTrue(TestTransaction.isActive()); assertUsers("Dilbert"); deleteFromTables("user"); assertUsers(); // Commit TestTransaction.flagForCommit(); assertFalse(TestTransaction.isFlaggedForRollback()); TestTransaction.end(); assertFalse(TestTransaction.isActive()); assertInTransaction(false); assertUsers(); executeSqlScript("classpath:/org/springframework/test/context/jdbc/data-add-dogbert.sql", false); assertUsers("Dogbert"); }
Example 5
Source File: ProgrammaticTxMgmtTestNGTests.java From spring4-understanding with Apache License 2.0 | 6 votes |
@Test public void commitTxAndStartNewTx() { assertInTransaction(true); assertTrue(TestTransaction.isActive()); assertUsers("Dilbert"); deleteFromTables("user"); assertUsers(); // Commit TestTransaction.flagForCommit(); assertFalse(TestTransaction.isFlaggedForRollback()); TestTransaction.end(); assertInTransaction(false); assertFalse(TestTransaction.isActive()); assertUsers(); executeSqlScript("classpath:/org/springframework/test/context/jdbc/data-add-dogbert.sql", false); assertUsers("Dogbert"); TestTransaction.start(); assertInTransaction(true); assertTrue(TestTransaction.isActive()); }
Example 6
Source File: ProgrammaticTxMgmtTestNGTests.java From spring-analysis-note with MIT License | 6 votes |
@Test public void commitTxButDoNotStartNewTx() { assertInTransaction(true); assertTrue(TestTransaction.isActive()); assertUsers("Dilbert"); deleteFromTables("user"); assertUsers(); // Commit TestTransaction.flagForCommit(); assertFalse(TestTransaction.isFlaggedForRollback()); TestTransaction.end(); assertFalse(TestTransaction.isActive()); assertInTransaction(false); assertUsers(); executeSqlScript("classpath:/org/springframework/test/context/jdbc/data-add-dogbert.sql", false); assertUsers("Dogbert"); }
Example 7
Source File: ProgrammaticTxMgmtTestNGTests.java From spring-analysis-note with MIT License | 6 votes |
@Test public void commitTxAndStartNewTx() { assertInTransaction(true); assertTrue(TestTransaction.isActive()); assertUsers("Dilbert"); deleteFromTables("user"); assertUsers(); // Commit TestTransaction.flagForCommit(); assertFalse(TestTransaction.isFlaggedForRollback()); TestTransaction.end(); assertInTransaction(false); assertFalse(TestTransaction.isActive()); assertUsers(); executeSqlScript("classpath:/org/springframework/test/context/jdbc/data-add-dogbert.sql", false); assertUsers("Dogbert"); TestTransaction.start(); assertInTransaction(true); assertTrue(TestTransaction.isActive()); }
Example 8
Source File: VersionServiceImplTest.java From alfresco-repository with GNU Lesser General Public License v3.0 | 5 votes |
@Test public void testAutoVersionOff() { // Create a versionable node final NodeRef versionableNode = createNewVersionableNode(); this.dbNodeService.setProperty(versionableNode, ContentModel.PROP_AUTO_VERSION, false); TestTransaction.flagForCommit(); TestTransaction.end(); // The initial version should have been created now transactionService.getRetryingTransactionHelper().doInTransaction(new RetryingTransactionCallback<Object>() { public Object execute() throws Exception { // Add some content ContentWriter contentWriter = contentService.getWriter(versionableNode, ContentModel.PROP_CONTENT, true); assertNotNull(contentWriter); contentWriter.putContent(UPDATED_CONTENT_1); return null; } }); // Now lets have a look and make sure we have the correct number of entries in the version history transactionService.getRetryingTransactionHelper().doInTransaction(new RetryingTransactionCallback<Object>() { public Object execute() throws Exception { VersionHistory versionHistory = versionService.getVersionHistory(versionableNode); assertNotNull(versionHistory); assertEquals(1, versionHistory.getAllVersions().size()); return null; } }); }
Example 9
Source File: VersionServiceImplTest.java From alfresco-repository with GNU Lesser General Public License v3.0 | 5 votes |
@Test public void testAddVersionableAspectWithNoVersionType() { // No version-type specified when adding the aspect NodeRef nodeRef = createNodeWithVersionType(null); TestTransaction.flagForCommit(); TestTransaction.end(); assertCorrectVersionLabel(nodeRef, "1.0"); }
Example 10
Source File: DbNodeServiceImplTest.java From alfresco-repository with GNU Lesser General Public License v3.0 | 5 votes |
/** * Deletes a child node and then iterates over the children of the parent node, * getting the QName. This caused some issues after we did some optimization * using lazy loading of the associations. */ public void testLazyLoadIssue() throws Exception { Map<QName, ChildAssociationRef> assocRefs = buildNodeGraph(); // commit results TestTransaction.flagForCommit(); TestTransaction.end(); UserTransaction userTransaction = txnService.getUserTransaction(); try { userTransaction.begin(); ChildAssociationRef n6pn8Ref = assocRefs.get(QName.createQName(BaseNodeServiceTest.NAMESPACE, "n6_p_n8")); NodeRef n6Ref = n6pn8Ref.getParentRef(); NodeRef n8Ref = n6pn8Ref.getChildRef(); // delete n8 nodeService.deleteNode(n8Ref); // get the parent children List<ChildAssociationRef> assocs = nodeService.getChildAssocs(n6Ref); for (ChildAssociationRef assoc : assocs) { // just checking } userTransaction.commit(); } catch(Exception e) { try { userTransaction.rollback(); } catch (IllegalStateException ee) {} throw e; } }
Example 11
Source File: ThumbnailServiceImplTest.java From alfresco-repository with GNU Lesser General Public License v3.0 | 5 votes |
/** * See REPO-2519, MNT-17113 * * @throws IOException */ @Test public void testIfNodesExistsAfterCreateThumbnail() throws IOException { // Add the log appender to the root logger LogErrorAppender logErrorAppender = new LogErrorAppender(); Logger.getRootLogger().addAppender(logErrorAppender); // create content node for thumbnail node NodeRef pdfOrig = createOriginalContent(folder, MimetypeMap.MIMETYPE_PDF); QName qname = QName.createQName(NamespaceService.CONTENT_MODEL_1_0_URI, "doclib"); ThumbnailDefinition details = thumbnailService.getThumbnailRegistry().getThumbnailDefinition(qname.getLocalName()); TestTransaction.flagForCommit(); TestTransaction.end(); // create thumbnail transactionService.getRetryingTransactionHelper().doInTransaction(new RetryingTransactionHelper.RetryingTransactionCallback<Void>() { public Void execute() throws Throwable { // Delete the content node (pdfOrig) before the afterCommit code is executed TestNodeDeleterListener testNodeDeleterListener = new TestNodeDeleterListener(pdfOrig); // It needs to have a higher priority as the implemented afterCommit. The priority in order are (0,1,2,3,4) AlfrescoTransactionSupport.bindListener(testNodeDeleterListener, 1); thumbnailService.createThumbnail(pdfOrig, ContentModel.PROP_CONTENT, MimetypeMap.MIMETYPE_IMAGE_JPEG, details.getTransformationOptions(), "doclib"); return null; } }, false, true); assertEquals("There should be no error anymore", 0, logErrorAppender.getLog().size()); }
Example 12
Source File: ExecuteAllRulesActionExecuterTest.java From alfresco-repository with GNU Lesser General Public License v3.0 | 4 votes |
/** * Test for MNT-13055: * * We create a folder structure thus: * <pre> * rootFolder (rule: add an aspect) * | * +- folderA ("do not inherit rules" + link to rootFolder's rule set) * | * +- fileA * | * +- folderB * | * +- fileB * </pre> * This test case specifies a rule on rootFolder that adds an aspect to all files within. * folderA has the ignoreInheritedRules aspect applied, but also links to rootFolder's rule set. * <p> * We then explicitly execute folderA's rules, including for subfolders. Ultimately, we want to * know that fileB did indeed have the ruleset executed on it, and therefore gained the classifiable aspect. */ public void testRulesFireOnNonInheritedFolderUsingLinkedRuleSetInstead() { final NodeRef rootFolder = this.nodeService.createNode( this.rootNodeRef, ContentModel.ASSOC_CHILDREN, QName.createQName("{test}rootFolderForTest"), ContentModel.TYPE_FOLDER).getChildRef(); final NodeRef folderA = fileFolderService. create(rootFolder, "folderA", ContentModel.TYPE_FOLDER).getNodeRef(); // Set folderA to "Don't Inherit Rules". nodeService.addAspect(folderA, ASPECT_IGNORE_INHERITED_RULES, Collections.emptyMap()); NodeRef fileA = createFile(folderA, "fileA.txt").getNodeRef(); final NodeRef folderB = fileFolderService. create(folderA, "folderB", ContentModel.TYPE_FOLDER).getNodeRef(); NodeRef fileB = createFile(folderB, "fileB.txt").getNodeRef(); // Create a rule on rootFolder Rule rule = new Rule(); rule.setRuleType(RuleType.INBOUND); Action action = actionService.createAction(AddFeaturesActionExecuter.NAME); action.setParameterValue(AddFeaturesActionExecuter.PARAM_ASPECT_NAME, ContentModel.ASPECT_CLASSIFIABLE); rule.setAction(action); // It mustn't matter whether this rule "applies to children", since we'll explicitly // run it on "the folder and its subfolders". rule.applyToChildren(false); rule.setExecuteAsynchronously(false); ruleService.enableRule(rule); ruleService.saveRule(rootFolder, rule); // Link to Rule Set of rootFolder to folderA Action linkAction = actionService.createAction(LinkRules.NAME); linkAction.setParameterValue(LinkRules.PARAM_LINK_FROM_NODE, rootFolder); linkAction.setExecuteAsynchronously(false); actionService.executeAction(linkAction, folderA); TestTransaction.flagForCommit(); TestTransaction.end(); transactionHelper.doInTransaction(() -> { assertFalse(nodeService.hasAspect(folderA, ContentModel.ASPECT_CLASSIFIABLE)); assertFalse(nodeService.hasAspect(fileA, ContentModel.ASPECT_CLASSIFIABLE)); assertFalse(nodeService.hasAspect(folderB, ContentModel.ASPECT_CLASSIFIABLE)); assertFalse(nodeService.hasAspect(fileB, ContentModel.ASPECT_CLASSIFIABLE)); return null; }); // rootFolder: "Run rule for this folder and its subfolders". transactionHelper.doInTransaction(() -> { Map<String, Serializable> actionParams = new HashMap<>(); actionParams.put(ExecuteAllRulesActionExecuter.PARAM_RUN_ALL_RULES_ON_CHILDREN, true); // In Share, when you manually trigger rules on a folder, this parameter (execute-inherited-rules) // will be false if the aspect rule:ignoreInheritedRules is present, and true otherwise. actionParams.put(ExecuteAllRulesActionExecuter.PARAM_EXECUTE_INHERITED_RULES, false); Action rulesAction = actionService.createAction(ExecuteAllRulesActionExecuter.NAME, actionParams); executer.execute(rulesAction, folderA); return null; }); transactionHelper.doInTransaction(() -> { // We're running the rule on folderA, so the folder itself won't be processed. assertFalse(nodeService.hasAspect(folderA, ContentModel.ASPECT_CLASSIFIABLE)); // The contents of folderA will all have the aspect added. assertTrue(nodeService.hasAspect(fileA, ContentModel.ASPECT_CLASSIFIABLE)); assertTrue(nodeService.hasAspect(folderB, ContentModel.ASPECT_CLASSIFIABLE)); // The contents of folderB will all have the aspect added. assertTrue(nodeService.hasAspect(fileB, ContentModel.ASPECT_CLASSIFIABLE)); return null; }); }
Example 13
Source File: DbNodeServiceImplTest.java From alfresco-repository with GNU Lesser General Public License v3.0 | 4 votes |
public void testAspectRemovalWithCommit() throws Throwable { // Create a node to add the aspect to NodeRef sourceNodeRef = nodeService.createNode( rootNodeRef, ASSOC_TYPE_QNAME_TEST_CHILDREN, QName.createQName(BaseNodeServiceTest.NAMESPACE, "testAspectRemoval-source"), ContentModel.TYPE_CONTAINER).getChildRef(); // Create a target for the associations NodeRef targetNodeRef = nodeService.createNode( rootNodeRef, ASSOC_TYPE_QNAME_TEST_CHILDREN, QName.createQName(BaseNodeServiceTest.NAMESPACE, "testAspectRemoval-target"), ContentModel.TYPE_CONTAINER).getChildRef(); // Add the aspect to the source nodeService.addAspect(sourceNodeRef, ASPECT_WITH_ASSOCIATIONS, null); // Make the associations nodeService.addChild( sourceNodeRef, targetNodeRef, ASSOC_ASPECT_CHILD_ASSOC, QName.createQName(NAMESPACE, "aspect-child")); nodeService.createAssociation(sourceNodeRef, targetNodeRef, ASSOC_ASPECT_NORMAL_ASSOC); // Check that the correct associations are present assertEquals("Expected exactly one child", 1, nodeService.getChildAssocs(sourceNodeRef).size()); assertEquals("Expected exactly one target", 1, nodeService.getTargetAssocs(sourceNodeRef, RegexQNamePattern.MATCH_ALL).size()); // Force a commit here TestTransaction.flagForCommit(); TestTransaction.end(); // start another transaction to remove the aspect UserTransaction txn = txnService.getUserTransaction(); txn.begin(); try { Set<QName> aspects = nodeService.getAspects(sourceNodeRef); int noAspectsBefore = aspects.size(); // Now remove the aspect nodeService.removeAspect(sourceNodeRef, ASPECT_WITH_ASSOCIATIONS); // Check that the associations were removed assertEquals("Expected exactly zero child", 0, nodeService.getChildAssocs(sourceNodeRef).size()); assertEquals("Expected exactly zero target", 0, nodeService.getTargetAssocs(sourceNodeRef, RegexQNamePattern.MATCH_ALL).size()); aspects = nodeService.getAspects(sourceNodeRef); assertEquals("Expected exactly one less aspect", noAspectsBefore-1, aspects.size()); txn.commit(); } catch (Throwable e) { try { txn.rollback(); } catch (Throwable ee) {} throw e; } }
Example 14
Source File: RuleTriggerTest.java From alfresco-repository with GNU Lesser General Public License v3.0 | 4 votes |
@Test public void testOnContentCreateTrigger() { TestRuleType nodeCreate = createTestRuleType(ON_CREATE_NODE_TRIGGER); assertFalse(nodeCreate.rulesTriggered); NodeRef nodeRef = this.nodeService.createNode( this.rootNodeRef, ContentModel.ASSOC_CHILDREN, ContentModel.ASSOC_CHILDREN, ContentModel.TYPE_CONTENT).getChildRef(); assertTrue(nodeCreate.rulesTriggered); // Terminate the transaction TestTransaction.flagForCommit(); TestTransaction.end(); TestTransaction.start(); TestRuleType contentCreate = createTestRuleType(ON_CONTENT_CREATE_TRIGGER); assertFalse(contentCreate.rulesTriggered); // Try and trigger the type ContentWriter contentWriter = this.contentService.getWriter(nodeRef, ContentModel.PROP_CONTENT, true); contentWriter.setMimetype(MimetypeMap.MIMETYPE_TEXT_PLAIN); contentWriter.setEncoding("UTF-8"); contentWriter.putContent("some content"); // Check to see if the rule type has been triggered assertTrue(contentCreate.rulesTriggered); // Try and trigger the type (again) contentCreate.rulesTriggered = false; assertFalse(contentCreate.rulesTriggered); ContentWriter contentWriter2 = this.contentService.getWriter(nodeRef, ContentModel.PROP_CONTENT, true); contentWriter2.setMimetype(MimetypeMap.MIMETYPE_TEXT_PLAIN); contentWriter2.setEncoding("UTF-8"); contentWriter2.putContent("some content"); // Check to see if the rule type has been triggered assertFalse(contentCreate.rulesTriggered); }
Example 15
Source File: DbNodeServiceImplTest.java From alfresco-repository with GNU Lesser General Public License v3.0 | 4 votes |
/** * Check that the maximum string lengths can be adjusted up and down. * Note that this test ONLY works for MySQL because the other databases cannot support more than 1024 characters * in the string_value column and the value may not be set to less than 1024. * * @see SchemaBootstrap#DEFAULT_MAX_STRING_LENGTH */ @SuppressWarnings("deprecation") public void testMySQLInnoDBNodeStringLengthWorker() throws Exception { TestTransaction.flagForCommit(); TestTransaction.end(); // Skip of the dialect if not MySQL (also skip for MySQL Cluster NDB) Dialect dialect = (Dialect) applicationContext.getBean("dialect"); if ((dialect instanceof MySQLClusterNDBDialect) || (! (dialect instanceof MySQLInnoDBDialect))) { return; } SchemaBootstrap schemaBootstrap = (SchemaBootstrap) applicationContext.getBean("schemaBootstrap"); assertEquals("Expected max string length to be MAX", Integer.MAX_VALUE, SchemaBootstrap.getMaxStringLength()); NodeStringLengthWorker worker = (NodeStringLengthWorker) applicationContext.getBean("nodeStringLengthWorker"); // If we run this worker just to get everything into the correct starting state. // If it does not work, then that will be detected later anyway NodeStringLengthWorkResult result = worker.execute(); assertTrue(result.getPropertiesProcessed() > 0); assertEquals(0, result.getErrors()); // Now set the max string length to DEFAULT_MAX_STRING_LENGTH characters schemaBootstrap.setMaximumStringLength(SchemaBootstrap.DEFAULT_MAX_STRING_LENGTH); schemaBootstrap.onApplicationEvent(new ContextRefreshedEvent(applicationContext)); // Move any values persisted before the test result = worker.execute(); int firstPassChanged = result.getPropertiesChanged(); StringBuilder sb = new StringBuilder(); for (int i = 0; i < SchemaBootstrap.DEFAULT_MAX_STRING_LENGTH + 1; i++) { sb.append("A"); } final String longString = sb.toString(); // Persist the property using the default MAX_VALUE so that it goes into the string_value schemaBootstrap.setMaximumStringLength(Integer.MAX_VALUE); schemaBootstrap.onApplicationEvent(new ContextRefreshedEvent(applicationContext)); txnService.getRetryingTransactionHelper().doInTransaction(new RetryingTransactionCallback<Void>() { @Override public Void execute() throws Throwable { nodeService.setProperty(rootNodeRef, PROP_QNAME_STRING_VALUE, longString); return null; } }); // The worker should do nothing result = worker.execute(); assertEquals(firstPassChanged, result.getPropertiesChanged()); // Now bring the limit down to the match for other DBs schemaBootstrap.setMaximumStringLength(SchemaBootstrap.DEFAULT_MAX_STRING_LENGTH); schemaBootstrap.onApplicationEvent(new ContextRefreshedEvent(applicationContext)); result = worker.execute(); assertEquals(firstPassChanged + 1, result.getPropertiesChanged()); // Put the limit back to the MySQL default and all the large values should go back into MySQL's TEXT field schemaBootstrap.setMaximumStringLength(Integer.MAX_VALUE); schemaBootstrap.onApplicationEvent(new ContextRefreshedEvent(applicationContext)); result = worker.execute(); assertEquals(firstPassChanged + 1, result.getPropertiesChanged()); // Check that our string is still OK String checkLongString = txnService.getRetryingTransactionHelper().doInTransaction(new RetryingTransactionCallback<String>() { @Override public String execute() throws Throwable { return (String) nodeService.getProperty(rootNodeRef, PROP_QNAME_STRING_VALUE); } }); assertEquals("String manipulation corrupted the long string value. ", longString, checkLongString); }
Example 16
Source File: DictionaryModelTypeTest.java From alfresco-repository with GNU Lesser General Public License v3.0 | 4 votes |
@Test public void testImportingSameNamespaceFails() throws Exception { // just to make sure we don't regress ACE-5852, some tests should run as System AuthenticationUtil.setFullyAuthenticatedUser(AuthenticationUtil.getSystemUserName()); // Create model final NodeRef modelNode = createActiveModel("dictionary/testModel.xml"); TestTransaction.flagForCommit(); TestTransaction.end(); // add second model to introduce self referencing dependency TestTransaction.start(); PropertyMap properties = new PropertyMap(1); properties.put(ContentModel.PROP_MODEL_ACTIVE, true); final NodeRef modelNode2 = this.nodeService.createNode( this.rootNodeRef, ContentModel.ASSOC_CHILDREN, QName.createQName(NamespaceService.ALFRESCO_URI, "dictionaryModels"), ContentModel.TYPE_DICTIONARY_MODEL, properties).getChildRef(); TestTransaction.flagForCommit(); TestTransaction.end(); try { transactionService.getRetryingTransactionHelper().doInTransaction(new RetryingTransactionCallback<Void>() { public Void execute() throws Exception { ContentWriter contentWriter = DictionaryModelTypeTest.this.contentService.getWriter(modelNode2, ContentModel.PROP_CONTENT, true); contentWriter.putContent(Thread.currentThread().getContextClassLoader().getResourceAsStream("dictionary/testModel2.xml")); return null; } }); fail("Validation should fail as a circular dependency was introduced"); } catch(AlfrescoRuntimeException e) { assertTrue(e.getCause().getMessage().contains("URI mage.model cannot be imported as it is already contained in the model's namespaces")); } //delete model finally { transactionService.getRetryingTransactionHelper().doInTransaction( new RetryingTransactionCallback<Object>() { public Object execute() throws Exception { // Delete the model DictionaryModelTypeTest.this.nodeService.deleteNode(modelNode); return null; } }); } }
Example 17
Source File: RenditionServiceIntegrationTest.java From alfresco-repository with GNU Lesser General Public License v3.0 | 4 votes |
@Before public void before() throws Exception { super.before(); this.namespaceService= (NamespaceService) this.applicationContext.getBean("namespaceService"); this.renditionService = (RenditionService) this.applicationContext.getBean("renditionService"); this.repositoryHelper = (Repository) this.applicationContext.getBean("repositoryHelper"); this.scriptService = (ScriptService) this.applicationContext.getBean("scriptService"); this.transactionHelper = (RetryingTransactionHelper) this.applicationContext .getBean("retryingTransactionHelper"); // Set the current security context as admin AuthenticationUtil.setFullyAuthenticatedUser(AuthenticationUtil.getAdminUserName()); // Register our test rendering engine if needed DummyHelloWorldRenditionEngine.registerIfNeeded(this.applicationContext); // Create test folders NodeRef companyHome = this.repositoryHelper.getCompanyHome(); // Create the test folder used for these tests this.testTargetFolder = createNode(companyHome, "testFolder-" + GUID.generate(), ContentModel.TYPE_FOLDER); // Create the node used as a content supplier for tests this.nodeWithDocContent = createContentNode(companyHome, "testDocContent-" + GUID.generate()); // Put some known PDF content in it. File pdfQuickFile = AbstractContentTransformerTest.loadQuickTestFile("pdf"); assertNotNull("Failed to load required test file.", pdfQuickFile); nodeService.setProperty(nodeWithDocContent, ContentModel.PROP_CONTENT, new ContentData(null, MimetypeMap.MIMETYPE_PDF, 0L, null)); ContentWriter writer = contentService.getWriter(nodeWithDocContent, ContentModel.PROP_CONTENT, true); writer.setMimetype(MimetypeMap.MIMETYPE_PDF); writer.setEncoding("UTF-8"); writer.putContent(pdfQuickFile); // Put the titled aspect on it - used for testing rendition updates Map<QName, Serializable> titledProps = new HashMap<QName, Serializable>(); titledProps.put(ContentModel.PROP_TITLE, "Original test title"); titledProps.put(ContentModel.PROP_DESCRIPTION, "Dummy description"); nodeService.addAspect(nodeWithDocContent, ContentModel.ASPECT_TITLED, titledProps); // Create a test image this.nodeWithImageContent = createContentNode(companyHome, "testImageNode-" + GUID.generate()); // Stream some well-known image content into the node. URL url = RenditionServiceIntegrationTest.class.getClassLoader().getResource("images/gray21.512.png"); assertNotNull("url of test image was null", url); File imageFile = new File(url.getFile()); setImageContentOnNode(nodeWithImageContent, MimetypeMap.MIMETYPE_IMAGE_PNG, imageFile); // Create a test template node. this.nodeWithFreeMarkerContent = createFreeMarkerNode(companyHome); TestTransaction.flagForCommit(); TestTransaction.end(); TestTransaction.start(); }
Example 18
Source File: ThumbnailServiceImplTest.java From alfresco-repository with GNU Lesser General Public License v3.0 | 4 votes |
/** * Inbound rule must not be applied on failed thumbnail * * see MNT-10914 */ @Test public void testRuleExecutionOnFailedThumbnailChild() throws Exception { // create inbound rule on folder Map<String, Serializable> params = new HashMap<String, Serializable>(1); params.put("aspect-name", ContentModel.ASPECT_GEN_CLASSIFIABLE); Rule rule = new Rule(); rule.setRuleType(RuleType.INBOUND); Action action = this.actionService.createAction(AddFeaturesActionExecuter.NAME, params); ActionCondition condition = this.actionService.createActionCondition(NoConditionEvaluator.NAME, null); action.addActionCondition(condition); rule.setAction(action); rule.applyToChildren(true); services.getRuleService().saveRule(folder, rule); TestTransaction.flagForCommit(); TestTransaction.end(); final NodeRef corruptNode = transactionService.getRetryingTransactionHelper().doInTransaction(new RetryingTransactionHelper.RetryingTransactionCallback<NodeRef>() { public NodeRef execute() throws Throwable { return createCorruptedContent(folder); } }); // Make sure the source node is correctly set up before we start // It should not be renditioned and should not be marked as having any failed thumbnails. assertFalse(secureNodeService.hasAspect(corruptNode, ContentModel.ASPECT_FAILED_THUMBNAIL_SOURCE)); // Attempt to perform a thumbnail that we know will fail. transactionService.getRetryingTransactionHelper().doInTransaction(new RetryingTransactionHelper.RetryingTransactionCallback<Void>() { public Void execute() throws Throwable { ThumbnailDefinition thumbnailDef = thumbnailService.getThumbnailRegistry().getThumbnailDefinition("doclib"); Action createThumbnailAction = ThumbnailHelper.createCreateThumbnailAction(thumbnailDef, services); actionService.executeAction(createThumbnailAction, corruptNode, true, true); return null; } }); // The thumbnail attempt has now failed. But a compensating action should have been scheduled that will mark the // source node with a failure aspect. As that is an asynchronous action, we need to wait for that to complete. Thread.sleep(3000); // This should be long enough for the compensating action to run. final NodeRef failedThumbnailNode = transactionService.getRetryingTransactionHelper().doInTransaction(new RetryingTransactionHelper.RetryingTransactionCallback<NodeRef>() { public NodeRef execute() throws Throwable { assertTrue("corrupt node should have failed thumbnails aspect", secureNodeService.hasAspect(corruptNode, ContentModel.ASPECT_FAILED_THUMBNAIL_SOURCE)); Map<String, FailedThumbnailInfo> failedThumbnails = thumbnailService.getFailedThumbnails(corruptNode); assertEquals("Wrong number of failed thumbnails", 1, failedThumbnails.size()); assertTrue("Missing QName for failed thumbnail", failedThumbnails.containsKey("doclib")); final FailedThumbnailInfo doclibFailureInfo = failedThumbnails.get("doclib"); assertNotNull("Failure info was null", doclibFailureInfo); return doclibFailureInfo.getFailedThumbnailNode(); } }); assertTrue("Rule must not be executed on document", secureNodeService.hasAspect(corruptNode, ContentModel.ASPECT_GEN_CLASSIFIABLE)); assertFalse("Rule must not be executed on failed thumbnail", secureNodeService.hasAspect(failedThumbnailNode, ContentModel.ASPECT_GEN_CLASSIFIABLE)); }
Example 19
Source File: ExecuteAllRulesActionExecuterTest.java From alfresco-repository with GNU Lesser General Public License v3.0 | 4 votes |
/** * Test execution as per MNT-13055. * <p> * When we use the ExecuteAllRulesActionExecuter to explicitly (e.g. "manually") * execute all the rules on a folder and its subfolders, the rule must correctly * recurse into those subfolders. This is a more simple test case than the steps * described in the above issue, but is crucial to the more complicated case * succeeding. */ public void testRuleAppliesToSubfoldersSuccessfully() { final NodeRef rootFolder = this.nodeService.createNode( this.rootNodeRef, ContentModel.ASSOC_CHILDREN, QName.createQName("{test}rootFolderForTest"), ContentModel.TYPE_FOLDER).getChildRef(); final NodeRef folderA = fileFolderService. create(rootFolder, "folderA", ContentModel.TYPE_FOLDER).getNodeRef(); NodeRef fileA = createFile(folderA, "fileA.txt").getNodeRef(); final NodeRef folderB = fileFolderService. create(folderA, "folderB", ContentModel.TYPE_FOLDER).getNodeRef(); NodeRef fileB = createFile(folderB, "fileB.txt").getNodeRef(); TestTransaction.flagForCommit(); TestTransaction.end(); // On RootFolder create a rule transactionHelper.doInTransaction(() -> { Rule rule1 = new Rule(); rule1.setRuleType(RuleType.INBOUND); Action action1 = actionService.createAction(AddFeaturesActionExecuter.NAME); action1.setParameterValue(AddFeaturesActionExecuter.PARAM_ASPECT_NAME, ContentModel.ASPECT_CLASSIFIABLE); rule1.setAction(action1); rule1.applyToChildren(true); rule1.setExecuteAsynchronously(false); ruleService.enableRule(rule1); ruleService.saveRule(rootFolder, rule1); return null; }); // Check the the docs don't have the aspects yet transactionHelper.doInTransaction(() -> { assertFalse(nodeService.hasAspect(folderA, ContentModel.ASPECT_CLASSIFIABLE)); assertFalse(nodeService.hasAspect(folderB, ContentModel.ASPECT_CLASSIFIABLE)); assertFalse(nodeService.hasAspect(fileA, ContentModel.ASPECT_CLASSIFIABLE)); assertFalse(nodeService.hasAspect(fileB, ContentModel.ASPECT_CLASSIFIABLE)); return null; }); // Execute the action transactionHelper.doInTransaction(() -> { Map<String, Serializable> actionParams = new HashMap<>(); actionParams.put(ExecuteAllRulesActionExecuter.PARAM_RUN_ALL_RULES_ON_CHILDREN, true); actionParams.put(ExecuteAllRulesActionExecuter.PARAM_EXECUTE_INHERITED_RULES, true); Action action = actionService.createAction(ExecuteAllRulesActionExecuter.NAME, actionParams); executer.execute(action, rootFolder); return null; }); transactionHelper.doInTransaction(() -> { assertTrue(nodeService.hasAspect(folderA, ContentModel.ASPECT_CLASSIFIABLE)); assertTrue(nodeService.hasAspect(folderB, ContentModel.ASPECT_CLASSIFIABLE)); assertTrue(nodeService.hasAspect(fileA, ContentModel.ASPECT_CLASSIFIABLE)); assertTrue(nodeService.hasAspect(fileB, ContentModel.ASPECT_CLASSIFIABLE)); return null; }); }
Example 20
Source File: HibernateBootstrapIntegrationTest.java From tutorials with MIT License | 2 votes |
@Test public void whenProgrammaticTransactionCommit_thenEntityIsInDatabase() { assertTrue(TestTransaction.isActive()); //Save an entity and commit. Session session = sessionFactory.getCurrentSession(); TestEntity newEntity = new TestEntity(); newEntity.setId(1); session.save(newEntity); TestEntity searchEntity = session.find(TestEntity.class, 1); Assert.assertNotNull(searchEntity); assertTrue(TestTransaction.isFlaggedForRollback()); TestTransaction.flagForCommit(); TestTransaction.end(); assertFalse(TestTransaction.isFlaggedForRollback()); assertFalse(TestTransaction.isActive()); //Check that the entity is still there in a new transaction, //then delete it, but don't commit. TestTransaction.start(); assertTrue(TestTransaction.isFlaggedForRollback()); assertTrue(TestTransaction.isActive()); session = sessionFactory.getCurrentSession(); searchEntity = session.find(TestEntity.class, 1); Assert.assertNotNull(searchEntity); session.delete(searchEntity); session.flush(); TestTransaction.end(); assertFalse(TestTransaction.isActive()); //Check that the entity is still there in a new transaction, //then delete it and commit. TestTransaction.start(); session = sessionFactory.getCurrentSession(); searchEntity = session.find(TestEntity.class, 1); Assert.assertNotNull(searchEntity); session.delete(searchEntity); session.flush(); assertTrue(TestTransaction.isActive()); TestTransaction.flagForCommit(); TestTransaction.end(); assertFalse(TestTransaction.isActive()); //Check that the entity is no longer there in a new transaction. TestTransaction.start(); assertTrue(TestTransaction.isActive()); session = sessionFactory.getCurrentSession(); searchEntity = session.find(TestEntity.class, 1); Assert.assertNull(searchEntity); }