| | |
| | | import java.util.concurrent.ConcurrentHashMap; |
| | | import java.lang.reflect.Method; |
| | | |
| | | import org.opends.server.api.ExtendedOperationHandler; |
| | | import org.opends.server.config.ConfigException; |
| | | import org.opends.server.types.ConfigChangeResult; |
| | | import org.opends.server.types.DN; |
| | | import org.opends.server.types.InitializationException; |
| | | import org.opends.server.types.ResultCode; |
| | | |
| | | import static org.opends.server.loggers.debug.DebugLogger.*; |
| | | import org.opends.server.loggers.debug.DebugTracer; |
| | | import org.opends.server.types.DebugLogLevel; |
| | | import static org.opends.server.messages.ConfigMessages.*; |
| | | import static org.opends.server.messages.MessageHandler.getMessage; |
| | | import org.opends.server.admin.ClassPropertyDefinition; |
| | | import org.opends.server.admin.server.ConfigurationChangeListener; |
| | | import org.opends.server.admin.server.ConfigurationAddListener; |
| | | import org.opends.server.admin.server.ConfigurationDeleteListener; |
| | |
| | | import org.opends.server.admin.std.server.ExtendedOperationHandlerCfg; |
| | | import org.opends.server.admin.std.server.RootCfg; |
| | | import org.opends.server.admin.std.meta.ExtendedOperationHandlerCfgDefn; |
| | | import org.opends.server.admin.ClassPropertyDefinition; |
| | | import org.opends.server.api.ExtendedOperationHandler; |
| | | import org.opends.server.config.ConfigException; |
| | | import org.opends.server.loggers.debug.DebugTracer; |
| | | import org.opends.server.types.ConfigChangeResult; |
| | | import org.opends.server.types.DebugLogLevel; |
| | | import org.opends.server.types.DN; |
| | | import org.opends.server.types.InitializationException; |
| | | import org.opends.server.types.ResultCode; |
| | | |
| | | import static org.opends.server.loggers.debug.DebugLogger.*; |
| | | import static org.opends.server.messages.ConfigMessages.*; |
| | | import static org.opends.server.messages.MessageHandler.*; |
| | | import static org.opends.server.util.StaticUtils.stackTraceToSingleLineString; |
| | | |
| | | |
| | | |
| | | /** |
| | | * This class defines a utility that will be used to manage the set of extended |
| | | * operation handlers defined in the Directory Server. It will initialize the |
| | |
| | | |
| | | |
| | | |
| | | |
| | | // A mapping between the DNs of the config entries and the associated extended |
| | | // operation handlers. |
| | | private ConcurrentHashMap<DN,ExtendedOperationHandler> handlers; |
| | |
| | | */ |
| | | public ExtendedOperationConfigManager() |
| | | { |
| | | handlers = new ConcurrentHashMap<DN,ExtendedOperationHandler>(); |
| | | handlers = new ConcurrentHashMap<DN,ExtendedOperationHandler>(); |
| | | } |
| | | |
| | | |
| | |
| | | |
| | | // Determines whether or not the new configuration's implementation |
| | | // class is acceptable. |
| | | private boolean isJavaClassAcceptable( |
| | | ExtendedOperationHandlerCfg config, |
| | | List<String> unacceptableReasons) |
| | | private boolean isJavaClassAcceptable(ExtendedOperationHandlerCfg config, |
| | | List<String> unacceptableReasons) |
| | | { |
| | | String className = config.getJavaImplementationClass(); |
| | | ExtendedOperationHandlerCfgDefn d = |
| | |
| | | Class<? extends ExtendedOperationHandler> theClass; |
| | | try { |
| | | theClass = pd.loadClass(className, ExtendedOperationHandler.class); |
| | | theClass.newInstance(); |
| | | ExtendedOperationHandler extOpHandler = theClass.newInstance(); |
| | | |
| | | // Determine the initialization method to use: it must take a |
| | | // single parameter which is the exact type of the configuration |
| | | // object. |
| | | theClass.getMethod("initializeExtendedOperationHandler", |
| | | config.definition().getServerConfigurationClass()); |
| | | Method method = theClass.getMethod("isConfigurationAcceptable", |
| | | ExtendedOperationHandlerCfg.class, |
| | | List.class); |
| | | Boolean acceptable = (Boolean) method.invoke(extOpHandler, config, |
| | | unacceptableReasons); |
| | | |
| | | if (! acceptable) |
| | | { |
| | | return false; |
| | | } |
| | | } |
| | | catch (Exception e) |
| | | { |