<!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://secure.gravatar.com/avatar/df12d7792bd3b7be3a4edf12cabd58cb?d=mm&amp;s=48" 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="steve" id="email_steve" href="https://hibernate.atlassian.net/secure/ViewProfile.jspa?name=steve" style="color:#6c797f;; color: #3b73af; text-decoration: none">Steve Ebersole</a> <strong>commented</strong> on <a href="https://hibernate.atlassian.net/browse/HHH-11356" style="color: #3b73af; text-decoration: none"><img src="cid:jira-generated-image-avatar-40631012-bf3b-4efe-a76c-96c53ec19ff0" height="16" width="16" border="0" align="absmiddle" alt="Improvement"> HHH-11356</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">&nbsp;</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/HHH-11356" style="color: #3b73af; text-decoration: none">Re: Adjust the 2nd-Cache SPIs to better reflect supported uses</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"><a href="https://hibernate.atlassian.net/secure/ViewProfile.jspa?name=galder.zamarreno%40jboss.com" class="user-hover" rel="galder.zamarreno@jboss.com" style="color: #3b73af; text-decoration: none">Galder Zamarreno</a> It was not recorded.</p> <p style="margin: 10px 0 0"><a href="https://hibernate.atlassian.net/secure/ViewProfile.jspa?name=rvansa" class="user-hover" rel="rvansa" style="color: #3b73af; text-decoration: none">Radim Vansa</a>, et.al. I went back and implemented the change to remove the <tt>txTimestamp</tt> argument that is passed in to SPI methods, where Session is also passed. I added a (temporary) Javadoc note on those methods about this being argument removed in favor of asking the Session. A few additional notes about this:</p> 
                                                        <ol> 
                                                            <li>I kept <tt>org.hibernate.cache.spi.RegionFactory#nextTimestamp</tt> as that is what is currently used to fuel the Session's timestamp value - which makes sense since the only real consumer of this is caching. So ORM will call this method every time a Session is created (to get its initial value) and then again every time a transaction is started.</li> 
                                                            <li>I also deprecated <tt>org.hibernate.engine.spi.SharedSessionContractImplementor#getTimestamp</tt> in favor of <tt>org.hibernate.engine.spi.SharedSessionContractImplementor#getTransactionStartTimestamp</tt> since I thought the latter more clearly implied its intent.</li> 
                                                        </ol> <p style="margin: 10px 0 0">Additionally I started thinking about ways we could handle supplying the RegionFactory with information about the region names and whether any are repeated. The idea here is to allow building better CacheKeyFactory references. First I wanted to ask, conceptually, who we want being responsible for deciding which CacheKeyFactory to use, and how granularly we want to allow that be decided.</p> <p style="margin: 10px 0 0">My opinion is that the RegionFactory ought to be responsible for making this decision, but that we need to pass it better information for it to make that decision. To that end I propose the following changes to my branch:</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">
/**
 * Create a <span class="code-keyword" style="color: #000091">new</span> <span class="code-quote" style="color: #009100">"parameter object"</span> <span class="code-keyword" style="color: #000091">for</span> {@link RegionFactory#createRegion} 
 * (along with the region name)...
 * &lt;p/&gt;
 * This would be implemented by a local class during the building of the 
 * SessionFactory to build the RegionAccess <span class="code-keyword" style="color: #000091">for</span> use by the EntityPersisters,
 * CollectionPersisters, etc.
 */
<span class="code-keyword" style="color: #000091">public</span> <span class="code-keyword" style="color: #000091">interface</span> RegionBuildingContext {
    /**
     * The CacheKeyFactory specifically specified by the configuration of 
     * Hibernate i.e. by the user, by some <span class="code-quote" style="color: #009100">"container"</span>, etc.
     * &lt;p/&gt; 
     * RegionFactory implementors should use <span class="code-keyword" style="color: #000091">this</span> to be its 
     * CacheKeyFactory when asked later.
     */
    CacheKeyFactory getEnforcedCacheFactory();

    /**
     * Mapping of region-names we encountered when 
     * processing the user's mapping model.
     * &lt;p/&gt;
     * Radim, <span class="code-keyword" style="color: #000091">this</span> is what I think helps with what you ask <span class="code-keyword" style="color: #000091">for</span> regarding 
     * being given a mapping of region names to various types of
     * being cached there.  See RegionNameMapping contract below;
     * <span class="code-keyword" style="color: #000091">this</span> is what ORM would hand the RegionFactory when asking it 
     * to build a Region
     */
    RegionNameMapping getRegionNameMapping();

    <span class="code-comment" style="color: #808080">// any other Bootstrap kind of info useful to pass here?  
</span>    <span class="code-comment" style="color: #808080">//     ServiceRegistry maybe?
</span>}

/**
 * Designed under the principle that each kind of <span class="code-quote" style="color: #009100">"cacheable"</span> can
 * define only one AccessType.  And that there is only one definition
 * <span class="code-keyword" style="color: #000091">for</span> entity hierarchies that must be defined under the root entity name.
 */
<span class="code-keyword" style="color: #000091">interface</span> RegionNameMapping {
    /**
     * The user-defined values <span class="code-keyword" style="color: #000091">for</span> all entities defined to be stored in 
     * <span class="code-keyword" style="color: #000091">this</span> Region.
     */
    List&lt;EntityCacheDescriptor&gt; getEntityCacheDescriptors();
    List&lt;CollectionCacheDescriptor&gt; getCollectionDescriptors();
    ...
}
</pre> 
                                                            </div>
                                                        </div> <p style="margin: 10px 0 0"><tt>EntityCacheDescriptor</tt> etc were already on my branch, this just gives you access to them earlier so that you can make those decisions.</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/HHH-11356?inbox=true&focusedCommentId=90310&page=com.atlassian.jira.plugin.system.issuetabpanels%3Acomment-tabpanel#comment-90310",
    "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/HHH-11356#add-comment" 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-4e1b172e-6685-44f2-928a-c883af48c9dd" 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/HHH-11356#add-comment" 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">&nbsp;</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-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">(v1000.765.0#100032-<span title="646a5d0622bd6c75542f31d1a4bca0fa93a3eb74" data-commit-id="646a5d0622bd6c75542f31d1a4bca0fa93a3eb74}">sha1:646a5d0</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"> <img id="footer-pattern-logo-desktop" src="cid:jira-generated-image-static-footer-desktop-logo-42539987-49e9-4ba6-a24c-cb3b9f003e2d" alt="Atlassian logo" title="Atlassian logo" width="169" height="36" class="image_fix"> </td> 
                                                </tr> 
                                            </tbody>
                                        </table> </td> 
                                </tr> 
                            </tbody>
                        </table> </td> 
                </tr> 
            </tbody>
        </table>   
    </body>
</html>