19
19
20
20
21
21
import java .io .Serializable ;
22
- import java .lang .reflect .Array ;
23
22
import java .util .Collection ;
24
23
import java .util .Collections ;
25
24
import java .util .HashMap ;
26
25
import java .util .IdentityHashMap ;
27
26
import java .util .Map ;
27
+ import java .util .TreeMap ;
28
+ import java .util .stream .Collectors ;
29
+ import java .util .stream .Stream ;
28
30
29
- public class ImmutableCapabilities implements Capabilities , Serializable {
31
+ public class ImmutableCapabilities extends AbstractCapabilities implements Serializable {
30
32
31
33
private static final long serialVersionUID = 665766108972704060L ;
32
34
33
- private final Map <String , Object > caps = new HashMap <>();
34
-
35
- public ImmutableCapabilities () { }
35
+ public ImmutableCapabilities () {
36
+ }
36
37
37
38
public ImmutableCapabilities (String k , Object v ) {
38
39
caps .put (k , v );
@@ -49,16 +50,23 @@ public ImmutableCapabilities(String k1, Object v1, String k2, Object v2, String
49
50
caps .put (k3 , v3 );
50
51
}
51
52
52
- public ImmutableCapabilities (String k1 , Object v1 , String k2 , Object v2 , String k3 , Object v3 ,
53
- String k4 , Object v4 ) {
53
+ public ImmutableCapabilities (
54
+ String k1 , Object v1 ,
55
+ String k2 , Object v2 ,
56
+ String k3 , Object v3 ,
57
+ String k4 , Object v4 ) {
54
58
caps .put (k1 , v1 );
55
59
caps .put (k2 , v2 );
56
60
caps .put (k3 , v3 );
57
61
caps .put (k4 , v4 );
58
62
}
59
63
60
- public ImmutableCapabilities (String k1 , Object v1 , String k2 , Object v2 , String k3 , Object v3 ,
61
- String k4 , Object v4 , String k5 , Object v5 ) {
64
+ public ImmutableCapabilities (
65
+ String k1 , Object v1 ,
66
+ String k2 , Object v2 ,
67
+ String k3 , Object v3 ,
68
+ String k4 , Object v4 ,
69
+ String k5 , Object v5 ) {
62
70
caps .put (k1 , v1 );
63
71
caps .put (k2 , v2 );
64
72
caps .put (k3 , v3 );
@@ -128,76 +136,4 @@ public int hashCode() {
128
136
return caps .hashCode ();
129
137
}
130
138
131
- @ Override
132
- public String toString () {
133
- Map <Object , String > seen = new IdentityHashMap <>();
134
- StringBuilder builder = new StringBuilder ("Capabilities " );
135
- abbreviate (seen , builder , caps );
136
- return builder .toString ();
137
- }
138
-
139
- private void abbreviate (
140
- Map <Object , String > seen ,
141
- StringBuilder builder ,
142
- Object stringify ) {
143
-
144
- if (stringify == null ) {
145
- builder .append ("null" );
146
- return ;
147
- }
148
-
149
- StringBuilder value = new StringBuilder ();
150
-
151
- if (stringify .getClass ().isArray ()) {
152
- Array ary = (Array ) stringify ;
153
- value .append ("[" );
154
- int length = Array .getLength (ary );
155
- for (int i = 0 ; i < length ; i ++) {
156
- abbreviate (seen , value , Array .get (ary , i ));
157
- if (i < length - 1 ) {
158
- value .append (", " );
159
- }
160
- }
161
- value .append ("]" );
162
- } else if (stringify instanceof Collection ) {
163
- Collection <?> c = (Collection <?>) stringify ;
164
- value .append ("[" );
165
- int length = c .size ();
166
- int i = 0 ;
167
-
168
- for (Object o : c ) {
169
- abbreviate (seen , value , o );
170
- if (i < length - 1 ) {
171
- value .append (", " );
172
- }
173
- i ++;
174
- }
175
- value .append ("]" );
176
- } else if (stringify instanceof Map ) {
177
- value .append ("{" );
178
-
179
- Map <?, ?> m = (Map <?, ?>) stringify ;
180
- int length = m .size ();
181
- int i = 0 ;
182
- for (Map .Entry <?, ?> entry : m .entrySet ()) {
183
- abbreviate (seen , value , entry .getKey ());
184
- value .append ("=" );
185
- abbreviate (seen , value , entry .getValue ());
186
- if (i < length - 1 ) {
187
- value .append (", " );
188
- }
189
- }
190
- value .append ("}" );
191
- } else {
192
- String s = String .valueOf (stringify );
193
- if (s .length () > 30 ) {
194
- value .append (s .substring (0 , 27 )).append ("..." );
195
- } else {
196
- value .append (s );
197
- }
198
- }
199
-
200
- seen .put (stringify , value .toString ());
201
- builder .append (value .toString ());
202
- }
203
- }
139
+ }
0 commit comments