| | |
| | | * |
| | | * |
| | | * Copyright 2007-2010 Sun Microsystems, Inc. |
| | | * Portions Copyright 2011 ForgeRock AS |
| | | * Portions Copyright 2011-2013 ForgeRock AS |
| | | */ |
| | | package org.opends.server.core; |
| | | |
| | |
| | | |
| | | if (groupConfiguration.isEnabled()) |
| | | { |
| | | String className = groupConfiguration.getJavaClass(); |
| | | try |
| | | { |
| | | Group group = loadGroup(className, groupConfiguration, true); |
| | | Group group = loadGroup(groupConfiguration.getJavaClass(), |
| | | groupConfiguration, true); |
| | | groupImplementations.put(groupConfiguration.dn(), group); |
| | | } |
| | | catch (InitializationException ie) |
| | | { |
| | | // Log error but keep going |
| | | logError(ie.getMessageObject()); |
| | | continue; |
| | | } |
| | | } |
| | | } |
| | |
| | | { |
| | | if (configuration.isEnabled()) |
| | | { |
| | | // Get the name of the class and make sure we can instantiate it as a |
| | | // group implementation. |
| | | String className = configuration.getJavaClass(); |
| | | try |
| | | { |
| | | loadGroup(className, configuration, false); |
| | | loadGroup(configuration.getJavaClass(), configuration, false); |
| | | } |
| | | catch (InitializationException ie) |
| | | { |
| | |
| | | return false; |
| | | } |
| | | } |
| | | |
| | | // If we've gotten here, then it's fine. |
| | | return true; |
| | | } |
| | | |
| | |
| | | public ConfigChangeResult applyConfigurationAdd( |
| | | GroupImplementationCfg configuration) |
| | | { |
| | | ResultCode resultCode = ResultCode.SUCCESS; |
| | | boolean adminActionRequired = false; |
| | | ArrayList<Message> messages = new ArrayList<Message>(); |
| | | ResultCode resultCode = ResultCode.SUCCESS; |
| | | List<Message> messages = new ArrayList<Message>(); |
| | | |
| | | configuration.addChangeListener(this); |
| | | |
| | | if (! configuration.isEnabled()) |
| | | { |
| | | return new ConfigChangeResult(resultCode, adminActionRequired, messages); |
| | | return new ConfigChangeResult(resultCode, false, messages); |
| | | } |
| | | |
| | | Group group = null; |
| | | |
| | | // Get the name of the class and make sure we can instantiate it as a group |
| | | // implementation. |
| | | String className = configuration.getJavaClass(); |
| | | try |
| | | { |
| | | group = loadGroup(className, configuration, true); |
| | | group = loadGroup(configuration.getJavaClass(), configuration, true); |
| | | } |
| | | catch (InitializationException ie) |
| | | { |
| | | if (resultCode == ResultCode.SUCCESS) |
| | | { |
| | | resultCode = DirectoryServer.getServerErrorResultCode(); |
| | | } |
| | | |
| | | resultCode = DirectoryServer.getServerErrorResultCode(); |
| | | messages.add(ie.getMessageObject()); |
| | | } |
| | | |
| | |
| | | |
| | | // FIXME -- We need to make sure to find all groups of this type in the |
| | | // server before returning. |
| | | |
| | | return new ConfigChangeResult(resultCode, adminActionRequired, messages); |
| | | return new ConfigChangeResult(resultCode, false, messages); |
| | | } |
| | | |
| | | |
| | |
| | | public ConfigChangeResult applyConfigurationDelete( |
| | | GroupImplementationCfg configuration) |
| | | { |
| | | ResultCode resultCode = ResultCode.SUCCESS; |
| | | boolean adminActionRequired = false; |
| | | ArrayList<Message> messages = new ArrayList<Message>(); |
| | | ResultCode resultCode = ResultCode.SUCCESS; |
| | | List<Message> messages = new ArrayList<Message>(); |
| | | |
| | | Group group = groupImplementations.remove(configuration.dn()); |
| | | if (group != null) |
| | |
| | | group.finalizeGroupImplementation(); |
| | | } |
| | | |
| | | return new ConfigChangeResult(resultCode, adminActionRequired, messages); |
| | | return new ConfigChangeResult(resultCode, false, messages); |
| | | } |
| | | |
| | | |
| | |
| | | { |
| | | if (configuration.isEnabled()) |
| | | { |
| | | // Get the name of the class and make sure we can instantiate it as a |
| | | // group implementation. |
| | | String className = configuration.getJavaClass(); |
| | | try |
| | | { |
| | | loadGroup(className, configuration, false); |
| | | loadGroup(configuration.getJavaClass(), configuration, false); |
| | | } |
| | | catch (InitializationException ie) |
| | | { |
| | |
| | | return false; |
| | | } |
| | | } |
| | | |
| | | // If we've gotten here, then it's fine. |
| | | return true; |
| | | } |
| | | |
| | |
| | | public ConfigChangeResult applyConfigurationChange( |
| | | GroupImplementationCfg configuration) |
| | | { |
| | | ResultCode resultCode = ResultCode.SUCCESS; |
| | | boolean adminActionRequired = false; |
| | | ArrayList<Message> messages = new ArrayList<Message>(); |
| | | |
| | | |
| | | ResultCode resultCode = ResultCode.SUCCESS; |
| | | boolean adminActionRequired = false; |
| | | List<Message> messages = new ArrayList<Message>(); |
| | | // Get the existing group implementation if it's already enabled. |
| | | Group existingGroup = groupImplementations.get(configuration.dn()); |
| | | |
| | | |
| | | // If the new configuration has the group implementation disabled, then |
| | | // disable it if it is enabled, or do nothing if it's already disabled. |
| | | if (! configuration.isEnabled()) |
| | |
| | | } |
| | | catch (InitializationException ie) |
| | | { |
| | | if (resultCode == ResultCode.SUCCESS) |
| | | { |
| | | resultCode = DirectoryServer.getServerErrorResultCode(); |
| | | } |
| | | |
| | | resultCode = DirectoryServer.getServerErrorResultCode(); |
| | | messages.add(ie.getMessageObject()); |
| | | } |
| | | |
| | |
| | | */ |
| | | public Group getGroupInstance(DN entryDN) |
| | | { |
| | | Group group = null; |
| | | |
| | | lock.readLock().lock(); |
| | | try |
| | | { |
| | | group = groupInstances.get(entryDN); |
| | | return groupInstances.get(entryDN); |
| | | } |
| | | finally |
| | | { |
| | | lock.readLock().unlock(); |
| | | } |
| | | |
| | | if (group == null) |
| | | { |
| | | // FIXME -- Should we try to retrieve the corresponding entry and see if |
| | | // it is a group? |
| | | } |
| | | |
| | | return group; |
| | | } |
| | | |
| | | |
| | |
| | | { |
| | | TRACER.debugCaught(DebugLogLevel.ERROR, e); |
| | | } |
| | | |
| | | // FIXME -- Is there anything that we need to do here? |
| | | continue; |
| | | } |
| | | |
| | |
| | | { |
| | | TRACER.debugCaught(DebugLogLevel.ERROR, e); |
| | | } |
| | | |
| | | // FIXME -- Is there anything that we need to do here? |
| | | continue; |
| | | } |
| | | |
| | |
| | | groupInstances.put(entry.getDN(), groupInstance); |
| | | refreshToken++; |
| | | } |
| | | catch (Exception e) |
| | | catch (DirectoryException e) |
| | | { |
| | | if (debugEnabled()) |
| | | { |
| | | TRACER.debugCaught(DebugLogLevel.ERROR, e); |
| | | } |
| | | |
| | | // FIXME -- Handle this. |
| | | continue; |
| | | // Nothing specific to do, as it's already logged. |
| | | } |
| | | } |
| | | } |
| | |
| | | builder.replace(oldDNIndex, builder.length(), |
| | | newDNString); |
| | | String groupDNString = builder.toString(); |
| | | DN groupDN = DN.NULL_DN; |
| | | DN groupDN; |
| | | try |
| | | { |
| | | groupDN = DN.decode(groupDNString); |
| | |
| | | } |
| | | } |
| | | } |
| | | catch (Exception e) |
| | | catch (DirectoryException e) |
| | | { |
| | | if (debugEnabled()) |
| | | { |
| | | TRACER.debugCaught(DebugLogLevel.ERROR, e); |
| | | } |
| | | |
| | | // FIXME -- Do we need to do anything else? |
| | | } |
| | | } |
| | | } |