1 package org.apache.maven.surefire.report;
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22 import org.apache.maven.surefire.util.internal.ImmutableMap;
23
24 import java.util.Collections;
25 import java.util.Map;
26
27
28
29
30 public class SimpleReportEntry
31 implements TestSetReportEntry
32 {
33 private final Map<String, String> systemProperties;
34
35 private final String source;
36
37 private final String name;
38
39 private final StackTraceWriter stackTraceWriter;
40
41 private final Integer elapsed;
42
43 private final String message;
44
45 public SimpleReportEntry()
46 {
47 this( null, null );
48 }
49
50 public SimpleReportEntry( String source, String name )
51 {
52 this( source, name, null, null );
53 }
54
55 public SimpleReportEntry( String source, String name, Map<String, String> systemProperties )
56 {
57 this( source, name, null, null, systemProperties );
58 }
59
60 private SimpleReportEntry( String source, String name, StackTraceWriter stackTraceWriter )
61 {
62 this( source, name, stackTraceWriter, null );
63 }
64
65 public SimpleReportEntry( String source, String name, Integer elapsed )
66 {
67 this( source, name, null, elapsed );
68 }
69
70 public SimpleReportEntry( String source, String name, String message )
71 {
72 this( source, name, null, null, message, Collections.<String, String>emptyMap() );
73 }
74
75 protected SimpleReportEntry( String source, String name, StackTraceWriter stackTraceWriter, Integer elapsed,
76 String message, Map<String, String> systemProperties )
77 {
78 if ( source == null )
79 {
80 source = "null";
81 }
82 if ( name == null )
83 {
84 name = "null";
85 }
86
87 this.source = source;
88
89 this.name = name;
90
91 this.stackTraceWriter = stackTraceWriter;
92
93 this.message = message;
94
95 this.elapsed = elapsed;
96
97 this.systemProperties = new ImmutableMap<String, String>( systemProperties );
98 }
99
100 public SimpleReportEntry( String source, String name, StackTraceWriter stackTraceWriter, Integer elapsed )
101 {
102 this( source, name, stackTraceWriter, elapsed, Collections.<String, String>emptyMap() );
103 }
104
105 public SimpleReportEntry( String source, String name, StackTraceWriter stackTraceWriter, Integer elapsed,
106 Map<String, String> systemProperties )
107 {
108 this( source, name, stackTraceWriter, elapsed, safeGetMessage( stackTraceWriter ), systemProperties );
109 }
110
111 public static SimpleReportEntry assumption( String source, String name, String message )
112 {
113 return new SimpleReportEntry( source, name, message );
114 }
115
116 public static SimpleReportEntry ignored( String source, String name, String message )
117 {
118 return new SimpleReportEntry( source, name, message );
119 }
120
121 public static SimpleReportEntry withException( String source, String name, StackTraceWriter stackTraceWriter )
122 {
123 return new SimpleReportEntry( source, name, stackTraceWriter );
124 }
125
126 private static String safeGetMessage( StackTraceWriter stackTraceWriter )
127 {
128 try
129 {
130 SafeThrowable t = stackTraceWriter == null ? null : stackTraceWriter.getThrowable();
131 return t == null ? null : t.getMessage();
132 }
133 catch ( Throwable t )
134 {
135 return t.getMessage();
136 }
137 }
138
139 @Override
140 public String getSourceName()
141 {
142 return source;
143 }
144
145 @Override
146 public String getName()
147 {
148 return name;
149 }
150
151 @Override
152 public String getGroup()
153 {
154 return null;
155 }
156
157 @Override
158 public StackTraceWriter getStackTraceWriter()
159 {
160 return stackTraceWriter;
161 }
162
163 @Override
164 public Integer getElapsed()
165 {
166 return elapsed;
167 }
168
169 @Override
170 public String toString()
171 {
172 return "ReportEntry{" + "source='" + source + '\'' + ", name='" + name + '\'' + ", stackTraceWriter="
173 + stackTraceWriter + ", elapsed=" + elapsed + ",message=" + message + '}';
174 }
175
176 @Override
177 public String getMessage()
178 {
179 return message;
180 }
181
182 @Override
183 public boolean equals( Object o )
184 {
185 if ( this == o )
186 {
187 return true;
188 }
189 if ( o == null || getClass() != o.getClass() )
190 {
191 return false;
192 }
193
194 SimpleReportEntry that = (SimpleReportEntry) o;
195 return isElapsedTimeEqual( that ) && isNameEqual( that ) && isSourceEqual( that ) && isStackEqual( that );
196 }
197
198 @Override
199 public int hashCode()
200 {
201 int result = source != null ? source.hashCode() : 0;
202 result = 31 * result + ( name != null ? name.hashCode() : 0 );
203 result = 31 * result + ( stackTraceWriter != null ? stackTraceWriter.hashCode() : 0 );
204 result = 31 * result + ( elapsed != null ? elapsed.hashCode() : 0 );
205 return result;
206 }
207
208 @Override
209 public String getNameWithGroup()
210 {
211 return getName();
212 }
213
214 @Override
215 public Map<String, String> getSystemProperties()
216 {
217 return systemProperties;
218 }
219
220 private boolean isElapsedTimeEqual( SimpleReportEntry en )
221 {
222 return elapsed != null ? elapsed.equals( en.elapsed ) : en.elapsed == null;
223 }
224
225 private boolean isNameEqual( SimpleReportEntry en )
226 {
227 return name != null ? name.equals( en.name ) : en.name == null;
228 }
229
230 private boolean isSourceEqual( SimpleReportEntry en )
231 {
232 return source != null ? source.equals( en.source ) : en.source == null;
233 }
234
235 private boolean isStackEqual( SimpleReportEntry en )
236 {
237 return stackTraceWriter != null ? stackTraceWriter.equals( en.stackTraceWriter ) : en.stackTraceWriter == null;
238 }
239 }