Previous Topic: How to Incorporate Your Own EndpointNext Topic: SDKFS Connector


SDKCOMPOUND Connector

The SDKCOMPOUND connector reuses SDKDYN code but has its own specialized metadata.

The SDKCOMPOUND connector demonstrates how the CA IAM CS framework can handle compound values nested to any level. Compound values are single attribute values that contain multiple subcomponents, for example, an address with street, zip code, and country components.

Some connector technologies (for example, JDBC) impose restrictions on the number of compound value levels that can be supported. Also, the CA IdentityMinder and Provisioning Manager GUI technologies do not currently support compound values nested inside other compound values.

The following are important metadata settings used by the SDKCOMPOUND connector:

The SDKCOMPOUND connector does not use either assocType=COMPOUND_PARENT or assocType=COMPOUND_CHILD as it stores JSON value literally. However, JDBC compound value support does rely on assocType=COMPOUND_PARENT being set, as the parent and compound value are stored in separate database tables.

The latter table references the primary key of the prior table.

Note: For more information, see sdkcompound_metadata.xml and jdbc_compound*_metadata.xml files and their related JMeter tests.

JSON (JavaScript Object Notation), a subset of JavaScript syntax, is used to represent compound values. You can find examples of JSON attribute values in the sdkcompound_core_basic.jmx JMeter test.

Registering the com.ca.jcs.converter.meta.JSONCompoundValueClassConverter class in this connector's connector.xml file does the opposite of the JSONReverseCompoundValueClassConverter converter used internally by the CA IAM CS framework to convert incoming JSON values into nested JNDI Attributes objects. It may be of interest for connectors dealing with compound values which want to be passed JSON objects or JSON strings, rather than nested JNDI Attributes.

An extension was made to allow property and class validator and converter plug-ins to be triggered by type, rather than exclusively by listing metadata settings in "metadataPropNames" in a connector's connector.xml file (or server_jcs.xml). For more information, see the section where the com.ca.jcs.converter.meta.JSONCompoundValueClassConverter converter is registered in the SDKCOMPOUND connector's connector.xml file:

<bean class="com.ca.jcs.cfg.MetaPluginConfig">
                                    <property name="type" value="COMPOUND_VALUE_CLASS_REF"/>
                                    <property name="pluginClass">
                                        <value>com.ca.jcs.converter.meta.JSONCompoundValueClassConverter</value>
                                    </property>
                                    <property name="pluginConfig">
                                        <bean class="com.ca.jcs.converter.meta.JSONCompoundValueClassConverter$Config">
                                            <property name="convertToString" value="true"/>
                                        </bean>
                                    </property>
                                </bean>

The class converter is triggered for any attribute of type "COMPOUND_VALUE_CLASS_REF", rather than the presence of metadata settings on target attributes.