ExamplePlugin.java revision bedb386242727f98834c64397487f48d5eb6116c
/*
* 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
* trunk/opends/resource/legal-notices/OpenDS.LICENSE
* or https://OpenDS.dev.java.net/OpenDS.LICENSE.
* 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
* trunk/opends/resource/legal-notices/OpenDS.LICENSE. 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
*
*
* Portions Copyright 2006-2007 Sun Microsystems, Inc.
*/
package com.example.opends;
import static org.opends.server.loggers.ErrorLogger.logError;
import java.util.List;
import java.util.Set;
import org.opends.server.admin.server.ConfigurationChangeListener;
import org.opends.server.api.plugin.DirectoryServerPlugin;
import org.opends.server.api.plugin.PluginType;
import org.opends.server.api.plugin.StartupPluginResult;
import org.opends.server.config.ConfigException;
import org.opends.server.types.ConfigChangeResult;
import org.opends.server.types.ErrorLogCategory;
import org.opends.server.types.ErrorLogSeverity;
import org.opends.server.types.ResultCode;
import com.example.opends.server.ExamplePluginCfg;
/**
* 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
ConfigurationChangeListener<ExamplePluginCfg> {
// The current configuration.
private ExamplePluginCfg config;
/**
* Default constructor.
*/
public ExamplePlugin() {
super();
}
/**
* {@inheritDoc}
*/
@Override()
public void initializePlugin(Set<PluginType> pluginTypes,
ExamplePluginCfg configuration)
throws ConfigException {
// 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(-1, "Invalid plugin type " + t
+ " for the example plugin.");
}
}
// Register change listeners. These are not really necessary for
// this plugin since it is only used during server start-up.
configuration.addExampleChangeListener(this);
// Save the configuration.
this.config = configuration;
}
/**
* {@inheritDoc}
*/
@Override
public StartupPluginResult doStartup() {
// Log the provided message.
logError(ErrorLogCategory.CONFIGURATION, ErrorLogSeverity.NOTICE,
"Example plugin message '" + config.getMessage() + "'.", 9999);
return StartupPluginResult.SUCCESS;
}
/**
* {@inheritDoc}
*/
public ConfigChangeResult applyConfigurationChange(
ExamplePluginCfg config) {
// 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.
logError(ErrorLogCategory.CONFIGURATION, ErrorLogSeverity.NOTICE,
"Example plugin message has been changed from '"
+ this.config.getMessage() + "' to '"
+ config.getMessage() + "'.", 9999);
// Update the configuration.
this.config = config;
// Update was successfull, no restart required.
return new ConfigChangeResult(ResultCode.SUCCESS, false);
}
/**
* {@inheritDoc}
*/
public boolean isConfigurationChangeAcceptable(
ExamplePluginCfg config, List<String> messages) {
// 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;
}
}