|  | @@ -19,219 +19,280 @@ import java.net.InetAddress;
 | 
	
		
			
				|  |  |  import java.util.Collections;
 | 
	
		
			
				|  |  |  import java.util.List;
 | 
	
		
			
				|  |  |  
 | 
	
		
			
				|  |  | -public class AuditTrailService implements AuditTrail {
 | 
	
		
			
				|  |  | +public class AuditTrailService {
 | 
	
		
			
				|  |  |  
 | 
	
		
			
				|  |  | +    private static final AuditTrail NOOP_AUDIT_TRAIL = new NoopAuditTrail();
 | 
	
		
			
				|  |  | +    private final CompositeAuditTrail compositeAuditTrail;
 | 
	
		
			
				|  |  |      private final XPackLicenseState licenseState;
 | 
	
		
			
				|  |  | -    private final List<AuditTrail> auditTrails;
 | 
	
		
			
				|  |  | -
 | 
	
		
			
				|  |  | -    @Override
 | 
	
		
			
				|  |  | -    public String name() {
 | 
	
		
			
				|  |  | -        return "service";
 | 
	
		
			
				|  |  | -    }
 | 
	
		
			
				|  |  |  
 | 
	
		
			
				|  |  |      public AuditTrailService(List<AuditTrail> auditTrails, XPackLicenseState licenseState) {
 | 
	
		
			
				|  |  | -        this.auditTrails = Collections.unmodifiableList(auditTrails);
 | 
	
		
			
				|  |  | +        this.compositeAuditTrail = new CompositeAuditTrail(Collections.unmodifiableList(auditTrails));
 | 
	
		
			
				|  |  |          this.licenseState = licenseState;
 | 
	
		
			
				|  |  |      }
 | 
	
		
			
				|  |  |  
 | 
	
		
			
				|  |  | -    /** Returns the audit trail implementations that this service delegates to. */
 | 
	
		
			
				|  |  | +    public AuditTrail get() {
 | 
	
		
			
				|  |  | +        if (compositeAuditTrail.isEmpty() == false && licenseState.isAuditingAllowed()) {
 | 
	
		
			
				|  |  | +            return compositeAuditTrail;
 | 
	
		
			
				|  |  | +        } else {
 | 
	
		
			
				|  |  | +            return NOOP_AUDIT_TRAIL;
 | 
	
		
			
				|  |  | +        }
 | 
	
		
			
				|  |  | +    }
 | 
	
		
			
				|  |  | +
 | 
	
		
			
				|  |  | +    // TODO: this method only exists for access to LoggingAuditTrail in a Node for testing.
 | 
	
		
			
				|  |  | +    // DO NOT USE IT, IT WILL BE REMOVED IN THE FUTURE
 | 
	
		
			
				|  |  |      public List<AuditTrail> getAuditTrails() {
 | 
	
		
			
				|  |  | -        return auditTrails;
 | 
	
		
			
				|  |  | +        return compositeAuditTrail.auditTrails;
 | 
	
		
			
				|  |  | +    }
 | 
	
		
			
				|  |  | +
 | 
	
		
			
				|  |  | +    private static class NoopAuditTrail implements AuditTrail {
 | 
	
		
			
				|  |  | +
 | 
	
		
			
				|  |  | +        @Override
 | 
	
		
			
				|  |  | +        public String name() {
 | 
	
		
			
				|  |  | +            return "noop";
 | 
	
		
			
				|  |  | +        }
 | 
	
		
			
				|  |  | +
 | 
	
		
			
				|  |  | +        @Override
 | 
	
		
			
				|  |  | +        public void authenticationSuccess(String requestId, String realm, User user, RestRequest request) {}
 | 
	
		
			
				|  |  | +
 | 
	
		
			
				|  |  | +        @Override
 | 
	
		
			
				|  |  | +        public void authenticationSuccess(String requestId, String realm, User user, String action, TransportMessage message) {}
 | 
	
		
			
				|  |  | +
 | 
	
		
			
				|  |  | +        @Override
 | 
	
		
			
				|  |  | +        public void anonymousAccessDenied(String requestId, String action, TransportMessage message) {}
 | 
	
		
			
				|  |  | +
 | 
	
		
			
				|  |  | +        @Override
 | 
	
		
			
				|  |  | +        public void anonymousAccessDenied(String requestId, RestRequest request) {}
 | 
	
		
			
				|  |  | +
 | 
	
		
			
				|  |  | +        @Override
 | 
	
		
			
				|  |  | +        public void authenticationFailed(String requestId, RestRequest request) {}
 | 
	
		
			
				|  |  | +
 | 
	
		
			
				|  |  | +        @Override
 | 
	
		
			
				|  |  | +        public void authenticationFailed(String requestId, String action, TransportMessage message) {}
 | 
	
		
			
				|  |  | +
 | 
	
		
			
				|  |  | +        @Override
 | 
	
		
			
				|  |  | +        public void authenticationFailed(String requestId, AuthenticationToken token, String action, TransportMessage message) {}
 | 
	
		
			
				|  |  | +
 | 
	
		
			
				|  |  | +        @Override
 | 
	
		
			
				|  |  | +        public void authenticationFailed(String requestId, AuthenticationToken token, RestRequest request) {}
 | 
	
		
			
				|  |  | +
 | 
	
		
			
				|  |  | +        @Override
 | 
	
		
			
				|  |  | +        public void authenticationFailed(String requestId, String realm, AuthenticationToken token,
 | 
	
		
			
				|  |  | +                                         String action, TransportMessage message) {}
 | 
	
		
			
				|  |  | +
 | 
	
		
			
				|  |  | +        @Override
 | 
	
		
			
				|  |  | +        public void authenticationFailed(String requestId, String realm, AuthenticationToken token, RestRequest request) {}
 | 
	
		
			
				|  |  | +
 | 
	
		
			
				|  |  | +        @Override
 | 
	
		
			
				|  |  | +        public void accessGranted(String requestId, Authentication authentication, String action, TransportMessage message,
 | 
	
		
			
				|  |  | +                                  AuthorizationInfo authorizationInfo) {}
 | 
	
		
			
				|  |  | +
 | 
	
		
			
				|  |  | +        @Override
 | 
	
		
			
				|  |  | +        public void accessDenied(String requestId, Authentication authentication, String action, TransportMessage message,
 | 
	
		
			
				|  |  | +                                 AuthorizationInfo authorizationInfo) {}
 | 
	
		
			
				|  |  | +
 | 
	
		
			
				|  |  | +        @Override
 | 
	
		
			
				|  |  | +        public void tamperedRequest(String requestId, RestRequest request) {}
 | 
	
		
			
				|  |  | +
 | 
	
		
			
				|  |  | +        @Override
 | 
	
		
			
				|  |  | +        public void tamperedRequest(String requestId, String action, TransportMessage message) {}
 | 
	
		
			
				|  |  | +
 | 
	
		
			
				|  |  | +        @Override
 | 
	
		
			
				|  |  | +        public void tamperedRequest(String requestId, User user, String action, TransportMessage request) {}
 | 
	
		
			
				|  |  | +
 | 
	
		
			
				|  |  | +        @Override
 | 
	
		
			
				|  |  | +        public void connectionGranted(InetAddress inetAddress, String profile, SecurityIpFilterRule rule) {}
 | 
	
		
			
				|  |  | +
 | 
	
		
			
				|  |  | +        @Override
 | 
	
		
			
				|  |  | +        public void connectionDenied(InetAddress inetAddress, String profile, SecurityIpFilterRule rule) {}
 | 
	
		
			
				|  |  | +
 | 
	
		
			
				|  |  | +        @Override
 | 
	
		
			
				|  |  | +        public void runAsGranted(String requestId, Authentication authentication, String action, TransportMessage message,
 | 
	
		
			
				|  |  | +                                 AuthorizationInfo authorizationInfo) {}
 | 
	
		
			
				|  |  | +
 | 
	
		
			
				|  |  | +        @Override
 | 
	
		
			
				|  |  | +        public void runAsDenied(String requestId, Authentication authentication, String action, TransportMessage message,
 | 
	
		
			
				|  |  | +                                AuthorizationInfo authorizationInfo) {}
 | 
	
		
			
				|  |  | +
 | 
	
		
			
				|  |  | +        @Override
 | 
	
		
			
				|  |  | +        public void runAsDenied(String requestId, Authentication authentication, RestRequest request,
 | 
	
		
			
				|  |  | +                                AuthorizationInfo authorizationInfo) {}
 | 
	
		
			
				|  |  | +
 | 
	
		
			
				|  |  | +        @Override
 | 
	
		
			
				|  |  | +        public void explicitIndexAccessEvent(String requestId, AuditLevel eventType, Authentication authentication,
 | 
	
		
			
				|  |  | +                                             String action, String indices, String requestName, TransportAddress remoteAddress,
 | 
	
		
			
				|  |  | +                                             AuthorizationInfo authorizationInfo) {}
 | 
	
		
			
				|  |  |      }
 | 
	
		
			
				|  |  |  
 | 
	
		
			
				|  |  | -    @Override
 | 
	
		
			
				|  |  | -    public void authenticationSuccess(String requestId, String realm, User user, RestRequest request) {
 | 
	
		
			
				|  |  | -        if (licenseState.isAuditingAllowed()) {
 | 
	
		
			
				|  |  | +    private static class CompositeAuditTrail implements AuditTrail {
 | 
	
		
			
				|  |  | +
 | 
	
		
			
				|  |  | +        private final List<AuditTrail> auditTrails;
 | 
	
		
			
				|  |  | +
 | 
	
		
			
				|  |  | +        private CompositeAuditTrail(List<AuditTrail> auditTrails) {
 | 
	
		
			
				|  |  | +            this.auditTrails = auditTrails;
 | 
	
		
			
				|  |  | +        }
 | 
	
		
			
				|  |  | +
 | 
	
		
			
				|  |  | +        boolean isEmpty() {
 | 
	
		
			
				|  |  | +            return auditTrails.isEmpty();
 | 
	
		
			
				|  |  | +        }
 | 
	
		
			
				|  |  | +
 | 
	
		
			
				|  |  | +        @Override
 | 
	
		
			
				|  |  | +        public String name() {
 | 
	
		
			
				|  |  | +            return "service";
 | 
	
		
			
				|  |  | +        }
 | 
	
		
			
				|  |  | +
 | 
	
		
			
				|  |  | +        @Override
 | 
	
		
			
				|  |  | +        public void authenticationSuccess(String requestId, String realm, User user, RestRequest request) {
 | 
	
		
			
				|  |  |              for (AuditTrail auditTrail : auditTrails) {
 | 
	
		
			
				|  |  |                  auditTrail.authenticationSuccess(requestId, realm, user, request);
 | 
	
		
			
				|  |  |              }
 | 
	
		
			
				|  |  |          }
 | 
	
		
			
				|  |  | -    }
 | 
	
		
			
				|  |  |  
 | 
	
		
			
				|  |  | -    @Override
 | 
	
		
			
				|  |  | -    public void authenticationSuccess(String requestId, String realm, User user, String action, TransportMessage message) {
 | 
	
		
			
				|  |  | -        if (licenseState.isAuditingAllowed()) {
 | 
	
		
			
				|  |  | +        @Override
 | 
	
		
			
				|  |  | +        public void authenticationSuccess(String requestId, String realm, User user, String action, TransportMessage message) {
 | 
	
		
			
				|  |  |              for (AuditTrail auditTrail : auditTrails) {
 | 
	
		
			
				|  |  |                  auditTrail.authenticationSuccess(requestId, realm, user, action, message);
 | 
	
		
			
				|  |  |              }
 | 
	
		
			
				|  |  |          }
 | 
	
		
			
				|  |  | -    }
 | 
	
		
			
				|  |  |  
 | 
	
		
			
				|  |  | -    @Override
 | 
	
		
			
				|  |  | -    public void anonymousAccessDenied(String requestId, String action, TransportMessage message) {
 | 
	
		
			
				|  |  | -        if (licenseState.isAuditingAllowed()) {
 | 
	
		
			
				|  |  | +        @Override
 | 
	
		
			
				|  |  | +        public void anonymousAccessDenied(String requestId, String action, TransportMessage message) {
 | 
	
		
			
				|  |  |              for (AuditTrail auditTrail : auditTrails) {
 | 
	
		
			
				|  |  |                  auditTrail.anonymousAccessDenied(requestId, action, message);
 | 
	
		
			
				|  |  |              }
 | 
	
		
			
				|  |  |          }
 | 
	
		
			
				|  |  | -    }
 | 
	
		
			
				|  |  |  
 | 
	
		
			
				|  |  | -    @Override
 | 
	
		
			
				|  |  | -    public void anonymousAccessDenied(String requestId, RestRequest request) {
 | 
	
		
			
				|  |  | -        if (licenseState.isAuditingAllowed()) {
 | 
	
		
			
				|  |  | +        @Override
 | 
	
		
			
				|  |  | +        public void anonymousAccessDenied(String requestId, RestRequest request) {
 | 
	
		
			
				|  |  |              for (AuditTrail auditTrail : auditTrails) {
 | 
	
		
			
				|  |  |                  auditTrail.anonymousAccessDenied(requestId, request);
 | 
	
		
			
				|  |  |              }
 | 
	
		
			
				|  |  |          }
 | 
	
		
			
				|  |  | -    }
 | 
	
		
			
				|  |  |  
 | 
	
		
			
				|  |  | -    @Override
 | 
	
		
			
				|  |  | -    public void authenticationFailed(String requestId, RestRequest request) {
 | 
	
		
			
				|  |  | -        if (licenseState.isAuditingAllowed()) {
 | 
	
		
			
				|  |  | +        @Override
 | 
	
		
			
				|  |  | +        public void authenticationFailed(String requestId, RestRequest request) {
 | 
	
		
			
				|  |  |              for (AuditTrail auditTrail : auditTrails) {
 | 
	
		
			
				|  |  |                  auditTrail.authenticationFailed(requestId, request);
 | 
	
		
			
				|  |  |              }
 | 
	
		
			
				|  |  |          }
 | 
	
		
			
				|  |  | -    }
 | 
	
		
			
				|  |  |  
 | 
	
		
			
				|  |  | -    @Override
 | 
	
		
			
				|  |  | -    public void authenticationFailed(String requestId, String action, TransportMessage message) {
 | 
	
		
			
				|  |  | -        if (licenseState.isAuditingAllowed()) {
 | 
	
		
			
				|  |  | +        @Override
 | 
	
		
			
				|  |  | +        public void authenticationFailed(String requestId, String action, TransportMessage message) {
 | 
	
		
			
				|  |  |              for (AuditTrail auditTrail : auditTrails) {
 | 
	
		
			
				|  |  |                  auditTrail.authenticationFailed(requestId, action, message);
 | 
	
		
			
				|  |  |              }
 | 
	
		
			
				|  |  |          }
 | 
	
		
			
				|  |  | -    }
 | 
	
		
			
				|  |  |  
 | 
	
		
			
				|  |  | -    @Override
 | 
	
		
			
				|  |  | -    public void authenticationFailed(String requestId, AuthenticationToken token, String action, TransportMessage message) {
 | 
	
		
			
				|  |  | -        if (licenseState.isAuditingAllowed()) {
 | 
	
		
			
				|  |  | +        @Override
 | 
	
		
			
				|  |  | +        public void authenticationFailed(String requestId, AuthenticationToken token, String action, TransportMessage message) {
 | 
	
		
			
				|  |  |              for (AuditTrail auditTrail : auditTrails) {
 | 
	
		
			
				|  |  |                  auditTrail.authenticationFailed(requestId, token, action, message);
 | 
	
		
			
				|  |  |              }
 | 
	
		
			
				|  |  |          }
 | 
	
		
			
				|  |  | -    }
 | 
	
		
			
				|  |  |  
 | 
	
		
			
				|  |  | -    @Override
 | 
	
		
			
				|  |  | -    public void authenticationFailed(String requestId, String realm, AuthenticationToken token, String action, TransportMessage message) {
 | 
	
		
			
				|  |  | -        if (licenseState.isAuditingAllowed()) {
 | 
	
		
			
				|  |  | +        @Override
 | 
	
		
			
				|  |  | +        public void authenticationFailed(String requestId, String realm, AuthenticationToken token, String action,
 | 
	
		
			
				|  |  | +                                         TransportMessage message) {
 | 
	
		
			
				|  |  |              for (AuditTrail auditTrail : auditTrails) {
 | 
	
		
			
				|  |  |                  auditTrail.authenticationFailed(requestId, realm, token, action, message);
 | 
	
		
			
				|  |  |              }
 | 
	
		
			
				|  |  |          }
 | 
	
		
			
				|  |  | -    }
 | 
	
		
			
				|  |  |  
 | 
	
		
			
				|  |  | -    @Override
 | 
	
		
			
				|  |  | -    public void authenticationFailed(String requestId, AuthenticationToken token, RestRequest request) {
 | 
	
		
			
				|  |  | -        if (licenseState.isAuditingAllowed()) {
 | 
	
		
			
				|  |  | +        @Override
 | 
	
		
			
				|  |  | +        public void authenticationFailed(String requestId, AuthenticationToken token, RestRequest request) {
 | 
	
		
			
				|  |  |              for (AuditTrail auditTrail : auditTrails) {
 | 
	
		
			
				|  |  |                  auditTrail.authenticationFailed(requestId, token, request);
 | 
	
		
			
				|  |  |              }
 | 
	
		
			
				|  |  |          }
 | 
	
		
			
				|  |  | -    }
 | 
	
		
			
				|  |  |  
 | 
	
		
			
				|  |  | -    @Override
 | 
	
		
			
				|  |  | -    public void authenticationFailed(String requestId, String realm, AuthenticationToken token, RestRequest request) {
 | 
	
		
			
				|  |  | -        if (licenseState.isAuditingAllowed()) {
 | 
	
		
			
				|  |  | +        @Override
 | 
	
		
			
				|  |  | +        public void authenticationFailed(String requestId, String realm, AuthenticationToken token, RestRequest request) {
 | 
	
		
			
				|  |  |              for (AuditTrail auditTrail : auditTrails) {
 | 
	
		
			
				|  |  |                  auditTrail.authenticationFailed(requestId, realm, token, request);
 | 
	
		
			
				|  |  |              }
 | 
	
		
			
				|  |  |          }
 | 
	
		
			
				|  |  | -    }
 | 
	
		
			
				|  |  |  
 | 
	
		
			
				|  |  | -    @Override
 | 
	
		
			
				|  |  | -    public void accessGranted(String requestId, Authentication authentication, String action, TransportMessage msg,
 | 
	
		
			
				|  |  | -                              AuthorizationInfo authorizationInfo) {
 | 
	
		
			
				|  |  | -        if (licenseState.isAuditingAllowed()) {
 | 
	
		
			
				|  |  | +        @Override
 | 
	
		
			
				|  |  | +        public void accessGranted(String requestId, Authentication authentication, String action, TransportMessage msg,
 | 
	
		
			
				|  |  | +                                  AuthorizationInfo authorizationInfo) {
 | 
	
		
			
				|  |  |              for (AuditTrail auditTrail : auditTrails) {
 | 
	
		
			
				|  |  |                  auditTrail.accessGranted(requestId, authentication, action, msg, authorizationInfo);
 | 
	
		
			
				|  |  |              }
 | 
	
		
			
				|  |  |          }
 | 
	
		
			
				|  |  | -    }
 | 
	
		
			
				|  |  |  
 | 
	
		
			
				|  |  | -    @Override
 | 
	
		
			
				|  |  | -    public void accessDenied(String requestId, Authentication authentication, String action, TransportMessage message,
 | 
	
		
			
				|  |  | -                             AuthorizationInfo authorizationInfo) {
 | 
	
		
			
				|  |  | -        if (licenseState.isAuditingAllowed()) {
 | 
	
		
			
				|  |  | +        @Override
 | 
	
		
			
				|  |  | +        public void accessDenied(String requestId, Authentication authentication, String action, TransportMessage message,
 | 
	
		
			
				|  |  | +                                 AuthorizationInfo authorizationInfo) {
 | 
	
		
			
				|  |  |              for (AuditTrail auditTrail : auditTrails) {
 | 
	
		
			
				|  |  |                  auditTrail.accessDenied(requestId, authentication, action, message, authorizationInfo);
 | 
	
		
			
				|  |  |              }
 | 
	
		
			
				|  |  |          }
 | 
	
		
			
				|  |  | -    }
 | 
	
		
			
				|  |  |  
 | 
	
		
			
				|  |  | -    @Override
 | 
	
		
			
				|  |  | -    public void tamperedRequest(String requestId, RestRequest request) {
 | 
	
		
			
				|  |  | -        if (licenseState.isAuditingAllowed()) {
 | 
	
		
			
				|  |  | +        @Override
 | 
	
		
			
				|  |  | +        public void tamperedRequest(String requestId, RestRequest request) {
 | 
	
		
			
				|  |  |              for (AuditTrail auditTrail : auditTrails) {
 | 
	
		
			
				|  |  |                  auditTrail.tamperedRequest(requestId, request);
 | 
	
		
			
				|  |  |              }
 | 
	
		
			
				|  |  |          }
 | 
	
		
			
				|  |  | -    }
 | 
	
		
			
				|  |  |  
 | 
	
		
			
				|  |  | -    @Override
 | 
	
		
			
				|  |  | -    public void tamperedRequest(String requestId, String action, TransportMessage message) {
 | 
	
		
			
				|  |  | -        if (licenseState.isAuditingAllowed()) {
 | 
	
		
			
				|  |  | +        @Override
 | 
	
		
			
				|  |  | +        public void tamperedRequest(String requestId, String action, TransportMessage message) {
 | 
	
		
			
				|  |  |              for (AuditTrail auditTrail : auditTrails) {
 | 
	
		
			
				|  |  |                  auditTrail.tamperedRequest(requestId, action, message);
 | 
	
		
			
				|  |  |              }
 | 
	
		
			
				|  |  |          }
 | 
	
		
			
				|  |  | -    }
 | 
	
		
			
				|  |  |  
 | 
	
		
			
				|  |  | -    @Override
 | 
	
		
			
				|  |  | -    public void tamperedRequest(String requestId, User user, String action, TransportMessage request) {
 | 
	
		
			
				|  |  | -        if (licenseState.isAuditingAllowed()) {
 | 
	
		
			
				|  |  | +        @Override
 | 
	
		
			
				|  |  | +        public void tamperedRequest(String requestId, User user, String action, TransportMessage request) {
 | 
	
		
			
				|  |  |              for (AuditTrail auditTrail : auditTrails) {
 | 
	
		
			
				|  |  |                  auditTrail.tamperedRequest(requestId, user, action, request);
 | 
	
		
			
				|  |  |              }
 | 
	
		
			
				|  |  |          }
 | 
	
		
			
				|  |  | -    }
 | 
	
		
			
				|  |  |  
 | 
	
		
			
				|  |  | -    @Override
 | 
	
		
			
				|  |  | -    public void connectionGranted(InetAddress inetAddress, String profile, SecurityIpFilterRule rule) {
 | 
	
		
			
				|  |  | -        if (licenseState.isAuditingAllowed()) {
 | 
	
		
			
				|  |  | +        @Override
 | 
	
		
			
				|  |  | +        public void connectionGranted(InetAddress inetAddress, String profile, SecurityIpFilterRule rule) {
 | 
	
		
			
				|  |  |              for (AuditTrail auditTrail : auditTrails) {
 | 
	
		
			
				|  |  |                  auditTrail.connectionGranted(inetAddress, profile, rule);
 | 
	
		
			
				|  |  |              }
 | 
	
		
			
				|  |  |          }
 | 
	
		
			
				|  |  | -    }
 | 
	
		
			
				|  |  |  
 | 
	
		
			
				|  |  | -    @Override
 | 
	
		
			
				|  |  | -    public void connectionDenied(InetAddress inetAddress, String profile, SecurityIpFilterRule rule) {
 | 
	
		
			
				|  |  | -        if (licenseState.isAuditingAllowed()) {
 | 
	
		
			
				|  |  | +        @Override
 | 
	
		
			
				|  |  | +        public void connectionDenied(InetAddress inetAddress, String profile, SecurityIpFilterRule rule) {
 | 
	
		
			
				|  |  |              for (AuditTrail auditTrail : auditTrails) {
 | 
	
		
			
				|  |  |                  auditTrail.connectionDenied(inetAddress, profile, rule);
 | 
	
		
			
				|  |  |              }
 | 
	
		
			
				|  |  |          }
 | 
	
		
			
				|  |  | -    }
 | 
	
		
			
				|  |  |  
 | 
	
		
			
				|  |  | -    @Override
 | 
	
		
			
				|  |  | -    public void runAsGranted(String requestId, Authentication authentication, String action, TransportMessage message,
 | 
	
		
			
				|  |  | -                             AuthorizationInfo authorizationInfo) {
 | 
	
		
			
				|  |  | -        if (licenseState.isAuditingAllowed()) {
 | 
	
		
			
				|  |  | +        @Override
 | 
	
		
			
				|  |  | +        public void runAsGranted(String requestId, Authentication authentication, String action, TransportMessage message,
 | 
	
		
			
				|  |  | +                                 AuthorizationInfo authorizationInfo) {
 | 
	
		
			
				|  |  |              for (AuditTrail auditTrail : auditTrails) {
 | 
	
		
			
				|  |  |                  auditTrail.runAsGranted(requestId, authentication, action, message, authorizationInfo);
 | 
	
		
			
				|  |  |              }
 | 
	
		
			
				|  |  |          }
 | 
	
		
			
				|  |  | -    }
 | 
	
		
			
				|  |  |  
 | 
	
		
			
				|  |  | -    @Override
 | 
	
		
			
				|  |  | -    public void runAsDenied(String requestId, Authentication authentication, String action, TransportMessage message,
 | 
	
		
			
				|  |  | -                            AuthorizationInfo authorizationInfo) {
 | 
	
		
			
				|  |  | -        if (licenseState.isAuditingAllowed()) {
 | 
	
		
			
				|  |  | +        @Override
 | 
	
		
			
				|  |  | +        public void runAsDenied(String requestId, Authentication authentication, String action, TransportMessage message,
 | 
	
		
			
				|  |  | +                                AuthorizationInfo authorizationInfo) {
 | 
	
		
			
				|  |  |              for (AuditTrail auditTrail : auditTrails) {
 | 
	
		
			
				|  |  |                  auditTrail.runAsDenied(requestId, authentication, action, message, authorizationInfo);
 | 
	
		
			
				|  |  |              }
 | 
	
		
			
				|  |  |          }
 | 
	
		
			
				|  |  | -    }
 | 
	
		
			
				|  |  |  
 | 
	
		
			
				|  |  | -    @Override
 | 
	
		
			
				|  |  | -    public void runAsDenied(String requestId, Authentication authentication, RestRequest request,
 | 
	
		
			
				|  |  | -                            AuthorizationInfo authorizationInfo) {
 | 
	
		
			
				|  |  | -        if (licenseState.isAuditingAllowed()) {
 | 
	
		
			
				|  |  | +        @Override
 | 
	
		
			
				|  |  | +        public void runAsDenied(String requestId, Authentication authentication, RestRequest request,
 | 
	
		
			
				|  |  | +                                AuthorizationInfo authorizationInfo) {
 | 
	
		
			
				|  |  |              for (AuditTrail auditTrail : auditTrails) {
 | 
	
		
			
				|  |  |                  auditTrail.runAsDenied(requestId, authentication, request, authorizationInfo);
 | 
	
		
			
				|  |  |              }
 | 
	
		
			
				|  |  |          }
 | 
	
		
			
				|  |  | -    }
 | 
	
		
			
				|  |  |  
 | 
	
		
			
				|  |  | -    @Override
 | 
	
		
			
				|  |  | -    public void explicitIndexAccessEvent(String requestId, AuditLevel eventType, Authentication authentication, String action,
 | 
	
		
			
				|  |  | -                                         String indices, String requestName, TransportAddress remoteAddress,
 | 
	
		
			
				|  |  | -                                         AuthorizationInfo authorizationInfo) {
 | 
	
		
			
				|  |  | -        if (licenseState.isAuditingAllowed()) {
 | 
	
		
			
				|  |  | +        @Override
 | 
	
		
			
				|  |  | +        public void explicitIndexAccessEvent(String requestId, AuditLevel eventType, Authentication authentication, String action,
 | 
	
		
			
				|  |  | +                                             String indices, String requestName, TransportAddress remoteAddress,
 | 
	
		
			
				|  |  | +                                             AuthorizationInfo authorizationInfo) {
 | 
	
		
			
				|  |  |              for (AuditTrail auditTrail : auditTrails) {
 | 
	
		
			
				|  |  |                  auditTrail.explicitIndexAccessEvent(requestId, eventType, authentication, action, indices, requestName, remoteAddress,
 | 
	
		
			
				|  |  | -                        authorizationInfo);
 | 
	
		
			
				|  |  | +                    authorizationInfo);
 | 
	
		
			
				|  |  |              }
 | 
	
		
			
				|  |  |          }
 | 
	
		
			
				|  |  |      }
 |