void addHandlerReference(PathAddress referenceAddress){ if (removedReferences != null && removedReferences.contains(referenceAddress)){ throw ControllerLogger.ROOT_LOGGER.attemptToBothRemoveAndAddHandlerReferenceFromCompositeOperation(); } if (addedReferences == null){ addedReferences = new HashSet<PathAddress>(); } addedReferences.add(referenceAddress); //Update the 'live' handlers and references with the addition config.addHandlerReference(org.jboss.as.controller.operations.common.Util.getNameFromAddress(referenceAddress)); final String name = org.jboss.as.controller.operations.common.Util.getNameFromAddress(referenceAddress); final AuditLogHandler handler = config.getConfiguredHandler(name); if (handler == null){ throw ControllerLogger.ROOT_LOGGER.noHandlerCalled(name); } handler.addReference(referenceAddress); }
void applyChanges() { if (removedHandlers != null && removedHandlers.size() > 0){ for (String name : removedHandlers) { AuditLogHandler handler = config.removeConfiguredHandler(name); if (handler != null){ handler.stop(); AuditLogHandler existing = config.removeConfiguredHandler(handler.getName()); if (existing != null){ existing.stop(); config.putConfiguredHandler(handler); handler.setFormatter(config.getFormatter(handler.getFormatterName())); for (PathAddress referenceAddress : removedReferences){ final String name = org.jboss.as.controller.operations.common.Util.getNameFromAddress(referenceAddress); final AuditLogHandler handler = config.getConfiguredHandler(name); if (handler != null){ handler.removeReference(referenceAddress); config.removeHandlerReference(name);
/** protected by config's audit lock */ private void writeLogItem(AuditLogItem item) throws IOException{ Set<String> formatterNames = new HashSet<String>(); try { for (AuditLogHandler handler : config.getHandlersForLogging()) { formatterNames.add(handler.getFormatterName()); handler.writeLogItem(item); } } finally { for (String formatterName : formatterNames) { config.getFormatter(formatterName).clear(); } } }
void applyChanges() { if (removedHandlers != null && removedHandlers.size() > 0){ for (String name : removedHandlers) { AuditLogHandler handler = config.removeConfiguredHandler(name); if (handler != null){ handler.stop(); AuditLogHandler existing = config.removeConfiguredHandler(handler.getName()); if (existing != null){ existing.stop(); config.putConfiguredHandler(handler); handler.setFormatter(config.getFormatter(handler.getFormatterName())); for (PathAddress referenceAddress : removedReferences){ final String name = org.jboss.as.controller.operations.common.Util.getNameFromAddress(referenceAddress); final AuditLogHandler handler = config.getConfiguredHandler(name); if (handler != null){ handler.removeReference(referenceAddress); config.removeHandlerReference(name);
void applyChanges() { if (removedHandlers != null && removedHandlers.size() > 0){ for (String name : removedHandlers) { AuditLogHandler handler = config.removeConfiguredHandler(name); if (handler != null){ handler.stop(); AuditLogHandler existing = config.removeConfiguredHandler(handler.getName()); if (existing != null){ existing.stop(); config.putConfiguredHandler(handler); handler.setFormatter(config.getFormatter(handler.getFormatterName())); for (PathAddress referenceAddress : removedReferences){ final String name = org.jboss.as.controller.operations.common.Util.getNameFromAddress(referenceAddress); final AuditLogHandler handler = config.getConfiguredHandler(name); if (handler != null){ handler.removeReference(referenceAddress); config.removeHandlerReference(name);
@Override public void setLoggerStatus(final Status newStatus) { config.lock(); try { if (newStatus == Status.DISABLE_NEXT && config.getLoggerStatus() == Status.DISABLED) { return; } config.setLoggerStatus(newStatus); if (newStatus == Status.LOGGING){ for (AuditLogItem record : queuedItems) { try { writeLogItem(record); } catch (Exception e) { handleLoggingException(e); } } queuedItems.clear(); } else if (newStatus == Status.DISABLED){ queuedItems.clear(); } runDisabledFastPath.set(false); } finally { config.unlock(); } }
void removeHandler(String name) { assert config.isCore() : "Not available for non-core configuration"; if (addedHandlers != null && addedHandlers.containsKey(name)){ throw ControllerLogger.ROOT_LOGGER.attemptToBothAddAndRemoveAndHandlerFromCompositeOperation(); } if (replacedHandlers != null && replacedHandlers.containsKey(name)){ throw ControllerLogger.ROOT_LOGGER.attemptToBothUpdateAndRemoveHandlerFromCompositeOperation(); } final AuditLogHandler handler = config.getConfiguredHandler(name); if (handler != null){ Set<PathAddress> references = handler.getReferences(); if (references.size() > 0){ if (!references.containsAll(removedReferences)){ Set<PathAddress> activeReferences = new HashSet<PathAddress>(references); activeReferences.removeAll(removedReferences); throw ControllerLogger.ROOT_LOGGER.handlerIsReferencedBy(removedReferences); } } } config.removeConfiguredHandler(name); if (removedHandlers == null){ removedHandlers = new HashSet<String>(); } removedHandlers.add(name); }
void removeHandler(String name) { assert config.isCore() : "Not available for non-core configuration"; if (addedHandlers != null && addedHandlers.containsKey(name)){ throw ControllerMessages.MESSAGES.attemptToBothAddAndRemoveAndHandlerFromCompositeOperation(); } if (replacedHandlers != null && replacedHandlers.containsKey(name)){ throw ControllerMessages.MESSAGES.attemptToBothUpdateAndRemoveHandlerFromCompositeOperation(); } final AuditLogHandler handler = config.getConfiguredHandler(name); if (handler != null){ Set<PathAddress> references = handler.getReferences(); if (references.size() > 0){ if (!references.containsAll(removedReferences)){ Set<PathAddress> activeReferences = new HashSet<PathAddress>(references); activeReferences.removeAll(removedReferences); throw ControllerMessages.MESSAGES.handlerIsReferencedBy(removedReferences); } } } config.removeConfiguredHandler(name); if (removedHandlers == null){ removedHandlers = new HashSet<String>(); } removedHandlers.add(name); }
@Override public void setLoggerStatus(final Status newStatus) { config.lock(); try { if (newStatus == Status.DISABLE_NEXT && config.getLoggerStatus() == Status.DISABLED) { return; } config.setLoggerStatus(newStatus); if (newStatus == Status.LOGGING){ for (AuditLogItem record : queuedItems) { try { writeLogItem(record); } catch (Exception e) { handleLoggingException(e); } } queuedItems.clear(); } else if (newStatus == Status.DISABLED){ queuedItems.clear(); } runDisabledFastPath.set(false); } finally { config.unlock(); } }
void removeHandler(String name) { assert config.isCore() : "Not available for non-core configuration"; if (addedHandlers != null && addedHandlers.containsKey(name)){ throw ControllerLogger.ROOT_LOGGER.attemptToBothAddAndRemoveAndHandlerFromCompositeOperation(); } if (replacedHandlers != null && replacedHandlers.containsKey(name)){ throw ControllerLogger.ROOT_LOGGER.attemptToBothUpdateAndRemoveHandlerFromCompositeOperation(); } final AuditLogHandler handler = config.getConfiguredHandler(name); if (handler != null){ Set<PathAddress> references = handler.getReferences(); if (references.size() > 0){ if (!references.containsAll(removedReferences)){ Set<PathAddress> activeReferences = new HashSet<PathAddress>(references); activeReferences.removeAll(removedReferences); throw ControllerLogger.ROOT_LOGGER.handlerIsReferencedBy(removedReferences); } } } config.removeConfiguredHandler(name); if (removedHandlers == null){ removedHandlers = new HashSet<String>(); } removedHandlers.add(name); }
@Override public void setLoggerStatus(final Status newStatus) { config.lock(); try { if (newStatus == Status.DISABLE_NEXT && config.getLoggerStatus() == Status.DISABLED) { return; } config.setLoggerStatus(newStatus); if (newStatus == Status.LOGGING){ for (AuditLogItem record : queuedItems) { try { writeLogItem(record); } catch (Exception e) { handleLoggingException(e); } } } else if (newStatus == Status.DISABLED){ queuedItems.clear(); } } finally { config.unlock(); } }
@Override public void logJmxMethodAccess(boolean readOnly, String userId, String domainUUID, AccessMechanism accessMechanism, InetAddress remoteAddress, String methodName, String[] methodSignature, Object[] methodParams, Throwable error) { if (runDisabledFastPath.get()) return; config.lock(); try { if (skipLogging(readOnly)) { return; } storeLogItem( AuditLogItem.createMethodAccessItem(config.getAsVersion(), readOnly, config.isBooting(), userId, domainUUID, accessMechanism, remoteAddress, methodName, methodSignature, methodParams, error)); } catch (Exception e) { handleLoggingException(e); } finally { applyHandlerUpdates(); config.unlock(); } }
@Override public void log(boolean readOnly, ResultAction resultAction, String userId, String domainUUID, AccessMechanism accessMechanism, InetAddress remoteAddress, Resource resultantModel, List<ModelNode> operations) { config.lock(); try { if (config.isBooting() && !isLogBoot()) { return; } if (readOnly && !isLogReadOnly()) { return; } storeLogItem( AuditLogItem.createModelControllerItem(config.getAsVersion(), readOnly, config.isBooting(), resultAction, userId, domainUUID, accessMechanism, remoteAddress, resultantModel, operations)); } catch (Exception e) { handleLoggingException(e); } finally { applyHandlerUpdates(); config.unlock(); } }
@Override public void logJmxMethodAccess(boolean readOnly, String userId, String domainUUID, AccessMechanism accessMechanism, InetAddress remoteAddress, String methodName, String[] methodSignature, Object[] methodParams, Throwable error) { config.lock(); try { if (config.isBooting() && !isLogBoot()) { return; } if (readOnly && !isLogReadOnly()) { return; } storeLogItem( AuditLogItem.createMethodAccessItem(config.getAsVersion(), readOnly, config.isBooting(), userId, domainUUID, accessMechanism, remoteAddress, methodName, methodSignature, methodParams, error)); } catch (Exception e) { handleLoggingException(e); } finally { applyHandlerUpdates(); config.unlock(); } }
@Override public void log(boolean readOnly, ResultAction resultAction, String userId, String domainUUID, AccessMechanism accessMechanism, InetAddress remoteAddress, Resource resultantModel, List<ModelNode> operations) { if (runDisabledFastPath.get()) return; config.lock(); try { if (skipLogging(readOnly)) { return; } storeLogItem( AuditLogItem.createModelControllerItem(config.getAsVersion(), readOnly, config.isBooting(), resultAction, userId, domainUUID, accessMechanism, remoteAddress, resultantModel, operations)); } catch (Exception e) { handleLoggingException(e); } finally { applyHandlerUpdates(); config.unlock(); } }
@Override public void logJmxMethodAccess(boolean readOnly, String userId, String domainUUID, AccessMechanism accessMechanism, InetAddress remoteAddress, String methodName, String[] methodSignature, Object[] methodParams, Throwable error) { if (runDisabledFastPath.get()) return; config.lock(); try { if (skipLogging(readOnly)) { return; } storeLogItem( AuditLogItem.createMethodAccessItem(config.getAsVersion(), readOnly, config.isBooting(), userId, domainUUID, accessMechanism, remoteAddress, methodName, methodSignature, methodParams, error)); } catch (Exception e) { handleLoggingException(e); } finally { applyHandlerUpdates(); config.unlock(); } }
@Override public void bootDone() { config.lock(); try { config.setBooting(false); if (childImpls != null) { for (ManagedAuditLogger child : childImpls) { child.bootDone(); } } if (config.getLoggerStatus() == Status.QUEUEING) { //There was no configuration to either enable or disable the logger during boot, so disable it setLoggerStatus(AuditLogger.Status.DISABLED); } } finally { config.unlock(); } }
@Override public void log(boolean readOnly, ResultAction resultAction, String userId, String domainUUID, AccessMechanism accessMechanism, InetAddress remoteAddress, Resource resultantModel, List<ModelNode> operations) { if (runDisabledFastPath.get()) return; config.lock(); try { if (skipLogging(readOnly)) { return; } storeLogItem( AuditLogItem.createModelControllerItem(config.getAsVersion(), readOnly, config.isBooting(), resultAction, userId, domainUUID, accessMechanism, remoteAddress, resultantModel, operations)); } catch (Exception e) { handleLoggingException(e); } finally { applyHandlerUpdates(); config.unlock(); } }
@Override public void bootDone() { config.lock(); try { config.setBooting(false); if (childImpls != null) { for (ManagedAuditLogger child : childImpls) { child.bootDone(); } } if (config.getLoggerStatus() == Status.QUEUEING) { //There was no configuration to either enable or disable the logger during boot, so disable it setLoggerStatus(AuditLogger.Status.DISABLED); } } finally { config.unlock(); } }
void rollbackChanges(){ if (addedReferences != null && addedReferences.size() > 0){ for (PathAddress address : addedReferences) { final String name = org.jboss.as.controller.operations.common.Util.getNameFromAddress(address); config.removeHandlerReference(name); AuditLogHandler handler = config.getConfiguredHandler(name); if (handler != null){ handler.removeReference(address); } } } if (addedHandlers != null && addedHandlers.size() > 0){ for (AuditLogHandler handler : addedHandlers.values()){ config.removeConfiguredHandler(handler.getName()); } } }