Modified:
websites/production/commons/content/proper/commons-logging/apidocs/search.js
==============================================================================
---
websites/production/commons/content/proper/commons-logging/apidocs/search.js
(original)
+++
websites/production/commons/content/proper/commons-logging/apidocs/search.js
Wed May 15 16:57:04 2024
@@ -1,5 +1,5 @@
/*
- * Copyright (c) 2015, 2020, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 2015, 2023, Oracle and/or its affiliates. All rights reserved.
* DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
*
* This code is free software; you can redistribute it and/or modify it
@@ -22,282 +22,413 @@
* or visit www.oracle.com if you need additional information or have any
* questions.
*/
-
-var noResult = {l: "No results found"};
-var loading = {l: "Loading search index..."};
-var catModules = "Modules";
-var catPackages = "Packages";
-var catTypes = "Types";
-var catMembers = "Members";
-var catSearchTags = "Search Tags";
-var highlight = "<span class=\"result-highlight\">$&</span>";
-var searchPattern = "";
-var fallbackPattern = "";
-var RANKING_THRESHOLD = 2;
-var NO_MATCH = 0xffff;
-var MIN_RESULTS = 3;
-var MAX_RESULTS = 500;
-var UNNAMED = "<Unnamed>";
+"use strict";
+const messages = {
+ enterTerm: "Enter a search term",
+ noResult: "No results found",
+ oneResult: "Found one result",
+ manyResults: "Found {0} results",
+ loading: "Loading search index...",
+ searching: "Searching...",
+ redirecting: "Redirecting to first result...",
+ linkIcon: "Link icon",
+ linkToSection: "Link to this section"
+}
+const categories = {
+ modules: "Modules",
+ packages: "Packages",
+ types: "Types",
+ members: "Members",
+ searchTags: "Search Tags"
+};
+const highlight = "<span class='result-highlight'>$&</span>";
+const NO_MATCH = {};
+const MAX_RESULTS = 300;
+function checkUnnamed(name, separator) {
+ return name === "<Unnamed>" || !name ? "" : name + separator;
+}
function escapeHtml(str) {
return str.replace(/</g, "<").replace(/>/g, ">");
}
-function getHighlightedText(item, matcher, fallbackMatcher) {
- var escapedItem = escapeHtml(item);
- var highlighted = escapedItem.replace(matcher, highlight);
- if (highlighted === escapedItem) {
- highlighted = escapedItem.replace(fallbackMatcher, highlight)
+function getHighlightedText(str, boundaries, from, to) {
+ var start = from;
+ var text = "";
+ for (var i = 0; i < boundaries.length; i += 2) {
+ var b0 = boundaries[i];
+ var b1 = boundaries[i + 1];
+ if (b0 >= to || b1 <= from) {
+ continue;
+ }
+ text += escapeHtml(str.slice(start, Math.max(start, b0)));
+ text += "<span class='result-highlight'>";
+ text += escapeHtml(str.slice(Math.max(start, b0), Math.min(to, b1)));
+ text += "</span>";
+ start = Math.min(to, b1);
}
- return highlighted;
+ text += escapeHtml(str.slice(start, to));
+ return text;
}
-function getURLPrefix(ui) {
- var urlPrefix="";
+function getURLPrefix(item, category) {
+ var urlPrefix = "";
var slash = "/";
- if (ui.item.category === catModules) {
- return ui.item.l + slash;
- } else if (ui.item.category === catPackages && ui.item.m) {
- return ui.item.m + slash;
- } else if (ui.item.category === catTypes || ui.item.category ===
catMembers) {
- if (ui.item.m) {
- urlPrefix = ui.item.m + slash;
+ if (category === "modules") {
+ return item.l + slash;
+ } else if (category === "packages" && item.m) {
+ return item.m + slash;
+ } else if (category === "types" || category === "members") {
+ if (item.m) {
+ urlPrefix = item.m + slash;
} else {
- $.each(packageSearchIndex, function(index, item) {
- if (item.m && ui.item.p === item.l) {
- urlPrefix = item.m + slash;
+ $.each(packageSearchIndex, function(index, it) {
+ if (it.m && item.p === it.l) {
+ urlPrefix = it.m + slash;
}
});
}
}
return urlPrefix;
}
-function createSearchPattern(term) {
- var pattern = "";
- var isWordToken = false;
- term.replace(/,\s*/g, ", ").trim().split(/\s+/).forEach(function(w, index)
{
- if (index > 0) {
- // whitespace between identifiers is significant
- pattern += (isWordToken && /^\w/.test(w)) ? "\\s+" : "\\s*";
+function getURL(item, category) {
+ if (item.url) {
+ return item.url;
+ }
+ var url = getURLPrefix(item, category);
+ if (category === "modules") {
+ url += "module-summary.html";
+ } else if (category === "packages") {
+ if (item.u) {
+ url = item.u;
+ } else {
+ url += item.l.replace(/\./g, '/') + "/package-summary.html";
+ }
+ } else if (category === "types") {
+ if (item.u) {
+ url = item.u;
+ } else {
+ url += checkUnnamed(item.p, "/").replace(/\./g, '/') + item.l +
".html";
}
- var tokens = w.split(/(?=[A-Z,.()<>[\/])/);
+ } else if (category === "members") {
+ url += checkUnnamed(item.p, "/").replace(/\./g, '/') + item.c +
".html" + "#";
+ if (item.u) {
+ url += item.u;
+ } else {
+ url += item.l;
+ }
+ } else if (category === "searchTags") {
+ url += item.u;
+ }
+ item.url = url;
+ return url;
+}
+function createMatcher(term, camelCase) {
+ if (camelCase && !isUpperCase(term)) {
+ return null; // no need for camel-case matcher for lower case query
+ }
+ var pattern = "";
+ var upperCase = [];
+ term.trim().split(/\s+/).forEach(function(w, index, array) {
+ var tokens = w.split(/(?=[A-Z,.()<>?[\/])/);
for (var i = 0; i < tokens.length; i++) {
var s = tokens[i];
- if (s === "") {
- continue;
- }
- pattern += $.ui.autocomplete.escapeRegex(s);
- isWordToken = /\w$/.test(s);
+ // ',' and '?' are the only delimiters commonly followed by space
in java signatures
+ pattern += "(" + $.ui.autocomplete.escapeRegex(s).replace(/[,?]/g,
"$&\\s*?") + ")";
+ upperCase.push(false);
+ var isWordToken = /\w$/.test(s);
if (isWordToken) {
- pattern += "([a-z0-9_$<>\\[\\]]*?)";
+ if (i === tokens.length - 1 && index < array.length - 1) {
+ // space in query string matches all delimiters
+ pattern += "(.*?)";
+ upperCase.push(isUpperCase(s[0]));
+ } else {
+ if (!camelCase && isUpperCase(s) && s.length === 1) {
+ pattern += "()";
+ } else {
+ pattern += "([a-z0-9$<>?[\\]]*?)";
+ }
+ upperCase.push(isUpperCase(s[0]));
+ }
+ } else {
+ pattern += "()";
+ upperCase.push(false);
}
}
});
- return pattern;
+ var re = new RegExp(pattern, "gi");
+ re.upperCase = upperCase;
+ return re;
}
-function createMatcher(pattern, flags) {
- var isCamelCase = /[A-Z]/.test(pattern);
- return new RegExp(pattern, flags + (isCamelCase ? "" : "i"));
+function findMatch(matcher, input, startOfName, endOfName) {
+ var from = startOfName;
+ matcher.lastIndex = from;
+ var match = matcher.exec(input);
+ // Expand search area until we get a valid result or reach the beginning
of the string
+ while (!match || match.index + match[0].length < startOfName || endOfName
< match.index) {
+ if (from === 0) {
+ return NO_MATCH;
+ }
+ from = input.lastIndexOf(".", from - 2) + 1;
+ matcher.lastIndex = from;
+ match = matcher.exec(input);
+ }
+ var boundaries = [];
+ var matchEnd = match.index + match[0].length;
+ var score = 5;
+ var start = match.index;
+ var prevEnd = -1;
+ for (var i = 1; i < match.length; i += 2) {
+ var isUpper = isUpperCase(input[start]);
+ var isMatcherUpper = matcher.upperCase[i];
+ // capturing groups come in pairs, match and non-match
+ boundaries.push(start, start + match[i].length);
+ // make sure groups are anchored on a left word boundary
+ var prevChar = input[start - 1] || "";
+ var nextChar = input[start + 1] || "";
+ if (start !== 0 && !/[\W_]/.test(prevChar) &&
!/[\W_]/.test(input[start])) {
+ if (isUpper && (isLowerCase(prevChar) || isLowerCase(nextChar))) {
+ score -= 0.1;
+ } else if (isMatcherUpper && start === prevEnd) {
+ score -= isUpper ? 0.1 : 1.0;
+ } else {
+ return NO_MATCH;
+ }
+ }
+ prevEnd = start + match[i].length;
+ start += match[i].length + match[i + 1].length;
+
+ // lower score for parts of the name that are missing
+ if (match[i + 1] && prevEnd < endOfName) {
+ score -= rateNoise(match[i + 1]);
+ }
+ }
+ // lower score if a type name contains unmatched camel-case parts
+ if (input[matchEnd - 1] !== "." && endOfName > matchEnd)
+ score -= rateNoise(input.slice(matchEnd, endOfName));
+ score -= rateNoise(input.slice(0, Math.max(startOfName, match.index)));
+
+ if (score <= 0) {
+ return NO_MATCH;
+ }
+ return {
+ input: input,
+ score: score,
+ boundaries: boundaries
+ };
}
-var watermark = 'Search';
-$(function() {
- var search = $("#search-input");
- var reset = $("#reset-button");
- search.val('');
- search.prop("disabled", false);
- reset.prop("disabled", false);
- search.val(watermark).addClass('watermark');
- search.blur(function() {
- if ($(this).val().length === 0) {
- $(this).val(watermark).addClass('watermark');
+function isUpperCase(s) {
+ return s !== s.toLowerCase();
+}
+function isLowerCase(s) {
+ return s !== s.toUpperCase();
+}
+function rateNoise(str) {
+ return (str.match(/([.(])/g) || []).length / 5
+ + (str.match(/([A-Z]+)/g) || []).length / 10
+ + str.length / 20;
+}
+function doSearch(request, response) {
+ var term = request.term.trim();
+ var maxResults = request.maxResults || MAX_RESULTS;
+ if (term.length === 0) {
+ return this.close();
+ }
+ var matcher = {
+ plainMatcher: createMatcher(term, false),
+ camelCaseMatcher: createMatcher(term, true)
+ }
+ var indexLoaded = indexFilesLoaded();
+
+ function getPrefix(item, category) {
+ switch (category) {
+ case "packages":
+ return checkUnnamed(item.m, "/");
+ case "types":
+ return checkUnnamed(item.p, ".");
+ case "members":
+ return checkUnnamed(item.p, ".") + item.c + ".";
+ default:
+ return "";
+ }
+ }
+ function useQualifiedName(category) {
+ switch (category) {
+ case "packages":
+ return /[\s/]/.test(term);
+ case "types":
+ case "members":
+ return /[\s.]/.test(term);
+ default:
+ return false;
+ }
+ }
+ function searchIndex(indexArray, category) {
+ var matches = [];
+ if (!indexArray) {
+ if (!indexLoaded) {
+ matches.push({ l: messages.loading, category: category });
+ }
+ return matches;
}
- });
- search.on('click keydown paste', function() {
- if ($(this).val() === watermark) {
- $(this).val('').removeClass('watermark');
+ $.each(indexArray, function (i, item) {
+ var prefix = getPrefix(item, category);
+ var simpleName = item.l;
+ var qualifiedName = prefix + simpleName;
+ var useQualified = useQualifiedName(category);
+ var input = useQualified ? qualifiedName : simpleName;
+ var startOfName = useQualified ? prefix.length : 0;
+ var endOfName = category === "members" && input.indexOf("(",
startOfName) > -1
+ ? input.indexOf("(", startOfName) : input.length;
+ var m = findMatch(matcher.plainMatcher, input, startOfName,
endOfName);
+ if (m === NO_MATCH && matcher.camelCaseMatcher) {
+ m = findMatch(matcher.camelCaseMatcher, input, startOfName,
endOfName);
+ }
+ if (m !== NO_MATCH) {
+ m.indexItem = item;
+ m.prefix = prefix;
+ m.category = category;
+ if (!useQualified) {
+ m.input = qualifiedName;
+ m.boundaries = m.boundaries.map(function(b) {
+ return b + prefix.length;
+ });
+ }
+ matches.push(m);
+ }
+ return true;
+ });
+ return matches.sort(function(e1, e2) {
+ return e2.score - e1.score;
+ }).slice(0, maxResults);
+ }
+
+ var result = searchIndex(moduleSearchIndex, "modules")
+ .concat(searchIndex(packageSearchIndex, "packages"))
+ .concat(searchIndex(typeSearchIndex, "types"))
+ .concat(searchIndex(memberSearchIndex, "members"))
+ .concat(searchIndex(tagSearchIndex, "searchTags"));
+
+ if (!indexLoaded) {
+ updateSearchResults = function() {
+ doSearch(request, response);
}
- });
- reset.click(function() {
- search.val('').focus();
- });
- search.focus()[0].setSelectionRange(0, 0);
-});
+ } else {
+ updateSearchResults = function() {};
+ }
+ response(result);
+}
+// JQuery search menu implementation
$.widget("custom.catcomplete", $.ui.autocomplete, {
_create: function() {
this._super();
- this.widget().menu("option", "items", ">
:not(.ui-autocomplete-category)");
+ this.widget().menu("option", "items", "> .result-item");
+ // workaround for search result scrolling
+ this.menu._scrollIntoView = function _scrollIntoView( item ) {
+ var borderTop, paddingTop, offset, scroll, elementHeight,
itemHeight;
+ if ( this._hasScroll() ) {
+ borderTop = parseFloat( $.css( this.activeMenu[ 0 ],
"borderTopWidth" ) ) || 0;
+ paddingTop = parseFloat( $.css( this.activeMenu[ 0 ],
"paddingTop" ) ) || 0;
+ offset = item.offset().top - this.activeMenu.offset().top -
borderTop - paddingTop;
+ scroll = this.activeMenu.scrollTop();
+ elementHeight = this.activeMenu.height() - 26;
+ itemHeight = item.outerHeight();
+
+ if ( offset < 0 ) {
+ this.activeMenu.scrollTop( scroll + offset );
+ } else if ( offset + itemHeight > elementHeight ) {
+ this.activeMenu.scrollTop( scroll + offset - elementHeight
+ itemHeight );
+ }
+ }
+ };
},
_renderMenu: function(ul, items) {
- var rMenu = this;
var currentCategory = "";
- rMenu.menu.bindings = $();
+ var widget = this;
+ widget.menu.bindings = $();
$.each(items, function(index, item) {
- var li;
if (item.category && item.category !== currentCategory) {
- ul.append("<li class=\"ui-autocomplete-category\">" +
item.category + "</li>");
+ ul.append("<li class='ui-autocomplete-category'>" +
categories[item.category] + "</li>");
currentCategory = item.category;
}
- li = rMenu._renderItemData(ul, item);
+ var li = widget._renderItemData(ul, item);
if (item.category) {
- li.attr("aria-label", item.category + " : " + item.l);
- li.attr("class", "result-item");
+ li.attr("aria-label", categories[item.category] + " : " +
item.l);
} else {
li.attr("aria-label", item.l);
- li.attr("class", "result-item");
}
+ li.attr("class", "result-item");
});
+ ul.append("<li class='ui-static-link'><a href='" + pathtoroot +
"search.html?q="
+ + encodeURI(widget.term) + "'>Go to search page</a></li>");
},
_renderItem: function(ul, item) {
- var label = "";
- var matcher = createMatcher(escapeHtml(searchPattern), "g");
- var fallbackMatcher = new RegExp(fallbackPattern, "gi")
- if (item.category === catModules) {
- label = getHighlightedText(item.l, matcher, fallbackMatcher);
- } else if (item.category === catPackages) {
- label = getHighlightedText(item.l, matcher, fallbackMatcher);
- } else if (item.category === catTypes) {
- label = (item.p && item.p !== UNNAMED)
- ? getHighlightedText(item.p + "." + item.l, matcher,
fallbackMatcher)
- : getHighlightedText(item.l, matcher, fallbackMatcher);
- } else if (item.category === catMembers) {
- label = (item.p && item.p !== UNNAMED)
- ? getHighlightedText(item.p + "." + item.c + "." + item.l,
matcher, fallbackMatcher)
- : getHighlightedText(item.c + "." + item.l, matcher,
fallbackMatcher);
- } else if (item.category === catSearchTags) {
- label = getHighlightedText(item.l, matcher, fallbackMatcher);
- } else {
- label = item.l;
- }
var li = $("<li/>").appendTo(ul);
var div = $("<div/>").appendTo(li);
- if (item.category === catSearchTags && item.h) {
- if (item.d) {
- div.html(label + "<span class=\"search-tag-holder-result\"> ("
+ item.h + ")</span><br><span class=\"search-tag-desc-result\">"
- + item.d + "</span><br>");
+ var label = item.l
+ ? item.l
+ : getHighlightedText(item.input, item.boundaries, 0,
item.input.length);
+ var idx = item.indexItem;
+ if (item.category === "searchTags" && idx && idx.h) {
+ if (idx.d) {
+ div.html(label + "<span class='search-tag-holder-result'> (" +
idx.h + ")</span><br><span class='search-tag-desc-result'>"
+ + idx.d + "</span><br>");
} else {
- div.html(label + "<span class=\"search-tag-holder-result\"> ("
+ item.h + ")</span>");
+ div.html(label + "<span class='search-tag-holder-result'> (" +
idx.h + ")</span>");
}
} else {
- if (item.m) {
- div.html(item.m + "/" + label);
- } else {
- div.html(label);
- }
+ div.html(label);
}
return li;
}
});
-function rankMatch(match, category) {
- if (!match) {
- return NO_MATCH;
- }
- var index = match.index;
- var input = match.input;
- var leftBoundaryMatch = 2;
- var periferalMatch = 0;
- // make sure match is anchored on a left word boundary
- if (index === 0 || /\W/.test(input[index - 1]) || "_" === input[index]) {
- leftBoundaryMatch = 0;
- } else if ("_" === input[index - 1] || (input[index] ===
input[index].toUpperCase() && !/^[A-Z0-9_$]+$/.test(input))) {
- leftBoundaryMatch = 1;
- }
- var matchEnd = index + match[0].length;
- var leftParen = input.indexOf("(");
- var endOfName = leftParen > -1 ? leftParen : input.length;
- // exclude peripheral matches
- if (category !== catModules && category !== catSearchTags) {
- var delim = category === catPackages ? "/" : ".";
- if (leftParen > -1 && leftParen < index) {
- periferalMatch += 2;
- } else if (input.lastIndexOf(delim, endOfName) >= matchEnd) {
- periferalMatch += 2;
- }
- }
- var delta = match[0].length === endOfName ? 0 : 1; // rank full match
higher than partial match
- for (var i = 1; i < match.length; i++) {
- // lower ranking if parts of the name are missing
- if (match[i])
- delta += match[i].length;
- }
- if (category === catTypes) {
- // lower ranking if a type name contains unmatched camel-case parts
- if (/[A-Z]/.test(input.substring(matchEnd)))
- delta += 5;
- if (/[A-Z]/.test(input.substring(0, index)))
- delta += 5;
- }
- return leftBoundaryMatch + periferalMatch + (delta / 200);
-
-}
-function doSearch(request, response) {
- var result = [];
- searchPattern = createSearchPattern(request.term);
- fallbackPattern = createSearchPattern(request.term.toLowerCase());
- if (searchPattern === "") {
- return this.close();
- }
- var camelCaseMatcher = createMatcher(searchPattern, "");
- var fallbackMatcher = new RegExp(fallbackPattern, "i");
-
- function searchIndexWithMatcher(indexArray, matcher, category, nameFunc) {
- if (indexArray) {
- var newResults = [];
- $.each(indexArray, function (i, item) {
- item.category = category;
- var ranking = rankMatch(matcher.exec(nameFunc(item)),
category);
- if (ranking < RANKING_THRESHOLD) {
- newResults.push({ranking: ranking, item: item});
- }
- return newResults.length <= MAX_RESULTS;
- });
- return newResults.sort(function(e1, e2) {
- return e1.ranking - e2.ranking;
- }).map(function(e) {
- return e.item;
- });
+$(function() {
+ var expanded = false;
+ var windowWidth;
+ function collapse() {
+ if (expanded) {
+ $("div#navbar-top").removeAttr("style");
+ $("button#navbar-toggle-button")
+ .removeClass("expanded")
+ .attr("aria-expanded", "false");
+ expanded = false;
}
- return [];
}
- function searchIndex(indexArray, category, nameFunc) {
- var primaryResults = searchIndexWithMatcher(indexArray,
camelCaseMatcher, category, nameFunc);
- result = result.concat(primaryResults);
- if (primaryResults.length <= MIN_RESULTS &&
!camelCaseMatcher.ignoreCase) {
- var secondaryResults = searchIndexWithMatcher(indexArray,
fallbackMatcher, category, nameFunc);
- result = result.concat(secondaryResults.filter(function (item) {
- return primaryResults.indexOf(item) === -1;
- }));
+ $("button#navbar-toggle-button").click(function (e) {
+ if (expanded) {
+ collapse();
+ } else {
+ var navbar = $("div#navbar-top");
+ navbar.height(navbar.prop("scrollHeight"));
+ $("button#navbar-toggle-button")
+ .addClass("expanded")
+ .attr("aria-expanded", "true");
+ expanded = true;
+ windowWidth = window.innerWidth;
}
- }
-
- searchIndex(moduleSearchIndex, catModules, function(item) { return item.l;
});
- searchIndex(packageSearchIndex, catPackages, function(item) {
- return (item.m && request.term.indexOf("/") > -1)
- ? (item.m + "/" + item.l) : item.l;
});
- searchIndex(typeSearchIndex, catTypes, function(item) {
- return request.term.indexOf(".") > -1 ? item.p + "." + item.l : item.l;
+ $("ul.sub-nav-list-small li a").click(collapse);
+ $("input#search-input").focus(collapse);
+ $("main").click(collapse);
+ $("section[id] > :header, :header[id],
:header:has(a[id])").each(function(idx, el) {
+ // Create anchor links for headers with an associated id attribute
+ var hdr = $(el);
+ var id = hdr.attr("id") || hdr.parent("section").attr("id") ||
hdr.children("a").attr("id");
+ if (id) {
+ hdr.append(" <a href='#" + id + "' class='anchor-link'
aria-label='" + messages.linkToSection
+ + "'><img src='" + pathtoroot + "link.svg' alt='" +
messages.linkIcon +"' tabindex='0'"
+ + " width='16' height='16'></a>");
+ }
});
- searchIndex(memberSearchIndex, catMembers, function(item) {
- return request.term.indexOf(".") > -1
- ? item.p + "." + item.c + "." + item.l : item.l;
+ $(window).on("orientationchange", collapse).on("resize", function(e) {
+ if (expanded && windowWidth !== window.innerWidth) collapse();
});
- searchIndex(tagSearchIndex, catSearchTags, function(item) { return item.l;
});
-
- if (!indexFilesLoaded()) {
- updateSearchResults = function() {
- doSearch(request, response);
- }
- result.unshift(loading);
- } else {
- updateSearchResults = function() {};
- }
- response(result);
-}
-$(function() {
- $("#search-input").catcomplete({
+ var search = $("#search-input");
+ var reset = $("#reset-button");
+ search.catcomplete({
minLength: 1,
- delay: 300,
+ delay: 200,
source: doSearch,
response: function(event, ui) {
if (!ui.content.length) {
- ui.content.push(noResult);
+ ui.content.push({ l: messages.noResult });
} else {
$("#search-input").empty();
}
@@ -310,45 +441,18 @@ $(function() {
collision: "flip"
},
select: function(event, ui) {
- if (ui.item.category) {
- var url = getURLPrefix(ui);
- if (ui.item.category === catModules) {
- url += "module-summary.html";
- } else if (ui.item.category === catPackages) {
- if (ui.item.u) {
- url = ui.item.u;
- } else {
- url += ui.item.l.replace(/\./g, '/') +
"/package-summary.html";
- }
- } else if (ui.item.category === catTypes) {
- if (ui.item.u) {
- url = ui.item.u;
- } else if (ui.item.p === UNNAMED) {
- url += ui.item.l + ".html";
- } else {
- url += ui.item.p.replace(/\./g, '/') + "/" + ui.item.l
+ ".html";
- }
- } else if (ui.item.category === catMembers) {
- if (ui.item.p === UNNAMED) {
- url += ui.item.c + ".html" + "#";
- } else {
- url += ui.item.p.replace(/\./g, '/') + "/" + ui.item.c
+ ".html" + "#";
- }
- if (ui.item.u) {
- url += ui.item.u;
- } else {
- url += ui.item.l;
- }
- } else if (ui.item.category === catSearchTags) {
- url += ui.item.u;
- }
- if (top !== window) {
- parent.classFrame.location = pathtoroot + url;
- } else {
- window.location.href = pathtoroot + url;
- }
+ if (ui.item.indexItem) {
+ var url = getURL(ui.item.indexItem, ui.item.category);
+ window.location.href = pathtoroot + url;
$("#search-input").focus();
}
}
});
+ search.val('');
+ search.prop("disabled", false);
+ reset.prop("disabled", false);
+ reset.click(function() {
+ search.val('').focus();
+ });
+ search.focus();
});
\ No newline at end of file
Modified:
websites/production/commons/content/proper/commons-logging/apidocs/serialized-form.html
==============================================================================
---
websites/production/commons/content/proper/commons-logging/apidocs/serialized-form.html
(original)
+++
websites/production/commons/content/proper/commons-logging/apidocs/serialized-form.html
Wed May 15 16:57:04 2024
@@ -1,15 +1,14 @@
<!DOCTYPE HTML>
<html lang="en">
<head>
-<!-- Generated by javadoc (17) -->
-<title>Serialized Form (Apache Commons Logging 1.3.1 API)</title>
+<!-- Generated by javadoc (21) -->
+<title>Serialized Form (Apache Commons Logging 1.3.2 API)</title>
<meta name="viewport" content="width=device-width, initial-scale=1">
<meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1">
<meta name="description" content="serialized forms">
<meta name="generator" content="javadoc/SerializedFormWriterImpl">
<link rel="stylesheet" type="text/css" href="stylesheet.css" title="Style">
<link rel="stylesheet" type="text/css" href="script-dir/jquery-ui.min.css"
title="Style">
-<link rel="stylesheet" type="text/css" href="jquery-ui.overrides.css"
title="Style">
<script type="text/javascript" src="script.js"></script>
<script type="text/javascript" src="script-dir/jquery-3.6.1.min.js"></script>
<script type="text/javascript" src="script-dir/jquery-ui.min.js"></script>
@@ -24,7 +23,7 @@ loadScripts(document, 'script');</script
<header role="banner" class="flex-header">
<nav role="navigation">
<!-- ========= START OF TOP NAVBAR ======= -->
-<div class="top-nav" id="navbar-top">
+<div class="top-nav" id="navbar-top"><button id="navbar-toggle-button"
aria-controls="navbar-top" aria-expanded="false" aria-label="Toggle navigation
links"><span class="nav-bar-toggle-icon"> </span><span
class="nav-bar-toggle-icon"> </span><span
class="nav-bar-toggle-icon"> </span></button>
<div class="skip-nav"><a href="#skip-navbar-top" title="Skip navigation
links">Skip navigation links</a></div>
<ul id="navbar-top-firstrow" class="nav-list" title="Navigation">
<li><a href="index.html">Overview</a></li>
@@ -38,9 +37,10 @@ loadScripts(document, 'script');</script
</ul>
</div>
<div class="sub-nav">
-<div class="nav-list-search"><label for="search-input">SEARCH:</label>
-<input type="text" id="search-input" value="search" disabled="disabled">
-<input type="reset" id="reset-button" value="reset" disabled="disabled">
+<div id="navbar-sub-list"></div>
+<div class="nav-list-search"><a href="search.html">SEARCH</a>
+<input type="text" id="search-input" disabled placeholder="Search">
+<input type="reset" id="reset-button" disabled value="reset">
</div>
</div>
<!-- ========= END OF TOP NAVBAR ========= -->
@@ -58,7 +58,7 @@ loadScripts(document, 'script');</script
<ul class="block-list">
<li>
<section class="serialized-class-details"
id="org.apache.commons.logging.LogConfigurationException">
-<h3>Exception <a
href="org/apache/commons/logging/LogConfigurationException.html" title="class
in
org.apache.commons.logging">org.apache.commons.logging.LogConfigurationException</a></h3>
+<h3>Exception Class <a
href="org/apache/commons/logging/LogConfigurationException.html" title="class
in
org.apache.commons.logging">org.apache.commons.logging.LogConfigurationException</a></h3>
<div class="type-signature">class LogConfigurationException extends <a
href="https://docs.oracle.com/javase/8/docs/api/java/lang/RuntimeException.html"
title="class or interface in java.lang"
class="external-link">RuntimeException</a> implements <a
href="https://docs.oracle.com/javase/8/docs/api/java/io/Serializable.html"
title="class or interface in java.io"
class="external-link">Serializable</a></div>
<dl class="name-value">
<dt>serialVersionUID:</dt>
Modified:
websites/production/commons/content/proper/commons-logging/apidocs/src-html/org/apache/commons/logging/Log.html
==============================================================================
---
websites/production/commons/content/proper/commons-logging/apidocs/src-html/org/apache/commons/logging/Log.html
(original)
+++
websites/production/commons/content/proper/commons-logging/apidocs/src-html/org/apache/commons/logging/Log.html
Wed May 15 16:57:04 2024
@@ -1,7 +1,7 @@
<!DOCTYPE HTML>
<html lang="en">
<head>
-<!-- Generated by javadoc (17) -->
+<!-- Generated by javadoc (21) -->
<title>Source code</title>
<meta name="viewport" content="width=device-width, initial-scale=1">
<meta name="description" content="source: package: org.apache.commons.logging,
interface: Log">
Modified:
websites/production/commons/content/proper/commons-logging/apidocs/src-html/org/apache/commons/logging/LogConfigurationException.html
==============================================================================
---
websites/production/commons/content/proper/commons-logging/apidocs/src-html/org/apache/commons/logging/LogConfigurationException.html
(original)
+++
websites/production/commons/content/proper/commons-logging/apidocs/src-html/org/apache/commons/logging/LogConfigurationException.html
Wed May 15 16:57:04 2024
@@ -1,7 +1,7 @@
<!DOCTYPE HTML>
<html lang="en">
<head>
-<!-- Generated by javadoc (17) -->
+<!-- Generated by javadoc (21) -->
<title>Source code</title>
<meta name="viewport" content="width=device-width, initial-scale=1">
<meta name="description" content="source: package: org.apache.commons.logging,
class: LogConfigurationException">
Modified:
websites/production/commons/content/proper/commons-logging/apidocs/src-html/org/apache/commons/logging/LogFactory.html
==============================================================================
---
websites/production/commons/content/proper/commons-logging/apidocs/src-html/org/apache/commons/logging/LogFactory.html
(original)
+++
websites/production/commons/content/proper/commons-logging/apidocs/src-html/org/apache/commons/logging/LogFactory.html
Wed May 15 16:57:04 2024
@@ -1,7 +1,7 @@
<!DOCTYPE HTML>
<html lang="en">
<head>
-<!-- Generated by javadoc (17) -->
+<!-- Generated by javadoc (21) -->
<title>Source code</title>
<meta name="viewport" content="width=device-width, initial-scale=1">
<meta name="description" content="source: package: org.apache.commons.logging,
class: LogFactory">
@@ -1437,201 +1437,199 @@
<span class="source-line-no">1424</span><span id="line-1424"> protected
static LogFactory newFactory(final String factoryClass,</span>
<span class="source-line-no">1425</span><span id="line-1425">
final ClassLoader classLoader,</span>
<span class="source-line-no">1426</span><span id="line-1426">
final ClassLoader contextClassLoader)</span>
-<span class="source-line-no">1427</span><span id="line-1427"> throws
LogConfigurationException {</span>
+<span class="source-line-no">1427</span><span id="line-1427">
throws LogConfigurationException {</span>
<span class="source-line-no">1428</span><span id="line-1428"> // Note
that any unchecked exceptions thrown by the createFactory</span>
<span class="source-line-no">1429</span><span id="line-1429"> // method
will propagate out of this method; in particular a</span>
<span class="source-line-no">1430</span><span id="line-1430"> //
ClassCastException can be thrown.</span>
-<span class="source-line-no">1431</span><span id="line-1431"> final
Object result = AccessController.doPrivileged(</span>
-<span class="source-line-no">1432</span><span id="line-1432">
(PrivilegedAction) () -> createFactory(factoryClass, classLoader));</span>
-<span class="source-line-no">1433</span><span id="line-1433"></span>
-<span class="source-line-no">1434</span><span id="line-1434"> if
(result instanceof LogConfigurationException) {</span>
-<span class="source-line-no">1435</span><span id="line-1435"> final
LogConfigurationException ex = (LogConfigurationException) result;</span>
-<span class="source-line-no">1436</span><span id="line-1436"> if
(isDiagnosticsEnabled()) {</span>
-<span class="source-line-no">1437</span><span id="line-1437">
logDiagnostic("An error occurred while loading the factory class:" +
ex.getMessage());</span>
-<span class="source-line-no">1438</span><span id="line-1438">
}</span>
-<span class="source-line-no">1439</span><span id="line-1439"> throw
ex;</span>
-<span class="source-line-no">1440</span><span id="line-1440"> }</span>
-<span class="source-line-no">1441</span><span id="line-1441"> if
(isDiagnosticsEnabled()) {</span>
-<span class="source-line-no">1442</span><span id="line-1442">
logDiagnostic("Created object " + objectId(result) + " to manage class loader "
+</span>
-<span class="source-line-no">1443</span><span id="line-1443">
objectId(contextClassLoader));</span>
-<span class="source-line-no">1444</span><span id="line-1444"> }</span>
-<span class="source-line-no">1445</span><span id="line-1445"> return
(LogFactory) result;</span>
-<span class="source-line-no">1446</span><span id="line-1446"> }</span>
-<span class="source-line-no">1447</span><span id="line-1447"></span>
-<span class="source-line-no">1448</span><span id="line-1448"> /**</span>
-<span class="source-line-no">1449</span><span id="line-1449"> * Returns a
string that uniquely identifies the specified object, including</span>
-<span class="source-line-no">1450</span><span id="line-1450"> * its
class.</span>
-<span class="source-line-no">1451</span><span id="line-1451"> *
<p></span>
-<span class="source-line-no">1452</span><span id="line-1452"> * The
returned string is of form "className@hashCode", that is, is the same as</span>
-<span class="source-line-no">1453</span><span id="line-1453"> * the return
value of the Object.toString() method, but works even when</span>
-<span class="source-line-no">1454</span><span id="line-1454"> * the
specified object's class has overridden the toString method.</span>
-<span class="source-line-no">1455</span><span id="line-1455"> *
</p></span>
-<span class="source-line-no">1456</span><span id="line-1456"> *</span>
-<span class="source-line-no">1457</span><span id="line-1457"> * @param o
may be null.</span>
-<span class="source-line-no">1458</span><span id="line-1458"> * @return a
string of form className@hashCode, or "null" if param o is null.</span>
-<span class="source-line-no">1459</span><span id="line-1459"> * @since
1.1</span>
-<span class="source-line-no">1460</span><span id="line-1460"> */</span>
-<span class="source-line-no">1461</span><span id="line-1461"> public static
String objectId(final Object o) {</span>
-<span class="source-line-no">1462</span><span id="line-1462"> if (o ==
null) {</span>
-<span class="source-line-no">1463</span><span id="line-1463">
return "null";</span>
-<span class="source-line-no">1464</span><span id="line-1464"> }</span>
-<span class="source-line-no">1465</span><span id="line-1465"> return
o.getClass().getName() + "@" + System.identityHashCode(o);</span>
-<span class="source-line-no">1466</span><span id="line-1466"> }</span>
-<span class="source-line-no">1467</span><span id="line-1467"></span>
-<span class="source-line-no">1468</span><span id="line-1468"> /**</span>
-<span class="source-line-no">1469</span><span id="line-1469"> * Release
any internal references to previously created {@link LogFactory}</span>
-<span class="source-line-no">1470</span><span id="line-1470"> * instances
that have been associated with the specified class loader</span>
-<span class="source-line-no">1471</span><span id="line-1471"> * (if any),
after calling the instance method {@code release()} on</span>
-<span class="source-line-no">1472</span><span id="line-1472"> * each of
them.</span>
-<span class="source-line-no">1473</span><span id="line-1473"> *</span>
-<span class="source-line-no">1474</span><span id="line-1474"> * @param
classLoader ClassLoader for which to release the LogFactory</span>
-<span class="source-line-no">1475</span><span id="line-1475"> */</span>
-<span class="source-line-no">1476</span><span id="line-1476"> public static
void release(final ClassLoader classLoader) {</span>
-<span class="source-line-no">1477</span><span id="line-1477"> if
(isDiagnosticsEnabled()) {</span>
-<span class="source-line-no">1478</span><span id="line-1478">
logDiagnostic("Releasing factory for class loader " +
objectId(classLoader));</span>
-<span class="source-line-no">1479</span><span id="line-1479"> }</span>
-<span class="source-line-no">1480</span><span id="line-1480"> //
factories is not final and could be replaced in this block.</span>
-<span class="source-line-no">1481</span><span id="line-1481"> final
Hashtable<ClassLoader, LogFactory> factories =
LogFactory.factories;</span>
-<span class="source-line-no">1482</span><span id="line-1482">
synchronized (factories) {</span>
-<span class="source-line-no">1483</span><span id="line-1483"> if
(classLoader == null) {</span>
-<span class="source-line-no">1484</span><span id="line-1484">
if (nullClassLoaderFactory != null) {</span>
-<span class="source-line-no">1485</span><span id="line-1485">
nullClassLoaderFactory.release();</span>
-<span class="source-line-no">1486</span><span id="line-1486">
nullClassLoaderFactory = null;</span>
-<span class="source-line-no">1487</span><span id="line-1487">
}</span>
-<span class="source-line-no">1488</span><span id="line-1488"> }
else {</span>
-<span class="source-line-no">1489</span><span id="line-1489">
final LogFactory factory = factories.get(classLoader);</span>
-<span class="source-line-no">1490</span><span id="line-1490">
if (factory != null) {</span>
-<span class="source-line-no">1491</span><span id="line-1491">
factory.release();</span>
-<span class="source-line-no">1492</span><span id="line-1492">
factories.remove(classLoader);</span>
-<span class="source-line-no">1493</span><span id="line-1493">
}</span>
-<span class="source-line-no">1494</span><span id="line-1494">
}</span>
-<span class="source-line-no">1495</span><span id="line-1495"> }</span>
-<span class="source-line-no">1496</span><span id="line-1496"> }</span>
-<span class="source-line-no">1497</span><span id="line-1497"></span>
-<span class="source-line-no">1498</span><span id="line-1498"> /**</span>
-<span class="source-line-no">1499</span><span id="line-1499"> * Release
any internal references to previously created {@link LogFactory}</span>
-<span class="source-line-no">1500</span><span id="line-1500"> * instances,
after calling the instance method {@code release()} on</span>
-<span class="source-line-no">1501</span><span id="line-1501"> * each of
them. This is useful in environments like servlet containers,</span>
-<span class="source-line-no">1502</span><span id="line-1502"> * which
implement application reloading by throwing away a ClassLoader.</span>
-<span class="source-line-no">1503</span><span id="line-1503"> * Dangling
references to objects in that class loader would prevent</span>
-<span class="source-line-no">1504</span><span id="line-1504"> * garbage
collection.</span>
-<span class="source-line-no">1505</span><span id="line-1505"> */</span>
-<span class="source-line-no">1506</span><span id="line-1506"> public static
void releaseAll() {</span>
-<span class="source-line-no">1507</span><span id="line-1507"> if
(isDiagnosticsEnabled()) {</span>
-<span class="source-line-no">1508</span><span id="line-1508">
logDiagnostic("Releasing factory for all class loaders.");</span>
-<span class="source-line-no">1509</span><span id="line-1509"> }</span>
-<span class="source-line-no">1510</span><span id="line-1510"> //
factories is not final and could be replaced in this block.</span>
-<span class="source-line-no">1511</span><span id="line-1511"> final
Hashtable<ClassLoader, LogFactory> factories =
LogFactory.factories;</span>
-<span class="source-line-no">1512</span><span id="line-1512">
synchronized (factories) {</span>
-<span class="source-line-no">1513</span><span id="line-1513">
factories.values().forEach(LogFactory::release);</span>
-<span class="source-line-no">1514</span><span id="line-1514">
factories.clear();</span>
-<span class="source-line-no">1515</span><span id="line-1515"></span>
-<span class="source-line-no">1516</span><span id="line-1516"> if
(nullClassLoaderFactory != null) {</span>
-<span class="source-line-no">1517</span><span id="line-1517">
nullClassLoaderFactory.release();</span>
-<span class="source-line-no">1518</span><span id="line-1518">
nullClassLoaderFactory = null;</span>
-<span class="source-line-no">1519</span><span id="line-1519">
}</span>
-<span class="source-line-no">1520</span><span id="line-1520"> }</span>
-<span class="source-line-no">1521</span><span id="line-1521"> }</span>
-<span class="source-line-no">1522</span><span id="line-1522"></span>
-<span class="source-line-no">1523</span><span id="line-1523"> /** Utility
method to safely trim a string. */</span>
-<span class="source-line-no">1524</span><span id="line-1524"> private
static String trim(final String src) {</span>
-<span class="source-line-no">1525</span><span id="line-1525"> if (src
== null) {</span>
-<span class="source-line-no">1526</span><span id="line-1526">
return null;</span>
-<span class="source-line-no">1527</span><span id="line-1527"> }</span>
-<span class="source-line-no">1528</span><span id="line-1528"> return
src.trim();</span>
-<span class="source-line-no">1529</span><span id="line-1529"> }</span>
-<span class="source-line-no">1530</span><span id="line-1530"></span>
-<span class="source-line-no">1531</span><span id="line-1531"> /**</span>
-<span class="source-line-no">1532</span><span id="line-1532"> * Protected
constructor that is not available for public use.</span>
-<span class="source-line-no">1533</span><span id="line-1533"> */</span>
-<span class="source-line-no">1534</span><span id="line-1534"> protected
LogFactory() {</span>
-<span class="source-line-no">1535</span><span id="line-1535"> }</span>
-<span class="source-line-no">1536</span><span id="line-1536"></span>
-<span class="source-line-no">1537</span><span id="line-1537"> /**</span>
-<span class="source-line-no">1538</span><span id="line-1538"> * Gets the
configuration attribute with the specified name (if any),</span>
-<span class="source-line-no">1539</span><span id="line-1539"> * or {@code
null} if there is no such attribute.</span>
-<span class="source-line-no">1540</span><span id="line-1540"> *</span>
-<span class="source-line-no">1541</span><span id="line-1541"> * @param
name Name of the attribute to return</span>
-<span class="source-line-no">1542</span><span id="line-1542"> * @return
the configuration attribute with the specified name.</span>
-<span class="source-line-no">1543</span><span id="line-1543"> */</span>
-<span class="source-line-no">1544</span><span id="line-1544"> public
abstract Object getAttribute(String name);</span>
-<span class="source-line-no">1545</span><span id="line-1545"></span>
-<span class="source-line-no">1546</span><span id="line-1546"> /**</span>
-<span class="source-line-no">1547</span><span id="line-1547"> * Gets an
array containing the names of all currently defined configuration attributes.
If there are no such attributes, a zero length array is returned.</span>
-<span class="source-line-no">1548</span><span id="line-1548"> *</span>
-<span class="source-line-no">1549</span><span id="line-1549"> * @return an
array containing the names of all currently defined configuration
attributes</span>
-<span class="source-line-no">1550</span><span id="line-1550"> */</span>
-<span class="source-line-no">1551</span><span id="line-1551"> public
abstract String[] getAttributeNames();</span>
-<span class="source-line-no">1552</span><span id="line-1552"></span>
-<span class="source-line-no">1553</span><span id="line-1553"> /**</span>
-<span class="source-line-no">1554</span><span id="line-1554"> *
Convenience method to derive a name from the specified class and call {@code
getInstance(String)} with it.</span>
-<span class="source-line-no">1555</span><span id="line-1555"> *</span>
-<span class="source-line-no">1556</span><span id="line-1556"> * @param
clazz Class for which a suitable Log name will be derived</span>
-<span class="source-line-no">1557</span><span id="line-1557"> * @return a
name from the specified class.</span>
-<span class="source-line-no">1558</span><span id="line-1558"> * @throws
LogConfigurationException if a suitable {@code Log} instance cannot be
returned</span>
-<span class="source-line-no">1559</span><span id="line-1559"> */</span>
-<span class="source-line-no">1560</span><span id="line-1560"> public
abstract Log getInstance(Class<?> clazz) throws
LogConfigurationException;</span>
-<span class="source-line-no">1561</span><span id="line-1561"></span>
-<span class="source-line-no">1562</span><span id="line-1562"> /**</span>
-<span class="source-line-no">1563</span><span id="line-1563"> * Constructs
(if necessary) and return a {@code Log} instance, using the factory's current
set of configuration attributes.</span>
-<span class="source-line-no">1564</span><span id="line-1564"> *
<p></span>
-<span class="source-line-no">1565</span><span id="line-1565"> *
<strong>NOTE</strong> - Depending upon the implementation of the
{@code LogFactory} you are using, the {@code Log} instance you are returned may
or may</span>
-<span class="source-line-no">1566</span><span id="line-1566"> * not be
local to the current application, and may or may not be returned again on a
subsequent call with the same name argument.</span>
-<span class="source-line-no">1567</span><span id="line-1567"> *
</p></span>
-<span class="source-line-no">1568</span><span id="line-1568"> *</span>
-<span class="source-line-no">1569</span><span id="line-1569"> * @param
name Logical name of the {@code Log} instance to be returned (the meaning of
this name is only known to the underlying logging implementation that</span>
-<span class="source-line-no">1570</span><span id="line-1570"> *
is being wrapped)</span>
-<span class="source-line-no">1571</span><span id="line-1571"> * @return a
{@code Log} instance.</span>
-<span class="source-line-no">1572</span><span id="line-1572"> * @throws
LogConfigurationException if a suitable {@code Log} instance cannot be
returned</span>
-<span class="source-line-no">1573</span><span id="line-1573"> */</span>
-<span class="source-line-no">1574</span><span id="line-1574"> public
abstract Log getInstance(String name)</span>
-<span class="source-line-no">1575</span><span id="line-1575"> throws
LogConfigurationException;</span>
-<span class="source-line-no">1576</span><span id="line-1576"></span>
-<span class="source-line-no">1577</span><span id="line-1577"> /**</span>
-<span class="source-line-no">1578</span><span id="line-1578"> * Release
any internal references to previously created {@link Log}</span>
-<span class="source-line-no">1579</span><span id="line-1579"> * instances
returned by this factory. This is useful in environments</span>
-<span class="source-line-no">1580</span><span id="line-1580"> * like
servlet containers, which implement application reloading by</span>
-<span class="source-line-no">1581</span><span id="line-1581"> * throwing
away a ClassLoader. Dangling references to objects in that</span>
-<span class="source-line-no">1582</span><span id="line-1582"> * class
loader would prevent garbage collection.</span>
-<span class="source-line-no">1583</span><span id="line-1583"> */</span>
-<span class="source-line-no">1584</span><span id="line-1584"> public
abstract void release();</span>
-<span class="source-line-no">1585</span><span id="line-1585"></span>
-<span class="source-line-no">1586</span><span id="line-1586"> /**</span>
-<span class="source-line-no">1587</span><span id="line-1587"> * Remove any
configuration attribute associated with the specified name.</span>
-<span class="source-line-no">1588</span><span id="line-1588"> * If there
is no such attribute, no action is taken.</span>
-<span class="source-line-no">1589</span><span id="line-1589"> *</span>
-<span class="source-line-no">1590</span><span id="line-1590"> * @param
name Name of the attribute to remove</span>
-<span class="source-line-no">1591</span><span id="line-1591"> */</span>
-<span class="source-line-no">1592</span><span id="line-1592"> public
abstract void removeAttribute(String name);</span>
-<span class="source-line-no">1593</span><span id="line-1593"></span>
-<span class="source-line-no">1594</span><span id="line-1594"> //</span>
-<span class="source-line-no">1595</span><span id="line-1595"> // We can't
do this in the class constructor, as there are many</span>
-<span class="source-line-no">1596</span><span id="line-1596"> // static
methods on this class that can be called before any</span>
-<span class="source-line-no">1597</span><span id="line-1597"> // LogFactory
instances are created, and they depend upon this</span>
-<span class="source-line-no">1598</span><span id="line-1598"> // stuff
having been set up.</span>
-<span class="source-line-no">1599</span><span id="line-1599"> //</span>
-<span class="source-line-no">1600</span><span id="line-1600"> // Note that
this block must come after any variable declarations used</span>
-<span class="source-line-no">1601</span><span id="line-1601"> // by any
methods called from this block, as we want any static initializer</span>
-<span class="source-line-no">1602</span><span id="line-1602"> // associated
with the variable to run first. If static initializers for</span>
-<span class="source-line-no">1603</span><span id="line-1603"> // variables
run after this code, then (a) their value might be needed</span>
-<span class="source-line-no">1604</span><span id="line-1604"> // by methods
called from here, and (b) they might *override* any value</span>
-<span class="source-line-no">1605</span><span id="line-1605"> // computed
here!</span>
-<span class="source-line-no">1606</span><span id="line-1606"> //</span>
-<span class="source-line-no">1607</span><span id="line-1607"> // So the
wisest thing to do is just to place this code at the very end</span>
-<span class="source-line-no">1608</span><span id="line-1608"> // of the
class file.</span>
-<span class="source-line-no">1609</span><span id="line-1609"></span>
-<span class="source-line-no">1610</span><span id="line-1610"> /**</span>
-<span class="source-line-no">1611</span><span id="line-1611"> * Sets the
configuration attribute with the specified name. Calling</span>
-<span class="source-line-no">1612</span><span id="line-1612"> * this with
a {@code null} value is equivalent to calling</span>
-<span class="source-line-no">1613</span><span id="line-1613"> * {@code
removeAttribute(name)}.</span>
-<span class="source-line-no">1614</span><span id="line-1614"> *</span>
-<span class="source-line-no">1615</span><span id="line-1615"> * @param
name Name of the attribute to set</span>
-<span class="source-line-no">1616</span><span id="line-1616"> * @param
value Value of the attribute to set, or {@code null}</span>
-<span class="source-line-no">1617</span><span id="line-1617"> * to remove
any setting for this attribute</span>
-<span class="source-line-no">1618</span><span id="line-1618"> */</span>
-<span class="source-line-no">1619</span><span id="line-1619"> public
abstract void setAttribute(String name, Object value);</span>
-<span class="source-line-no">1620</span><span id="line-1620"></span>
-<span class="source-line-no">1621</span><span id="line-1621">}</span>
+<span class="source-line-no">1431</span><span id="line-1431"> final
Object result = AccessController.doPrivileged((PrivilegedAction<?>) ()
-> createFactory(factoryClass, classLoader));</span>
+<span class="source-line-no">1432</span><span id="line-1432"></span>
+<span class="source-line-no">1433</span><span id="line-1433"> if
(result instanceof LogConfigurationException) {</span>
+<span class="source-line-no">1434</span><span id="line-1434"> final
LogConfigurationException ex = (LogConfigurationException) result;</span>
+<span class="source-line-no">1435</span><span id="line-1435"> if
(isDiagnosticsEnabled()) {</span>
+<span class="source-line-no">1436</span><span id="line-1436">
logDiagnostic("An error occurred while loading the factory class:" +
ex.getMessage());</span>
+<span class="source-line-no">1437</span><span id="line-1437">
}</span>
+<span class="source-line-no">1438</span><span id="line-1438"> throw
ex;</span>
+<span class="source-line-no">1439</span><span id="line-1439"> }</span>
+<span class="source-line-no">1440</span><span id="line-1440"> if
(isDiagnosticsEnabled()) {</span>
+<span class="source-line-no">1441</span><span id="line-1441">
logDiagnostic("Created object " + objectId(result) + " to manage class loader "
+ objectId(contextClassLoader));</span>
+<span class="source-line-no">1442</span><span id="line-1442"> }</span>
+<span class="source-line-no">1443</span><span id="line-1443"> return
(LogFactory) result;</span>
+<span class="source-line-no">1444</span><span id="line-1444"> }</span>
+<span class="source-line-no">1445</span><span id="line-1445"></span>
+<span class="source-line-no">1446</span><span id="line-1446"> /**</span>
+<span class="source-line-no">1447</span><span id="line-1447"> * Returns a
string that uniquely identifies the specified object, including</span>
+<span class="source-line-no">1448</span><span id="line-1448"> * its
class.</span>
+<span class="source-line-no">1449</span><span id="line-1449"> *
<p></span>
+<span class="source-line-no">1450</span><span id="line-1450"> * The
returned string is of form "className@hashCode", that is, is the same as</span>
+<span class="source-line-no">1451</span><span id="line-1451"> * the return
value of the Object.toString() method, but works even when</span>
+<span class="source-line-no">1452</span><span id="line-1452"> * the
specified object's class has overridden the toString method.</span>
+<span class="source-line-no">1453</span><span id="line-1453"> *
</p></span>
+<span class="source-line-no">1454</span><span id="line-1454"> *</span>
+<span class="source-line-no">1455</span><span id="line-1455"> * @param o
may be null.</span>
+<span class="source-line-no">1456</span><span id="line-1456"> * @return a
string of form className@hashCode, or "null" if param o is null.</span>
+<span class="source-line-no">1457</span><span id="line-1457"> * @since
1.1</span>
+<span class="source-line-no">1458</span><span id="line-1458"> */</span>
+<span class="source-line-no">1459</span><span id="line-1459"> public static
String objectId(final Object o) {</span>
+<span class="source-line-no">1460</span><span id="line-1460"> if (o ==
null) {</span>
+<span class="source-line-no">1461</span><span id="line-1461">
return "null";</span>
+<span class="source-line-no">1462</span><span id="line-1462"> }</span>
+<span class="source-line-no">1463</span><span id="line-1463"> return
o.getClass().getName() + "@" + System.identityHashCode(o);</span>
+<span class="source-line-no">1464</span><span id="line-1464"> }</span>
+<span class="source-line-no">1465</span><span id="line-1465"></span>
+<span class="source-line-no">1466</span><span id="line-1466"> /**</span>
+<span class="source-line-no">1467</span><span id="line-1467"> * Release
any internal references to previously created {@link LogFactory}</span>
+<span class="source-line-no">1468</span><span id="line-1468"> * instances
that have been associated with the specified class loader</span>
+<span class="source-line-no">1469</span><span id="line-1469"> * (if any),
after calling the instance method {@code release()} on</span>
+<span class="source-line-no">1470</span><span id="line-1470"> * each of
them.</span>
+<span class="source-line-no">1471</span><span id="line-1471"> *</span>
+<span class="source-line-no">1472</span><span id="line-1472"> * @param
classLoader ClassLoader for which to release the LogFactory</span>
+<span class="source-line-no">1473</span><span id="line-1473"> */</span>
+<span class="source-line-no">1474</span><span id="line-1474"> public static
void release(final ClassLoader classLoader) {</span>
+<span class="source-line-no">1475</span><span id="line-1475"> if
(isDiagnosticsEnabled()) {</span>
+<span class="source-line-no">1476</span><span id="line-1476">
logDiagnostic("Releasing factory for class loader " +
objectId(classLoader));</span>
+<span class="source-line-no">1477</span><span id="line-1477"> }</span>
+<span class="source-line-no">1478</span><span id="line-1478"> //
factories is not final and could be replaced in this block.</span>
+<span class="source-line-no">1479</span><span id="line-1479"> final
Hashtable<ClassLoader, LogFactory> factories =
LogFactory.factories;</span>
+<span class="source-line-no">1480</span><span id="line-1480">
synchronized (factories) {</span>
+<span class="source-line-no">1481</span><span id="line-1481"> if
(classLoader == null) {</span>
+<span class="source-line-no">1482</span><span id="line-1482">
if (nullClassLoaderFactory != null) {</span>
+<span class="source-line-no">1483</span><span id="line-1483">
nullClassLoaderFactory.release();</span>
+<span class="source-line-no">1484</span><span id="line-1484">
nullClassLoaderFactory = null;</span>
+<span class="source-line-no">1485</span><span id="line-1485">
}</span>
+<span class="source-line-no">1486</span><span id="line-1486"> }
else {</span>
+<span class="source-line-no">1487</span><span id="line-1487">
final LogFactory factory = factories.get(classLoader);</span>
+<span class="source-line-no">1488</span><span id="line-1488">
if (factory != null) {</span>
+<span class="source-line-no">1489</span><span id="line-1489">
factory.release();</span>
+<span class="source-line-no">1490</span><span id="line-1490">
factories.remove(classLoader);</span>
+<span class="source-line-no">1491</span><span id="line-1491">
}</span>
+<span class="source-line-no">1492</span><span id="line-1492">
}</span>
+<span class="source-line-no">1493</span><span id="line-1493"> }</span>
+<span class="source-line-no">1494</span><span id="line-1494"> }</span>
+<span class="source-line-no">1495</span><span id="line-1495"></span>
+<span class="source-line-no">1496</span><span id="line-1496"> /**</span>
+<span class="source-line-no">1497</span><span id="line-1497"> * Release
any internal references to previously created {@link LogFactory}</span>
+<span class="source-line-no">1498</span><span id="line-1498"> * instances,
after calling the instance method {@code release()} on</span>
+<span class="source-line-no">1499</span><span id="line-1499"> * each of
them. This is useful in environments like servlet containers,</span>
+<span class="source-line-no">1500</span><span id="line-1500"> * which
implement application reloading by throwing away a ClassLoader.</span>
+<span class="source-line-no">1501</span><span id="line-1501"> * Dangling
references to objects in that class loader would prevent</span>
+<span class="source-line-no">1502</span><span id="line-1502"> * garbage
collection.</span>
+<span class="source-line-no">1503</span><span id="line-1503"> */</span>
+<span class="source-line-no">1504</span><span id="line-1504"> public static
void releaseAll() {</span>
+<span class="source-line-no">1505</span><span id="line-1505"> if
(isDiagnosticsEnabled()) {</span>
+<span class="source-line-no">1506</span><span id="line-1506">
logDiagnostic("Releasing factory for all class loaders.");</span>
+<span class="source-line-no">1507</span><span id="line-1507"> }</span>
+<span class="source-line-no">1508</span><span id="line-1508"> //
factories is not final and could be replaced in this block.</span>
+<span class="source-line-no">1509</span><span id="line-1509"> final
Hashtable<ClassLoader, LogFactory> factories =
LogFactory.factories;</span>
+<span class="source-line-no">1510</span><span id="line-1510">
synchronized (factories) {</span>
+<span class="source-line-no">1511</span><span id="line-1511">
factories.values().forEach(LogFactory::release);</span>
+<span class="source-line-no">1512</span><span id="line-1512">
factories.clear();</span>
+<span class="source-line-no">1513</span><span id="line-1513"></span>
+<span class="source-line-no">1514</span><span id="line-1514"> if
(nullClassLoaderFactory != null) {</span>
+<span class="source-line-no">1515</span><span id="line-1515">
nullClassLoaderFactory.release();</span>
+<span class="source-line-no">1516</span><span id="line-1516">
nullClassLoaderFactory = null;</span>
+<span class="source-line-no">1517</span><span id="line-1517">
}</span>
+<span class="source-line-no">1518</span><span id="line-1518"> }</span>
+<span class="source-line-no">1519</span><span id="line-1519"> }</span>
+<span class="source-line-no">1520</span><span id="line-1520"></span>
+<span class="source-line-no">1521</span><span id="line-1521"> /** Utility
method to safely trim a string. */</span>
+<span class="source-line-no">1522</span><span id="line-1522"> private
static String trim(final String src) {</span>
+<span class="source-line-no">1523</span><span id="line-1523"> if (src
== null) {</span>
+<span class="source-line-no">1524</span><span id="line-1524">
return null;</span>
+<span class="source-line-no">1525</span><span id="line-1525"> }</span>
+<span class="source-line-no">1526</span><span id="line-1526"> return
src.trim();</span>
+<span class="source-line-no">1527</span><span id="line-1527"> }</span>
+<span class="source-line-no">1528</span><span id="line-1528"></span>
+<span class="source-line-no">1529</span><span id="line-1529"> /**</span>
+<span class="source-line-no">1530</span><span id="line-1530"> * Protected
constructor that is not available for public use.</span>
+<span class="source-line-no">1531</span><span id="line-1531"> */</span>
+<span class="source-line-no">1532</span><span id="line-1532"> protected
LogFactory() {</span>
+<span class="source-line-no">1533</span><span id="line-1533"> }</span>
+<span class="source-line-no">1534</span><span id="line-1534"></span>
+<span class="source-line-no">1535</span><span id="line-1535"> /**</span>
+<span class="source-line-no">1536</span><span id="line-1536"> * Gets the
configuration attribute with the specified name (if any),</span>
+<span class="source-line-no">1537</span><span id="line-1537"> * or {@code
null} if there is no such attribute.</span>
+<span class="source-line-no">1538</span><span id="line-1538"> *</span>
+<span class="source-line-no">1539</span><span id="line-1539"> * @param
name Name of the attribute to return</span>
+<span class="source-line-no">1540</span><span id="line-1540"> * @return
the configuration attribute with the specified name.</span>
+<span class="source-line-no">1541</span><span id="line-1541"> */</span>
+<span class="source-line-no">1542</span><span id="line-1542"> public
abstract Object getAttribute(String name);</span>
+<span class="source-line-no">1543</span><span id="line-1543"></span>
+<span class="source-line-no">1544</span><span id="line-1544"> /**</span>
+<span class="source-line-no">1545</span><span id="line-1545"> * Gets an
array containing the names of all currently defined configuration attributes.
If there are no such attributes, a zero length array is returned.</span>
+<span class="source-line-no">1546</span><span id="line-1546"> *</span>
+<span class="source-line-no">1547</span><span id="line-1547"> * @return an
array containing the names of all currently defined configuration
attributes</span>
+<span class="source-line-no">1548</span><span id="line-1548"> */</span>
+<span class="source-line-no">1549</span><span id="line-1549"> public
abstract String[] getAttributeNames();</span>
+<span class="source-line-no">1550</span><span id="line-1550"></span>
+<span class="source-line-no">1551</span><span id="line-1551"> /**</span>
+<span class="source-line-no">1552</span><span id="line-1552"> *
Convenience method to derive a name from the specified class and call {@code
getInstance(String)} with it.</span>
+<span class="source-line-no">1553</span><span id="line-1553"> *</span>
+<span class="source-line-no">1554</span><span id="line-1554"> * @param
clazz Class for which a suitable Log name will be derived</span>
+<span class="source-line-no">1555</span><span id="line-1555"> * @return a
name from the specified class.</span>
+<span class="source-line-no">1556</span><span id="line-1556"> * @throws
LogConfigurationException if a suitable {@code Log} instance cannot be
returned</span>
+<span class="source-line-no">1557</span><span id="line-1557"> */</span>
+<span class="source-line-no">1558</span><span id="line-1558"> public
abstract Log getInstance(Class<?> clazz) throws
LogConfigurationException;</span>
+<span class="source-line-no">1559</span><span id="line-1559"></span>
+<span class="source-line-no">1560</span><span id="line-1560"> /**</span>
+<span class="source-line-no">1561</span><span id="line-1561"> * Constructs
(if necessary) and return a {@code Log} instance, using the factory's current
set of configuration attributes.</span>
+<span class="source-line-no">1562</span><span id="line-1562"> *
<p></span>
+<span class="source-line-no">1563</span><span id="line-1563"> *
<strong>NOTE</strong> - Depending upon the implementation of the
{@code LogFactory} you are using, the {@code Log} instance you are returned may
or may</span>
+<span class="source-line-no">1564</span><span id="line-1564"> * not be
local to the current application, and may or may not be returned again on a
subsequent call with the same name argument.</span>
+<span class="source-line-no">1565</span><span id="line-1565"> *
</p></span>
+<span class="source-line-no">1566</span><span id="line-1566"> *</span>
+<span class="source-line-no">1567</span><span id="line-1567"> * @param
name Logical name of the {@code Log} instance to be returned (the meaning of
this name is only known to the underlying logging implementation that</span>
+<span class="source-line-no">1568</span><span id="line-1568"> *
is being wrapped)</span>
+<span class="source-line-no">1569</span><span id="line-1569"> * @return a
{@code Log} instance.</span>
+<span class="source-line-no">1570</span><span id="line-1570"> * @throws
LogConfigurationException if a suitable {@code Log} instance cannot be
returned</span>
+<span class="source-line-no">1571</span><span id="line-1571"> */</span>
+<span class="source-line-no">1572</span><span id="line-1572"> public
abstract Log getInstance(String name)</span>
+<span class="source-line-no">1573</span><span id="line-1573"> throws
LogConfigurationException;</span>
+<span class="source-line-no">1574</span><span id="line-1574"></span>
+<span class="source-line-no">1575</span><span id="line-1575"> /**</span>
+<span class="source-line-no">1576</span><span id="line-1576"> * Release
any internal references to previously created {@link Log}</span>
+<span class="source-line-no">1577</span><span id="line-1577"> * instances
returned by this factory. This is useful in environments</span>
+<span class="source-line-no">1578</span><span id="line-1578"> * like
servlet containers, which implement application reloading by</span>
+<span class="source-line-no">1579</span><span id="line-1579"> * throwing
away a ClassLoader. Dangling references to objects in that</span>
+<span class="source-line-no">1580</span><span id="line-1580"> * class
loader would prevent garbage collection.</span>
+<span class="source-line-no">1581</span><span id="line-1581"> */</span>
+<span class="source-line-no">1582</span><span id="line-1582"> public
abstract void release();</span>
+<span class="source-line-no">1583</span><span id="line-1583"></span>
+<span class="source-line-no">1584</span><span id="line-1584"> /**</span>
+<span class="source-line-no">1585</span><span id="line-1585"> * Remove any
configuration attribute associated with the specified name.</span>
+<span class="source-line-no">1586</span><span id="line-1586"> * If there
is no such attribute, no action is taken.</span>
+<span class="source-line-no">1587</span><span id="line-1587"> *</span>
+<span class="source-line-no">1588</span><span id="line-1588"> * @param
name Name of the attribute to remove</span>
+<span class="source-line-no">1589</span><span id="line-1589"> */</span>
+<span class="source-line-no">1590</span><span id="line-1590"> public
abstract void removeAttribute(String name);</span>
+<span class="source-line-no">1591</span><span id="line-1591"></span>
+<span class="source-line-no">1592</span><span id="line-1592"> //</span>
+<span class="source-line-no">1593</span><span id="line-1593"> // We can't
do this in the class constructor, as there are many</span>
+<span class="source-line-no">1594</span><span id="line-1594"> // static
methods on this class that can be called before any</span>
+<span class="source-line-no">1595</span><span id="line-1595"> // LogFactory
instances are created, and they depend upon this</span>
+<span class="source-line-no">1596</span><span id="line-1596"> // stuff
having been set up.</span>
+<span class="source-line-no">1597</span><span id="line-1597"> //</span>
+<span class="source-line-no">1598</span><span id="line-1598"> // Note that
this block must come after any variable declarations used</span>
+<span class="source-line-no">1599</span><span id="line-1599"> // by any
methods called from this block, as we want any static initializer</span>
+<span class="source-line-no">1600</span><span id="line-1600"> // associated
with the variable to run first. If static initializers for</span>
+<span class="source-line-no">1601</span><span id="line-1601"> // variables
run after this code, then (a) their value might be needed</span>
+<span class="source-line-no">1602</span><span id="line-1602"> // by methods
called from here, and (b) they might *override* any value</span>
+<span class="source-line-no">1603</span><span id="line-1603"> // computed
here!</span>
+<span class="source-line-no">1604</span><span id="line-1604"> //</span>
+<span class="source-line-no">1605</span><span id="line-1605"> // So the
wisest thing to do is just to place this code at the very end</span>
+<span class="source-line-no">1606</span><span id="line-1606"> // of the
class file.</span>
+<span class="source-line-no">1607</span><span id="line-1607"></span>
+<span class="source-line-no">1608</span><span id="line-1608"> /**</span>
+<span class="source-line-no">1609</span><span id="line-1609"> * Sets the
configuration attribute with the specified name. Calling</span>
+<span class="source-line-no">1610</span><span id="line-1610"> * this with
a {@code null} value is equivalent to calling</span>
+<span class="source-line-no">1611</span><span id="line-1611"> * {@code
removeAttribute(name)}.</span>
+<span class="source-line-no">1612</span><span id="line-1612"> *</span>
+<span class="source-line-no">1613</span><span id="line-1613"> * @param
name Name of the attribute to set</span>
+<span class="source-line-no">1614</span><span id="line-1614"> * @param
value Value of the attribute to set, or {@code null}</span>
+<span class="source-line-no">1615</span><span id="line-1615"> * to remove
any setting for this attribute</span>
+<span class="source-line-no">1616</span><span id="line-1616"> */</span>
+<span class="source-line-no">1617</span><span id="line-1617"> public
abstract void setAttribute(String name, Object value);</span>
+<span class="source-line-no">1618</span><span id="line-1618"></span>
+<span class="source-line-no">1619</span><span id="line-1619">}</span>
Modified:
websites/production/commons/content/proper/commons-logging/apidocs/src-html/org/apache/commons/logging/LogSource.html
==============================================================================
---
websites/production/commons/content/proper/commons-logging/apidocs/src-html/org/apache/commons/logging/LogSource.html
(original)
+++
websites/production/commons/content/proper/commons-logging/apidocs/src-html/org/apache/commons/logging/LogSource.html
Wed May 15 16:57:04 2024
@@ -1,7 +1,7 @@
<!DOCTYPE HTML>
<html lang="en">
<head>
-<!-- Generated by javadoc (17) -->
+<!-- Generated by javadoc (21) -->
<title>Source code</title>
<meta name="viewport" content="width=device-width, initial-scale=1">
<meta name="description" content="source: package: org.apache.commons.logging,
class: LogSource">
@@ -74,53 +74,53 @@
<span class="source-line-no">061</span><span id="line-61"> /** Is Log4j
available (in the current classpath) */</span>
<span class="source-line-no">062</span><span id="line-62"> static protected
boolean log4jIsAvailable;</span>
<span class="source-line-no">063</span><span id="line-63"></span>
-<span class="source-line-no">064</span><span id="line-64"> /** Is JDK 1.4
logging available */</span>
-<span class="source-line-no">065</span><span id="line-65"> static protected
boolean jdk14IsAvailable;</span>
-<span class="source-line-no">066</span><span id="line-66"></span>
-<span class="source-line-no">067</span><span id="line-67"> /** Constructor
for current log class */</span>
-<span class="source-line-no">068</span><span id="line-68"> static protected
Constructor<?> logImplctor;</span>
-<span class="source-line-no">069</span><span id="line-69"></span>
-<span class="source-line-no">070</span><span id="line-70"> /**</span>
-<span class="source-line-no">071</span><span id="line-71"> * An empty
immutable {@code String} array.</span>
-<span class="source-line-no">072</span><span id="line-72"> */</span>
-<span class="source-line-no">073</span><span id="line-73"> private static
final String[] EMPTY_STRING_ARRAY = {};</span>
+<span class="source-line-no">064</span><span id="line-64"> /**</span>
+<span class="source-line-no">065</span><span id="line-65"> * Is JDK 1.4
logging available, always true.</span>
+<span class="source-line-no">066</span><span id="line-66"> *</span>
+<span class="source-line-no">067</span><span id="line-67"> * @deprecated
Java 8 is the baseline and includes JUL.</span>
+<span class="source-line-no">068</span><span id="line-68"> */</span>
+<span class="source-line-no">069</span><span id="line-69">
@Deprecated</span>
+<span class="source-line-no">070</span><span id="line-70"> static protected
boolean jdk14IsAvailable = true;</span>
+<span class="source-line-no">071</span><span id="line-71"></span>
+<span class="source-line-no">072</span><span id="line-72"> /** Constructor
for current log class */</span>
+<span class="source-line-no">073</span><span id="line-73"> static protected
Constructor<?> logImplctor;</span>
<span class="source-line-no">074</span><span id="line-74"></span>
-<span class="source-line-no">075</span><span id="line-75"> static {</span>
-<span class="source-line-no">076</span><span id="line-76"></span>
-<span class="source-line-no">077</span><span id="line-77"> // Is Log4J
Available?</span>
-<span class="source-line-no">078</span><span id="line-78">
log4jIsAvailable = isClassForName("org.apache.log4j.Logger");</span>
+<span class="source-line-no">075</span><span id="line-75"> /**</span>
+<span class="source-line-no">076</span><span id="line-76"> * An empty
immutable {@code String} array.</span>
+<span class="source-line-no">077</span><span id="line-77"> */</span>
+<span class="source-line-no">078</span><span id="line-78"> private static
final String[] EMPTY_STRING_ARRAY = {};</span>
<span class="source-line-no">079</span><span id="line-79"></span>
-<span class="source-line-no">080</span><span id="line-80"> // Is JDK
1.4 Logging Available?</span>
-<span class="source-line-no">081</span><span id="line-81">
jdk14IsAvailable =
isClassForName("org.apache.commons.logging.impl.Jdk14Logger");</span>
-<span class="source-line-no">082</span><span id="line-82"></span>
-<span class="source-line-no">083</span><span id="line-83"> // Set the
default Log implementation</span>
-<span class="source-line-no">084</span><span id="line-84"> String name
= null;</span>
-<span class="source-line-no">085</span><span id="line-85"> try {</span>
-<span class="source-line-no">086</span><span id="line-86"> name =
System.getProperty("org.apache.commons.logging.log");</span>
-<span class="source-line-no">087</span><span id="line-87"> if (name
== null) {</span>
-<span class="source-line-no">088</span><span id="line-88"> name
= System.getProperty("org.apache.commons.logging.Log");</span>
-<span class="source-line-no">089</span><span id="line-89"> }</span>
-<span class="source-line-no">090</span><span id="line-90"> } catch
(final Throwable ignore) {</span>
-<span class="source-line-no">091</span><span id="line-91"> //
Ignore</span>
-<span class="source-line-no">092</span><span id="line-92"> }</span>
-<span class="source-line-no">093</span><span id="line-93"> if (name !=
null) {</span>
-<span class="source-line-no">094</span><span id="line-94"> try
{</span>
-<span class="source-line-no">095</span><span id="line-95">
setLogImplementation(name);</span>
-<span class="source-line-no">096</span><span id="line-96"> } catch
(final Throwable t) {</span>
-<span class="source-line-no">097</span><span id="line-97"> try
{</span>
-<span class="source-line-no">098</span><span id="line-98">
setLogImplementation("org.apache.commons.logging.impl.NoOpLog");</span>
-<span class="source-line-no">099</span><span id="line-99"> }
catch (final Throwable ignore) {</span>
-<span class="source-line-no">100</span><span id="line-100">
// Ignore</span>
-<span class="source-line-no">101</span><span id="line-101">
}</span>
-<span class="source-line-no">102</span><span id="line-102"> }</span>
-<span class="source-line-no">103</span><span id="line-103"> } else
{</span>
-<span class="source-line-no">104</span><span id="line-104"> try
{</span>
-<span class="source-line-no">105</span><span id="line-105"> if
(log4jIsAvailable) {</span>
-<span class="source-line-no">106</span><span id="line-106">
setLogImplementation("org.apache.commons.logging.impl.Log4JLogger");</span>
-<span class="source-line-no">107</span><span id="line-107"> }
else if (jdk14IsAvailable) {</span>
-<span class="source-line-no">108</span><span id="line-108">
setLogImplementation("org.apache.commons.logging.impl.Jdk14Logger");</span>
+<span class="source-line-no">080</span><span id="line-80"> static {</span>
+<span class="source-line-no">081</span><span id="line-81"></span>
+<span class="source-line-no">082</span><span id="line-82"> // Is Log4J
Available?</span>
+<span class="source-line-no">083</span><span id="line-83">
log4jIsAvailable = isClassForName("org.apache.log4j.Logger");</span>
+<span class="source-line-no">084</span><span id="line-84"></span>
+<span class="source-line-no">085</span><span id="line-85"> // Set the
default Log implementation</span>
+<span class="source-line-no">086</span><span id="line-86"> String name
= null;</span>
+<span class="source-line-no">087</span><span id="line-87"> try {</span>
+<span class="source-line-no">088</span><span id="line-88"> name =
System.getProperty("org.apache.commons.logging.log");</span>
+<span class="source-line-no">089</span><span id="line-89"> if (name
== null) {</span>
+<span class="source-line-no">090</span><span id="line-90"> name
= System.getProperty("org.apache.commons.logging.Log");</span>
+<span class="source-line-no">091</span><span id="line-91"> }</span>
+<span class="source-line-no">092</span><span id="line-92"> } catch
(final Throwable ignore) {</span>
+<span class="source-line-no">093</span><span id="line-93"> //
Ignore</span>
+<span class="source-line-no">094</span><span id="line-94"> }</span>
+<span class="source-line-no">095</span><span id="line-95"> if (name !=
null) {</span>
+<span class="source-line-no">096</span><span id="line-96"> try
{</span>
+<span class="source-line-no">097</span><span id="line-97">
setLogImplementation(name);</span>
+<span class="source-line-no">098</span><span id="line-98"> } catch
(final Throwable t) {</span>
+<span class="source-line-no">099</span><span id="line-99"> try
{</span>
+<span class="source-line-no">100</span><span id="line-100">
setLogImplementation("org.apache.commons.logging.impl.NoOpLog");</span>
+<span class="source-line-no">101</span><span id="line-101"> }
catch (final Throwable ignore) {</span>
+<span class="source-line-no">102</span><span id="line-102">
// Ignore</span>
+<span class="source-line-no">103</span><span id="line-103">
}</span>
+<span class="source-line-no">104</span><span id="line-104"> }</span>
+<span class="source-line-no">105</span><span id="line-105"> } else
{</span>
+<span class="source-line-no">106</span><span id="line-106"> try
{</span>
+<span class="source-line-no">107</span><span id="line-107"> if
(log4jIsAvailable) {</span>
+<span class="source-line-no">108</span><span id="line-108">
setLogImplementation("org.apache.commons.logging.impl.Log4JLogger");</span>
<span class="source-line-no">109</span><span id="line-109"> }
else {</span>
-<span class="source-line-no">110</span><span id="line-110">
setLogImplementation("org.apache.commons.logging.impl.NoOpLog");</span>
+<span class="source-line-no">110</span><span id="line-110">
setLogImplementation("org.apache.commons.logging.impl.Jdk14Logger");</span>
<span class="source-line-no">111</span><span id="line-111">
}</span>
<span class="source-line-no">112</span><span id="line-112"> } catch
(final Throwable t) {</span>
<span class="source-line-no">113</span><span id="line-113"> try
{</span>
Modified:
websites/production/commons/content/proper/commons-logging/apidocs/src-html/org/apache/commons/logging/impl/AvalonLogger.html
==============================================================================
---
websites/production/commons/content/proper/commons-logging/apidocs/src-html/org/apache/commons/logging/impl/AvalonLogger.html
(original)
+++
websites/production/commons/content/proper/commons-logging/apidocs/src-html/org/apache/commons/logging/impl/AvalonLogger.html
Wed May 15 16:57:04 2024
@@ -1,7 +1,7 @@
<!DOCTYPE HTML>
<html lang="en">
<head>
-<!-- Generated by javadoc (17) -->
+<!-- Generated by javadoc (21) -->
<title>Source code</title>
<meta name="viewport" content="width=device-width, initial-scale=1">
<meta name="description" content="source: package:
org.apache.commons.logging.impl, class: AvalonLogger">
@@ -100,7 +100,7 @@
<span class="source-line-no">087</span><span id="line-87"> * @param name
the name of the avalon logger implementation to delegate to</span>
<span class="source-line-no">088</span><span id="line-88"> */</span>
<span class="source-line-no">089</span><span id="line-89"> public
AvalonLogger(final String name) {</span>
-<span class="source-line-no">090</span><span id="line-90">
Objects.requireNonNull(defaultLogger, "default logger has to be specified if
this constructor is used!");</span>
+<span class="source-line-no">090</span><span id="line-90">
Objects.requireNonNull(defaultLogger, "defaultLogger");</span>
<span class="source-line-no">091</span><span id="line-91"> this.logger
= defaultLogger.getChildLogger(name);</span>
<span class="source-line-no">092</span><span id="line-92"> }</span>
<span class="source-line-no">093</span><span id="line-93"></span>