| <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"> |
| <!-- Generated by Apache Maven Doxia Site Renderer 1.6 at 2016-07-05 --> |
| <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>Apache Shiro :: Core – CPD Results</title> |
| <style type="text/css" media="all"> |
| @import url("./css/maven-base.css"); |
| @import url("./css/maven-theme.css"); |
| @import url("./css/site.css"); |
| </style> |
| <link rel="stylesheet" href="./css/print.css" type="text/css" media="print" /> |
| <meta name="Date-Revision-yyyymmdd" content="20160705" /> |
| <meta http-equiv="Content-Language" content="en" /> |
| |
| </head> |
| <body class="composite"> |
| <div id="banner"> |
| <div id="bannerLeft"> |
| Apache Shiro :: Core |
| </div> |
| <div class="clear"> |
| <hr/> |
| </div> |
| </div> |
| <div id="breadcrumbs"> |
| |
| |
| <div class="xleft"> |
| <span id="publishDate">Last Published: 2016-07-05</span> |
| | <span id="projectVersion">Version: 1.2.6</span> |
| </div> |
| <div class="xright"> <a href="./" title="Apache Shiro :: Core">Apache Shiro :: Core</a> |
| |
| |
| </div> |
| <div class="clear"> |
| <hr/> |
| </div> |
| </div> |
| <div id="leftColumn"> |
| <div id="navcolumn"> |
| |
| |
| <h5>Parent Project</h5> |
| <ul> |
| <li class="none"> |
| <a href="../index.html" title="Apache Shiro">Apache Shiro</a> |
| </li> |
| </ul> |
| <h5>Project Documentation</h5> |
| <ul> |
| <li class="collapsed"> |
| <a href="project-info.html" title="Project Information">Project Information</a> |
| </li> |
| <li class="expanded"> |
| <a href="project-reports.html" title="Project Reports">Project Reports</a> |
| <ul> |
| <li class="none"> |
| <a href="cobertura/index.html" title="Cobertura Test Coverage">Cobertura Test Coverage</a> |
| </li> |
| <li class="none"> |
| <a href="pmd.html" title="PMD Report">PMD Report</a> |
| </li> |
| <li class="none"> |
| <strong>CPD Report</strong> |
| </li> |
| <li class="none"> |
| <a href="surefire-report.html" title="Surefire Report">Surefire Report</a> |
| </li> |
| <li class="none"> |
| <a href="taglist.html" title="Tag List">Tag List</a> |
| </li> |
| <li class="none"> |
| <a href="jdepend-report.html" title="JDepend">JDepend</a> |
| </li> |
| <li class="none"> |
| <a href="dashboard-report.html" title="DashBoard Report">DashBoard Report</a> |
| </li> |
| </ul> |
| </li> |
| </ul> |
| <a href="http://maven.apache.org/" title="Built by Maven" class="poweredBy"> |
| <img class="poweredBy" alt="Built by Maven" src="./images/logos/maven-feather.png" /> |
| </a> |
| |
| |
| </div> |
| </div> |
| <div id="bodyColumn"> |
| <div id="contentBox"> |
| <div class="section"> |
| <h2><a name="CPD_Results"></a>CPD Results</h2> |
| <p>The following document contains the results of PMD's <a class="externalLink" href="http://pmd.sourceforge.net/cpd.html">CPD</a> 4.2.5.</p></div> |
| <div class="section"> |
| <h2><a name="Duplications"></a>Duplications</h2> |
| <table border="0" class="bodyTable"> |
| <tr class="a"> |
| <th>File</th> |
| <th>Line</th></tr> |
| <tr class="b"> |
| <td>org/apache/shiro/realm/ldap/DefaultLdapContextFactory.java</td> |
| <td><a href="./xref/org/apache/shiro/realm/ldap/DefaultLdapContextFactory.html#291">291</a></td></tr> |
| <tr class="a"> |
| <td>org/apache/shiro/realm/ldap/JndiLdapContextFactory.java</td> |
| <td><a href="./xref/org/apache/shiro/realm/ldap/JndiLdapContextFactory.html#523">523</a></td></tr> |
| <tr class="b"><td colspan='2'> |
| <div> |
| <pre> protected void validateAuthenticationInfo(Hashtable<String, Object> environment) |
| throws AuthenticationException |
| { |
| // validate when using Simple auth both principal and credentials are set |
| if(SIMPLE_AUTHENTICATION_MECHANISM_NAME.equals(environment.get(Context.SECURITY_AUTHENTICATION))) { |
| |
| // only validate credentials if we have a non-empty principal |
| if( environment.get(Context.SECURITY_PRINCIPAL) != null && |
| StringUtils.hasText( String.valueOf( environment.get(Context.SECURITY_PRINCIPAL) ))) { |
| |
| Object credentials = environment.get(Context.SECURITY_CREDENTIALS); |
| |
| // from the FAQ, we need to check for empty credentials: |
| // http://docs.oracle.com/javase/tutorial/jndi/ldap/faq.html |
| if( credentials == null || |
| (credentials instanceof byte[] && ((byte[])credentials).length <= 0) || // empty byte[] |
| (credentials instanceof char[] && ((char[])credentials).length <= 0) || // empty char[] |
| (String.class.isInstance(credentials) && !StringUtils.hasText(String.valueOf(credentials)))) { |
| |
| throw new javax.naming.AuthenticationException("LDAP Simple authentication requires both a " |
| + "principal and credentials."); |
| } |
| } |
| } |
| } |
| |
| }</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/shiro/crypto/hash/AbstractHash.java</td> |
| <td><a href="./xref/org/apache/shiro/crypto/hash/AbstractHash.html#225">225</a></td></tr> |
| <tr class="a"> |
| <td>org/apache/shiro/crypto/hash/SimpleHash.java</td> |
| <td><a href="./xref/org/apache/shiro/crypto/hash/SimpleHash.html#360">360</a></td></tr> |
| <tr class="b"><td colspan='2'> |
| <div> |
| <pre> } |
| |
| /** |
| * Returns a hex-encoded string of the underlying {@link #getBytes byte array}. |
| * <p/> |
| * This implementation caches the resulting hex string so multiple calls to this method remain efficient. |
| * However, calling {@link #setBytes setBytes} will null the cached value, forcing it to be recalculated the |
| * next time this method is called. |
| * |
| * @return a hex-encoded string of the underlying {@link #getBytes byte array}. |
| */ |
| public String toHex() { |
| if (this.hexEncoded == null) { |
| this.hexEncoded = Hex.encodeToString(getBytes()); |
| } |
| return this.hexEncoded; |
| } |
| |
| /** |
| * Returns a Base64-encoded string of the underlying {@link #getBytes byte array}. |
| * <p/> |
| * This implementation caches the resulting Base64 string so multiple calls to this method remain efficient. |
| * However, calling {@link #setBytes setBytes} will null the cached value, forcing it to be recalculated the |
| * next time this method is called. |
| * |
| * @return a Base64-encoded string of the underlying {@link #getBytes byte array}. |
| */ |
| public String toBase64() { |
| if (this.base64Encoded == null) { |
| //cache result in case this method is called multiple times. |
| this.base64Encoded = Base64.encodeToString(getBytes()); |
| } |
| return this.base64Encoded; |
| } |
| |
| /** |
| * Simple implementation that merely returns {@link #toHex() toHex()}. |
| * |
| * @return the {@link #toHex() toHex()} value. |
| */ |
| public String toString() { |
| return toHex(); |
| } |
| |
| /** |
| * Returns {@code true} if the specified object is a Hash and its {@link #getBytes byte array} is identical to |
| * this Hash's byte array, {@code false} otherwise. |
| * |
| * @param o the object (Hash) to check for equality. |
| * @return {@code true} if the specified object is a Hash and its {@link #getBytes byte array} is identical to |
| * this Hash's byte array, {@code false} otherwise. |
| */ |
| public boolean equals(Object o) { |
| if (o instanceof Hash) { |
| Hash other = (Hash) o; |
| return Arrays.equals(getBytes(), other.getBytes()); |
| } |
| return false; |
| } |
| |
| /** |
| * Simply returns toHex().hashCode(); |
| * |
| * @return toHex().hashCode() |
| */ |
| public int hashCode() { |
| if (this.bytes == null || this.bytes.length == 0) { |
| return 0; |
| } |
| return Arrays.hashCode(this.bytes); |
| }</pre></div></td></tr></table></div> |
| </div> |
| </div> |
| <div class="clear"> |
| <hr/> |
| </div> |
| <div id="footer"> |
| <div class="xright"> |
| Copyright © 2004–2016 |
| <a href="http://www.apache.org/">The Apache Software Foundation</a>. |
| All rights reserved. |
| |
| </div> |
| <div class="clear"> |
| <hr/> |
| </div> |
| </div> |
| </body> |
| </html> |