View Javadoc

1   /***
2    *  Copyright 2003-2010 Terracotta, Inc.
3    *
4    *  Licensed under the Apache License, Version 2.0 (the "License");
5    *  you may not use this file except in compliance with the License.
6    *  You may obtain a copy of the License at
7    *
8    *      http://www.apache.org/licenses/LICENSE-2.0
9    *
10   *  Unless required by applicable law or agreed to in writing, software
11   *  distributed under the License is distributed on an "AS IS" BASIS,
12   *  WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
13   *  See the License for the specific language governing permissions and
14   *  limitations under the License.
15   */
16  package net.sf.ehcache.store;
17  
18  import net.sf.ehcache.Element;
19  
20  import java.util.Arrays;
21  
22  /***
23   * @author Ludovic Orban
24   */
25  public class DefaultElementValueComparator implements ElementValueComparator {
26  
27      /***
28       * {@inheritDoc}
29       */
30      public boolean equals(Element e1, Element e2) {
31          if (e1 == null && e2 == null) {
32              return true;
33          } else if (e1 != null && e1.equals(e2)) {
34              if (e1.getObjectValue() == null) {
35                  return e2.getObjectValue() == null;
36              } else {
37                  return compareValues(e1.getObjectValue(), e2.getObjectValue());
38              }
39          } else {
40              return false;
41          }
42      }
43  
44      private static boolean compareValues(Object objectValue1, Object objectValue2) {
45          if (objectValue1 != null && objectValue2 != null && objectValue1.getClass().isArray() && objectValue2.getClass().isArray()) {
46              return Arrays.deepEquals(new Object[] {objectValue1}, new Object[] {objectValue2});
47          } else {
48              if (objectValue1 == null) {
49                  return objectValue2 == null;
50              } else {
51                  return objectValue1.equals(objectValue2);
52              }
53          }
54      }
55  
56  }