All Downloads are FREE. Search and download functionalities are using the official Maven repository.

com.unboundid.directory.sdk.common.api.AlertHandler Maven / Gradle / Ivy

Go to download

The UnboundID Server SDK is a library that may be used to develop various types of extensions to Ping Identity server products, including the Directory Server, Directory Proxy Server, Data Sync Server, Data Metrics Server, and Data Governance Broker.

There is a newer version: 6.2.0.0
Show newest version
/*
 * CDDL HEADER START
 *
 * The contents of this file are subject to the terms of the
 * Common Development and Distribution License, Version 1.0 only
 * (the "License").  You may not use this file except in compliance
 * with the License.
 *
 * You can obtain a copy of the license at
 * docs/licenses/cddl.txt
 * or http://www.opensource.org/licenses/cddl1.php.
 * See the License for the specific language governing permissions
 * and limitations under the License.
 *
 * When distributing Covered Code, include this CDDL HEADER in each
 * file and include the License file at
 * docs/licenses/cddl.txt.  If applicable,
 * add the following below this CDDL HEADER, with the fields enclosed
 * by brackets "[]" replaced with your own identifying information:
 *      Portions Copyright [yyyy] [name of copyright owner]
 *
 * CDDL HEADER END
 *
 *
 *      Portions Copyright 2010-2024 Ping Identity Corporation
 */
package com.unboundid.directory.sdk.common.api;



import java.util.Collections;
import java.util.List;
import java.util.Map;

import com.unboundid.directory.sdk.broker.internal.BrokerExtension;
import com.unboundid.directory.sdk.common.config.AlertHandlerConfig;
import com.unboundid.directory.sdk.common.internal.ExampleUsageProvider;
import com.unboundid.directory.sdk.common.internal.Reconfigurable;
import com.unboundid.directory.sdk.common.internal.UnboundIDExtension;
import com.unboundid.directory.sdk.common.types.AlertNotification;
import com.unboundid.directory.sdk.common.types.ServerContext;
import com.unboundid.directory.sdk.ds.internal.DirectoryServerExtension;
import com.unboundid.directory.sdk.metrics.internal.MetricsEngineExtension;
import com.unboundid.directory.sdk.proxy.internal.DirectoryProxyServerExtension;
import com.unboundid.directory.sdk.sync.internal.SynchronizationServerExtension;
import com.unboundid.ldap.sdk.LDAPException;
import com.unboundid.ldap.sdk.ResultCode;
import com.unboundid.util.Extensible;
import com.unboundid.util.ThreadSafety;
import com.unboundid.util.ThreadSafetyLevel;
import com.unboundid.util.args.ArgumentException;
import com.unboundid.util.args.ArgumentParser;



/**
 * This class defines an API that must be implemented by extensions which will
 * be invoked whenever an administrative alert is generated within the server.
 * Administrative alerts may be used to notify administrators whenever a
 * significant error, warning, or other type of event occurs within the server.
 * Alert handlers may be used to help ensure that those notifications are made
 * available to administrators in an appropriate manner.
 * 

* Each alert handler may be configured so that it will only be invoked for * certain types of alerts, either based on the specific alert type or based on * the alert severity. This is handled automatically by the server, so * individual alert handler implementations do not need to attempt to perform * that filtering on their own. However, they may perform additional processing * if desired to further narrow the set of alerts that should be made available * to administrators. *
*

Configuring Alert Handlers

* In order to configure an alert handler created using this API, use a command * like: *
 *      dsconfig create-alert-handler \
 *           --handler-name "{handler-name}" \
 *           --type third-party \
 *           --set enabled:true \
 *           --set "extension-class:{class-name}" \
 *           --set "extension-argument:{name=value}"
 * 
* where "{handler-name}" is the name to use for the alert handler * instance, "{class-name}" is the fully-qualified name of the Java class * that extends {@code com.unboundid.directory.sdk.common.api.AlertHandler}, * and "{name=value}" represents name-value pairs for any arguments to * provide to the alert handler. If multiple arguments should be provided to * the alert handler, then the * "--set extension-argument:{name=value}" option should be * provided multiple times. * * @see com.unboundid.directory.sdk.common.scripting.ScriptedAlertHandler */ @Extensible() @DirectoryServerExtension() @DirectoryProxyServerExtension(appliesToLocalContent=true, appliesToRemoteContent=false) @SynchronizationServerExtension(appliesToLocalContent=true, appliesToSynchronizedContent=false) @MetricsEngineExtension() @BrokerExtension() @ThreadSafety(level=ThreadSafetyLevel.INTERFACE_THREADSAFE) public abstract class AlertHandler implements UnboundIDExtension, Reconfigurable, ExampleUsageProvider { /** * Creates a new instance of this alert handler. All alert handler * implementations must include a default constructor, but any initialization * should generally be done in the {@code initializeAlertHandler} method. */ public AlertHandler() { // No implementation is required. } /** * {@inheritDoc} */ public abstract String getExtensionName(); /** * {@inheritDoc} */ public abstract String[] getExtensionDescription(); /** * {@inheritDoc} */ public void defineConfigArguments(final ArgumentParser parser) throws ArgumentException { // No arguments will be allowed by default. } /** * Initializes this alert handler. * * @param serverContext A handle to the server context for the server in * which this extension is running. * @param config The general configuration for this alert handler. * @param parser The argument parser which has been initialized from * the configuration for this alert handler. * * @throws LDAPException If a problem occurs while initializing this alert * handler. */ public void initializeAlertHandler(final ServerContext serverContext, final AlertHandlerConfig config, final ArgumentParser parser) throws LDAPException { // No initialization will be performed by default. } /** * {@inheritDoc} */ public boolean isConfigurationAcceptable(final AlertHandlerConfig config, final ArgumentParser parser, final List unacceptableReasons) { // No extended validation will be performed by default. return true; } /** * {@inheritDoc} */ public ResultCode applyConfiguration(final AlertHandlerConfig config, final ArgumentParser parser, final List adminActionsRequired, final List messages) { // By default, no configuration changes will be applied. If there are any // arguments, then add an admin action message indicating that the extension // needs to be restarted for any changes to take effect. if (! parser.getNamedArguments().isEmpty()) { adminActionsRequired.add( "No configuration change has actually been applied. The new " + "configuration will not take effect until this alert handler " + "is disabled and re-enabled or until the server is restarted."); } return ResultCode.SUCCESS; } /** * Performs any cleanup which may be necessary when this alert handler is to * be taken out of service. */ public void finalizeAlertHandler() { // No implementation is required. } /** * Performs any processing which may be necessary to handle the provided alert * notification. * * @param alert The alert notification generated within the server. */ public abstract void handleAlert(final AlertNotification alert); /** * {@inheritDoc} */ public Map,String> getExamplesArgumentSets() { return Collections.emptyMap(); } }




© 2015 - 2025 Weber Informatics LLC | Privacy Policy