66 */
77package org .hibernate .validator .internal .metadata .aggregated ;
88
9- import java .lang .reflect .Method ;
109import java .lang .reflect .Type ;
11- import java .security .AccessController ;
12- import java .security .PrivilegedAction ;
1310import java .util .ArrayDeque ;
1411import java .util .Collections ;
1512import java .util .Deque ;
2320
2421import javax .validation .ElementKind ;
2522
26- import org .hibernate .validator .HibernateValidatorPermission ;
2723import org .hibernate .validator .internal .engine .valueextraction .ValueExtractorManager ;
2824import org .hibernate .validator .internal .metadata .core .ConstraintHelper ;
2925import org .hibernate .validator .internal .metadata .core .MetaConstraint ;
3834import org .hibernate .validator .internal .metadata .raw .ConstrainedExecutable ;
3935import org .hibernate .validator .internal .metadata .raw .ConstrainedProperty ;
4036import org .hibernate .validator .internal .metadata .raw .ConstrainedType ;
41- import org .hibernate .validator .internal .properties .Callable ;
42- import org .hibernate .validator .internal .properties .Constrainable ;
4337import org .hibernate .validator .internal .properties .Property ;
4438import org .hibernate .validator .internal .util .CollectionHelper ;
4539import org .hibernate .validator .internal .util .TypeResolutionHelper ;
46- import org .hibernate .validator .internal .util .privilegedactions .GetDeclaredMethod ;
4740import org .hibernate .validator .internal .util .stereotypes .Immutable ;
4841
4942/**
@@ -71,8 +64,7 @@ private PropertyMetaData(String propertyName,
7164 Type type ,
7265 Set <MetaConstraint <?>> constraints ,
7366 Set <MetaConstraint <?>> containerElementsConstraints ,
74- Set <Cascadable > cascadables ,
75- boolean cascadingProperty ) {
67+ Set <Cascadable > cascadables ) {
7668 super (
7769 propertyName ,
7870 type ,
@@ -157,9 +149,8 @@ public static class Builder extends MetaDataBuilder {
157149 );
158150
159151 private final String propertyName ;
160- private final Map <Constrainable , Cascadable .Builder > cascadableBuilders = new HashMap <>();
152+ private final Map <Property , Cascadable .Builder > cascadableBuilders = new HashMap <>();
161153 private final Type propertyType ;
162- private boolean cascadingProperty = false ;
163154
164155 public Builder (Class <?> beanClass , ConstrainedProperty constrainedProperty , ConstraintHelper constraintHelper , TypeResolutionHelper typeResolutionHelper ,
165156 ValueExtractorManager valueExtractorManager ) {
@@ -206,8 +197,6 @@ public boolean accepts(ConstrainedElement constrainedElement) {
206197 public final void add (ConstrainedElement constrainedElement ) {
207198 super .add ( constrainedElement );
208199
209- cascadingProperty = cascadingProperty || constrainedElement .getCascadingMetaDataBuilder ().isCascading ();
210-
211200 if ( constrainedElement .getCascadingMetaDataBuilder ().isMarkedForCascadingOnAnnotatedObjectOrContainerElements () ||
212201 constrainedElement .getCascadingMetaDataBuilder ().hasGroupConversionsOnAnnotatedObjectOrContainerElements () ) {
213202 if ( constrainedElement .getKind () == ConstrainedElementKind .PROPERTY ) {
@@ -223,12 +212,12 @@ public final void add(ConstrainedElement constrainedElement) {
223212 }
224213 }
225214 else if ( constrainedElement .getKind () == ConstrainedElementKind .METHOD ) {
226- Callable method = ( (ConstrainedExecutable ) constrainedElement ).getCallable ();
227- Cascadable .Builder builder = cascadableBuilders .get ( method );
215+ Property property = ( (ConstrainedExecutable ) constrainedElement ).getCallable (). as ( Property . class );
216+ Cascadable .Builder builder = cascadableBuilders .get ( property );
228217
229218 if ( builder == null ) {
230- builder = new PropertyCascadable .Builder ( valueExtractorManager , method . as ( Property . class ) , constrainedElement .getCascadingMetaDataBuilder () );
231- cascadableBuilders .put ( method , builder );
219+ builder = new PropertyCascadable .Builder ( valueExtractorManager , property , constrainedElement .getCascadingMetaDataBuilder () );
220+ cascadableBuilders .put ( property , builder );
232221 }
233222 else {
234223 builder .mergeCascadingMetaData ( constrainedElement .getCascadingMetaDataBuilder () );
@@ -315,29 +304,6 @@ else if ( constrainedElement.getKind() == ConstrainedElementKind.METHOD ) {
315304 return null ;
316305 }
317306
318- /**
319- * Returns an accessible version of the given member. Will be the given member itself in case it is accessible,
320- * otherwise a copy which is set accessible.
321- */
322- private Method getAccessible (Method original ) {
323- if ( original .isAccessible () ) {
324- return original ;
325- }
326-
327- SecurityManager sm = System .getSecurityManager ();
328- if ( sm != null ) {
329- sm .checkPermission ( HibernateValidatorPermission .ACCESS_PRIVATE_MEMBERS );
330- }
331-
332- Class <?> clazz = original .getDeclaringClass ();
333-
334- return run ( GetDeclaredMethod .andMakeAccessible ( clazz , original .getName () ) );
335- }
336-
337- private <T > T run (PrivilegedAction <T > action ) {
338- return System .getSecurityManager () != null ? AccessController .doPrivileged ( action ) : action .run ();
339- }
340-
341307 @ Override
342308 public PropertyMetaData build () {
343309 Set <Cascadable > cascadables = cascadableBuilders .values ()
@@ -350,8 +316,7 @@ public PropertyMetaData build() {
350316 propertyType ,
351317 adaptOriginsAndImplicitGroups ( getDirectConstraints () ),
352318 adaptOriginsAndImplicitGroups ( getContainerElementConstraints () ),
353- cascadables ,
354- cascadingProperty
319+ cascadables
355320 );
356321 }
357322 }
0 commit comments