| <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/2000/REC-xhtml1-20000126/DTD/xhtml1-transitional.dtd"> |
| <html xmlns="http://www.w3.org/1999/xhtml"> |
| <head> |
| |
| <meta http-equiv="content-type" content="text/html; charset=iso-8859-1" /> |
| <title>Compatibility report</title> |
| <link rel="stylesheet" type="text/css" media="screen" href="css/site.css" /> |
| </head> |
| <body> |
| <script> |
| prefix=''; |
| </script> |
| |
| <script src="templates/header.js"></script> |
| <div id="left"> |
| <script src="templates/left.js"></script> |
| </div> |
| <div id="right"> |
| <script src="templates/right.js"></script> |
| </div> |
| <div id="content"> |
| |
| |
| <h1>Compatibility report</h1> |
| |
| <p>Given the very large user base of SLF4J, we take backward |
| compatibility very seriously. As such, changes that may cause |
| incompatibility problems are listed in this page. Moreover, since |
| slf4j-api.jar is the main entry point into SLF4J, that is the module |
| that will be covered in most detail. |
| </p> |
| |
| <p>Please note that in many cases incompatibility problems are |
| caused by mixing different versions of slf4j artifacts. For example, |
| if you are using slf4j-api-1.5.4.jar you should also use |
| slf4j-simple-1.5.4.jar, using slf4j-simple-1.4.2.jar will not |
| work. The same goes for all other SLF4J artifacts. |
| </p> |
| |
| <p>The list is computed using <a |
| href="http://clirr.sourceforge.net/">clirr</a>. If you have reasons |
| to suspect incompatible changes not mentioned here, please kindly |
| contact the slf4j developers list.</p> |
| |
| <h2><a href="#1_5_7" name="1_5_6">Version 1.5.7 compared to 1.5.6</a></h2> |
| |
| <p>No breaking changes to report.</p> |
| |
| <h2><a href="#1_5_6" name="1_5_5">Version 1.5.6 compared to 1.5.5</a></h2> |
| |
| |
| <table class="bodyTable"> |
| <tr> |
| <th>Severity</th> |
| <th>Description</th> |
| <th>Class</th> |
| <th>Method / Field</th> |
| </tr> |
| <tr> |
| <td>Error</td> |
| <td>The number of parameters of SubstituteLoggerFactory |
| constructor has changed</td> |
| <td>org.slf4j.helpers.SubstituteLoggerFactory</td> |
| <td>public SubstituteLoggerFactory(java.util.List)</td> |
| </tr> |
| </table> |
| |
| <p> </p> |
| |
| <p>The <code>SubstituteLoggerFactory</code> class is used internally |
| by the LoggerFactory class. Changes to the constructor of |
| SubstituteLoggerFactory should have strictly no effect on users. |
| </p> |
| |
| <h2><a href="#1_5_5" name="1_5_4">Version 1.5.5 compared to 1.5.4</a></h2> |
| |
| <p>No breaking changes to report.</p> |
| |
| <h2><a href="#1_5_4" name="1_5_4">Version 1.5.4 compared to 1.5.3</a></h2> |
| |
| <h3>slf4j-api module, list of breaking changes:</h3> |
| |
| |
| <table class="bodyTable"> |
| <tr> |
| <th>Severity</th> |
| <th>Description</th> |
| <th>Class</th> |
| <th>Method / Field</th> |
| </tr> |
| <tr> |
| <td>Error</td> |
| <td>Method 'hasReferences()' has been added to an interface</td> |
| <td>org.slf4j.Marker</td> |
| <td>public boolean hasReferences()</td> |
| </tr> |
| <tr class="alt"> |
| <td>Info</td> |
| <td>Method 'hasChildren()' was deprecated</td> |
| <td>org.slf4j.Marker</td> |
| <td>public boolean hasChildren()</td> |
| </tr> |
| |
| </table> |
| |
| <p> </p> |
| |
| <p>The <code>hasChildren()</code> and other documentation in the |
| Marker interface was misleading users to think in terms of parent |
| child relationship for markers. However, as <a |
| href="http://bugzilla.slf4j.org/show_bug.cgi?id=100">bug 100</a> |
| illustrates, associating markers as parents and children is not very |
| helpful. It is much better to think of markers in terms of abstract |
| graphs. As such, we now say that a marker contains (zero or more) |
| <code>references</code> to other markers. |
| </p> |
| |
| <p>This breaking change is justified because it corrects a |
| conceptual error in the design. Previously, it was all too easy for |
| developers to get confused and incorrectly link markers |
| together.</p> |
| |
| <h2><a href="#1_5_3" name="1_5_3">Version 1.5.3 compared to 1.5.2</a></h2> |
| |
| <h3>slf4j-api module, list of breaking changes:</h3> |
| |
| |
| <table class="bodyTable"> |
| <tr> |
| <th>Severity</th> |
| <th>Description</th> |
| <th>Class</th> |
| <th>Method / Field</th> |
| </tr> |
| <tr > |
| <td>Error</td> |
| <td>Added final modifier to class</td> |
| <td>org.slf4j.helpers.MessageFormatter</td> |
| <td></td> |
| </tr> |
| </table> |
| |
| <p>Declaring <code>MessageFormatter</code> class as final should not |
| affect users, unless they extend this class. However, since this |
| class is intended to be used internally, very few users should be |
| affected. |
| </p> |
| |
| <h2><a href="#1_5_2" name="1_5_2">Version 1.5.2 compared to 1.5.1</a></h2> |
| |
| <p>No breaking changes to report.</p> |
| |
| <h2><a href="#1_5_1" name="1_5_1">Version 1.5.1 compared to 1.5.0</a></h2> |
| |
| |
| <h3>slf4j-api module, list of breaking changes:</h3> |
| |
| |
| <table class="bodyTable"> |
| <tr> |
| <th>Severity</th> |
| <th>Description</th> |
| <th>Class</th> |
| <th>Method / Field</th> |
| </tr> |
| <tr > |
| <td>Error</td> |
| <td>Method 'getCopyOfContextMap()' has been added to an |
| interface |
| </td> |
| <td>org.slf4j.spi.MDCAdapter</td> |
| <td>public java.util.Map getCopyOfContextMap()</td> |
| </tr> |
| <tr class="alt"> |
| <td>Error</td> |
| <td>Method 'setContextMap(Map)' has been added to an |
| interface |
| </td> |
| <td>org.slf4j.spi.MDCAdapter</td> |
| <td>public void setContextMap(java.util.Map)</td> |
| </tr> |
| |
| <tr> |
| <td>Error</td> |
| <td>Method 'getDetachedMarker(String)' has been added to an |
| interface |
| </td> |
| <td>org.slf4j.IMarkerFactory</td> |
| <td>public org.slf4j.Marker getDetachedMarker(java.lang.String)</td> |
| </tr> |
| |
| <tr class="alt"> |
| <td>Info</td> |
| <td>Method 'equals(Object)' has been added to an |
| interface |
| </td> |
| <td>org.slf4j.Marker</td> |
| <td>public boolean equals(java.lang.Object)</td> |
| </tr> |
| |
| <tr> |
| <td>info</td> |
| <td>Method 'hashCode()' has been added to an |
| interface |
| </td> |
| <td>org.slf4j.Marker</td> |
| <td>public int hashCode()</td> |
| </tr> |
| |
| </table> |
| |
| <p>The addition of the <code>getCopyOfContextMap()</code> method in |
| the <code>MDCAdapter</code> class should only impact users who have |
| their own implementation of the said interface. Except for bindings |
| that ship with SLF4J and for logback-classic, which will be |
| naturally upgraded, there are no known other implementations of |
| <code>MDCAdapter</code>. In a rare but still possible scenario, if |
| the user mixes different versions for slf4j-api.jar, say version |
| 1.5.1. and an SLF4J binding, say slf4j-log4j12.jar version 1.5.0, |
| then a <code>java.lang.AbstractMethodError</code> will be thrown, |
| but only if the client code calls the newly added method. <span |
| style="color:green"> In short, although generally speaking the |
| addition of a method to an interface is a breaking change, we are |
| confident that no users will be impacted in this particular |
| case.</span> |
| </p> |
| |
| <p>Similar reasoning applies to the <code>setContextMap(Map)</code> |
| method.</p> |
| |
| <p>The addition of <code>getDetachedMarker(String)</code> method in |
| the <code>org.slf4j.IMarkerFactory</code> should not impact users as |
| the only (known) implementation of this interface ships with SLF4J |
| itself. |
| </p> |
| |
| <p>The <code>equals()</code> and <code>hashCode()</code> methods |
| were added to the <code>org.slf4j.Marker</code> interface for |
| documentation purposes. Given that all objects implicitly implement |
| these methods, their addition should theoretically not break |
| existing code. </p> |
| |
| |
| <h3>Other modules</h3> |
| |
| <p>No breaking changes to report.</p> |
| |
| |
| <!-- ========================================= --> |
| <h2><a href="#1_5_0" name="1_5_0">Version 1.5.0 compared to |
| 1.4.3</a></h2> |
| |
| <p>No breaking changes to report.</p> |
| |
| <!-- ========================================= --> |
| <h2><a href="#1_4_3" name="1_4_3">Version 1.4.3 compared to |
| 1.4.2</a></h2> |
| <p>No breaking changes to report.</p> |
| |
| <!-- ========================================= --> |
| <h2><a href="#1_4_2" name="1_4_2">Version 1.4.2 compared to 1.4.1</a></h2> |
| <p>No breaking changes to report.</p> |
| |
| <!-- ========================================= --> |
| <h2><a href="#1_4_1" name="1_4_1">Version 1.4.1 compared to |
| 1.4.0</a></h2> |
| <p>No breaking changes to report.</p> |
| |
| </div> </body> </html> |