1 /*
2 * This file is part of dependency-check-ant.
3 *
4 * Licensed under the Apache License, Version 2.0 (the "License");
5 * you may not use this file except in compliance with the License.
6 * You may obtain a copy of the License at
7 *
8 * http://www.apache.org/licenses/LICENSE-2.0
9 *
10 * Unless required by applicable law or agreed to in writing, software
11 * distributed under the License is distributed on an "AS IS" BASIS,
12 * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
13 * See the License for the specific language governing permissions and
14 * limitations under the License.
15 *
16 * Copyright (c) 2015 The OWASP Foundation. All Rights Reserved.
17 */
18 package org.slf4j.impl;
19
20 import org.apache.tools.ant.Task;
21 import org.owasp.dependencycheck.ant.logging.AntLoggerFactory;
22 import org.slf4j.ILoggerFactory;
23 import org.slf4j.spi.LoggerFactoryBinder;
24
25 /**
26 * The binding of org.slf4j.LoggerFactory class with an actual instance of org.slf4j.ILoggerFactory is performed using information
27 * returned by this class.
28 *
29 * @author colezlaw
30 */
31 public class StaticLoggerBinder implements LoggerFactoryBinder {
32
33 /**
34 * The unique instance of this class
35 *
36 */
37 private static final StaticLoggerBinder SINGLETON = new StaticLoggerBinder();
38
39 /**
40 * Return the singleton of this class.
41 *
42 * @return the StaticLoggerBinder singleton
43 */
44 public static final StaticLoggerBinder getSingleton() {
45 return SINGLETON;
46 }
47
48 /**
49 * Ant tasks have the log method we actually want to call. So we hang onto the task as a delegate
50 */
51 private Task task = null;
52
53 /**
54 * Set the Task which will this is to log through.
55 *
56 * @param task the task through which to log
57 */
58 public void setTask(Task task) {
59 this.task = task;
60 loggerFactory = new AntLoggerFactory(task);
61 }
62
63 /**
64 * Declare the version of the SLF4J API this implementation is compiled against. The value of this filed is usually modified
65 * with each release.
66 */
67 // to avoid constant folding by the compiler, this field must *not* be final
68 public static String REQUESTED_API_VERSION = "1.7.12"; // final
69
70 private static final String LOGGER_FACTORY_CLASS = AntLoggerFactory.class.getName();
71
72 /**
73 * The ILoggerFactory instance returned by the {@link #getLoggerFactory} method should always be the smae object
74 */
75 private ILoggerFactory loggerFactory;
76
77 /**
78 * Constructs a new static logger binder.
79 */
80 private StaticLoggerBinder() {
81 loggerFactory = new AntLoggerFactory(task);
82 }
83
84 /**
85 * Returns the logger factory.
86 *
87 * @return the logger factory
88 */
89 @Override
90 public ILoggerFactory getLoggerFactory() {
91 return loggerFactory;
92 }
93
94 /**
95 * Returns the logger factory class string.
96 *
97 * @return the logger factory class string
98 */
99 @Override
100 public String getLoggerFactoryClassStr() {
101 return LOGGER_FACTORY_CLASS;
102 }
103 }