View Javadoc

    1   /*
    2    * Licensed to the Apache Software Foundation (ASF) under one or more
    3    * contributor license agreements. See the NOTICE file distributed with
    4    * this work for additional information regarding copyright ownership.
    5    * The ASF licenses this file to You under the Apache license, Version 2.0
    6    * (the "License"); you may not use this file except in compliance with
    7    * the License. You may obtain a copy of the License at
    8    *
    9    *      http://www.apache.org/licenses/LICENSE-2.0
    10   *
    11   * Unless required by applicable law or agreed to in writing, software
    12   * distributed under the License is distributed on an "AS IS" BASIS,
    13   * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
    14   * See the license for the specific language governing permissions and
    15   * limitations under the license.
    16   */
    17  package org.apache.logging.log4j.core.jackson;
    18
    19  import org.apache.logging.log4j.core.impl.ExtendedStackTraceElement;
    20  import org.apache.logging.log4j.core.impl.ThrowableProxy;
    21
    22  import com.fasterxml.jackson.annotation.JsonIgnore;
    23  import com.fasterxml.jackson.annotation.JsonProperty;
    24  import com.fasterxml.jackson.dataformat.xml.annotation.JacksonXmlElementWrapper;
    25  import com.fasterxml.jackson.dataformat.xml.annotation.JacksonXmlProperty;
    26
    27  /**
    28   * Mix-in for {@link ThrowableProxy}.
    29   */
    30  abstract class ThrowableProxyMixIn {
    31
    32      @JsonProperty(JsonConstants.ELT_CAUSE)
    33      @JacksonXmlProperty(namespace = XmlConstants.XML_NAMESPACE, localName = XmlConstants.ELT_CAUSE)
    34      private ThrowableProxyMixIn causeProxy;
    35
    36      @JsonProperty
    37      @JacksonXmlProperty(isAttribute = true)
    38      private int commonElementCount;
    39
    40      @JsonProperty(JsonConstants.ELT_EXTENDED_STACK_TRACE)
    41      @JacksonXmlElementWrapper(namespace = XmlConstants.XML_NAMESPACE, localName = XmlConstants.ELT_EXTENDED_STACK_TRACE)
    42      @JacksonXmlProperty(namespace = XmlConstants.XML_NAMESPACE, localName = XmlConstants.ELT_EXTENDED_STACK_TRACE_ITEM)
    43      private ExtendedStackTraceElement[] extendedStackTrace;
    44
    45      @JsonProperty
    46      @JacksonXmlProperty(isAttribute = true)
    47      private String localizedMessage;
    48
    49      @JsonProperty
    50      @JacksonXmlProperty(isAttribute = true)
    51      private String message;
    52
    53      @JsonProperty
    54      @JacksonXmlProperty(isAttribute = true)
    55      private String name;
    56
    57      @JsonIgnore
    58      private transient Throwable throwable;
    59
    60      @JsonIgnore
    61      public abstract String getCauseStackTraceAsString();
    62
    63      @JsonIgnore
    64      public abstract String getExtendedStackTraceAsString();
    65
    66      @JsonIgnore
    67      public abstract StackTraceElement[] getStackTrace();
    68
    69      @JsonProperty(JsonConstants.ELT_SUPPRESSED)
    70      @JacksonXmlElementWrapper(namespace = XmlConstants.XML_NAMESPACE, localName = XmlConstants.ELT_SUPPRESSED)
    71      @JacksonXmlProperty(namespace = XmlConstants.XML_NAMESPACE, localName = XmlConstants.ELT_SUPPRESSED_ITEM)
    72      public abstract ThrowableProxy[] getSuppressedProxies();
    73
    74      @JsonIgnore
    75      public abstract String getSuppressedStackTrace();
    76
    77      @JsonIgnore
    78      public abstract Throwable getThrowable();
    79
    80  }