<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8">
<meta name="viewport" content="width=device-width, initial-scale=1.0, maximum-scale=1.0">
<base href="https://hibernate.atlassian.net">
<title>Message Title</title>
</head>
<body class="jira" style="color: #333333; font-family: Arial, sans-serif; font-size: 14px; line-height: 1.429">
<table id="background-table" cellpadding="0" cellspacing="0" width="100%" style="border-collapse: collapse; mso-table-lspace: 0; mso-table-rspace: 0; background-color: #f5f5f5; border-collapse: collapse; mso-table-lspace: 0; mso-table-rspace: 0" bgcolor="#f5f5f5">
<!-- header here -->
<tbody>
<tr>
<td id="header-pattern-container" style="padding: 0; border-collapse: collapse; padding: 10px 20px">
<table id="header-pattern" cellspacing="0" cellpadding="0" border="0" style="border-collapse: collapse; mso-table-lspace: 0; mso-table-rspace: 0">
<tbody>
<tr>
<td id="header-avatar-image-container" valign="top" style="padding: 0; border-collapse: collapse; vertical-align: top; width: 32px; padding-right: 8px" width="32"> <img id="header-avatar-image" class="image_fix" src="https://avatar-cdn.atlassian.com/df763530bd2227cc7821d3c1b826d91e?s=48&d=https%3A%2F%2Fhibernate.atlassian.net%2Fsecure%2Fuseravatar%3FownerId%3Ddavided%26avatarId%3D13640%26noRedirect%3Dtrue" height="32" width="32" border="0" style="border-radius: 3px; vertical-align: top"> </td>
<td id="header-text-container" valign="middle" style="padding: 0; border-collapse: collapse; vertical-align: middle; font-family: Arial, sans-serif; font-size: 14px; line-height: 20px; mso-line-height-rule: exactly; mso-text-raise: 1px"> <a class="user-hover" rel="davided" style="color:#6c797f;; color: #3b73af; text-decoration: none" id="email_davided" href="https://hibernate.atlassian.net/secure/ViewProfile.jspa?accountId=557058%3Adc17d3f8-d34a-4a8a-a552-704e1902d0ae"> Davide D'Alto </a> <strong>commented</strong> on <a href="https://hibernate.atlassian.net/browse/OGM-1554?atlOrigin=eyJpIjoiMmU1NWFiYjI4MjljNDM2NWIyYzNlMzFmNDZjNmM3NDQiLCJwIjoiaiJ9" style="color: #3b73af; text-decoration: none"><img src="cid:jira-generated-image-avatar-1c57f5b3-8908-4083-9cb4-324758d2b3fa" height="16" width="16" border="0" align="absmiddle" alt="Improvement"> OGM-1554</a> </td>
</tr>
</tbody>
</table> </td>
</tr>
<tr>
<td id="email-content-container" style="padding: 0; border-collapse: collapse; padding: 0 20px">
<table id="email-content-table" cellspacing="0" cellpadding="0" border="0" width="100%" style="border-collapse: collapse; mso-table-lspace: 0; mso-table-rspace: 0; border-spacing: 0; border-collapse: separate">
<tbody>
<tr>
<!-- there needs to be content in the cell for it to render in some clients -->
<td class="email-content-rounded-top mobile-expand" style="padding: 0; border-collapse: collapse; color: #ffffff; padding: 0 15px 0 16px; height: 15px; background-color: #ffffff; border-left: 1px solid #cccccc; border-top: 1px solid #cccccc; border-right: 1px solid #cccccc; border-bottom: 0; border-top-right-radius: 5px; border-top-left-radius: 5px; height: 10px; line-height: 10px; padding: 0 15px 0 16px; mso-line-height-rule: exactly" height="10" bgcolor="#ffffff"> </td>
</tr>
<tr>
<td class="email-content-main mobile-expand " style="padding: 0; border-collapse: collapse; border-left: 1px solid #cccccc; border-right: 1px solid #cccccc; border-top: 0; border-bottom: 0; padding: 0 15px 0 16px; background-color: #ffffff" bgcolor="#ffffff">
<table class="page-title-pattern" cellspacing="0" cellpadding="0" border="0" width="100%" style="border-collapse: collapse; mso-table-lspace: 0; mso-table-rspace: 0">
<tbody>
<tr>
<td style="vertical-align: top;; padding: 0; border-collapse: collapse; padding-right: 5px; font-size: 20px; line-height: 30px; mso-line-height-rule: exactly" class="page-title-pattern-header-container"> <span class="page-title-pattern-header" style="font-family: Arial, sans-serif; padding: 0; font-size: 20px; line-height: 30px; mso-text-raise: 2px; mso-line-height-rule: exactly; vertical-align: middle"> <a href="https://hibernate.atlassian.net/browse/OGM-1554?atlOrigin=eyJpIjoiMmU1NWFiYjI4MjljNDM2NWIyYzNlMzFmNDZjNmM3NDQiLCJwIjoiaiJ9" style="color: #3b73af; text-decoration: none">Re: Add support for mongodb 4.0 transaction feature</a> </span> </td>
</tr>
</tbody>
</table> </td>
</tr>
<tr>
<td id="text-paragraph-pattern-top" class="email-content-main mobile-expand comment-top-pattern" style="padding: 0; border-collapse: collapse; border-left: 1px solid #cccccc; border-right: 1px solid #cccccc; border-top: 0; border-bottom: 0; padding: 0 15px 0 16px; background-color: #ffffff; border-bottom: none; padding-bottom: 0" bgcolor="#ffffff">
<table class="text-paragraph-pattern" cellspacing="0" cellpadding="0" border="0" width="100%" style="border-collapse: collapse; mso-table-lspace: 0; mso-table-rspace: 0; font-family: Arial, sans-serif; font-size: 14px; line-height: 20px; mso-line-height-rule: exactly; mso-text-raise: 2px">
<tbody>
<tr>
<td class="text-paragraph-pattern-container mobile-resize-text " style="padding: 0; border-collapse: collapse; padding: 0 0 10px"> <p style="margin: 10px 0 0; margin-top: 0">Hi, thanks a lot.<br> Tests shouldn't fail, if you tell me the exception maybe I can help. <br> You will probably only touch the mongoDB project so, for development, the following should work without issues:</p>
<div class="code panel" style="border-width: 1px;; border: 1px solid #cccccc; background: #f5f5f5; font-size: 12px; line-height: 1.333; font-family: monospace; border: 1px solid #cccccc; -moz-border-radius: 3px; border-radius: 3px; margin: 9px 0">
<div class="codeContent panelContent" style="padding: 9px 12px">
<pre class="code-java" style="margin: 10px 0 0; margin-top: 0; max-height: 30em; overflow: auto; white-space: pre-wrap; word-wrap: normal">
mvn clean install -p mongodb -s settings-example.xml
</pre>
</div>
</div> <p style="margin: 10px 0 0">Once that works,<br> In MongoDBTestHelper you can implement the method <b>backendSupportsTransactions</b> like this:</p>
<div class="code panel" style="border-width: 1px;; border: 1px solid #cccccc; background: #f5f5f5; font-size: 12px; line-height: 1.333; font-family: monospace; border: 1px solid #cccccc; -moz-border-radius: 3px; border-radius: 3px; margin: 9px 0">
<div class="codeContent panelContent" style="padding: 9px 12px">
<pre class="code-java" style="margin: 10px 0 0; margin-top: 0; max-height: 30em; overflow: auto; white-space: pre-wrap; word-wrap: normal">
        @Override
        <span class="code-keyword" style="color: #000091">public</span> <span class="code-object" style="color: #910091">boolean</span> backendSupportsTransactions() {
                <span class="code-keyword" style="color: #000091">return</span> <span class="code-keyword" style="color: #000091">true</span>;
        }
