Release notes for 4.0.0
[odlparent.git] / NEWS.rst
1 ========================
2 ODL Parent release notes
3 ========================
4
5 Version 4.0.0
6 -------------
7
8 This is a major upgrade from version 3, with breaking changes; projects will
9 need to make changes to upgrade to this version.
10
11 ODL Parent 4 requires Maven 3.5.3 or later; this is needed in particular to
12 enable SpotBugs support with current versions of the SpotBugs plugin.
13
14 Known issues
15 ~~~~~~~~~~~~
16
17 This release’s SpotBugs support doesn’t handle Guava 25.1 correctly, resulting
18 in false-positives regarding null handling; see
19 `ODLPARENT-161 <https://jira.opendaylight.org/browse/ODLPARENT-161>`_ for
20 details. Until this is fixed, you can either continue using FindBugs (which is
21 configured to ignore a number of null-handling warnings), or switch to
22 SpotBugs and suppress the appropriate warnings.
23
24 We are planning on upgrading Akka during the 4.x cycle, even if it results in
25 a technically breaking upgrade. This is currently blocked on an OSGi bug in
26 Akka; see `Akka issue 25579 <https://github.com/akka/akka/issues/25579>`_ for
27 details.
28
29 Blueprint and OSGi service handling
30 ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
31
32 Previous releases used an OpenDaylight-specific directory for Blueprint XML
33 files, ``org/opendaylight/blueprint``. It turned out this wasn’t useful, so
34 version 4 uses the default directory, ``OSGI-INF/blueprint``.
35
36 The Maven bundle plugin is now configured to omit the ``Import-Service`` and
37 ``Export-Service`` headers, since they are deprecated, unnecessary in
38 OpenDaylight, and liable to cause issues.
39
40 With previous releases of OpenDaylight, projects were encouraged to use Pax
41 CDI API annotations to describe their Blueprint beans, services and injections;
42 with version 4, Blueprint annotations should be used instead:
43
44 * modules should depend on
45   ``org.apache.aries.blueprint:blueprint-maven-plugin-annotation``, with the
46   ``<optional>true</optional>`` flag, instead of
47   ``org.ops4j.pax.cdi:pax-cdi-api``;
48
49 * ``@OsgiServiceProvider`` and ``@OsgiService`` on bean definitions are
50   replaced by ``@Service``;
51
52 * ``@OsgiService`` at injection points is replaced by ``@Reference``;
53
54 * service lists can be injected using ``@ReferenceList``.
55
56 See `this Gerrit patch <https://git.opendaylight.org/gerrit/75699>`_ for an
57 example.
58
59 Compiler settings
60 ~~~~~~~~~~~~~~~~~
61
62 Builds now warn about unchecked type uses (such as raw types where generics
63 are available).
64
65 JUnit and Mockito are always available as test dependencies and no longer need
66 to be declared in POMs.
67
68 New build profiles
69 ~~~~~~~~~~~~~~~~~~
70
71 An OWASP profile is now available to run OWASP’s dependency checker; this will
72 check all third-party dependencies against the NVD vulnerability database. To
73 enable this, run Maven with ``-Powasp``.
74
75 Build profile changes
76 ~~~~~~~~~~~~~~~~~~~~~
77
78 ``-Pq`` now skips Modernizer.
79
80 New features
81 ~~~~~~~~~~~~
82
83 ``odl-akka-leveldb-0.10`` wraps LevelDB 0.10 for Akka.
84
85 ``odl-apache-commons-codec`` wraps Apache Commons Codec.
86
87 ``odl-apache-commons-lang3`` wraps Apache Commons Lang 3.
88
89 ``odl-apache-commons-net`` wraps Apache Commons Net.
90
91 ``odl-apache-commons-text`` wraps Apache Commons Text.
92
93 ``odl-apache-sshd`` wraps Apache SSHD.
94
95 ``odl-guava`` provides the default ODL version of Guava; it should be used
96 instead of ``odl-guava-23`` or the new ``odl-guava-25``.
97
98 ``odl-jackson-2.9`` wraps Jackson 2.9.
99
100 New FindBugs and SpotBugs settings
101 ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
102
103 FindBugs and SpotBugs are configured with
104 `the SLF4J extension <http://kengotoda.github.io/findbugs-slf4j/>`_ (version
105 1.4.0 for FindBugs, 1.4.1 for SpotBugs). This will flag misused SLF4J calls, in
106 particular message templates which don’t match the arguments, and invalid
107 placeholders (*e.g.* ``%s`` instead of ``{}``).
108
109 Deleted artifacts
110 ~~~~~~~~~~~~~~~~~
111
112 ``aggregator-parent`` was unusable outside ``odlparent`` and has been removed.
113 Instead, the ``maven.deploy.skip`` and ``maven.install.skip`` properties are
114 available to disable deploying and installing artifacts.
115
116 Upstream version upgrades
117 ~~~~~~~~~~~~~~~~~~~~~~~~~
118
119 This version upgrades the following third-party dependencies:
120
121 * Aeron 1.7.0 → 1.9.3:
122
123   * `1.8.0 <https://github.com/real-logic/aeron/releases/tag/1.8.0>`_.
124   * `1.8.1 <https://github.com/real-logic/aeron/releases/tag/1.8.1>`_.
125   * `1.8.2 <https://github.com/real-logic/aeron/releases/tag/1.8.2>`_.
126   * `1.9.0 <https://github.com/real-logic/aeron/releases/tag/1.9.0>`_.
127   * `1.9.1 <https://github.com/real-logic/aeron/releases/tag/1.9.1>`_.
128   * `1.9.2 <https://github.com/real-logic/aeron/releases/tag/1.9.2>`_.
129   * `1.9.3 <https://github.com/real-logic/aeron/releases/tag/1.9.3>`_.
130
131 * Agrona 0.9.12 → 0.9.21:
132
133   * `0.9.13 <https://github.com/real-logic/agrona/releases/tag/0.9.13>`_.
134   * `0.9.14 <https://github.com/real-logic/agrona/releases/tag/0.9.14>`_.
135   * `0.9.15 <https://github.com/real-logic/agrona/releases/tag/0.9.15>`_.
136   * `0.9.16 <https://github.com/real-logic/agrona/releases/tag/0.9.16>`_.
137   * `0.9.17 <https://github.com/real-logic/agrona/releases/tag/0.9.17>`_.
138   * `0.9.18 <https://github.com/real-logic/agrona/releases/tag/0.9.18>`_.
139   * `0.9.19 <https://github.com/real-logic/agrona/releases/tag/0.9.19>`_.
140   * `0.9.20 <https://github.com/real-logic/agrona/releases/tag/0.9.20>`_.
141   * `0.9.21 <https://github.com/real-logic/agrona/releases/tag/0.9.21>`_.
142
143 * Akka 2.5.11 → 2.5.14:
144
145   * `2.5.12 <https://akka.io/blog/news/2018/04/13/akka-2.5.12-released>`_.
146   * `2.5.13 <https://akka.io/blog/news/2018/06/08/akka-2.5.13-released>`_.
147   * `2.5.14 <https://akka.io/blog/news/2018/07/13/akka-2.5.14-released>`_.
148
149 * ASM 5.1 → 6.2.1 (synchronised with Karaf).
150
151 * Bouncy Castle `1.59 → 1.60 <https://www.bouncycastle.org/releasenotes.html>`_.
152
153 * Checkstyle `8.4 → 8.12 <http://checkstyle.sourceforge.net/releasenotes.html#Release_8.12>`_.
154
155 * Commons Lang `3.7 → 3.8 <http://www.apache.org/dist/commons/lang/RELEASE-NOTES.txt>`_.
156
157 * Commons Text 1.1 → 1.4:
158
159   * `1.2 <https://commons.apache.org/proper/commons-text/release-notes/RELEASE-NOTES-1.2.txt>`_.
160   * `1.3 <https://commons.apache.org/proper/commons-text/release-notes/RELEASE-NOTES-1.3.txt>`_.
161   * `1.4 <https://commons.apache.org/proper/commons-text/release-notes/RELEASE-NOTES-1.4.txt>`_.
162
163 * Eclipse JDT annotations 2.1.150 → 2.2.0.
164
165 * EclipseLink Moxy JAXB `2.7.1 → 2.7.3 <https://www.eclipse.org/eclipselink/releases/2.7.php>`_.
166
167 * Enunciate core annotations
168   `2.10.1 → 2.11.1 <https://github.com/stoicflame/enunciate/releases>`_.
169
170 * Felix Metatype 1.1.6 → 1.2.0 (synchronised with Karaf).
171
172 * Google Truth `0.40 → 0.42 <https://github.com/google/truth/releases>`_.
173
174 * Guava 23.6.1 → 25.1:
175
176   * `23.4 <https://github.com/google/guava/releases/tag/v23.4>`_.
177   * `23.5 <https://github.com/google/guava/releases/tag/v23.5>`_.
178   * `23.6 <https://github.com/google/guava/releases/tag/v23.6>`_.
179   * `24.0 <https://github.com/google/guava/releases/tag/v24.0>`_.
180   * `24.1 <https://github.com/google/guava/releases/tag/v24.1>`_.
181   * `25.0 <https://github.com/google/guava/releases/tag/v25.0>`_.
182   * `25.1 <https://github.com/google/guava/releases/tag/v25.1>`_.
183
184 * Immutables `2.5.6 → 2.7.1 <https://github.com/immutables/immutables/blob/master/README.md#changelog>`_.
185
186 * Jackson 2.8.9 → 2.9.6:
187
188   * `2.9 feature overview <https://medium.com/@cowtowncoder/jackson-2-9-features-b2a19029e9ff>`_.
189   * `2.9 <https://github.com/FasterXML/jackson/wiki/Jackson-Release-2.9>`_.
190   * `2.9.1 <https://github.com/FasterXML/jackson/wiki/Jackson-Release-2.9.1>`_.
191   * `2.9.2 <https://github.com/FasterXML/jackson/wiki/Jackson-Release-2.9.2>`_.
192   * `2.9.3 <https://github.com/FasterXML/jackson/wiki/Jackson-Release-2.9.3>`_.
193   * `2.9.4 <https://github.com/FasterXML/jackson/wiki/Jackson-Release-2.9.4>`_.
194   * `2.9.5 <https://github.com/FasterXML/jackson/wiki/Jackson-Release-2.9.5>`_.
195   * `2.9.6 <https://github.com/FasterXML/jackson/wiki/Jackson-Release-2.9.6>`_.
196
197 * JaCoCo `0.8.1 → 0.8.2 <https://github.com/jacoco/jacoco/releases/tag/v0.8.2>`_.
198
199 * Javassist 3.22.0 → 3.23.1. This provides compatibility with Java 9 and later,
200   and `fixes a file handle leak <https://github.com/jboss-javassist/javassist/issues/165>`_.
201
202 * Jettison 1.3.8 → 1.4.0.
203
204 * Jetty 9.3.21 → 9.4.11 (synchronised with Karaf):
205
206   * `9.4.0 <https://dev.eclipse.org/mhonarc/lists/jetty-announce/msg00097.html>`_.
207   * `9.4.1 <https://dev.eclipse.org/mhonarc/lists/jetty-announce/msg00100.html>`_.
208   * `9.4.2 <https://dev.eclipse.org/mhonarc/lists/jetty-announce/msg00101.html>`_.
209   * `9.4.3 <https://dev.eclipse.org/mhonarc/lists/jetty-announce/msg00102.html>`_.
210   * `9.4.4 <https://dev.eclipse.org/mhonarc/lists/jetty-announce/msg00105.html>`_.
211   * `9.4.5 <https://dev.eclipse.org/mhonarc/lists/jetty-announce/msg00107.html>`_.
212   * `9.4.6 <https://dev.eclipse.org/mhonarc/lists/jetty-announce/msg00109.html>`_.
213   * `9.4.7 <https://dev.eclipse.org/mhonarc/lists/jetty-announce/msg00111.html>`_.
214   * `9.4.8 <https://dev.eclipse.org/mhonarc/lists/jetty-announce/msg00114.html>`_.
215   * `9.4.9 <https://dev.eclipse.org/mhonarc/lists/jetty-announce/msg00117.html>`_.
216   * `9.4.10 <https://dev.eclipse.org/mhonarc/lists/jetty-announce/msg00119.html>`_.
217   * `9.4.11 <https://dev.eclipse.org/mhonarc/lists/jetty-announce/msg00122.html>`_.
218
219 * Jolokia OSGi `1.5.0 → 1.6.0 <https://jolokia.org/changes-report.html#a1.6.0>`_.
220
221 * Karaf 4.1.5 → 4.2.1:
222
223   * `4.1.6 <https://issues.apache.org/jira/secure/ReleaseNote.jspa?projectId=12311140&version=12342748>`_.
224   * `4.2.1 <https://issues.apache.org/jira/secure/ReleaseNote.jspa?projectId=12311140&version=12342945>`_.
225
226 * LMAX Disruptor 3.3.10 → 3.4.1:
227
228   * `3.4.0 <https://github.com/LMAX-Exchange/disruptor/releases/tag/3.4.0>`_.
229   * `3.4.1 <https://github.com/LMAX-Exchange/disruptor/releases/tag/3.4.1>`_.
230
231 * META-INF services 1.7 → 1.8.
232
233 * Mockito 1.10.19 → 2.20.1; see
234   `What’s new in Mockito 2 <https://github.com/mockito/mockito/wiki/What%27s-new-in-Mockito-2>`_
235   for upgrade instructions and
236   `the list of issues you might run into <https://asolntsev.github.io/en/2016/10/11/mockito-2.1/>`_.
237
238 * Netty 4.1.22 → 4.1.28:
239
240   * `4.1.17 <http://netty.io/news/2017/11/08/4-0-53-Final-4-1-17-Final.html>`_.
241   * `4.1.18 <http://netty.io/news/2017/12/11/4-0-54-Final-4-1-18-Final.html>`_.
242   * `4.1.19 <http://netty.io/news/2017/12/18/4-1-19-Final.html>`_.
243   * `4.1.20 <http://netty.io/news/2018/01/22/4-0-55-Final-4-1-20-Final.html>`_.
244   * `4.1.21 <http://netty.io/news/2018/02/05/4-0-56-Final-4-1-21-Final.html>`_.
245   * `4.1.22 <http://netty.io/news/2018/02/21/4-1-22-Final.html>`_.
246   * `4.1.23 <http://netty.io/news/2018/04/04/4-1-23-Final.html>`_.
247   * `4.1.24 <http://netty.io/news/2018/04/19/4-1-24-Final.html>`_.
248   * `4.1.25 <http://netty.io/news/2018/05/14/4-1-25-Final.html>`_.
249   * `4.1.26 <http://netty.io/news/2018/07/10/4-1-26-Final.html>`_.
250   * `4.1.27 <http://netty.io/news/2018/07/11/4-1-27-Final.html>`_.
251   * `4.1.28 <http://netty.io/news/2018/07/27/4-1-28-Final.html>`_.
252
253 * Pax Exam 4.11.0 → 4.12.0.
254
255 * Pax URL 2.5.3 → 2.5.4, which only fixes
256   `a potential NullPointerException <https://ops4j1.jira.com/browse/PAXURL-346>`_.
257
258 * PowerMock 1.6.4 → 1.7.4:
259
260   * `1.6.5 <https://github.com/powermock/powermock/releases/tag/powermock-1.6.5>`_.
261   * `1.6.6 <https://github.com/powermock/powermock/releases/tag/powermock-1.6.6>`_.
262   * `1.7.0 <https://github.com/powermock/powermock/releases/tag/powermock-1.7.0>`_.
263   * `1.7.1 <https://github.com/powermock/powermock/releases/tag/powermock-1.7.1>`_.
264   * `1.7.2 <https://github.com/powermock/powermock/releases/tag/powermock-1.7.2>`_.
265   * `1.7.3 <https://github.com/powermock/powermock/releases/tag/powermock-1.7.3>`_.
266   * `1.7.4 <https://github.com/powermock/powermock/releases/tag/powermock-1.7.4>`_.
267
268 * Scala parser combinators 1.0.7 → 1.1.1:
269
270   * `1.1.0 <https://github.com/scala/scala-parser-combinators/releases/tag/v1.1.0>`_.
271   * `1.1.1 <https://github.com/scala/scala-parser-combinators/releases/tag/v1.1.1>`_.
272
273 * SpotBugs `3.1.0 → 3.1.6 <https://github.com/spotbugs/spotbugs/blob/3.1.6/CHANGELOG.md>`_.
274
275 * Threeten Extra `1.3.2 → 1.4 <https://github.com/ThreeTen/threeten-extra/releases>`_.
276
277 * Typesafe SSL config 0.2.2 → 0.2.4:
278
279   * `0.2.3 <https://github.com/lightbend/ssl-config/releases/tag/v0.2.3>`_.
280   * `0.2.4 <https://github.com/lightbend/ssl-config/releases/tag/v0.2.4>`_.
281
282 * Wagon HTTP
283   `2.10 → 3.1.0 <https://lists.apache.org/thread.html/96024c54db7680697cb066e22a37b0ed5b4498386714a8a9ae1ec9cd@%3Cannounce.maven.apache.org%3E>`_.
284
285 * XMLUnit `1.6 → 2.6.2 <https://github.com/xmlunit/xmlunit/blob/master/RELEASE_NOTES.md>`_.
286
287 Upstream version additions
288 ~~~~~~~~~~~~~~~~~~~~~~~~~~
289
290 The following upstream dependencies have been added to dependency management:
291
292 * Apache SSHD 2.0.0, with EdDSA and Netty support (EdDSA is provided by ``net.i2p.crypto:eddsa``).
293
294 * Blueprint annotations (``org.apache.aries.blueprint:blueprint-maven-plugin-annotation``).
295
296 * Log4J2.
297
298 * Pax Web 7.2.3 (synchronised with Karaf).
299
300 Upstream version removals
301 ~~~~~~~~~~~~~~~~~~~~~~~~~
302
303 The following upstream dependencies have been removed from dependency management:
304
305 * Google Protobuf.
306
307 * Our repackaging of Jersey Servlet.
308
309 * JUnit’s ``junit-dep``, which has long been obsolete.
310
311 * LevelDB (which is still available as features).
312
313 * Pax CDI API — Blueprint annotations should be used instead.
314
315 Plugin version upgrades
316 ~~~~~~~~~~~~~~~~~~~~~~~
317
318 The following plugins have been upgraded:
319
320 * Blueprint 1.4.0 → 1.10.0.
321
322 * Build helper 1.12 → 3.0.0.
323
324 * Bundle plugin 3.5.0 → 4.0.0.
325
326 * Checkstyle
327   `2.17 → 3.0.0 <https://mail-archives.apache.org/mod_mbox/maven-announce/201801.mbox/%3Cop.zchs68akkdkhrr%40desktop-2khsk44.mshome.net%3E>`_.
328
329 * Duplicate finder
330   `1.2.1 → 1.3.0 <https://github.com/basepom/duplicate-finder-maven-plugin/blob/master/CHANGES.md>`_.
331
332 * Git commit id `2.2.4 → 2.2.5 <https://github.com/ktoso/maven-git-commit-id-plugin/releases/tag/v2.2.5>`_.
333
334 * Jacoco Maven plugin `0.8.1 → 0.8.2 <https://github.com/jacoco/jacoco/releases/tag/v0.8.2>`_.
335
336 * Javadoc `3.0.0 → 3.0.1 <https://issues.apache.org/jira/secure/ReleaseNote.jspa?projectId=12317529&version=12342283>`_.
337
338 * PMD 3.8 → 3.10.0:
339
340   * `3.10.0 <https://issues.apache.org/jira/secure/ReleaseNote.jspa?version=12342689&styleName=Text&projectId=12317621>`_.
341
342 * Sevntu `1.29.0 → 1.32.0 <http://sevntu-checkstyle.github.io/sevntu.checkstyle/#1.32.0>`_.
343
344 * SpotBugs 3.1.0-RC6 → 3.1.6 (see the SpotBugs changes above).
345
346 Version 3.1.3
347 -------------
348
349 This version fixes the following issues:
350
351 * `ODLPARENT-156 <https://jira.opendaylight.org/browse/ODLPARENT-156>`_:
352   ``xtend-maven-plugin``’s dependencies end up pulling in conflicting
353   dependencies. ODL Parent now constrains part of its dependency tree to avoid
354   this.
355
356 This version adds ``odl-jackson-2.8`` to ``odlparent-artifacts``.
357
358 Version 3.1.2
359 -------------
360
361 This version fixes the following issues:
362
363 * `INFRAUTILS-41 <https://jira.opendaylight.org/browse/INFRAUTILS-41>`_:
364   ``jre.properties`` includes ``com.sun.management`` so that it can be
365   enabled if necessary. (This doesn’t add a dependency on
366   ``com.sun.management``, it allows bundles to use it if it is present.)
367
368 * `ODLPARENT-136 <https://jira.opendaylight.org/browse/ODLPARENT-136>`_:
369   ``SingleFeatureTest`` pulls in ``org.osgi.compendium``.
370
371 * `ODLPARENT-144 <https://jira.opendaylight.org/browse/ODLPARENT-144>`_:
372   ``org.apache.karaf.scr.management`` is whitelisted so that it no longer
373   affects ``SingleFeatureTest``.
374
375 * `ODLPARENT-146 <https://jira.opendaylight.org/browse/ODLPARENT-146>`_:
376   null-related FindBugs checks which produce false-positives with Guava 23.6
377   and later are disabled, so that this really is fully backwards-compatible
378   with 3.0 and later.
379
380 * `ODLPARENT-148 <https://jira.opendaylight.org/browse/ODLPARENT-148>`_:
381   ``SingleFeatureTest`` preserves ``target/SFT/karaf.log``.
382
383 This version includes the following improvements:
384
385 * ``custom.properties`` no longer includes OVSDB-specific configuration.
386
387 * The ``odl-jersey-1`` feature includes the Jersey client.
388
389 * Redundant bundle dependency declarations in ``SingleFeatureTest`` have been
390   removed (these are declarations which are also present in our base Karaf
391   distribution).
392
393 * Build errors involving invalid feature or bundle URLs now indicate which
394   feature is at fault.
395
396 * Obsolete Log4J overrides have been removed from ``SingleFeatureTest``.
397
398 When building using JDK 9 or 10, the default settings have been changed as
399 follows to avoid errors or extraneous warnings:
400
401 * SFT is disabled (it needs Karaf 4.2 or later);
402
403 * Javadocs are generated as HTML 4;
404
405 * SpotBugs is disabled on JDK 10 or later;
406
407 * FindBugs is disabled on JDK 9 or later.
408
409 The following third-party dependencies have been upgraded:
410
411 * `EclipseLink Moxy JAXB 2.6.2 → 2.7.1 <https://www.eclipse.org/eclipselink/releases/2.7.php>`_.
412
413 * `Google Truth 0.36 → 0.40 <https://github.com/google/truth/releases>`_.
414
415 * `Gson 2.8.2 → 2.8.5 <https://github.com/google/gson/blob/master/CHANGELOG.md>`_.
416
417 * `Guava 23.6 → 23.6.1 <https://github.com/google/guava/compare/v23.6...v23.6.1>`_.
418   This addresses CVE-2018-10237 (that’s the only change in this release).
419
420 * `Jacoco Maven plugin 0.8.0 → 0.8.1 <https://github.com/jacoco/jacoco/releases/tag/v0.8.1>`_.
421
422 * JDT annotations 2.1.0 → 2.1.150.
423
424 * `Scala 2.12.5 → 2.12.6 <https://github.com/scala/scala/releases/tag/v2.12.6>`_.
425
426 * `Scala Parser Combinators 1.0.6 → 1.0.7 <https://github.com/scala/scala-parser-combinators/releases/tag/v1.0.7>`_.
427
428 * `Sevntu 1.24.2 → 1.29.0 <https://sevntu-checkstyle.github.io/sevntu.checkstyle/#1.29.0>`_.
429
430 * `Xtext and Xtend 2.13.0 → 2.14.0 <https://github.com/eclipse/xtext/blob/website-master/xtend-website/_posts/releasenotes/2018-05-23-version-2-14-0.md>`_.
431
432 The following Maven plugin has been upgraded:
433
434 * `Javadoc 3.0.0 → 3.0.1 <https://issues.apache.org/jira/secure/ReleaseNote.jspa?projectId=12317529&version=12342283>`_.
435
436 Version 3.1.1
437 -------------
438
439 This version fixes the following issues:
440
441 * `ODLPARENT-137 <https://jira.opendaylight.org/browse/ODLPARENT-137>`_:
442   restore the OpenDaylight prompt.
443
444 * `ODLPARENT-146 <https://jira.opendaylight.org/browse/ODLPARENT-146>`_:
445   Guava 23.6 switched from @Nullable to @NullableDecl, which causes false
446   positives in FindBugs’ ``NP_NONNULL_PARAM_VIOLATION`` rule; we’re
447   disabling the rule for now.
448
449 Version 3.1.0
450 -------------
451
452 This version fixes the following issues:
453
454 * Mycila dependencies are now “compile” scoped rather than “test”; this allows
455   child projects to use Guice with Mycila more easily.
456
457 * The duplicate finder now ignores ``web.xml`` and BluePrint XML files.
458
459 This version includes the following improvements:
460
461 * The ``-Pq`` profile skips Maven Modernizer, in preparation for its future
462   integration (and its use in child projects).
463
464 * An OWASP profile, ``-Powasp`` is available for vulnerability checking.
465
466 * A new ``odl-jackson-2.8`` feature provides Jackson 2.8 to child projects.
467
468 The following third-party dependencies have been added to dependency management:
469
470 * `ThreeTen-Extra <http://www.threeten.org/threeten-extra/>`_
471
472 The following third-party dependencies have been upgraded:
473
474 * Aeron 1.2.5 → 1.7.0; release notes:
475
476   * `1.3.0 <https://github.com/real-logic/aeron/releases/tag/1.3.0>`_
477   * `1.4.0 <https://github.com/real-logic/aeron/releases/tag/1.4.0>`_
478   * `1.5.0 <https://github.com/real-logic/aeron/releases/tag/1.5.0>`_
479   * `1.5.1 <https://github.com/real-logic/aeron/releases/tag/1.5.1>`_
480   * `1.5.2 <https://github.com/real-logic/aeron/releases/tag/1.5.2>`_
481   * `1.6.0 <https://github.com/real-logic/aeron/releases/tag/1.6.0>`_
482   * `1.7.0 <https://github.com/real-logic/aeron/releases/tag/1.7.0>`_
483
484 * Agrona 0.9.5 → 0.9.12; release notes:
485
486   * `0.9.6 <https://github.com/real-logic/Agrona/releases/tag/0.9.6>`_
487   * `0.9.7 <https://github.com/real-logic/Agrona/releases/tag/0.9.7>`_
488   * `0.9.8 <https://github.com/real-logic/Agrona/releases/tag/0.9.8>`_
489   * `0.9.9 <https://github.com/real-logic/Agrona/releases/tag/0.9.9>`_
490   * `0.9.10 <https://github.com/real-logic/Agrona/releases/tag/0.9.10>`_
491   * `0.9.11 <https://github.com/real-logic/Agrona/releases/tag/0.9.11>`_
492   * `0.9.12 <https://github.com/real-logic/Agrona/releases/tag/0.9.12>`_
493
494 * Akka 2.5.5 → 2.5.11; release notes:
495
496   * `2.5.6 <https://akka.io/blog/news/2017/09/28/akka-2.5.6-released>`_
497   * `2.5.7 <https://akka.io/blog/news/2017/11/17/akka-2.5.7-released>`_
498   * `2.5.8 <https://akka.io/blog/news/2017/12/08/akka-2.5.8-released>`_
499   * `2.5.9 <https://akka.io/blog/news/2018/01/11/akka-2.5.9-released-2.4.x-end-of-life>`_
500   * `2.5.10 <https://akka.io/blog/news/2018/02/23/akka-2.5.10-released>`_
501   * `2.5.11 <https://akka.io/blog/news/2018/02/28/akka-2.5.11-released>`_
502
503 * Commons Lang 3 `3.6 → 3.7 <http://www.apache.org/dist/commons/lang/RELEASE-NOTES.txt>`_
504
505 * Guava 23.3 → 23.6; release notes:
506
507   * `23.4 <https://github.com/google/guava/releases/tag/v23.4>`_
508   * `23.5 <https://github.com/google/guava/releases/tag/v23.5>`_
509   * `23.6 <https://github.com/google/guava/releases/tag/v23.6>`_
510
511 * H2 database `1.4.193 → 1.4.196 <http://www.h2database.com/html/changelog.html>`_
512
513 * Jacoco `0.7.9 → 0.8.0 <https://github.com/jacoco/jacoco/releases/tag/v0.8.0>`_
514
515 * Javassist `3.21.0 → 3.22.0 <https://github.com/jboss-javassist/javassist/compare/rel_3_21_0_ga...rel_3_22_0_ga>`_
516
517 * lmax-disruptor 3.3.7 → 3.3.10; release notes:
518
519   * `3.3.8 <https://github.com/LMAX-Exchange/disruptor/releases/tag/3.3.8>`_
520   * `3.3.9 <https://github.com/LMAX-Exchange/disruptor/releases/tag/3.3.9>`_
521   * `3.3.10 <https://github.com/LMAX-Exchange/disruptor/releases/tag/3.3.10>`_
522
523 * Netty 4.1.16 → 4.1.22; release notes:
524
525   * `4.1.17 <http://netty.io/news/2017/11/08/4-0-53-Final-4-1-17-Final.html>`_
526   * `4.1.18 <http://netty.io/news/2017/12/11/4-0-54-Final-4-1-18-Final.html>`_
527   * `4.1.19 <http://netty.io/news/2017/12/18/4-1-19-Final.html>`_
528   * `4.1.20 <http://netty.io/news/2018/01/22/4-0-55-Final-4-1-20-Final.html>`_
529   * `4.1.21 <http://netty.io/news/2018/02/05/4-0-56-Final-4-1-21-Final.html>`_
530   * `4.1.22 <http://netty.io/news/2018/02/21/4-1-22-Final.html>`_
531
532 * Scala `2.12.4 → 2.12.5 <http://www.scala-lang.org/news/2.12.5>`_
533
534 * Typesafe Config `0.2.1 → 0.2.2 <https://github.com/typesafehub/config/blob/master/NEWS.md>`_
535
536 The following Maven plugins have been upgraded:
537
538 * FindBugs 3.0.4 → 3.0.5
539
540 * Git commit id 2.2.2 → 2.2.4; release notes:
541
542   * `2.2.3 <https://github.com/ktoso/maven-git-commit-id-plugin/releases/tag/v2.2.3>`_
543   * `2.2.4 <https://github.com/ktoso/maven-git-commit-id-plugin/releases/tag/v2.2.4>`_
544
545 Version 3.0.3
546 -------------
547
548 This version fixes the following issues:
549
550 * `ODLPARENT-136`_: ``features-test`` needs ``org.osgi.compendium``.
551
552 * Jackson dependencies are declared using ``jackson-bom`` to ensure all they
553   remain consistent.
554
555 * ``find-duplicate-classpath-entries`` is run in the “verify” phase rather than
556   the “validate” phase, which is too early.
557
558 * The version of Jetty we pull in is now aligned with that declared in Karaf,
559   resolving a number of restart and dependency issues.
560
561 * Pulling in the ``wrap`` feature unconditionally is no longer necessary, so
562   ``karaf4-parent`` no longer does so.
563
564 * ``metainf-services`` are declared with scope “provided” to avoid their being
565   included in downstream features (it’s a build-time dependency only).
566
567 * ``leveldb-api`` is excluded from ``odl-akka-leveldb-0.7``, and ``jsr250-api``
568   from ``enunciate-core-annotations``, to avoid duplicate having classes on the
569   classpath.
570
571 * Since the ``ssh`` feature is excluded from generated features, our Karaf
572   need to enable it at boot in all cases.
573
574 * ``bundle-test-lib`` is now a bundle.
575
576 * Since we use static SLF4J loggers, the ``SLF4J_LOGGER_SHOULD_BE_NON_STATIC``
577   rule needs to be disabled in our FindBugs configuration (this allows
578   downstream projects to enable ``findbugs-slf4j`` without having to deal with
579   all the resulting false-positives).
580
581 * ``org.apache.karaf.scr.management`` is white-listed in SFT to avoid failures
582   apparently related to that component (which we don’t care about).
583
584 .. _ODLPARENT-136: https://jira.opendaylight.org/browse/ODLPARENT-136
585
586 This version upgrades the following third-party dependencies:
587
588 * `Antlr 4.7 → 4.7.1`_
589
590 * `BouncyCastle 1.58 → 1.59`_
591
592 * Jersey 1.17 → 1.19.4 (additionally available as the ``odl-jersey-1`` feature)
593
594 * Jolokia 1.3.7 → 1.5.0
595
596 * Karaf 4.1.3 → 4.1.5; release notes:
597
598   * `Karaf 4.1.4`_
599   * `Karaf 4.1.5`_
600
601 .. _Antlr 4.7 → 4.7.1: https://github.com/antlr/antlr4/releases/tag/4.7.1
602 .. _BouncyCastle 1.58 → 1.59: https://www.bouncycastle.org/releasenotes.html
603 .. _Karaf 4.1.4: https://issues.apache.org/jira/secure/ReleaseNote.jspa?projectId=12311140&version=12341702
604 .. _Karaf 4.1.5: https://issues.apache.org/jira/secure/ReleaseNote.jspa?projectId=12311140&version=12342294
605
606 Version 3.0.2
607 -------------
608
609 This version fixes the following issues:
610
611 * SingleFeatureTest uses the configured local Maven repository for Pax Exam.
612
613 * JavaDoc links are disabled for now to `speed up builds`_. A new
614   ``javadoc-links`` profile enables the links.
615
616 * Conditional feature dependencies are processed, ensuring our
617   `distribution is complete`_.
618
619 * Startup features are `adjusted for Karaf 4.1`_, avoiding unnecessary
620   refreshes.
621
622 * The ``hiddenField`` Checkstyle check is disabled for abstract methods.
623
624 * The default logging configuration uses Log4J2, which is the new default in
625   Karaf 4.1.
626
627 .. _speed up builds: https://jira.opendaylight.org/browse/ODLPARENT-121
628 .. _distribution is complete: https://jira.opendaylight.org/browse/ODLPARENT-133
629 .. _adjusted for Karaf 4.1: https://jira.opendaylight.org/browse/ODLPARENT-134
630
631 This version upgrades the following dependencies or plugins:
632
633 * ``maven-enforcer-plugin`` 1.4.1 → 3.0.0-M1
634
635 * ``maven-javadoc-plugin`` 3.0.0-M1 → 3.0.0
636
637 Version 3.0.1
638 -------------
639
640 This version fixes the following issues:
641
642 * Karaf pulls in an invalid Hibernate feature repository, breaking downstream
643   dependencies pulling in the “war” feature. ``populate-local-repo`` corrects
644   the repository dependency.
645
646
647 Version 3.0.0
648 -------------
649
650 Compiler settings
651 ~~~~~~~~~~~~~~~~~
652
653 Build now show compiler warnings and deprecation warnings. This doesn't affect
654 the result or require any changes currently, it just makes the issues more
655 visible.
656
657 New Checkstyle rules
658 ~~~~~~~~~~~~~~~~~~~~
659
660 Checkstyle has been upgraded from 7.6 to 8.4 (see the
661 `Checkstyle release notes`_ for details), and Sevntu from 1.21.0 to 1.24.2
662 (note that the latter's group identifier changed from
663 ``com.github.sevntu.checkstyle`` to ``com.github.sevntu-checkstyle``; you
664 might need to update your IDE's configuration).
665
666 The following Checkstyle rules are enabled; this might require changes in
667 projects which enforce Checkstyle validation:
668
669 * `AvoidHidingCauseExceptionCheck`_
670 * `FinalClass`_: utility classes must be declared ``final``
671 * `HiddenField`_: fields must not be shadowed
672 * `HideUtilityClassConstructor`_: utility classes must hide their constructor
673
674 .. _Checkstyle release notes: http://checkstyle.sourceforge.net/releasenotes.html
675
676 .. _AvoidHidingCauseExceptionCheck: http://sevntu-checkstyle.github.io/sevntu.checkstyle/apidocs/com/github/sevntu/checkstyle/checks/coding/AvoidHidingCauseExceptionCheck.html
677 .. _FinalClass: http://checkstyle.sourceforge.net/config_design.html#FinalClass
678 .. _HiddenField: http://checkstyle.sourceforge.net/config_coding.html#HiddenField
679 .. _HideUtilityClassConstructor: http://checkstyle.sourceforge.net/config_design.html#HideUtilityClassConstructor
680
681 Karaf
682 ~~~~~
683
684 Karaf has been upgraded to 4.1.3. This should be transparent for dependent
685 projects.
686
687 Karaf distributions
688 ~~~~~~~~~~~~~~~~~~~
689
690 * When building a Karaf distribution using ``karaf4-parent``, projects can
691   specify which archives to build: the ``karaf.archiveZip`` property will
692   enable ZIP files if true, and ``karaf.archiveTarGz`` will enable
693   gzip-compressed tarballs if true. By default both are enabled.
694
695 * Our Karaf distribution provides Bouncy Castle at startup. Auto-generated
696   feature descriptors take this into account (they won't embed a Bouncy
697   Castle dependency).
698
699 Feature removals
700 ~~~~~~~~~~~~~~~~
701
702 * The ``odl-triemap-0.2`` feature wrapping
703   ``com.github.romix:java-concurrent-hash-trie-map`` was rendered obsolete by
704   YANG Tools' implementation and has been removed.
705
706 Feature additions
707 ~~~~~~~~~~~~~~~~~
708
709 * ``odl-javassist-3`` provides Javassist in a feature.
710
711 * ``odl-jung-2.1`` provides `JUNG`_ in a feature.
712
713 .. _JUNG: http://jung.sourceforge.net/
714
715 Upstream version upgrades
716 ~~~~~~~~~~~~~~~~~~~~~~~~~
717
718 The following upstream dependencies have been upgraded:
719
720 * Akka 2.4.18 → 2.5.4; release notes:
721
722   * `Akka 2.5.0`_
723   * `Akka 2.5.1`_
724   * `Akka 2.5.2`_
725   * `Akka 2.5.3`_
726   * `Akka 2.5.4`_
727
728 * `Awaitility 2 → 3`_
729
730 * `Bouncy Castle 1.57 → 1.58`_
731
732 * `Commons Codec 1.10 → 1.11`_
733
734 * `Commons File Upload 1.3.2 → 1.3.3`_
735
736 * `Commons IO 2.5 → 2.6`_
737
738 * Eclipse JDT annotations 2.0.0 → 2.1.0
739
740 * Felix Dependency Manager 4.3.0 → 4.4.1
741 * Felix Dependency Manager Shell 4.0.4 → 4.0.6
742 * Felix Metatype 1.1.2 → 1.1.6
743
744 * `Google Truth 0.28 → 0.36`_ (with the Java 8 extensions)
745
746 * `Gson 2.7 → 2.8.2`_
747
748 * Guava 22 → 23.3 along with the associated feature name change from
749   ``odl-guava-22`` to ``odl-guava-23`` (dependent packages *must* change their
750   dependency); release notes:
751
752   * `Guava 23`_
753   * `Guava 23.1`_
754   * `Guava 23.2`_
755   * `Guava 23.3`_
756
757 * Immutables 2.4.2 → 2.5.6
758
759 * Jackson 2.3.2 → 2.8.9
760
761 * Jacoco 0.7.7 → 0.7.9; release notes:
762
763   * `Jacoco 0.7.8`_
764   * `Jacoco 0.7.9`_
765
766 * Jacoco Listeners 2.4 → 3.8
767
768 * `Javassist 3.20.0 → 3.21.0`_
769
770 * `Jettison 1.3.7 → 1.3.8`_
771
772 * `Jolokia 1.3.6 → 1.3.7`_
773
774 * `JSONassert 1.3.0 → 1.5.0`_
775
776 * `logback 1.2.2 → 1.2.3`_
777
778 * `LMAX Disruptor 3.3.6 → 3.3.7`_
779
780 * Netty 4.1.8 → 4.1.16; release notes:
781
782   * `Netty 4.1.9`_
783   * `Netty 4.1.10`_
784   * `Netty 4.1.11`_
785   * `Netty 4.1.12`_
786   * `Netty 4.1.13`_
787   * `Netty 4.1.14`_
788   * `Netty 4.1.15`_
789   * `Netty 4.1.16`_
790
791 * `Pax URL 2.5.2 → 2.5.3`_
792
793 * Scala 2.11.11 → 2.12.4; release notes:
794
795   * `Scala 2.12.0`_
796   * `Scala 2.12.1`_
797   * `Scala 2.12.2`_
798   * `Scala 2.12.3`_
799   * `Scala 2.12.4`_
800
801 * Servlet API 3.0.1 → 3.1.0
802
803 * `SLF4J 1.7.21 → 1.7.25`_
804
805 * `webcohesion enunciate 2.6.0 → 2.10.1`_
806
807 * `Xtend 2.12 → 2.13`_
808
809 .. _Akka 2.5.0: http://akka.io/blog/news/2017/04/13/akka-2.5.0-released
810 .. _Akka 2.5.1: http://akka.io/blog/news/2017/05/02/akka-2.5.1-released
811 .. _Akka 2.5.2: http://akka.io/blog/news/2017/05/24/akka-2.5.2-released
812 .. _Akka 2.5.3: http://akka.io/blog/news/2017/06/19/akka-2.5.3-released
813 .. _Akka 2.5.4: http://akka.io/blog/news/2017/08/10/akka-2.5.4-released
814
815 .. _Awaitility 2 → 3: https://github.com/awaitility/awaitility/wiki/ReleaseNotes30
816
817 .. _Bouncy Castle 1.57 → 1.58: https://www.bouncycastle.org/releasenotes.html
818
819 .. _Commons Codec 1.10 → 1.11: http://www.apache.org/dist/commons/codec/RELEASE-NOTES.txt
820
821 .. _Commons File Upload 1.3.2 → 1.3.3: http://www.apache.org/dist/commons/fileupload/RELEASE-NOTES.txt
822
823 .. _Commons IO 2.5 → 2.6: http://www.apache.org/dist/commons/io/RELEASE-NOTES.txt
824
825 .. _Google Truth 0.28 → 0.36: https://github.com/google/truth/releases
826
827 .. _Gson 2.7 → 2.8.2: https://github.com/google/gson/blob/master/CHANGELOG.md
828
829 .. _Guava 23: https://github.com/google/guava/wiki/Release23
830 .. _Guava 23.1: https://github.com/google/guava/releases/tag/v23.1
831 .. _Guava 23.2: https://github.com/google/guava/releases/tag/v23.2
832 .. _Guava 23.3: https://github.com/google/guava/releases/tag/v23.3
833
834 .. _Jacoco 0.7.8: https://github.com/jacoco/jacoco/releases/tag/v0.7.8
835 .. _Jacoco 0.7.9: https://github.com/jacoco/jacoco/releases/tag/v0.7.9
836
837 .. _Javassist 3.20.0 → 3.21.0: https://github.com/jboss-javassist/javassist/compare/rel_3_20_0_ga...rel_3_21_0_ga
838
839 .. _Jettison 1.3.7 → 1.3.8: https://github.com/jettison-json/jettison/compare/jettison-1.3.7...jettison-1.3.8
840
841 .. _Jolokia 1.3.6 → 1.3.7: https://github.com/rhuss/jolokia/releases/tag/v1.3.7
842
843 .. _JSONassert 1.3.0 → 1.5.0: https://github.com/skyscreamer/JSONassert/releases
844
845 .. _logback 1.2.2 → 1.2.3: https://logback.qos.ch/news.html
846
847 .. _LMAX Disruptor 3.3.6 → 3.3.7: https://github.com/LMAX-Exchange/disruptor/releases/tag/3.3.7
848
849 .. _Netty 4.1.9: http://netty.io/news/2017/03/10/4-0-45-Final-4-1-9-Final.html
850 .. _Netty 4.1.10: http://netty.io/news/2017/04/30/4-0-46-Final-4-1-10-Final.html
851 .. _Netty 4.1.11: http://netty.io/news/2017/05/12/4-0-47-Final-4-1-11-Final.html
852 .. _Netty 4.1.12: http://netty.io/news/2017/06/09/4-0-48-Final-4-1-12-Final.html
853 .. _Netty 4.1.13: http://netty.io/news/2017/07/06/4-0-49-Final-4-1-13-Final.html
854 .. _Netty 4.1.14: http://netty.io/news/2017/08/03/4-0-50-Final-4-1-14-Final.html
855 .. _Netty 4.1.15: http://netty.io/news/2017/08/25/4-0-51-Final-4-1-15-Final.html
856 .. _Netty 4.1.16: http://netty.io/news/2017/09/25/4-0-52-Final-4-1-16-Final.html
857
858 .. _Pax URL 2.5.2 → 2.5.3: https://ops4j1.jira.com/browse/PAXURL-345?jql=project%20%3D%20PAXURL%20AND%20fixVersion%20%3D%202.5.3
859
860 .. _Scala 2.12.0: https://github.com/scala/scala/releases/tag/v2.12.0
861 .. _Scala 2.12.1: https://github.com/scala/scala/releases/tag/v2.12.1
862 .. _Scala 2.12.2: https://github.com/scala/scala/releases/tag/v2.12.2
863 .. _Scala 2.12.3: https://github.com/scala/scala/releases/tag/v2.12.3
864 .. _Scala 2.12.4: https://github.com/scala/scala/releases/tag/v2.12.4
865
866 .. _SLF4J 1.7.21 → 1.7.25: https://www.slf4j.org/news.html
867
868 .. _webcohesion enunciate 2.6.0 → 2.10.1: https://github.com/stoicflame/enunciate/releases
869
870 .. _Xtend 2.12 → 2.13: https://www.eclipse.org/xtend/releasenotes.html
871
872 Upstream version additions
873 ~~~~~~~~~~~~~~~~~~~~~~~~~~
874
875 The following upstream dependencies have been added to dependency management:
876
877 * Commons Text, ``org.apache.commons:commons-text`` (this will allow downstreams
878   to migrate from ``commons-lang3``\’s ``WordUtils``, which is deprecated)
879
880 Upstream version removals
881 ~~~~~~~~~~~~~~~~~~~~~~~~~
882
883 The following upstream dependencies have been removed from dependency
884 management (they are obsolete and unused):
885
886 * Chameleon MBeans
887 * Eclipse Link
888 * Equinox HTTP service bridge
889 * ``equinoxSDK381`` artifacts
890 * Coda Hale Metrics, which are mostly unused and should eventually be wrapped
891   by InfraUtils
892 * ``com.google.code.findbugs:jsr305`` (which *must not* be used; this is
893   enforced — ``annotations`` should be used instead)
894 * Felix File Install and Web Console
895 * Gemini Web
896 * Orbit
897 * ``org.mockito:mockito-all`` (which *must not* be used; this is enforced —
898   ``mockito-core`` should be used instead)
899 * Spring Framework
900 * ``txw2``
901 * Xerces
902 * ``xml-apis``
903
904 Plugin version upgrades
905 ~~~~~~~~~~~~~~~~~~~~~~~
906
907 The following plugins have been upgraded:
908
909 * ``org.apache.servicemix.tooling:depends-maven-plugin`` 1.3.1 → 1.4.0
910 * ``org.apache.felix:maven-bundle-plugin`` 2.4.0 → 3.3.0
911 * ``maven-compiler-plugin`` 3.6.1 → 3.7.0
912 * ``maven-dependency-plugin`` 3.0.1 → 3.0.2
913 * ``maven-enforcer-plugin`` 1.4.1 → 3.0.0-M1
914 * ``maven-failsafe-plugin`` 2.18.1 → 2.20.1
915 * ``maven-javadoc-plugin`` 2.10.4 → 3.0.0-M1
916 * ``maven-shade-plugin`` 2.4.3 → 3.1.0
917
918 New plugins
919 ~~~~~~~~~~~
920
921 * The `Maven Find Duplicates`_ plugin can be enabled by setting the
922   ``duplicate-finder.skip`` property to ``false``.
923
924 * The SpotBugs_ Maven plugin can now be used instead of the FindBugs plugin
925   (both are available, so no change is required). To use SpotBugs, replace
926   ``org.codehaus.mojo:findbugs-maven-plugin`` with
927   ``com.github.spotbugs:spotbugs-maven-plugin``.
928
929 .. _Maven Find Duplicates: https://github.com/basepom/duplicate-finder-maven-plugin/
930
931 .. _SpotBugs: https://spotbugs.github.io/