use of com.unboundid.ldap.sdk.unboundidds.controls.PasswordUpdateBehaviorRequestControl in project ldapsdk by pingidentity.
the class ParallelUpdate method getOperationControls.
/**
* Updates the provided lists with the appropriate controls to include in
* each type of request.
*
* @param addControls The list that should be updated with controls to
* include in add requests. It must not be
* {@code null} and must be updatable.
* @param deleteControls The list that should be updated with controls to
* include in delete requests. It must not be
* {@code null} and must be updatable.
* @param modifyControls The list that should be updated with controls to
* include in modify requests. It must not be
* {@code null} and must be updatable.
* @param modifyDNControls The list that should be updated with controls to
* include in modify DN requests. It must not be
* {@code null} and must be updatable.
*
* @throws LDAPException If a problem is encountered while creating any of
* the controls.
*/
private void getOperationControls(@NotNull final List<Control> addControls, @NotNull final List<Control> deleteControls, @NotNull final List<Control> modifyControls, @NotNull final List<Control> modifyDNControls) throws LDAPException {
if (addControlArg.isPresent()) {
addControls.addAll(addControlArg.getValues());
}
if (deleteControlArg.isPresent()) {
deleteControls.addAll(deleteControlArg.getValues());
}
if (modifyControlArg.isPresent()) {
modifyControls.addAll(modifyControlArg.getValues());
}
if (modifyDNControlArg.isPresent()) {
modifyDNControls.addAll(modifyDNControlArg.getValues());
}
if (proxyAsArg.isPresent()) {
final ProxiedAuthorizationV2RequestControl c = new ProxiedAuthorizationV2RequestControl(proxyAsArg.getValue());
addControls.add(c);
deleteControls.add(c);
modifyControls.add(c);
modifyDNControls.add(c);
} else if (proxyV1AsArg.isPresent()) {
final ProxiedAuthorizationV1RequestControl c = new ProxiedAuthorizationV1RequestControl(proxyV1AsArg.getValue());
addControls.add(c);
deleteControls.add(c);
modifyControls.add(c);
modifyDNControls.add(c);
}
if (usePermissiveModifyArg.isPresent()) {
modifyControls.add(new PermissiveModifyRequestControl(true));
}
if (ignoreNoUserModificationArg.isPresent()) {
final IgnoreNoUserModificationRequestControl c = new IgnoreNoUserModificationRequestControl();
addControls.add(c);
modifyControls.add(c);
}
if (useManageDsaITArg.isPresent()) {
final ManageDsaITRequestControl c = new ManageDsaITRequestControl(true);
addControls.add(c);
deleteControls.add(c);
modifyControls.add(c);
modifyDNControls.add(c);
}
if (nameWithEntryUUIDArg.isPresent()) {
addControls.add(new NameWithEntryUUIDRequestControl(true));
}
if (softDeleteArg.isPresent()) {
deleteControls.add(new SoftDeleteRequestControl(true, true));
} else if (hardDeleteArg.isPresent()) {
deleteControls.add(new HardDeleteRequestControl(true));
}
if (operationPurposeArg.isPresent()) {
final OperationPurposeRequestControl c = new OperationPurposeRequestControl(false, "parallel-update", Version.NUMERIC_VERSION_STRING, ParallelUpdate.class.getName() + ".getOperationControls", operationPurposeArg.getValue());
addControls.add(c);
deleteControls.add(c);
modifyControls.add(c);
modifyDNControls.add(c);
}
if (replicationRepairArg.isPresent()) {
final ReplicationRepairRequestControl c = new ReplicationRepairRequestControl();
addControls.add(c);
deleteControls.add(c);
modifyControls.add(c);
modifyDNControls.add(c);
}
if (suppressReferentialIntegrityUpdatesArg.isPresent()) {
final SuppressReferentialIntegrityUpdatesRequestControl c = new SuppressReferentialIntegrityUpdatesRequestControl(true);
deleteControls.add(c);
modifyDNControls.add(c);
}
if (useAssuredReplicationArg.isPresent()) {
final AssuredReplicationLocalLevel localLevel;
if (assuredReplicationLocalLevelArg.isPresent()) {
final String localLevelStr = StaticUtils.toLowerCase(assuredReplicationLocalLevelArg.getValue());
switch(localLevelStr) {
case ASSURED_REPLICATION_LOCAL_LEVEL_NONE:
localLevel = AssuredReplicationLocalLevel.NONE;
break;
case ASSURED_REPLICATION_LOCAL_LEVEL_RECEIVED_ANY_SERVER:
localLevel = AssuredReplicationLocalLevel.RECEIVED_ANY_SERVER;
break;
case ASSURED_REPLICATION_LOCAL_LEVEL_PROCESSED_ALL_SERVERS:
localLevel = AssuredReplicationLocalLevel.PROCESSED_ALL_SERVERS;
break;
default:
// This should never happen.
localLevel = null;
break;
}
} else {
localLevel = null;
}
final AssuredReplicationRemoteLevel remoteLevel;
if (assuredReplicationRemoteLevelArg.isPresent()) {
final String remoteLevelStr = StaticUtils.toLowerCase(assuredReplicationRemoteLevelArg.getValue());
switch(remoteLevelStr) {
case ASSURED_REPLICATION_REMOTE_LEVEL_NONE:
remoteLevel = AssuredReplicationRemoteLevel.NONE;
break;
case ASSURED_REPLICATION_REMOTE_LEVEL_RECEIVED_ANY_REMOTE_LOCATION:
remoteLevel = AssuredReplicationRemoteLevel.RECEIVED_ANY_REMOTE_LOCATION;
break;
case ASSURED_REPLICATION_REMOTE_LEVEL_RECEIVED_ALL_REMOTE_LOCATIONS:
remoteLevel = AssuredReplicationRemoteLevel.RECEIVED_ALL_REMOTE_LOCATIONS;
break;
case ASSURED_REPLICATION_REMOTE_LEVEL_PROCESSED_ALL_REMOTE_SERVERS:
remoteLevel = AssuredReplicationRemoteLevel.PROCESSED_ALL_REMOTE_SERVERS;
break;
default:
// This should never happen.
remoteLevel = null;
break;
}
} else {
remoteLevel = null;
}
final Long timeoutMillis;
if (assuredReplicationTimeoutArg.isPresent()) {
timeoutMillis = assuredReplicationTimeoutArg.getValue(TimeUnit.MILLISECONDS);
} else {
timeoutMillis = null;
}
final AssuredReplicationRequestControl c = new AssuredReplicationRequestControl(true, localLevel, null, remoteLevel, null, timeoutMillis, false);
addControls.add(c);
deleteControls.add(c);
modifyControls.add(c);
modifyDNControls.add(c);
}
if (passwordUpdateBehaviorArg.isPresent()) {
final PasswordUpdateBehaviorRequestControlProperties properties = new PasswordUpdateBehaviorRequestControlProperties();
for (final String argValue : passwordUpdateBehaviorArg.getValues()) {
final int equalPos = argValue.indexOf('=');
if (equalPos < 0) {
throw new LDAPException(ResultCode.PARAM_ERROR, ERR_PARALLEL_UPDATE_MALFORMED_PW_UPDATE_VALUE.get(argValue, passwordUpdateBehaviorArg.getIdentifierString()));
}
final String propertyName = argValue.substring(0, equalPos).trim();
final String lowerName = StaticUtils.toLowerCase(propertyName);
switch(lowerName) {
case PW_UPDATE_BEHAVIOR_NAME_IS_SELF_CHANGE:
properties.setIsSelfChange(getBooleanPWUpdateBehaviorValue(argValue));
break;
case PW_UPDATE_BEHAVIOR_NAME_ALLOW_PRE_ENCODED_PW:
properties.setAllowPreEncodedPassword(getBooleanPWUpdateBehaviorValue(argValue));
break;
case PW_UPDATE_BEHAVIOR_NAME_SKIP_PW_VALIDATION:
properties.setSkipPasswordValidation(getBooleanPWUpdateBehaviorValue(argValue));
break;
case PW_UPDATE_BEHAVIOR_NAME_IGNORE_PW_HISTORY:
properties.setIgnorePasswordHistory(getBooleanPWUpdateBehaviorValue(argValue));
break;
case PW_UPDATE_BEHAVIOR_NAME_IGNORE_MIN_PW_AGE:
properties.setIgnoreMinimumPasswordAge(getBooleanPWUpdateBehaviorValue(argValue));
break;
case PW_UPDATE_BEHAVIOR_NAME_MUST_CHANGE_PW:
properties.setMustChangePassword(getBooleanPWUpdateBehaviorValue(argValue));
break;
case PW_UPDATE_BEHAVIOR_NAME_PW_STORAGE_SCHEME:
final String propertyValue = argValue.substring(equalPos + 1).trim();
properties.setPasswordStorageScheme(propertyValue);
break;
default:
throw new LDAPException(ResultCode.PARAM_ERROR, ERR_PARALLEL_UPDATE_UNKNOWN_PW_UPDATE_PROP.get(argValue, passwordUpdateBehaviorArg.getIdentifierString(), PW_UPDATE_BEHAVIOR_NAME_IS_SELF_CHANGE, PW_UPDATE_BEHAVIOR_NAME_ALLOW_PRE_ENCODED_PW, PW_UPDATE_BEHAVIOR_NAME_SKIP_PW_VALIDATION, PW_UPDATE_BEHAVIOR_NAME_IGNORE_PW_HISTORY, PW_UPDATE_BEHAVIOR_NAME_IGNORE_MIN_PW_AGE, PW_UPDATE_BEHAVIOR_NAME_PW_STORAGE_SCHEME, PW_UPDATE_BEHAVIOR_NAME_MUST_CHANGE_PW));
}
}
final PasswordUpdateBehaviorRequestControl c = new PasswordUpdateBehaviorRequestControl(properties, true);
addControls.add(c);
modifyControls.add(c);
}
if (suppressOperationalAttributeUpdatesArg.isPresent()) {
final EnumSet<SuppressType> suppressTypes = EnumSet.noneOf(SuppressType.class);
for (final String s : suppressOperationalAttributeUpdatesArg.getValues()) {
if (s.equalsIgnoreCase(SUPPRESS_OP_ATTR_LAST_ACCESS_TIME)) {
suppressTypes.add(SuppressType.LAST_ACCESS_TIME);
} else if (s.equalsIgnoreCase(SUPPRESS_OP_ATTR_LAST_LOGIN_TIME)) {
suppressTypes.add(SuppressType.LAST_LOGIN_TIME);
} else if (s.equalsIgnoreCase(SUPPRESS_OP_ATTR_LAST_LOGIN_IP)) {
suppressTypes.add(SuppressType.LAST_LOGIN_IP);
}
}
final SuppressOperationalAttributeUpdateRequestControl c = new SuppressOperationalAttributeUpdateRequestControl(true, suppressTypes);
addControls.add(c);
deleteControls.add(c);
modifyControls.add(c);
modifyDNControls.add(c);
}
}
use of com.unboundid.ldap.sdk.unboundidds.controls.PasswordUpdateBehaviorRequestControl in project ldapsdk by pingidentity.
the class LDAPModifyTestCase method testPasswordUpdateBehavior.
/**
* Provides test coverage for the ability to request the password update
* behavior request control.
*
* @throws Exception If an unexpected problem occurs.
*/
@Test()
public void testPasswordUpdateBehavior() throws Exception {
for (final String value : Arrays.asList("is-self-change", "self-change", "isSelfChange", "selfChange")) {
final String trueValueEquals = value + "=true";
PasswordUpdateBehaviorRequestControl c = LDAPModify.createPasswordUpdateBehaviorRequestControl("--passwordUpdateBehavior", Collections.singletonList(trueValueEquals));
assertNotNull(c);
assertNotNull(c.getIsSelfChange());
assertEquals(c.getIsSelfChange(), Boolean.TRUE);
assertNull(c.getAllowPreEncodedPassword());
assertNull(c.getSkipPasswordValidation());
assertNull(c.getIgnorePasswordHistory());
assertNull(c.getIgnoreMinimumPasswordAge());
assertNull(c.getPasswordStorageScheme());
assertNull(c.getMustChangePassword());
final String trueValueColon = " " + value + " : true ";
c = LDAPModify.createPasswordUpdateBehaviorRequestControl("--passwordUpdateBehavior", Collections.singletonList(trueValueColon));
assertNotNull(c);
assertNotNull(c.getIsSelfChange());
assertEquals(c.getIsSelfChange(), Boolean.TRUE);
assertNull(c.getAllowPreEncodedPassword());
assertNull(c.getSkipPasswordValidation());
assertNull(c.getIgnorePasswordHistory());
assertNull(c.getIgnoreMinimumPasswordAge());
assertNull(c.getPasswordStorageScheme());
assertNull(c.getMustChangePassword());
final String falseValueColon = value + ":false";
c = LDAPModify.createPasswordUpdateBehaviorRequestControl("--passwordUpdateBehavior", Collections.singletonList(falseValueColon));
assertNotNull(c);
assertNotNull(c.getIsSelfChange());
assertEquals(c.getIsSelfChange(), Boolean.FALSE);
assertNull(c.getAllowPreEncodedPassword());
assertNull(c.getSkipPasswordValidation());
assertNull(c.getIgnorePasswordHistory());
assertNull(c.getIgnoreMinimumPasswordAge());
assertNull(c.getPasswordStorageScheme());
assertNull(c.getMustChangePassword());
}
for (final String value : Arrays.asList("allow-pre-encoded-password", "allow-pre-encoded-passwords", "allow-pre-encoded", "allowPreEncodedPassword", "allowPreEncodedPasswords", "allowPreEncoded")) {
final String trueValue = value + "=t";
PasswordUpdateBehaviorRequestControl c = LDAPModify.createPasswordUpdateBehaviorRequestControl("--passwordUpdateBehavior", Collections.singletonList(trueValue));
assertNotNull(c);
assertNull(c.getIsSelfChange());
assertNotNull(c.getAllowPreEncodedPassword());
assertEquals(c.getAllowPreEncodedPassword(), Boolean.TRUE);
assertNull(c.getSkipPasswordValidation());
assertNull(c.getIgnorePasswordHistory());
assertNull(c.getIgnoreMinimumPasswordAge());
assertNull(c.getPasswordStorageScheme());
assertNull(c.getMustChangePassword());
final String falseValue = value + "=f";
c = LDAPModify.createPasswordUpdateBehaviorRequestControl("--passwordUpdateBehavior", Collections.singletonList(falseValue));
assertNotNull(c);
assertNull(c.getIsSelfChange());
assertNotNull(c.getAllowPreEncodedPassword());
assertEquals(c.getAllowPreEncodedPassword(), Boolean.FALSE);
assertNull(c.getSkipPasswordValidation());
assertNull(c.getIgnorePasswordHistory());
assertNull(c.getIgnoreMinimumPasswordAge());
assertNull(c.getPasswordStorageScheme());
assertNull(c.getMustChangePassword());
}
for (final String value : Arrays.asList("skip-password-validation", "skip-password-validators", "skip-validation", "skip-validators", "skipPasswordValidation", "skipPasswordValidators", "skipValidation", "skipValidators")) {
final String trueValue = value + "=yes";
PasswordUpdateBehaviorRequestControl c = LDAPModify.createPasswordUpdateBehaviorRequestControl("--passwordUpdateBehavior", Collections.singletonList(trueValue));
assertNotNull(c);
assertNull(c.getIsSelfChange());
assertNull(c.getAllowPreEncodedPassword());
assertNotNull(c.getSkipPasswordValidation());
assertEquals(c.getSkipPasswordValidation(), Boolean.TRUE);
assertNull(c.getIgnorePasswordHistory());
assertNull(c.getIgnoreMinimumPasswordAge());
assertNull(c.getPasswordStorageScheme());
assertNull(c.getMustChangePassword());
final String falseValue = value + "=no";
c = LDAPModify.createPasswordUpdateBehaviorRequestControl("--passwordUpdateBehavior", Collections.singletonList(falseValue));
assertNotNull(c);
assertNull(c.getIsSelfChange());
assertNull(c.getAllowPreEncodedPassword());
assertNotNull(c.getSkipPasswordValidation());
assertEquals(c.getSkipPasswordValidation(), Boolean.FALSE);
assertNull(c.getIgnorePasswordHistory());
assertNull(c.getIgnoreMinimumPasswordAge());
assertNull(c.getPasswordStorageScheme());
assertNull(c.getMustChangePassword());
}
for (final String value : Arrays.asList("ignore-password-history", "skip-password-history", "ignore-history", "skip-history", "ignorePasswordHistory", "skipPasswordHistory", "ignoreHistory", "skipHistory")) {
final String trueValue = value + "=y";
PasswordUpdateBehaviorRequestControl c = LDAPModify.createPasswordUpdateBehaviorRequestControl("--passwordUpdateBehavior", Collections.singletonList(trueValue));
assertNotNull(c);
assertNull(c.getIsSelfChange());
assertNull(c.getAllowPreEncodedPassword());
assertNull(c.getSkipPasswordValidation());
assertNotNull(c.getIgnorePasswordHistory());
assertEquals(c.getIgnorePasswordHistory(), Boolean.TRUE);
assertNull(c.getIgnoreMinimumPasswordAge());
assertNull(c.getPasswordStorageScheme());
assertNull(c.getMustChangePassword());
final String falseValue = value + "=n";
c = LDAPModify.createPasswordUpdateBehaviorRequestControl("--passwordUpdateBehavior", Collections.singletonList(falseValue));
assertNotNull(c);
assertNull(c.getIsSelfChange());
assertNull(c.getAllowPreEncodedPassword());
assertNull(c.getSkipPasswordValidation());
assertNotNull(c.getIgnorePasswordHistory());
assertEquals(c.getIgnorePasswordHistory(), Boolean.FALSE);
assertNull(c.getIgnoreMinimumPasswordAge());
assertNull(c.getPasswordStorageScheme());
assertNull(c.getMustChangePassword());
}
for (final String value : Arrays.asList("ignore-minimum-password-age", "ignore-min-password-age", "ignore-password-age", "skip-minimum-password-age", "skip-min-password-age", "skip-password-age", "ignoreMinimumPasswordAge", "ignoreMinPasswordAge", "ignorePasswordAge", "skipMinimumPasswordAge", "skipMinPasswordAge", "skipPasswordAge")) {
final String trueValue = value + "=1";
PasswordUpdateBehaviorRequestControl c = LDAPModify.createPasswordUpdateBehaviorRequestControl("--passwordUpdateBehavior", Collections.singletonList(trueValue));
assertNotNull(c);
assertNull(c.getIsSelfChange());
assertNull(c.getAllowPreEncodedPassword());
assertNull(c.getSkipPasswordValidation());
assertNull(c.getIgnorePasswordHistory());
assertNotNull(c.getIgnoreMinimumPasswordAge());
assertEquals(c.getIgnoreMinimumPasswordAge(), Boolean.TRUE);
assertNull(c.getPasswordStorageScheme());
assertNull(c.getMustChangePassword());
final String falseValue = value + "=0";
c = LDAPModify.createPasswordUpdateBehaviorRequestControl("--passwordUpdateBehavior", Collections.singletonList(falseValue));
assertNotNull(c);
assertNull(c.getIsSelfChange());
assertNull(c.getAllowPreEncodedPassword());
assertNull(c.getSkipPasswordValidation());
assertNull(c.getIgnorePasswordHistory());
assertNotNull(c.getIgnoreMinimumPasswordAge());
assertEquals(c.getIgnoreMinimumPasswordAge(), Boolean.FALSE);
assertNull(c.getPasswordStorageScheme());
assertNull(c.getMustChangePassword());
}
for (final String value : Arrays.asList("password-storage-scheme", "password-scheme", "storage-scheme", "scheme", "passwordStorageScheme", "passwordScheme", "storageScheme")) {
final String ssha512Value = value + "=SSHA512";
final PasswordUpdateBehaviorRequestControl c = LDAPModify.createPasswordUpdateBehaviorRequestControl("--passwordUpdateBehavior", Collections.singletonList(ssha512Value));
assertNotNull(c);
assertNull(c.getIsSelfChange());
assertNull(c.getAllowPreEncodedPassword());
assertNull(c.getSkipPasswordValidation());
assertNull(c.getIgnorePasswordHistory());
assertNull(c.getIgnoreMinimumPasswordAge());
assertNotNull(c.getPasswordStorageScheme());
assertEquals(c.getPasswordStorageScheme(), "SSHA512");
assertNull(c.getMustChangePassword());
}
for (final String value : Arrays.asList("must-change-password", "mustChangePassword")) {
final String trueValue = value + "=true";
PasswordUpdateBehaviorRequestControl c = LDAPModify.createPasswordUpdateBehaviorRequestControl("--passwordUpdateBehavior", Collections.singletonList(trueValue));
assertNotNull(c);
assertNull(c.getIsSelfChange());
assertNull(c.getAllowPreEncodedPassword());
assertNull(c.getSkipPasswordValidation());
assertNull(c.getIgnorePasswordHistory());
assertNull(c.getIgnoreMinimumPasswordAge());
assertNull(c.getPasswordStorageScheme());
assertNotNull(c.getMustChangePassword());
assertEquals(c.getMustChangePassword(), Boolean.TRUE);
final String falseValue = value + "=false";
c = LDAPModify.createPasswordUpdateBehaviorRequestControl("--passwordUpdateBehavior", Collections.singletonList(falseValue));
assertNotNull(c);
assertNull(c.getIsSelfChange());
assertNull(c.getAllowPreEncodedPassword());
assertNull(c.getSkipPasswordValidation());
assertNull(c.getIgnorePasswordHistory());
assertNull(c.getIgnoreMinimumPasswordAge());
assertNull(c.getPasswordStorageScheme());
assertNotNull(c.getMustChangePassword());
assertEquals(c.getMustChangePassword(), Boolean.FALSE);
}
try {
LDAPModify.createPasswordUpdateBehaviorRequestControl("--passwordUpdateBehavior", Collections.singletonList("malformed-value"));
fail("Expected an exception from a malformed value");
} catch (final LDAPException le) {
// This was expected.
assertResultCodeEquals(le, ResultCode.PARAM_ERROR);
}
try {
LDAPModify.createPasswordUpdateBehaviorRequestControl("--passwordUpdateBehavior", Collections.singletonList("equal-at-end="));
fail("Expected an exception from value ending with an equal sign");
} catch (final LDAPException le) {
// This was expected.
assertResultCodeEquals(le, ResultCode.PARAM_ERROR);
}
try {
LDAPModify.createPasswordUpdateBehaviorRequestControl("--passwordUpdateBehavior", Collections.singletonList("colon-at-end:"));
fail("Expected an exception from value ending with a colon");
} catch (final LDAPException le) {
// This was expected.
assertResultCodeEquals(le, ResultCode.PARAM_ERROR);
}
try {
LDAPModify.createPasswordUpdateBehaviorRequestControl("--passwordUpdateBehavior", Collections.singletonList("=true"));
fail("Expected an exception from value beginning with an equal sign");
} catch (final LDAPException le) {
// This was expected.
assertResultCodeEquals(le, ResultCode.PARAM_ERROR);
}
try {
LDAPModify.createPasswordUpdateBehaviorRequestControl("--passwordUpdateBehavior", Collections.singletonList(":false"));
fail("Expected an exception from value beginning with a colon");
} catch (final LDAPException le) {
// This was expected.
assertResultCodeEquals(le, ResultCode.PARAM_ERROR);
}
try {
LDAPModify.createPasswordUpdateBehaviorRequestControl("--passwordUpdateBehavior", Collections.singletonList("must-change-password=malformed"));
fail("Expected an exception from a malformed Boolean value");
} catch (final LDAPException le) {
// This was expected.
assertResultCodeEquals(le, ResultCode.PARAM_ERROR);
}
}
use of com.unboundid.ldap.sdk.unboundidds.controls.PasswordUpdateBehaviorRequestControl in project ldapsdk by pingidentity.
the class LDAPModify method createRequestControls.
/**
* Populates lists of request controls that should be included in requests
* of various types.
*
* @param addControls The list of controls to include in add requests.
* @param deleteControls The list of controls to include in delete
* requests.
* @param modifyControls The list of controls to include in modify
* requests.
* @param modifyDNControls The list of controls to include in modify DN
* requests.
* @param searchControls The list of controls to include in search
* requests.
*
* @throws LDAPException If a problem is encountered while creating any of
* the requested controls.
*/
private void createRequestControls(@NotNull final List<Control> addControls, @NotNull final List<Control> deleteControls, @NotNull final List<Control> modifyControls, @NotNull final List<Control> modifyDNControls, @NotNull final List<Control> searchControls) throws LDAPException {
if (addControl.isPresent()) {
addControls.addAll(addControl.getValues());
}
if (deleteControl.isPresent()) {
deleteControls.addAll(deleteControl.getValues());
}
if (modifyControl.isPresent()) {
modifyControls.addAll(modifyControl.getValues());
}
if (modifyDNControl.isPresent()) {
modifyDNControls.addAll(modifyDNControl.getValues());
}
if (operationControl.isPresent()) {
addControls.addAll(operationControl.getValues());
deleteControls.addAll(operationControl.getValues());
modifyControls.addAll(operationControl.getValues());
modifyDNControls.addAll(operationControl.getValues());
}
addControls.addAll(routeToBackendSetRequestControls);
deleteControls.addAll(routeToBackendSetRequestControls);
modifyControls.addAll(routeToBackendSetRequestControls);
modifyDNControls.addAll(routeToBackendSetRequestControls);
if (noOperation.isPresent()) {
final NoOpRequestControl c = new NoOpRequestControl();
addControls.add(c);
deleteControls.add(c);
modifyControls.add(c);
modifyDNControls.add(c);
}
if (generatePassword.isPresent()) {
addControls.add(new GeneratePasswordRequestControl());
}
if (getBackendSetID.isPresent()) {
final GetBackendSetIDRequestControl c = new GetBackendSetIDRequestControl(false);
addControls.add(c);
deleteControls.add(c);
modifyControls.add(c);
modifyDNControls.add(c);
}
if (getServerID.isPresent()) {
final GetServerIDRequestControl c = new GetServerIDRequestControl(false);
addControls.add(c);
deleteControls.add(c);
modifyControls.add(c);
modifyDNControls.add(c);
}
if (ignoreNoUserModification.isPresent()) {
addControls.add(new IgnoreNoUserModificationRequestControl(false));
modifyControls.add(new IgnoreNoUserModificationRequestControl(false));
}
if (nameWithEntryUUID.isPresent()) {
addControls.add(new NameWithEntryUUIDRequestControl(true));
}
if (permissiveModify.isPresent()) {
modifyControls.add(new PermissiveModifyRequestControl(false));
}
if (routeToServer.isPresent()) {
final RouteToServerRequestControl c = new RouteToServerRequestControl(false, routeToServer.getValue(), false, false, false);
addControls.add(c);
deleteControls.add(c);
modifyControls.add(c);
modifyDNControls.add(c);
}
if (suppressReferentialIntegrityUpdates.isPresent()) {
final SuppressReferentialIntegrityUpdatesRequestControl c = new SuppressReferentialIntegrityUpdatesRequestControl(true);
deleteControls.add(c);
modifyDNControls.add(c);
}
if (suppressOperationalAttributeUpdates.isPresent()) {
final EnumSet<SuppressType> suppressTypes = EnumSet.noneOf(SuppressType.class);
for (final String s : suppressOperationalAttributeUpdates.getValues()) {
if (s.equalsIgnoreCase("last-access-time")) {
suppressTypes.add(SuppressType.LAST_ACCESS_TIME);
} else if (s.equalsIgnoreCase("last-login-time")) {
suppressTypes.add(SuppressType.LAST_LOGIN_TIME);
} else if (s.equalsIgnoreCase("last-login-ip")) {
suppressTypes.add(SuppressType.LAST_LOGIN_IP);
} else if (s.equalsIgnoreCase("lastmod")) {
suppressTypes.add(SuppressType.LASTMOD);
}
}
final SuppressOperationalAttributeUpdateRequestControl c = new SuppressOperationalAttributeUpdateRequestControl(suppressTypes);
addControls.add(c);
deleteControls.add(c);
modifyControls.add(c);
modifyDNControls.add(c);
}
if (usePasswordPolicyControl.isPresent()) {
final PasswordPolicyRequestControl c = new PasswordPolicyRequestControl();
addControls.add(c);
modifyControls.add(c);
}
if (assuredReplication.isPresent()) {
AssuredReplicationLocalLevel localLevel = null;
if (assuredReplicationLocalLevel.isPresent()) {
final String level = assuredReplicationLocalLevel.getValue();
if (level.equalsIgnoreCase("none")) {
localLevel = AssuredReplicationLocalLevel.NONE;
} else if (level.equalsIgnoreCase("received-any-server")) {
localLevel = AssuredReplicationLocalLevel.RECEIVED_ANY_SERVER;
} else if (level.equalsIgnoreCase("processed-all-servers")) {
localLevel = AssuredReplicationLocalLevel.PROCESSED_ALL_SERVERS;
}
}
AssuredReplicationRemoteLevel remoteLevel = null;
if (assuredReplicationRemoteLevel.isPresent()) {
final String level = assuredReplicationRemoteLevel.getValue();
if (level.equalsIgnoreCase("none")) {
remoteLevel = AssuredReplicationRemoteLevel.NONE;
} else if (level.equalsIgnoreCase("received-any-remote-location")) {
remoteLevel = AssuredReplicationRemoteLevel.RECEIVED_ANY_REMOTE_LOCATION;
} else if (level.equalsIgnoreCase("received-all-remote-locations")) {
remoteLevel = AssuredReplicationRemoteLevel.RECEIVED_ALL_REMOTE_LOCATIONS;
} else if (level.equalsIgnoreCase("processed-all-remote-servers")) {
remoteLevel = AssuredReplicationRemoteLevel.PROCESSED_ALL_REMOTE_SERVERS;
}
}
Long timeoutMillis = null;
if (assuredReplicationTimeout.isPresent()) {
timeoutMillis = assuredReplicationTimeout.getValue(TimeUnit.MILLISECONDS);
}
final AssuredReplicationRequestControl c = new AssuredReplicationRequestControl(true, localLevel, localLevel, remoteLevel, remoteLevel, timeoutMillis, false);
addControls.add(c);
deleteControls.add(c);
modifyControls.add(c);
modifyDNControls.add(c);
}
if (hardDelete.isPresent() && (!clientSideSubtreeDelete.isPresent())) {
deleteControls.add(new HardDeleteRequestControl(true));
}
if (replicationRepair.isPresent()) {
final ReplicationRepairRequestControl c = new ReplicationRepairRequestControl();
addControls.add(c);
deleteControls.add(c);
modifyControls.add(c);
modifyDNControls.add(c);
}
if (softDelete.isPresent()) {
deleteControls.add(new SoftDeleteRequestControl(true, true));
}
if (serverSideSubtreeDelete.isPresent()) {
deleteControls.add(new SubtreeDeleteRequestControl());
}
if (assertionFilter.isPresent()) {
final AssertionRequestControl c = new AssertionRequestControl(assertionFilter.getValue(), true);
addControls.add(c);
deleteControls.add(c);
modifyControls.add(c);
modifyDNControls.add(c);
}
if (operationPurpose.isPresent()) {
final OperationPurposeRequestControl c = new OperationPurposeRequestControl(false, "ldapmodify", Version.NUMERIC_VERSION_STRING, LDAPModify.class.getName() + ".createRequestControls", operationPurpose.getValue());
addControls.add(c);
deleteControls.add(c);
modifyControls.add(c);
modifyDNControls.add(c);
}
if (manageDsaIT.isPresent()) {
final ManageDsaITRequestControl c = new ManageDsaITRequestControl(true);
addControls.add(c);
if (!clientSideSubtreeDelete.isPresent()) {
deleteControls.add(c);
}
modifyControls.add(c);
modifyDNControls.add(c);
}
if (passwordUpdateBehavior.isPresent()) {
final PasswordUpdateBehaviorRequestControl c = createPasswordUpdateBehaviorRequestControl(passwordUpdateBehavior.getIdentifierString(), passwordUpdateBehavior.getValues());
addControls.add(c);
modifyControls.add(c);
}
if (preReadAttribute.isPresent()) {
final ArrayList<String> attrList = new ArrayList<>(10);
for (final String value : preReadAttribute.getValues()) {
final StringTokenizer tokenizer = new StringTokenizer(value, ", ");
while (tokenizer.hasMoreTokens()) {
attrList.add(tokenizer.nextToken());
}
}
final String[] attrArray = attrList.toArray(StaticUtils.NO_STRINGS);
final PreReadRequestControl c = new PreReadRequestControl(attrArray);
deleteControls.add(c);
modifyControls.add(c);
modifyDNControls.add(c);
}
if (postReadAttribute.isPresent()) {
final ArrayList<String> attrList = new ArrayList<>(10);
for (final String value : postReadAttribute.getValues()) {
final StringTokenizer tokenizer = new StringTokenizer(value, ", ");
while (tokenizer.hasMoreTokens()) {
attrList.add(tokenizer.nextToken());
}
}
final String[] attrArray = attrList.toArray(StaticUtils.NO_STRINGS);
final PostReadRequestControl c = new PostReadRequestControl(attrArray);
addControls.add(c);
modifyControls.add(c);
modifyDNControls.add(c);
}
if (proxyAs.isPresent() && (!useTransaction.isPresent()) && (!multiUpdateErrorBehavior.isPresent())) {
final ProxiedAuthorizationV2RequestControl c = new ProxiedAuthorizationV2RequestControl(proxyAs.getValue());
addControls.add(c);
deleteControls.add(c);
modifyControls.add(c);
modifyDNControls.add(c);
searchControls.add(c);
}
if (proxyV1As.isPresent() && (!useTransaction.isPresent()) && (!multiUpdateErrorBehavior.isPresent())) {
final ProxiedAuthorizationV1RequestControl c = new ProxiedAuthorizationV1RequestControl(proxyV1As.getValue());
addControls.add(c);
deleteControls.add(c);
modifyControls.add(c);
modifyDNControls.add(c);
searchControls.add(c);
}
if (uniquenessAttribute.isPresent() || uniquenessFilter.isPresent()) {
final UniquenessRequestControlProperties uniquenessProperties;
if (uniquenessAttribute.isPresent()) {
uniquenessProperties = new UniquenessRequestControlProperties(uniquenessAttribute.getValues());
if (uniquenessFilter.isPresent()) {
uniquenessProperties.setFilter(uniquenessFilter.getValue());
}
} else {
uniquenessProperties = new UniquenessRequestControlProperties(uniquenessFilter.getValue());
}
if (uniquenessBaseDN.isPresent()) {
uniquenessProperties.setBaseDN(uniquenessBaseDN.getStringValue());
}
if (uniquenessMultipleAttributeBehavior.isPresent()) {
final String value = uniquenessMultipleAttributeBehavior.getValue().toLowerCase();
switch(value) {
case "unique-within-each-attribute":
uniquenessProperties.setMultipleAttributeBehavior(UniquenessMultipleAttributeBehavior.UNIQUE_WITHIN_EACH_ATTRIBUTE);
break;
case "unique-across-all-attributes-including-in-same-entry":
uniquenessProperties.setMultipleAttributeBehavior(UniquenessMultipleAttributeBehavior.UNIQUE_ACROSS_ALL_ATTRIBUTES_INCLUDING_IN_SAME_ENTRY);
break;
case "unique-across-all-attributes-except-in-same-entry":
uniquenessProperties.setMultipleAttributeBehavior(UniquenessMultipleAttributeBehavior.UNIQUE_ACROSS_ALL_ATTRIBUTES_EXCEPT_IN_SAME_ENTRY);
break;
case "unique-in-combination":
uniquenessProperties.setMultipleAttributeBehavior(UniquenessMultipleAttributeBehavior.UNIQUE_IN_COMBINATION);
break;
}
}
if (uniquenessPreCommitValidationLevel.isPresent()) {
final String value = uniquenessPreCommitValidationLevel.getValue().toLowerCase();
switch(value) {
case "none":
uniquenessProperties.setPreCommitValidationLevel(UniquenessValidationLevel.NONE);
break;
case "all-subtree-views":
uniquenessProperties.setPreCommitValidationLevel(UniquenessValidationLevel.ALL_SUBTREE_VIEWS);
break;
case "all-backend-sets":
uniquenessProperties.setPreCommitValidationLevel(UniquenessValidationLevel.ALL_BACKEND_SETS);
break;
case "all-available-backend-servers":
uniquenessProperties.setPreCommitValidationLevel(UniquenessValidationLevel.ALL_AVAILABLE_BACKEND_SERVERS);
break;
}
}
if (uniquenessPostCommitValidationLevel.isPresent()) {
final String value = uniquenessPostCommitValidationLevel.getValue().toLowerCase();
switch(value) {
case "none":
uniquenessProperties.setPostCommitValidationLevel(UniquenessValidationLevel.NONE);
break;
case "all-subtree-views":
uniquenessProperties.setPostCommitValidationLevel(UniquenessValidationLevel.ALL_SUBTREE_VIEWS);
break;
case "all-backend-sets":
uniquenessProperties.setPostCommitValidationLevel(UniquenessValidationLevel.ALL_BACKEND_SETS);
break;
case "all-available-backend-servers":
uniquenessProperties.setPostCommitValidationLevel(UniquenessValidationLevel.ALL_AVAILABLE_BACKEND_SERVERS);
break;
}
}
final UniquenessRequestControl c = new UniquenessRequestControl(true, null, uniquenessProperties);
addControls.add(c);
modifyControls.add(c);
modifyDNControls.add(c);
}
}
use of com.unboundid.ldap.sdk.unboundidds.controls.PasswordUpdateBehaviorRequestControl in project ldapsdk by pingidentity.
the class LDAPModify method createPasswordUpdateBehaviorRequestControl.
/**
* Creates the password update behavior request control that should be
* included in add and modify requests.
*
* @param argIdentifier The identifier string for the argument used to
* configure the password update behavior request
* control.
* @param argValues The set of values for the password update behavior
* request control.
*
* @return The password update behavior request control that was created.
*
* @throws LDAPException If a problem is encountered while creating the
* control.
*/
@NotNull()
static PasswordUpdateBehaviorRequestControl createPasswordUpdateBehaviorRequestControl(@NotNull final String argIdentifier, @NotNull final List<String> argValues) throws LDAPException {
final PasswordUpdateBehaviorRequestControlProperties properties = new PasswordUpdateBehaviorRequestControlProperties();
for (final String argValue : argValues) {
int delimiterPos = argValue.indexOf('=');
if (delimiterPos < 0) {
delimiterPos = argValue.indexOf(':');
}
if ((delimiterPos <= 0) || (delimiterPos >= (argValue.length() - 1))) {
throw new LDAPException(ResultCode.PARAM_ERROR, ERR_LDAPMODIFY_MALFORMED_PW_UPDATE_BEHAVIOR.get(argValue, argIdentifier));
}
final String name = argValue.substring(0, delimiterPos).trim();
final String value = argValue.substring(delimiterPos + 1).trim();
if (name.equalsIgnoreCase("is-self-change") || name.equalsIgnoreCase("self-change") || name.equalsIgnoreCase("isSelfChange") || name.equalsIgnoreCase("selfChange")) {
properties.setIsSelfChange(parseBooleanValue(name, value));
} else if (name.equalsIgnoreCase("allow-pre-encoded-password") || name.equalsIgnoreCase("allow-pre-encoded-passwords") || name.equalsIgnoreCase("allow-pre-encoded") || name.equalsIgnoreCase("allowPreEncodedPassword") || name.equalsIgnoreCase("allowPreEncodedPasswords") || name.equalsIgnoreCase("allowPreEncoded")) {
properties.setAllowPreEncodedPassword(parseBooleanValue(name, value));
} else if (name.equalsIgnoreCase("skip-password-validation") || name.equalsIgnoreCase("skip-password-validators") || name.equalsIgnoreCase("skip-validation") || name.equalsIgnoreCase("skip-validators") || name.equalsIgnoreCase("skipPasswordValidation") || name.equalsIgnoreCase("skipPasswordValidators") || name.equalsIgnoreCase("skipValidation") || name.equalsIgnoreCase("skipValidators")) {
properties.setSkipPasswordValidation(parseBooleanValue(name, value));
} else if (name.equalsIgnoreCase("ignore-password-history") || name.equalsIgnoreCase("skip-password-history") || name.equalsIgnoreCase("ignore-history") || name.equalsIgnoreCase("skip-history") || name.equalsIgnoreCase("ignorePasswordHistory") || name.equalsIgnoreCase("skipPasswordHistory") || name.equalsIgnoreCase("ignoreHistory") || name.equalsIgnoreCase("skipHistory")) {
properties.setIgnorePasswordHistory(parseBooleanValue(name, value));
} else if (name.equalsIgnoreCase("ignore-minimum-password-age") || name.equalsIgnoreCase("ignore-min-password-age") || name.equalsIgnoreCase("ignore-password-age") || name.equalsIgnoreCase("skip-minimum-password-age") || name.equalsIgnoreCase("skip-min-password-age") || name.equalsIgnoreCase("skip-password-age") || name.equalsIgnoreCase("ignoreMinimumPasswordAge") || name.equalsIgnoreCase("ignoreMinPasswordAge") || name.equalsIgnoreCase("ignorePasswordAge") || name.equalsIgnoreCase("skipMinimumPasswordAge") || name.equalsIgnoreCase("skipMinPasswordAge") || name.equalsIgnoreCase("skipPasswordAge")) {
properties.setIgnoreMinimumPasswordAge(parseBooleanValue(name, value));
} else if (name.equalsIgnoreCase("password-storage-scheme") || name.equalsIgnoreCase("password-scheme") || name.equalsIgnoreCase("storage-scheme") || name.equalsIgnoreCase("scheme") || name.equalsIgnoreCase("passwordStorageScheme") || name.equalsIgnoreCase("passwordScheme") || name.equalsIgnoreCase("storageScheme")) {
properties.setPasswordStorageScheme(value);
} else if (name.equalsIgnoreCase("must-change-password") || name.equalsIgnoreCase("mustChangePassword")) {
properties.setMustChangePassword(parseBooleanValue(name, value));
}
}
return new PasswordUpdateBehaviorRequestControl(properties, true);
}
Aggregations