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.configuration; 19 20 import java.util.Iterator; 21 22 /** 23 * Strict comparator for configurations. 24 * 25 * @since 1.0 26 * 27 * @author <a href="mailto:herve.quiroz@esil.univ-mrs.fr">Herve Quiroz</a> 28 * @author <a href="mailto:shapira@mpi.com">Yoav Shapira</a> 29 * @version $Id: StrictConfigurationComparator.java 1210177 2011-12-04 18:58:19Z oheger $ 30 */ 31 public class StrictConfigurationComparator implements ConfigurationComparator 32 { 33 /** 34 * Create a new strict comparator. 35 */ 36 public StrictConfigurationComparator() 37 { 38 } 39 40 /** 41 * Compare two configuration objects. 42 * 43 * @param a the first configuration 44 * @param b the second configuration 45 * @return true if keys from a are found in b and keys from b are 46 * found in a and for each key in a, the corresponding value 47 * is the sale in for the same key in b 48 */ 49 public boolean compare(Configuration a, Configuration b) 50 { 51 if (a == null && b == null) 52 { 53 return true; 54 } 55 else if (a == null || b == null) 56 { 57 return false; 58 } 59 60 for (Iterator<String> keys = a.getKeys(); keys.hasNext();) 61 { 62 String key = keys.next(); 63 Object value = a.getProperty(key); 64 if (!value.equals(b.getProperty(key))) 65 { 66 return false; 67 } 68 } 69 70 for (Iterator<String> keys = b.getKeys(); keys.hasNext();) 71 { 72 String key = keys.next(); 73 Object value = b.getProperty(key); 74 if (!value.equals(a.getProperty(key))) 75 { 76 return false; 77 } 78 } 79 80 return true; 81 } 82 }