/* * 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 * trunk/opends/resource/legal-notices/OpenDS.LICENSE * or https://OpenDS.dev.java.net/OpenDS.LICENSE. * 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 * trunk/opends/resource/legal-notices/OpenDS.LICENSE. 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 * * * Copyright 2006-2010 Sun Microsystems, Inc. */ package org.opends.server.api.plugin; import java.util.HashMap; import java.util.Map; import java.util.Set; /** * This class defines an enumeration containing the types of plugins * that are supported for use in the Directory Server. */ @org.opends.server.types.PublicAPI( stability=org.opends.server.types.StabilityLevel.UNCOMMITTED, mayInstantiate=false, mayExtend=false, mayInvoke=true) public enum PluginType { /** * The plugin type for plugins that are invoked when the Directory * Server is starting up. */ STARTUP("startup"), /** * The plugin type for plugins that are invoked when the Directory * Server is performing a graceful shutdown. */ SHUTDOWN("shutdown"), /** * The plugin type for plugins that are to be invoked whenever a new * client connection is established. */ POST_CONNECT("postconnect"), /** * The plugin type for plugins that are to be invoked whenever a * client connection is closed. */ POST_DISCONNECT("postdisconnect"), /** * The plugin type for plugins that are to be invoked for each entry * read during an LDIF import. */ LDIF_IMPORT("ldifimport"), /** * The plugin type for plugins that are to be invoked for each * import session end. */ LDIF_IMPORT_END("ldifimportend"), /** * The plugin type for plugins that are to be invoked for each * import session beginning. */ LDIF_IMPORT_BEGIN("ldifimportbegin"), /** * The plugin type for plugins that are to be invoked for each entry * written during an LDIF export. */ LDIF_EXPORT("ldifexport"), /** * The plugin type for plugins that are to be invoked before * processing begins on an abandon operation. */ PRE_PARSE_ABANDON("preparseabandon"), /** * The plugin type for plugins that are to be invoked before * processing begins on an add operation. */ PRE_PARSE_ADD("preparseadd"), /** * The plugin type for plugins that are to be invoked before * processing begins on a bind operation. */ PRE_PARSE_BIND("preparsebind"), /** * The plugin type for plugins that are to be invoked before * processing begins on a compare operation. */ PRE_PARSE_COMPARE("preparsecompare"), /** * The plugin type for plugins that are to be invoked before * processing begins on a delete operation. */ PRE_PARSE_DELETE("preparsedelete"), /** * The plugin type for plugins that are to be invoked before * processing begins on an extended operation. */ PRE_PARSE_EXTENDED("preparseextended"), /** * The plugin type for plugins that are to be invoked before * processing begins on a modify operation. */ PRE_PARSE_MODIFY("preparsemodify"), /** * The plugin type for plugins that are to be invoked before * processing begins on a modify DN operation. */ PRE_PARSE_MODIFY_DN("preparsemodifydn"), /** * The plugin type for plugins that are to be invoked before * processing begins on a search operation. */ PRE_PARSE_SEARCH("preparsesearch"), /** * The plugin type for plugins that are to be invoked before * processing begins on an unbind operation. */ PRE_PARSE_UNBIND("preparseunbind"), /** * The plugin type for plugins that are to be invoked just before * the core processing for an add operation. */ PRE_OPERATION_ADD("preoperationadd"), /** * The plugin type for plugins that are to be invoked just before * the core processing for a bind operation. */ PRE_OPERATION_BIND("preoperationbind"), /** * The plugin type for plugins that are to be invoked just before * the core processing for a compare operation. */ PRE_OPERATION_COMPARE("preoperationcompare"), /** * The plugin type for plugins that are to be invoked just before * the core processing for a delete operation. */ PRE_OPERATION_DELETE("preoperationdelete"), /** * The plugin type for plugins that are to be invoked just before * the core processing for an extended operation. */ PRE_OPERATION_EXTENDED("preoperationextended"), /** * The plugin type for plugins that are to be invoked just before * the core processing for a modify operation. */ PRE_OPERATION_MODIFY("preoperationmodify"), /** * The plugin type for plugins that are to be invoked just before * the core processing for a modify DN operation. */ PRE_OPERATION_MODIFY_DN("preoperationmodifydn"), /** * The plugin type for plugins that are to be invoked just before * the core processing for a search operation. */ PRE_OPERATION_SEARCH("preoperationsearch"), /** * The plugin type for plugins that are to be invoked just after the * core processing for an abandon operation. */ POST_OPERATION_ABANDON("postoperationabandon"), /** * The plugin type for plugins that are to be invoked just after the * core processing for an add operation. */ POST_OPERATION_ADD("postoperationadd"), /** * The plugin type for plugins that are to be invoked just after the * core processing for a bind operation. */ POST_OPERATION_BIND("postoperationbind"), /** * The plugin type for plugins that are to be invoked just after the * core processing for a compare operation. */ POST_OPERATION_COMPARE("postoperationcompare"), /** * The plugin type for plugins that are to be invoked just after the * core processing for a delete operation. */ POST_OPERATION_DELETE("postoperationdelete"), /** * The plugin type for plugins that are to be invoked just after the * core processing for an extended operation. */ POST_OPERATION_EXTENDED("postoperationextended"), /** * The plugin type for plugins that are to be invoked just after the * core processing for a modify operation. */ POST_OPERATION_MODIFY("postoperationmodify"), /** * The plugin type for plugins that are to be invoked just after the * core processing for a modify DN operation. */ POST_OPERATION_MODIFY_DN("postoperationmodifydn"), /** * The plugin type for plugins that are to be invoked just after the * core processing for a search operation. */ POST_OPERATION_SEARCH("postoperationsearch"), /** * The plugin type for plugins that are to be invoked just after the * core processing for an unbind operation. */ POST_OPERATION_UNBIND("postoperationunbind"), /** * The plugin type for plugins that are to be invoked just after the * response is sent for an add operation. */ POST_RESPONSE_ADD("postresponseadd"), /** * The plugin type for plugins that are to be invoked just after the * response is sent for a bind operation. */ POST_RESPONSE_BIND("postresponsebind"), /** * The plugin type for plugins that are to be invoked just after the * response is sent for a compare operation. */ POST_RESPONSE_COMPARE("postresponsecompare"), /** * The plugin type for plugins that are to be invoked just after the * response is sent for a delete operation. */ POST_RESPONSE_DELETE("postresponsedelete"), /** * The plugin type for plugins that are to be invoked just after the * response is sent for an extended operation. */ POST_RESPONSE_EXTENDED("postresponseextended"), /** * The plugin type for plugins that are to be invoked just after the * response is sent for a modify operation. */ POST_RESPONSE_MODIFY("postresponsemodify"), /** * The plugin type for plugins that are to be invoked just after the * response is sent for a modify DN operation. */ POST_RESPONSE_MODIFY_DN("postresponsemodifydn"), /** * The plugin type for plugins that are to be invoked just after the * response is sent for a search operation. */ POST_RESPONSE_SEARCH("postresponsesearch"), /** * The plugin type for plugins that are to be invoked just after an * add operation has been completed via synchronization. */ POST_SYNCHRONIZATION_ADD("postsynchronizationadd"), /** * The plugin type for plugins that are to be invoked just after a * delete operation has been completed via synchronization. */ POST_SYNCHRONIZATION_DELETE( "postsynchronizationdelete"), /** * The plugin type for plugins that are to be invoked just after a * modify operation has been completed via synchronization. */ POST_SYNCHRONIZATION_MODIFY( "postsynchronizationmodify"), /** * The plugin type for plugins that are to be invoked just after a * modify DN operation has been completed via synchronization. */ POST_SYNCHRONIZATION_MODIFY_DN( "postsynchronizationmodifydn"), /** * The plugin type for plugins that are to be invoked before each * search result entry is sent to a client. */ SEARCH_RESULT_ENTRY("searchresultentry"), /** * The plugin type for plugins that are to be invoked before each * search result reference is sent to a client. */ SEARCH_RESULT_REFERENCE("searchresultreference"), /** * The plugin type for plugins that are to be invoked on each * subordinate entry that is moved or renamed as part of a modify DN * operation. */ SUBORDINATE_MODIFY_DN("subordinatemodifydn"), /** * The plugin type for plugins that are to be invoked on each * subordinate entry that is deleted as part of a subtree * delete operation. */ SUBORDINATE_DELETE("subordinatedelete"), /** * The plugin type for plugins that are to be invoked before each * intermediate response message is sent to a client. */ INTERMEDIATE_RESPONSE("intermediateresponse"); // A hash map that relates the plugin type names to the // corresponding plugin type. private static final Map<String, PluginType> PLUGIN_TYPE_MAP; static { PLUGIN_TYPE_MAP = new HashMap<String, PluginType>(PluginType.values().length); for (PluginType type : PluginType.values()) { PLUGIN_TYPE_MAP.put(type.name, type); } } // The name for this plugin type. private String name; /** * Creates a new plugin type instance with the specified name. * * @param name The name to use for this plugin type. */ private PluginType(String name) { this.name = name; } /** * Retrieves the name for this plugin type. * * @return The name for this plugin type. */ public String getName() { return name; } /** * Retrieves a string representation of this plugin type. * * @return A string representation of this plugin type. */ @Override public String toString() { return name; } /** * Retrieves a hash set containing the names of all the plugin * types. * * @return A hash set containing the names of all the plugin types. */ public static Set<String> getPluginTypeNames() { return PLUGIN_TYPE_MAP.keySet(); } /** * Retrieves the plugin type for the plugin with the specified name. * * @param lowerName The name of the plugin type to retrieve, * formatted in all lowercase characters. * * @return The requested plugin type, or {@code null} if there is * no type for the provided name. */ public static PluginType forName(String lowerName) { return PLUGIN_TYPE_MAP.get(lowerName); } }