1 /* 2 * Licensed to the Apache Software Foundation (ASF) under one or more 3 * contributor license agreements. See the NOTICE file distributed with 4 * this work for additional information regarding copyright ownership. 5 * The ASF licenses this file to You under the Apache License, Version 2.0 6 * (the "License"); you may not use this file except in compliance with 7 * the License. You may obtain a copy of the License at 8 * 9 * http://www.apache.org/licenses/LICENSE-2.0 10 * 11 * Unless required by applicable law or agreed to in writing, software 12 * distributed under the License is distributed on an "AS IS" BASIS, 13 * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 14 * See the License for the specific language governing permissions and 15 * limitations under the License. 16 */ 17 18 package org.apache.commons.configuration2; 19 20 import java.util.Iterator; 21 22 /** 23 * Strict comparator for configurations. 24 * 25 * @since 1.0 26 */ 27 public class StrictConfigurationComparator implements ConfigurationComparator { 28 /** 29 * Create a new strict comparator. 30 */ 31 public StrictConfigurationComparator() { 32 } 33 34 /** 35 * Compare two configuration objects. 36 * 37 * @param a the first configuration 38 * @param b the second configuration 39 * @return true if keys from a are found in b and keys from b are found in a and for each key in a, the corresponding 40 * value is the sale in for the same key in b 41 */ 42 @Override 43 public boolean compare(final Configuration a, final Configuration b) { 44 if (a == null && b == null) { 45 return true; 46 } 47 if (a == null || b == null) { 48 return false; 49 } 50 51 for (final Iterator<String> keys = a.getKeys(); keys.hasNext();) { 52 final String key = keys.next(); 53 final Object value = a.getProperty(key); 54 if (!value.equals(b.getProperty(key))) { 55 return false; 56 } 57 } 58 59 for (final Iterator<String> keys = b.getKeys(); keys.hasNext();) { 60 final String key = keys.next(); 61 final Object value = b.getProperty(key); 62 if (!value.equals(a.getProperty(key))) { 63 return false; 64 } 65 } 66 67 return true; 68 } 69 }