/*
* 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 legal-notices/CDDLv1_0.txt
* 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 legal-notices/CDDLv1_0.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
*
*
* Copyright 2006-2009 Sun Microsystems, Inc.
* Portions copyright 2013 ForgeRock AS
*/
/**
* This class defines the set of methods and structures that must be
* implemented by a Directory Server module that implements the
* functionality required for one or more types of extended
* operations.
*
* @param <T> The configuration class that will be provided to
* initialize the handler.
*/
mayInstantiate=false,
mayExtend=true,
mayInvoke=false)
public abstract class
{
/** The default set of supported control OIDs for this extended op. */
/** The default set of supported feature OIDs for this extended op. */
/**
* Builds an extended operation.
*/
public ExtendedOperationHandler()
{
}
/**
* Builds an extended operation.
*
* @param supportedControlOIDs
* the default set of supported control OIDs for this extended op
*/
{
}
/**
* Initializes this extended operation handler based on the
* information in the provided configuration entry. It should also
* register itself with the Directory Server for the particular
* kinds of extended operations that it will process.
*
* @param config The extended operation handler configuration that
* contains the information to use to initialize
* this extended operation handler.
*
* @throws ConfigException If an unrecoverable problem arises in
* the process of performing the
* initialization.
*
* @throws InitializationException If a problem occurs
* during initialization that is
* not related to the server
* configuration.
*/
{
}
/**
* Indicates whether the provided configuration is acceptable for
* this extended operation handler. It should be possible to call
* this method on an uninitialized extended operation handler
* instance in order to determine whether the extended operation
* handler would be able to use the provided configuration.
* <BR><BR>
* Note that implementations which use a subclass of the provided
* configuration class will likely need to cast the configuration
* to the appropriate subclass type.
*
* @param configuration The extended operation handler
* configuration for which to make the
* determination.
* @param unacceptableReasons A list that may be used to hold the
* reasons that the provided
* configuration is not acceptable.
*
* @return {@code true} if the provided configuration is acceptable
* for this extended operation handler, or {@code false} if
* not.
*/
public boolean isConfigurationAcceptable(
{
// This default implementation does not perform any special
// validation. It should be overridden by extended operation
// handler implementations that wish to perform more detailed
// validation.
return true;
}
/**
* Performs any finalization that may be necessary for this extended
* operation handler. By default, no finalization is performed.
*/
public void finalizeExtendedOperationHandler()
{
}
/**
* Processes the provided extended operation.
*
* @param operation The extended operation to be processed.
*/
/**
* Retrieves the OIDs of the controls that may be supported by this
* extended operation handler. It should be overridden by any
* extended operation handler which provides special support for one
* or more controls.
*
* @return The OIDs of the controls that may be supported by this
* extended operation handler.
*/
{
return supportedControlOIDs;
}
/**
* Indicates whether this extended operation handler supports the
* specified control.
*
* @param controlOID The OID of the control for which to make the
* determination.
*
* @return {@code true} if this extended operation handler does
* support the requested control, or {@code false} if not.
*/
{
}
/**
* Retrieves the OIDs of the features that may be supported by this
* extended operation handler.
*
* @return The OIDs of the features that may be supported by this
* extended operation handler.
*/
{
return supportedFeatureOIDs;
}
/**
* Indicates whether this extended operation handler supports the
* specified feature.
*
* @param featureOID The OID of the feature for which to make the
* determination.
*
* @return {@code true} if this extended operation handler does
* support the requested feature, or {@code false} if not.
*/
{
}
/**
* If the extended operation handler defines any supported controls
*/
private void registerControlsAndFeatures()
{
if (controlOIDs != null)
{
{
}
}
if (featureOIDs != null)
{
{
}
}
}
/**
* If the extended operation handler defines any supported controls
*/
private void deregisterControlsAndFeatures()
{
if (controlOIDs != null)
{
{
}
}
if (featureOIDs != null)
{
{
}
}
}
/**
* Retrieves the name associated with this extended operation.
*
* @return The name associated with this extended operation,
* if any, or <CODE>null</CODE> if there is none.
*/
{
return null;
}
/**
* Retrieves the object OID associated with this extended operation.
*
* @return the oid associated with this extended operation, if any, or
* <CODE>null</CODE> if there is none.
*/
{
return null;
}
}