org.connid.bundles.ad.crud.ADCreate Maven / Gradle / Ivy
The newest version!
/**
* Copyright (C) 2011 ConnId ([email protected])
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
* You may obtain a copy of the License at
*
* http://www.apache.org/licenses/LICENSE-2.0
*
* Unless required by applicable law or agreed to in writing, software
* distributed under the License is distributed on an "AS IS" BASIS,
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
* See the License for the specific language governing permissions and
* limitations under the License.
*/
package org.connid.bundles.ad.crud;
import static org.connid.bundles.ad.ADConnector.UACCONTROL_ATTR;
import static org.connid.bundles.ad.ADConnector.UF_ACCOUNTDISABLE;
import static org.connid.bundles.ad.ADConnector.UF_NORMAL_ACCOUNT;
import static org.connid.bundles.ldap.commons.LdapUtil.checkedListByFilter;
import static org.identityconnectors.common.CollectionUtil.isEmpty;
import static org.identityconnectors.common.CollectionUtil.nullAsEmpty;
import java.util.List;
import java.util.Set;
import javax.naming.NamingException;
import javax.naming.directory.BasicAttribute;
import javax.naming.directory.BasicAttributes;
import javax.naming.directory.DirContext;
import javax.naming.directory.ModificationItem;
import org.connid.bundles.ad.ADConfiguration;
import org.connid.bundles.ad.ADConnection;
import org.connid.bundles.ad.util.ADGuardedPasswordAttribute;
import org.connid.bundles.ad.util.ADGuardedPasswordAttribute.Accessor;
import org.connid.bundles.ad.util.ADUtilities;
import org.connid.bundles.ldap.commons.LdapConstants;
import org.connid.bundles.ldap.commons.LdapModifyOperation;
import org.identityconnectors.common.StringUtil;
import org.identityconnectors.common.logging.Log;
import org.identityconnectors.framework.common.exceptions.ConnectorException;
import org.identityconnectors.framework.common.objects.Attribute;
import org.identityconnectors.framework.common.objects.AttributeUtil;
import org.identityconnectors.framework.common.objects.Name;
import org.identityconnectors.framework.common.objects.ObjectClass;
import org.identityconnectors.framework.common.objects.OperationOptions;
import org.identityconnectors.framework.common.objects.OperationalAttributes;
import org.identityconnectors.framework.common.objects.Uid;
public class ADCreate extends LdapModifyOperation {
private static final Log LOG = Log.getLog(ADConnection.class);
private final ObjectClass oclass;
private final Set attrs;
@SuppressWarnings("FieldNameHidesFieldInSuperclass")
private final ADConnection conn;
public ADCreate(
final ADConnection conn,
final ObjectClass oclass,
final Set attrs,
final OperationOptions options) {
super(conn);
this.oclass = oclass;
this.attrs = attrs;
this.conn = conn;
}
public Uid create() {
try {
return executeImpl();
} catch (NamingException e) {
throw new ConnectorException(e);
}
}
private Uid executeImpl() throws NamingException {
// -------------------------------------------------
// Retrieve DN
// -------------------------------------------------
final Name nameAttr = AttributeUtil.getNameFromAttributes(attrs);
if (nameAttr == null) {
throw new IllegalArgumentException("No Name attribute provided in the attributes");
}
final Attribute cnAttr = AttributeUtil.find(ADConfiguration.CN_NAME, attrs);
if (cnAttr != null) {
attrs.remove(cnAttr);
}
final ADUtilities utils = new ADUtilities(conn);
Name name;
if (utils.isDN(nameAttr.getNameValue())) {
name = nameAttr;
} else {
Uid uidAttr = AttributeUtil.getUidAttribute(attrs);
if (uidAttr == null && StringUtil.isNotBlank(nameAttr.getNameValue())) {
uidAttr = new Uid(nameAttr.getNameValue());
attrs.add(uidAttr);
}
name = new Name(utils.getDN(oclass, nameAttr, cnAttr));
}
// -------------------------------------------------
List ldapGroups = null;
ADGuardedPasswordAttribute pwdAttr = null;
final BasicAttributes adAttrs = new BasicAttributes(true);
int uacValue = -1;
Boolean uccp = null;
for (Attribute attr : attrs) {
if (attr.is(Name.NAME)) {
// Handled already.
} else if (attr.is(ADConfiguration.UCCP_FLAG)) {
final List © 2015 - 2025 Weber Informatics LLC | Privacy Policy