/*
* 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
* 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 2006-2008 Sun Microsystems, Inc.
*/
/**
* The example plugin implementation class. This plugin will output
* the configured message to the error log during server start up.
*/
public class ExamplePlugin extends
DirectoryServerPlugin<ExamplePluginCfg> implements
// The current configuration.
/**
* Default constructor.
*/
public ExamplePlugin() {
super();
}
/**
* Performs any initialization necessary for this plugin. This will
* be called as soon as the plugin has been loaded and before it is
* registered with the server.
*
* @param pluginTypes The set of plugin types that indicate the
* ways in which this plugin will be invoked.
* @param configuration The configuration for this plugin.
*
* @throws ConfigException If the provided entry does not contain
* a valid configuration for this plugin.
*
* @throws InitializationException If a problem occurs while
* initializing the plugin that is
* not related to the server
* configuration.
*/
@Override()
throws ConfigException, InitializationException {
// This plugin may only be used as a server startup plugin.
for (PluginType t : pluginTypes) {
switch (t) {
case STARTUP:
// This is fine.
break;
default:
throw new ConfigException(message);
}
}
// Register change listeners. These are not really necessary for
// this plugin since it is only used during server start-up.
// Save the configuration.
this.config = configuration;
}
/**
* Performs any processing that should be done when the Directory
* Server is in the process of starting. This method will be called
* after virtually all other initialization has been performed but
* before the connection handlers are started.
*
* @return The result of the startup plugin processing.
*/
// Log the provided message.
}
/**
* Applies the configuration changes to this change listener.
*
* @param config
* The new configuration containing the changes.
* @return Returns information about the result of changing the
* configuration.
*/
// The new configuration has already been validated.
// Log a message to say that the configuration has changed. This
// isn't necessary, but we'll do it just to show that the change
// has taken effect.
// Update the configuration.
// Update was successfull, no restart required.
}
/**
* Indicates whether the proposed change to the configuration is
* acceptable to this change listener.
*
* @param config
* The new configuration containing the changes.
* @param messages
* A list that can be used to hold messages about why the
* provided configuration is not acceptable.
* @return Returns <code>true</code> if the proposed change is
* acceptable, or <code>false</code> if it is not.
*/
public boolean isConfigurationChangeAcceptable(
// The only thing that can be validated here is the plugin's
// message. However, it is always going to be valid, so let's
// always return true.
return true;
}
}