22
22
23
23
import java .util .Map ;
24
24
25
- /** @author Daniel Bechler */
25
+ /**
26
+ * @author Daniel Bechler
27
+ */
26
28
public final class MapEntryAccessor implements Accessor
27
29
{
28
30
private final Object referenceKey ;
@@ -33,18 +35,53 @@ public MapEntryAccessor(final Object referenceKey)
33
35
this .referenceKey = referenceKey ;
34
36
}
35
37
36
- public Element getPathElement ( )
38
+ public Object getKey ( final Map <?, ?> target )
37
39
{
38
- return new MapElement (referenceKey );
40
+ final Map <Object , Object > map = objectToMap (target );
41
+ if (map == null )
42
+ {
43
+ return null ;
44
+ }
45
+ final Object referenceKey = this .referenceKey ;
46
+ for (final Object key : map .keySet ())
47
+ {
48
+ if (key == referenceKey || key .equals (referenceKey ))
49
+ {
50
+ return key ;
51
+ }
52
+ }
53
+ return null ;
39
54
}
40
55
41
- public void set (final Object target , final Object value )
56
+ @ Override
57
+ public int hashCode ()
42
58
{
43
- final Map <Object , Object > targetMap = objectToMap (target );
44
- if (targetMap != null )
59
+ return referenceKey .hashCode ();
60
+ }
61
+
62
+ @ Override
63
+ public boolean equals (final Object o )
64
+ {
65
+ if (this == o )
45
66
{
46
- targetMap . put ( referenceKey , value ) ;
67
+ return true ;
47
68
}
69
+ if (o == null || getClass () != o .getClass ())
70
+ {
71
+ return false ;
72
+ }
73
+ return referenceKey .equals (((MapEntryAccessor ) o ).referenceKey );
74
+ }
75
+
76
+ @ Override
77
+ public String toString ()
78
+ {
79
+ return "map key " + getPathElement ();
80
+ }
81
+
82
+ public Element getPathElement ()
83
+ {
84
+ return new MapElement (referenceKey );
48
85
}
49
86
50
87
public Object get (final Object target )
@@ -57,18 +94,13 @@ public Object get(final Object target)
57
94
return null ;
58
95
}
59
96
60
- private static Map < Object , Object > objectToMap ( final Object object )
97
+ public void set ( final Object target , final Object value )
61
98
{
62
- if (object == null )
63
- {
64
- return null ;
65
- }
66
- if (object instanceof Map )
99
+ final Map <Object , Object > targetMap = objectToMap (target );
100
+ if (targetMap != null )
67
101
{
68
- //noinspection unchecked
69
- return (Map <Object , Object >) object ;
102
+ targetMap .put (referenceKey , value );
70
103
}
71
- throw new IllegalArgumentException (object .getClass ().toString ());
72
104
}
73
105
74
106
public void unset (final Object target )
@@ -80,55 +112,17 @@ public void unset(final Object target)
80
112
}
81
113
}
82
114
83
- @ Override
84
- public String toString ()
85
- {
86
- return "map key " + getPathElement ();
87
- }
88
-
89
- public Object getKey (final Map <?, ?> target )
115
+ private static Map <Object , Object > objectToMap (final Object object )
90
116
{
91
- final Map <Object , Object > map = objectToMap (target );
92
- if (map == null )
117
+ if (object == null )
93
118
{
94
119
return null ;
95
120
}
96
- final Object referenceKey = this .referenceKey ;
97
- for (final Object key : map .keySet ())
98
- {
99
- if (key == referenceKey || key .equals (referenceKey ))
100
- {
101
- return key ;
102
- }
103
- }
104
- return null ;
105
- }
106
-
107
- @ Override
108
- public boolean equals (Object o )
109
- {
110
- if (this == o )
111
- {
112
- return true ;
113
- }
114
- if (o == null || getClass () != o .getClass ())
115
- {
116
- return false ;
117
- }
118
-
119
- MapEntryAccessor that = (MapEntryAccessor ) o ;
120
-
121
- if (referenceKey != null ? !referenceKey .equals (that .referenceKey ) : that .referenceKey != null )
121
+ if (object instanceof Map )
122
122
{
123
- return false ;
123
+ //noinspection unchecked
124
+ return (Map <Object , Object >) object ;
124
125
}
125
-
126
- return true ;
127
- }
128
-
129
- @ Override
130
- public int hashCode ()
131
- {
132
- return referenceKey != null ? referenceKey .hashCode () : 0 ;
126
+ throw new IllegalArgumentException (object .getClass ().toString ());
133
127
}
134
128
}
0 commit comments