| <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"> |
| <!-- |
| Licensed to the Apache Software Foundation (ASF) under one or more |
| contributor license agreements. See the NOTICE file distributed with |
| this work for additional information regarding copyright ownership. |
| The ASF licenses this file to You under the Apache License, Version 2.0 |
| (the "License"); you may not use this file except in compliance with |
| the License. You may obtain a copy of the License at |
| |
| http://www.apache.org/licenses/LICENSE-2.0 |
| |
| Unless required by applicable law or agreed to in writing, software |
| distributed under the License is distributed on an "AS IS" BASIS, |
| WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. |
| See the License for the specific language governing permissions and |
| limitations under the License. |
| --> |
| <!-- Generated by Apache Maven Doxia at Jul 12, 2014 --> |
| <html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en" lang="en"> |
| <head> |
| <meta http-equiv="Content-Type" content="text/html; charset=UTF-8" /> |
| <title>CPD Results - Apache Log4j API</title> |
| <link rel="stylesheet" href="./css/bootstrap.min.css" type="text/css" /> |
| <link rel="stylesheet" href="./css/site.css" type="text/css" /> |
| <script type="text/javascript" src="./js/jquery.min.js"></script> |
| <script type="text/javascript" src="./js/bootstrap.min.js"></script> |
| <script type="text/javascript" src="./js/prettify.min.js"></script> |
| <script type="text/javascript" src="./js/site.js"></script> |
| <meta name="Date-Revision-yyyymmdd" content="20140712" /> |
| <meta http-equiv="Content-Language" content="en" /> |
| |
| </head> |
| <body class="composite"> |
| <img class="logo-left" src="./images/ls-logo.jpg" alt="Apache logging services logo" /> |
| <img class="logo-right" src="./images/logo.jpg" alt="Apache log4j logo" /> |
| <div class="clear"></div> |
| |
| <div class="navbar"> |
| <div class="navbar-inner"> |
| <div class="container-fluid"> |
| <a class="brand" href="http://logging.apache.org/log4j/2.x/log4j-api/">Apache Log4j API ™</a> |
| <ul class="nav"> |
| <li> |
| |
| |
| <a href="http://wiki.apache.org/logging" class="external" target="_blank" title="Logging Wiki">Logging Wiki</a> |
| </li> |
| <li> |
| |
| |
| <a href="http://www.apache.org/" class="external" target="_blank" title="Apache">Apache</a> |
| </li> |
| <li> |
| <a href="../../../" title="Logging Services">Logging Services</a> |
| </li> |
| <li> |
| |
| |
| <a href="https://analysis.apache.org/dashboard/index/org.apache.logging.log4j:log4j" class="external" target="_blank" title="Sonar">Sonar</a> |
| </li> |
| <li> |
| <a href="../index.html" title="Log4j">Log4j</a> |
| </li> |
| </ul> |
| </div> |
| </div> |
| </div> |
| |
| <div class="container-fluid"> |
| <table class="layout-table"> |
| <tr> |
| <td class="sidebar"> |
| <div class="well sidebar-nav"> |
| <ul class="nav nav-list"> |
| <li class="nav-header"><i class="icon-home"></i>Apache Log4j™ 2</li> |
| <li class="none"> |
| <a href="../index.html" title="About">About</a> |
| </li> |
| <li class="none"> |
| <a href="../download.html" title="Download">Download</a> |
| </li> |
| <li class="none"> |
| <a href="../maven-artifacts.html" title="Maven and Ivy">Maven and Ivy</a> |
| </li> |
| <li class="none"> |
| <a href="../build.html" title="Build">Build</a> |
| </li> |
| <li class="none"> |
| <a href="../guidelines.html" title="Guidelines">Guidelines</a> |
| </li> |
| <li class="none"> |
| <a href="../javastyle.html" title="Style Guide">Style Guide</a> |
| </li> |
| <li class="none"> |
| <a href="../changelog.html" title="Changelog">Changelog</a> |
| </li> |
| <li class="collapsed"> |
| <a href="../javadoc.html" title="Javadoc">Javadoc</a> |
| </li> |
| <li class="none"> |
| <a href="../faq.html" title="FAQ">FAQ</a> |
| </li> |
| </ul> |
| <ul class="nav nav-list"> |
| <li class="nav-header"><i class="icon-book"></i>Manual</li> |
| <li class="none"> |
| <a href="../manual/index.html" title="Introduction">Introduction</a> |
| </li> |
| <li class="none"> |
| <a href="../manual/architecture.html" title="Architecture">Architecture</a> |
| </li> |
| <li class="none"> |
| <a href="../manual/migration.html" title="Log4j 1.x Migration">Log4j 1.x Migration</a> |
| </li> |
| <li class="collapsed"> |
| <a href="../manual/api.html" title="API">API</a> |
| </li> |
| <li class="collapsed"> |
| <a href="../manual/configuration.html" title="Configuration">Configuration</a> |
| </li> |
| <li class="collapsed"> |
| <a href="../manual/webapp.html" title="Web Applications and JSPs">Web Applications and JSPs</a> |
| </li> |
| <li class="collapsed"> |
| <a href="../manual/plugins.html" title="Plugins">Plugins</a> |
| </li> |
| <li class="collapsed"> |
| <a href="../manual/lookups.html" title="Lookups">Lookups</a> |
| </li> |
| <li class="collapsed"> |
| <a href="../manual/appenders.html" title="Appenders">Appenders</a> |
| </li> |
| <li class="collapsed"> |
| <a href="../manual/layouts.html" title="Layouts">Layouts</a> |
| </li> |
| <li class="collapsed"> |
| <a href="../manual/filters.html" title="Filters">Filters</a> |
| </li> |
| <li class="collapsed"> |
| <a href="../manual/async.html" title="Async Loggers">Async Loggers</a> |
| </li> |
| <li class="none"> |
| <a href="../manual/jmx.html" title="JMX">JMX</a> |
| </li> |
| <li class="none"> |
| <a href="../manual/logsep.html" title="Logging Separation">Logging Separation</a> |
| </li> |
| <li class="collapsed"> |
| <a href="../manual/extending.html" title="Extending Log4j">Extending Log4j</a> |
| </li> |
| <li class="collapsed"> |
| <a href="../manual/customconfig.html" title="Extending Log4j Configuration">Extending Log4j Configuration</a> |
| </li> |
| </ul> |
| <ul class="nav nav-list"> |
| <li class="nav-header"><i class="icon-cog"></i>Components</li> |
| <li class="none active"> |
| <a href="../log4j-api/index.html" title="API">API</a> |
| </li> |
| <li class="none"> |
| <a href="../log4j-core/index.html" title="Implementation">Implementation</a> |
| </li> |
| <li class="none"> |
| <a href="../log4j-jcl/index.html" title="Commons Logging Bridge">Commons Logging Bridge</a> |
| </li> |
| <li class="none"> |
| <a href="../log4j-1.2-api/index.html" title="Log4j 1.2 API">Log4j 1.2 API</a> |
| </li> |
| <li class="none"> |
| <a href="../log4j-slf4j-impl/index.html" title="SLF4J Binding">SLF4J Binding</a> |
| </li> |
| <li class="none"> |
| <a href="../log4j-to-slf4j/index.html" title="Log4j 2 to SLF4J Adapter">Log4j 2 to SLF4J Adapter</a> |
| </li> |
| <li class="none"> |
| <a href="../log4j-flume-ng/index.html" title="Apache Flume NG Appender">Apache Flume NG Appender</a> |
| </li> |
| <li class="none"> |
| <a href="../log4j-taglib/index.html" title="Log4j Tag Library">Log4j Tag Library</a> |
| </li> |
| <li class="none"> |
| <a href="../log4j-jmx-gui/index.html" title="Log4j JMX GUI">Log4j JMX GUI</a> |
| </li> |
| <li class="none"> |
| <a href="../log4j-web/index.html" title="Log4j Web Application Support">Log4j Web Application Support</a> |
| </li> |
| <li class="none"> |
| <a href="../log4j-nosql/index.html" title="Log4j NoSQL support">Log4j NoSQL support</a> |
| </li> |
| </ul> |
| <ul class="nav nav-list"> |
| <li class="nav-header">Component Documentation</li> |
| <li class="collapsed"> |
| <a href="project-info.html" title="Component Information">Component Information</a> |
| </li> |
| <li class="expanded"> |
| <a href="project-reports.html" title="Component Reports">Component Reports</a> |
| <ul> |
| <li class="none"> |
| <a href="rat-report.html" title="Rat Report">Rat Report</a> |
| </li> |
| <li class="none"> |
| <a href="checkstyle.html" title="Checkstyle">Checkstyle</a> |
| </li> |
| <li class="none"> |
| <a href="apidocs/index.html" title="JavaDocs">JavaDocs</a> |
| </li> |
| <li class="none"> |
| <a href="xref/index.html" title="Source Xref">Source Xref</a> |
| </li> |
| <li class="none"> |
| <a href="pmd.html" title="PMD">PMD</a> |
| </li> |
| <li class="none active"> |
| <a href="cpd.html" title="CPD">CPD</a> |
| </li> |
| </ul> |
| </li> |
| </ul> |
| <ul class="nav nav-list"> |
| <li class="nav-header"><i class="icon-info-sign"></i>Log4j Project Information</li> |
| <li class="none"> |
| <a href="../dependencies.html" title="Dependencies">Dependencies</a> |
| </li> |
| <li class="none"> |
| <a href="../dependency-convergence.html" title="Dependency Convergence">Dependency Convergence</a> |
| </li> |
| <li class="none"> |
| <a href="../dependency-management.html" title="Dependency Management">Dependency Management</a> |
| </li> |
| <li class="none"> |
| <a href="../team-list.html" title="Project Team">Project Team</a> |
| </li> |
| <li class="none"> |
| <a href="../mail-lists.html" title="Mailing Lists">Mailing Lists</a> |
| </li> |
| <li class="none"> |
| <a href="../issue-tracking.html" title="Issue Tracking">Issue Tracking</a> |
| </li> |
| <li class="none"> |
| <a href="../license.html" title="Project License">Project License</a> |
| </li> |
| <li class="none"> |
| <a href="../source-repository.html" title="Source Repository">Source Repository</a> |
| </li> |
| <li class="none"> |
| <a href="../project-summary.html" title="Project Summary">Project Summary</a> |
| </li> |
| </ul> |
| <ul class="nav nav-list"> |
| <li class="nav-header"><i class="icon-cog"></i>Log4j Project Reports</li> |
| <li class="none"> |
| <a href="../changes-report.html" title="Changes Report">Changes Report</a> |
| </li> |
| <li class="none"> |
| <a href="../jira-report.html" title="JIRA Report">JIRA Report</a> |
| </li> |
| <li class="none"> |
| <a href="../surefire-report.html" title="Surefire Report">Surefire Report</a> |
| </li> |
| <li class="none"> |
| <a href="../rat-report.html" title="RAT Report">RAT Report</a> |
| </li> |
| </ul> |
| </div> |
| <div id="poweredBy"> |
| <a href="http://maven.apache.org/" title="Built by Maven" class="poweredBy"> |
| <img class="poweredBy" alt="Built by Maven" src="./images/maven-feather.png" /> |
| </a> |
| </div> |
| </td> |
| <td class="content"> |
| <div class="section"><h2>CPD Results<a name="CPD_Results"></a></h2><p>The following document contains the results of PMD's <a class="externalLink" href="http://pmd.sourceforge.net/cpd.html">CPD</a> 5.0.5.</p></div><div class="section"><h2>Duplications<a name="Duplications"></a></h2><table border="0" class="bodyTable"><tr class="a"><th>File</th><th>Line</th></tr><tr class="b"><td>org/apache/logging/log4j/message/MessageFormatMessage.java</td><td><a href="./xref/org/apache/logging/log4j/message/MessageFormatMessage.html#L115">115</a></td></tr><tr class="a"><td>org/apache/logging/log4j/message/StringFormattedMessage.java</td><td><a href="./xref/org/apache/logging/log4j/message/StringFormattedMessage.html#L111">111</a></td></tr><tr class="b"><td colspan='2'><div><pre> } |
| |
| @Override |
| public int hashCode() { |
| int result = messagePattern != null ? messagePattern.hashCode() : 0; |
| result = HASHVAL * result + (stringArgs != null ? Arrays.hashCode(stringArgs) : 0); |
| return result; |
| } |
| |
| |
| @Override |
| public String toString() { |
| return "StringFormatMessage[messagePattern=" + messagePattern + ", args=" + |
| Arrays.toString(argArray) + ']'; |
| } |
| |
| private void writeObject(final ObjectOutputStream out) throws IOException { |
| out.defaultWriteObject(); |
| getFormattedMessage(); |
| out.writeUTF(formattedMessage); |
| out.writeUTF(messagePattern); |
| out.writeInt(argArray.length); |
| stringArgs = new String[argArray.length]; |
| int i = 0; |
| for (final Object obj : argArray) { |
| stringArgs[i] = obj.toString(); |
| ++i; |
| } |
| } |
| |
| private void readObject(final ObjectInputStream in) throws IOException, ClassNotFoundException { |
| in.defaultReadObject(); |
| formattedMessage = in.readUTF(); |
| messagePattern = in.readUTF(); |
| final int length = in.readInt(); |
| stringArgs = new String[length]; |
| for (int i = 0; i < length; ++i) { |
| stringArgs[i] = in.readUTF(); |
| } |
| } |
| |
| /** |
| * Return the throwable passed to the Message. |
| * |
| * @return the Throwable. |
| */ |
| @Override |
| public Throwable getThrowable() { |
| return throwable; |
| } |
| }</pre></div></td></tr></table><table border="0" class="bodyTable"><tr class="a"><th>File</th><th>Line</th></tr><tr class="b"><td>org/apache/logging/log4j/message/FormattedMessage.java</td><td><a href="./xref/org/apache/logging/log4j/message/FormattedMessage.html#L166">166</a></td></tr><tr class="a"><td>org/apache/logging/log4j/message/MessageFormatMessage.java</td><td><a href="./xref/org/apache/logging/log4j/message/MessageFormatMessage.html#L127">127</a></td></tr><tr class="b"><td>org/apache/logging/log4j/message/StringFormattedMessage.java</td><td><a href="./xref/org/apache/logging/log4j/message/StringFormattedMessage.html#L123">123</a></td></tr><tr class="a"><td colspan='2'><div><pre> return "FormattedMessage[messagePattern=" + messagePattern + ", args=" + |
| Arrays.toString(argArray) + ']'; |
| } |
| |
| private void writeObject(final ObjectOutputStream out) throws IOException { |
| out.defaultWriteObject(); |
| getFormattedMessage(); |
| out.writeUTF(formattedMessage); |
| out.writeUTF(messagePattern); |
| out.writeInt(argArray.length); |
| stringArgs = new String[argArray.length]; |
| int i = 0; |
| for (final Object obj : argArray) { |
| stringArgs[i] = obj.toString(); |
| ++i; |
| } |
| } |
| |
| private void readObject(final ObjectInputStream in) throws IOException, ClassNotFoundException { |
| in.defaultReadObject(); |
| formattedMessage = in.readUTF(); |
| messagePattern = in.readUTF(); |
| final int length = in.readInt(); |
| stringArgs = new String[length]; |
| for (int i = 0; i < length; ++i) { |
| stringArgs[i] = in.readUTF(); |
| } |
| } |
| |
| /** |
| * Always returns null. |
| * |
| * @return null |
| */ |
| @Override |
| public Throwable getThrowable() {</pre></div></td></tr></table><table border="0" class="bodyTable"><tr class="b"><th>File</th><th>Line</th></tr><tr class="a"><td>org/apache/logging/log4j/message/MessageFormatMessage.java</td><td><a href="./xref/org/apache/logging/log4j/message/MessageFormatMessage.html#L46">46</a></td></tr><tr class="b"><td>org/apache/logging/log4j/message/StringFormattedMessage.java</td><td><a href="./xref/org/apache/logging/log4j/message/StringFormattedMessage.html#L45">45</a></td></tr><tr class="a"><td colspan='2'><div><pre> public MessageFormatMessage(final String messagePattern, final Object... arguments) { |
| this.messagePattern = messagePattern; |
| this.argArray = arguments; |
| if (arguments != null && arguments.length > 0 && arguments[arguments.length - 1] instanceof Throwable) { |
| this.throwable = (Throwable) arguments[arguments.length - 1]; |
| } |
| } |
| |
| /** |
| * Returns the formatted message. |
| * @return the formatted message. |
| */ |
| @Override |
| public String getFormattedMessage() { |
| if (formattedMessage == null) { |
| formattedMessage = formatMessage(messagePattern, argArray); |
| } |
| return formattedMessage; |
| } |
| |
| /** |
| * Returns the message pattern. |
| * @return the message pattern. |
| */ |
| @Override |
| public String getFormat() { |
| return messagePattern; |
| } |
| |
| /** |
| * Returns the message parameters. |
| * @return the message parameters. |
| */ |
| @Override |
| public Object[] getParameters() { |
| if (argArray != null) { |
| return argArray; |
| } |
| return stringArgs; |
| } |
| |
| protected String formatMessage(final String msgPattern, final Object... args) { |
| try { |
| return MessageFormat.format(msgPattern, args);</pre></div></td></tr></table><table border="0" class="bodyTable"><tr class="b"><th>File</th><th>Line</th></tr><tr class="a"><td>org/apache/logging/log4j/message/ExtendedThreadInformation.java</td><td><a href="./xref/org/apache/logging/log4j/message/ExtendedThreadInformation.html#L113">113</a></td></tr><tr class="b"><td>org/apache/logging/log4j/message/ExtendedThreadInformation.java</td><td><a href="./xref/org/apache/logging/log4j/message/ExtendedThreadInformation.html#L136">136</a></td></tr><tr class="a"><td colspan='2'><div><pre> case WAITING: { |
| final StackTraceElement element = info.getStackTrace()[0]; |
| final String className = element.getClassName(); |
| final String method = element.getMethodName(); |
| if (className.equals("java.lang.Object") && method.equals("wait")) { |
| sb.append(" (on object monitor"); |
| if (info.getLockOwnerName() != null) { |
| sb.append(" owned by \""); |
| sb.append(info.getLockOwnerName()).append("\" Id=").append(info.getLockOwnerId()); |
| } |
| sb.append(')'); |
| } else if (className.equals("java.lang.Thread") && method.equals("join")) {</pre></div></td></tr></table><table border="0" class="bodyTable"><tr class="b"><th>File</th><th>Line</th></tr><tr class="a"><td>org/apache/logging/log4j/MarkerManager.java</td><td><a href="./xref/org/apache/logging/log4j/MarkerManager.html#L241">241</a></td></tr><tr class="b"><td>org/apache/logging/log4j/MarkerManager.java</td><td><a href="./xref/org/apache/logging/log4j/MarkerManager.html#L275">275</a></td></tr><tr class="a"><td colspan='2'><div><pre> } |
| final Marker[] localParents = parents; |
| if (localParents != null) { |
| // With only one or two parents the for loop is slower. |
| final int localParentsLength = localParents.length; |
| if (localParentsLength == 1) { |
| return checkParent(localParents[0], marker); |
| } |
| if (localParentsLength == 2) { |
| return checkParent(localParents[0], marker) || checkParent(localParents[1], marker); |
| } |
| //noinspection ForLoopReplaceableByForEach |
| for (int i = 0; i < localParentsLength; i++) { |
| final Marker localParent = localParents[i]; |
| if (checkParent(localParent, marker)) { |
| return true; |
| } |
| } |
| } |
| return false; |
| }</pre></div></td></tr></table><table border="0" class="bodyTable"><tr class="b"><th>File</th><th>Line</th></tr><tr class="a"><td>org/apache/logging/log4j/message/FormattedMessage.java</td><td><a href="./xref/org/apache/logging/log4j/message/FormattedMessage.html#L144">144</a></td></tr><tr class="b"><td>org/apache/logging/log4j/message/MessageFormatMessage.java</td><td><a href="./xref/org/apache/logging/log4j/message/MessageFormatMessage.html#L105">105</a></td></tr><tr class="a"><td colspan='2'><div><pre> final FormattedMessage that = (FormattedMessage) o; |
| |
| if (messagePattern != null ? !messagePattern.equals(that.messagePattern) : that.messagePattern != null) { |
| return false; |
| } |
| if (!Arrays.equals(stringArgs, that.stringArgs)) { |
| return false; |
| } |
| |
| return true; |
| } |
| |
| @Override |
| public int hashCode() { |
| int result = messagePattern != null ? messagePattern.hashCode() : 0; |
| result = HASHVAL * result + (stringArgs != null ? Arrays.hashCode(stringArgs) : 0); |
| return result; |
| } |
| |
| |
| @Override |
| public String toString() { |
| return "FormattedMessage[messagePattern=" + messagePattern + ", args=" +</pre></div></td></tr></table><table border="0" class="bodyTable"><tr class="b"><th>File</th><th>Line</th></tr><tr class="a"><td>org/apache/logging/log4j/MarkerManager.java</td><td><a href="./xref/org/apache/logging/log4j/MarkerManager.html#L277">277</a></td></tr><tr class="b"><td>org/apache/logging/log4j/MarkerManager.java</td><td><a href="./xref/org/apache/logging/log4j/MarkerManager.html#L302">302</a></td></tr><tr class="a"><td colspan='2'><div><pre> if (localParents != null) { |
| final int localParentsLength = localParents.length; |
| if (localParentsLength == 1) { |
| return checkParent(localParents[0], marker); |
| } |
| if (localParentsLength == 2) { |
| return checkParent(localParents[0], marker) || checkParent(localParents[1], marker); |
| } |
| //noinspection ForLoopReplaceableByForEach |
| for (int i = 0; i < localParentsLength; i++) { |
| final Marker localParent = localParents[i]; |
| if (checkParent(localParent, marker)) { |
| return true; |
| } |
| } |
| } |
| |
| return false; |
| } |
| |
| private static boolean checkParent(final Marker parent, final Marker marker) {</pre></div></td></tr></table><table border="0" class="bodyTable"><tr class="b"><th>File</th><th>Line</th></tr><tr class="a"><td>org/apache/logging/log4j/message/ExtendedThreadInformation.java</td><td><a href="./xref/org/apache/logging/log4j/message/ExtendedThreadInformation.html#L123">123</a></td></tr><tr class="b"><td>org/apache/logging/log4j/message/ExtendedThreadInformation.java</td><td><a href="./xref/org/apache/logging/log4j/message/ExtendedThreadInformation.html#L148">148</a></td></tr><tr class="a"><td colspan='2'><div><pre> sb.append(')'); |
| } else if (className.equals("java.lang.Thread") && method.equals("join")) { |
| sb.append(" (on completion of thread ").append(info.getLockOwnerId()).append(')'); |
| } else { |
| sb.append(" (parking for lock"); |
| if (info.getLockOwnerName() != null) { |
| sb.append(" owned by \""); |
| sb.append(info.getLockOwnerName()).append("\" Id=").append(info.getLockOwnerId()); |
| } |
| sb.append(')'); |
| } |
| break; |
| }</pre></div></td></tr></table></div> |
| </td> |
| </tr> |
| </table> |
| </div> |
| |
| <div class="footer"> |
| <p>Copyright © 1999-2014 <a class="external" href="http://www.apache.org">Apache Software Foundation</a>. All Rights Reserved.</p> |
| <p>Apache Logging, Apache Log4j, Log4j, Apache, the Apache feather logo, and the Apache Logging project logo are trademarks of The Apache Software Foundation.</p> |
| <p>Site powered by <a class="external" href="http://twitter.github.com/bootstrap/">Twitter Bootstrap</a>. Icons from <a class="external" href="http://glyphicons.com/">Glyphicons Free</a>.</p> |
| </div> |
| </div> |
| </body> |
| </html> |