<?xml version="1.0" encoding="utf-8"?>
<!--
! CDDL HEADER START
!
! The contents of this file are subject to the terms of the
! Common Development and Distribution License, Version 1.0 only
! (the "License"). You may not use this file except in compliance
! with the License.
!
! You can obtain a copy of the license at legal-notices/CDDLv1_0.txt
! or http://forgerock.org/license/CDDLv1.0.html.
! See the License for the specific language governing permissions
! and limitations under the License.
!
! When distributing Covered Code, include this CDDL HEADER in each
! file and include the License file at legal-notices/CDDLv1_0.txt.
! If applicable, add the following below this CDDL HEADER, with the
! fields enclosed by brackets "[]" replaced with your own identifying
! information:
! Portions Copyright [yyyy] [name of copyright owner]
!
! CDDL HEADER END
!
!
! Copyright 2007-2008 Sun Microsystems, Inc.
! Portions Copyright 2011 ForgeRock AS
! -->
<adm:managed-object name="virtual-attribute"
plural-name="virtual-attributes" package="org.opends.server.admin.std"
xmlns:adm="http://www.opends.org/admin"
xmlns:ldap="http://www.opends.org/admin-ldap"
xmlns:cli="http://www.opends.org/admin-cli">
<adm:synopsis>
<adm:user-friendly-plural-name />
are responsible for dynamically generating attribute values that
appear in entries but are not persistently stored in the backend.
</adm:synopsis>
<adm:description>
Virtual attributes are associated with a virtual attribute
provider, which contains the logic for generating the value.
</adm:description>
<adm:tag name="core-server" />
<adm:profile name="ldap">
<ldap:object-class>
<ldap:name>ds-cfg-virtual-attribute</ldap:name>
<ldap:superior>top</ldap:superior>
</ldap:object-class>
</adm:profile>
<adm:profile name="cli">
<cli:managed-object custom="true" />
</adm:profile>
<adm:property name="java-class" mandatory="true">
<adm:synopsis>
Specifies the fully-qualified name of the virtual attribute
provider class that generates the attribute values.
</adm:synopsis>
<adm:requires-admin-action>
<adm:component-restart />
</adm:requires-admin-action>
<adm:syntax>
<adm:java-class>
<adm:instance-of>
org.opends.server.api.VirtualAttributeProvider
</adm:instance-of>
</adm:java-class>
</adm:syntax>
<adm:profile name="ldap">
<ldap:attribute>
<ldap:name>ds-cfg-java-class</ldap:name>
</ldap:attribute>
</adm:profile>
</adm:property>
<adm:property name="enabled" mandatory="true">
<adm:synopsis>
Indicates whether the
<adm:user-friendly-name />
is enabled for use.
</adm:synopsis>
<adm:syntax>
<adm:boolean />
</adm:syntax>
<adm:profile name="ldap">
<ldap:attribute>
<ldap:name>ds-cfg-enabled</ldap:name>
</ldap:attribute>
</adm:profile>
</adm:property>
<adm:property name="attribute-type" mandatory="true">
<adm:synopsis>
Specifies the attribute type for the attribute whose values are to
be dynamically assigned by the virtual attribute.
</adm:synopsis>
<adm:syntax>
<adm:attribute-type />
</adm:syntax>
<adm:profile name="ldap">
<ldap:attribute>
<ldap:name>ds-cfg-attribute-type</ldap:name>
</ldap:attribute>
</adm:profile>
</adm:property>
<adm:property name="base-dn" multi-valued="true">
<adm:synopsis>
Specifies the base DNs for the branches containing entries that
are eligible to use this virtual attribute.
</adm:synopsis>
<adm:description>
If no values are given, then the server generates virtual attributes
anywhere in the server.
</adm:description>
<adm:default-behavior>
<adm:alias>
<adm:synopsis>
The location of the entry in the server is not taken into
account when determining whether an entry is eligible to use
this virtual attribute.
</adm:synopsis>
</adm:alias>
</adm:default-behavior>
<adm:syntax>
<adm:dn />
</adm:syntax>
<adm:profile name="ldap">
<ldap:attribute>
<ldap:name>ds-cfg-base-dn</ldap:name>
</ldap:attribute>
</adm:profile>
</adm:property>
<adm:property name="scope">
<adm:synopsis>
Specifies the LDAP scope associated with base DNs for entries that are
eligible to use this virtual attribute.
</adm:synopsis>
<adm:default-behavior>
<adm:defined>
<adm:value>whole-subtree</adm:value>
</adm:defined>
</adm:default-behavior>
<adm:syntax>
<adm:enumeration>
<adm:value name="base-object">
<adm:synopsis>Search the base object only.</adm:synopsis>
</adm:value>
<adm:value name="single-level">
<adm:synopsis>
Search the immediate children of the base object but do not
include any of their descendants or the base object itself.
</adm:synopsis>
</adm:value>
<adm:value name="subordinate-subtree">
<adm:synopsis>
Search the entire subtree below the base object but do not
include the base object itself.
</adm:synopsis>
</adm:value>
<adm:value name="whole-subtree">
<adm:synopsis>
Search the base object and the entire subtree below the base
object.
</adm:synopsis>
</adm:value>
</adm:enumeration>
</adm:syntax>
<adm:profile name="ldap">
<ldap:attribute>
<ldap:name>ds-cfg-scope</ldap:name>
</ldap:attribute>
</adm:profile>
</adm:property>
<adm:property name="group-dn" multi-valued="true">
<adm:synopsis>
Specifies the DNs of the groups whose members can be eligible to
use this virtual attribute.
</adm:synopsis>
<adm:description>
If no values are given, then group
membership is not taken into account when generating the virtual
attribute. If one or more group DNs are specified, then only
members of those groups are allowed to have the virtual attribute.
</adm:description>
<adm:default-behavior>
<adm:alias>
<adm:synopsis>
Group membership is not taken into account when
determining whether an entry is eligible to use this virtual
attribute.
</adm:synopsis>
</adm:alias>
</adm:default-behavior>
<adm:syntax>
<adm:dn />
</adm:syntax>
<adm:profile name="ldap">
<ldap:attribute>
<ldap:name>ds-cfg-group-dn</ldap:name>
</ldap:attribute>
</adm:profile>
</adm:property>
<adm:property name="filter" multi-valued="true">
<adm:synopsis>
Specifies the search filters to be applied against entries to
determine if the virtual attribute is to be generated for those
entries.
</adm:synopsis>
<adm:description>
If no values are given, then any entry is eligible to
have the value generated. If one or more filters are specified,
then only entries that match at least one of those filters are
allowed to have the virtual attribute.
</adm:description>
<adm:default-behavior>
<adm:defined>
<adm:value>(objectClass=*)</adm:value>
</adm:defined>
</adm:default-behavior>
<adm:syntax>
<adm:string>
<adm:pattern>
<adm:regex>.*</adm:regex>
<adm:usage>STRING</adm:usage>
<adm:synopsis>
Any valid search filter string.
</adm:synopsis>
</adm:pattern>
</adm:string>
</adm:syntax>
<adm:profile name="ldap">
<ldap:attribute>
<ldap:name>ds-cfg-filter</ldap:name>
</ldap:attribute>
</adm:profile>
</adm:property>
<adm:property name="conflict-behavior">
<adm:synopsis>
Specifies the behavior that the server is to exhibit for entries
that already contain one or more real values for the associated
attribute.
</adm:synopsis>
<adm:default-behavior>
<adm:defined>
<adm:value>real-overrides-virtual</adm:value>
</adm:defined>
</adm:default-behavior>
<adm:syntax>
<adm:enumeration>
<adm:value name="real-overrides-virtual">
<adm:synopsis>
Indicates that any real values contained in the entry are
preserved and used, and virtual values are not generated.
</adm:synopsis>
</adm:value>
<adm:value name="virtual-overrides-real">
<adm:synopsis>
Indicates that the virtual attribute provider suppresses
any real values contained in the entry
and generates virtual values and uses them.
</adm:synopsis>
</adm:value>
<adm:value name="merge-real-and-virtual">
<adm:synopsis>
Indicates that the virtual attribute provider
is to preserve any real values contained in the entry
and merge them with the set of generated virtual values
so that both the real and virtual values are used.
</adm:synopsis>
</adm:value>
</adm:enumeration>
</adm:syntax>
<adm:profile name="ldap">
<ldap:attribute>
<ldap:name>ds-cfg-conflict-behavior</ldap:name>
</ldap:attribute>
</adm:profile>
</adm:property>
</adm:managed-object>