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, "&lt;").replace(/>/g, "&gt;");
 }
-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">&nbsp;</span><span 
class="nav-bar-toggle-icon">&nbsp;</span><span 
class="nav-bar-toggle-icon">&nbsp;</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&nbsp;<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&nbsp;<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) () -&gt; 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">     * 
&lt;p&gt;</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">     * 
&lt;/p&gt;</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&lt;ClassLoader, LogFactory&gt; 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&lt;ClassLoader, LogFactory&gt; 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&lt;?&gt; 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">     * 
&lt;p&gt;</span>
-<span class="source-line-no">1565</span><span id="line-1565">     * 
&lt;strong&gt;NOTE&lt;/strong&gt; - 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">     * 
&lt;/p&gt;</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&lt;?&gt;) () 
-&gt; 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">     * 
&lt;p&gt;</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">     * 
&lt;/p&gt;</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&lt;ClassLoader, LogFactory&gt; 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&lt;ClassLoader, LogFactory&gt; 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&lt;?&gt; 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">     * 
&lt;p&gt;</span>
+<span class="source-line-no">1563</span><span id="line-1563">     * 
&lt;strong&gt;NOTE&lt;/strong&gt; - 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">     * 
&lt;/p&gt;</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&lt;?&gt; 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&lt;?&gt; 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>



Reply via email to