Skip to content

Commit

Permalink
[bugfix] Try to ensure that the configurator does not reorder the values
Browse files Browse the repository at this point in the history
of lists. Closes #583
  • Loading branch information
adamretter committed Apr 9, 2015
1 parent f910822 commit c33c14d
Show file tree
Hide file tree
Showing 5 changed files with 179 additions and 112 deletions.
10 changes: 9 additions & 1 deletion src/org/exist/config/Configuration.java
Expand Up @@ -23,6 +23,7 @@

import java.util.List;
import java.util.Map;
import java.util.Optional;
import java.util.Set;

import org.exist.security.PermissionDeniedException;
Expand Down Expand Up @@ -166,7 +167,14 @@ public interface Configuration {
*/
public void save(DBBroker broker) throws PermissionDeniedException, ConfigurationException;

public boolean equals(Object obj, String uniqField);
/**
* Determines equality based on a property value of the configuration
*
* @param obj The Configured instance
* @param property The name of the property to use for comparison, or
* if empty, the {@link ConfigurationImpl#ID} is used.
*/
public boolean equals(Object obj, Optional<String> property);

/**
* Free up memory allocated for cache.
Expand Down
39 changes: 13 additions & 26 deletions src/org/exist/config/ConfigurationImpl.java
Expand Up @@ -22,13 +22,9 @@
package org.exist.config;

import java.lang.ref.WeakReference;
import java.util.ArrayList;
import java.util.HashMap;
import java.util.HashSet;
import java.util.List;
import java.util.Map;
import java.util.Set;
import java.util.*;

import jdk.nashorn.internal.runtime.regexp.joni.Config;
import org.exist.dom.persistent.DocumentImpl;
import org.exist.security.PermissionDeniedException;
import org.exist.storage.DBBroker;
Expand Down Expand Up @@ -461,33 +457,24 @@ public void save(final DBBroker broker) throws PermissionDeniedException, Config
}

@Override
public boolean equals(Object obj) {
if (obj instanceof ConfigurationImpl) {
final ConfigurationImpl conf = (ConfigurationImpl)obj;
if (!(getName().equals(conf.getName())))
{return false;}
final String id = getProperty(Configuration.ID);
if (id == null) {
return false;
}
if (id.equals(conf.getProperty(Configuration.ID)))
{return true;}
}
return false;
public boolean equals(final Object obj) {
return equals(obj, Optional.empty());
}

public boolean equals(Object obj, String uniqField) {
@Override
public boolean equals(final Object obj, final Optional<String> property) {
if (obj instanceof ConfigurationImpl) {
final ConfigurationImpl conf = (ConfigurationImpl)obj;
if (!(getName().equals(conf.getName())))
{return false;}
final String uniq = getProperty( uniqField);
if (uniq == null) {
if (!(getName().equals(conf.getName()))) {
return false;
}
if (uniq.equals(conf.getProperty(uniqField)))
{return true;}

final String name = property.orElse(Configuration.ID);
final Optional<String> value = Optional.ofNullable(getProperty(name));

return value.map(v -> v.equals(conf.getProperty(name))).orElse(false);
}

return false;
}
}

0 comments on commit c33c14d

Please sign in to comment.