<!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: #333; 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: 0pt; mso-table-rspace: 0pt; background-color: #f5f5f5; border-collapse: collapse; mso-table-lspace: 0pt; mso-table-rspace: 0pt">
<!-- header here -->
<tr>
<td id="header-pattern-container" style="padding: 0px; border-collapse: collapse; padding: 10px 20px">
<table id="header-pattern" cellspacing="0" cellpadding="0" border="0" style="border-collapse: collapse; mso-table-lspace: 0pt; mso-table-rspace: 0pt">
<tr>
<td id="header-avatar-image-container" valign="top" style="padding: 0px; border-collapse: collapse; vertical-align: top; width: 32px; padding-right: 8px"> <img id="header-avatar-image" class="image_fix" src="https://secure.gravatar.com/avatar/12df4da7e3351be801bc16b66caf8038?d=mm&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: 0px; 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="hardy.ferentschik" id="email_hardy.ferentschik" href="https://hibernate.atlassian.net/secure/ViewProfile.jspa?name=hardy.ferentschik" style="color:#6c797f;; color: #3b73af; text-decoration: none">Hardy Ferentschik</a> <strong>updated</strong> an issue
</td>
</tr>
</table>
</td>
</tr>
<tr>
<td id="email-content-container" style="padding: 0px; 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: 0pt; mso-table-rspace: 0pt; border-spacing: 0; border-collapse: separate">
<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: 0px; border-collapse: collapse; color: #fff; padding: 0 15px 0 16px; height: 15px; background-color: #fff; border-left: 1px solid #ccc; border-top: 1px solid #ccc; border-right: 1px solid #ccc; 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">
</td>
</tr>
<tr>
<td class="email-content-main mobile-expand " style="padding: 0px; border-collapse: collapse; border-left: 1px solid #ccc; border-right: 1px solid #ccc; border-top: 0; border-bottom: 0; padding: 0 15px 0 16px; background-color: #fff">
<table class="page-title-pattern" cellspacing="0" cellpadding="0" border="0" width="100%" style="border-collapse: collapse; mso-table-lspace: 0pt; mso-table-rspace: 0pt">
<tr>
<td class="page-title-pattern-first-line " style="padding: 0px; border-collapse: collapse; font-family: Arial, sans-serif; font-size: 14px; padding-top: 10px"> <a href="https://hibernate.atlassian.net/browse/BVTCK" style="color: #3b73af; text-decoration: none">Bean Validation TCK</a> / <a href="https://hibernate.atlassian.net/browse/BVTCK-69" style="color: #3b73af; text-decoration: none"><img src="cid:jira-generated-image-static-bug-a22f9f44-9012-499b-b41a-bdb9828f6ac8" height="16" width="16" border="0" align="absmiddle" alt="Bug" style="vertical-align: text-bottom" /></a> <a href="https://hibernate.atlassian.net/browse/BVTCK-69" style="color: #3b73af; text-decoration: none">BVTCK-69</a>
</td>
</tr>
<tr>
<td style="vertical-align: top;; padding: 0px; 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/BVTCK-69" style="color: #3b73af; text-decoration: none">Issue with testCascadedReturnValueValidationOfConstrainedMethod in ExecutableValidationTest</a> </span>
</td>
</tr>
</table>
</td>
</tr>
<tr>
<td class="email-content-main mobile-expand wrapper-special-margin" style="padding: 0px; border-collapse: collapse; border-left: 1px solid #ccc; border-right: 1px solid #ccc; border-top: 0; border-bottom: 0; padding: 0 15px 0 16px; background-color: #fff; padding-top: 10px; padding-bottom: 5px">
<table class="keyvalue-table" style="border-collapse: collapse; mso-table-lspace: 0pt; mso-table-rspace: 0pt">
<tr>
<th style="color: #707070; font: normal 14px/20px Arial, sans-serif; text-align: left; vertical-align: top; padding: 2px 0">
Change By:
</th>
<td style="padding: 0px; border-collapse: collapse; font: normal 14px/20px Arial, sans-serif; padding: 2px 0 2px 5px; vertical-align: top"> <a class="user-hover" rel="hardy.ferentschik" id="email_hardy.ferentschik" href="https://hibernate.atlassian.net/secure/ViewProfile.jspa?name=hardy.ferentschik" style="color:#6c797f;; color: #3b73af; text-decoration: none">Hardy Ferentschik</a>
</td>
</tr>
</table>
</td>
</tr>
<tr>
<td class="email-content-main mobile-expand issue-description-container" style="padding: 0px; border-collapse: collapse; border-left: 1px solid #ccc; border-right: 1px solid #ccc; border-top: 0; border-bottom: 0; padding: 0 15px 0 16px; background-color: #fff; padding-top: 5px; padding-bottom: 10px">
<table class="text-paragraph-pattern" cellspacing="0" cellpadding="0" border="0" width="100%" style="border-collapse: collapse; mso-table-lspace: 0pt; mso-table-rspace: 0pt; font-family: Arial, sans-serif; font-size: 14px; line-height: 20px; mso-line-height-rule: exactly; mso-text-raise: 2px">
<tr>
<td class="text-paragraph-pattern-container mobile-resize-text " style="padding: 0px; border-collapse: collapse; padding: 0 0 10px 0"> <span class="diffcontext">CHALLENGE:<br /></span> <span class="diffaddedchars" style="background-color:#ddfade;">{noformat}<br /></span> <span class="diffcontext">One test case within the BeanValidation TCK suite:<br />Test: org.hibernate.beanvalidation.tck.tests.integration.cdi.executable.ExecutableValidationTest<br />Method: testCascadedReturnValueValidationOfConstrainedMethod<br /></span> <span class="diffaddedchars" style="background-color:#ddfade;">{noformat}</span> <span class="diffcontext"><br /></span> <span class="diffaddedchars" style="background-color:#ddfade;"><br /></span> <span class="diffcontext">The Weld CDI RI is forcing vendors who implement Bean Validation to write Weld specific code to ignore annotations on CDI generated proxy classes. Without this Weld specific code the Bean Validation implementor cannot successfully pass the Bean Validation TCK due to the following portion of the Bean Validation 1.1 specification being in violation.<br /><br />Section 4.5.5:<br /></span> <span class="diffremovedchars" style="background-color: #ffe7e7; text-decoration:line-through;">•</span> <span class="diffaddedchars" style="background-color:#ddfade;">{quote}<br /></span> <span class="diffcontext"> One must not mark a method return value for cascaded validation more than once in a line of a class hierarchy.<br />In other words, overriding methods on sub types (be it sub classes/interfaces or interface implementations) can-<br />not mark the return value for cascaded validation if the return value has already been marked on the overridden<br />method of the super type or interface.<br /></span> <span class="diffaddedchars" style="background-color:#ddfade;">{quote}</span> <span class="diffcontext"><br /><br />We've been in contact with the WELD community, and here they are confirming the behavior of annotations being duplicated on proxies:<br /></span> <span class="diffremovedchars" style="background-color: #ffe7e7; text-decoration:line-through;">"</span> <span class="diffaddedchars" style="background-color:#ddfade;">{quote}<br /></span> <span class="diffcontext">You're right, methods of a subclass generated by Weld have the same annotations applied as the original class. This behavior is depended on by framework/extension authors therefore we cannot change that.<br /></span> <span class="diffaddedchars" style="background-color:#ddfade;">{quote}</span> <span class="diffcontext"><br /></span> <span class="diffaddedchars" style="background-color:#ddfade;"><br /></span> <span class="diffcontext">The BV spec /</span> <span class="diffremovedchars" style="background-color: #ffe7e7; text-decoration:line-through;"> apache bean validation</span> <span class="diffaddedchars" style="background-color:#ddfade;"> Apache Bean Validation</span> <span class="diffcontext"> check seems too strict to me. The purpose of the constraint is to make sure that the</span> <span class="diffremovedchars" style="background-color: #ffe7e7; text-decoration:line-through;"> postcondition</span> <span class="diffaddedchars" style="background-color:#ddfade;"> post-condition</span> <span class="diffcontext"> constraints are not weaker in a subtype (e.g. a subtype could define @Valid with a strict subset of constraints in an overridden method). That sounds reasonable in general. In this particular case however, since Weld copies all the annotations, the constraint set is the same. The check could perhaps be altered to not fail if the constraint sets are equal.<br /><br />Alternatively, the BV implementation would need to recognize that this is a Weld proxy and not fail on cascaded validation in such case.<br /><br />Jozef</span> <span class="diffremovedchars" style="background-color: #ffe7e7; text-decoration:line-through;"> "</span> <span class="diffaddedchars" style="background-color:#ddfade;">:</span> <span class="diffcontext"><br /></span> <span class="diffaddedchars" style="background-color:#ddfade;">{quote}</span> <span class="diffcontext"><br /></span> <span class="diffremovedchars" style="background-color: #ffe7e7; text-decoration:line-through;"><br /></span> <span class="diffcontext">The Bean Validation RI appears to have made this concession for Weld to "recognize that this is a Weld proxy and not fail on cascaded validation in such case", which does not promote portability and forces vendor specific coding for integration.<br /></span> <span class="diffaddedchars" style="background-color:#ddfade;">{quote}</span> <span class="diffcontext"><br /><br />The test fails with:<br /></span> <span class="diffaddedchars" style="background-color:#ddfade;">{noformat}<br /></span> <span class="diffcontext"> <test-method status="FAIL" signature="testCascadedReturnValueValidationOfConstrainedMethod()[pri:0, instance:org.hibernate.beanvalidation.tck.tests.integration.cdi.executable.ExecutableValidationTest@dc9ab1e3]" name="testCascadedReturnValueValidationOfConstrainedMethod" duration-ms="1331" started-at="2015-05-22T17:58:53Z" finished-at="2015-05-22T17:58:55Z"><br /> <exception class="javax.validation.ConstraintDeclarationException"><br /> <message><br /> <![CDATA[@Valid on returned value can't be set more than once]]><br /> </message><br /> <full-stacktrace><br /> <![CDATA[javax.validation.ConstraintDeclarationException: @Valid on returned value can't be set more than once<br /></span> <span class="diffaddedchars" style="background-color:#ddfade;">{noformat}</span> <span class="diffcontext"><br /><br />This failure is due to the CDI proxy duplicating the annotations defined on the class being proxied.<br /><br /></span> <span class="diffremovedchars" style="background-color: #ffe7e7; text-decoration:line-through;"><br /></span> <span class="diffcontext">The Weld CDI RI should not be forcing Bean Validation implementors to write Weld specific code to ignore duplicate annotations generated on the Weld proxy classes. This is forcing ALL implementations of Bean Validation to ignore section 4.5.5 of the Bean Validation 1.1 specification when integrating with Weld CDI proxies in order to pass this test.<br /><br />This test should be excluded or changed to define the @Valid annotation via</span> <span class="diffaddedchars" style="background-color:#ddfade;"> {{</span> <span class="diffcontext"> validation.xml</span> <span class="diffaddedchars" style="background-color:#ddfade;">}}</span> <span class="diffcontext">, until the CDI RI is updated to not require</span> <span class="diffremovedchars" style="background-color: #ffe7e7; text-decoration:line-through;"> bean validation</span> <span class="diffaddedchars" style="background-color:#ddfade;"> Bean Validation</span> <span class="diffcontext"> implementations to add Weld specific code to pass the TCK.</span>
</td>
</tr>
</table>
</td>
</tr>
<tr>
<td class="email-content-main mobile-expand " style="padding: 0px; border-collapse: collapse; border-left: 1px solid #ccc; border-right: 1px solid #ccc; border-top: 0; border-bottom: 0; padding: 0 15px 0 16px; background-color: #fff">
<table id="actions-pattern" cellspacing="0" cellpadding="0" border="0" width="100%" style="border-collapse: collapse; mso-table-lspace: 0pt; mso-table-rspace: 0pt; font-family: Arial, sans-serif; font-size: 14px; line-height: 20px; mso-line-height-rule: exactly; mso-text-raise: 1px">
<tr>
<td id="actions-pattern-container" valign="middle" style="padding: 0px; border-collapse: collapse; padding: 10px 0 10px 24px; vertical-align: middle; padding-left: 0">
<table align="left" style="border-collapse: collapse; mso-table-lspace: 0pt; mso-table-rspace: 0pt">
<tr>
<td class="actions-pattern-action-icon-container" style="padding: 0px; border-collapse: collapse; font-family: Arial, sans-serif; font-size: 14px; line-height: 20px; mso-line-height-rule: exactly; mso-text-raise: 0px; vertical-align: middle"> <a href="https://hibernate.atlassian.net/browse/BVTCK-69#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-1f5324e8-8b78-462b-805a-fe7f62a6d023" 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: 0px; 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/BVTCK-69#add-comment" target="_blank" title="Add Comment" style="color: #3b73af; text-decoration: none">Add Comment</a>
</td>
</tr>
</table>
</td>
</tr>
</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: 0px; border-collapse: collapse; color: #fff; padding: 0 15px 0 16px; height: 5px; line-height: 5px; background-color: #fff; border-top: 0; border-left: 1px solid #ccc; border-bottom: 1px solid #ccc; border-right: 1px solid #ccc; border-bottom-right-radius: 5px; border-bottom-left-radius: 5px; mso-line-height-rule: exactly">
</td>
</tr>
</table>
</td>
</tr>
<tr>
<td id="footer-pattern" style="padding: 0px; border-collapse: collapse; padding: 12px 20px">
<table id="footer-pattern-container" cellspacing="0" cellpadding="0" border="0" style="border-collapse: collapse; mso-table-lspace: 0pt; mso-table-rspace: 0pt">
<tr>
<td id="footer-pattern-text" class="mobile-resize-text" width="100%" style="padding: 0px; border-collapse: collapse; color: #999; 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">(v6.5-OD-05-041#65001-<span title="e07c9f6ede7074bd21de4ab8b492355afe6390de" data-commit-id="e07c9f6ede7074bd21de4ab8b492355afe6390de}">sha1:e07c9f6</span>)</span>
</td>
<td id="footer-pattern-logo-desktop-container" valign="top" style="padding: 0px; border-collapse: collapse; padding-left: 20px; vertical-align: top">
<table style="border-collapse: collapse; mso-table-lspace: 0pt; mso-table-rspace: 0pt">
<tr>
<td id="footer-pattern-logo-desktop-padding" style="padding: 0px; border-collapse: collapse; padding-top: 3px"> <img id="footer-pattern-logo-desktop" src="cid:jira-generated-image-static-footer-desktop-logo-e14745cb-5125-4712-a163-01646b4d6ae9" alt="Atlassian logo" title="Atlassian logo" width="169" height="36" class="image_fix" />
</td>
</tr>
</table>
</td>
</tr>
</table>
</td>
</tr>
</table>
</body>
</html>