/*
* ====================
* DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
*
* Copyright 2008-2009 Sun Microsystems, Inc. All rights reserved.
*
* The contents of this file are subject to the terms of the Common Development
* and Distribution License("CDDL") (the "License"). You may not use this file
* except in compliance with the License.
*
* You can obtain a copy of the License at
* http://opensource.org/licenses/cddl1.php
* See the License for the specific language governing permissions and limitations
* under the License.
*
* When distributing the Covered Code, include this CDDL Header Notice in each file
* and include the License file at http://opensource.org/licenses/cddl1.php.
* If applicable, add the following below this CDDL Header, with the fields
* enclosed by brackets [] replaced by your own identifying information:
* "Portions Copyrighted [year] [name of copyright owner]"
* ====================
*/
package org.identityconnectors.oracleerp;
import static org.identityconnectors.oracleerp.OracleERPUtil.*;
import java.util.EnumSet;
import java.util.Set;
import org.identityconnectors.common.Assertions;
import org.identityconnectors.common.StringUtil;
import org.identityconnectors.common.logging.Log;
import org.identityconnectors.common.security.GuardedString;
import org.identityconnectors.framework.common.objects.AttributeInfo;
import org.identityconnectors.framework.common.objects.AttributeInfo.Flags;
import org.identityconnectors.framework.common.objects.AttributeInfoBuilder;
import org.identityconnectors.framework.common.objects.Name;
import org.identityconnectors.framework.common.objects.ObjectClass;
import org.identityconnectors.framework.common.objects.ObjectClassInfo;
import org.identityconnectors.framework.common.objects.ObjectClassInfoBuilder;
import org.identityconnectors.framework.common.objects.OperationalAttributeInfos;
import org.identityconnectors.framework.common.objects.OperationalAttributes;
import org.identityconnectors.framework.common.objects.Schema;
import org.identityconnectors.framework.common.objects.SchemaBuilder;
import org.identityconnectors.framework.spi.operations.CreateOp;
import org.identityconnectors.framework.spi.operations.DeleteOp;
import org.identityconnectors.framework.spi.operations.SchemaOp;
import org.identityconnectors.framework.spi.operations.UpdateOp;
/**
* The schema implementation of the SPI.
*
* @author Petr Jung
* @since 1.0
*/
final class OracleERPOperationSchema implements SchemaOp {
private static final Log LOG = Log.getLog(OracleERPOperationSchema.class);
// Optional aggregated user attributes
static final EnumSet<Flags> NRD = EnumSet.of(Flags.NOT_READABLE, Flags.NOT_RETURNED_BY_DEFAULT);
static final EnumSet<Flags> RNU = EnumSet.of(Flags.REQUIRED, Flags.NOT_UPDATEABLE);
static final EnumSet<Flags> NCU = EnumSet.of(Flags.NOT_CREATABLE, Flags.NOT_UPDATEABLE);
static final EnumSet<Flags> MNCUD = EnumSet.of(Flags.MULTIVALUED, Flags.NOT_CREATABLE,
Flags.NOT_UPDATEABLE, Flags.NOT_RETURNED_BY_DEFAULT);
static final EnumSet<Flags> NCUD = EnumSet.of(Flags.NOT_CREATABLE, Flags.NOT_UPDATEABLE,
Flags.NOT_RETURNED_BY_DEFAULT);
static final EnumSet<Flags> MNCU = EnumSet.of(Flags.MULTIVALUED, Flags.NOT_CREATABLE,
Flags.NOT_UPDATEABLE);
static final EnumSet<Flags> M = EnumSet.of(Flags.MULTIVALUED);
/**
* The instance or the parent object.
*/
final private OracleERPConfiguration configuration;
OracleERPOperationSchema(OracleERPConfiguration cfg) {
configuration = Assertions.nullChecked(cfg, "Connector Configuration");
}
public Schema schema() {
LOG.ok("schema");
// Use SchemaBuilder to build the schema.
SchemaBuilder schemaBld = new SchemaBuilder(OracleERPConnector.class);
final ObjectClassInfo accountOci = getAccountObjectClassInfo();
schemaBld.defineObjectClass(accountOci);
// The ResponsibilityNames
final ObjectClassInfo respNamesOci = getRespNamesObjectClassInfo();
addSearchableOnlyOC(schemaBld, respNamesOci);
// The Responsibilities for listing
final ObjectClassInfo respOci = getResponsibilitiesObjectClassInfo();
addSearchableOnlyOC(schemaBld, respOci);
// The Applications for listing
final ObjectClassInfo appOci = getApplicationsObjectClassInfo();
addSearchableOnlyOC(schemaBld, appOci);
// The Auditor for listing
final ObjectClassInfo auditOci = getAuditorResponsibilitiesObjectClassInfo();
addSearchableOnlyOC(schemaBld, auditOci);
// The DirectResponsibilities for listing
final ObjectClassInfo directOci = getDirectResponsibilitiesObjectClassInfo();
addSearchableOnlyOC(schemaBld, directOci);
// The IndirectResponsibilities for listing
final ObjectClassInfo indirectOci = getIndirectResponsibilitiesObjectClassInfo();
addSearchableOnlyOC(schemaBld, indirectOci);
// The IndirectResponsibilities for listing
final ObjectClassInfo secAttrOci = getSecuringAttrsGroupObjectClassInfo();
addSearchableOnlyOC(schemaBld, secAttrOci);
// The IndirectResponsibilities for listing
final ObjectClassInfo secGrpsOci = getSecurngGroupsObjectClassInfo();
addSearchableOnlyOC(schemaBld, secGrpsOci);
final Schema schema = schemaBld.build();
LOG.ok("schema done");
return schema;
}
/**
* Add only searchable object class.
*
* @param schemaBld
* @param oci
*/
private void addSearchableOnlyOC(SchemaBuilder schemaBld, final ObjectClassInfo oci) {
schemaBld.defineObjectClass(oci);
schemaBld.removeSupportedObjectClass(DeleteOp.class, oci);
schemaBld.removeSupportedObjectClass(CreateOp.class, oci);
schemaBld.removeSupportedObjectClass(UpdateOp.class, oci);
}
/**
* Get the Account Object Class Info.
*
* @return objectClass {@link ObjectClassInfo} info
*/
private ObjectClassInfo getAccountObjectClassInfo() {
ObjectClassInfoBuilder ocib = new ObjectClassInfoBuilder();
ocib.setType(ObjectClass.ACCOUNT_NAME);
// The Name is supported attribute
ocib.addAttributeInfo(AttributeInfoBuilder.build(Name.NAME, String.class, RNU));
// name='owner' type='string' required='false'
ocib.addAttributeInfo(AttributeInfoBuilder.build(OWNER, String.class, NRD));
// name='session_number' type='string' required='false'
ocib.addAttributeInfo(AttributeInfoBuilder.build(SESS_NUM, String.class, NCU));
// reset is implemented as change password
// name='Password', Password is mapped to operationalAttribute
ocib.addAttributeInfo(OperationalAttributeInfos.PASSWORD);
// name='start_date' type='string' required='false'
ocib.addAttributeInfo(AttributeInfoBuilder.build(START_DATE, String.class));
// name='end_date' type='string' required='false'
ocib.addAttributeInfo(AttributeInfoBuilder.build(END_DATE, String.class));
// name='description' type='string' required='false'
ocib.addAttributeInfo(AttributeInfoBuilder.build(DESCR, String.class));
// name='expirePassword' type='string' required='false' is mapped to
// PASSWORD_EXPIRED
ocib.addAttributeInfo(AttributeInfoBuilder.build(EXP_PWD, Boolean.class, NRD));
// name='password_accesses_left' type='string' required='false'
ocib.addAttributeInfo(AttributeInfoBuilder.build(PWD_DATE, String.class));
// name='password_accesses_left' type='string' required='false'
ocib.addAttributeInfo(AttributeInfoBuilder.build(PWD_ACCESSES_LEFT, String.class));
// name='password_lifespan_accesses' type='string' required='false'
ocib.addAttributeInfo(AttributeInfoBuilder.build(PWD_LIFESPAN_ACCESSES, String.class));
// name='password_lifespan_days' type='string' required='false'
ocib.addAttributeInfo(AttributeInfoBuilder.build(PWD_LIFESPAN_DAYS, String.class));
// name='employee_id' type='string' required='false'
ocib.addAttributeInfo(AttributeInfoBuilder.build(EMP_ID, String.class));
// name='employee_number' type='string' required='false'
ocib.addAttributeInfo(AttributeInfoBuilder.build(EMP_NUM, String.class));
// name='person_fullname' type='string' required='false'
ocib.addAttributeInfo(AttributeInfoBuilder.build(PERSON_FULLNAME, String.class));
// name='npw_number' type='string' required='false'
ocib.addAttributeInfo(AttributeInfoBuilder.build(NPW_NUM, String.class));
// name='email_address' type='string' required='false'
ocib.addAttributeInfo(AttributeInfoBuilder.build(EMAIL, String.class));
// name='fax' type='string' required='false'
ocib.addAttributeInfo(AttributeInfoBuilder.build(FAX, String.class));
// name='customer_id' type='string' required='false'
ocib.addAttributeInfo(AttributeInfoBuilder.build(CUST_ID, String.class));
// name='supplier_id' type='string' required='false'
ocib.addAttributeInfo(AttributeInfoBuilder.build(SUPP_ID, String.class));
// name='person_party_id' type='string' required='false'
ocib.addAttributeInfo(AttributeInfoBuilder.build(PERSON_PARTY_ID, String.class, NCU));
if (configuration.isNewResponsibilityViews()) {
// name='DIRECT_RESPS' type='string' required='false'
ocib.addAttributeInfo(AttributeInfoBuilder.build(DIRECT_RESPS, String.class, M));
// name='INDIRECT_RESPS' type='string' required='false'
ocib.addAttributeInfo(AttributeInfoBuilder.build(INDIRECT_RESPS, String.class, MNCU));
} else {
// name='RESPS' type='string' required='false'
ocib.addAttributeInfo(AttributeInfoBuilder.build(RESPS, String.class, M));
}
// name='RESPKEYS' type='string' required='false'
ocib.addAttributeInfo(AttributeInfoBuilder.build(RESPKEYS, String.class, MNCU));
// name='SEC_ATTRS' type='string' required='false'
ocib.addAttributeInfo(AttributeInfoBuilder.build(SEC_ATTRS, String.class, M));
// name='userMenuNames' type='string' audit='false'
ocib.addAttributeInfo(AttributeInfoBuilder.build(RESP_NAMES, String.class, MNCUD));
// name='userMenuNames' type='string' audit='false'
ocib.addAttributeInfo(AttributeInfoBuilder.build(AUDITOR_RESPS, String.class, MNCUD));
// name='userMenuNames' type='string' audit='false'
ocib.addAttributeInfo(AttributeInfoBuilder.build(USER_MENU_NAMES, String.class, MNCUD));
// name='menuIds' type='string' audit='false'
ocib.addAttributeInfo(AttributeInfoBuilder.build(MENU_IDS, String.class, MNCUD));
// name='userFunctionNames' type='string' audit='false'
ocib.addAttributeInfo(AttributeInfoBuilder.build(USER_FUNCTION_NAMES, String.class, MNCUD));
// name='functionIds' type='string' audit='false'
ocib.addAttributeInfo(AttributeInfoBuilder.build(FUNCTION_IDS, String.class, MNCUD));
// name='formIds' type='string' audit='false'
ocib.addAttributeInfo(AttributeInfoBuilder.build(FORM_IDS, String.class, MNCUD));
// name='formNames' type='string' audit='false'
ocib.addAttributeInfo(AttributeInfoBuilder.build(FORM_NAMES, String.class, MNCUD));
// name='functionNames' type='string' audit='false'
ocib.addAttributeInfo(AttributeInfoBuilder.build(FUNCTION_NAMES, String.class, MNCUD));
// name='userFormNames' type='string' audit='false'
ocib.addAttributeInfo(AttributeInfoBuilder.build(USER_FORM_NAMES, String.class, MNCUD));
// name='readOnlyFormIds' type='string' audit='false'
ocib.addAttributeInfo(AttributeInfoBuilder.build(RO_FORM_IDS, String.class, MNCUD));
// name='readWriteOnlyFormIds' type='string' audit='false'
ocib.addAttributeInfo(AttributeInfoBuilder.build(RW_ONLY_FORM_IDS, String.class, MNCUD));
// name='readOnlyFormNames' type='string' audit='false'
ocib.addAttributeInfo(AttributeInfoBuilder.build(RO_FORM_NAMES, String.class, MNCUD));
// name='readOnlyFunctionNames' type='string' audit='false'
ocib.addAttributeInfo(AttributeInfoBuilder.build(RO_FUNCTION_NAMES, String.class, MNCUD));
// name='readOnlyUserFormNames' type='string' audit='false'
ocib.addAttributeInfo(AttributeInfoBuilder.build(RO_USER_FORM_NAMES, String.class, MNCUD));
// name='readOnlyFunctionIds' type='string' audit='false'
ocib.addAttributeInfo(AttributeInfoBuilder.build(RO_FUNCTIONS_IDS, String.class, MNCUD));
// name='readWriteOnlyFormNames' type='string' audit='false'
ocib.addAttributeInfo(AttributeInfoBuilder.build(RW_FORM_NAMES, String.class, MNCUD));
// name='readWriteOnlyUserFormNames' type='string' audit='false'
ocib.addAttributeInfo(AttributeInfoBuilder.build(RW_USER_FORM_NAMES, String.class, MNCUD));
// name='readWriteOnlyFunctionNames' type='string' audit='false'
ocib.addAttributeInfo(AttributeInfoBuilder.build(RW_FUNCTION_NAMES, String.class, MNCUD));
// name='readWriteOnlyFunctionIds' type='string' audit='false'
ocib.addAttributeInfo(AttributeInfoBuilder.build(RW_FUNCTION_IDS, String.class, MNCUD));
// user_id
ocib.addAttributeInfo(AttributeInfoBuilder.build(USER_ID, String.class, NCUD));
// name='last_logon_date' type='string' required='false'
ocib.addAttributeInfo(AttributeInfoBuilder.build(LAST_LOGON_DATE, String.class,
OracleERPOperationSchema.NCU));
/*
* ocib.addAttributeInfo(OperationalAttributeInfos.ENABLE_DATE);
* ocib.addAttributeInfo(OperationalAttributeInfos.DISABLE_DATE);
* ocib.addAttributeInfo(PredefinedAttributeInfos.LAST_LOGIN_DATE);
* ocib.
* addAttributeInfo(PredefinedAttributeInfos.LAST_PASSWORD_CHANGE_DATE);
*/
// <Views><String>Enable</String></Views>
ocib.addAttributeInfo(OperationalAttributeInfos.ENABLE);
// The expired password is not returned by default
ocib.addAttributeInfo(AttributeInfoBuilder.build(
OperationalAttributes.PASSWORD_EXPIRED_NAME, boolean.class, NRD));
// name='passwordAttribute', there is restriction, the name must be
// unique, not exists in the attribute info set
if (StringUtil.isNotBlank(configuration.getPasswordAttribute())) {
Set<AttributeInfo> currentInfos = ocib.build().getAttributeInfo();
for (AttributeInfo attributeInfo : currentInfos) {
if (attributeInfo.is(configuration.getPasswordAttribute())) {
throw new IllegalArgumentException(configuration.getMessage(
MSG_INVALID_PASSWORD_ATTRIBUTE, configuration.getPasswordAttribute()));
}
}
// now it is clear we can add the new attribute
ocib.addAttributeInfo(AttributeInfoBuilder.build(configuration.getPasswordAttribute(),
GuardedString.class, EnumSet.of(Flags.NOT_READABLE,
Flags.NOT_RETURNED_BY_DEFAULT)));
}
return ocib.build();
}
/**
* The object class info.
*
* @return the info class
*/
private ObjectClassInfo getRespNamesObjectClassInfo() {
ObjectClassInfoBuilder ocib = new ObjectClassInfoBuilder();
ocib.setType(RESP_NAMES_OC.getObjectClassValue());
ocib.addAttributeInfo(Name.INFO);
// The Name is supported attribute
ocib.addAttributeInfo(AttributeInfoBuilder.build(NAME, String.class, NCUD));
// name='userMenuNames' type='string' audit='false'
ocib.addAttributeInfo(AttributeInfoBuilder.build(USER_MENU_NAMES, String.class, MNCU));
// name='menuIds' type='string' audit='false'
ocib.addAttributeInfo(AttributeInfoBuilder.build(MENU_IDS, String.class, MNCU));
// name='userFunctionNames' type='string' audit='false'
ocib.addAttributeInfo(AttributeInfoBuilder.build(USER_FUNCTION_NAMES, String.class, MNCU));
// name='functionIds' type='string' audit='false'
ocib.addAttributeInfo(AttributeInfoBuilder.build(FUNCTION_IDS, String.class, MNCU));
// name='formIds' type='string' audit='false'
ocib.addAttributeInfo(AttributeInfoBuilder.build(FORM_IDS, String.class, MNCU));
// name='formNames' type='string' audit='false'
ocib.addAttributeInfo(AttributeInfoBuilder.build(FORM_NAMES, String.class, MNCU));
// name='functionNames' type='string' audit='false'
ocib.addAttributeInfo(AttributeInfoBuilder.build(FUNCTION_NAMES, String.class, MNCU));
// name='userFormNames' type='string' audit='false'
ocib.addAttributeInfo(AttributeInfoBuilder.build(USER_FORM_NAMES, String.class, MNCU));
// name='readOnlyFormIds' type='string' audit='false'
ocib.addAttributeInfo(AttributeInfoBuilder.build(RO_FORM_IDS, String.class, MNCU));
// name='readWriteOnlyFormIds' type='string' audit='false'
ocib.addAttributeInfo(AttributeInfoBuilder.build(RW_ONLY_FORM_IDS, String.class, MNCU));
// name='readOnlyFormNames' type='string' audit='false'
ocib.addAttributeInfo(AttributeInfoBuilder.build(RO_FORM_NAMES, String.class, MNCU));
// name='readOnlyFunctionNames' type='string' audit='false'
ocib.addAttributeInfo(AttributeInfoBuilder.build(RO_FUNCTION_NAMES, String.class, MNCU));
// name='readOnlyUserFormNames' type='string' audit='false'
ocib.addAttributeInfo(AttributeInfoBuilder.build(RO_USER_FORM_NAMES, String.class, MNCU));
// name='readOnlyFunctionIds' type='string' audit='false'
ocib.addAttributeInfo(AttributeInfoBuilder.build(RO_FUNCTIONS_IDS, String.class, MNCU));
// name='readWriteOnlyFormNames' type='string' audit='false'
ocib.addAttributeInfo(AttributeInfoBuilder.build(RW_FORM_NAMES, String.class, MNCU));
// name='readWriteOnlyUserFormNames' type='string' audit='false'
ocib.addAttributeInfo(AttributeInfoBuilder.build(RW_USER_FORM_NAMES, String.class, MNCU));
// name='readWriteOnlyFunctionNames' type='string' audit='false'
ocib.addAttributeInfo(AttributeInfoBuilder.build(RW_FUNCTION_NAMES, String.class, MNCU));
// name='readWriteOnlyFunctionIds' type='string' audit='false'
ocib.addAttributeInfo(AttributeInfoBuilder.build(RW_FUNCTION_IDS, String.class, MNCU));
return ocib.build();
}
/**
* The object class info.
*
* @return the info class
*/
private ObjectClassInfo getAuditorResponsibilitiesObjectClassInfo() {
// Auditor responsibilities
ObjectClassInfoBuilder oc = new ObjectClassInfoBuilder();
oc.setType(AUDITOR_RESPS_OC.getObjectClassValue());
oc.addAttributeInfo(Name.INFO);
// The Name is supported attribute
oc.addAttributeInfo(AttributeInfoBuilder.build(NAME, String.class, NCUD));
// name='userMenuNames' type='string' audit='false'
oc.addAttributeInfo(AttributeInfoBuilder.build(USER_MENU_NAMES, String.class, MNCU));
// name='menuIds' type='string' audit='false'
oc.addAttributeInfo(AttributeInfoBuilder.build(MENU_IDS, String.class, MNCU));
// name='userFunctionNames' type='string' audit='false'
oc.addAttributeInfo(AttributeInfoBuilder.build(USER_FUNCTION_NAMES, String.class, MNCU));
// name='functionIds' type='string' audit='false'
oc.addAttributeInfo(AttributeInfoBuilder.build(FUNCTION_IDS, String.class, MNCU));
// name='formIds' type='string' audit='false'
oc.addAttributeInfo(AttributeInfoBuilder.build(FORM_IDS, String.class, MNCU));
// name='formNames' type='string' audit='false'
oc.addAttributeInfo(AttributeInfoBuilder.build(FORM_NAMES, String.class, MNCU));
// name='functionNames' type='string' audit='false'
oc.addAttributeInfo(AttributeInfoBuilder.build(FUNCTION_NAMES, String.class, MNCU));
// name='userFormNames' type='string' audit='false'
oc.addAttributeInfo(AttributeInfoBuilder.build(USER_FORM_NAMES, String.class, MNCU));
// name='readOnlyFormIds' type='string' audit='false'
oc.addAttributeInfo(AttributeInfoBuilder.build(RO_FORM_IDS, String.class, MNCU));
// name='readWriteOnlyFormIds' type='string' audit='false'
oc.addAttributeInfo(AttributeInfoBuilder.build(RW_ONLY_FORM_IDS, String.class, MNCU));
// name='readOnlyFormNames' type='string' audit='false'
oc.addAttributeInfo(AttributeInfoBuilder.build(RO_FORM_NAMES, String.class, MNCU));
// name='readOnlyFunctionNames' type='string' audit='false'
oc.addAttributeInfo(AttributeInfoBuilder.build(RO_FUNCTION_NAMES, String.class, MNCU));
// name='readOnlyUserFormNames' type='string' audit='false'
oc.addAttributeInfo(AttributeInfoBuilder.build(RO_USER_FORM_NAMES, String.class, MNCU));
// name='readOnlyFunctionIds' type='string' audit='false'
oc.addAttributeInfo(AttributeInfoBuilder.build(RO_FUNCTIONS_IDS, String.class, MNCU));
// name='readWriteOnlyFormNames' type='string' audit='false'
oc.addAttributeInfo(AttributeInfoBuilder.build(RW_FORM_NAMES, String.class, MNCU));
// name='readWriteOnlyUserFormNames' type='string' audit='false'
oc.addAttributeInfo(AttributeInfoBuilder.build(RW_USER_FORM_NAMES, String.class, MNCU));
// name='readWriteOnlyFunctionNames' type='string' audit='false'
oc.addAttributeInfo(AttributeInfoBuilder.build(RW_FUNCTION_NAMES, String.class, MNCU));
// name='readWriteOnlyFunctionIds' type='string' audit='false'
oc.addAttributeInfo(AttributeInfoBuilder.build(RW_FUNCTION_IDS, String.class, MNCU));
return oc.build();
}
/**
* The object class info.
*
* @return the info class
*/
private ObjectClassInfo getResponsibilitiesObjectClassInfo() {
// Resp object class
ObjectClassInfoBuilder oc = new ObjectClassInfoBuilder();
oc.setType(RESP_OC.getObjectClassValue());
// The Name is supported attribute
oc.addAttributeInfo(Name.INFO);
oc.addAttributeInfo(AttributeInfoBuilder.build(NAME, String.class, NCUD));
return oc.build();
}
/**
* The object class info.
*
* @return the info class
*/
private ObjectClassInfo getDirectResponsibilitiesObjectClassInfo() {
// Resp object class
ObjectClassInfoBuilder oc = new ObjectClassInfoBuilder();
oc.setType(DIRECT_RESP_OC.getObjectClassValue());
// The Name is supported attribute
oc.addAttributeInfo(Name.INFO);
oc.addAttributeInfo(AttributeInfoBuilder.build(NAME, String.class, NCUD));
return oc.build();
}
/**
* The object class info.
*
* @return the info class
*/
private ObjectClassInfo getIndirectResponsibilitiesObjectClassInfo() {
// directResponsibilities object class
ObjectClassInfoBuilder oc = new ObjectClassInfoBuilder();
oc.setType(INDIRECT_RESP_OC.getObjectClassValue());
// The Name is supported attribute
oc.addAttributeInfo(Name.INFO);
oc.addAttributeInfo(AttributeInfoBuilder.build(NAME, String.class, NCUD));
return oc.build();
}
/**
* The object class info.
*
* @return the info class
*/
private ObjectClassInfo getApplicationsObjectClassInfo() {
// Applications object class
ObjectClassInfoBuilder oc = new ObjectClassInfoBuilder();
oc.setType(APPS_OC.getObjectClassValue());
// The Name is supported attribute
oc.addAttributeInfo(Name.INFO);
oc.addAttributeInfo(AttributeInfoBuilder.build(NAME, String.class, NCUD));
return oc.build();
}
// Seems to be hidden object class, no contract tests
/**
* The object class info.
*
* @return the info class
*/
private ObjectClassInfo getSecurngGroupsObjectClassInfo() {
// securityGroups object class
ObjectClassInfoBuilder oc = new ObjectClassInfoBuilder();
oc.setType(SEC_GROUPS_OC.getObjectClassValue());
// The Name is supported attribute
oc.addAttributeInfo(Name.INFO);
oc.addAttributeInfo(AttributeInfoBuilder.build(NAME, String.class, NCUD));
return oc.build();
}
/**
* The object class info.
*
* @return the info class
*/
private ObjectClassInfo getSecuringAttrsGroupObjectClassInfo() {
// securingAttrs object class
ObjectClassInfoBuilder oc = new ObjectClassInfoBuilder();
oc.setType(SEC_ATTRS_OC.getObjectClassValue());
// The Name is supported attribute
oc.addAttributeInfo(Name.INFO);
oc.addAttributeInfo(AttributeInfoBuilder.build(NAME, String.class, NCUD));
return oc.build();
}
}