<!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="cid:jira-generated-image-avatar-4cfc3922-9b53-4000-92da-1098b8c60397" 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="Henno" id="email_Henno" href="https://hibernate.atlassian.net/secure/ViewProfile.jspa?name=Henno" style="color:#6c797f;; color: #3b73af; text-decoration: none">Henno Vermeulen</a> <strong>created</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/HV" style="color: #3b73af; text-decoration: none">Hibernate Validator</a> / <a href="https://hibernate.atlassian.net/browse/HV-1017" style="color: #3b73af; text-decoration: none"><img src="cid:jira-generated-image-avatar-f64742aa-3b0f-4372-b361-d7865fd1fa9f" height="16" width="16" border="0" align="absmiddle" alt="Bug" style="vertical-align: text-bottom" /></a> <a href="https://hibernate.atlassian.net/browse/HV-1017" style="color: #3b73af; text-decoration: none">HV-1017</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/HV-1017" style="color: #3b73af; text-decoration: none">javafx detection uses TCCL but JavaFXPropertyValueUnwrapper does not</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">
Issue Type:
</th>
<td class="has-icon" style="padding: 0px; border-collapse: collapse; font: normal 14px/20px Arial, sans-serif; padding: 2px 0 2px 5px; vertical-align: top"> <img src="cid:jira-generated-image-avatar-f64742aa-3b0f-4372-b361-d7865fd1fa9f" height="16" width="16" border="0" align="absmiddle" alt="Bug" style="vertical-align: text-bottom" /> Bug
</td>
</tr>
<tr>
<th style="color: #707070; font: normal 14px/20px Arial, sans-serif; text-align: left; vertical-align: top; padding: 2px 0">
Affects Versions:
</th>
<td style="padding: 0px; border-collapse: collapse; font: normal 14px/20px Arial, sans-serif; padding: 2px 0 2px 5px; vertical-align: top">
5.2.1.Final
</td>
</tr>
<tr>
<th style="color: #707070; font: normal 14px/20px Arial, sans-serif; text-align: left; vertical-align: top; padding: 2px 0">
Assignee:
</th>
<td style="padding: 0px; border-collapse: collapse; font: normal 14px/20px Arial, sans-serif; padding: 2px 0 2px 5px; vertical-align: top">
Unassigned
</td>
</tr>
<tr>
<th style="color: #707070; font: normal 14px/20px Arial, sans-serif; text-align: left; vertical-align: top; padding: 2px 0">
Components:
</th>
<td style="padding: 0px; border-collapse: collapse; font: normal 14px/20px Arial, sans-serif; padding: 2px 0 2px 5px; vertical-align: top">
engine
</td>
</tr>
<tr>
<th style="color: #707070; font: normal 14px/20px Arial, sans-serif; text-align: left; vertical-align: top; padding: 2px 0">
Created:
</th>
<td style="padding: 0px; border-collapse: collapse; font: normal 14px/20px Arial, sans-serif; padding: 2px 0 2px 5px; vertical-align: top">
15/Sep/2015 03:34 AM
</td>
</tr>
<tr>
<th style="color: #707070; font: normal 14px/20px Arial, sans-serif; text-align: left; vertical-align: top; padding: 2px 0">
Priority:
</th>
<td class="has-icon" style="padding: 0px; border-collapse: collapse; font: normal 14px/20px Arial, sans-serif; padding: 2px 0 2px 5px; vertical-align: top"> <img src="cid:jira-generated-image-static-major-a068560d-b4cb-456b-89e6-3b8896ec0638" height="16" width="16" border="0" align="absmiddle" alt="Major" style="vertical-align: text-bottom" /> Major
</td>
</tr>
<tr>
<th style="color: #707070; font: normal 14px/20px Arial, sans-serif; text-align: left; vertical-align: top; padding: 2px 0">
Reporter:
</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="Henno" id="email_Henno" href="https://hibernate.atlassian.net/secure/ViewProfile.jspa?name=Henno" style="color:#6c797f;; color: #3b73af; text-decoration: none">Henno Vermeulen</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">
<p style="margin-top:0;margin-bottom:10px;; margin: 10px 0 0 0">When bootstrapping Hibernate Validator, ConfigurationImpl's constructor is called which contains:</p>
<p style="margin-top:0;margin-bottom:10px;; margin: 10px 0 0 0">{{ if ( isJavaFxInClasspath() ) </p> { validatedValueHandlers.add( new JavaFXPropertyValueUnwrapper( typeResolutionHelper ) ); }
<p style="margin-top:0;margin-bottom:10px;; margin: 10px 0 0 0">}}</p>
<p style="margin-top:0;margin-bottom:10px;; margin: 10px 0 0 0">The classloading mechanism used to implement method isJavaFxInClasspath() is inconsistent with that used in JavaFXPropertyValueUnwrapper's constructor.</p>
<p style="margin-top:0;margin-bottom:10px;; margin: 10px 0 0 0">isJavaFxInClasspath uses the LoadClass util to check if the class "javafx.application.Application" exists. When this util fails to load the class through Class.forName it falls back to the Thread Context ClassLoader.</p>
<p style="margin-top:0;margin-bottom:10px;; margin: 10px 0 0 0">JavaFXPropertyValueUnwrapper is a generic class parameterized with "javafx.beans.value.ObservableValue". Its superclass constructor in TypeResolverBasedValueUnwrapper indirectly tries to load the ObservableValue class when resolving it's subclass type through classmate's TypeResolver. However, this does NOT fallback to the context class loader.</p>
<p style="margin-top:0;margin-bottom:10px;; margin: 10px 0 0 0">I have an Eclipse-based OSGi application that worked fine with Hibernate Validator 5.0.2.Final but fails bootstrapping Hibernate Validator with 5.2.1.Final due to this. I am not using javafx which means that the normal classloader cannot load javafx classes. Somehow the TCCL that Eclipse uses can load them leading to ClassNotFoundException: javafx.beans.value.ObservableValue.<br /> A workaround for me is to temporarily set the TCCL to null or to the normal classloader.</p>
<p style="margin-top:0;margin-bottom:10px;; margin: 10px 0 0 0">Expected behavior would be for Hibernate Validator to should either successfully create the JavaFXPropertyValueUnwrapper or skip it but not throw an exception<br /> when the TCCL differs from the normal classloader.</p>
<p style="margin-top:0;margin-bottom:10px;; margin: 10px 0 0 0">The exception I get:</p>
<p style="margin-top:0;margin-bottom:10px;; margin: 10px 0 0 0">Caused by: javax.validation.ValidationException: Unable to instantiate Configuration.<br /> at javax.validation.Validation$GenericBootstrapImpl.configure(Validation.java:279)<br /> at nl.hm.olga.validation.ValidatorFactoryFactory.create(ValidatorFactoryFactory.java:59)<br /> at nl.hm.olga.validation.ValidationUtil.<clinit>(ValidationUtil.java:58)<br /> ... 86 more<br /> Caused by: java.lang.TypeNotPresentException: Type javafx.beans.value.ObservableValue not present<br /> at sun.reflect.generics.factory.CoreReflectionFactory.makeNamedType(CoreReflectionFactory.java:117)<br /> at sun.reflect.generics.visitor.Reifier.visitClassTypeSignature(Reifier.java:125)<br /> at sun.reflect.generics.tree.ClassTypeSignature.accept(ClassTypeSignature.java:49)<br /> at sun.reflect.generics.visitor.Reifier.reifyTypeArguments(Reifier.java:68)<br /> at sun.reflect.generics.visitor.Reifier.visitClassTypeSignature(Reifier.java:138)<br /> at sun.reflect.generics.tree.ClassTypeSignature.accept(ClassTypeSignature.java:49)<br /> at sun.reflect.generics.repository.ClassRepository.getSuperclass(ClassRepository.java:87)<br /> at java.lang.Class.getGenericSuperclass(Class.java:777)<br /> at com.fasterxml.classmate.TypeResolver._resolveSuperClass(TypeResolver.java:424)<br /> at com.fasterxml.classmate.TypeResolver._constructType(TypeResolver.java:395)<br /> at com.fasterxml.classmate.TypeResolver._fromClass(TypeResolver.java:351)<br /> at com.fasterxml.classmate.TypeResolver.resolve(TypeResolver.java:111)<br /> at org.hibernate.validator.internal.engine.valuehandling.TypeResolverBasedValueUnwrapper.resolveSingleTypeParameter(TypeResolverBasedValueUnwrapper.java:41)<br /> at org.hibernate.validator.internal.engine.valuehandling.TypeResolverBasedValueUnwrapper.<init>(TypeResolverBasedValueUnwrapper.java:29)<br /> at org.hibernate.validator.internal.engine.valuehandling.JavaFXPropertyValueUnwrapper.<init>(JavaFXPropertyValueUnwrapper.java:23)<br /> at org.hibernate.validator.internal.engine.ConfigurationImpl.<init>(ConfigurationImpl.java:117)<br /> at org.hibernate.validator.internal.engine.ConfigurationImpl.<init>(ConfigurationImpl.java:95)<br /> at org.hibernate.validator.HibernateValidator.createGenericConfiguration(HibernateValidator.java:31)<br /> at javax.validation.Validation$GenericBootstrapImpl.configure(Validation.java:276)<br /> ... 88 more<br /> Caused by: java.lang.ClassNotFoundException: javafx.beans.value.ObservableValue<br /> at org.eclipse.osgi.internal.loader.BundleLoader.findClassInternal(BundleLoader.java:513)<br /> at org.eclipse.osgi.internal.loader.BundleLoader.findClass(BundleLoader.java:429)<br /> at org.eclipse.osgi.internal.loader.BundleLoader.findClass(BundleLoader.java:417)<br /> at org.eclipse.osgi.internal.baseadaptor.DefaultClassLoader.loadClass(DefaultClassLoader.java:107)<br /> at java.lang.ClassLoader.loadClass(ClassLoader.java:357)<br /> at java.lang.Class.forName0(Native Method)<br /> at java.lang.Class.forName(Class.java:348)<br /> at sun.reflect.generics.factory.CoreReflectionFactory.makeNamedType(CoreReflectionFactory.java:114)<br /> ... 106 more</p>
</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/HV-1017#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-4423ac35-2491-47b5-98dd-8b127e78882c" 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/HV-1017#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">(v7.0.0-OD-05-005#70102-<span title="a6815c26b18096920c1ad23cb89377b66994271f" data-commit-id="a6815c26b18096920c1ad23cb89377b66994271f}">sha1:a6815c2</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-d706fd7f-bec8-4990-ba8a-e924f6ba62a3" alt="Atlassian logo" title="Atlassian logo" width="169" height="36" class="image_fix" />
</td>
</tr>
</table>
</td>
</tr>
</table>
</td>
</tr>
</table>
</body>
</html>