##### Coverage Report - org.jaxen.expr.IdentitySet

Classes in this File | Line Coverage | Branch Coverage | Complexity
IdentitySet |
100% |
100% |
| 1.0;1

1 |  |
     /*
2 |  |
      $Id$
3 |  |
4 |  |
      Copyright 2005 Elliotte Rusty Harold. All Rights Reserved.
5 |  |
6 |  |
      Redistribution and use of this software and associated documentation
7 |  |
      ("Software"), with or without modification, are permitted provided
8 |  |
      that the following conditions are met:
9 |  |
10 |  |
      1. Redistributions of source code must retain copyright
11 |  |
         statements and notices.  Redistributions must also contain a
12 |  |
         copy of this document.
13 |  |
14 |  |
      2. Redistributions in binary form must reproduce the
15 |  |
         above copyright notice, this list of conditions and the
16 |  |
         following disclaimer in the documentation and/or other
17 |  |
         materials provided with the distribution.
18 |  |
19 |  |
      3. The name "jaxen" must not be used to endorse or promote
20 |  |
         products derived from this Software without prior written
21 |  |
         permission of The Werken Company.  For written permission,
22 |  |
         please contact bob@werken.com.
23 |  |
24 |  |
      4. Products derived from this Software may not be called "jaxen"
25 |  |
         nor may "jaxen" appear in their names without prior written
26 |  |
         permission of The Werken Company. "jaxen" is a registered
27 |  |
         trademark of The Werken Company.
28 |  |
29 |  |
      5. Due credit should be given to The Werken Company.
30 |  |
         (http://jaxen.werken.com/).
31 |  |
32 |  |
      THIS SOFTWARE IS PROVIDED BY THE WERKEN COMPANY AND CONTRIBUTORS
33 |  |
      ``AS IS'' AND ANY EXPRESSED OR IMPLIED WARRANTIES, INCLUDING, BUT
34 |  |
      NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND
35 |  |
      FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED.  IN NO EVENT SHALL
36 |  |
      THE WERKEN COMPANY OR ITS CONTRIBUTORS BE LIABLE FOR ANY DIRECT,
37 |  |
      INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES
38 |  |
      (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR
39 |  |
      SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
40 |  |
      HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT,
41 |  |
      STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)
42 |  |
      ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED
43 |  |
      OF THE POSSIBILITY OF SUCH DAMAGE.
44 |  |
45 |  |
      */
46 |  |
     package org.jaxen.expr;
47 |  |
48 |  |
     import java.util.HashSet;
49 |  |
50 |  |
51 |  |
     /**
52 |  |
      * <p>
53 |  |
      *  This is a set that uses identity rather than equality semantics.
54 |  |
      * </p>
55 |  |
      *
56 |  |
      * @author Elliotte Rusty Harold
57 |  |
      *
58 |  |
      */
59 |  |
     final class IdentitySet {
60 |  |
61 | 4452 |
         private HashSet contents = new HashSet();
62 |  |
63 |  |
         IdentitySet() {
64 | 4452 |
             super();
65 | 4452 |
         }
66 |  |
67 |  |
         void add(Object object) {
68 | 134136 |
             IdentityWrapper wrapper = new IdentityWrapper(object);
69 | 134136 |
             contents.add(wrapper);
70 | 134136 |
         }
71 |  |
72 |  |
         public boolean contains(Object object) {
73 | 139308 |
             IdentityWrapper wrapper = new IdentityWrapper(object);
74 | 139308 |
             return contents.contains(wrapper);
75 |  |
         }
76 |  |
77 |  |
         private static class IdentityWrapper {
78 |  |
79 |  |
             private Object object;
80 |  |
81 | 273444 |
             IdentityWrapper(Object object) {
82 | 273444 |
                 this.object = object;
83 | 273444 |
             }
84 |  |
85 |  |
             public boolean equals(Object o) {
86 | 84 |
                 IdentityWrapper w = (IdentityWrapper) o;
87 | 84 |
                 return object == w.object;
88 |  |
             }
89 |  |
90 |  |
             public int hashCode() {
91 | 273444 |
                 return System.identityHashCode(object);
92 |  |
             }
93 |  |
94 |  |
         }
95 |  |
96 |  |
97 |  |
     }