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.AdministratorAction;
032    import org.opends.server.admin.BooleanPropertyDefinition;
033    import org.opends.server.admin.ClassPropertyDefinition;
034    import org.opends.server.admin.client.AuthorizationException;
035    import org.opends.server.admin.client.CommunicationException;
036    import org.opends.server.admin.client.ConcurrentModificationException;
037    import org.opends.server.admin.client.ManagedObject;
038    import org.opends.server.admin.client.MissingMandatoryPropertiesException;
039    import org.opends.server.admin.client.OperationRejectedException;
040    import org.opends.server.admin.DefaultBehaviorProvider;
041    import org.opends.server.admin.DefinedDefaultBehaviorProvider;
042    import org.opends.server.admin.ManagedObjectAlreadyExistsException;
043    import org.opends.server.admin.ManagedObjectDefinition;
044    import org.opends.server.admin.PropertyOption;
045    import org.opends.server.admin.PropertyProvider;
046    import org.opends.server.admin.server.ConfigurationChangeListener;
047    import org.opends.server.admin.server.ServerManagedObject;
048    import org.opends.server.admin.std.client.GetConnectionIdExtendedOperationHandlerCfgClient;
049    import org.opends.server.admin.std.server.ExtendedOperationHandlerCfg;
050    import org.opends.server.admin.std.server.GetConnectionIdExtendedOperationHandlerCfg;
051    import org.opends.server.admin.Tag;
052    import org.opends.server.types.DN;
053    
054    
055    
056    /**
057     * An interface for querying the Get Connection Id Extended Operation
058     * Handler managed object definition meta information.
059     * <p>
060     * The Get Connection Id Extended Operation Handler provides a
061     * mechanism for clients to obtain the internal connection ID that the
062     * server uses to reference their client connection.
063     */
064    public final class GetConnectionIdExtendedOperationHandlerCfgDefn extends ManagedObjectDefinition<GetConnectionIdExtendedOperationHandlerCfgClient, GetConnectionIdExtendedOperationHandlerCfg> {
065    
066      // The singleton configuration definition instance.
067      private static final GetConnectionIdExtendedOperationHandlerCfgDefn INSTANCE = new GetConnectionIdExtendedOperationHandlerCfgDefn();
068    
069    
070    
071      // The "java-class" property definition.
072      private static final ClassPropertyDefinition PD_JAVA_CLASS;
073    
074    
075    
076      // Build the "java-class" property definition.
077      static {
078          ClassPropertyDefinition.Builder builder = ClassPropertyDefinition.createBuilder(INSTANCE, "java-class");
079          builder.setOption(PropertyOption.MANDATORY);
080          builder.setOption(PropertyOption.ADVANCED);
081          builder.setAdministratorAction(new AdministratorAction(AdministratorAction.Type.COMPONENT_RESTART, INSTANCE, "java-class"));
082          DefaultBehaviorProvider<String> provider = new DefinedDefaultBehaviorProvider<String>("org.opends.server.extensions.GetConnectionIDExtendedOperation");
083          builder.setDefaultBehaviorProvider(provider);
084          builder.addInstanceOf("org.opends.server.api.ExtendedOperationHandler");
085          PD_JAVA_CLASS = builder.getInstance();
086          INSTANCE.registerPropertyDefinition(PD_JAVA_CLASS);
087      }
088    
089    
090    
091      // Register the tags associated with this managed object definition.
092      static {
093        INSTANCE.registerTag(Tag.valueOf("core-server"));
094      }
095    
096    
097    
098      /**
099       * Get the Get Connection Id Extended Operation Handler
100       * configuration definition singleton.
101       *
102       * @return Returns the Get Connection Id Extended Operation Handler
103       *         configuration definition singleton.
104       */
105      public static GetConnectionIdExtendedOperationHandlerCfgDefn getInstance() {
106        return INSTANCE;
107      }
108    
109    
110    
111      /**
112       * Private constructor.
113       */
114      private GetConnectionIdExtendedOperationHandlerCfgDefn() {
115        super("get-connection-id-extended-operation-handler", ExtendedOperationHandlerCfgDefn.getInstance());
116      }
117    
118    
119    
120      /**
121       * {@inheritDoc}
122       */
123      public GetConnectionIdExtendedOperationHandlerCfgClient createClientConfiguration(
124          ManagedObject<? extends GetConnectionIdExtendedOperationHandlerCfgClient> impl) {
125        return new GetConnectionIdExtendedOperationHandlerCfgClientImpl(impl);
126      }
127    
128    
129    
130      /**
131       * {@inheritDoc}
132       */
133      public GetConnectionIdExtendedOperationHandlerCfg createServerConfiguration(
134          ServerManagedObject<? extends GetConnectionIdExtendedOperationHandlerCfg> impl) {
135        return new GetConnectionIdExtendedOperationHandlerCfgServerImpl(impl);
136      }
137    
138    
139    
140      /**
141       * {@inheritDoc}
142       */
143      public Class<GetConnectionIdExtendedOperationHandlerCfg> getServerConfigurationClass() {
144        return GetConnectionIdExtendedOperationHandlerCfg.class;
145      }
146    
147    
148    
149      /**
150       * Get the "enabled" property definition.
151       * <p>
152       * Indicates whether the Get Connection Id Extended Operation
153       * Handler is enabled (that is, whether the types of extended
154       * operations are allowed in the server).
155       *
156       * @return Returns the "enabled" property definition.
157       */
158      public BooleanPropertyDefinition getEnabledPropertyDefinition() {
159        return ExtendedOperationHandlerCfgDefn.getInstance().getEnabledPropertyDefinition();
160      }
161    
162    
163    
164      /**
165       * Get the "java-class" property definition.
166       * <p>
167       * Specifies the fully-qualified name of the Java class that
168       * provides the Get Connection Id Extended Operation Handler
169       * implementation.
170       *
171       * @return Returns the "java-class" property definition.
172       */
173      public ClassPropertyDefinition getJavaClassPropertyDefinition() {
174        return PD_JAVA_CLASS;
175      }
176    
177    
178    
179      /**
180       * Managed object client implementation.
181       */
182      private static class GetConnectionIdExtendedOperationHandlerCfgClientImpl implements
183        GetConnectionIdExtendedOperationHandlerCfgClient {
184    
185        // Private implementation.
186        private ManagedObject<? extends GetConnectionIdExtendedOperationHandlerCfgClient> impl;
187    
188    
189    
190        // Private constructor.
191        private GetConnectionIdExtendedOperationHandlerCfgClientImpl(
192            ManagedObject<? extends GetConnectionIdExtendedOperationHandlerCfgClient> impl) {
193          this.impl = impl;
194        }
195    
196    
197    
198        /**
199         * {@inheritDoc}
200         */
201        public Boolean isEnabled() {
202          return impl.getPropertyValue(INSTANCE.getEnabledPropertyDefinition());
203        }
204    
205    
206    
207        /**
208         * {@inheritDoc}
209         */
210        public void setEnabled(boolean value) {
211          impl.setPropertyValue(INSTANCE.getEnabledPropertyDefinition(), value);
212        }
213    
214    
215    
216        /**
217         * {@inheritDoc}
218         */
219        public String getJavaClass() {
220          return impl.getPropertyValue(INSTANCE.getJavaClassPropertyDefinition());
221        }
222    
223    
224    
225        /**
226         * {@inheritDoc}
227         */
228        public void setJavaClass(String value) {
229          impl.setPropertyValue(INSTANCE.getJavaClassPropertyDefinition(), value);
230        }
231    
232    
233    
234        /**
235         * {@inheritDoc}
236         */
237        public ManagedObjectDefinition<? extends GetConnectionIdExtendedOperationHandlerCfgClient, ? extends GetConnectionIdExtendedOperationHandlerCfg> definition() {
238          return INSTANCE;
239        }
240    
241    
242    
243        /**
244         * {@inheritDoc}
245         */
246        public PropertyProvider properties() {
247          return impl;
248        }
249    
250    
251    
252        /**
253         * {@inheritDoc}
254         */
255        public void commit() throws ManagedObjectAlreadyExistsException,
256            MissingMandatoryPropertiesException, ConcurrentModificationException,
257            OperationRejectedException, AuthorizationException,
258            CommunicationException {
259          impl.commit();
260        }
261    
262      }
263    
264    
265    
266      /**
267       * Managed object server implementation.
268       */
269      private static class GetConnectionIdExtendedOperationHandlerCfgServerImpl implements
270        GetConnectionIdExtendedOperationHandlerCfg {
271    
272        // Private implementation.
273        private ServerManagedObject<? extends GetConnectionIdExtendedOperationHandlerCfg> impl;
274    
275        // The value of the "enabled" property.
276        private final boolean pEnabled;
277    
278        // The value of the "java-class" property.
279        private final String pJavaClass;
280    
281    
282    
283        // Private constructor.
284        private GetConnectionIdExtendedOperationHandlerCfgServerImpl(ServerManagedObject<? extends GetConnectionIdExtendedOperationHandlerCfg> impl) {
285          this.impl = impl;
286          this.pEnabled = impl.getPropertyValue(INSTANCE.getEnabledPropertyDefinition());
287          this.pJavaClass = impl.getPropertyValue(INSTANCE.getJavaClassPropertyDefinition());
288        }
289    
290    
291    
292        /**
293         * {@inheritDoc}
294         */
295        public void addGetConnectionIdChangeListener(
296            ConfigurationChangeListener<GetConnectionIdExtendedOperationHandlerCfg> listener) {
297          impl.registerChangeListener(listener);
298        }
299    
300    
301    
302        /**
303         * {@inheritDoc}
304         */
305        public void removeGetConnectionIdChangeListener(
306            ConfigurationChangeListener<GetConnectionIdExtendedOperationHandlerCfg> listener) {
307          impl.deregisterChangeListener(listener);
308        }
309        /**
310         * {@inheritDoc}
311         */
312        public void addChangeListener(
313            ConfigurationChangeListener<ExtendedOperationHandlerCfg> listener) {
314          impl.registerChangeListener(listener);
315        }
316    
317    
318    
319        /**
320         * {@inheritDoc}
321         */
322        public void removeChangeListener(
323            ConfigurationChangeListener<ExtendedOperationHandlerCfg> listener) {
324          impl.deregisterChangeListener(listener);
325        }
326    
327    
328    
329        /**
330         * {@inheritDoc}
331         */
332        public boolean isEnabled() {
333          return pEnabled;
334        }
335    
336    
337    
338        /**
339         * {@inheritDoc}
340         */
341        public String getJavaClass() {
342          return pJavaClass;
343        }
344    
345    
346    
347        /**
348         * {@inheritDoc}
349         */
350        public Class<? extends GetConnectionIdExtendedOperationHandlerCfg> configurationClass() {
351          return GetConnectionIdExtendedOperationHandlerCfg.class;
352        }
353    
354    
355    
356        /**
357         * {@inheritDoc}
358         */
359        public DN dn() {
360          return impl.getDN();
361        }
362    
363      }
364    }