From 4a789af2cc9d96218d4225b9bb9bc99b3b4cd43b Mon Sep 17 00:00:00 2001
From: Jean-Noel Rouvignac <jean-noel.rouvignac@forgerock.com>
Date: Thu, 19 Dec 2013 08:37:13 +0000
Subject: [PATCH] Code cleanup of extended operations.
---
opends/src/server/org/opends/server/extensions/PasswordModifyExtendedOperation.java | 434 +++++++++++++++++++++++-------------------------------
1 files changed, 185 insertions(+), 249 deletions(-)
diff --git a/opends/src/server/org/opends/server/extensions/PasswordModifyExtendedOperation.java b/opends/src/server/org/opends/server/extensions/PasswordModifyExtendedOperation.java
index 85d2000..8bc58b3 100644
--- a/opends/src/server/org/opends/server/extensions/PasswordModifyExtendedOperation.java
+++ b/opends/src/server/org/opends/server/extensions/PasswordModifyExtendedOperation.java
@@ -26,6 +26,7 @@
*/
package org.opends.server.extensions;
+import java.io.IOException;
import java.util.*;
import java.util.concurrent.locks.Lock;
@@ -123,9 +124,6 @@
/** The reference to the identity mapper. */
private IdentityMapper<?> identityMapper;
- /** The default set of supported control OIDs for this extended. */
- private Set<String> supportedControlOIDs = new HashSet<String>(0);
-
/**
* Create an instance of this password modify extended operation. All
* initialization should be performed in the
@@ -133,7 +131,8 @@
*/
public PasswordModifyExtendedOperation()
{
- super();
+ super(new HashSet<String>(Arrays.asList(
+ OID_LDAP_NOOP_OPENLDAP_ASSIGNED, OID_PASSWORD_POLICY_CONTROL)));
}
/**
@@ -179,22 +178,13 @@
throw new InitializationException(message, e);
}
-
- supportedControlOIDs = new HashSet<String>();
- supportedControlOIDs.add(OID_LDAP_NOOP_OPENLDAP_ASSIGNED);
- supportedControlOIDs.add(OID_PASSWORD_POLICY_CONTROL);
-
-
// Save this configuration for future reference.
currentConfig = config;
// Register this as a change listener.
config.addPasswordModifyChangeListener(this);
- DirectoryServer.registerSupportedExtension(OID_PASSWORD_MODIFY_REQUEST,
- this);
-
- registerControlsAndFeatures();
+ super.initializeExtendedOperationHandler(config);
}
@@ -208,24 +198,9 @@
{
currentConfig.removePasswordModifyChangeListener(this);
- DirectoryServer.deregisterSupportedExtension(OID_PASSWORD_MODIFY_REQUEST);
-
- deregisterControlsAndFeatures();
+ super.finalizeExtendedOperationHandler();
}
-
-
- /**
- * {@inheritDoc}
- */
- @Override()
- public Set<String> getSupportedControls()
- {
- return supportedControlOIDs;
- }
-
-
-
/**
* Processes the provided extended operation.
*
@@ -298,11 +273,8 @@
}
operation.setResultCode(ResultCode.PROTOCOL_ERROR);
-
- Message message = ERR_EXTOP_PASSMOD_CANNOT_DECODE_REQUEST.get(
- getExceptionMessage(ae));
- operation.appendErrorMessage(message);
-
+ operation.appendErrorMessage(ERR_EXTOP_PASSMOD_CANNOT_DECODE_REQUEST
+ .get(getExceptionMessage(ae)));
return;
}
}
@@ -330,10 +302,8 @@
if ((! authInfo.isAuthenticated()) || (requestorEntry == null))
{
operation.setResultCode(ResultCode.UNWILLING_TO_PERFORM);
-
operation.appendErrorMessage(
ERR_EXTOP_PASSMOD_NO_AUTH_OR_USERID.get());
-
return;
}
@@ -350,7 +320,6 @@
return;
}
-
userEntry = requestorEntry;
}
else
@@ -372,10 +341,8 @@
}
operation.setResultCode(ResultCode.INVALID_DN_SYNTAX);
-
operation.appendErrorMessage(
ERR_EXTOP_PASSMOD_CANNOT_DECODE_AUTHZ_DN.get(authzIDStr));
-
return;
}
@@ -405,10 +372,8 @@
ERR_EXTOP_PASSMOD_CANNOT_MAP_USER.get(authzIDStr));
return;
}
- else
- {
- userDN = userEntry.getDN();
- }
+
+ userDN = userEntry.getDN();
}
catch (DirectoryException de)
{
@@ -434,16 +399,15 @@
{
userDN = DN.decode(authzIDStr);
}
- catch (DirectoryException de)
+ catch (DirectoryException ignored)
{
if (debugEnabled())
{
- TRACER.debugCaught(DebugLogLevel.ERROR, de);
+ TRACER.debugCaught(DebugLogLevel.ERROR, ignored);
}
- // IGNORE.
}
- if ((userDN != null) && (!userDN.isNullDN())) {
+ if (userDN != null && !userDN.isNullDN()) {
// If the provided DN is an alternate DN for a root user,
// then replace it with the actual root DN.
DN actualRootDN = DirectoryServer.getActualRootBindDN(userDN);
@@ -456,13 +420,12 @@
{
userEntry = identityMapper.getEntryForID(authzIDStr);
}
- catch (DirectoryException de)
+ catch (DirectoryException ignored)
{
if (debugEnabled())
{
- TRACER.debugCaught(DebugLogLevel.ERROR, de);
+ TRACER.debugCaught(DebugLogLevel.ERROR, ignored);
}
- // IGNORE.
}
}
@@ -473,10 +436,8 @@
ERR_EXTOP_PASSMOD_INVALID_AUTHZID_STRING.get(authzIDStr));
return;
}
- else
- {
- userDN = userEntry.getDN();
- }
+
+ userDN = userEntry.getDN();
}
}
@@ -506,7 +467,6 @@
}
operation.setResultCode(DirectoryServer.getServerErrorResultCode());
-
operation.appendErrorMessage(
ERR_EXTOP_PASSMOD_CANNOT_GET_PW_POLICY.get(
String.valueOf(userDN),
@@ -552,19 +512,15 @@
{
if (pwPolicyRequested)
{
- pwPolicyErrorType =
- PasswordPolicyErrorType.ACCOUNT_LOCKED;
+ pwPolicyErrorType = PasswordPolicyErrorType.ACCOUNT_LOCKED;
operation.addResponseControl(
new PasswordPolicyResponseControl(pwPolicyWarningType,
pwPolicyWarningValue,
pwPolicyErrorType));
}
- Message message = ERR_EXTOP_PASSMOD_ACCOUNT_DISABLED.get();
-
operation.setResultCode(ResultCode.UNWILLING_TO_PERFORM);
- operation.appendErrorMessage(message);
-
+ operation.appendErrorMessage(ERR_EXTOP_PASSMOD_ACCOUNT_DISABLED.get());
return;
}
else if (selfChange &&
@@ -574,19 +530,15 @@
{
if (pwPolicyRequested)
{
- pwPolicyErrorType =
- PasswordPolicyErrorType.ACCOUNT_LOCKED;
+ pwPolicyErrorType = PasswordPolicyErrorType.ACCOUNT_LOCKED;
operation.addResponseControl(
new PasswordPolicyResponseControl(pwPolicyWarningType,
pwPolicyWarningValue,
pwPolicyErrorType));
}
- Message message = ERR_EXTOP_PASSMOD_ACCOUNT_LOCKED.get();
-
operation.setResultCode(ResultCode.UNWILLING_TO_PERFORM);
- operation.appendErrorMessage(message);
-
+ operation.appendErrorMessage(ERR_EXTOP_PASSMOD_ACCOUNT_LOCKED.get());
return;
}
@@ -601,7 +553,6 @@
.isPasswordChangeRequiresCurrentPassword())
{
operation.setResultCode(ResultCode.UNWILLING_TO_PERFORM);
-
operation.appendErrorMessage(
ERR_EXTOP_PASSMOD_REQUIRE_CURRENT_PW.get());
@@ -622,7 +573,7 @@
{
if (pwPolicyState.getAuthenticationPolicy()
.isRequireSecureAuthentication()
- && (!operation.getClientConnection().isSecure()))
+ && !operation.getClientConnection().isSecure())
{
operation.setResultCode(ResultCode.CONFIDENTIALITY_REQUIRED);
operation.addAdditionalLogItem(AdditionalLogItem.quotedKeyValue(
@@ -659,13 +610,12 @@
// If it is a self password change and we don't allow that, then reject
// the request.
if (selfChange
- && (!pwPolicyState.getAuthenticationPolicy()
- .isAllowUserPasswordChanges()))
+ && !pwPolicyState.getAuthenticationPolicy()
+ .isAllowUserPasswordChanges())
{
if (pwPolicyRequested)
{
- pwPolicyErrorType =
- PasswordPolicyErrorType.PASSWORD_MOD_NOT_ALLOWED;
+ pwPolicyErrorType = PasswordPolicyErrorType.PASSWORD_MOD_NOT_ALLOWED;
operation.addResponseControl(
new PasswordPolicyResponseControl(pwPolicyWarningType,
pwPolicyWarningValue,
@@ -673,7 +623,6 @@
}
operation.setResultCode(ResultCode.UNWILLING_TO_PERFORM);
-
operation.appendErrorMessage(
ERR_EXTOP_PASSMOD_USER_PW_CHANGES_NOT_ALLOWED.get());
return;
@@ -684,10 +633,9 @@
// then reject the request.
if (pwPolicyState.getAuthenticationPolicy()
.isRequireSecurePasswordChanges()
- && (!operation.getClientConnection().isSecure()))
+ && !operation.getClientConnection().isSecure())
{
operation.setResultCode(ResultCode.CONFIDENTIALITY_REQUIRED);
-
operation.appendErrorMessage(
ERR_EXTOP_PASSMOD_SECURE_CHANGES_REQUIRED.get());
return;
@@ -700,8 +648,7 @@
{
if (pwPolicyRequested)
{
- pwPolicyErrorType =
- PasswordPolicyErrorType.PASSWORD_TOO_YOUNG;
+ pwPolicyErrorType = PasswordPolicyErrorType.PASSWORD_TOO_YOUNG;
operation.addResponseControl(
new PasswordPolicyResponseControl(pwPolicyWarningType,
pwPolicyWarningValue,
@@ -709,22 +656,21 @@
}
operation.setResultCode(ResultCode.UNWILLING_TO_PERFORM);
-
operation.appendErrorMessage(ERR_EXTOP_PASSMOD_IN_MIN_AGE.get());
-
return;
}
// If the user's password is expired and it's a self-change request, then
// see if that's OK.
- if ((selfChange && pwPolicyState.isPasswordExpired() && (!pwPolicyState
- .getAuthenticationPolicy().isAllowExpiredPasswordChanges())))
+ if (selfChange
+ && pwPolicyState.isPasswordExpired()
+ && !pwPolicyState.getAuthenticationPolicy()
+ .isAllowExpiredPasswordChanges())
{
if (pwPolicyRequested)
{
- pwPolicyErrorType =
- PasswordPolicyErrorType.PASSWORD_EXPIRED;
+ pwPolicyErrorType = PasswordPolicyErrorType.PASSWORD_EXPIRED;
operation.addResponseControl(
new PasswordPolicyResponseControl(pwPolicyWarningType,
pwPolicyWarningValue,
@@ -732,7 +678,6 @@
}
operation.setResultCode(ResultCode.UNWILLING_TO_PERFORM);
-
operation.appendErrorMessage(
ERR_EXTOP_PASSMOD_PASSWORD_IS_EXPIRED.get());
return;
@@ -752,15 +697,12 @@
if (newPassword == null)
{
operation.setResultCode(ResultCode.UNWILLING_TO_PERFORM);
-
operation.appendErrorMessage(
ERR_EXTOP_PASSMOD_NO_PW_GENERATOR.get());
return;
}
- else
- {
- generatedPassword = true;
- }
+
+ generatedPassword = true;
}
catch (DirectoryException de)
{
@@ -770,7 +712,6 @@
}
operation.setResultCode(de.getResultCode());
-
operation.appendErrorMessage(
ERR_EXTOP_PASSMOD_CANNOT_GENERATE_PW.get(
de.getMessageObject()));
@@ -789,7 +730,6 @@
.isAllowPreEncodedPasswords())
{
operation.setResultCode(ResultCode.CONSTRAINT_VIOLATION);
-
operation.appendErrorMessage(
ERR_EXTOP_PASSMOD_PRE_ENCODED_NOT_ALLOWED.get());
return;
@@ -799,10 +739,10 @@
{
// Run the new password through the set of password validators.
if (selfChange
- || (!pwPolicyState.getAuthenticationPolicy()
- .isSkipValidationForAdministrators()))
+ || !pwPolicyState.getAuthenticationPolicy()
+ .isSkipValidationForAdministrators())
{
- HashSet<ByteString> clearPasswords;
+ Set<ByteString> clearPasswords;
if (oldPassword == null)
{
clearPasswords =
@@ -838,7 +778,6 @@
}
operation.setResultCode(ResultCode.CONSTRAINT_VIOLATION);
-
operation.appendErrorMessage(
ERR_EXTOP_PASSMOD_UNACCEPTABLE_PW.get(
String.valueOf(invalidReason)));
@@ -852,11 +791,11 @@
{
if (pwPolicyState.isPasswordInHistory(newPassword))
{
- if (selfChange || (! pwPolicyState.getAuthenticationPolicy().
- isSkipValidationForAdministrators()))
+ if (selfChange
+ || !pwPolicyState.getAuthenticationPolicy()
+ .isSkipValidationForAdministrators())
{
operation.setResultCode(ResultCode.CONSTRAINT_VIOLATION);
-
operation.appendErrorMessage(
ERR_EXTOP_PASSMOD_PW_IN_HISTORY.get());
return;
@@ -892,7 +831,6 @@
}
operation.setResultCode(de.getResultCode());
-
operation.appendErrorMessage(
ERR_EXTOP_PASSMOD_CANNOT_ENCODE_PASSWORD.get(
de.getMessageObject()));
@@ -1043,152 +981,149 @@
if (noOpRequested)
{
operation.appendErrorMessage(WARN_EXTOP_PASSMOD_NOOP.get());
-
operation.setResultCode(ResultCode.NO_OPERATION);
+ return;
+ }
+
+ if (selfChange && requestorEntry == null)
+ {
+ requestorEntry = userEntry;
+ }
+
+ // Get an internal connection and use it to perform the modification.
+ boolean isRoot = DirectoryServer.isRootDN(requestorEntry.getDN());
+ AuthenticationInfo authInfo = new AuthenticationInfo(requestorEntry,
+ isRoot);
+ InternalClientConnection internalConnection = new
+ InternalClientConnection(authInfo);
+
+ ModifyOperation modifyOperation =
+ internalConnection.processModify(userDN, modList);
+ ResultCode resultCode = modifyOperation.getResultCode();
+ if (resultCode != ResultCode.SUCCESS)
+ {
+ operation.setResultCode(resultCode);
+ operation.setErrorMessage(modifyOperation.getErrorMessage());
+ operation.setReferralURLs(modifyOperation.getReferralURLs());
+ return;
+ }
+
+
+ // If there were any password policy state changes, we need to apply
+ // them using a root connection because the end user may not have
+ // sufficient access to apply them. This is less efficient than
+ // doing them all in the same modification, but it's safer.
+ List<Modification> pwPolicyMods = pwPolicyState.getModifications();
+ if (! pwPolicyMods.isEmpty())
+ {
+ InternalClientConnection rootConnection =
+ InternalClientConnection.getRootConnection();
+ ModifyOperation modOp =
+ rootConnection.processModify(userDN, pwPolicyMods);
+ if (modOp.getResultCode() != ResultCode.SUCCESS)
+ {
+ // At this point, the user's password is already changed so there's
+ // not much point in returning a non-success result. However, we
+ // should at least log that something went wrong.
+ ErrorLogger.logError(WARN_EXTOP_PASSMOD_CANNOT_UPDATE_PWP_STATE.get(
+ String.valueOf(userDN),
+ String.valueOf(modOp.getResultCode()),
+ modOp.getErrorMessage()));
+ }
+ }
+
+
+ // If we've gotten here, then everything is OK, so indicate that the
+ // operation was successful.
+ operation.setResultCode(ResultCode.SUCCESS);
+
+ // Save attachments for post-op plugins (e.g. Samba password plugin).
+ operation.setAttachment(AUTHZ_DN_ATTACHMENT, userDN);
+ operation.setAttachment(PWD_ATTRIBUTE_ATTACHMENT, pwPolicyState
+ .getAuthenticationPolicy().getPasswordAttribute());
+ if (!isPreEncoded)
+ {
+ operation.setAttachment(CLEAR_PWD_ATTACHMENT, newPassword);
+ }
+ operation.setAttachment(ENCODED_PWD_ATTACHMENT, encodedPasswords);
+
+ // If a password was generated, then include it in the response.
+ if (generatedPassword)
+ {
+ ByteStringBuilder builder = new ByteStringBuilder();
+ ASN1Writer writer = ASN1.getWriter(builder);
+
+ try
+ {
+ writer.writeStartSequence();
+ writer.writeOctetString(TYPE_PASSWORD_MODIFY_GENERATED_PASSWORD,
+ newPassword);
+ writer.writeEndSequence();
+ }
+ catch (IOException e)
+ {
+ TRACER.debugCaught(DebugLogLevel.ERROR, e);
+ }
+
+ operation.setResponseValue(builder.toByteString());
+ }
+
+
+ // If this was a self password change, and the client is authenticated
+ // as the user whose password was changed, then clear the "must change
+ // password" flag in the client connection. Note that we're using the
+ // authentication DN rather than the authorization DN in this case to
+ // avoid mistakenly clearing the flag for the wrong user.
+ if (selfChange && (authInfo.getAuthenticationDN() != null) &&
+ (authInfo.getAuthenticationDN().equals(userDN)))
+ {
+ operation.getClientConnection().setMustChangePassword(false);
+ }
+
+
+ // If the password policy control was requested, then add the
+ // appropriate response control.
+ if (pwPolicyRequested)
+ {
+ operation.addResponseControl(
+ new PasswordPolicyResponseControl(pwPolicyWarningType,
+ pwPolicyWarningValue,
+ pwPolicyErrorType));
+ }
+
+ // Handle Account Status Notifications that may be needed.
+ // They are not handled by the backend for internal operations.
+ List<AttributeValue> currentPasswords = null;
+ if (oldPassword != null)
+ {
+ currentPasswords = new ArrayList<AttributeValue>(1);
+ currentPasswords.add(AttributeValues
+ .create(oldPassword, oldPassword));
+ }
+ List<AttributeValue> newPasswords = null;
+ if (newPassword != null)
+ {
+ newPasswords = new ArrayList<AttributeValue>(1);
+ newPasswords.add(AttributeValues
+ .create(newPassword, newPassword));
+ }
+ if (selfChange)
+ {
+ Message message = INFO_MODIFY_PASSWORD_CHANGED.get();
+ pwPolicyState.generateAccountStatusNotification(
+ AccountStatusNotificationType.PASSWORD_CHANGED,
+ userEntry, message,
+ AccountStatusNotification.createProperties(pwPolicyState, false,
+ -1, currentPasswords, newPasswords));
}
else
{
- if (selfChange && (requestorEntry == null))
- {
- requestorEntry = userEntry;
- }
-
- // Get an internal connection and use it to perform the modification.
- boolean isRoot = DirectoryServer.isRootDN(requestorEntry.getDN());
- AuthenticationInfo authInfo = new AuthenticationInfo(requestorEntry,
- isRoot);
- InternalClientConnection internalConnection = new
- InternalClientConnection(authInfo);
-
- ModifyOperation modifyOperation =
- internalConnection.processModify(userDN, modList);
- ResultCode resultCode = modifyOperation.getResultCode();
- if (resultCode != ResultCode.SUCCESS)
- {
- operation.setResultCode(resultCode);
- operation.setErrorMessage(modifyOperation.getErrorMessage());
- operation.setReferralURLs(modifyOperation.getReferralURLs());
- return;
- }
-
-
- // If there were any password policy state changes, we need to apply
- // them using a root connection because the end user may not have
- // sufficient access to apply them. This is less efficient than
- // doing them all in the same modification, but it's safer.
- List<Modification> pwPolicyMods = pwPolicyState.getModifications();
- if (! pwPolicyMods.isEmpty())
- {
- InternalClientConnection rootConnection =
- InternalClientConnection.getRootConnection();
- ModifyOperation modOp =
- rootConnection.processModify(userDN, pwPolicyMods);
- if (modOp.getResultCode() != ResultCode.SUCCESS)
- {
- // At this point, the user's password is already changed so there's
- // not much point in returning a non-success result. However, we
- // should at least log that something went wrong.
- Message message = WARN_EXTOP_PASSMOD_CANNOT_UPDATE_PWP_STATE.get(
- String.valueOf(userDN),
- String.valueOf(modOp.getResultCode()),
- modOp.getErrorMessage());
- ErrorLogger.logError(message);
- }
- }
-
-
- // If we've gotten here, then everything is OK, so indicate that the
- // operation was successful.
- operation.setResultCode(ResultCode.SUCCESS);
-
- // Save attachments for post-op plugins (e.g. Samba password plugin).
- operation.setAttachment(AUTHZ_DN_ATTACHMENT, userDN);
- operation.setAttachment(PWD_ATTRIBUTE_ATTACHMENT, pwPolicyState
- .getAuthenticationPolicy().getPasswordAttribute());
- if (!isPreEncoded)
- {
- operation.setAttachment(CLEAR_PWD_ATTACHMENT, newPassword);
- }
- operation.setAttachment(ENCODED_PWD_ATTACHMENT, encodedPasswords);
-
- // If a password was generated, then include it in the response.
- if (generatedPassword)
- {
- ByteStringBuilder builder = new ByteStringBuilder();
- ASN1Writer writer = ASN1.getWriter(builder);
-
- try
- {
- writer.writeStartSequence();
- writer.writeOctetString(TYPE_PASSWORD_MODIFY_GENERATED_PASSWORD,
- newPassword);
- writer.writeEndSequence();
- }
- catch(Exception e)
- {
- TRACER.debugCaught(DebugLogLevel.ERROR, e);
- }
-
- operation.setResponseValue(builder.toByteString());
- }
-
-
- // If this was a self password change, and the client is authenticated
- // as the user whose password was changed, then clear the "must change
- // password" flag in the client connection. Note that we're using the
- // authentication DN rather than the authorization DN in this case to
- // avoid mistakenly clearing the flag for the wrong user.
- if (selfChange && (authInfo.getAuthenticationDN() != null) &&
- (authInfo.getAuthenticationDN().equals(userDN)))
- {
- operation.getClientConnection().setMustChangePassword(false);
- }
-
-
- // If the password policy control was requested, then add the
- // appropriate response control.
- if (pwPolicyRequested)
- {
- operation.addResponseControl(
- new PasswordPolicyResponseControl(pwPolicyWarningType,
- pwPolicyWarningValue,
- pwPolicyErrorType));
- }
-
- // Handle Account Status Notifications that may be needed.
- // They are not handled by the backend for internal operations.
- List<AttributeValue> currentPasswords = null;
- if (oldPassword != null)
- {
- currentPasswords = new ArrayList<AttributeValue>(1);
- currentPasswords.add(AttributeValues
- .create(oldPassword, oldPassword));
- }
- List<AttributeValue> newPasswords = null;
- if (newPassword != null)
- {
- newPasswords = new ArrayList<AttributeValue>(1);
- newPasswords.add(AttributeValues
- .create(newPassword, newPassword));
- }
- if (selfChange)
- {
- Message message = INFO_MODIFY_PASSWORD_CHANGED.get();
- pwPolicyState.generateAccountStatusNotification(
- AccountStatusNotificationType.PASSWORD_CHANGED,
- userEntry, message,
- AccountStatusNotification.createProperties(pwPolicyState, false,
- -1, currentPasswords, newPasswords));
- }
- else
- {
- Message message = INFO_MODIFY_PASSWORD_RESET.get();
- pwPolicyState.generateAccountStatusNotification(
- AccountStatusNotificationType.PASSWORD_RESET,
- userEntry, message,
- AccountStatusNotification.createProperties(pwPolicyState, false,
- -1, currentPasswords, newPasswords));
- }
+ Message message = INFO_MODIFY_PASSWORD_RESET.get();
+ pwPolicyState.generateAccountStatusNotification(
+ AccountStatusNotificationType.PASSWORD_RESET,
+ userEntry, message,
+ AccountStatusNotification.createProperties(pwPolicyState, false,
+ -1, currentPasswords, newPasswords));
}
}
finally
@@ -1258,7 +1193,6 @@
operation.appendErrorMessage(de.getMessageObject());
operation.setMatchedDN(de.getMatchedDN());
operation.setReferralURLs(de.getReferralURLs());
-
return null;
}
}
@@ -1428,15 +1362,17 @@
return new ConfigChangeResult(resultCode, adminActionRequired, messages);
}
+ /** {@inheritDoc} */
+ @Override
+ public String getExtendedOperationOID()
+ {
+ return OID_PASSWORD_MODIFY_REQUEST;
+ }
-
- /**
- * {@inheritDoc}
- */
+ /** {@inheritDoc} */
@Override
public String getExtendedOperationName()
{
return "Password Modify";
}
}
-
--
Gitblit v1.10.0