<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
<html lang="en">
<head>
<title>Source code</title>
<link rel="stylesheet" type="text/css" href="../../../../../../../../../stylesheet.css" title="Style">
</head>
<body>
<div class="sourceContainer">
<pre><span class="sourceLineNo">001</span>/*<a name="line.1"></a>
<span class="sourceLineNo">002</span> * Licensed to the Apache Software Foundation (ASF) under one or more<a name="line.2"></a>
<span class="sourceLineNo">003</span> * contributor license agreements. See the NOTICE file distributed with<a name="line.3"></a>
<span class="sourceLineNo">004</span> * this work for additional information regarding copyright ownership.<a name="line.4"></a>
<span class="sourceLineNo">005</span> * The ASF licenses this file to You under the Apache license, Version 2.0<a name="line.5"></a>
<span class="sourceLineNo">006</span> * (the "License"); you may not use this file except in compliance with<a name="line.6"></a>
<span class="sourceLineNo">007</span> * the License. You may obtain a copy of the License at<a name="line.7"></a>
<span class="sourceLineNo">008</span> *<a name="line.8"></a>
<span class="sourceLineNo">009</span> *      http://www.apache.org/licenses/LICENSE-2.0<a name="line.9"></a>
<span class="sourceLineNo">010</span> *<a name="line.10"></a>
<span class="sourceLineNo">011</span> * Unless required by applicable law or agreed to in writing, software<a name="line.11"></a>
<span class="sourceLineNo">012</span> * distributed under the License is distributed on an "AS IS" BASIS,<a name="line.12"></a>
<span class="sourceLineNo">013</span> * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.<a name="line.13"></a>
<span class="sourceLineNo">014</span> * See the license for the specific language governing permissions and<a name="line.14"></a>
<span class="sourceLineNo">015</span> * limitations under the license.<a name="line.15"></a>
<span class="sourceLineNo">016</span> */<a name="line.16"></a>
<span class="sourceLineNo">017</span>package org.apache.logging.log4j.core.appender.db.jpa;<a name="line.17"></a>
<span class="sourceLineNo">018</span><a name="line.18"></a>
<span class="sourceLineNo">019</span>import java.util.Map;<a name="line.19"></a>
<span class="sourceLineNo">020</span>import javax.persistence.Inheritance;<a name="line.20"></a>
<span class="sourceLineNo">021</span>import javax.persistence.InheritanceType;<a name="line.21"></a>
<span class="sourceLineNo">022</span>import javax.persistence.MappedSuperclass;<a name="line.22"></a>
<span class="sourceLineNo">023</span>import javax.persistence.Transient;<a name="line.23"></a>
<span class="sourceLineNo">024</span><a name="line.24"></a>
<span class="sourceLineNo">025</span>import org.apache.logging.log4j.Level;<a name="line.25"></a>
<span class="sourceLineNo">026</span>import org.apache.logging.log4j.Marker;<a name="line.26"></a>
<span class="sourceLineNo">027</span>import org.apache.logging.log4j.ThreadContext;<a name="line.27"></a>
<span class="sourceLineNo">028</span>import org.apache.logging.log4j.core.AbstractLogEvent;<a name="line.28"></a>
<span class="sourceLineNo">029</span>import org.apache.logging.log4j.core.time.Instant;<a name="line.29"></a>
<span class="sourceLineNo">030</span>import org.apache.logging.log4j.util.ReadOnlyStringMap;<a name="line.30"></a>
<span class="sourceLineNo">031</span>import org.apache.logging.log4j.core.LogEvent;<a name="line.31"></a>
<span class="sourceLineNo">032</span>import org.apache.logging.log4j.core.appender.db.jpa.converter.ContextDataAttributeConverter;<a name="line.32"></a>
<span class="sourceLineNo">033</span>import org.apache.logging.log4j.core.impl.Log4jLogEvent;<a name="line.33"></a>
<span class="sourceLineNo">034</span>import org.apache.logging.log4j.message.Message;<a name="line.34"></a>
<span class="sourceLineNo">035</span><a name="line.35"></a>
<span class="sourceLineNo">036</span>/**<a name="line.36"></a>
<span class="sourceLineNo">037</span> * &lt;p&gt;<a name="line.37"></a>
<span class="sourceLineNo">038</span> * Users of the JPA appender MUST extend this class, using JPA annotations on the concrete class and all of its<a name="line.38"></a>
<span class="sourceLineNo">039</span> * accessor methods (as needed) to map them to the proper table and columns. Accessors you do not want persisted should<a name="line.39"></a>
<span class="sourceLineNo">040</span> * be annotated with {@link Transient @Transient}. All accessors should call {@link #getWrappedEvent()} and delegate the<a name="line.40"></a>
<span class="sourceLineNo">041</span> * call to the underlying event. Users may want to instead extend {@link BasicLogEventEntity}, which takes care of all<a name="line.41"></a>
<span class="sourceLineNo">042</span> * of this for you.<a name="line.42"></a>
<span class="sourceLineNo">043</span> * &lt;/p&gt;<a name="line.43"></a>
<span class="sourceLineNo">044</span> * &lt;p&gt;<a name="line.44"></a>
<span class="sourceLineNo">045</span> * The concrete class must have two constructors: a public no-arg constructor to convince the JPA provider that it's a<a name="line.45"></a>
<span class="sourceLineNo">046</span> * valid entity, and a public constructor that takes a single {@link LogEvent event} and passes it to the parent class<a name="line.46"></a>
<span class="sourceLineNo">047</span> * with {@link #AbstractLogEventWrapperEntity(LogEvent) super(event)}. Furthermore, the concrete class must be annotated<a name="line.47"></a>
<span class="sourceLineNo">048</span> * {@link javax.persistence.Entity @Entity} and {@link javax.persistence.Table @Table} and must implement a fully<a name="line.48"></a>
<span class="sourceLineNo">049</span> * mutable ID property annotated with {@link javax.persistence.Id @Id} and<a name="line.49"></a>
<span class="sourceLineNo">050</span> * {@link javax.persistence.GeneratedValue @GeneratedValue} to tell the JPA provider how to calculate an ID for new<a name="line.50"></a>
<span class="sourceLineNo">051</span> * events.<a name="line.51"></a>
<span class="sourceLineNo">052</span> * &lt;/p&gt;<a name="line.52"></a>
<span class="sourceLineNo">053</span> * &lt;p&gt;<a name="line.53"></a>
<span class="sourceLineNo">054</span> * Many of the return types of {@link LogEvent} methods (e.g., {@link StackTraceElement}, {@link Message},<a name="line.54"></a>
<span class="sourceLineNo">055</span> * {@link Marker}, {@link Throwable},<a name="line.55"></a>
<span class="sourceLineNo">056</span> * {@link org.apache.logging.log4j.ThreadContext.ContextStack ThreadContext.ContextStack}, and<a name="line.56"></a>
<span class="sourceLineNo">057</span> * {@link Map Map&amp;lt;String, String&amp;gt;}) will not be recognized by the JPA provider. In conjunction with<a name="line.57"></a>
<span class="sourceLineNo">058</span> * {@link javax.persistence.Convert @Convert}, you can use the converters in the<a name="line.58"></a>
<span class="sourceLineNo">059</span> * {@link org.apache.logging.log4j.core.appender.db.jpa.converter} package to convert these types to database columns.<a name="line.59"></a>
<span class="sourceLineNo">060</span> * If you want to retrieve log events from the database, you can create a true POJO entity and also use these<a name="line.60"></a>
<span class="sourceLineNo">061</span> * converters for extracting persisted values.&lt;br&gt;<a name="line.61"></a>
<span class="sourceLineNo">062</span> * &lt;/p&gt;<a name="line.62"></a>
<span class="sourceLineNo">063</span> * &lt;p&gt;<a name="line.63"></a>
<span class="sourceLineNo">064</span> * The mutator methods in this class not specified in {@link LogEvent} are no-op methods, implemented to satisfy the JPA<a name="line.64"></a>
<span class="sourceLineNo">065</span> * requirement that accessor methods have matching mutator methods. If you create additional accessor methods, you must<a name="line.65"></a>
<span class="sourceLineNo">066</span> * likewise create matching no-op mutator methods.<a name="line.66"></a>
<span class="sourceLineNo">067</span> * &lt;/p&gt;<a name="line.67"></a>
<span class="sourceLineNo">068</span> *<a name="line.68"></a>
<span class="sourceLineNo">069</span> * @see BasicLogEventEntity<a name="line.69"></a>
<span class="sourceLineNo">070</span> */<a name="line.70"></a>
<span class="sourceLineNo">071</span>@MappedSuperclass<a name="line.71"></a>
<span class="sourceLineNo">072</span>@Inheritance(strategy = InheritanceType.SINGLE_TABLE)<a name="line.72"></a>
<span class="sourceLineNo">073</span>public abstract class AbstractLogEventWrapperEntity implements LogEvent {<a name="line.73"></a>
<span class="sourceLineNo">074</span>    private static final long serialVersionUID = 1L;<a name="line.74"></a>
<span class="sourceLineNo">075</span><a name="line.75"></a>
<span class="sourceLineNo">076</span>    private final LogEvent wrappedEvent;<a name="line.76"></a>
<span class="sourceLineNo">077</span><a name="line.77"></a>
<span class="sourceLineNo">078</span>    /**<a name="line.78"></a>
<span class="sourceLineNo">079</span>     * Instantiates this base class. All concrete implementations must have a constructor matching this constructor's<a name="line.79"></a>
<span class="sourceLineNo">080</span>     * signature. The no-argument constructor is required for a standards-compliant JPA provider to accept this as an<a name="line.80"></a>
<span class="sourceLineNo">081</span>     * entity.<a name="line.81"></a>
<span class="sourceLineNo">082</span>     */<a name="line.82"></a>
<span class="sourceLineNo">083</span>    @SuppressWarnings("unused")<a name="line.83"></a>
<span class="sourceLineNo">084</span>    protected AbstractLogEventWrapperEntity() {<a name="line.84"></a>
<span class="sourceLineNo">085</span>        this(new NullLogEvent());<a name="line.85"></a>
<span class="sourceLineNo">086</span>    }<a name="line.86"></a>
<span class="sourceLineNo">087</span><a name="line.87"></a>
<span class="sourceLineNo">088</span>    /**<a name="line.88"></a>
<span class="sourceLineNo">089</span>     * Instantiates this base class. All concrete implementations must have a constructor matching this constructor's<a name="line.89"></a>
<span class="sourceLineNo">090</span>     * signature. This constructor is used for wrapping this entity around a logged event.<a name="line.90"></a>
<span class="sourceLineNo">091</span>     *<a name="line.91"></a>
<span class="sourceLineNo">092</span>     * @param wrappedEvent The underlying event from which information is obtained.<a name="line.92"></a>
<span class="sourceLineNo">093</span>     */<a name="line.93"></a>
<span class="sourceLineNo">094</span>    protected AbstractLogEventWrapperEntity(final LogEvent wrappedEvent) {<a name="line.94"></a>
<span class="sourceLineNo">095</span>        if (wrappedEvent == null) {<a name="line.95"></a>
<span class="sourceLineNo">096</span>            throw new IllegalArgumentException("The wrapped event cannot be null.");<a name="line.96"></a>
<span class="sourceLineNo">097</span>        }<a name="line.97"></a>
<span class="sourceLineNo">098</span>        this.wrappedEvent = wrappedEvent;<a name="line.98"></a>
<span class="sourceLineNo">099</span>    }<a name="line.99"></a>
<span class="sourceLineNo">100</span><a name="line.100"></a>
<span class="sourceLineNo">101</span>    @Override<a name="line.101"></a>
<span class="sourceLineNo">102</span>    public LogEvent toImmutable() {<a name="line.102"></a>
<span class="sourceLineNo">103</span>        return Log4jLogEvent.createMemento(this);<a name="line.103"></a>
<span class="sourceLineNo">104</span>    }<a name="line.104"></a>
<span class="sourceLineNo">105</span><a name="line.105"></a>
<span class="sourceLineNo">106</span>    /**<a name="line.106"></a>
<span class="sourceLineNo">107</span>     * All eventual accessor methods must call this method and delegate the method call to the underlying wrapped event.<a name="line.107"></a>
<span class="sourceLineNo">108</span>     * Annotated {@link Transient} so as not to be included in the persisted entity.<a name="line.108"></a>
<span class="sourceLineNo">109</span>     *<a name="line.109"></a>
<span class="sourceLineNo">110</span>     * @return The underlying event from which information is obtained.<a name="line.110"></a>
<span class="sourceLineNo">111</span>     */<a name="line.111"></a>
<span class="sourceLineNo">112</span>    @Transient<a name="line.112"></a>
<span class="sourceLineNo">113</span>    protected final LogEvent getWrappedEvent() {<a name="line.113"></a>
<span class="sourceLineNo">114</span>        return this.wrappedEvent;<a name="line.114"></a>
<span class="sourceLineNo">115</span>    }<a name="line.115"></a>
<span class="sourceLineNo">116</span><a name="line.116"></a>
<span class="sourceLineNo">117</span>    /**<a name="line.117"></a>
<span class="sourceLineNo">118</span>     * A no-op mutator to satisfy JPA requirements, as this entity is write-only.<a name="line.118"></a>
<span class="sourceLineNo">119</span>     *<a name="line.119"></a>
<span class="sourceLineNo">120</span>     * @param level Ignored.<a name="line.120"></a>
<span class="sourceLineNo">121</span>     */<a name="line.121"></a>
<span class="sourceLineNo">122</span>    @SuppressWarnings("unused")<a name="line.122"></a>
<span class="sourceLineNo">123</span>    public void setLevel(final Level level) {<a name="line.123"></a>
<span class="sourceLineNo">124</span>        // this entity is write-only<a name="line.124"></a>
<span class="sourceLineNo">125</span>    }<a name="line.125"></a>
<span class="sourceLineNo">126</span><a name="line.126"></a>
<span class="sourceLineNo">127</span>    /**<a name="line.127"></a>
<span class="sourceLineNo">128</span>     * A no-op mutator to satisfy JPA requirements, as this entity is write-only.<a name="line.128"></a>
<span class="sourceLineNo">129</span>     *<a name="line.129"></a>
<span class="sourceLineNo">130</span>     * @param loggerName Ignored.<a name="line.130"></a>
<span class="sourceLineNo">131</span>     */<a name="line.131"></a>
<span class="sourceLineNo">132</span>    @SuppressWarnings("unused")<a name="line.132"></a>
<span class="sourceLineNo">133</span>    public void setLoggerName(final String loggerName) {<a name="line.133"></a>
<span class="sourceLineNo">134</span>        // this entity is write-only<a name="line.134"></a>
<span class="sourceLineNo">135</span>    }<a name="line.135"></a>
<span class="sourceLineNo">136</span><a name="line.136"></a>
<span class="sourceLineNo">137</span>    /**<a name="line.137"></a>
<span class="sourceLineNo">138</span>     * A no-op mutator to satisfy JPA requirements, as this entity is write-only.<a name="line.138"></a>
<span class="sourceLineNo">139</span>     *<a name="line.139"></a>
<span class="sourceLineNo">140</span>     * @param source Ignored.<a name="line.140"></a>
<span class="sourceLineNo">141</span>     */<a name="line.141"></a>
<span class="sourceLineNo">142</span>    @SuppressWarnings("unused")<a name="line.142"></a>
<span class="sourceLineNo">143</span>    public void setSource(final StackTraceElement source) {<a name="line.143"></a>
<span class="sourceLineNo">144</span>        // this entity is write-only<a name="line.144"></a>
<span class="sourceLineNo">145</span>    }<a name="line.145"></a>
<span class="sourceLineNo">146</span><a name="line.146"></a>
<span class="sourceLineNo">147</span>    /**<a name="line.147"></a>
<span class="sourceLineNo">148</span>     * A no-op mutator to satisfy JPA requirements, as this entity is write-only.<a name="line.148"></a>
<span class="sourceLineNo">149</span>     *<a name="line.149"></a>
<span class="sourceLineNo">150</span>     * @param message Ignored.<a name="line.150"></a>
<span class="sourceLineNo">151</span>     */<a name="line.151"></a>
<span class="sourceLineNo">152</span>    @SuppressWarnings("unused")<a name="line.152"></a>
<span class="sourceLineNo">153</span>    public void setMessage(final Message message) {<a name="line.153"></a>
<span class="sourceLineNo">154</span>        // this entity is write-only<a name="line.154"></a>
<span class="sourceLineNo">155</span>    }<a name="line.155"></a>
<span class="sourceLineNo">156</span><a name="line.156"></a>
<span class="sourceLineNo">157</span>    /**<a name="line.157"></a>
<span class="sourceLineNo">158</span>     * A no-op mutator to satisfy JPA requirements, as this entity is write-only.<a name="line.158"></a>
<span class="sourceLineNo">159</span>     *<a name="line.159"></a>
<span class="sourceLineNo">160</span>     * @param marker Ignored.<a name="line.160"></a>
<span class="sourceLineNo">161</span>     */<a name="line.161"></a>
<span class="sourceLineNo">162</span>    @SuppressWarnings("unused")<a name="line.162"></a>
<span class="sourceLineNo">163</span>    public void setMarker(final Marker marker) {<a name="line.163"></a>
<span class="sourceLineNo">164</span>        // this entity is write-only<a name="line.164"></a>
<span class="sourceLineNo">165</span>    }<a name="line.165"></a>
<span class="sourceLineNo">166</span><a name="line.166"></a>
<span class="sourceLineNo">167</span>    /**<a name="line.167"></a>
<span class="sourceLineNo">168</span>     * A no-op mutator to satisfy JPA requirements, as this entity is write-only.<a name="line.168"></a>
<span class="sourceLineNo">169</span>     *<a name="line.169"></a>
<span class="sourceLineNo">170</span>     * @param threadId Ignored.<a name="line.170"></a>
<span class="sourceLineNo">171</span>     */<a name="line.171"></a>
<span class="sourceLineNo">172</span>    @SuppressWarnings("unused")<a name="line.172"></a>
<span class="sourceLineNo">173</span>    public void setThreadId(final long threadId) {<a name="line.173"></a>
<span class="sourceLineNo">174</span>        // this entity is write-only<a name="line.174"></a>
<span class="sourceLineNo">175</span>    }<a name="line.175"></a>
<span class="sourceLineNo">176</span><a name="line.176"></a>
<span class="sourceLineNo">177</span>    /**<a name="line.177"></a>
<span class="sourceLineNo">178</span>     * A no-op mutator to satisfy JPA requirements, as this entity is write-only.<a name="line.178"></a>
<span class="sourceLineNo">179</span>     *<a name="line.179"></a>
<span class="sourceLineNo">180</span>     * @param threadName Ignored.<a name="line.180"></a>
<span class="sourceLineNo">181</span>     */<a name="line.181"></a>
<span class="sourceLineNo">182</span>    @SuppressWarnings("unused")<a name="line.182"></a>
<span class="sourceLineNo">183</span>    public void setThreadName(final String threadName) {<a name="line.183"></a>
<span class="sourceLineNo">184</span>        // this entity is write-only<a name="line.184"></a>
<span class="sourceLineNo">185</span>    }<a name="line.185"></a>
<span class="sourceLineNo">186</span><a name="line.186"></a>
<span class="sourceLineNo">187</span>    /**<a name="line.187"></a>
<span class="sourceLineNo">188</span>     * A no-op mutator to satisfy JPA requirements, as this entity is write-only.<a name="line.188"></a>
<span class="sourceLineNo">189</span>     *<a name="line.189"></a>
<span class="sourceLineNo">190</span>     * @param threadPriority Ignored.<a name="line.190"></a>
<span class="sourceLineNo">191</span>     */<a name="line.191"></a>
<span class="sourceLineNo">192</span>    @SuppressWarnings("unused")<a name="line.192"></a>
<span class="sourceLineNo">193</span>    public void setThreadPriority(final int threadPriority) {<a name="line.193"></a>
<span class="sourceLineNo">194</span>        // this entity is write-only<a name="line.194"></a>
<span class="sourceLineNo">195</span>    }<a name="line.195"></a>
<span class="sourceLineNo">196</span><a name="line.196"></a>
<span class="sourceLineNo">197</span>    /**<a name="line.197"></a>
<span class="sourceLineNo">198</span>     * A no-op mutator to satisfy JPA requirements, as this entity is write-only.<a name="line.198"></a>
<span class="sourceLineNo">199</span>     *<a name="line.199"></a>
<span class="sourceLineNo">200</span>     * @param nanoTime Ignored.<a name="line.200"></a>
<span class="sourceLineNo">201</span>     */<a name="line.201"></a>
<span class="sourceLineNo">202</span>    @SuppressWarnings("unused")<a name="line.202"></a>
<span class="sourceLineNo">203</span>    public void setNanoTime(final long nanoTime) {<a name="line.203"></a>
<span class="sourceLineNo">204</span>        // this entity is write-only<a name="line.204"></a>
<span class="sourceLineNo">205</span>    }<a name="line.205"></a>
<span class="sourceLineNo">206</span><a name="line.206"></a>
<span class="sourceLineNo">207</span>    /**<a name="line.207"></a>
<span class="sourceLineNo">208</span>     * A no-op mutator to satisfy JPA requirements, as this entity is write-only.<a name="line.208"></a>
<span class="sourceLineNo">209</span>     *<a name="line.209"></a>
<span class="sourceLineNo">210</span>     * @param millis Ignored.<a name="line.210"></a>
<span class="sourceLineNo">211</span>     */<a name="line.211"></a>
<span class="sourceLineNo">212</span>    @SuppressWarnings("unused")<a name="line.212"></a>
<span class="sourceLineNo">213</span>    public void setTimeMillis(final long millis) {<a name="line.213"></a>
<span class="sourceLineNo">214</span>        // this entity is write-only<a name="line.214"></a>
<span class="sourceLineNo">215</span>    }<a name="line.215"></a>
<span class="sourceLineNo">216</span><a name="line.216"></a>
<span class="sourceLineNo">217</span>    /**<a name="line.217"></a>
<span class="sourceLineNo">218</span>     * A no-op mutator to satisfy JPA requirements, as this entity is write-only.<a name="line.218"></a>
<span class="sourceLineNo">219</span>     *<a name="line.219"></a>
<span class="sourceLineNo">220</span>     * @param instant Ignored.<a name="line.220"></a>
<span class="sourceLineNo">221</span>     */<a name="line.221"></a>
<span class="sourceLineNo">222</span>    @SuppressWarnings("unused")<a name="line.222"></a>
<span class="sourceLineNo">223</span>    public void setInstant(final Instant instant) {<a name="line.223"></a>
<span class="sourceLineNo">224</span>        // this entity is write-only<a name="line.224"></a>
<span class="sourceLineNo">225</span>    }<a name="line.225"></a>
<span class="sourceLineNo">226</span><a name="line.226"></a>
<span class="sourceLineNo">227</span>    /**<a name="line.227"></a>
<span class="sourceLineNo">228</span>     * A no-op mutator to satisfy JPA requirements, as this entity is write-only.<a name="line.228"></a>
<span class="sourceLineNo">229</span>     *<a name="line.229"></a>
<span class="sourceLineNo">230</span>     * @param nanoOfMillisecond Ignored.<a name="line.230"></a>
<span class="sourceLineNo">231</span>     */<a name="line.231"></a>
<span class="sourceLineNo">232</span>    @SuppressWarnings("unused")<a name="line.232"></a>
<span class="sourceLineNo">233</span>    public void setNanoOfMillisecond(final int nanoOfMillisecond) {<a name="line.233"></a>
<span class="sourceLineNo">234</span>        // this entity is write-only<a name="line.234"></a>
<span class="sourceLineNo">235</span>    }<a name="line.235"></a>
<span class="sourceLineNo">236</span><a name="line.236"></a>
<span class="sourceLineNo">237</span>    /**<a name="line.237"></a>
<span class="sourceLineNo">238</span>     * A no-op mutator to satisfy JPA requirements, as this entity is write-only.<a name="line.238"></a>
<span class="sourceLineNo">239</span>     *<a name="line.239"></a>
<span class="sourceLineNo">240</span>     * @param throwable Ignored.<a name="line.240"></a>
<span class="sourceLineNo">241</span>     */<a name="line.241"></a>
<span class="sourceLineNo">242</span>    @SuppressWarnings("unused")<a name="line.242"></a>
<span class="sourceLineNo">243</span>    public void setThrown(final Throwable throwable) {<a name="line.243"></a>
<span class="sourceLineNo">244</span>        // this entity is write-only<a name="line.244"></a>
<span class="sourceLineNo">245</span>    }<a name="line.245"></a>
<span class="sourceLineNo">246</span><a name="line.246"></a>
<span class="sourceLineNo">247</span>    /**<a name="line.247"></a>
<span class="sourceLineNo">248</span>     * A no-op mutator to satisfy JPA requirements, as this entity is write-only.<a name="line.248"></a>
<span class="sourceLineNo">249</span>     *<a name="line.249"></a>
<span class="sourceLineNo">250</span>     * @param contextData Ignored.<a name="line.250"></a>
<span class="sourceLineNo">251</span>     */<a name="line.251"></a>
<span class="sourceLineNo">252</span>    @SuppressWarnings("unused")<a name="line.252"></a>
<span class="sourceLineNo">253</span>    public void setContextData(final ReadOnlyStringMap contextData) {<a name="line.253"></a>
<span class="sourceLineNo">254</span>        // this entity is write-only<a name="line.254"></a>
<span class="sourceLineNo">255</span>    }<a name="line.255"></a>
<span class="sourceLineNo">256</span><a name="line.256"></a>
<span class="sourceLineNo">257</span>    /**<a name="line.257"></a>
<span class="sourceLineNo">258</span>     * A no-op mutator to satisfy JPA requirements, as this entity is write-only.<a name="line.258"></a>
<span class="sourceLineNo">259</span>     *<a name="line.259"></a>
<span class="sourceLineNo">260</span>     * @param map Ignored.<a name="line.260"></a>
<span class="sourceLineNo">261</span>     */<a name="line.261"></a>
<span class="sourceLineNo">262</span>    @SuppressWarnings("unused")<a name="line.262"></a>
<span class="sourceLineNo">263</span>    public void setContextMap(final Map&lt;String, String&gt; map) {<a name="line.263"></a>
<span class="sourceLineNo">264</span>        // this entity is write-only<a name="line.264"></a>
<span class="sourceLineNo">265</span>    }<a name="line.265"></a>
<span class="sourceLineNo">266</span><a name="line.266"></a>
<span class="sourceLineNo">267</span>    /**<a name="line.267"></a>
<span class="sourceLineNo">268</span>     * A no-op mutator to satisfy JPA requirements, as this entity is write-only.<a name="line.268"></a>
<span class="sourceLineNo">269</span>     *<a name="line.269"></a>
<span class="sourceLineNo">270</span>     * @param contextStack Ignored.<a name="line.270"></a>
<span class="sourceLineNo">271</span>     */<a name="line.271"></a>
<span class="sourceLineNo">272</span>    @SuppressWarnings("unused")<a name="line.272"></a>
<span class="sourceLineNo">273</span>    public void setContextStack(final ThreadContext.ContextStack contextStack) {<a name="line.273"></a>
<span class="sourceLineNo">274</span>        // this entity is write-only<a name="line.274"></a>
<span class="sourceLineNo">275</span>    }<a name="line.275"></a>
<span class="sourceLineNo">276</span><a name="line.276"></a>
<span class="sourceLineNo">277</span>    /**<a name="line.277"></a>
<span class="sourceLineNo">278</span>     * A no-op mutator to satisfy JPA requirements, as this entity is write-only.<a name="line.278"></a>
<span class="sourceLineNo">279</span>     *<a name="line.279"></a>
<span class="sourceLineNo">280</span>     * @param fqcn Ignored.<a name="line.280"></a>
<span class="sourceLineNo">281</span>     */<a name="line.281"></a>
<span class="sourceLineNo">282</span>    @SuppressWarnings("unused")<a name="line.282"></a>
<span class="sourceLineNo">283</span>    public void setLoggerFqcn(final String fqcn) {<a name="line.283"></a>
<span class="sourceLineNo">284</span>        // this entity is write-only<a name="line.284"></a>
<span class="sourceLineNo">285</span>    }<a name="line.285"></a>
<span class="sourceLineNo">286</span><a name="line.286"></a>
<span class="sourceLineNo">287</span>    /**<a name="line.287"></a>
<span class="sourceLineNo">288</span>     * Indicates whether the source of the logging request is required downstream. Annotated<a name="line.288"></a>
<span class="sourceLineNo">289</span>     * {@link Transient @Transient} so as to not be included in the persisted entity.<a name="line.289"></a>
<span class="sourceLineNo">290</span>     *<a name="line.290"></a>
<span class="sourceLineNo">291</span>     * @return whether the source of the logging request is required downstream.<a name="line.291"></a>
<span class="sourceLineNo">292</span>     */<a name="line.292"></a>
<span class="sourceLineNo">293</span>    @Override<a name="line.293"></a>
<span class="sourceLineNo">294</span>    @Transient<a name="line.294"></a>
<span class="sourceLineNo">295</span>    public final boolean isIncludeLocation() {<a name="line.295"></a>
<span class="sourceLineNo">296</span>        return this.getWrappedEvent().isIncludeLocation();<a name="line.296"></a>
<span class="sourceLineNo">297</span>    }<a name="line.297"></a>
<span class="sourceLineNo">298</span><a name="line.298"></a>
<span class="sourceLineNo">299</span>    @Override<a name="line.299"></a>
<span class="sourceLineNo">300</span>    public final void setIncludeLocation(final boolean locationRequired) {<a name="line.300"></a>
<span class="sourceLineNo">301</span>        this.getWrappedEvent().setIncludeLocation(locationRequired);<a name="line.301"></a>
<span class="sourceLineNo">302</span>    }<a name="line.302"></a>
<span class="sourceLineNo">303</span><a name="line.303"></a>
<span class="sourceLineNo">304</span>    /**<a name="line.304"></a>
<span class="sourceLineNo">305</span>     * Indicates whether this event is the last one in a batch. Annotated {@link Transient @Transient} so as to not be<a name="line.305"></a>
<span class="sourceLineNo">306</span>     * included in the persisted entity.<a name="line.306"></a>
<span class="sourceLineNo">307</span>     *<a name="line.307"></a>
<span class="sourceLineNo">308</span>     * @return whether this event is the last one in a batch.<a name="line.308"></a>
<span class="sourceLineNo">309</span>     */<a name="line.309"></a>
<span class="sourceLineNo">310</span>    @Override<a name="line.310"></a>
<span class="sourceLineNo">311</span>    @Transient<a name="line.311"></a>
<span class="sourceLineNo">312</span>    public final boolean isEndOfBatch() {<a name="line.312"></a>
<span class="sourceLineNo">313</span>        return this.getWrappedEvent().isEndOfBatch();<a name="line.313"></a>
<span class="sourceLineNo">314</span>    }<a name="line.314"></a>
<span class="sourceLineNo">315</span><a name="line.315"></a>
<span class="sourceLineNo">316</span>    @Override<a name="line.316"></a>
<span class="sourceLineNo">317</span>    public final void setEndOfBatch(final boolean endOfBatch) {<a name="line.317"></a>
<span class="sourceLineNo">318</span>        this.getWrappedEvent().setEndOfBatch(endOfBatch);<a name="line.318"></a>
<span class="sourceLineNo">319</span>    }<a name="line.319"></a>
<span class="sourceLineNo">320</span><a name="line.320"></a>
<span class="sourceLineNo">321</span>    /**<a name="line.321"></a>
<span class="sourceLineNo">322</span>     * Gets the context map. Transient, since the String version of the data is obtained via ReadOnlyStringMap.<a name="line.322"></a>
<span class="sourceLineNo">323</span>     *<a name="line.323"></a>
<span class="sourceLineNo">324</span>     * @return the context data.<a name="line.324"></a>
<span class="sourceLineNo">325</span>     * @see ContextDataAttributeConverter<a name="line.325"></a>
<span class="sourceLineNo">326</span>     * @see org.apache.logging.log4j.core.appender.db.jpa.converter.ContextDataAttributeConverter<a name="line.326"></a>
<span class="sourceLineNo">327</span>     */<a name="line.327"></a>
<span class="sourceLineNo">328</span>    @Override<a name="line.328"></a>
<span class="sourceLineNo">329</span>    @Transient<a name="line.329"></a>
<span class="sourceLineNo">330</span>    //@Convert(converter = ContextDataAttributeConverter.class)<a name="line.330"></a>
<span class="sourceLineNo">331</span>    public ReadOnlyStringMap getContextData() {<a name="line.331"></a>
<span class="sourceLineNo">332</span>        return this.getWrappedEvent().getContextData();<a name="line.332"></a>
<span class="sourceLineNo">333</span>    }<a name="line.333"></a>
<span class="sourceLineNo">334</span><a name="line.334"></a>
<span class="sourceLineNo">335</span>    /**<a name="line.335"></a>
<span class="sourceLineNo">336</span>     * A no-op log event class to prevent {@code NullPointerException}s. O/RMs tend to create instances of entities in<a name="line.336"></a>
<span class="sourceLineNo">337</span>     * order to "play around" with them.<a name="line.337"></a>
<span class="sourceLineNo">338</span>     */<a name="line.338"></a>
<span class="sourceLineNo">339</span>    private static class NullLogEvent extends AbstractLogEvent {<a name="line.339"></a>
<span class="sourceLineNo">340</span><a name="line.340"></a>
<span class="sourceLineNo">341</span>        private static final long serialVersionUID = 1L;<a name="line.341"></a>
<span class="sourceLineNo">342</span>        // Inherits everything<a name="line.342"></a>
<span class="sourceLineNo">343</span>    }<a name="line.343"></a>
<span class="sourceLineNo">344</span>}<a name="line.344"></a>




























































</pre>
</div>
</body>
</html>
