View Javadoc
1   /*
2    * #%L
3    * AbstractLog.java - mongodb-async-driver - Allanbank Consulting, Inc.
4    * %%
5    * Copyright (C) 2011 - 2014 Allanbank Consulting, Inc.
6    * %%
7    * Licensed under the Apache License, Version 2.0 (the "License");
8    * you may not use this file except in compliance with the License.
9    * You may obtain a copy of the License at
10   * 
11   *      http://www.apache.org/licenses/LICENSE-2.0
12   * 
13   * Unless required by applicable law or agreed to in writing, software
14   * distributed under the License is distributed on an "AS IS" BASIS,
15   * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
16   * See the License for the specific language governing permissions and
17   * limitations under the License.
18   * #L%
19   */
20  package com.allanbank.mongodb.util.log;
21  
22  import java.util.logging.Level;
23  
24  /**
25   * AbstractLog implements all of the public log method to delegate to a single
26   * {@link #doLog(Level, Throwable, String, Object...)} method.
27   * 
28   * @api.no This class is <b>NOT</b> part of the drivers API. This class may be
29   *         mutated in incompatible ways between any two releases of the driver.
30   * @copyright 2014, Allanbank Consulting, Inc., All Rights Reserved
31   */
32  public abstract class AbstractLog implements Log {
33  
34      /** The name of this class. */
35      protected static final Object CLASS_NAME = AbstractLog.class.getName();
36  
37      /**
38       * Creates a new AbstractLog.
39       */
40      /* package */AbstractLog() {
41          super();
42      }
43  
44      /**
45       * {@inheritDoc}
46       * <p>
47       * Overridden to call {@link #doLog(Level, Throwable, String, Object...)}.
48       * </p>
49       * 
50       * @see Log#debug(String)
51       */
52      @Override
53      public final void debug(final String message) {
54          doLog(Level.FINE, (Throwable) null, message);
55      }
56  
57      /**
58       * {@inheritDoc}
59       * <p>
60       * Overridden to call {@link #doLog(Level, Throwable, String, Object...)}.
61       * </p>
62       * 
63       * @see Log#debug(String, Object[])
64       */
65      @Override
66      public final void debug(final String template, final Object... args) {
67          doLog(Level.FINE, null, template, args);
68      }
69  
70      /**
71       * {@inheritDoc}
72       * <p>
73       * Overridden to call {@link #doLog(Level, Throwable, String, Object...)}.
74       * </p>
75       * 
76       * @see Log#debug(Throwable, String, Object[])
77       */
78      @Override
79      public final void debug(final Throwable thrown, final String template,
80              final Object... args) {
81          doLog(Level.FINE, thrown, template, args);
82      }
83  
84      /**
85       * {@inheritDoc}
86       * <p>
87       * Overridden to call {@link #doLog(Level, Throwable, String, Object...)}.
88       * </p>
89       * 
90       * @see Log#error(String)
91       */
92      @Override
93      public final void error(final String message) {
94          doLog(Level.SEVERE, (Throwable) null, message);
95      }
96  
97      /**
98       * {@inheritDoc}
99       * <p>
100      * Overridden to call {@link #doLog(Level, Throwable, String, Object...)}.
101      * </p>
102      * 
103      * @see Log#error(String, Object[])
104      */
105     @Override
106     public final void error(final String template, final Object... args) {
107         doLog(Level.SEVERE, null, template, args);
108     }
109 
110     /**
111      * {@inheritDoc}
112      * <p>
113      * Overridden to call {@link #doLog(Level, Throwable, String, Object...)}.
114      * </p>
115      * 
116      * @see Log#error(Throwable, String, Object[])
117      */
118     @Override
119     public final void error(final Throwable thrown, final String template,
120             final Object... args) {
121         doLog(Level.SEVERE, thrown, template, args);
122     }
123 
124     /**
125      * {@inheritDoc}
126      * <p>
127      * Overridden to call {@link #doLog(Level, Throwable, String, Object...)}.
128      * </p>
129      * 
130      * @see Log#info(String)
131      */
132     @Override
133     public final void info(final String message) {
134         doLog(Level.INFO, (Throwable) null, message);
135     }
136 
137     /**
138      * {@inheritDoc}
139      * <p>
140      * Overridden to call {@link #doLog(Level, Throwable, String, Object...)}.
141      * </p>
142      * 
143      * @see Log#info(String, Object[])
144      */
145     @Override
146     public final void info(final String template, final Object... args) {
147         doLog(Level.INFO, null, template, args);
148     }
149 
150     /**
151      * {@inheritDoc}
152      * <p>
153      * Overridden to call {@link #doLog(Level, Throwable, String, Object...)}.
154      * </p>
155      * 
156      * @see Log#info(Throwable, String, Object[])
157      */
158     @Override
159     public final void info(final Throwable thrown, final String template,
160             final Object... args) {
161         doLog(Level.INFO, thrown, template, args);
162     }
163 
164     /**
165      * {@inheritDoc}
166      * <p>
167      * Overridden to call {@link #doLog(Level, Throwable, String, Object...)}.
168      * </p>
169      * 
170      * @see Log#log(Level, String)
171      */
172     @Override
173     public final void log(final Level level, final String message) {
174         doLog(level, (Throwable) null, message);
175     }
176 
177     /**
178      * {@inheritDoc}
179      * <p>
180      * Overridden to call {@link #doLog(Level, Throwable, String, Object...)}.
181      * </p>
182      * 
183      * @see Log#log(Level, String, Object[])
184      */
185     @Override
186     public final void log(final Level level, final String template,
187             final Object... args) {
188         doLog(level, null, template, args);
189     }
190 
191     /**
192      * {@inheritDoc}
193      * <p>
194      * Overridden to call {@link #doLog(Level, Throwable, String, Object...)}.
195      * </p>
196      * 
197      * @see Log#log(Level, Throwable, String, Object[])
198      */
199     @Override
200     public final void log(final Level level, final Throwable thrown,
201             final String template, final Object... args) {
202         doLog(level, thrown, template, args);
203     }
204 
205     /**
206      * {@inheritDoc}
207      * <p>
208      * Overridden to call {@link #doLog(Level, Throwable, String, Object...)}.
209      * </p>
210      * 
211      * @see Log#warn(String)
212      */
213     @Override
214     public final void warn(final String message) {
215         doLog(Level.WARNING, (Throwable) null, message);
216     }
217 
218     /**
219      * {@inheritDoc}
220      * <p>
221      * Overridden to call {@link #doLog(Level, Throwable, String, Object...)}.
222      * </p>
223      * 
224      * @see Log#warn(String, Object[])
225      */
226     @Override
227     public final void warn(final String template, final Object... args) {
228         doLog(Level.WARNING, null, template, args);
229     }
230 
231     /**
232      * {@inheritDoc}
233      * <p>
234      * Overridden to call {@link #doLog(Level, Throwable, String, Object...)}.
235      * </p>
236      * 
237      * @see Log#warn(Throwable, String, Object[])
238      */
239     @Override
240     public final void warn(final Throwable thrown, final String template,
241             final Object... args) {
242         doLog(Level.WARNING, thrown, template, args);
243     }
244 
245     /**
246      * Delegate method for the {@link Log} implementation.
247      * 
248      * @param level
249      *            The logging level for the message.
250      * @param thrown
251      *            The exception associated with the log message.
252      * @param template
253      *            The message template to log.
254      * @param args
255      *            The arguments to replace the <code>{}</code> entries in the
256      *            template.
257      */
258     protected abstract void doLog(Level level, Throwable thrown,
259             String template, Object... args);
260 
261 }