| | |
| | | * CDDL HEADER END |
| | | * |
| | | * |
| | | * Portions Copyright 2006 Sun Microsystems, Inc. |
| | | * Portions Copyright 2006-2007 Sun Microsystems, Inc. |
| | | */ |
| | | package org.opends.server.config; |
| | | |
| | |
| | | import org.opends.server.types.DN; |
| | | import org.opends.server.types.Entry; |
| | | import org.opends.server.types.ObjectClass; |
| | | import org.opends.server.types.DebugLogLevel; |
| | | |
| | | import static org.opends.server.config.ConfigConstants.*; |
| | | import static org.opends.server.loggers.Debug.*; |
| | | import static org.opends.server.loggers.debug.DebugLogger.debugCought; |
| | | import static org.opends.server.loggers.debug.DebugLogger.debugEnabled; |
| | | import static org.opends.server.messages.ConfigMessages.*; |
| | | import static org.opends.server.messages.MessageHandler.*; |
| | | import static org.opends.server.util.StaticUtils.*; |
| | |
| | | */ |
| | | public class ConfigEntry |
| | | { |
| | | /** |
| | | * The fully-qualified name of this class for debugging purposes. |
| | | */ |
| | | private static final String CLASS_NAME = |
| | | "org.opends.server.config.ConfigEntry"; |
| | | |
| | | |
| | | |
| | |
| | | */ |
| | | public ConfigEntry(Entry entry, ConfigEntry parent) |
| | | { |
| | | assert debugConstructor(CLASS_NAME, String.valueOf(entry), |
| | | String.valueOf(parent)); |
| | | |
| | | this.entry = entry; |
| | | this.parent = parent; |
| | |
| | | */ |
| | | public Entry getEntry() |
| | | { |
| | | assert debugEnter(CLASS_NAME, "getEntry"); |
| | | |
| | | return entry; |
| | | } |
| | |
| | | */ |
| | | public void setEntry(Entry entry) |
| | | { |
| | | assert debugEnter(CLASS_NAME, "setEntry", String.valueOf(entry)); |
| | | |
| | | entryLock.lock(); |
| | | |
| | |
| | | */ |
| | | public DN getDN() |
| | | { |
| | | assert debugEnter(CLASS_NAME, "getDN"); |
| | | |
| | | return entry.getDN(); |
| | | } |
| | |
| | | */ |
| | | public boolean hasObjectClass(String name) |
| | | { |
| | | assert debugEnter(CLASS_NAME, "hasObjectClass", String.valueOf(name)); |
| | | |
| | | ObjectClass oc = DirectoryServer.getObjectClass(name.toLowerCase()); |
| | | if (oc == null) |
| | |
| | | public ConfigAttribute getConfigAttribute(ConfigAttribute stub) |
| | | throws ConfigException |
| | | { |
| | | assert debugEnter(CLASS_NAME, "getConfigAttribute", String.valueOf(stub)); |
| | | |
| | | String attrName = stub.getName(); |
| | | AttributeType attrType = |
| | |
| | | */ |
| | | public void putConfigAttribute(ConfigAttribute attribute) |
| | | { |
| | | assert debugEnter(CLASS_NAME, "putConfigAttribute", |
| | | String.valueOf(attribute)); |
| | | |
| | | String name = attribute.getName(); |
| | | AttributeType attrType = |
| | |
| | | */ |
| | | public boolean removeConfigAttribute(String lowerName) |
| | | { |
| | | assert debugEnter(CLASS_NAME, "removeConfigAttribute", |
| | | String.valueOf(lowerName)); |
| | | |
| | | for (AttributeType t : entry.getUserAttributes().keySet()) |
| | | { |
| | |
| | | */ |
| | | public ConfigEntry getParent() |
| | | { |
| | | assert debugEnter(CLASS_NAME, "getParent"); |
| | | |
| | | return parent; |
| | | } |
| | |
| | | */ |
| | | public ConcurrentHashMap<DN,ConfigEntry> getChildren() |
| | | { |
| | | assert debugEnter(CLASS_NAME, "getChildren"); |
| | | |
| | | return children; |
| | | } |
| | |
| | | */ |
| | | public boolean hasChildren() |
| | | { |
| | | assert debugEnter(CLASS_NAME, "hasChildren"); |
| | | |
| | | return (! children.isEmpty()); |
| | | } |
| | |
| | | public void addChild(ConfigEntry childEntry) |
| | | throws ConfigException |
| | | { |
| | | assert debugEnter(CLASS_NAME, "addChild", String.valueOf(childEntry)); |
| | | |
| | | |
| | | ConfigEntry conflictingChild; |
| | |
| | | } |
| | | catch (Exception e) |
| | | { |
| | | assert debugException(CLASS_NAME, "addChild", e); |
| | | if (debugEnabled()) |
| | | { |
| | | debugCought(DebugLogLevel.ERROR, e); |
| | | } |
| | | |
| | | conflictingChild = null; |
| | | } |
| | |
| | | public ConfigEntry removeChild(DN childDN) |
| | | throws ConfigException |
| | | { |
| | | assert debugEnter(CLASS_NAME, "removeChild", String.valueOf(childDN)); |
| | | |
| | | entryLock.lock(); |
| | | |
| | |
| | | } |
| | | catch (Exception e) |
| | | { |
| | | assert debugException(CLASS_NAME, "removeChild", e); |
| | | if (debugEnabled()) |
| | | { |
| | | debugCought(DebugLogLevel.ERROR, e); |
| | | } |
| | | |
| | | int msgID = MSGID_CONFIG_ENTRY_CANNOT_REMOVE_CHILD; |
| | | int msgID = MSGID_CONFIG_ENTRY_CANNOT_REMOVE_CHILD; |
| | | String message = getMessage(msgID, String.valueOf(childDN), |
| | | String.valueOf(entry.getDN()), |
| | | stackTraceToSingleLineString(e)); |
| | |
| | | */ |
| | | public ConfigEntry duplicate() |
| | | { |
| | | assert debugEnter(CLASS_NAME, "duplicate"); |
| | | |
| | | return new ConfigEntry(entry.duplicate(), parent); |
| | | } |
| | |
| | | */ |
| | | public CopyOnWriteArrayList<ConfigChangeListener> getChangeListeners() |
| | | { |
| | | assert debugEnter(CLASS_NAME, "getChangeListeners"); |
| | | |
| | | return changeListeners; |
| | | } |
| | |
| | | */ |
| | | public void registerChangeListener(ConfigChangeListener listener) |
| | | { |
| | | assert debugEnter(CLASS_NAME, "registerChangeListener", |
| | | String.valueOf(listener)); |
| | | |
| | | changeListeners.add(listener); |
| | | } |
| | |
| | | */ |
| | | public boolean deregisterChangeListener(ConfigChangeListener listener) |
| | | { |
| | | assert debugEnter(CLASS_NAME, "deregisterChangeListener", |
| | | String.valueOf(listener)); |
| | | |
| | | return changeListeners.remove(listener); |
| | | } |
| | |
| | | */ |
| | | public CopyOnWriteArrayList<ConfigAddListener> getAddListeners() |
| | | { |
| | | assert debugEnter(CLASS_NAME, "getAddListeners"); |
| | | |
| | | return addListeners; |
| | | } |
| | |
| | | */ |
| | | public void registerAddListener(ConfigAddListener listener) |
| | | { |
| | | assert debugEnter(CLASS_NAME, "registerAddListener", |
| | | String.valueOf(listener)); |
| | | |
| | | addListeners.addIfAbsent(listener); |
| | | } |
| | |
| | | */ |
| | | public void deregisterAddListener(ConfigAddListener listener) |
| | | { |
| | | assert debugEnter(CLASS_NAME, "deregisterAddListener", |
| | | String.valueOf(listener)); |
| | | |
| | | addListeners.remove(listener); |
| | | } |
| | |
| | | */ |
| | | public CopyOnWriteArrayList<ConfigDeleteListener> getDeleteListeners() |
| | | { |
| | | assert debugEnter(CLASS_NAME, "getDeleteListeners"); |
| | | |
| | | return deleteListeners; |
| | | } |
| | |
| | | */ |
| | | public void registerDeleteListener(ConfigDeleteListener listener) |
| | | { |
| | | assert debugEnter(CLASS_NAME, "registerDeleteListener", |
| | | String.valueOf(listener)); |
| | | |
| | | deleteListeners.addIfAbsent(listener); |
| | | } |
| | |
| | | */ |
| | | public void deregisterDeleteListener(ConfigDeleteListener listener) |
| | | { |
| | | assert debugEnter(CLASS_NAME, "deregisterDeleteListener", |
| | | String.valueOf(listener)); |
| | | |
| | | deleteListeners.remove(listener); |
| | | } |