/** * */ package com.thinkbiganalytics.metadata.audit.core; /*- * #%L * thinkbig-audit-logging-core * %% * Copyright (C) 2017 ThinkBig Analytics * %% * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. * You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. * #L% */ import com.thinkbiganalytics.metadata.api.MetadataAccess; import com.thinkbiganalytics.metadata.api.audit.AuditLogProvider; import com.thinkbiganalytics.metadata.api.event.MetadataEventListener; import com.thinkbiganalytics.metadata.api.event.MetadataEventService; import com.thinkbiganalytics.metadata.api.event.feed.FeedChangeEvent; import com.thinkbiganalytics.metadata.api.event.template.TemplateChangeEvent; import org.slf4j.Logger; import org.slf4j.LoggerFactory; import javax.inject.Inject; /** * A service responsible for producing audit log entries from things like metadata events * and annotated methods. */ public class AuditLoggingService { private static final Logger log = LoggerFactory.getLogger(AuditLoggingService.class); @Inject private AuditLogProvider provider; @Inject private MetadataAccess metadataAccess; public AuditLoggingService() { } /** * Listen for events that may trigger an audit entry * * @param eventService event service bus */ public void addListeners(MetadataEventService eventService) { eventService.addListener(new FeedChangeEventListener()); eventService.addListener(new TemplateChangeEventListener()); } private class FeedChangeEventListener implements MetadataEventListener<FeedChangeEvent> { @Override public void notify(FeedChangeEvent event) { metadataAccess.commit(() -> { log.debug("Audit: {} - {}", event.getData().getClass().getSimpleName(), event.getData().toString()); provider.createEntry(event.getUserPrincipal(), event.getData().getClass().getSimpleName(), event.getData().toString(), event.getData().getFeedId().toString()); }, MetadataAccess.SERVICE); } } private class TemplateChangeEventListener implements MetadataEventListener<TemplateChangeEvent> { @Override public void notify(TemplateChangeEvent event) { metadataAccess.commit(() -> { log.debug("Audit: {} - {}", event.getData().getClass().getSimpleName(), event.getData().toString()); provider.createEntry(event.getUserPrincipal(), event.getData().getClass().getSimpleName(), event.getData().toString(), event.getData().getTemplateId().toString()); }, MetadataAccess.SERVICE); } } }