/** * {@inheritDoc} This implementation delegates to {@code beginRead()} or * {@code beginWrite()}, depending on the {@code LockMode} argument. * Subclasses can override these protected methods to perform additional * steps when a configuration is locked. * * @since 2.0 * @throws NullPointerException if the argument is <b>null</b> */ @Override public final void lock(final LockMode mode) { switch (mode) { case READ: beginRead(false); break; case WRITE: beginWrite(false); break; default: throw new IllegalArgumentException("Unsupported LockMode: " + mode); } }
@Override public final void addProperty(final String key, final Object value) { beginWrite(false); try { fireEvent(ConfigurationEvent.ADD_PROPERTY, key, value, true); addPropertyInternal(key, value); fireEvent(ConfigurationEvent.ADD_PROPERTY, key, value, false); } finally { endWrite(); } }
@Override public final void setProperty(final String key, final Object value) { beginWrite(false); try { fireEvent(ConfigurationEvent.SET_PROPERTY, key, value, true); setPropertyInternal(key, value); fireEvent(ConfigurationEvent.SET_PROPERTY, key, value, false); } finally { endWrite(); } }
@Override public final void clear() { beginWrite(false); try { fireEvent(ConfigurationEvent.CLEAR, null, null, true); clearInternal(); fireEvent(ConfigurationEvent.CLEAR, null, null, false); } finally { endWrite(); } }
/** * Removes the specified property from this configuration. This * implementation performs some preparations and then delegates to * {@code clearPropertyDirect()}, which will do the real work. * * @param key the key to be removed */ @Override public final void clearProperty(final String key) { beginWrite(false); try { fireEvent(ConfigurationEvent.CLEAR_PROPERTY, key, null, true); clearPropertyDirect(key); fireEvent(ConfigurationEvent.CLEAR_PROPERTY, key, null, false); } finally { endWrite(); } }