PluginResult.java revision e7cac727a9231ff3602e61a4ea678e0463eb0e39
/*
* 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
* or http://forgerock.org/license/CDDLv1.0.html.
* 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-2010 Sun Microsystems, Inc.
* Portions Copyright 2014-2015 ForgeRock AS
*/
package org.opends.server.api.plugin;
import org.forgerock.i18n.LocalizableMessage;
import org.forgerock.opendj.ldap.ResultCode;
import org.opends.server.types.DN;
import org.opends.server.types.DisconnectReason;
import java.util.List;
/**
* This class defines a data structure that holds information about
* the result of processing by a plugin.
*/
@org.opends.server.types.PublicAPI(
stability=org.opends.server.types.StabilityLevel.UNCOMMITTED,
mayInstantiate=true,
mayExtend=false,
mayInvoke=true)
public final class PluginResult
{
/**
* Defines a startup plugin result consisting of either continue
* skip further plugins, or stop startup with an error message.
*/
public static final class Startup
{
/** Whether to continue startup. */
private final boolean continueProcessing;
/** Whether to invoke the rest of the plugins. */
private final boolean continuePluginProcessing;
/** An message explaining why startup should stop. */
private final LocalizableMessage errorMessage;
private static Startup DEFAULT_RESULT =
new Startup(true, true, null);
/**
* Construct a new startup plugin result.
*
* @param continueProcessing Whether to continue startup.
* @param continuePluginProcessing Whether to invoke the rest
* of the plugins.
* @param errorMessage An message explaining why startup should
* stop.
*/
private Startup(boolean continueProcessing,
boolean continuePluginProcessing,
LocalizableMessage errorMessage)
{
this.continueProcessing = continueProcessing;
this.errorMessage = errorMessage;
this.continuePluginProcessing = continuePluginProcessing;
}
/**
* Defines a continue processing startup plugin result.
*
* @return a continue processing startup plugin result.
*/
public static Startup continueStartup()
{
return DEFAULT_RESULT;
}
/**
* Defines a skip further plugin processing startup plugin result.
*
* @return a skip further plugin processing startup plugin
* result.
*/
public static Startup skipFurtherPluginProcesssing()
{
return new Startup(true, false, null);
}
/**
* Defines a new stop processing startup plugin result.
*
* @param errorMessage An message explaining why processing
* should stop for the given entry.
*
* @return a new stop processing startup plugin result.
*/
public static Startup stopStartup(LocalizableMessage errorMessage)
{
return new Startup(false, false, errorMessage);
}
/**
* Whether to continue startup.
*
* @return <code>true</code> if processing should continue
* or <code>false</code> otherwise.
*/
public boolean continueProcessing()
{
return continueProcessing;
}
/**
* Whether to invoke the rest of the plugins.
*
* @return <code>true</code> if the rest of the plugins should
* be invoked for <code>false</code> to skip the rest of the
* plugins.
*/
public boolean continuePluginProcessing()
{
return continuePluginProcessing;
}
/**
* Retrieves the error message if <code>continueProcessing</code>
* returned <code>false</code>.
*
* @return An error message explaining why processing should
* stop or <code>null</code> if none is provided.
*/
public LocalizableMessage getErrorMessage()
{
return errorMessage;
}
}
/**
* Defines a pre parse plugin result for core server operation
* processing consisting of either continue, skip further
* plugins, or stop operation processing with a result code,
* matched DN, referral URLs, and error message.
*/
public static final class PreParse
{
/** Whether to continue operation processing. */
private final boolean continueProcessing;
/** Whether to invoke the rest of the plugins. */
private final boolean continuePluginProcessing;
/** An message explaining why processing should stop. */
private final LocalizableMessage errorMessage;
/** The matched DN for this result. */
private final DN matchedDN;
/** The set of referral URLs for this result. */
private final List<String> referralURLs;
/** The result code for this result. */
private final ResultCode resultCode;
private static PreParse DEFAULT_RESULT =
new PreParse(true, true, null, null, null, null);
/**
* Construct a new pre parse plugin result.
*
* @param continueProcessing Whether to continue startup.
* @param continuePluginProcessing Whether to invoke the rest
* of the plugins.
* @param errorMessage An message explaining why processing
* should stop.
* @param resultCode The result code for this result.
* @param matchedDN The matched DN for this result.
* @param referralURLs The set of referral URLs for this result.
* stop.
*/
private PreParse (boolean continueProcessing,
boolean continuePluginProcessing,
LocalizableMessage errorMessage,
ResultCode resultCode, DN matchedDN,
List<String> referralURLs)
{
this.continueProcessing = continueProcessing;
this.errorMessage = errorMessage;
this.continuePluginProcessing = continuePluginProcessing;
this.resultCode = resultCode;
this.matchedDN = matchedDN;
this.referralURLs = referralURLs;
}
/**
* Defines a continue processing pre parse plugin result.
*
* @return a continue processing pre parse plugin result.
*/
public static PreParse continueOperationProcessing()
{
return DEFAULT_RESULT;
}
/**
* Defines a skip further plugin processing pre parse plugin
* result.
*
* @return a skip further plugin processing pre parse plugin
* result.
*/
public static PreParse skipFurtherPluginProcesssing()
{
return new PreParse(true, false, null, null, null, null);
}
/**
* Defines a new stop processing pre parse plugin result.
*
* @param resultCode The result code for this result.
* @param errorMessage An message explaining why processing
* should stop.
* @param matchedDN The matched DN for this result.
* @param referralURLs The set of referral URLs for this result.
*
* @return a new stop processing pre parse plugin result.
*/
public static PreParse stopProcessing(ResultCode resultCode,
LocalizableMessage errorMessage,
DN matchedDN,
List<String> referralURLs)
{
return new PreParse(false, false, errorMessage, resultCode,
matchedDN, referralURLs);
}
/**
* Contrust a new stop processing pre parse plugin result.
*
* @param resultCode The result code for this result.
* @param errorMessage An message explaining why processing
* should stop.
*
* @return a new stop processing pre parse plugin result.
*/
public static PreParse stopProcessing(ResultCode resultCode,
LocalizableMessage errorMessage)
{
return new PreParse(false, false, errorMessage, resultCode,
null, null);
}
/**
* Whether to continue operation processing.
*
* @return <code>true</code> if processing should continue
* or <code>false</code> otherwise.
*/
public boolean continueProcessing()
{
return continueProcessing;
}
/**
* Whether to invoke the rest of the plugins.
*
* @return <code>true</code> if the rest of the plugins should
* be invoked for <code>false</code> to skip the rest of the
* plugins.
*/
public boolean continuePluginProcessing()
{
return continuePluginProcessing;
}
/**
* Retrieves the error message if <code>continueProcessing</code>
* returned <code>false</code>.
*
* @return An error message explaining why processing should
* stop or <code>null</code> if none is provided.
*/
public LocalizableMessage getErrorMessage()
{
return errorMessage;
}
/**
* Retrieves the result code for the operation
* if <code>continueProcessing</code> returned <code>false</code>.
*
* @return the result code for the operation or <code>null</code>
* if none is provided.
*/
public ResultCode getResultCode()
{
return resultCode;
}
/**
* Retrieves the matched DN for the operation
* if <code>continueProcessing</code> returned <code>false</code>.
*
* @return the matched DN for the operation or <code>null</code>
* if none is provided.
*/
public DN getMatchedDN()
{
return matchedDN;
}
/**
* Retrieves the referral URLs for the operation
* if <code>continueProcessing</code> returned <code>false</code>.
*
* @return the refferal URLs for the operation or
* <code>null</code> if none is provided.
*/
public List<String> getReferralURLs()
{
return referralURLs;
}
}
/**
* Defines a pre operation plugin result for core server operation
* processing consisting of either continue, skip further
* plugins, or stop operation processing with a result code,
* matched DN, referral URLs, and error message.
*/
public static final class PreOperation
{
/** Whether to continue operation processing. */
private final boolean continueProcessing;
/** Whether to invoke the rest of the plugins. */
private final boolean continuePluginProcessing;
/** An message explaining why processing should stop. */
private final LocalizableMessage errorMessage;
/** The matched DN for this result. */
private final DN matchedDN;
/** The set of referral URLs for this result. */
private final List<String> referralURLs;
/** The result code for this result. */
private final ResultCode resultCode;
private static PreOperation DEFAULT_RESULT =
new PreOperation(true, true, null, null, null, null);
/**
* Construct a new pre operation plugin result.
*
* @param continueProcessing Whether to continue startup.
* @param continuePluginProcessing Whether to invoke the rest
* of the plugins.
* @param errorMessage An message explaining why processing
* should stop.
* @param resultCode The result code for this result.
* @param matchedDN The matched DN for this result.
* @param referralURLs The set of referral URLs for this result.
* stop.
*/
private PreOperation (boolean continueProcessing,
boolean continuePluginProcessing,
LocalizableMessage errorMessage,
ResultCode resultCode, DN matchedDN,
List<String> referralURLs)
{
this.continueProcessing = continueProcessing;
this.errorMessage = errorMessage;
this.continuePluginProcessing = continuePluginProcessing;
this.resultCode = resultCode;
this.matchedDN = matchedDN;
this.referralURLs = referralURLs;
}
/**
* Defines a continue processing pre operation plugin result.
*
* @return a continue processing pre operation plugin result.
*/
public static PreOperation continueOperationProcessing()
{
return DEFAULT_RESULT;
}
/**
* Defines a skip further plugin processing pre operation plugin
* result.
*
* @return a skip further plugin processing pre operation plugin
* result.
*/
public static PreOperation skipFurtherPluginProcesssing()
{
return new PreOperation(true, false, null, null, null, null);
}
/**
* Defines a new stop processing pre operation plugin result.
*
* @param resultCode The result code for this result.
* @param errorMessage An message explaining why processing
* should stop.
* @param matchedDN The matched DN for this result.
* @param referralURLs The set of referral URLs for this result.
*
* @return a new stop processing pre operation plugin result.
*/
public static PreOperation stopProcessing(
ResultCode resultCode, LocalizableMessage errorMessage, DN matchedDN,
List<String> referralURLs)
{
return new PreOperation(false, false, errorMessage, resultCode,
matchedDN, referralURLs);
}
/**
* Contrust a new stop processing pre operation plugin result.
*
* @param resultCode The result code for this result.
* @param errorMessage An message explaining why processing
* should stop.
*
* @return a new stop processing pre operation plugin result.
*/
public static PreOperation stopProcessing(ResultCode resultCode,
LocalizableMessage errorMessage)
{
return new PreOperation(false, false, errorMessage, resultCode,
null, null);
}
/**
* Whether to continue operation processing.
*
* @return <code>true</code> if processing should continue
* or <code>false</code> otherwise.
*/
public boolean continueProcessing()
{
return continueProcessing;
}
/**
* Whether to invoke the rest of the plugins.
*
* @return <code>true</code> if the rest of the plugins should
* be invoked for <code>false</code> to skip the rest of the
* plugins.
*/
public boolean continuePluginProcessing()
{
return continuePluginProcessing;
}
/**
* Retrieves the error message if <code>continueProcessing</code>
* returned <code>false</code>.
*
* @return An error message explaining why processing should
* stop or <code>null</code> if none is provided.
*/
public LocalizableMessage getErrorMessage()
{
return errorMessage;
}
/**
* Retrieves the result code for the operation
* if <code>continueProcessing</code> returned <code>false</code>.
*
* @return the result code for the operation or <code>null</code>
* if none is provided.
*/
public ResultCode getResultCode()
{
return resultCode;
}
/**
* Retrieves the matched DN for the operation
* if <code>continueProcessing</code> returned <code>false</code>.
*
* @return the matched DN for the operation or <code>null</code>
* if none is provided.
*/
public DN getMatchedDN()
{
return matchedDN;
}
/**
* Retrieves the referral URLs for the operation
* if <code>continueProcessing</code> returned <code>false</code>.
*
* @return the refferal URLs for the operation or
* <code>null</code> if none is provided.
*/
public List<String> getReferralURLs()
{
return referralURLs;
}
}
/**
* Defines a post operation plugin result for core server operation
* processing consisting of either continue, skip further
* plugins, or stop operation processing with a result code,
* matched DN, referral URLs, and error message.
*/
public static final class PostOperation
{
/** Whether to continue operation processing. */
private final boolean continueProcessing;
/** An message explaining why processing should stop. */
private final LocalizableMessage errorMessage;
/** The matched DN for this result. */
private final DN matchedDN;
/** The set of referral URLs for this result. */
private final List<String> referralURLs;
/** The result code for this result. */
private final ResultCode resultCode;
private static PostOperation DEFAULT_RESULT =
new PostOperation(true, null, null, null, null);
/**
* Constructs a new post operation plugin result.
*
* @param continueProcessing Whether to continue startup.
* @param errorMessage An message explaining why processing
* should stop.
* @param resultCode The result code for this result.
* @param matchedDN The matched DN for this result.
* @param referralURLs The set of referral URLs for this result.
*/
private PostOperation(boolean continueProcessing,
LocalizableMessage errorMessage,
ResultCode resultCode, DN matchedDN,
List<String> referralURLs)
{
this.continueProcessing = continueProcessing;
this.errorMessage = errorMessage;
this.resultCode = resultCode;
this.matchedDN = matchedDN;
this.referralURLs = referralURLs;
}
/**
* Defines a continue processing post operation plugin result.
*
* @return a continue processing post operation plugin result.
*/
public static PostOperation continueOperationProcessing()
{
return DEFAULT_RESULT;
}
/**
* Defines a new stop processing post operation plugin result.
*
* @param resultCode The result code for this result.
* @param errorMessage An message explaining why processing
* should stop.
* @param matchedDN The matched DN for this result.
* @param referralURLs The set of referral URLs for this result.
*
* @return a new stop processing post operation plugin result.
*/
public static PostOperation stopProcessing(
ResultCode resultCode, LocalizableMessage errorMessage, DN matchedDN,
List<String> referralURLs)
{
return new PostOperation(false, errorMessage, resultCode,
matchedDN, referralURLs);
}
/**
* Contrust a new stop processing post operation plugin result.
*
* @param resultCode The result code for this result.
* @param errorMessage An message explaining why processing
* should stop.
*
* @return a new stop processing post operation plugin result.
*/
public static PostOperation stopProcessing(ResultCode resultCode,
LocalizableMessage errorMessage)
{
return new PostOperation(false, errorMessage, resultCode, null,
null);
}
/**
* Whether to continue operation processing.
*
* @return <code>true</code> if processing should continue
* or <code>false</code> otherwise.
*/
public boolean continueProcessing()
{
return continueProcessing;
}
/**
* Retrieves the error message if <code>continueProcessing</code>
* returned <code>false</code>.
*
* @return An error message explaining why processing should
* stop or <code>null</code> if none is provided.
*/
public LocalizableMessage getErrorMessage()
{
return errorMessage;
}
/**
* Retrieves the result code for the operation
* if <code>continueProcessing</code> returned <code>false</code>.
*
* @return the result code for the operation or <code>null</code>
* if none is provided.
*/
public ResultCode getResultCode()
{
return resultCode;
}
/**
* Retrieves the matched DN for the operation
* if <code>continueProcessing</code> returned <code>false</code>.
*
* @return the matched DN for the operation or <code>null</code>
* if none is provided.
*/
public DN getMatchedDN()
{
return matchedDN;
}
/**
* Retrieves the referral URLs for the operation
* if <code>continueProcessing</code> returned <code>false</code>.
*
* @return the refferal URLs for the operation or
* <code>null</code> if none is provided.
*/
public List<String> getReferralURLs()
{
return referralURLs;
}
}
/**
* Defines a post response plugin result for core server operation
* processing consisting of either continue or skip further
* plugins.
*/
public static final class PostResponse
{
/** Whether to invoke the rest of the plugins. */
private final boolean continuePluginProcessing;
private static PostResponse DEFAULT_RESULT =
new PostResponse(true);
/**
* Constructs a new post response plugin result.
*
* @param continuePluginProcessing Whether to invoke the rest
* of the plugins.
*/
private PostResponse (boolean continuePluginProcessing)
{
this.continuePluginProcessing = continuePluginProcessing;
}
/**
* Defines a continue processing post response plugin result.
*
* @return a continue processing post response plugin result.
*/
public static PostResponse continueOperationProcessing()
{
return DEFAULT_RESULT;
}
/**
* Defines a skip further plugin processing post response plugin
* result.
*
* @return a skip further plugin processing post response plugin
* result.
*/
public static PostResponse skipFurtherPluginProcesssing()
{
return new PostResponse(false);
}
/**
* Whether to invoke the rest of the plugins.
*
* @return <code>true</code> if the rest of the plugins should
* be invoked for <code>false</code> to skip the rest of the
* plugins.
*/
public boolean continuePluginProcessing()
{
return continuePluginProcessing;
}
}
/**
* Defines a LDIF plugin result for import from LDIF
* processing consisting of either continue, skip further
* plugins, or stop processing with an error message.
*/
public static final class ImportLDIF
{
/** Whether to continue operation processing. */
private final boolean continueProcessing;
/** Whether to invoke the rest of the plugins. */
private final boolean continuePluginProcessing;
/** An message explaining why processing should stop. */
private final LocalizableMessage errorMessage;
private static ImportLDIF DEFAULT_RESULT =
new ImportLDIF(true, true, null);
/**
* Construct a new import LDIF plugin result.
*
* @param continueProcessing Whether to continue startup.
* @param continuePluginProcessing Whether to invoke the rest
* of the plugins.
* @param errorMessage An message explaining why startup should
* stop.
*/
private ImportLDIF(boolean continueProcessing,
boolean continuePluginProcessing,
LocalizableMessage errorMessage)
{
this.continueProcessing = continueProcessing;
this.errorMessage = errorMessage;
this.continuePluginProcessing = continuePluginProcessing;
}
/**
* Defines a continue processing LDIF import plugin result.
*
* @return a continue processing LDIF import plugin result.
*/
public static ImportLDIF continueEntryProcessing()
{
return DEFAULT_RESULT;
}
/**
* Defines a skip further plugin processing LDIF import plugin
* result.
*
* @return a skip further plugin processing LDIF import plugin
* result.
*/
public static ImportLDIF skipFurtherPluginProcesssing()
{
return new ImportLDIF(true, false, null);
}
/**
* Defines a new stop processing LDIF import plugin result.
*
* @param errorMessage An message explaining why processing
* should stop for the given entry.
*
* @return a new stop processing LDIF import plugin result.
*/
public static ImportLDIF stopEntryProcessing(LocalizableMessage errorMessage)
{
return new ImportLDIF(false, false, errorMessage);
}
/**
* Whether to continue operation processing.
*
* @return <code>true</code> if processing should continue
* or <code>false</code> otherwise.
*/
public boolean continueProcessing()
{
return continueProcessing;
}
/**
* Whether to invoke the rest of the plugins.
*
* @return <code>true</code> if the rest of the plugins should
* be invoked for <code>false</code> to skip the rest of the
* plugins.
*/
public boolean continuePluginProcessing()
{
return continuePluginProcessing;
}
/**
* Retrieves the error message if <code>continueProcessing</code>
* returned <code>false</code>.
*
* @return An error message explaining why processing should
* stop or <code>null</code> if none is provided.
*/
public LocalizableMessage getErrorMessage()
{
return errorMessage;
}
}
/**
* Defines a subordinate modify DN plugin result for core server
* operation processing consisting of either continue, skip further
* plugins, or stop operation processing with a result code,
* matched DN, referral URLs, and error message.
*/
public static final class SubordinateModifyDN
{
/** Whether to continue operation processing. */
private final boolean continueProcessing;
/** Whether to invoke the rest of the plugins. */
private final boolean continuePluginProcessing;
/** An message explaining why processing should stop. */
private final LocalizableMessage errorMessage;
/** The matched DN for this result. */
private final DN matchedDN;
/** The set of referral URLs for this result. */
private final List<String> referralURLs;
/** The result code for this result. */
private final ResultCode resultCode;
private static SubordinateModifyDN DEFAULT_RESULT =
new SubordinateModifyDN(true, true, null, null, null, null);
/**
* Construct a new subordinate modify DN plugin result.
*
* @param continueProcessing Whether to continue startup.
* @param continuePluginProcessing Whether to invoke the rest
* of the plugins.
* @param errorMessage An message explaining why processing
* should stop.
* @param resultCode The result code for this result.
* @param matchedDN The matched DN for this result.
* @param referralURLs The set of referral URLs for this result.
* stop.
*/
private SubordinateModifyDN(boolean continueProcessing,
boolean continuePluginProcessing,
LocalizableMessage errorMessage,
ResultCode resultCode, DN matchedDN,
List<String> referralURLs)
{
this.continueProcessing = continueProcessing;
this.errorMessage = errorMessage;
this.continuePluginProcessing = continuePluginProcessing;
this.resultCode = resultCode;
this.matchedDN = matchedDN;
this.referralURLs = referralURLs;
}
/**
* Defines a continue processing subordinate modify DN plugin
* result.
*
* @return a continue processing subordinate modify DN plugin
* result.
*/
public static SubordinateModifyDN continueOperationProcessing()
{
return DEFAULT_RESULT;
}
/**
* Defines a skip further plugin processing subordinate modify DN
* plugin result.
*
* @return a skip further plugin processing subordinate modify DN
* plugin result.
*/
public static SubordinateModifyDN skipFurtherPluginProcesssing()
{
return new SubordinateModifyDN(true, false, null, null, null,
null);
}
/**
* Defines a new stop processing subordinate modify DN plugin
* result.
*
* @param resultCode The result code for this result.
* @param errorMessage An message explaining why processing
* should stop.
* @param matchedDN The matched DN for this result.
* @param referralURLs The set of referral URLs for this result.
*
* @return a new stop processing subordinate modify DN plugin
* result.
*/
public static SubordinateModifyDN stopProcessing(
ResultCode resultCode, LocalizableMessage errorMessage, DN matchedDN,
List<String> referralURLs)
{
return new SubordinateModifyDN(false, false, errorMessage,
resultCode, matchedDN, referralURLs);
}
/**
* Contrust a new stop processing subordinate modify DN plugin
* result.
*
* @param resultCode The result code for this result.
* @param errorMessage An message explaining why processing
* should stop.
*
* @return a new stop processing subordinate modify DN plugin
* result.
*/
public static SubordinateModifyDN stopProcessing(
ResultCode resultCode, LocalizableMessage errorMessage)
{
return new SubordinateModifyDN(false, false, errorMessage,
resultCode, null, null);
}
/**
* Whether to continue operation processing.
*
* @return <code>true</code> if processing should continue
* or <code>false</code> otherwise.
*/
public boolean continueProcessing()
{
return continueProcessing;
}
/**
* Whether to invoke the rest of the plugins.
*
* @return <code>true</code> if the rest of the plugins should
* be invoked for <code>false</code> to skip the rest of the
* plugins.
*/
public boolean continuePluginProcessing()
{
return continuePluginProcessing;
}
/**
* Retrieves the error message if <code>continueProcessing</code>
* returned <code>false</code>.
*
* @return An error message explaining why processing should
* stop or <code>null</code> if none is provided.
*/
public LocalizableMessage getErrorMessage()
{
return errorMessage;
}
/**
* Retrieves the result code for the operation
* if <code>continueProcessing</code> returned <code>false</code>.
*
* @return the result code for the operation or <code>null</code>
* if none is provided.
*/
public ResultCode getResultCode()
{
return resultCode;
}
/**
* Retrieves the matched DN for the operation
* if <code>continueProcessing</code> returned <code>false</code>.
*
* @return the matched DN for the operation or <code>null</code>
* if none is provided.
*/
public DN getMatchedDN()
{
return matchedDN;
}
/**
* Retrieves the referral URLs for the operation
* if <code>continueProcessing</code> returned <code>false</code>.
*
* @return the refferal URLs for the operation or
* <code>null</code> if none is provided.
*/
public List<String> getReferralURLs()
{
return referralURLs;
}
}
/**
* Defines a subordinate delete plugin result for core server
* operation processing consisting of either continue, skip
* further plugins, or stop operation processing with a result
* code, matched DN, referral URLs, and error message.
*/
public static final class SubordinateDelete
{
/** Whether to continue operation processing. */
private final boolean continueProcessing;
/** Whether to invoke the rest of the plugins. */
private final boolean continuePluginProcessing;
/** An message explaining why processing should stop. */
private final LocalizableMessage errorMessage;
/** The matched DN for this result. */
private final DN matchedDN;
/** The set of referral URLs for this result. */
private final List<String> referralURLs;
/** The result code for this result. */
private final ResultCode resultCode;
private static SubordinateDelete DEFAULT_RESULT =
new SubordinateDelete(true, true, null, null, null, null);
/**
* Construct a new subordinate delete plugin result.
*
* @param continueProcessing Whether to continue startup.
* @param continuePluginProcessing Whether to invoke the rest
* of the plugins.
* @param errorMessage An message explaining why processing
* should stop.
* @param resultCode The result code for this result.
* @param matchedDN The matched DN for this result.
* @param referralURLs The set of referral URLs for this result.
* stop.
*/
private SubordinateDelete(boolean continueProcessing,
boolean continuePluginProcessing,
LocalizableMessage errorMessage,
ResultCode resultCode, DN matchedDN,
List<String> referralURLs)
{
this.continueProcessing = continueProcessing;
this.errorMessage = errorMessage;
this.continuePluginProcessing = continuePluginProcessing;
this.resultCode = resultCode;
this.matchedDN = matchedDN;
this.referralURLs = referralURLs;
}
/**
* Defines a continue processing subordinate delete plugin
* result.
*
* @return a continue processing subordinate delete plugin
* result.
*/
public static SubordinateDelete continueOperationProcessing()
{
return DEFAULT_RESULT;
}
/**
* Defines a skip further plugin processing subordinate delete
* plugin result.
*
* @return a skip further plugin processing subordinate delete
* plugin result.
*/
public static SubordinateDelete skipFurtherPluginProcesssing()
{
return new SubordinateDelete(true, false, null, null, null,
null);
}
/**
* Defines a new stop processing subordinate delete plugin
* result.
*
* @param resultCode The result code for this result.
* @param errorMessage An message explaining why processing
* should stop.
* @param matchedDN The matched DN for this result.
* @param referralURLs The set of referral URLs for this result.
*
* @return a new stop processing subordinate delete plugin
* result.
*/
public static SubordinateDelete stopProcessing(
ResultCode resultCode, LocalizableMessage errorMessage, DN matchedDN,
List<String> referralURLs)
{
return new SubordinateDelete(false, false, errorMessage,
resultCode, matchedDN, referralURLs);
}
/**
* Contrust a new stop processing subordinate delete plugin
* result.
*
* @param resultCode The result code for this result.
* @param errorMessage An message explaining why processing
* should stop.
*
* @return a new stop processing subordinate delete plugin
* result.
*/
public static SubordinateDelete stopProcessing(
ResultCode resultCode, LocalizableMessage errorMessage)
{
return new SubordinateDelete(false, false, errorMessage,
resultCode, null, null);
}
/**
* Whether to continue operation processing.
*
* @return <code>true</code> if processing should continue
* or <code>false</code> otherwise.
*/
public boolean continueProcessing()
{
return continueProcessing;
}
/**
* Whether to invoke the rest of the plugins.
*
* @return <code>true</code> if the rest of the plugins should
* be invoked for <code>false</code> to skip the rest of the
* plugins.
*/
public boolean continuePluginProcessing()
{
return continuePluginProcessing;
}
/**
* Retrieves the error message if <code>continueProcessing</code>
* returned <code>false</code>.
*
* @return An error message explaining why processing should
* stop or <code>null</code> if none is provided.
*/
public LocalizableMessage getErrorMessage()
{
return errorMessage;
}
/**
* Retrieves the result code for the operation
* if <code>continueProcessing</code> returned <code>false</code>.
*
* @return the result code for the operation or <code>null</code>
* if none is provided.
*/
public ResultCode getResultCode()
{
return resultCode;
}
/**
* Retrieves the matched DN for the operation
* if <code>continueProcessing</code> returned <code>false</code>.
*
* @return the matched DN for the operation or <code>null</code>
* if none is provided.
*/
public DN getMatchedDN()
{
return matchedDN;
}
/**
* Retrieves the referral URLs for the operation
* if <code>continueProcessing</code> returned <code>false</code>.
*
* @return the refferal URLs for the operation or
* <code>null</code> if none is provided.
*/
public List<String> getReferralURLs()
{
return referralURLs;
}
}
/**
* Defines an intermediate response plugin result for core server
* operation processing consisting of either continue, skip further
* plugins, or stop operation processing with a result code,
* matched DN, referral URLs, and error message.
*/
public static final class IntermediateResponse
{
/** Whether to continue operation processing. */
private final boolean continueProcessing;
/** Whether to invoke the rest of the plugins. */
private final boolean continuePluginProcessing;
/** Whether to send the intermediate response to the client. */
private final boolean sendResponse;
/** An message explaining why processing should stop. */
private final LocalizableMessage errorMessage;
/** The matched DN for this result. */
private final DN matchedDN;
/** The set of referral URLs for this result. */
private final List<String> referralURLs;
/** The result code for this result. */
private final ResultCode resultCode;
private static IntermediateResponse DEFAULT_RESULT =
new IntermediateResponse(true, true, true, null, null, null,
null);
/**
* Construct a new intermediate response plugin result.
*
* @param continueProcessing Whether to continue startup.
* @param continuePluginProcessing Whether to invoke the rest
* of the plugins.
* @param sendResponse Whether to send the intermediate response
* to the client.
* @param errorMessage An message explaining why processing
* should stop.
* @param resultCode The result code for this result.
* @param matchedDN The matched DN for this result.
* @param referralURLs The set of referral URLs for this result.
* stop.
*/
private IntermediateResponse(boolean continueProcessing,
boolean continuePluginProcessing,
boolean sendResponse,
LocalizableMessage errorMessage,
ResultCode resultCode, DN matchedDN,
List<String> referralURLs)
{
this.continueProcessing = continueProcessing;
this.errorMessage = errorMessage;
this.continuePluginProcessing = continuePluginProcessing;
this.resultCode = resultCode;
this.matchedDN = matchedDN;
this.referralURLs = referralURLs;
this.sendResponse = sendResponse;
}
/**
* Defines a continue processing intermediate response plugin
* result.
*
* @param sendResponse Whether to send the intermediate response
* to the client.
* @return a continue processing intermediate response plugin
* result.
*/
public static IntermediateResponse
continueOperationProcessing(boolean sendResponse)
{
if(sendResponse)
{
return DEFAULT_RESULT;
}
else
{
return new IntermediateResponse(true, true, sendResponse,
null, null, null, null);
}
}
/**
* Defines a skip further plugin processing intermediate response
* plugin result.
*
* @param sendResponse Whether to send the intermediate response
* to the client.
*
* @return a skip further plugin processing intermediate response
* plugin result.
*/
public static IntermediateResponse
skipFurtherPluginProcesssing(boolean sendResponse)
{
return new IntermediateResponse(true, false, sendResponse,
null, null, null, null);
}
/**
* Defines a new stop processing intermediate response plugin
* result.
*
* @param sendResponse Whether to send the intermediate response
* to the client.
* @param resultCode The result code for this result.
* @param errorMessage An message explaining why processing
* should stop.
* @param matchedDN The matched DN for this result.
* @param referralURLs The set of referral URLs for this result.
*
* @return a new stop processing intermediate response plugin
* result.
*/
public static IntermediateResponse stopProcessing(
boolean sendResponse, ResultCode resultCode,
LocalizableMessage errorMessage, DN matchedDN, List<String> referralURLs)
{
return new IntermediateResponse(false, false, sendResponse,
errorMessage, resultCode, matchedDN, referralURLs);
}
/**
* Contrust a new stop processing intermediate response plugin
* result.
*
* @param sendResponse Whether to send the intermediate response
* to the client.
* @param resultCode The result code for this result.
* @param errorMessage An message explaining why processing
* should stop.
*
* @return a new stop processing intermediate response plugin
* result.
*/
public static IntermediateResponse stopProcessing(
boolean sendResponse, ResultCode resultCode,
LocalizableMessage errorMessage)
{
return new IntermediateResponse(false, false, sendResponse,
errorMessage, resultCode, null, null);
}
/**
* Whether to continue operation processing.
*
* @return <code>true</code> if processing should continue
* or <code>false</code> otherwise.
*/
public boolean continueProcessing()
{
return continueProcessing;
}
/**
* Whether to invoke the rest of the plugins.
*
* @return <code>true</code> if the rest of the plugins should
* be invoked for <code>false</code> to skip the rest of the
* plugins.
*/
public boolean continuePluginProcessing()
{
return continuePluginProcessing;
}
/**
* Whether to send the intermediate response to the client.
*
* @return <code>true</code> if the intermediate response should
* be sent to the client or <code>false</code> otherwise.
*/
public boolean sendResponse()
{
return sendResponse;
}
/**
* Retrieves the error message if <code>continueProcessing</code>
* returned <code>false</code>.
*
* @return An error message explaining why processing should
* stop or <code>null</code> if none is provided.
*/
public LocalizableMessage getErrorMessage()
{
return errorMessage;
}
/**
* Retrieves the result code for the operation
* if <code>continueProcessing</code> returned <code>false</code>.
*
* @return the result code for the operation or <code>null</code>
* if none is provided.
*/
public ResultCode getResultCode()
{
return resultCode;
}
/**
* Retrieves the matched DN for the operation
* if <code>continueProcessing</code> returned <code>false</code>.
*
* @return the matched DN for the operation or <code>null</code>
* if none is provided.
*/
public DN getMatchedDN()
{
return matchedDN;
}
/**
* Retrieves the referral URLs for the operation
* if <code>continueProcessing</code> returned <code>false</code>.
*
* @return the refferal URLs for the operation or
* <code>null</code> if none is provided.
*/
public List<String> getReferralURLs()
{
return referralURLs;
}
}
/**
* Defines a post connect plugin result for client connection
* processing consisting of either continue, skip further
* plugins, or stop.
*/
public static final class PostConnect
{
/** Whether to continue connection processing. */
private final boolean continueProcessing;
/** Whether to invoke the rest of the plugins. */
private final boolean continuePluginProcessing;
/** An message explaining why processing should stop. */
private final LocalizableMessage errorMessage;
/** The disconnect reason that provides the generic cause for the disconnect. */
private final DisconnectReason disconnectReason;
/** Whether to send a disconnect notification to the client. */
private final boolean sendDisconnectNotification;
private static PostConnect DEFAULT_RESULT =
new PostConnect(true, true, null, null, false);
/**
* Construct a new post connect plugin result.
*
* @param continueProcessing Whether to continue startup.
* @param continuePluginProcessing Whether to invoke the rest
* of the plugins.
* @param errorMessage An message explaining why processing
* should stop.
* @param disconnectReason The generic cause for the disconnect.
* @param sendDisconnectNotification Whether to send a disconnect
* notification to the client.
*/
private PostConnect(boolean continueProcessing,
boolean continuePluginProcessing,
LocalizableMessage errorMessage,
DisconnectReason disconnectReason,
boolean sendDisconnectNotification)
{
this.continueProcessing = continueProcessing;
this.errorMessage = errorMessage;
this.continuePluginProcessing = continuePluginProcessing;
this.disconnectReason = disconnectReason;
this.sendDisconnectNotification = sendDisconnectNotification;
}
/**
* Defines a continue processing post connect plugin result.
*
* @return a continue processing post connect plugin result.
*/
public static PostConnect continueConnectProcessing()
{
return DEFAULT_RESULT;
}
/**
* Defines a skip further plugin processing post connect plugin
* result.
*
* @return a skip further plugin processing post connect plugin
* result.
*/
public static PostConnect skipFurtherPluginProcesssing()
{
return new PostConnect(true, false, null, null, false);
}
/**
* Defines a new stop processing post connect plugin result.
*
* @param disconnectReason The generic cause for the disconnect.
* @param sendDisconnectNotification Whether to send a disconnect
* notification to the client.
* @param errorMessage An message explaining why processing
* should stop for the given entry.
*
* @return a new stop processing post connect plugin result.
*/
public static PostConnect disconnectClient(
DisconnectReason disconnectReason,
boolean sendDisconnectNotification, LocalizableMessage errorMessage)
{
return new PostConnect(false, false, errorMessage,
disconnectReason, sendDisconnectNotification);
}
/**
* Whether to continue operation processing.
*
* @return <code>true</code> if processing should continue
* or <code>false</code> otherwise.
*/
public boolean continueProcessing()
{
return continueProcessing;
}
/**
* Whether to invoke the rest of the plugins.
*
* @return <code>true</code> if the rest of the plugins should
* be invoked for <code>false</code> to skip the rest of the
* plugins.
*/
public boolean continuePluginProcessing()
{
return continuePluginProcessing;
}
/**
* Retrieves the error message if <code>continueProcessing</code>
* returned <code>false</code>.
*
* @return An error message explaining why processing should
* stop or <code>null</code> if none is provided.
*/
public LocalizableMessage getErrorMessage()
{
return errorMessage;
}
/**
* The disconnect reason that provides the generic cause for the
* disconnect.
*
* @return the generic cause for the disconnect.
*/
public DisconnectReason getDisconnectReason()
{
return disconnectReason;
}
/**
* Indicates whether to try to provide notification to the client
* that the connection will be closed.
*
* @return <code>true</code> if notification should be provided or
* <code>false</code> otherwise.
*/
public boolean sendDisconnectNotification()
{
return sendDisconnectNotification;
}
}
/**
* Defines a post disconnect plugin result for client connection
* processing consisting of either continue or skip further
* plugins.
*/
public static final class PostDisconnect
{
/** Whether to invoke the rest of the plugins. */
private final boolean continuePluginProcessing;
private static PostDisconnect DEFAULT_RESULT =
new PostDisconnect(true);
/**
* Construct a new post disconnect plugin result.
*
* @param continuePluginProcessing Whether to invoke the rest
* of the plugins.
*/
private PostDisconnect(boolean continuePluginProcessing)
{
this.continuePluginProcessing = continuePluginProcessing;
}
/**
* Defines a continue processing post disconnect plugin result.
*
* @return a continue processing post disconnect plugin result.
*/
public static PostDisconnect continueDisconnectProcessing()
{
return DEFAULT_RESULT;
}
/**
* Defines a skip further plugin processing post disconnect
* plugin result.
*
* @return a skip further plugin processing post disconnect
* plugin result.
*/
public static PostDisconnect skipFurtherPluginProcesssing()
{
return new PostDisconnect(false);
}
/**
* Whether to invoke the rest of the plugins.
*
* @return <code>true</code> if the rest of the plugins should
* be invoked for <code>false</code> to skip the rest of the
* plugins.
*/
public boolean continuePluginProcessing()
{
return continuePluginProcessing;
}
}
}