@ -1,5 +1,5 @@
/ *
/ *
* Copyright 2002 - 2016 the original author or authors .
* Copyright 2002 - 2019 the original author or authors .
*
*
* Licensed under the Apache License , Version 2 . 0 ( the "License" ) ;
* Licensed under the Apache License , Version 2 . 0 ( the "License" ) ;
* you may not use this file except in compliance with the License .
* you may not use this file except in compliance with the License .
@ -560,6 +560,25 @@ public class AclImplTests {
childAcl . setParent ( changeParentAcl ) ;
childAcl . setParent ( changeParentAcl ) ;
}
}
@Test
public void hashCodeWithoutStackOverFlow ( ) throws Exception {
//given
Sid sid = new PrincipalSid ( "pSid" ) ;
ObjectIdentity oid = new ObjectIdentityImpl ( "type" , 1 ) ;
AclAuthorizationStrategy authStrategy = new AclAuthorizationStrategyImpl ( new SimpleGrantedAuthority ( "role" ) ) ;
PermissionGrantingStrategy grantingStrategy = new DefaultPermissionGrantingStrategy ( new ConsoleAuditLogger ( ) ) ;
AclImpl acl = new AclImpl ( oid , 1L , authStrategy , grantingStrategy , null , null , false , sid ) ;
AccessControlEntryImpl ace = new AccessControlEntryImpl ( 1L , acl , sid , BasePermission . READ , true , true , true ) ;
Field fieldAces = FieldUtils . getField ( AclImpl . class , "aces" ) ;
fieldAces . setAccessible ( true ) ;
List < AccessControlEntryImpl > aces = ( List < AccessControlEntryImpl > ) fieldAces . get ( acl ) ;
aces . add ( ace ) ;
//when - then none StackOverFlowError been raised
ace . hashCode ( ) ;
}
// ~ Inner Classes
// ~ Inner Classes
// ==================================================================================================
// ==================================================================================================