View Javadoc

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    // save a byte or two during serialization, as we can
11    // reconstruct this field from 'ste'
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  }