org.apache.juli.logging.ch.qos.logback.core.joran.spi.ConfigurationWatchList Maven / Gradle / Ivy
Go to download
Show more of this group Show more artifacts with this name
Show all versions of tomcat85-slf4j-logback Show documentation
Show all versions of tomcat85-slf4j-logback Show documentation
Tomcat85 Slf4j Logback Integration
/**
* Logback: the reliable, generic, fast and flexible logging framework.
* Copyright (C) 1999-2015, QOS.ch. All rights reserved.
*
* This program and the accompanying materials are dual-licensed under
* either the terms of the Eclipse Public License v1.0 as published by
* the Eclipse Foundation
*
* or (per the licensee's choosing)
*
* under the terms of the GNU Lesser General Public License version 2.1
* as published by the Free Software Foundation.
*/
package org.apache.juli.logging.ch.qos.logback.core.joran.spi;
import org.apache.juli.logging.ch.qos.logback.core.spi.ContextAwareBase;
import java.io.File;
import java.net.URL;
import java.net.URLDecoder;
import java.util.ArrayList;
import java.util.List;
/**
* @author Ceki Gülcü
*/
public class ConfigurationWatchList extends ContextAwareBase {
URL mainURL;
List fileWatchList = new ArrayList();
List lastModifiedList = new ArrayList();
public ConfigurationWatchList buildClone() {
ConfigurationWatchList out = new ConfigurationWatchList();
out.mainURL = this.mainURL;
out.fileWatchList = new ArrayList(this.fileWatchList);
out.lastModifiedList = new ArrayList(this.lastModifiedList);
return out;
}
public void clear() {
this.mainURL = null;
lastModifiedList.clear();
fileWatchList.clear();
}
/**
* The mainURL for the configuration file. Null values are allowed.
*
* @param mainURL
*/
public void setMainURL(URL mainURL) {
// main url can be null
this.mainURL = mainURL;
if (mainURL != null)
addAsFileToWatch(mainURL);
}
private void addAsFileToWatch(URL url) {
File file = convertToFile(url);
if (file != null) {
fileWatchList.add(file);
lastModifiedList.add(file.lastModified());
}
}
public void addToWatchList(URL url) {
addAsFileToWatch(url);
}
public URL getMainURL() {
return mainURL;
}
public List getCopyOfFileWatchList() {
return new ArrayList(fileWatchList);
}
public boolean changeDetected() {
int len = fileWatchList.size();
for (int i = 0; i < len; i++) {
long lastModified = lastModifiedList.get(i);
File file = fileWatchList.get(i);
if (lastModified != file.lastModified()) {
return true;
}
}
return false;
// return (lastModified != fileToScan.lastModified() && lastModified !=
// SENTINEL);
}
@SuppressWarnings("deprecation")
File convertToFile(URL url) {
String protocol = url.getProtocol();
if ("file".equals(protocol)) {
return new File(URLDecoder.decode(url.getFile()));
} else {
addInfo("URL [" + url + "] is not of type file");
return null;
}
}
}