/** {@inheritDoc} */ public ConfigChangeResult applyConfigurationAdd(LogRotationPolicyCfg config) { // Default result code. ResultCode resultCode = ResultCode.SUCCESS; boolean adminActionRequired = false; ArrayList<Message> messages = new ArrayList<Message>(); try { RotationPolicy rotationPolicy = getRotationPolicy(config); DirectoryServer.registerRotationPolicy(config.dn(), rotationPolicy); } catch (ConfigException e) { if (debugEnabled()) { TRACER.debugCaught(DebugLogLevel.ERROR, e); } messages.add(e.getMessageObject()); resultCode = DirectoryServer.getServerErrorResultCode(); } catch (Exception e) { if (debugEnabled()) { TRACER.debugCaught(DebugLogLevel.ERROR, e); } messages.add( ERR_CONFIG_ROTATION_POLICY_CANNOT_CREATE_POLICY.get( String.valueOf(config.dn().toString()), stackTraceToSingleLineString(e))); resultCode = DirectoryServer.getServerErrorResultCode(); } return new ConfigChangeResult(resultCode, adminActionRequired, messages); }
/** {@inheritDoc} */ public ConfigChangeResult applyConfigurationAdd(RootDNUserCfg configuration) { configuration.addChangeListener(this); ResultCode resultCode = ResultCode.SUCCESS; boolean adminActionRequired = false; ArrayList<Message> messages = new ArrayList<Message>(); HashSet<DN> altBindDNs = new HashSet<DN>(); for (DN altBindDN : configuration.getAlternateBindDN()) { try { DirectoryServer.registerAlternateRootDN(configuration.dn(), altBindDN); altBindDNs.add(altBindDN); } catch (DirectoryException de) { // This shouldn't happen, since the set of DNs should have already been // validated. resultCode = DirectoryServer.getServerErrorResultCode(); messages.add(de.getMessageObject()); for (DN dn : altBindDNs) { DirectoryServer.deregisterAlternateRootBindDN(dn); } break; } } if (resultCode == ResultCode.SUCCESS) { DirectoryServer.registerRootDN(configuration.dn()); alternateBindDNs.put(configuration.dn(), altBindDNs); } return new ConfigChangeResult(resultCode, adminActionRequired, messages); }
/** {@inheritDoc} */ public ConfigChangeResult applyConfigurationChange(RootDNUserCfg configuration) { ResultCode resultCode = ResultCode.SUCCESS; boolean adminActionRequired = false; ArrayList<Message> messages = new ArrayList<Message>(); HashSet<DN> setDNs = new HashSet<DN>(); HashSet<DN> addDNs = new HashSet<DN>(); HashSet<DN> delDNs = new HashSet<DN>(alternateBindDNs.get(configuration.dn())); for (DN altBindDN : configuration.getAlternateBindDN()) { setDNs.add(altBindDN); if (!delDNs.remove(altBindDN)) { addDNs.add(altBindDN); } } for (DN dn : delDNs) { DirectoryServer.deregisterAlternateRootBindDN(dn); } HashSet<DN> addedDNs = new HashSet<DN>(addDNs.size()); for (DN dn : addDNs) { try { DirectoryServer.registerAlternateRootDN(configuration.dn(), dn); addedDNs.add(dn); } catch (DirectoryException de) { // This shouldn't happen, since the set of DNs should have already been // validated. resultCode = DirectoryServer.getServerErrorResultCode(); messages.add(de.getMessageObject()); for (DN addedDN : addedDNs) { DirectoryServer.deregisterAlternateRootBindDN(addedDN); } for (DN deletedDN : delDNs) { try { DirectoryServer.registerAlternateRootDN(configuration.dn(), deletedDN); } catch (Exception e) { // This should also never happen. alternateBindDNs.get(configuration.dn()).remove(deletedDN); } } } } if (resultCode == ResultCode.SUCCESS) { alternateBindDNs.put(configuration.dn(), setDNs); } return new ConfigChangeResult(resultCode, adminActionRequired, messages); }
/** {@inheritDoc} */ public ConfigChangeResult applyConfigurationDelete(LogRotationPolicyCfg config) { // Default result code. ResultCode resultCode = ResultCode.SUCCESS; boolean adminActionRequired = false; ArrayList<Message> messages = new ArrayList<Message>(); RotationPolicy policy = DirectoryServer.getRotationPolicy(config.dn()); if (policy != null) { DirectoryServer.deregisterRotationPolicy(config.dn()); } else { // TODO: Add message and check for usage resultCode = DirectoryServer.getServerErrorResultCode(); } return new ConfigChangeResult(resultCode, adminActionRequired, messages); }