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 010 * trunk/opends/resource/legal-notices/OpenDS.LICENSE 011 * or https://OpenDS.dev.java.net/OpenDS.LICENSE. 012 * See the License for the specific language governing permissions 013 * and limitations under the License. 014 * 015 * When distributing Covered Code, include this CDDL HEADER in each 016 * file and include the License file at 017 * trunk/opends/resource/legal-notices/OpenDS.LICENSE. If applicable, 018 * add the following below this CDDL HEADER, with the fields enclosed 019 * by brackets "[]" replaced with your own identifying information: 020 * Portions Copyright [yyyy] [name of copyright owner] 021 * 022 * CDDL HEADER END 023 * 024 * 025 * Copyright 2008 Sun Microsystems, Inc. 026 */ 027 package org.opends.server.admin.std.meta; 028 029 030 031 import org.opends.server.admin.BooleanPropertyDefinition; 032 import org.opends.server.admin.ClassPropertyDefinition; 033 import org.opends.server.admin.client.AuthorizationException; 034 import org.opends.server.admin.client.CommunicationException; 035 import org.opends.server.admin.client.ConcurrentModificationException; 036 import org.opends.server.admin.client.ManagedObject; 037 import org.opends.server.admin.client.MissingMandatoryPropertiesException; 038 import org.opends.server.admin.client.OperationRejectedException; 039 import org.opends.server.admin.ManagedObjectAlreadyExistsException; 040 import org.opends.server.admin.ManagedObjectDefinition; 041 import org.opends.server.admin.PropertyProvider; 042 import org.opends.server.admin.server.ConfigurationChangeListener; 043 import org.opends.server.admin.server.ServerManagedObject; 044 import org.opends.server.admin.std.client.OrderingMatchingRuleCfgClient; 045 import org.opends.server.admin.std.server.MatchingRuleCfg; 046 import org.opends.server.admin.std.server.OrderingMatchingRuleCfg; 047 import org.opends.server.admin.Tag; 048 import org.opends.server.types.DN; 049 050 051 052 /** 053 * An interface for querying the Ordering Matching Rule managed object 054 * definition meta information. 055 * <p> 056 * Ordering Matching Rules define a set of rules for performing 057 * ordering matching operations against assertion values. 058 */ 059 public final class OrderingMatchingRuleCfgDefn extends ManagedObjectDefinition<OrderingMatchingRuleCfgClient, OrderingMatchingRuleCfg> { 060 061 // The singleton configuration definition instance. 062 private static final OrderingMatchingRuleCfgDefn INSTANCE = new OrderingMatchingRuleCfgDefn(); 063 064 065 066 // Register the tags associated with this managed object definition. 067 static { 068 INSTANCE.registerTag(Tag.valueOf("core-server")); 069 } 070 071 072 073 /** 074 * Get the Ordering Matching Rule configuration definition 075 * singleton. 076 * 077 * @return Returns the Ordering Matching Rule configuration 078 * definition singleton. 079 */ 080 public static OrderingMatchingRuleCfgDefn getInstance() { 081 return INSTANCE; 082 } 083 084 085 086 /** 087 * Private constructor. 088 */ 089 private OrderingMatchingRuleCfgDefn() { 090 super("ordering-matching-rule", MatchingRuleCfgDefn.getInstance()); 091 } 092 093 094 095 /** 096 * {@inheritDoc} 097 */ 098 public OrderingMatchingRuleCfgClient createClientConfiguration( 099 ManagedObject<? extends OrderingMatchingRuleCfgClient> impl) { 100 return new OrderingMatchingRuleCfgClientImpl(impl); 101 } 102 103 104 105 /** 106 * {@inheritDoc} 107 */ 108 public OrderingMatchingRuleCfg createServerConfiguration( 109 ServerManagedObject<? extends OrderingMatchingRuleCfg> impl) { 110 return new OrderingMatchingRuleCfgServerImpl(impl); 111 } 112 113 114 115 /** 116 * {@inheritDoc} 117 */ 118 public Class<OrderingMatchingRuleCfg> getServerConfigurationClass() { 119 return OrderingMatchingRuleCfg.class; 120 } 121 122 123 124 /** 125 * Get the "enabled" property definition. 126 * <p> 127 * Indicates whether the Ordering Matching Rule is enabled for use. 128 * 129 * @return Returns the "enabled" property definition. 130 */ 131 public BooleanPropertyDefinition getEnabledPropertyDefinition() { 132 return MatchingRuleCfgDefn.getInstance().getEnabledPropertyDefinition(); 133 } 134 135 136 137 /** 138 * Get the "java-class" property definition. 139 * <p> 140 * Specifies the fully-qualified name of the Java class that 141 * provides the Ordering Matching Rule implementation. 142 * 143 * @return Returns the "java-class" property definition. 144 */ 145 public ClassPropertyDefinition getJavaClassPropertyDefinition() { 146 return MatchingRuleCfgDefn.getInstance().getJavaClassPropertyDefinition(); 147 } 148 149 150 151 /** 152 * Managed object client implementation. 153 */ 154 private static class OrderingMatchingRuleCfgClientImpl implements 155 OrderingMatchingRuleCfgClient { 156 157 // Private implementation. 158 private ManagedObject<? extends OrderingMatchingRuleCfgClient> impl; 159 160 161 162 // Private constructor. 163 private OrderingMatchingRuleCfgClientImpl( 164 ManagedObject<? extends OrderingMatchingRuleCfgClient> impl) { 165 this.impl = impl; 166 } 167 168 169 170 /** 171 * {@inheritDoc} 172 */ 173 public Boolean isEnabled() { 174 return impl.getPropertyValue(INSTANCE.getEnabledPropertyDefinition()); 175 } 176 177 178 179 /** 180 * {@inheritDoc} 181 */ 182 public void setEnabled(boolean value) { 183 impl.setPropertyValue(INSTANCE.getEnabledPropertyDefinition(), value); 184 } 185 186 187 188 /** 189 * {@inheritDoc} 190 */ 191 public String getJavaClass() { 192 return impl.getPropertyValue(INSTANCE.getJavaClassPropertyDefinition()); 193 } 194 195 196 197 /** 198 * {@inheritDoc} 199 */ 200 public void setJavaClass(String value) { 201 impl.setPropertyValue(INSTANCE.getJavaClassPropertyDefinition(), value); 202 } 203 204 205 206 /** 207 * {@inheritDoc} 208 */ 209 public ManagedObjectDefinition<? extends OrderingMatchingRuleCfgClient, ? extends OrderingMatchingRuleCfg> definition() { 210 return INSTANCE; 211 } 212 213 214 215 /** 216 * {@inheritDoc} 217 */ 218 public PropertyProvider properties() { 219 return impl; 220 } 221 222 223 224 /** 225 * {@inheritDoc} 226 */ 227 public void commit() throws ManagedObjectAlreadyExistsException, 228 MissingMandatoryPropertiesException, ConcurrentModificationException, 229 OperationRejectedException, AuthorizationException, 230 CommunicationException { 231 impl.commit(); 232 } 233 234 } 235 236 237 238 /** 239 * Managed object server implementation. 240 */ 241 private static class OrderingMatchingRuleCfgServerImpl implements 242 OrderingMatchingRuleCfg { 243 244 // Private implementation. 245 private ServerManagedObject<? extends OrderingMatchingRuleCfg> impl; 246 247 // The value of the "enabled" property. 248 private final boolean pEnabled; 249 250 // The value of the "java-class" property. 251 private final String pJavaClass; 252 253 254 255 // Private constructor. 256 private OrderingMatchingRuleCfgServerImpl(ServerManagedObject<? extends OrderingMatchingRuleCfg> impl) { 257 this.impl = impl; 258 this.pEnabled = impl.getPropertyValue(INSTANCE.getEnabledPropertyDefinition()); 259 this.pJavaClass = impl.getPropertyValue(INSTANCE.getJavaClassPropertyDefinition()); 260 } 261 262 263 264 /** 265 * {@inheritDoc} 266 */ 267 public void addOrderingChangeListener( 268 ConfigurationChangeListener<OrderingMatchingRuleCfg> listener) { 269 impl.registerChangeListener(listener); 270 } 271 272 273 274 /** 275 * {@inheritDoc} 276 */ 277 public void removeOrderingChangeListener( 278 ConfigurationChangeListener<OrderingMatchingRuleCfg> listener) { 279 impl.deregisterChangeListener(listener); 280 } 281 /** 282 * {@inheritDoc} 283 */ 284 public void addChangeListener( 285 ConfigurationChangeListener<MatchingRuleCfg> listener) { 286 impl.registerChangeListener(listener); 287 } 288 289 290 291 /** 292 * {@inheritDoc} 293 */ 294 public void removeChangeListener( 295 ConfigurationChangeListener<MatchingRuleCfg> listener) { 296 impl.deregisterChangeListener(listener); 297 } 298 299 300 301 /** 302 * {@inheritDoc} 303 */ 304 public boolean isEnabled() { 305 return pEnabled; 306 } 307 308 309 310 /** 311 * {@inheritDoc} 312 */ 313 public String getJavaClass() { 314 return pJavaClass; 315 } 316 317 318 319 /** 320 * {@inheritDoc} 321 */ 322 public Class<? extends OrderingMatchingRuleCfg> configurationClass() { 323 return OrderingMatchingRuleCfg.class; 324 } 325 326 327 328 /** 329 * {@inheritDoc} 330 */ 331 public DN dn() { 332 return impl.getDN(); 333 } 334 335 } 336 }