</pre>
</div>
</div> <p style="margin: 10px 0 0">This will enable all the tests in our test suite that check datastores with transaction support. Once you have done that you should see some failure in the maven build.</p> <p style="margin: 10px 0 0">Now you can start to work on the transactions for MongoDB.</p> <p style="margin: 10px 0 0">For an example of transactions, I think you can check the Neo4j module, in particular the classes under the package <b>org.hibernate.ogm.datastore.neo4j.remote.bolt.transaction.impl</b>.</p> <p style="margin: 10px 0 0">The goal is to implement the interface <b>ForwardingTransactionCoordinatorBuilder</b> adding a class <b>MongoDBTransactionCoordinatorBuilder</b>. Then, in MongoDBDatastoreProvider, implements the method <b>getTransactionCoordinatorBuilder</b> and return an instance of the MongoDBTransactionCoordinatorBuilder. You can see an example of this in BoltNeo4jDatastoreProvider.</p> <p style="margin: 10px 0 0">The package <b>org.hibernate.ogm.datastore.neo4j.remote.bolt.transaction.impl</b> contains an example of the classes you need to create. They are the Neo4j ones but you should be able to adapt them for MongoDB.<br> The idea is that we have a transaction coordinator for JTA and one for Resource local and the builder decide which one to use based on the configuration. The transaction coordinator (TransactionCordinator) takes care of starting and stopping transactions.</p> <p style="margin: 10px 0 0">Make sure to keep the code clean and follow the Hibernate guidelines: <a href="http://hibernate.org/ogm/contribute/" class="external-link" rel="nofollow" style="color: #3b73af; text-decoration: none">http://hibernate.org/ogm/contribute/</a><br> You can find templates for your IDE here: <a href="https://github.com/hibernate/hibernate-ide-codestyles" class="external-link" rel="nofollow" style="color: #3b73af; text-decoration: none">https://github.com/hibernate/hibernate-ide-codestyles</a></p> <p style="margin: 10px 0 0">If you need help don't hesitate to ask and you can find us on:</p>
<ul>
<li>the forum: <a href="https://discourse.hibernate.org/c/hibernate-ogm" class="external-link" rel="nofollow" style="color: #3b73af; text-decoration: none">https://discourse.hibernate.org/c/hibernate-ogm</a></li>
<li>Zulip: <a href="https://hibernate.zulipchat.com/login/" class="external-link" rel="nofollow" style="color: #3b73af; text-decoration: none">https://hibernate.zulipchat.com/login/</a></li>
<li>Gitter: <a href="https://gitter.im/hibernate/hibernate-ogm-dev" class="external-link" rel="nofollow" style="color: #3b73af; text-decoration: none">https://gitter.im/hibernate/hibernate-ogm-dev</a></li>
</ul> <p style="margin: 10px 0 0">Thanks a lot!</p> </td>
</tr>
</tbody>
</table> </td>
</tr>
<tr>
<td class="email-content-main mobile-expand " style="padding: 0; border-collapse: collapse; border-left: 1px solid #cccccc; border-right: 1px solid #cccccc; border-top: 0; border-bottom: 0; padding: 0 15px 0 16px; background-color: #ffffff" bgcolor="#ffffff"> <script type="application/ld+json">
{
"@context": "http://schema.org",
"@type": "EmailMessage",
"description": "View Issue",
"potentialAction": {
"@type": "ViewAction",
"target": "https://hibernate.atlassian.net/browse/OGM-1554?inbox=true&focusedCommentId=104640&page=com.atlassian.jira.plugin.system.issuetabpanels%3Acomment-tabpanel#comment-104640",
"name": "View Comment"
},
"publisher": {
"@type": "Organization",
"name": "Atlassian",
"url": "https://www.atlassian.com"
}
}
</script>
<table id="actions-pattern" cellspacing="0" cellpadding="0" border="0" width="100%" style="border-collapse: collapse; mso-table-lspace: 0; mso-table-rspace: 0; font-family: Arial, sans-serif; font-size: 14px; line-height: 20px; mso-line-height-rule: exactly; mso-text-raise: 1px">
<tbody>
<tr>
<td id="actions-pattern-container" valign="middle" style="padding: 0; border-collapse: collapse; padding: 10px 0 10px 24px; vertical-align: middle; padding-left: 0">
<table align="left" style="border-collapse: collapse; mso-table-lspace: 0; mso-table-rspace: 0">
<tbody>
<tr>
<td class="actions-pattern-action-icon-container" style="padding: 0; border-collapse: collapse; font-family: Arial, sans-serif; font-size: 14px; line-height: 20px; mso-line-height-rule: exactly; mso-text-raise: 0; vertical-align: middle"> <a href="https://hibernate.atlassian.net/browse/OGM-1554#add-comment?atlOrigin=eyJpIjoiMmU1NWFiYjI4MjljNDM2NWIyYzNlMzFmNDZjNmM3NDQiLCJwIjoiaiJ9" target="_blank" title="Add Comment" style="color: #3b73af; text-decoration: none"> <img class="actions-pattern-action-icon-image" src="cid:jira-generated-image-static-comment-icon-f08a4633-c10a-4c1a-994d-ce128139ce0b" alt="Add Comment" title="Add Comment" height="16" width="16" border="0" style="vertical-align: middle"> </a> </td>
<td class="actions-pattern-action-text-container" style="padding: 0; border-collapse: collapse; font-family: Arial, sans-serif; font-size: 14px; line-height: 20px; mso-line-height-rule: exactly; mso-text-raise: 4px; padding-left: 5px"> <a href="https://hibernate.atlassian.net/browse/OGM-1554#add-comment?atlOrigin=eyJpIjoiMmU1NWFiYjI4MjljNDM2NWIyYzNlMzFmNDZjNmM3NDQiLCJwIjoiaiJ9" target="_blank" title="Add Comment" style="color: #3b73af; text-decoration: none">Add Comment</a> </td>
</tr>
</tbody>
</table> </td>
</tr>
</tbody>
</table> </td>
</tr>
<!-- there needs to be content in the cell for it to render in some clients -->
<tr>
<td class="email-content-rounded-bottom mobile-expand" style="padding: 0; border-collapse: collapse; color: #ffffff; padding: 0 15px 0 16px; height: 5px; line-height: 5px; background-color: #ffffff; border-top: 0; border-left: 1px solid #cccccc; border-bottom: 1px solid #cccccc; border-right: 1px solid #cccccc; border-bottom-right-radius: 5px; border-bottom-left-radius: 5px; mso-line-height-rule: exactly" height="5" bgcolor="#ffffff"> </td>
</tr>
</tbody>
</table> </td>
</tr>
<tr>
<td id="footer-pattern" style="padding: 0; border-collapse: collapse; padding: 12px 20px">
<table id="footer-pattern-container" cellspacing="0" cellpadding="0" border="0" style="border-collapse: collapse; mso-table-lspace: 0; mso-table-rspace: 0">
<tbody>
<tr>
<td id="footer-pattern-mobile-separated-links" class="mobile-resize-text" width="100%" colspan="2" style="padding: 0; border-collapse: collapse; color: #999999; font-size: 12px; line-height: 18px; font-family: Arial, sans-serif; mso-line-height-rule: exactly; mso-text-raise: 2px"> Get Jira notifications on your phone! Download the Jira Cloud app for <a href="https://play.google.com/store/apps/details?id=com.atlassian.android.jira.core&referrer=utm_source%3DNotificationLink%26utm_medium%3DEmail" style="color: #3b73af; text-decoration: none">Android</a> or <a href="https://itunes.apple.com/app/apple-store/id1006972087?pt=696495&ct=EmailNotificationLink&mt=8" style="color: #3b73af; text-decoration: none">iOS</a>
<hr> </td>
</tr>
<tr>
<td id="footer-pattern-text" class="mobile-resize-text" width="100%" style="padding: 0; border-collapse: collapse; color: #999999; font-size: 12px; line-height: 18px; font-family: Arial, sans-serif; mso-line-height-rule: exactly; mso-text-raise: 2px"> This message was sent by Atlassian Jira <span id="footer-build-information">(v1001.0.0-SNAPSHOT#100098-<span title="689f6f9194c91a11589100a69b0d2873cf605412" data-commit-id="689f6f9194c91a11589100a69b0d2873cf605412}">sha1:689f6f9</span>)</span> </td>
<td id="footer-pattern-logo-desktop-container" valign="top" style="padding: 0; border-collapse: collapse; padding-left: 20px; vertical-align: top">
<table style="border-collapse: collapse; mso-table-lspace: 0; mso-table-rspace: 0">
<tbody>
<tr>
<td id="footer-pattern-logo-desktop-padding" style="padding: 0; border-collapse: collapse; padding-top: 3px; opacity: 0.150"> <img id="footer-pattern-logo-desktop" src="cid:jira-generated-image-static-footer-desktop-logo-2bd5687e-8aa3-44ad-a196-71d1fa673be2" alt="Atlassian logo" title="Atlassian logo" width="192" height="24" class="image_fix"> </td>
</tr>
</tbody>
</table> </td>
</tr>
</tbody>
</table> </td>
</tr>
</tbody>
</table>
<img border="0" width="1" height="1" alt="" src="http://atlassian.et.e.sparkpost.com/q/hHPVpenFAvxyH8_YIa9taA~~/AAAAAQA~/RgReO_-BPlcLYXRsYXNzaWFudXNCCgAAAcxaXNUdea5SIGhpYmVybmF0ZS1pc3N1ZXNAbGlzdHMuamJvc3Mub3JnWAQAAAAE">
</body>
</html>