001/* 002 * CDDL HEADER START 003 * 004 * The contents of this file are subject to the terms of the 005 * Common Development and Distribution License, Version 1.0 only 006 * (the "License"). You may not use this file except in compliance 007 * with the License. 008 * 009 * You can obtain a copy of the license at legal-notices/CDDLv1_0.txt 010 * or http://forgerock.org/license/CDDLv1.0.html. 011 * See the License for the specific language governing permissions 012 * and limitations under the License. 013 * 014 * When distributing Covered Code, include this CDDL HEADER in each 015 * file and include the License file at legal-notices/CDDLv1_0.txt. 016 * If applicable, add the following below this CDDL HEADER, with the 017 * fields enclosed by brackets "[]" replaced with your own identifying 018 * information: 019 * Portions Copyright [yyyy] [name of copyright owner] 020 * 021 * CDDL HEADER END 022 * 023 * 024 * Copyright 2008 Sun Microsystems, Inc. 025 */ 026package org.opends.server.admin.std.server; 027 028 029 030import java.util.SortedSet; 031import org.opends.server.admin.Configuration; 032import org.opends.server.admin.server.ConfigurationChangeListener; 033import org.opends.server.admin.std.meta.VirtualAttributeCfgDefn.ConflictBehavior; 034import org.opends.server.admin.std.meta.VirtualAttributeCfgDefn.Scope; 035import org.opends.server.types.AttributeType; 036import org.opends.server.types.DN; 037 038 039 040/** 041 * A server-side interface for querying Virtual Attribute settings. 042 * <p> 043 * Virtual Attributes are responsible for dynamically generating 044 * attribute values that appear in entries but are not persistently 045 * stored in the backend. 046 */ 047public interface VirtualAttributeCfg extends Configuration { 048 049 /** 050 * Gets the configuration class associated with this Virtual Attribute. 051 * 052 * @return Returns the configuration class associated with this Virtual Attribute. 053 */ 054 Class<? extends VirtualAttributeCfg> configurationClass(); 055 056 057 058 /** 059 * Register to be notified when this Virtual Attribute is changed. 060 * 061 * @param listener 062 * The Virtual Attribute configuration change listener. 063 */ 064 void addChangeListener(ConfigurationChangeListener<VirtualAttributeCfg> listener); 065 066 067 068 /** 069 * Deregister an existing Virtual Attribute configuration change listener. 070 * 071 * @param listener 072 * The Virtual Attribute configuration change listener. 073 */ 074 void removeChangeListener(ConfigurationChangeListener<VirtualAttributeCfg> listener); 075 076 077 078 /** 079 * Gets the "attribute-type" property. 080 * <p> 081 * Specifies the attribute type for the attribute whose values are 082 * to be dynamically assigned by the virtual attribute. 083 * 084 * @return Returns the value of the "attribute-type" property. 085 */ 086 AttributeType getAttributeType(); 087 088 089 090 /** 091 * Gets the "base-dn" property. 092 * <p> 093 * Specifies the base DNs for the branches containing entries that 094 * are eligible to use this virtual attribute. 095 * <p> 096 * If no values are given, then the server generates virtual 097 * attributes anywhere in the server. 098 * 099 * @return Returns an unmodifiable set containing the values of the "base-dn" property. 100 */ 101 SortedSet<DN> getBaseDN(); 102 103 104 105 /** 106 * Gets the "conflict-behavior" property. 107 * <p> 108 * Specifies the behavior that the server is to exhibit for entries 109 * that already contain one or more real values for the associated 110 * attribute. 111 * 112 * @return Returns the value of the "conflict-behavior" property. 113 */ 114 ConflictBehavior getConflictBehavior(); 115 116 117 118 /** 119 * Gets the "enabled" property. 120 * <p> 121 * Indicates whether the Virtual Attribute is enabled for use. 122 * 123 * @return Returns the value of the "enabled" property. 124 */ 125 boolean isEnabled(); 126 127 128 129 /** 130 * Gets the "filter" property. 131 * <p> 132 * Specifies the search filters to be applied against entries to 133 * determine if the virtual attribute is to be generated for those 134 * entries. 135 * <p> 136 * If no values are given, then any entry is eligible to have the 137 * value generated. If one or more filters are specified, then only 138 * entries that match at least one of those filters are allowed to 139 * have the virtual attribute. 140 * 141 * @return Returns an unmodifiable set containing the values of the "filter" property. 142 */ 143 SortedSet<String> getFilter(); 144 145 146 147 /** 148 * Gets the "group-dn" property. 149 * <p> 150 * Specifies the DNs of the groups whose members can be eligible to 151 * use this virtual attribute. 152 * <p> 153 * If no values are given, then group membership is not taken into 154 * account when generating the virtual attribute. If one or more 155 * group DNs are specified, then only members of those groups are 156 * allowed to have the virtual attribute. 157 * 158 * @return Returns an unmodifiable set containing the values of the "group-dn" property. 159 */ 160 SortedSet<DN> getGroupDN(); 161 162 163 164 /** 165 * Gets the "java-class" property. 166 * <p> 167 * Specifies the fully-qualified name of the virtual attribute 168 * provider class that generates the attribute values. 169 * 170 * @return Returns the value of the "java-class" property. 171 */ 172 String getJavaClass(); 173 174 175 176 /** 177 * Gets the "scope" property. 178 * <p> 179 * Specifies the LDAP scope associated with base DNs for entries 180 * that are eligible to use this virtual attribute. 181 * 182 * @return Returns the value of the "scope" property. 183 */ 184 Scope getScope(); 185 186}