1 package ch.qos.logback.classic.spi;
2
3 import java.io.Serializable;
4
5 public class StackTraceElementProxy implements Serializable {
6
7 private static final long serialVersionUID = -4832130320500439038L;
8
9 final StackTraceElement ste;
10
11
12 transient private String steAsString;
13 private ClassPackagingData cpd;
14
15 StackTraceElementProxy(StackTraceElement ste) {
16 if (ste == null) {
17 throw new IllegalArgumentException("ste cannot be null");
18 }
19 this.ste = ste;
20 }
21
22
23 public String getSTEAsString() {
24 if (steAsString == null) {
25 steAsString = "\tat " + ste.toString();
26 }
27 return steAsString;
28 }
29
30 public StackTraceElement getStackTraceElement() {
31 return ste;
32 }
33
34 void setClassPackagingData(ClassPackagingData cpd) {
35 this.cpd = cpd;
36 }
37
38 public ClassPackagingData getClassPackagingData() {
39 return cpd;
40 }
41
42 @Override
43 public int hashCode() {
44 return ste.hashCode();
45 }
46
47 @Override
48 public boolean equals(Object obj) {
49 if (this == obj)
50 return true;
51 if (obj == null)
52 return false;
53 if (getClass() != obj.getClass())
54 return false;
55 final StackTraceElementProxy other = (StackTraceElementProxy) obj;
56
57 if (!ste.equals(other.ste)) {
58 return false;
59 }
60 if (cpd == null) {
61 if (other.cpd != null) {
62 return false;
63 }
64 } else if (!cpd.equals(other.cpd)) {
65 return false;
66 }
67 return true;
68 }
69
70 @Override
71 public String toString() {
72 return getSTEAsString();
73 }
74 }