You are viewing a plain text version of this content. The canonical link for it is here.
Posted to oak-commits@jackrabbit.apache.org by re...@apache.org on 2025/04/17 14:29:53 UTC

(jackrabbit-oak) branch trunk updated: OAK-11650: Fix Javadoc errors (#2232)

This is an automated email from the ASF dual-hosted git repository.

reschke pushed a commit to branch trunk
in repository https://gitbox.apache.org/repos/asf/jackrabbit-oak.git


The following commit(s) were added to refs/heads/trunk by this push:
     new 6f91ebf9cd OAK-11650: Fix Javadoc errors (#2232)
6f91ebf9cd is described below

commit 6f91ebf9cd6a4cc4536ba000af34515430acb3f6
Author: Julian Reschke <re...@apache.org>
AuthorDate: Thu Apr 17 16:29:48 2025 +0200

    OAK-11650: Fix Javadoc errors (#2232)
---
 .../oak/api/jmx/RepositoryManagementMBean.java     | 12 +++----
 .../external/basic/DefaultSyncConfig.java          |  4 +--
 .../external/impl/jmx/SynchronizationMBean.java    | 12 +++----
 .../ExternalIdentityRepositoryInitializer.java     |  2 +-
 .../principalbased/impl/FilterProviderImpl.java    |  4 +--
 ...LucenePropertyFTIndexedContentAvailability.java |  4 ---
 .../suites/ScalabilityBlobSearchSuite.java         |  4 ---
 .../suites/ScalabilityNodeRelationshipSuite.java   | 10 +++---
 .../scalability/suites/ScalabilityNodeSuite.java   |  9 -----
 .../jackrabbit/oak/benchmark/AbstractTest.java     | 12 ++-----
 .../benchmarks/search/ConcurrentReader.java        |  3 --
 .../suites/ScalabilityAbstractSuite.java           |  3 --
 .../suites/ScalabilityStandbySuite.java            |  2 +-
 .../jackrabbit/oak/spi/blob/AbstractBlobStore.java |  6 ++--
 .../apache/jackrabbit/oak/commons/PerfLogger.java  |  4 +--
 .../oak/commons/concurrent/ExecutorCloser.java     |  2 --
 .../commons/concurrent/NotifyingFutureTask.java    |  3 +-
 .../oak/commons/collections/SetUtilsTest.java      |  1 -
 .../jackrabbit/oak/commons/junit/LogDumper.java    |  1 -
 .../oak/commons/junit/LogLevelModifier.java        |  1 -
 .../apache/jackrabbit/oak/commons/jmx/JmxUtil.java |  2 +-
 .../jackrabbit/oak/spi/mount/FragmentMatcher.java  |  4 +--
 .../org/apache/jackrabbit/oak/spi/mount/Mount.java |  8 ++---
 .../oak/spi/mount/MountInfoProvider.java           |  2 +-
 .../main/java/org/apache/jackrabbit/oak/Oak.java   |  4 ---
 .../oak/plugins/atomic/AtomicCounterEditor.java    | 17 ++--------
 .../atomic/AtomicCounterEditorProvider.java        |  6 ++--
 .../jackrabbit/oak/plugins/cow/COWNodeStore.java   | 14 ++++----
 .../oak/plugins/index/IndexEditorProvider.java     |  4 +--
 .../jackrabbit/oak/plugins/index/IndexUpdate.java  |  4 ---
 .../jackrabbit/oak/plugins/index/MetricsUtils.java |  3 +-
 .../index/datastore/DataStoreTextWriter.java       |  2 +-
 .../oak/plugins/index/property/PropertyIndex.java  | 17 ++++------
 .../strategy/UniqueEntryStoreStrategy.java         |  2 +-
 .../oak/plugins/migration/FilteringNodeState.java  | 10 +++---
 .../migration/version/VersionableEditor.java       |  3 +-
 .../oak/plugins/nodetype/TypeEditor.java           |  4 +--
 .../oak/plugins/nodetype/TypeRegistration.java     | 10 +++---
 .../nodetype/write/ReadWriteNodeTypeManager.java   | 14 ++++----
 .../oak/plugins/tree/impl/ImmutableTree.java       |  6 ++--
 .../oak/plugins/version/VersionHook.java           |  5 ---
 .../oak/plugins/version/VersionableState.java      |  1 -
 .../org/apache/jackrabbit/oak/query/Query.java     |  4 +--
 .../oak/query/ast/AstElementFactory.java           |  3 +-
 .../AuthenticationConfigurationImpl.java           |  2 +-
 .../authentication/CallbackHandlerImpl.java        |  8 ++---
 .../authentication/token/TokenLoginModule.java     |  8 ++---
 .../authentication/user/LoginModuleImpl.java       | 12 +++----
 .../authorization/AuthorizationInitializer.java    |  4 +--
 .../CompositeAuthorizationConfiguration.java       | 12 +++----
 .../authorization/restriction/GlobPattern.java     |  3 --
 .../authorization/restriction/GlobsPattern.java    |  6 ++--
 .../authorization/restriction/PrefixPattern.java   |  2 +-
 .../restriction/RestrictionProviderImpl.java       |  6 ++--
 .../oak/security/internal/Preconditions.java       |  6 ++--
 .../oak/security/user/CacheConflictHandler.java    | 16 ++++-----
 .../security/user/RepMembersConflictHandler.java   | 10 +++---
 .../oak/security/user/UserAuthentication.java      |  6 ++--
 .../jackrabbit/oak/security/user/UserImporter.java | 19 +++++------
 .../oak/security/user/UserInitializer.java         | 10 +++---
 .../jackrabbit/oak/security/user/UserProvider.java | 29 ++++++++--------
 .../user/autosave/AutoSaveEnabledManager.java      |  2 +-
 .../strategy/ContentMirrorStoreStrategyTest.java   |  1 -
 .../jackrabbit/oak/query/AbstractQueryTest.java    |  1 -
 .../composite/CompositeProviderScopeTest.java      |  4 +--
 .../oak/security/user/MembershipTest.java          |  8 ++---
 .../ReadOnlyAuthorizationConfiguration.java        | 11 +++---
 .../authentication/L3_LoginModuleTest.java         |  6 ++--
 .../advanced/L2_SetupAggregationTest.java          | 24 ++++++-------
 .../advanced/L3_UnderstandAggregationTest.java     | 10 +++---
 .../security/principal/L3_EveryoneTest.java        |  8 ++---
 .../principal/L4_PrincipalProviderTest.java        |  6 ++--
 .../user/L10_RemovalAndMembershipTest.java         |  4 +--
 .../exercise/security/user/L8_MembershipTest.java  |  4 +--
 .../jackrabbit/api/JackrabbitValueFactory.java     |  4 ---
 .../apache/jackrabbit/api/binary/BinaryUpload.java | 25 +++++---------
 .../api/observation/JackrabbitEventFilter.java     |  7 ----
 .../security/JackrabbitAccessControlManager.java   | 12 +++----
 .../security/authorization/PrincipalSetPolicy.java |  2 +-
 .../authorization/PrivilegeCollection.java         |  2 +-
 .../jackrabbit/api/security/user/Authorizable.java |  4 +--
 .../java/org/apache/jackrabbit/oak/jcr/Jcr.java    |  4 +--
 .../jackrabbit/oak/jcr/delegate/package-info.java  | 16 ++++-----
 .../oak/jcr/CompatibilityIssuesTest.java           |  4 +--
 .../jackrabbit/oak/jcr/DocumentClusterIT.java      |  5 +--
 .../jackrabbit/oak/jcr/LargeOperationIT.java       |  6 ++--
 .../oak/plugins/index/lucene/LuceneIndex.java      | 12 +++----
 .../plugins/index/lucene/LucenePropertyIndex.java  | 12 +++----
 .../flatfile/DefaultAheadOfTimeBlobDownloader.java |  4 +--
 .../flatfile/linkedList/PersistedLinkedListV2.java |  4 +--
 .../flatfile/pipelined/PipelinedUtils.java         |  2 +-
 .../oak/run/FrozenNodeReferenceCreator.java        |  4 +--
 .../index/elastic/ElasticIndexStatistics.java      |  6 ++--
 .../elastic/query/ElasticSpellcheckIterator.java   |  4 +--
 .../index/search/update/RefreshOnReadPolicy.java   |  4 +--
 .../plugins/index/search/util/LMSEstimator.java    |  2 +-
 .../plugins/index/IndexAggregation2CommonTest.java |  6 ----
 .../jackrabbit/oak/plugins/tree/TreeType.java      | 10 +++---
 .../authentication/AbstractLoginModule.java        | 39 +++++++++++-----------
 .../security/authentication/GuestLoginModule.java  |  4 +--
 .../accesscontrol/AccessControlConstants.java      | 23 ++++++-------
 .../permission/PermissionProvider.java             |  2 --
 .../oak/spi/security/user/UserConstants.java       |  2 +-
 .../security/user/action/AccessControlAction.java  |  8 ++---
 .../security/user/action/AuthorizableAction.java   | 10 +++---
 .../oak/spi/security/user/action/GroupAction.java  | 12 +++----
 .../user/action/PasswordValidationAction.java      |  4 +--
 .../oak/spi/security/user/action/UserAction.java   |  3 +-
 .../remote/persistentcache/DiskCacheIOMonitor.java | 12 +++----
 .../persistentcache/RedisCacheIOMonitor.java       |  8 ++---
 .../oak/segment/CheckpointCompactor.java           |  4 +--
 .../jackrabbit/oak/segment/CommitsTracker.java     |  2 +-
 .../oak/segment/SegmentBufferMonitor.java          |  8 ++---
 .../oak/segment/file/MetricsIOMonitor.java         |  8 ++---
 .../oak/segment/file/tar/GCGeneration.java         |  6 ++--
 .../segment/spi/persistence/JournalFileWriter.java |  4 +--
 .../spi/persistence/SegmentArchiveWriter.java      | 12 +++----
 .../oak/segment/CacheWeightEstimator.java          |  2 --
 .../oak/segment/ExternalBlobReferenceTest.java     |  8 ++---
 .../jackrabbit/oak/segment/ManyChildNodesIT.java   |  2 +-
 .../oak/segment/SegmentCompactionIT.java           |  5 ++-
 .../oak/segment/SegmentOverflowExceptionIT.java    |  4 +--
 .../file/LargeNumberOfPropertiesTestIT.java        |  5 ++-
 .../segment/file/SegmentReferenceLimitTestIT.java  |  5 ++-
 .../oak/composite/CompositeNodeStore.java          |  4 +--
 .../composite/checks/MountedNodeStoreChecker.java  |  5 ++-
 .../checks/UniqueIndexNodeStoreChecker.java        |  5 ++-
 .../NonDefaultMountWriteReportingObserver.java     |  7 ++--
 .../jackrabbit/oak/composite/package-info.java     |  8 ++---
 .../NodeTypeDefinitionNodeStoreCheckerTest.java    |  2 +-
 .../oak/plugins/document/ClusterView.java          | 19 +++++------
 .../oak/plugins/document/ClusterViewDocument.java  |  6 ++--
 .../jackrabbit/oak/plugins/document/Collision.java |  4 +--
 .../document/DocumentDiscoveryLiteService.java     | 11 +++---
 .../plugins/document/DocumentNodeStoreService.java |  1 -
 .../DocumentNodeStoreServiceConfiguration.java     |  6 ++--
 .../oak/plugins/document/NodeDocument.java         |  1 -
 .../oak/plugins/document/Sweep2Helper.java         |  2 +-
 .../oak/plugins/document/VersionGCSupport.java     |  2 --
 .../plugins/document/VersionGarbageCollector.java  |  2 +-
 .../oak/plugins/document/bundlor/Include.java      | 10 +++---
 .../document/mongo/MongoVersionGCSupport.java      |  3 +-
 .../oak/plugins/document/rdb/RDBDocumentStore.java | 20 +++++------
 .../plugins/document/CollisionRollbackTest.java    |  2 +-
 .../document/DocumentMKBuilderProvider.java        |  6 ++--
 .../oak/plugins/document/Sweep2TestHelper.java     |  6 ++--
 .../jackrabbit/oak/spi/commit/EmptyHook.java       |  4 +--
 .../jackrabbit/oak/spi/state/Clusterable.java      | 15 ++++-----
 .../jackrabbit/oak/spi/state/MoveDetector.java     | 10 +++---
 .../jackrabbit/oak/spi/state/NodeBuilder.java      | 10 +++---
 150 files changed, 446 insertions(+), 584 deletions(-)

diff --git a/oak-api/src/main/java/org/apache/jackrabbit/oak/api/jmx/RepositoryManagementMBean.java b/oak-api/src/main/java/org/apache/jackrabbit/oak/api/jmx/RepositoryManagementMBean.java
index d374f739b1..9c879ef4e3 100644
--- a/oak-api/src/main/java/org/apache/jackrabbit/oak/api/jmx/RepositoryManagementMBean.java
+++ b/oak-api/src/main/java/org/apache/jackrabbit/oak/api/jmx/RepositoryManagementMBean.java
@@ -49,23 +49,23 @@ import org.osgi.annotation.versioning.ProviderType;
  *     system is in a state where it does not allow the operation to
  *     be carried out (e.g. the operation is already running). The
  *     {@code message} should give further indication of the exact
- *     reason.</li>
+ *     reason.
  *     <li>{@code 1}: <em>Status not available</em>. Usually because
  *     there was no prior attempt to start the operation. The
  *     {@code message} should give further indication of the exact
- *     reason.</li>
+ *     reason.
  *     <li>{@code 2}: <em>Operation initiated</em>. The {@code message}
  *     should give further information of when the operation was
  *     initiated. This status mean that the operation will be performed
  *     some time in the future without impacting overall system behaviour
  *     and that no further status updates will be available until this
- *     operation is performed next time.</li>
- *     <li>{@code 3}: <em>Operation running</em>.</li>
+ *     operation is performed next time.
+ *     <li>{@code 3}: <em>Operation running</em>.
  *     <li>{@code 4}: <em>Operation succeeded</em>. The {@code message} should
  *     give further information on how long the operation took to
- *     complete.</li>
+ *     complete.
  *     <li>{@code 5}: Operation failed. The {@code message} should give
- *     further information on the reason for the failure.</li>
+ *     further information on the reason for the failure.
  * </ul>
  * <p>
  * In all cases the {@code message} may provide additional information
diff --git a/oak-auth-external/src/main/java/org/apache/jackrabbit/oak/spi/security/authentication/external/basic/DefaultSyncConfig.java b/oak-auth-external/src/main/java/org/apache/jackrabbit/oak/spi/security/authentication/external/basic/DefaultSyncConfig.java
index 4f2a2995c7..db427dc63c 100644
--- a/oak-auth-external/src/main/java/org/apache/jackrabbit/oak/spi/security/authentication/external/basic/DefaultSyncConfig.java
+++ b/oak-auth-external/src/main/java/org/apache/jackrabbit/oak/spi/security/authentication/external/basic/DefaultSyncConfig.java
@@ -415,12 +415,12 @@ public class DefaultSyncConfig {
         /**
          * <p>Returns {@code true} if external group identities are being synchronized into the repository as dynamic groups.
          * In this case a dedicated {@link org.apache.jackrabbit.oak.spi.security.user.DynamicMembershipProvider} must be 
-         * present in order to have group membership reflected through User Management API.</p>
+         * present in order to have group membership reflected through User Management API.
          * 
          * <p>Note, that currently this option only takes effect if it is enabled together with dynamic membership 
          * (i.e. {@link User#getDynamicMembership()} returns true). In this case a dedicated 
          * {@link org.apache.jackrabbit.oak.spi.security.user.DynamicMembershipProvider} based on the 
-         * {@code ExternalGroupPrincipalProvider} will be registered.</p>
+         * {@code ExternalGroupPrincipalProvider} will be registered.
          *
          * @return {@code true} if external groups should be synchronized as dynamic groups (i.e. without having their
          * members added); {@code false} otherwise. Note, that this option currently only takes effect if {@link User#getDynamicMembership()} is enabled.
diff --git a/oak-auth-external/src/main/java/org/apache/jackrabbit/oak/spi/security/authentication/external/impl/jmx/SynchronizationMBean.java b/oak-auth-external/src/main/java/org/apache/jackrabbit/oak/spi/security/authentication/external/impl/jmx/SynchronizationMBean.java
index 3c57b8331d..99b90c9f71 100644
--- a/oak-auth-external/src/main/java/org/apache/jackrabbit/oak/spi/security/authentication/external/impl/jmx/SynchronizationMBean.java
+++ b/oak-auth-external/src/main/java/org/apache/jackrabbit/oak/spi/security/authentication/external/impl/jmx/SynchronizationMBean.java
@@ -33,11 +33,11 @@ import org.osgi.annotation.versioning.ProviderType;
  *
  * With the following operations:
  * <ul>
- * <li>nop: nothing changed</li>
- * <li>upd: entry updated</li>
- * <li>add: entry added</li>
- * <li>del: entry deleted</li>
- * <li>err: operation failed. in this case, the 'msg' property will contain a reason</li>
+ * <li>nop: nothing changed
+ * <li>upd: entry updated
+ * <li>add: entry added
+ * <li>del: entry deleted
+ * <li>err: operation failed. in this case, the 'msg' property will contain a reason
  * </ul>
  *
  * Note that this interface is not exported via OSGi as it is not intended to use outside of JMX (yet).
@@ -119,7 +119,7 @@ public interface SynchronizationMBean {
     /**
      * <p>Migrates all previously synchronized users to have dynamic membership if the {@code SyncHandler} has the dynamic 
      * membership option enabled. Otherwise this method will have no effect.
-     * </p>
+     * <p>
      * Note: calling this method will only migrate existing group membership information to the dynamic persistence format. 
      * It does not retrieve the latest membership information from the external identity provider. Membership information 
      * will therefore only be updated upon the next synchronization.
diff --git a/oak-auth-external/src/main/java/org/apache/jackrabbit/oak/spi/security/authentication/external/impl/principal/ExternalIdentityRepositoryInitializer.java b/oak-auth-external/src/main/java/org/apache/jackrabbit/oak/spi/security/authentication/external/impl/principal/ExternalIdentityRepositoryInitializer.java
index 96e3bf2eac..b9fa78c58b 100644
--- a/oak-auth-external/src/main/java/org/apache/jackrabbit/oak/spi/security/authentication/external/impl/principal/ExternalIdentityRepositoryInitializer.java
+++ b/oak-auth-external/src/main/java/org/apache/jackrabbit/oak/spi/security/authentication/external/impl/principal/ExternalIdentityRepositoryInitializer.java
@@ -33,7 +33,7 @@ import java.util.List;
  *     <li>Index Definition <i>externalPrincipalNames</i>: Indexing
  *     {@link ExternalIdentityConstants#REP_EXTERNAL_PRINCIPAL_NAMES} properties.
  *     This index is used by the {@link ExternalGroupPrincipalProvider} to lookup
- *     and find principals stored in this property.</li>
+ *     and find principals stored in this property.
  * </ul>
  *
  * @since Oak 1.5.3
diff --git a/oak-authorization-principalbased/src/main/java/org/apache/jackrabbit/oak/spi/security/authorization/principalbased/impl/FilterProviderImpl.java b/oak-authorization-principalbased/src/main/java/org/apache/jackrabbit/oak/spi/security/authorization/principalbased/impl/FilterProviderImpl.java
index 65370a4df8..be3caf304d 100644
--- a/oak-authorization-principalbased/src/main/java/org/apache/jackrabbit/oak/spi/security/authorization/principalbased/impl/FilterProviderImpl.java
+++ b/oak-authorization-principalbased/src/main/java/org/apache/jackrabbit/oak/spi/security/authorization/principalbased/impl/FilterProviderImpl.java
@@ -53,8 +53,8 @@ import java.util.concurrent.ConcurrentHashMap;
  * consists of the following two filtering conditions:
  *
  * <ol>
- *     <li>All principals in the set must be of type {@link org.apache.jackrabbit.oak.spi.security.principal.SystemUserPrincipal}</li>
- *     <li>All principals in the set must be located in the repository below the configured path.</li>
+ *     <li>All principals in the set must be of type {@link org.apache.jackrabbit.oak.spi.security.principal.SystemUserPrincipal}
+ *     <li>All principals in the set must be located in the repository below the configured path.
  * </ol>
  */
 @Component(service = {FilterProvider.class}, configurationPolicy = ConfigurationPolicy.REQUIRE)
diff --git a/oak-benchmarks-lucene/src/main/java/org/apache/jackrabbit/oak/benchmark/LucenePropertyFTIndexedContentAvailability.java b/oak-benchmarks-lucene/src/main/java/org/apache/jackrabbit/oak/benchmark/LucenePropertyFTIndexedContentAvailability.java
index 3f8aaa184b..0630c1d27a 100644
--- a/oak-benchmarks-lucene/src/main/java/org/apache/jackrabbit/oak/benchmark/LucenePropertyFTIndexedContentAvailability.java
+++ b/oak-benchmarks-lucene/src/main/java/org/apache/jackrabbit/oak/benchmark/LucenePropertyFTIndexedContentAvailability.java
@@ -39,14 +39,11 @@ import org.slf4j.LoggerFactory;
  * Perform a benchmark on how long it takes for an ingested item to be available in a Lucene
  * Property index when indexed in conjunction with a Global full-text lucene (same thread). It makes
  * use of the {@link WikipediaImport} to use a Wikipedia dump for content injestion.
- * </p>
  * <p>
  * Suggested dump: 
  * <a href="https://dumps.wikimedia.org/enwiki/20150403/enwiki-20150403-pages-articles.xml.bz2">https://dumps.wikimedia.org/enwiki/20150403/enwiki-20150403-pages-articles.xml.bz2</a>
- * </p>
  * <p>
  * Usage example:
- * </p>
  * 
  * <pre>
  * java -Druntime=900 -Dlogback.configurationFile=logback-benchmark.xml \
@@ -56,7 +53,6 @@ import org.slf4j.LoggerFactory;
  * </pre>
  * <p>
  * it will run the benchmark for 15 minutes against TarNS and MongoNS.
- * </p>
  */
 public class LucenePropertyFTIndexedContentAvailability extends PropertyFullTextTest {
     private static final Logger LOG = LoggerFactory.getLogger(LucenePropertyFTIndexedContentAvailability.class);
diff --git a/oak-benchmarks-lucene/src/main/java/org/apache/jackrabbit/oak/scalability/suites/ScalabilityBlobSearchSuite.java b/oak-benchmarks-lucene/src/main/java/org/apache/jackrabbit/oak/scalability/suites/ScalabilityBlobSearchSuite.java
index 1eef99b369..15ab2b6f89 100644
--- a/oak-benchmarks-lucene/src/main/java/org/apache/jackrabbit/oak/scalability/suites/ScalabilityBlobSearchSuite.java
+++ b/oak-benchmarks-lucene/src/main/java/org/apache/jackrabbit/oak/scalability/suites/ScalabilityBlobSearchSuite.java
@@ -60,17 +60,13 @@ import org.apache.jackrabbit.oak.scalability.util.NodeTypeUtils;
  * <li>
  *     <code>fileWriters</code> - Controls the number of concurrent background threads for writing blobs.
  *     Defaults to 0.
- * </li>
  * <li>
  *     <code>fileReaders</code> - Controls the number of concurrent background threads for reading blobs.
  *     Defaults to 1.
- * </li>
  * <li>
  *     <code>fileSize</code> - Controls the size in KB of the blobs. Defaults to 1.
- * </li>
  * <li>
  *     <code>maxAssets</code> - Controls the max child nodes created under a node. Defaults to 500.
- * </li>
  * </ul>
  */
 public class ScalabilityBlobSearchSuite extends ScalabilityNodeSuite {
diff --git a/oak-benchmarks-lucene/src/main/java/org/apache/jackrabbit/oak/scalability/suites/ScalabilityNodeRelationshipSuite.java b/oak-benchmarks-lucene/src/main/java/org/apache/jackrabbit/oak/scalability/suites/ScalabilityNodeRelationshipSuite.java
index 196d847b98..d431983013 100644
--- a/oak-benchmarks-lucene/src/main/java/org/apache/jackrabbit/oak/scalability/suites/ScalabilityNodeRelationshipSuite.java
+++ b/oak-benchmarks-lucene/src/main/java/org/apache/jackrabbit/oak/scalability/suites/ScalabilityNodeRelationshipSuite.java
@@ -63,14 +63,13 @@ import org.apache.jackrabbit.guava.common.base.Splitter;
  *     <code>nodeLevels</code> - Comma separated string property that governs the number of number of
  *     different node relationships in the following order:
  *      <ul>
- *          <li>Users</li>
- *          <li>Groups</li>
- *          <li>User Relationships</li>
- *          <li>Activities</li>
+ *          <li>Users
+ *          <li>Groups
+ *          <li>User Relationships
+ *          <li>Activities
  *      </ul>
  *
  *     Defaults to 10,5,2,1.
- * </li>
  * </ul>
  *
  */
@@ -318,7 +317,6 @@ public class ScalabilityNodeRelationshipSuite extends ScalabilityNodeSuite {
      *                                     targetId: cUser0_5
      * }
      * </pre>
-     * </p>
      */
     class ActivityWriter extends Writer {
         private int startIdx;
diff --git a/oak-benchmarks-lucene/src/main/java/org/apache/jackrabbit/oak/scalability/suites/ScalabilityNodeSuite.java b/oak-benchmarks-lucene/src/main/java/org/apache/jackrabbit/oak/scalability/suites/ScalabilityNodeSuite.java
index 6d5b041d91..8ff981683c 100644
--- a/oak-benchmarks-lucene/src/main/java/org/apache/jackrabbit/oak/scalability/suites/ScalabilityNodeSuite.java
+++ b/oak-benchmarks-lucene/src/main/java/org/apache/jackrabbit/oak/scalability/suites/ScalabilityNodeSuite.java
@@ -76,33 +76,24 @@ import org.slf4j.LoggerFactory;
  * <li>
  *     <code>loaders</code> - Controls the number of concurrent threads for loading blobs initially.
  *     Defaults to 1.
- * </li>
  * <li>
  *     <code>testers</code> - Controls the number of concurrent tester threads. Defaults to 1.
- * </li>
  * <li>
  *     <code>nodeLevels</code> - Comma separated string property that governs the depth and the number of
  *     nodes in the hierarchy. Defaults to 10, 5, 2.
- * </li>
  * <li>
  *     <code>densityLevel</code> - Controls the percentage of root nodes which will have sub nodes created.
  *     Defaults to 100.
- * </li>
  * <li>
  *     <code>index</code> - Controls if the index definitions are to be created. Defaults to false.
- * </li>
  * <li>
  *      <code>asyncIndex</code> - Controls whether the indexing is async. Defaults to false.
- * </li>
  * <li>
  *     <code>noFullIndex</code> - Controls whether fulltext indexing is enabled or disabled. Defaults to false.
- * </li>
  * <li>
  *     <code>randDate</code> - Controls whether to generate random dates in a range. Defaults to false.
- * </li>
  * <li>
  *     <code>customType</code> - Controls if nodes created in the load have a custom node type. Defaults to false.
- * </li>
  * </ul>
  *
  */
diff --git a/oak-benchmarks/src/main/java/org/apache/jackrabbit/oak/benchmark/AbstractTest.java b/oak-benchmarks/src/main/java/org/apache/jackrabbit/oak/benchmark/AbstractTest.java
index 36b264c203..b2877d5d1d 100644
--- a/oak-benchmarks/src/main/java/org/apache/jackrabbit/oak/benchmark/AbstractTest.java
+++ b/oak-benchmarks/src/main/java/org/apache/jackrabbit/oak/benchmark/AbstractTest.java
@@ -100,21 +100,17 @@ public abstract class AbstractTest<T> extends Benchmark implements CSVResultGene
      * <p>
      * used to signal the {@link #runTest(int)} if stop running future test planned or not. If set
      * to true, it will exit the loop not performing any more tests.
-     * </p>
-     * 
+     *
      * <p>
      * useful when the running of the benchmark makes sense for as long as other processes didn't
      * complete.
-     * </p>
-     * 
+     *
      * <p>
      * Set this variable from within the benchmark itself by using {@link #issueHaltRequest(String)}
-     * </p>
-     * 
+     *
      * <p>
      * <strong>it works only for concurrency level of 1 ({@code --concurrency 1} the
      * default)</strong>
-     * </p>
      */
     private boolean haltRequested;
 
@@ -136,11 +132,9 @@ public abstract class AbstractTest<T> extends Benchmark implements CSVResultGene
      * <p>
      * this method will be called during the {@link #tearDown()} before the {@link #afterSuite()}.
      * Override it if you have background processes you wish to stop.
-     * </p>
      * <p>
      * For example in case of big imports, the suite could be keep running for as long as the import
      * is running, even if the tests are actually no longer executed.
-     * </p>
      */
     protected void issueHaltChildThreads() {
     }
diff --git a/oak-benchmarks/src/main/java/org/apache/jackrabbit/oak/scalability/benchmarks/search/ConcurrentReader.java b/oak-benchmarks/src/main/java/org/apache/jackrabbit/oak/scalability/benchmarks/search/ConcurrentReader.java
index 564aa30fc1..f1d4bdbcd6 100644
--- a/oak-benchmarks/src/main/java/org/apache/jackrabbit/oak/scalability/benchmarks/search/ConcurrentReader.java
+++ b/oak-benchmarks/src/main/java/org/apache/jackrabbit/oak/scalability/benchmarks/search/ConcurrentReader.java
@@ -46,15 +46,12 @@ import java.util.UUID;
  * <li>
  *     <code>concurrentWriters</code> - Controls the number of concurrent background threads for writing nodes.
  *     Defaults to 0.
- * </li>
  * <li>
  *     <code>concurrentReaders</code> - Controls the number of concurrent background threads for reading nodes.
  *     Defaults to 0.
- * </li>
  * <li>
  *     <code>assets</code> - Controls the number of nodes to read/write in the background threads.
  *     Defaults to 100.
- * </li>
  * </ul>
  *
  */
diff --git a/oak-benchmarks/src/main/java/org/apache/jackrabbit/oak/scalability/suites/ScalabilityAbstractSuite.java b/oak-benchmarks/src/main/java/org/apache/jackrabbit/oak/scalability/suites/ScalabilityAbstractSuite.java
index 06cf538da2..4b8bcfb98c 100644
--- a/oak-benchmarks/src/main/java/org/apache/jackrabbit/oak/scalability/suites/ScalabilityAbstractSuite.java
+++ b/oak-benchmarks/src/main/java/org/apache/jackrabbit/oak/scalability/suites/ScalabilityAbstractSuite.java
@@ -74,14 +74,11 @@ import org.slf4j.LoggerFactory;
  * <ul>
  * <li>
  *     <code>profile</code> - Controls whether to profile the benchmark or not. Defaults to false.
- * </li>
  * <li>
  *     <code>noWarmup</code> - Controls whether to run warmup or not before each benchmark. Defaults to false.
- * </li>
  * <li>
  *     <code>increments</code> - Comma separated list which controls the incremental load for each iteration.
  *     Defaults to 1,2,5.
- * </li>
  * </ul>
  */
 public abstract class ScalabilityAbstractSuite implements ScalabilitySuite, CSVResultGenerator {
diff --git a/oak-benchmarks/src/main/java/org/apache/jackrabbit/oak/scalability/suites/ScalabilityStandbySuite.java b/oak-benchmarks/src/main/java/org/apache/jackrabbit/oak/scalability/suites/ScalabilityStandbySuite.java
index fb5ab479b5..c5ced4cc22 100644
--- a/oak-benchmarks/src/main/java/org/apache/jackrabbit/oak/scalability/suites/ScalabilityStandbySuite.java
+++ b/oak-benchmarks/src/main/java/org/apache/jackrabbit/oak/scalability/suites/ScalabilityStandbySuite.java
@@ -50,7 +50,7 @@ import org.apache.jackrabbit.oak.scalability.benchmarks.ScalabilityBenchmark;
  * 
  * <ul>
  * <li><code>nodeCount</code> - Controls the number of nodes to be created on
- * the primary. Defaults to 100_000.</li>
+ * the primary. Defaults to 100_000.
  * </ul>
  *
  */
diff --git a/oak-blob/src/main/java/org/apache/jackrabbit/oak/spi/blob/AbstractBlobStore.java b/oak-blob/src/main/java/org/apache/jackrabbit/oak/spi/blob/AbstractBlobStore.java
index 24ff274d87..b042175e0f 100644
--- a/oak-blob/src/main/java/org/apache/jackrabbit/oak/spi/blob/AbstractBlobStore.java
+++ b/oak-blob/src/main/java/org/apache/jackrabbit/oak/spi/blob/AbstractBlobStore.java
@@ -64,9 +64,9 @@ import static org.apache.jackrabbit.oak.commons.conditions.Validate.checkArgumen
  * <p>
  * Each data store id is a list of zero or more entries. Each entry is either
  * <ul>
- * <li>data (a number of bytes), or</li>
- * <li>the hash code of the content of a number of bytes, or</li>
- * <li>the hash code of the content of a data store id (indirect hash)</li>
+ * <li>data (a number of bytes), or
+ * <li>the hash code of the content of a number of bytes, or
+ * <li>the hash code of the content of a data store id (indirect hash)
  * </ul>
  * Thanks to the indirection, blocks can be kept relatively small, so that
  * caching is simpler, and so that the storage backend doesn't need to support
diff --git a/oak-commons/src/main/java/org/apache/jackrabbit/oak/commons/PerfLogger.java b/oak-commons/src/main/java/org/apache/jackrabbit/oak/commons/PerfLogger.java
index 756e6ad3a4..1b3d4fd1ef 100644
--- a/oak-commons/src/main/java/org/apache/jackrabbit/oak/commons/PerfLogger.java
+++ b/oak-commons/src/main/java/org/apache/jackrabbit/oak/commons/PerfLogger.java
@@ -27,9 +27,9 @@ import org.slf4j.Logger;
  * <p>
  * Usage:
  * <ul>
- * <li>final long start = perflogger.start();</li>
+ * <li>final long start = perflogger.start();
  * <li>.. some code ..
- * <li>perflogger.end(start, 1, "myMethodName: param1={}", param1);</li>
+ * <li>perflogger.end(start, 1, "myMethodName: param1={}", param1);
  * </ul>
  * <p>
  * The above will do nothing if the log level for the logger passed
diff --git a/oak-commons/src/main/java/org/apache/jackrabbit/oak/commons/concurrent/ExecutorCloser.java b/oak-commons/src/main/java/org/apache/jackrabbit/oak/commons/concurrent/ExecutorCloser.java
index 5aebcfe20e..dff4f1f07f 100644
--- a/oak-commons/src/main/java/org/apache/jackrabbit/oak/commons/concurrent/ExecutorCloser.java
+++ b/oak-commons/src/main/java/org/apache/jackrabbit/oak/commons/concurrent/ExecutorCloser.java
@@ -30,12 +30,10 @@ import org.slf4j.LoggerFactory;
 /**
  * <p>
  * Utility class to properly close any ExecutorService.
- * </p>
  * 
  * <p>
  * It will attempt a graceful close within the provided timeout. If after such any of the contained
  * tasks are not terminated yet, it will force a shutdown and track a warning in the logs.
- * </p>
  * 
  */
 public final class ExecutorCloser implements Closeable {
diff --git a/oak-commons/src/main/java/org/apache/jackrabbit/oak/commons/concurrent/NotifyingFutureTask.java b/oak-commons/src/main/java/org/apache/jackrabbit/oak/commons/concurrent/NotifyingFutureTask.java
index c2496f051c..cca1493566 100644
--- a/oak-commons/src/main/java/org/apache/jackrabbit/oak/commons/concurrent/NotifyingFutureTask.java
+++ b/oak-commons/src/main/java/org/apache/jackrabbit/oak/commons/concurrent/NotifyingFutureTask.java
@@ -31,7 +31,7 @@ import java.util.concurrent.atomic.AtomicBoolean;
  * listener will execute immediately.
  *
  * <p>Listener is invoked synchronously on the same thread which is used to
- * executed the Future</p>
+ * executed the Future
  */
 public class NotifyingFutureTask extends FutureTask<Void> {
     private final AtomicBoolean completed = new AtomicBoolean(false);
@@ -53,7 +53,6 @@ public class NotifyingFutureTask extends FutureTask<Void> {
      * <p>
      * Note: there is no guarantee to which handler will run when the method
      * is called multiple times with different arguments.
-     * </p>
      * @param onComplete listener to invoke upon completion
      */
     public void onComplete(Runnable onComplete) {
diff --git a/oak-commons/src/test/java/org/apache/jackrabbit/oak/commons/collections/SetUtilsTest.java b/oak-commons/src/test/java/org/apache/jackrabbit/oak/commons/collections/SetUtilsTest.java
index 9bc6ecd46e..ec74d7c311 100644
--- a/oak-commons/src/test/java/org/apache/jackrabbit/oak/commons/collections/SetUtilsTest.java
+++ b/oak-commons/src/test/java/org/apache/jackrabbit/oak/commons/collections/SetUtilsTest.java
@@ -38,7 +38,6 @@ import static org.junit.Assert.fail;
  * <p>
  * This class contains test cases to verify the functionality of the methods
  * in the {@link SetUtils} class.
- * </p>
  */
 public class SetUtilsTest {
 
diff --git a/oak-commons/src/test/java/org/apache/jackrabbit/oak/commons/junit/LogDumper.java b/oak-commons/src/test/java/org/apache/jackrabbit/oak/commons/junit/LogDumper.java
index 4cd3b12a97..dec3196bdf 100644
--- a/oak-commons/src/test/java/org/apache/jackrabbit/oak/commons/junit/LogDumper.java
+++ b/oak-commons/src/test/java/org/apache/jackrabbit/oak/commons/junit/LogDumper.java
@@ -35,7 +35,6 @@ import org.slf4j.LoggerFactory;
  * locally upon test failure. This simplifies determining failure
  * cause by providing all required data locally. This would be specially useful when running test
  * in CI server where server logs gets cluttered with all other test executions
- * <p/>
  * <pre>
  *     public class LoginTestIT {
  *
diff --git a/oak-commons/src/test/java/org/apache/jackrabbit/oak/commons/junit/LogLevelModifier.java b/oak-commons/src/test/java/org/apache/jackrabbit/oak/commons/junit/LogLevelModifier.java
index d83c5424e3..cd9acaab54 100644
--- a/oak-commons/src/test/java/org/apache/jackrabbit/oak/commons/junit/LogLevelModifier.java
+++ b/oak-commons/src/test/java/org/apache/jackrabbit/oak/commons/junit/LogLevelModifier.java
@@ -42,7 +42,6 @@ import ch.qos.logback.core.filter.Filter;
  * The LogLevelModifier Rule can be used to fine-tune log levels during a particular
  * test. This could be used together with LogDumper to have enough details
  * in case of test failure without setting the global log level to DEBUG for example.
- * <p/>
  * <pre>
  *     public class LoginTestIT {
  *
diff --git a/oak-core-spi/src/main/java/org/apache/jackrabbit/oak/commons/jmx/JmxUtil.java b/oak-core-spi/src/main/java/org/apache/jackrabbit/oak/commons/jmx/JmxUtil.java
index f3138cbfd6..f8133796a0 100644
--- a/oak-core-spi/src/main/java/org/apache/jackrabbit/oak/commons/jmx/JmxUtil.java
+++ b/oak-core-spi/src/main/java/org/apache/jackrabbit/oak/commons/jmx/JmxUtil.java
@@ -43,7 +43,7 @@ public final class JmxUtil {
      * it would return a quoted string which is then safe to be used
      * as part of ObjectName.
      *
-     * <p>This is meant to avoid unnecessary quoting of value</p>
+     * <p>This is meant to avoid unnecessary quoting of value
      *
      * @param unquotedValue to quote if required
      * @return passed value or quoted value if required
diff --git a/oak-core-spi/src/main/java/org/apache/jackrabbit/oak/spi/mount/FragmentMatcher.java b/oak-core-spi/src/main/java/org/apache/jackrabbit/oak/spi/mount/FragmentMatcher.java
index 12bf2bcf1c..aefd62c1ae 100644
--- a/oak-core-spi/src/main/java/org/apache/jackrabbit/oak/spi/mount/FragmentMatcher.java
+++ b/oak-core-spi/src/main/java/org/apache/jackrabbit/oak/spi/mount/FragmentMatcher.java
@@ -26,8 +26,8 @@ import static org.apache.jackrabbit.oak.spi.mount.FragmentMatcher.Result.PARTIAL
  * This utility class allows to match strings against a simple pattern language.
  * There are two special characters:
  * <ul>
- *     <li><code>*</code> - matches zero or more any characters different than slash</li>
- *     <li><code>$</code> - matches the end of the subject</li>
+ *     <li><code>*</code> - matches zero or more any characters different than slash
+ *     <li><code>$</code> - matches the end of the subject
  * </ul>
  */
 public final class FragmentMatcher {
diff --git a/oak-core-spi/src/main/java/org/apache/jackrabbit/oak/spi/mount/Mount.java b/oak-core-spi/src/main/java/org/apache/jackrabbit/oak/spi/mount/Mount.java
index 1f613f7b5b..4d29db9751 100644
--- a/oak-core-spi/src/main/java/org/apache/jackrabbit/oak/spi/mount/Mount.java
+++ b/oak-core-spi/src/main/java/org/apache/jackrabbit/oak/spi/mount/Mount.java
@@ -25,7 +25,7 @@ import org.osgi.annotation.versioning.ProviderType;
  * Refers to a set of paths from a {@code ContentRepository}x that are possibly 
  * stored in a separate physical persistent store.
  * 
- * <p>In a default setup all paths belong to a default Mount.</p>
+ * <p>In a default setup all paths belong to a default Mount.
  */
 @ProviderType
 public interface Mount {
@@ -46,7 +46,7 @@ public interface Mount {
      * Checks whether current mount is the default mount.
      * 
      * <p>The Default mount includes the root path and all other
-     * paths which are not part of any other mount.</p>
+     * paths which are not part of any other mount.
      *
      * @return true if this mount represents the
      * default mount
@@ -97,14 +97,14 @@ public interface Mount {
     /**
      * Checks if given path belongs to this <code>Mount</code>
      *
-     * <p>A path belongs to a Mount in two scenarios:</p>
+     * <p>A path belongs to a Mount in two scenarios:
      * <ol>
      *   <li>The path is below a fragment-supported path and the path contains a fragment name.</li>
      *   <li>The path of this mount is the most specific ancestor for the specified path.</li>
      * </ol>
      * 
      * <p>The fragment check has a higher priority, and the presence of a fragment name in the path
-     * always decides the mount this path belongs to.</p>
+     * always decides the mount this path belongs to.
      *
      * @param path path to check
      * @return true if path belong to this mount
diff --git a/oak-core-spi/src/main/java/org/apache/jackrabbit/oak/spi/mount/MountInfoProvider.java b/oak-core-spi/src/main/java/org/apache/jackrabbit/oak/spi/mount/MountInfoProvider.java
index e83fcbb0e5..6dbedc17a9 100644
--- a/oak-core-spi/src/main/java/org/apache/jackrabbit/oak/spi/mount/MountInfoProvider.java
+++ b/oak-core-spi/src/main/java/org/apache/jackrabbit/oak/spi/mount/MountInfoProvider.java
@@ -28,7 +28,7 @@ import org.osgi.annotation.versioning.ProviderType;
 /**
  * Holds information related to the {@link Mount}s configured in a {@code ContentRepository}.
  * 
- * <p>The configuration may either be trivial - only a default mount is configured, or defining at least one non-default mount.</p>
+ * <p>The configuration may either be trivial - only a default mount is configured, or defining at least one non-default mount.
  */
 @ProviderType
 public interface MountInfoProvider {
diff --git a/oak-core/src/main/java/org/apache/jackrabbit/oak/Oak.java b/oak-core/src/main/java/org/apache/jackrabbit/oak/Oak.java
index d1c96fc0a9..b1eb93ec9b 100644
--- a/oak-core/src/main/java/org/apache/jackrabbit/oak/Oak.java
+++ b/oak-core/src/main/java/org/apache/jackrabbit/oak/Oak.java
@@ -602,12 +602,10 @@ public class Oak {
     /**
      * <p>
      * Enable the asynchronous (background) indexing behavior.
-     * </p>
      * <p>
      * Please note that when enabling the background indexer, you need to take
      * care of calling
      * <code>#shutdown</code> on the <code>executor</code> provided for this Oak instance.
-     * </p>
      * @deprecated Use {@link Oak#withAsyncIndexing(String, long)} instead
      */
     @Deprecated
@@ -652,12 +650,10 @@ public class Oak {
      * <p>
      * Enable the asynchronous (background) indexing behavior for the provided
      * task name.
-     * </p>
      * <p>
      * Please note that when enabling the background indexer, you need to take
      * care of calling
      * <code>#shutdown</code> on the <code>executor</code> provided for this Oak instance.
-     * </p>
      */
     public Oak withAsyncIndexing(@NotNull String name, long delayInSeconds) {
         if (this.asyncTasks == null) {
diff --git a/oak-core/src/main/java/org/apache/jackrabbit/oak/plugins/atomic/AtomicCounterEditor.java b/oak-core/src/main/java/org/apache/jackrabbit/oak/plugins/atomic/AtomicCounterEditor.java
index 3bab8ee600..89e7ae3cac 100644
--- a/oak-core/src/main/java/org/apache/jackrabbit/oak/plugins/atomic/AtomicCounterEditor.java
+++ b/oak-core/src/main/java/org/apache/jackrabbit/oak/plugins/atomic/AtomicCounterEditor.java
@@ -59,7 +59,6 @@ import org.slf4j.LoggerFactory;
  * Manages a node as <em>Atomic Counter</em>: a node which will handle at low level a protected
  * property ({@link #PROP_COUNTER}) in an atomic way. This will represent an increment or decrement
  * of a counter in the case, for example, of <em>Likes</em> or <em>Voting</em>.
- * </p>
  * 
  * <p>
  * Whenever you add a {@link NodeTypeConstants#MIX_ATOMIC_COUNTER} mixin to a node it will turn it
@@ -67,11 +66,9 @@ import org.slf4j.LoggerFactory;
  * you'll need to set the {@code oak:increment} one ({@link #PROP_INCREMENT}). Please note that the
  * <strong>{@code oak:incremement} will never be saved</strong>, only the {@code oak:counter} will
  * be amended accordingly.
- * </p>
  * 
  * <p>
  * So in order to deal with the counter from a JCR point of view you'll do something as follows
- * </p>
  * 
  * <pre>
  *  Session session = ...
@@ -107,25 +104,21 @@ import org.slf4j.LoggerFactory;
  * The related jira ticket is <a href="https://issues.apache.org/jira/browse/OAK-2472">OAK-2472</a>.
  * In a nutshell when you save an {@code oak:increment} behind the scene it takes its value and
  * increment an internal counter. There will be an individual counter for each cluster node.
- * </p>
  * 
  * <p>
  * Then it will consolidate all the internal counters into a single one: {@code oak:counter}. The
  * consolidation process can happen either synchronously or asynchronously. Refer to
  * {@link #AtomicCounterEditor(NodeBuilder, String, ScheduledExecutorService, NodeStore, Whiteboard)}
  * for details on when it consolidate one way or the other.
- * </p>
  * 
  * <p>
  * <strong>synchronous</strong>. It means the consolidation, sum of all the internal counters, will
  * happen in the same thread. During the lifecycle of the same commit.
- * </p>
  * 
  * <p>
  * <strong>asynchronous</strong>. It means the internal counters will be set during the same commit;
  * but it will eventually schedule a separate thread in which will retry some times to consolidate
  * them.
- * </p>
  */
 public class AtomicCounterEditor extends DefaultEditor {
     /**
@@ -175,14 +168,12 @@ public class AtomicCounterEditor extends DefaultEditor {
      * <p>
      * Create an instance of the editor for atomic increments. It can works synchronously as well as
      * asynchronously. See class javadoc for details around it.
-     * </p>
      * <p>
      * If {@code instanceId} OR {@code executor} OR {@code store} OR {@code board} are null, the
      * editor will switch to synchronous behaviour for consolidation. If no {@link CommitHook} will
      * be found in the whiteboard, a {@link EmptyHook} will be provided to the {@link NodeStore} for
      * merging.
-     * </p>
-     * 
+     *
      * @param builder the build on which to work. Cannot be null.
      * @param instanceId the current Oak instance Id. If null editor will be synchronous.
      * @param executor the current Oak executor service. If null editor will be synchronous.
@@ -239,15 +230,13 @@ public class AtomicCounterEditor extends DefaultEditor {
      * <p>
      * consolidate the {@link #PREFIX_PROP_COUNTER} properties and sum them into the
      * {@link #PROP_COUNTER}
-     * </p>
-     * 
+     *
      * <p>
      * The passed in {@code NodeBuilder} must have
      * {@link org.apache.jackrabbit.JcrConstants#JCR_MIXINTYPES JCR_MIXINTYPES} with
      * {@link NodeTypeConstants#MIX_ATOMIC_COUNTER MIX_ATOMIC_COUNTER}.
      * If not it will be silently ignored.
-     * </p>
-     * 
+     *
      * @param builder the builder to work on. Cannot be null.
      */
     public static void consolidateCount(@NotNull final NodeBuilder builder) {
diff --git a/oak-core/src/main/java/org/apache/jackrabbit/oak/plugins/atomic/AtomicCounterEditorProvider.java b/oak-core/src/main/java/org/apache/jackrabbit/oak/plugins/atomic/AtomicCounterEditorProvider.java
index 7018107be2..ec94551d86 100644
--- a/oak-core/src/main/java/org/apache/jackrabbit/oak/plugins/atomic/AtomicCounterEditorProvider.java
+++ b/oak-core/src/main/java/org/apache/jackrabbit/oak/plugins/atomic/AtomicCounterEditorProvider.java
@@ -105,13 +105,11 @@ public class AtomicCounterEditorProvider implements EditorProvider {
      * Plain Java oriented constructor. Refer to
      * {@link AtomicCounterEditor#AtomicCounterEditor(NodeBuilder, String, ScheduledExecutorService, NodeStore, Whiteboard)}
      * for constructions details of the actual editor.
-     * </p>
-     * 
+     *
      * <p>
      * Based on the use case this may need an already set of the constructor parameters during the
      * repository construction. Please ensure they're registered before this provider is registered.
-     * </p>
-     * 
+     *
      * @param clusterInfo cluster node information
      * @param executor the executor for running asynchronously.
      * @param store reference to the NodeStore.
diff --git a/oak-core/src/main/java/org/apache/jackrabbit/oak/plugins/cow/COWNodeStore.java b/oak-core/src/main/java/org/apache/jackrabbit/oak/plugins/cow/COWNodeStore.java
index 815cb3c083..66d4b1be9b 100644
--- a/oak-core/src/main/java/org/apache/jackrabbit/oak/plugins/cow/COWNodeStore.java
+++ b/oak-core/src/main/java/org/apache/jackrabbit/oak/plugins/cow/COWNodeStore.java
@@ -39,27 +39,27 @@ import java.util.concurrent.CopyOnWriteArrayList;
  * <p>The copy-on-write (COW) node store implementation allows to temporarily
  * switch the repository into the "testing" mode, in which all the changes are
  * stored in a volatile storage, namely the MemoryNodeStore. After switching
- * back to the "production" mode, the test changes should be dropped.</p>
+ * back to the "production" mode, the test changes should be dropped.
  *
  * <p>If the CoW is enabled, a special :cow=true property will be set on the
  * root node returned by getRoot(). It's being used in the merge() to decide
  * which store be modified. Removing this property will result in merging
- * changes to the main node store, even in the CoW mode.</p>
+ * changes to the main node store, even in the CoW mode.
  *
  * <p>The checkpoint support is provided by the {@link BranchNodeStore} class.
  * All the existing checkpoints are still available in the CoW mode (until they
- * expire). New checkpoints are only created in the MemoryNodeStore.</p>
+ * expire). New checkpoints are only created in the MemoryNodeStore.
  *
- * <p>Known limitations:</p>
+ * <p>Known limitations:
  *
  * <ul>
  *     <li>turning the CoW mode on and off requires cleaning up the
  *     <a href="https://jackrabbit.apache.org/oak/docs/query/lucene.html#copy-on-read">lucene
- *     indexing cache</a>,</li>
+ *     indexing cache</a>,
  *     <li>switching the CoW mode may result in repository inconsistencies
- *     (eg. if two merges belongs to the same logical commit sequence),</li>
+ *     (eg. if two merges belongs to the same logical commit sequence),
  *     <li>in the CoW mode the changes are stored in MemoryNodeStore, so it
- *     shouldn't be enabled for too long (otherwise it may exhaust the heap).</li>
+ *     shouldn't be enabled for too long (otherwise it may exhaust the heap).
  * </ul>
  */
 public class COWNodeStore implements NodeStore, Observable {
diff --git a/oak-core/src/main/java/org/apache/jackrabbit/oak/plugins/index/IndexEditorProvider.java b/oak-core/src/main/java/org/apache/jackrabbit/oak/plugins/index/IndexEditorProvider.java
index 9705f8e95a..b68897fc0d 100644
--- a/oak-core/src/main/java/org/apache/jackrabbit/oak/plugins/index/IndexEditorProvider.java
+++ b/oak-core/src/main/java/org/apache/jackrabbit/oak/plugins/index/IndexEditorProvider.java
@@ -40,13 +40,11 @@ public interface IndexEditorProvider extends AutoCloseable {
      * <p>
      * The {@code definition} builder must points to the index definition
      * node under which the indexer is expected to store the index content.
-     * </p>
      *
      * <p>
      * The <code>callback</code> instance may be of type {@link ContextAwareCallback}
      * and that can be used to access {@link IndexingContext}
-     * </p>
-     * 
+     *
      * @param type  index type
      * @param definition index definition node builder, used for updates
      * @param root root node state, used for things like node type information
diff --git a/oak-core/src/main/java/org/apache/jackrabbit/oak/plugins/index/IndexUpdate.java b/oak-core/src/main/java/org/apache/jackrabbit/oak/plugins/index/IndexUpdate.java
index d56a4ad5ba..e33bfe9eff 100644
--- a/oak-core/src/main/java/org/apache/jackrabbit/oak/plugins/index/IndexUpdate.java
+++ b/oak-core/src/main/java/org/apache/jackrabbit/oak/plugins/index/IndexUpdate.java
@@ -88,20 +88,16 @@ public class IndexUpdate implements Editor, PathSource {
      * <p>
      * The value of this flag determines the behavior of the IndexUpdate when
      * dealing with {@code reindex} flags.
-     * </p>
      * <p>
      * If {@code false} (default value), the indexer will start reindexing
      * immediately in the current thread, blocking a commit until this operation
      * is done.
-     * </p>
      * <p>
      * If {@code true}, the indexer will ignore the flag, therefore ignoring any
      * reindex requests.
-     * </p>
      * <p>
      * This is only provided as a support tool (see OAK-3505) so it should be
      * used with extreme caution!
-     * </p>
      */
     static final boolean IGNORE_REINDEX_FLAGS = Boolean
             .getBoolean("oak.indexUpdate.ignoreReindexFlags");
diff --git a/oak-core/src/main/java/org/apache/jackrabbit/oak/plugins/index/MetricsUtils.java b/oak-core/src/main/java/org/apache/jackrabbit/oak/plugins/index/MetricsUtils.java
index f4d2f17808..462d54ec5c 100644
--- a/oak-core/src/main/java/org/apache/jackrabbit/oak/plugins/index/MetricsUtils.java
+++ b/oak-core/src/main/java/org/apache/jackrabbit/oak/plugins/index/MetricsUtils.java
@@ -29,13 +29,12 @@ public class MetricsUtils {
 
     /**
      * <p>Set a counter metric to the given value. The previous value of the metric is discarded and replaced by the
-     * given value.</p>
+     * given value.
      * <p>
      * Note that this method is to support a non-standard use case of the counter metrics.
      * Normally counters are incremented periodically to keep track of how many times an event occurred. This method
      * instead is intended to be called only once for a given metric, to provide the final value of the metrics. If
      * called more than once for the same metric, it will log a warning and discard the old value.
-     * </p>
      *
      * @param statisticsProvider The statistics provider to use.
      * @param name               The name of the counter to set.
diff --git a/oak-core/src/main/java/org/apache/jackrabbit/oak/plugins/index/datastore/DataStoreTextWriter.java b/oak-core/src/main/java/org/apache/jackrabbit/oak/plugins/index/datastore/DataStoreTextWriter.java
index b9ea2643a6..ba64e898a7 100644
--- a/oak-core/src/main/java/org/apache/jackrabbit/oak/plugins/index/datastore/DataStoreTextWriter.java
+++ b/oak-core/src/main/java/org/apache/jackrabbit/oak/plugins/index/datastore/DataStoreTextWriter.java
@@ -182,7 +182,7 @@ public class DataStoreTextWriter implements TextWriter, Closeable, PreExtractedT
     /**
      * Returns the identified file. This method implements the pattern
      * used to avoid problems with too many files in a single directory.
-     * <p/>
+     * <p>
      * No sanity checks are performed on the given identifier.
      *
      * @param identifier file name
diff --git a/oak-core/src/main/java/org/apache/jackrabbit/oak/plugins/index/property/PropertyIndex.java b/oak-core/src/main/java/org/apache/jackrabbit/oak/plugins/index/property/PropertyIndex.java
index cf9b5b47a4..5a54ed4ac8 100644
--- a/oak-core/src/main/java/org/apache/jackrabbit/oak/plugins/index/property/PropertyIndex.java
+++ b/oak-core/src/main/java/org/apache/jackrabbit/oak/plugins/index/property/PropertyIndex.java
@@ -45,25 +45,22 @@ import org.slf4j.LoggerFactory;
  * <br>
  * Next (as a child node) follows the index definition node that:
  * <ul>
- * <li>must be of type <code>oak:QueryIndexDefinition</code></li>
- * <li>must have the <code>type</code> property set to <b><code>property</code></b></li>
- * <li>contains the <code>propertyNames</code> property that indicates what property will be stored in the index</li>
+ * <li>must be of type <code>oak:QueryIndexDefinition</code>
+ * <li>must have the <code>type</code> property set to <b><code>property</code></b>
+ * <li>contains the <code>propertyNames</code> property that indicates what property will be stored in the index
  * </ul>
- * </p>
  * <p>
  * Optionally you can specify
  * <ul> 
- * <li> a uniqueness constraint on a property index by setting the <code>unique</code> flag to <code>true</code></li>
- * <li> that the property index only applies to a certain node type by setting the <code>declaringNodeTypes</code> property</li>
+ * <li> a uniqueness constraint on a property index by setting the <code>unique</code> flag to <code>true</code>
+ * <li> that the property index only applies to a certain node type by setting the <code>declaringNodeTypes</code> property
  * </ul>
- * </p>
  * <p>
  * Notes:
  * <ul>
- * <li> <code>propertyNames</code> can be a list of properties, and it is optional.in case it is missing, the node name will be used as a property name reference value</li>
- * <li> <code>reindex</code> is a property that when set to <code>true</code>, triggers a full content reindex.</li>
+ * <li> <code>propertyNames</code> can be a list of properties, and it is optional.in case it is missing, the node name will be used as a property name reference value
+ * <li> <code>reindex</code> is a property that when set to <code>true</code>, triggers a full content reindex.
  * </ul>
- * </p>
  * 
  * <pre>
  * <code>
diff --git a/oak-core/src/main/java/org/apache/jackrabbit/oak/plugins/index/property/strategy/UniqueEntryStoreStrategy.java b/oak-core/src/main/java/org/apache/jackrabbit/oak/plugins/index/property/strategy/UniqueEntryStoreStrategy.java
index 0f07e84eab..3176a20f32 100644
--- a/oak-core/src/main/java/org/apache/jackrabbit/oak/plugins/index/property/strategy/UniqueEntryStoreStrategy.java
+++ b/oak-core/src/main/java/org/apache/jackrabbit/oak/plugins/index/property/strategy/UniqueEntryStoreStrategy.java
@@ -266,7 +266,7 @@ public class UniqueEntryStoreStrategy implements IndexStoreStrategy {
     /**
      * Creates a specific type of "hit" to return from the query methods
      * 
-     * <p>Use primarily to reduce duplication when the query algorithms execute mostly the same steps but return different objects.</p>
+     * <p>Use primarily to reduce duplication when the query algorithms execute mostly the same steps but return different objects.
      * 
      * @param <T> The type of Hit to produce
      */
diff --git a/oak-core/src/main/java/org/apache/jackrabbit/oak/plugins/migration/FilteringNodeState.java b/oak-core/src/main/java/org/apache/jackrabbit/oak/plugins/migration/FilteringNodeState.java
index 532a9566f7..0b819635b3 100644
--- a/oak-core/src/main/java/org/apache/jackrabbit/oak/plugins/migration/FilteringNodeState.java
+++ b/oak-core/src/main/java/org/apache/jackrabbit/oak/plugins/migration/FilteringNodeState.java
@@ -44,9 +44,9 @@ import java.util.Set;
  * The implementation delegates to the decorated node-state instance and
  * filters out hidden node-states in the following methods:
  * <ul>
- *     <li>{@link #exists()}</li>
- *     <li>{@link #hasChildNode(String)}</li>
- *     <li>{@link #getChildNodeEntries()}</li>
+ *     <li>{@link #exists()}
+ *     <li>{@link #hasChildNode(String)}
+ *     <li>{@link #getChildNodeEntries()}
  * </ul>
  * When <b>referenceableFrozenNodes</b> is set to {@code false}, then the
  * implementation will hide the {@code jcr:uuid} property on
@@ -55,8 +55,8 @@ import java.util.Set;
  * Additionally, hidden node-state names are removed from the property
  * {@code :childOrder} in the following two methods:
  * <ul>
- *     <li>{@link #getProperties()}</li>
- *     <li>{@link #getProperty(String)}</li>
+ *     <li>{@link #getProperties()}
+ *     <li>{@link #getProperty(String)}
  * </ul>
  */
 public class FilteringNodeState extends AbstractDecoratedNodeState {
diff --git a/oak-core/src/main/java/org/apache/jackrabbit/oak/plugins/migration/version/VersionableEditor.java b/oak-core/src/main/java/org/apache/jackrabbit/oak/plugins/migration/version/VersionableEditor.java
index c39ec939c4..eb4526c415 100644
--- a/oak-core/src/main/java/org/apache/jackrabbit/oak/plugins/migration/version/VersionableEditor.java
+++ b/oak-core/src/main/java/org/apache/jackrabbit/oak/plugins/migration/version/VersionableEditor.java
@@ -47,12 +47,11 @@ import static org.apache.jackrabbit.oak.plugins.migration.version.VersionHistory
  * The VersionableEditor provides two possible ways to handle
  * versionable nodes:
  * <ul>
- *     <li>it can copy the version histories of versionable nodes, or</li>
+ *     <li>it can copy the version histories of versionable nodes, or
  *     <li>
  *         it can skip copying version histories and remove the
  *         {@code mix:versionable} mixin together with any related
  *         properties (see {@link VersionHistoryUtil#removeVersionProperties(NodeBuilder, TypePredicate)}).
- *     </li>
  * </ul>
  */
 public class VersionableEditor extends DefaultEditor {
diff --git a/oak-core/src/main/java/org/apache/jackrabbit/oak/plugins/nodetype/TypeEditor.java b/oak-core/src/main/java/org/apache/jackrabbit/oak/plugins/nodetype/TypeEditor.java
index 67bd38c366..f5d3b3cbc9 100644
--- a/oak-core/src/main/java/org/apache/jackrabbit/oak/plugins/nodetype/TypeEditor.java
+++ b/oak-core/src/main/java/org/apache/jackrabbit/oak/plugins/nodetype/TypeEditor.java
@@ -84,9 +84,9 @@ public class TypeEditor extends DefaultEditor {
          * Invoked whenever a constraint violation is detected.
          * 
          * <p>Implementors may choose to throw a {@link org.apache.jackrabbit.oak.api.CommitFailedException} or to handle the error
-         * internally, for instance by logging.</p>
+         * internally, for instance by logging.
          * 
-         * <p>Implementors may <b>not</b> throw other exception types from this method.</p>
+         * <p>Implementors may <b>not</b> throw other exception types from this method.
          * 
          * @param path the path where the constraint violation was detected
          * @param nodeTypeNames the node type names of the node
diff --git a/oak-core/src/main/java/org/apache/jackrabbit/oak/plugins/nodetype/TypeRegistration.java b/oak-core/src/main/java/org/apache/jackrabbit/oak/plugins/nodetype/TypeRegistration.java
index 4dac742c0d..8c12be7acb 100644
--- a/oak-core/src/main/java/org/apache/jackrabbit/oak/plugins/nodetype/TypeRegistration.java
+++ b/oak-core/src/main/java/org/apache/jackrabbit/oak/plugins/nodetype/TypeRegistration.java
@@ -82,11 +82,11 @@ import org.apache.jackrabbit.oak.spi.state.NodeState;
  * defined in {@code rep:NodeType}.
  *
  * <ul>
- *   <li>validate new definitions,</li>
- *   <li>detect collisions,</li>
- *   <li>prevent circular inheritance,</li>
- *   <li>reject modifications to definitions that render existing content invalid,</li>
- *   <li>etc.</li>
+ *   <li>validate new definitions,
+ *   <li>detect collisions,
+ *   <li>prevent circular inheritance,
+ *   <li>reject modifications to definitions that render existing content invalid,
+ *   <li>etc.
  * </ul>
  */
 class TypeRegistration extends DefaultNodeStateDiff {
diff --git a/oak-core/src/main/java/org/apache/jackrabbit/oak/plugins/nodetype/write/ReadWriteNodeTypeManager.java b/oak-core/src/main/java/org/apache/jackrabbit/oak/plugins/nodetype/write/ReadWriteNodeTypeManager.java
index 54617b1afa..881cc6566a 100644
--- a/oak-core/src/main/java/org/apache/jackrabbit/oak/plugins/nodetype/write/ReadWriteNodeTypeManager.java
+++ b/oak-core/src/main/java/org/apache/jackrabbit/oak/plugins/nodetype/write/ReadWriteNodeTypeManager.java
@@ -44,11 +44,11 @@ import static org.apache.jackrabbit.oak.spi.nodetype.NodeTypeConstants.NODE_TYPE
  * {@code ReadWriteNodeTypeManager} extends the {@link ReadOnlyNodeTypeManager}
  * with support for operations that modify node types.
  * <ul>
- * <li>{@link #registerNodeType(NodeTypeDefinition, boolean)}</li>
- * <li>{@link #registerNodeTypes(NodeTypeDefinition[], boolean)}</li>
- * <li>{@link #unregisterNodeType(String)}</li>
- * <li>{@link #unregisterNodeTypes(String[])}</li>
- * <li>plus related template factory methods</li>
+ * <li>{@link #registerNodeType(NodeTypeDefinition, boolean)}
+ * <li>{@link #registerNodeTypes(NodeTypeDefinition[], boolean)}
+ * <li>{@link #unregisterNodeType(String)}
+ * <li>{@link #unregisterNodeTypes(String[])}
+ * <li>plus related template factory methods
  * </ul>
  * Calling any of the above methods will result in a {@link #refresh()} callback
  * to e.g. inform an associated session that it should refresh to make the
@@ -61,8 +61,8 @@ import static org.apache.jackrabbit.oak.spi.nodetype.NodeTypeConstants.NODE_TYPE
  * also want to override the default implementation of
  * {@link ReadOnlyNodeTypeManager} for the following methods:
  * <ul>
- * <li>{@link #getValueFactory()}</li>
- * <li>{@link ReadOnlyNodeTypeManager#getNamePathMapper()}</li>
+ * <li>{@link #getValueFactory()}
+ * <li>{@link ReadOnlyNodeTypeManager#getNamePathMapper()}
  * </ul>
  */
 public abstract class ReadWriteNodeTypeManager extends ReadOnlyNodeTypeManager {
diff --git a/oak-core/src/main/java/org/apache/jackrabbit/oak/plugins/tree/impl/ImmutableTree.java b/oak-core/src/main/java/org/apache/jackrabbit/oak/plugins/tree/impl/ImmutableTree.java
index 8cd6270959..6e5a2cc056 100644
--- a/oak-core/src/main/java/org/apache/jackrabbit/oak/plugins/tree/impl/ImmutableTree.java
+++ b/oak-core/src/main/java/org/apache/jackrabbit/oak/plugins/tree/impl/ImmutableTree.java
@@ -58,11 +58,11 @@ import org.jetbrains.annotations.Nullable;
  *
  * <ul>
  *     <li>{@link DefaultParentProvider}: used with the default usage where the
- *     parent tree is passed to the constructor</li>
+ *     parent tree is passed to the constructor
  *     <li>{@link ParentProvider#ROOT_PROVIDER}: the default parent provider for
- *     the root tree. All children will get {@link DefaultParentProvider}</li>
+ *     the root tree. All children will get {@link DefaultParentProvider}
  *     <li>{@link ParentProvider#UNSUPPORTED}: throws {@code UnsupportedOperationException}
- *     upon hierarchy related methods like {@link #getParent()}, {@link #getPath()}</li>
+ *     upon hierarchy related methods like {@link #getParent()}, {@link #getPath()}
  * </ul>
  *
  * <h3>Filtering 'hidden' items</h3>
diff --git a/oak-core/src/main/java/org/apache/jackrabbit/oak/plugins/version/VersionHook.java b/oak-core/src/main/java/org/apache/jackrabbit/oak/plugins/version/VersionHook.java
index 00efacacd2..be42d7ec91 100644
--- a/oak-core/src/main/java/org/apache/jackrabbit/oak/plugins/version/VersionHook.java
+++ b/oak-core/src/main/java/org/apache/jackrabbit/oak/plugins/version/VersionHook.java
@@ -45,21 +45,16 @@ import static org.apache.jackrabbit.oak.spi.commit.CompositeHook.compose;
  *                 {@link VersionEditor} - creates version history, handles
  *                 checking-in, checking-out and restoring, prevents a
  *                 checked-in node from being modified,
- *             </li>
  *             <li>
  *                 {@link VersionStorageEditor} - validates changes on the
  *                 version storage,
- *             </li>
  *         </ul>
- *     </li>
  *     <li>
  *         {@link VersionableCollector} - collects all existing versionable
  *         UUIDs, so assigned histories won't be removed in the next step,
- *     </li>
  *     <li>
  *         {@link OrphanedVersionCleaner} - removes all histories that are
  *         empty and have no longer a parent versionable node.
- *     </li>
  * </ol>
  *
  */
diff --git a/oak-core/src/main/java/org/apache/jackrabbit/oak/plugins/version/VersionableState.java b/oak-core/src/main/java/org/apache/jackrabbit/oak/plugins/version/VersionableState.java
index 39d0174b48..86d72d2465 100644
--- a/oak-core/src/main/java/org/apache/jackrabbit/oak/plugins/version/VersionableState.java
+++ b/oak-core/src/main/java/org/apache/jackrabbit/oak/plugins/version/VersionableState.java
@@ -84,7 +84,6 @@ import org.slf4j.LoggerFactory;
  * flag. It is expected that this is handled on a higher level. If this is not
  * done the uniqueness constraint on the jcr:uuid will kick in and fail the
  * commit.
- * </p>
  */
 class VersionableState {
 
diff --git a/oak-core/src/main/java/org/apache/jackrabbit/oak/query/Query.java b/oak-core/src/main/java/org/apache/jackrabbit/oak/query/Query.java
index 1e96665ca1..af8dc62262 100644
--- a/oak-core/src/main/java/org/apache/jackrabbit/oak/query/Query.java
+++ b/oak-core/src/main/java/org/apache/jackrabbit/oak/query/Query.java
@@ -150,11 +150,9 @@ public interface Query {
      * returns a clone of the current object. Will throw an exception in case it's invoked in a non
      * appropriate moment. For example the default {@link QueryImpl} cannot be cloned once the
      * {@link #init()} has been executed.
-     * </p>
-     * 
+     *
      * <p>
      * <strong>May return null if not implemented.</strong>
-     * </p>
      * @return a clone of self
      * @throws IllegalStateException
      */
diff --git a/oak-core/src/main/java/org/apache/jackrabbit/oak/query/ast/AstElementFactory.java b/oak-core/src/main/java/org/apache/jackrabbit/oak/query/ast/AstElementFactory.java
index d99888762b..91510974f1 100644
--- a/oak-core/src/main/java/org/apache/jackrabbit/oak/query/ast/AstElementFactory.java
+++ b/oak-core/src/main/java/org/apache/jackrabbit/oak/query/ast/AstElementFactory.java
@@ -192,8 +192,7 @@ public class AstElementFactory {
      * as the {@link AstElement#copyOf()} can return {@code this} is the cloning is not implemented
      * by the subclass, this method add some spice around it by checking for this case and tracking
      * a DEBUG message in the logs.
-     * </p>
-     * 
+     *
      * @param e the element to be cloned. Cannot be null.
      * @return same as {@link AstElement#copyOf()}
      */
diff --git a/oak-core/src/main/java/org/apache/jackrabbit/oak/security/authentication/AuthenticationConfigurationImpl.java b/oak-core/src/main/java/org/apache/jackrabbit/oak/security/authentication/AuthenticationConfigurationImpl.java
index 416cc65714..a9ddb40a44 100644
--- a/oak-core/src/main/java/org/apache/jackrabbit/oak/security/authentication/AuthenticationConfigurationImpl.java
+++ b/oak-core/src/main/java/org/apache/jackrabbit/oak/security/authentication/AuthenticationConfigurationImpl.java
@@ -49,7 +49,7 @@ import java.util.Map;
  * <li>
  *     {@link LoginContextProvider}: Returns the default implementation of
  *     {@code LoginContextProvider} that handles standard JAAS based logins and
- *     deals with pre-authenticated subjects.</li>
+ *     deals with pre-authenticated subjects.
  * </ul>
  *
  */
diff --git a/oak-core/src/main/java/org/apache/jackrabbit/oak/security/authentication/CallbackHandlerImpl.java b/oak-core/src/main/java/org/apache/jackrabbit/oak/security/authentication/CallbackHandlerImpl.java
index 5d80d7e60f..1fe49d0567 100644
--- a/oak-core/src/main/java/org/apache/jackrabbit/oak/security/authentication/CallbackHandlerImpl.java
+++ b/oak-core/src/main/java/org/apache/jackrabbit/oak/security/authentication/CallbackHandlerImpl.java
@@ -38,10 +38,10 @@ import org.jetbrains.annotations.Nullable;
  * supports the following {@code Callback} implementations:
  * <p>
  * <ul>
- * <li>{@link CredentialsCallback}</li>
- * <li>{@link NameCallback}</li>
- * <li>{@link PasswordCallback}</li>
- * <li>{@link RepositoryCallback}</li>
+ * <li>{@link CredentialsCallback}
+ * <li>{@link NameCallback}
+ * <li>{@link PasswordCallback}
+ * <li>{@link RepositoryCallback}
  * </ul>
  */
 class CallbackHandlerImpl implements CallbackHandler {
diff --git a/oak-core/src/main/java/org/apache/jackrabbit/oak/security/authentication/token/TokenLoginModule.java b/oak-core/src/main/java/org/apache/jackrabbit/oak/security/authentication/token/TokenLoginModule.java
index 840883b763..5d22201854 100644
--- a/oak-core/src/main/java/org/apache/jackrabbit/oak/security/authentication/token/TokenLoginModule.java
+++ b/oak-core/src/main/java/org/apache/jackrabbit/oak/security/authentication/token/TokenLoginModule.java
@@ -62,12 +62,12 @@ import org.slf4j.LoggerFactory;
  *
  * <ol>
  *     <li>Try to retrieve {@link TokenCredentials} credentials (see also
- *     {@link AbstractLoginModule#getCredentials()})</li>
+ *     {@link AbstractLoginModule#getCredentials()})
  *     <li>Validates the credentials based on the functionality provided by
- *     {@link TokenAuthentication#authenticate(javax.jcr.Credentials)}</li>
+ *     {@link TokenAuthentication#authenticate(javax.jcr.Credentials)}
  *     <li>Upon success it retrieves {@code userId} from the {@link org.apache.jackrabbit.oak.spi.security.authentication.token.TokenInfo}
- *     and calculates the principals associated with that user,</li>
- *     <li>and finally puts the credentials on the shared state.</li>
+ *     and calculates the principals associated with that user,
+ *     <li>and finally puts the credentials on the shared state.
  * </ol>
  *
  * If no {@code TokenProvider} has been configured {@link #login()} or if
diff --git a/oak-core/src/main/java/org/apache/jackrabbit/oak/security/authentication/user/LoginModuleImpl.java b/oak-core/src/main/java/org/apache/jackrabbit/oak/security/authentication/user/LoginModuleImpl.java
index 0330092c84..19cd97ba81 100644
--- a/oak-core/src/main/java/org/apache/jackrabbit/oak/security/authentication/user/LoginModuleImpl.java
+++ b/oak-core/src/main/java/org/apache/jackrabbit/oak/security/authentication/user/LoginModuleImpl.java
@@ -62,21 +62,21 @@ import java.util.stream.Stream;
  *
  * <ul>
  *     <li>{@code Credentials} as specified in {@link javax.jcr.Repository#login(javax.jcr.Credentials)}
- *     in which case they are retrieved from the {@code CallbackHandler}.</li>
+ *     in which case they are retrieved from the {@code CallbackHandler}.
  *     <li>A {@link #SHARED_KEY_CREDENTIALS} entry in the shared state. The
- *     expected value is a validated single {@code Credentials} object.</li>
+ *     expected value is a validated single {@code Credentials} object.
  *     <li>If neither of the above variants provides Credentials this module
  *     tries to obtain them from the subject. See also
- *     {@link javax.security.auth.Subject#getSubject(java.security.AccessControlContext)}</li>
+ *     {@link javax.security.auth.Subject#getSubject(java.security.AccessControlContext)}
  * </ul>
  *
  * This implementation of the {@code LoginModule} currently supports the following
  * types of JCR Credentials:
  *
  * <ul>
- *     <li>{@link SimpleCredentials}</li>
- *     <li>{@link GuestCredentials}</li>
- *     <li>{@link ImpersonationCredentials}</li>
+ *     <li>{@link SimpleCredentials}
+ *     <li>{@link GuestCredentials}
+ *     <li>{@link ImpersonationCredentials}
  * </ul>
  *
  * The {@link Credentials} obtained during the {@code #login()} are added to
diff --git a/oak-core/src/main/java/org/apache/jackrabbit/oak/security/authorization/AuthorizationInitializer.java b/oak-core/src/main/java/org/apache/jackrabbit/oak/security/authorization/AuthorizationInitializer.java
index c1bde4d1d4..e432b9584a 100644
--- a/oak-core/src/main/java/org/apache/jackrabbit/oak/security/authorization/AuthorizationInitializer.java
+++ b/oak-core/src/main/java/org/apache/jackrabbit/oak/security/authorization/AuthorizationInitializer.java
@@ -38,9 +38,9 @@ import static org.apache.jackrabbit.JcrConstants.JCR_SYSTEM;
  * <ul>
  *     <li>creates a property index definitions for
  *     {@link #REP_PRINCIPAL_NAME rep:principalName} properties defined with ACE
- *     nodes</li>
+ *     nodes
  *     <li>asserts that the permission store is setup and has dedicated entry for
- *     this workspace.</li>
+ *     this workspace.
  * </ul>.
  */
 class AuthorizationInitializer implements WorkspaceInitializer, AccessControlConstants, PermissionConstants {
diff --git a/oak-core/src/main/java/org/apache/jackrabbit/oak/security/authorization/composite/CompositeAuthorizationConfiguration.java b/oak-core/src/main/java/org/apache/jackrabbit/oak/security/authorization/composite/CompositeAuthorizationConfiguration.java
index ba8eea7bda..c32f4f2953 100644
--- a/oak-core/src/main/java/org/apache/jackrabbit/oak/security/authorization/composite/CompositeAuthorizationConfiguration.java
+++ b/oak-core/src/main/java/org/apache/jackrabbit/oak/security/authorization/composite/CompositeAuthorizationConfiguration.java
@@ -47,10 +47,10 @@ import org.slf4j.LoggerFactory;
  * <h2>AccessControlManager</h2>
  * <ul>
  *     <li>This method will return an aggregation of {@code AccessControlManager}s in case
- *     multiple {@code AuthorizationConfiguration}s are present (see {@code CompositeAccessControlManager}).</li>
+ *     multiple {@code AuthorizationConfiguration}s are present (see {@code CompositeAccessControlManager}).
  *     <li>If the composite only contains a single entry the {@code AccessControlManager}
- *     of this implementation is return without extra wrapping.</li>
- *     <li>If the list of configurations is empty an {@code IllegalStateException} is thrown.</li>
+ *     of this implementation is return without extra wrapping.
+ *     <li>If the list of configurations is empty an {@code IllegalStateException} is thrown.
  * </ul>
  *
  * <h2>PermissionProvider</h2>
@@ -59,10 +59,10 @@ import org.slf4j.LoggerFactory;
  *     multiple {@code AuthorizationConfiguration}s exposing an {@link AggregatedPermissionProvider}
  *     are present (see {@link CompositePermissionProvider}. Note however, that
  *     providers not implementing the {@code AggregatedPermissionProvider} extension
- *     will be ignored.</li>
+ *     will be ignored.
  *     <li>If the composite only contains a single entry the {@code PermissionProvider}
- *     of this implementation is return without extra wrapping.</li>
- *     <li>If the list of configurations is empty an {@code IllegalStateException} is thrown.</li>
+ *     of this implementation is return without extra wrapping.
+ *     <li>If the list of configurations is empty an {@code IllegalStateException} is thrown.
  * </ul>
  *
  * <h2>RestrictionProvider</h2>
diff --git a/oak-core/src/main/java/org/apache/jackrabbit/oak/security/authorization/restriction/GlobPattern.java b/oak-core/src/main/java/org/apache/jackrabbit/oak/security/authorization/restriction/GlobPattern.java
index 1ddcc0a781..b64e881d89 100644
--- a/oak-core/src/main/java/org/apache/jackrabbit/oak/security/authorization/restriction/GlobPattern.java
+++ b/oak-core/src/main/java/org/apache/jackrabbit/oak/security/authorization/restriction/GlobPattern.java
@@ -46,7 +46,6 @@ import static java.util.Objects.requireNonNull;
  * /foo         |   null          |   matches /foo and all descendants of /foo
  * /foo         |   ""            |   matches /foo only (no descendants, not even properties)
  * </pre>
- * </p>
  *
  * <p>
  * Examples without wildcard char:
@@ -59,7 +58,6 @@ import static java.util.Objects.requireNonNull;
  * cat           |   '/foocat' and all it's descendants
  * cat/          |   all descendants of '/foocat'
  * </pre>
- * </p>
  *
  * <p>
  * Examples including wildcard char:
@@ -78,7 +76,6 @@ import static java.util.Objects.requireNonNull;
  * &#42;cat/&#42;    |   all siblings and descendants of foo that have an intermediate segment ending with 'cat'
  * /&#42;cat/&#42;   |   all descendants of /foo that have an intermediate segment ending with 'cat'
  * </pre>
- * </p>
  */
 final class GlobPattern implements RestrictionPattern {
 
diff --git a/oak-core/src/main/java/org/apache/jackrabbit/oak/security/authorization/restriction/GlobsPattern.java b/oak-core/src/main/java/org/apache/jackrabbit/oak/security/authorization/restriction/GlobsPattern.java
index 5574737214..e7c0d3249f 100644
--- a/oak-core/src/main/java/org/apache/jackrabbit/oak/security/authorization/restriction/GlobsPattern.java
+++ b/oak-core/src/main/java/org/apache/jackrabbit/oak/security/authorization/restriction/GlobsPattern.java
@@ -30,10 +30,10 @@ import java.util.Arrays;
 /**
  * <p>Multi-valued variant of the {@link GlobPattern} that will match a given path (or tree/property) if any of the 
  * contained patterns matches. This is equivalent to creating multiple access control entries with a single rep:glob
- * restrictions each.</p>
+ * restrictions each.
  * 
- * <p>NOTE: An empty value array will not match any path/item</p>
- * <p>NOTE: Currently the pattern keeps a list of {@link GlobPattern} and doesn't attempt to optimize the evaluation.</p>
+ * <p>NOTE: An empty value array will not match any path/item
+ * <p>NOTE: Currently the pattern keeps a list of {@link GlobPattern} and doesn't attempt to optimize the evaluation.
  * 
  * @see GlobPattern GlobPattern for details
  */
diff --git a/oak-core/src/main/java/org/apache/jackrabbit/oak/security/authorization/restriction/PrefixPattern.java b/oak-core/src/main/java/org/apache/jackrabbit/oak/security/authorization/restriction/PrefixPattern.java
index 368e6db869..9ffad142b2 100644
--- a/oak-core/src/main/java/org/apache/jackrabbit/oak/security/authorization/restriction/PrefixPattern.java
+++ b/oak-core/src/main/java/org/apache/jackrabbit/oak/security/authorization/restriction/PrefixPattern.java
@@ -32,7 +32,7 @@ import org.jetbrains.annotations.Nullable;
  * {@link org.apache.jackrabbit.oak.spi.security.authorization.restriction.RestrictionPattern}
  * interface that returns {@code true} if the name of the target property or tree
  * starts with any of the configured namespace prefixes.
- * </p>s
+ * <p>
  * Note: an empty string prefix will match qualified item names defined with the 
  * {@link javax.jcr.NamespaceRegistry#NAMESPACE_EMPTY empty namespace}. 
  * See also sections 
diff --git a/oak-core/src/main/java/org/apache/jackrabbit/oak/security/authorization/restriction/RestrictionProviderImpl.java b/oak-core/src/main/java/org/apache/jackrabbit/oak/security/authorization/restriction/RestrictionProviderImpl.java
index 9717f6f9ab..b17fd1d39d 100644
--- a/oak-core/src/main/java/org/apache/jackrabbit/oak/security/authorization/restriction/RestrictionProviderImpl.java
+++ b/oak-core/src/main/java/org/apache/jackrabbit/oak/security/authorization/restriction/RestrictionProviderImpl.java
@@ -48,14 +48,14 @@ import org.slf4j.LoggerFactory;
  *
  * <ul>
  *     <li>{@link #REP_GLOB}: A simple paths matching pattern. See {@link GlobPattern}
- *     for details.</li>
+ *     for details.
  *     <li>{@link #REP_NT_NAMES}: A restriction that allows to limit the effect
  *     of a given access control entries to JCR nodes of any of the specified
  *     primary node type. In case of a JCR property the primary type of the
- *     parent node is taken into consideration when evaluating the permissions.</li>
+ *     parent node is taken into consideration when evaluating the permissions.
  *     <li>{@link #REP_PREFIXES}: A multivalued access control restriction
  *     which matches by name space prefix. The corresponding restriction type
- *     is {@link org.apache.jackrabbit.oak.api.Type#STRINGS}.</li>
+ *     is {@link org.apache.jackrabbit.oak.api.Type#STRINGS}.
  * </ul>
  */
 @Component(
diff --git a/oak-core/src/main/java/org/apache/jackrabbit/oak/security/internal/Preconditions.java b/oak-core/src/main/java/org/apache/jackrabbit/oak/security/internal/Preconditions.java
index a8d1914e4f..7d17f74d5b 100644
--- a/oak-core/src/main/java/org/apache/jackrabbit/oak/security/internal/Preconditions.java
+++ b/oak-core/src/main/java/org/apache/jackrabbit/oak/security/internal/Preconditions.java
@@ -23,15 +23,15 @@ import java.util.Set;
 /**
  * Represents a preconditions set that may be satisfied by adding the right
  * candidates.
- * <p/>
+ * <p>
  * Initially, a set of preconditions is empty. An empty set of preconditions is
  * always satisfied. If candidates are added, but the precondition set is empty,
  * the preconditions are considered satisfied.
- * <p/>
+ * <p>
  * When some preconditions are added, the preconditions set may enter into the
  * unsatisfied state. In this case, the preconditions set may be come satisfied
  * again only with the addition of the right candidates.
- * <p/>
+ * <p>
  * This class doesn't admit duplicates for preconditions or candidates. Adding
  * the same precondition (or candidate) twice doesn't have any effect on the
  * state of the preconditions set.
diff --git a/oak-core/src/main/java/org/apache/jackrabbit/oak/security/user/CacheConflictHandler.java b/oak-core/src/main/java/org/apache/jackrabbit/oak/security/user/CacheConflictHandler.java
index 85a6cea80c..296b6644a6 100644
--- a/oak-core/src/main/java/org/apache/jackrabbit/oak/security/user/CacheConflictHandler.java
+++ b/oak-core/src/main/java/org/apache/jackrabbit/oak/security/user/CacheConflictHandler.java
@@ -34,14 +34,14 @@ import org.slf4j.LoggerFactory;
  *<p>
  * The conflict handler deals with the following conflicts:
  * <ul>
- *     <li>{@code addExistingProperty}  : {@code Resolution.IGNORED}, We should not have add conflints, since the {@code rep:{@code rep:expiration}} node is created with the user</li>
- *     <li>{@code changeDeletedProperty}: {@code Resolution.IGNORED},</li>
- *     <li>{@code changeChangedProperty}: {@code Resolution.MERGED}, the properties with higher {@code rep:expiration} get merged</li>
- *     <li>{@code deleteChangedProperty}: {@code Resolution.IGNORED} .</li>
- *     <li>{@code deleteDeletedProperty}: {@code Resolution.IGNORED}.</li>
- *     <li>{@code changeDeletedNode}    : {@code Resolution.IGNORED}, .</li>
- *     <li>{@code deleteChangedNode}    : {@code Resolution.IGNORED}, </li>
- *     <li>{@code deleteDeletedNode}    : {@code Resolution.IGNORED}.</li>
+ *     <li>{@code addExistingProperty}  : {@code Resolution.IGNORED}, We should not have add conflints, since the {@code rep:{@code rep:expiration}} node is created with the user
+ *     <li>{@code changeDeletedProperty}: {@code Resolution.IGNORED},
+ *     <li>{@code changeChangedProperty}: {@code Resolution.MERGED}, the properties with higher {@code rep:expiration} get merged
+ *     <li>{@code deleteChangedProperty}: {@code Resolution.IGNORED} .
+ *     <li>{@code deleteDeletedProperty}: {@code Resolution.IGNORED}.
+ *     <li>{@code changeDeletedNode}    : {@code Resolution.IGNORED}, .
+ *     <li>{@code deleteChangedNode}    : {@code Resolution.IGNORED}, 
+ *     <li>{@code deleteDeletedNode}    : {@code Resolution.IGNORED}.
  * </ul>
  */
 
diff --git a/oak-core/src/main/java/org/apache/jackrabbit/oak/security/user/RepMembersConflictHandler.java b/oak-core/src/main/java/org/apache/jackrabbit/oak/security/user/RepMembersConflictHandler.java
index 0f21fe0ab1..2bd350a6af 100644
--- a/oak-core/src/main/java/org/apache/jackrabbit/oak/security/user/RepMembersConflictHandler.java
+++ b/oak-core/src/main/java/org/apache/jackrabbit/oak/security/user/RepMembersConflictHandler.java
@@ -41,14 +41,14 @@ import org.apache.jackrabbit.guava.common.collect.Sets;
  *<p>
  * The conflict handler deals with the following conflicts:
  * <ul>
- *     <li>{@code addExistingProperty}  : {@code Resolution.MERGED}.</li>
+ *     <li>{@code addExistingProperty}  : {@code Resolution.MERGED}.
  *     <li>{@code changeDeletedProperty}: {@code Resolution.THEIRS}, removing the members property takes precedence.
  *     <li>{@code changeChangedProperty}: {@code Resolution.MERGED}, merge of the 2 members sets into a single one
  *     <li>{@code deleteChangedProperty}: {@code Resolution.OURS} removing the members property takes precedence.
- *     <li>{@code deleteDeletedProperty}: {@code Resolution.MERGED}.</li>
- *     <li>{@code changeDeletedNode}    : {@code Resolution.THEIRS}, removal takes precedence.</li>
- *     <li>{@code deleteChangedNode}    : {@code Resolution.OURS}, removal takes precedence.</li>
- *     <li>{@code deleteDeletedNode}    : {@code Resolution.MERGED}.</li>
+ *     <li>{@code deleteDeletedProperty}: {@code Resolution.MERGED}.
+ *     <li>{@code changeDeletedNode}    : {@code Resolution.THEIRS}, removal takes precedence.
+ *     <li>{@code deleteChangedNode}    : {@code Resolution.OURS}, removal takes precedence.
+ *     <li>{@code deleteDeletedNode}    : {@code Resolution.MERGED}.
  * </ul>
  */
 class RepMembersConflictHandler implements ThreeWayConflictHandler {
diff --git a/oak-core/src/main/java/org/apache/jackrabbit/oak/security/user/UserAuthentication.java b/oak-core/src/main/java/org/apache/jackrabbit/oak/security/user/UserAuthentication.java
index 09b35cf0b0..321a1640d3 100644
--- a/oak-core/src/main/java/org/apache/jackrabbit/oak/security/user/UserAuthentication.java
+++ b/oak-core/src/main/java/org/apache/jackrabbit/oak/security/user/UserAuthentication.java
@@ -63,12 +63,12 @@ import org.slf4j.LoggerFactory;
  *
  * <ul>
  *     <li>{@link SimpleCredentials}: Authentication succeeds if userID and
- *     password match the information exposed by the {@link UserManager}.</li>
+ *     password match the information exposed by the {@link UserManager}.
  *     <li>{@link ImpersonationCredentials}: Authentication succeeds if the
  *     subject to be authenticated is allowed to impersonate the user identified
- *     by the userID.</li>
+ *     by the userID.
  *     <li>{@link GuestCredentials}: The authentication succeeds if an 'anonymous'
- *     user exists in the repository.</li>
+ *     user exists in the repository.
  * </ul>
  *
  * For any other credentials {@link #authenticate(javax.jcr.Credentials)}
diff --git a/oak-core/src/main/java/org/apache/jackrabbit/oak/security/user/UserImporter.java b/oak-core/src/main/java/org/apache/jackrabbit/oak/security/user/UserImporter.java
index 29f68eb6e0..d711e583d9 100644
--- a/oak-core/src/main/java/org/apache/jackrabbit/oak/security/user/UserImporter.java
+++ b/oak-core/src/main/java/org/apache/jackrabbit/oak/security/user/UserImporter.java
@@ -97,42 +97,39 @@ import static org.apache.jackrabbit.oak.api.Type.STRINGS;
  * <ul>
  * <li>The importer will only be initialized if the user manager exposed by
  * the session is an instance of {@code UserManagerImpl}.
- * </li>
  * <li>The importer will only be initialized if the editing session starting
  * this import is the same as the UserManager's Session instance.
- * </li>
  * <li>The jcr:uuid property of user and groups is defined to represent the
  * hashed authorizable id as calculated by the UserManager. This importer
  * is therefore not able to handle imports with
- * {@link ImportUUIDBehavior#IMPORT_UUID_CREATE_NEW}.</li>
+ * {@link ImportUUIDBehavior#IMPORT_UUID_CREATE_NEW}.
  * <li>Importing user/group nodes outside of the hierarchy defined by the two
  * configuration options
  * {@link org.apache.jackrabbit.oak.spi.security.user.UserConstants#PARAM_GROUP_PATH}
  * and {@link org.apache.jackrabbit.oak.spi.security.user.UserConstants#PARAM_USER_PATH}
  * will fail upon {@code Root#commit()}. The same may
  * be true in case of {@link ImportUUIDBehavior#IMPORT_UUID_COLLISION_REPLACE_EXISTING}
- * inserting the user/group node at some other place in the node hierarchy.</li>
+ * inserting the user/group node at some other place in the node hierarchy.
  * <li>The same commit hook will make sure that authorizables are never nested
  * and are created below a hierarchy of nt:AuthorizableFolder nodes. This isn't
  * enforced by means of node type constraints but only by the API. This importer
- * itself currently doesn't perform such a validation check.</li>
+ * itself currently doesn't perform such a validation check.
  * <li>Any attempt to import conflicting data will cause the import to fail
  * either immediately or upon calling {@link javax.jcr.Session#save()} with the
  * following exceptions:
  * <ul>
- * <li>{@code rep:members} : Group membership</li>
- * <li>{@code rep:impersonators} : Impersonators of a User.</li>
+ * <li>{@code rep:members} : Group membership
+ * <li>{@code rep:impersonators} : Impersonators of a User.
  * </ul>
  * The import behavior of these two properties is defined by the {@link #PARAM_IMPORT_BEHAVIOR}
  * configuration parameter, which can be set to
  * <ul>
- * <li>{@link ImportBehavior#NAME_IGNORE ignore}: A warning is logged.</li>
+ * <li>{@link ImportBehavior#NAME_IGNORE ignore}: A warning is logged.
  * <li>{@link ImportBehavior#NAME_BESTEFFORT best effort}: A warning is logged
- * and the importer tries to fix the problem.</li>
+ * and the importer tries to fix the problem.
  * <li>{@link ImportBehavior#NAME_ABORT abort}: The import is immediately
- * aborted with a ConstraintViolationException. (<strong>default</strong>)</li>
+ * aborted with a ConstraintViolationException. (<strong>default</strong>)
  * </ul>
- * </li>
  * </ul>
  */
 class UserImporter implements ProtectedPropertyImporter, ProtectedNodeImporter, UserConstants {
diff --git a/oak-core/src/main/java/org/apache/jackrabbit/oak/security/user/UserInitializer.java b/oak-core/src/main/java/org/apache/jackrabbit/oak/security/user/UserInitializer.java
index 99e0f0fd92..c57a1fcf21 100644
--- a/oak-core/src/main/java/org/apache/jackrabbit/oak/security/user/UserInitializer.java
+++ b/oak-core/src/main/java/org/apache/jackrabbit/oak/security/user/UserInitializer.java
@@ -61,19 +61,19 @@ import static org.apache.jackrabbit.oak.plugins.memory.ModifiedNodeState.squeeze
  * <p>
  * <ul>
  * <li>An administrator user using {@link UserConstants#PARAM_ADMIN_ID}
- * or {@link UserConstants#DEFAULT_ADMIN_ID} if the config option is missing.</li>
+ * or {@link UserConstants#DEFAULT_ADMIN_ID} if the config option is missing.
  * <li>An administrator user using {@link UserConstants#PARAM_ANONYMOUS_ID}
  * or {@link UserConstants#DEFAULT_ANONYMOUS_ID} if the config option is
- * missing.</li>
+ * missing.
  * </ul>
  * <p>
  * In addition this initializer sets up index definitions for the following
  * user related properties:
  * <p>
  * <ul>
- * <li>{@link UserConstants#REP_AUTHORIZABLE_ID}</li>
- * <li>{@link UserConstants#REP_PRINCIPAL_NAME}</li>
- * <li>{@link UserConstants#REP_MEMBERS}</li>
+ * <li>{@link UserConstants#REP_AUTHORIZABLE_ID}
+ * <li>{@link UserConstants#REP_PRINCIPAL_NAME}
+ * <li>{@link UserConstants#REP_MEMBERS}
  * </ul>
  */
 class UserInitializer implements WorkspaceInitializer, UserConstants, QueryIndexProviderAware {
diff --git a/oak-core/src/main/java/org/apache/jackrabbit/oak/security/user/UserProvider.java b/oak-core/src/main/java/org/apache/jackrabbit/oak/security/user/UserProvider.java
index 94114ac7c0..0b07ae9018 100644
--- a/oak-core/src/main/java/org/apache/jackrabbit/oak/security/user/UserProvider.java
+++ b/oak-core/src/main/java/org/apache/jackrabbit/oak/security/user/UserProvider.java
@@ -62,10 +62,10 @@ import static org.apache.jackrabbit.oak.spi.nodetype.NodeTypeConstants.NODE_TYPE
  * <ul>
  * <li>Users are created below /rep:security/rep:authorizables/rep:users or
  * the path configured in the {@link org.apache.jackrabbit.oak.spi.security.user.UserConstants#PARAM_USER_PATH}
- * respectively.</li>
+ * respectively.
  * <li>Groups are created below /rep:security/rep:authorizables/rep:groups or
  * the path configured in the {@link org.apache.jackrabbit.oak.spi.security.user.UserConstants#PARAM_GROUP_PATH}
- * respectively.</li>
+ * respectively.
  * <li>Below each category authorizables are created within a human readable
  * structure based on the defined intermediate path or some internal logic
  * with a depth defined by the {@code defaultDepth} config option.<br>
@@ -79,14 +79,13 @@ import static org.apache.jackrabbit.oak.spi.nodetype.NodeTypeConstants.NODE_TYPE
  *         + aS              [rep:AuthorizableFolder]
  * ->        + aSmith        [rep:User]
  * </pre>
- * </li>
  * <li>The node name is calculated from the specified authorizable ID according
  * to the logic provided by the configured {@link AuthorizableNodeName}
  * implementation. If no name generator is present in the configuration
  * the {@link AuthorizableNodeName#DEFAULT default} implementation is used. The
- * name of the configuration option is {@link UserConstants#PARAM_AUTHORIZABLE_NODE_NAME}</li>
+ * name of the configuration option is {@link UserConstants#PARAM_AUTHORIZABLE_NODE_NAME}
  * <li>If no intermediate path is passed the names of the intermediate
- * folders are calculated from the leading chars of the escaped node name.</li>
+ * folders are calculated from the leading chars of the escaped node name.
  * <li>If the escaped node name is shorter than the {@code defaultDepth}
  * the last char is repeated.<br>
  * E.g. creating a user node for an ID 'a' would result in the following
@@ -98,36 +97,36 @@ import static org.apache.jackrabbit.oak.spi.nodetype.NodeTypeConstants.NODE_TYPE
  *       + a                 [rep:AuthorizableFolder]
  *         + aa              [rep:AuthorizableFolder]
  * ->        + a             [rep:User]
- * </pre></li>
+ * </pre>
  *
  * <h3>Conflicts</h3>
  *
  * <ul>
  * <li>If the authorizable node to be created would collide with an existing
- * folder the conflict is resolved by using the colling folder as target.</li>
+ * folder the conflict is resolved by using the colling folder as target.
  * <li>The current implementation asserts that authorizable nodes are always
  * created underneath an node of type {@code rep:AuthorizableFolder}. If this
- * condition is violated a {@code ConstraintViolationException} is thrown.</li>
+ * condition is violated a {@code ConstraintViolationException} is thrown.
  * <li>If the specified intermediate path results in an authorizable node
  * being located outside of the configured content structure a
- * {@code ConstraintViolationException} is thrown.</li>
+ * {@code ConstraintViolationException} is thrown.
  * </ul>
  *
  * <h3>Configuration Options</h3>
  * <ul>
  * <li>{@link UserConstants#PARAM_USER_PATH}: Underneath this structure
  * all user nodes are created. Default value is
- * "/rep:security/rep:authorizables/rep:users"</li>
+ * "/rep:security/rep:authorizables/rep:users"
  * <li>{@link UserConstants#PARAM_GROUP_PATH}: Underneath this structure
  * all group nodes are created. Default value is
- * "/rep:security/rep:authorizables/rep:groups"</li>
+ * "/rep:security/rep:authorizables/rep:groups"
  * <li>{@link UserConstants#PARAM_DEFAULT_DEPTH}: A positive {@code integer}
  * greater than zero defining the depth of the default structure that is
- * always created. Default value: 2</li>
+ * always created. Default value: 2
  * <li>{@link UserConstants#PARAM_AUTHORIZABLE_NODE_NAME}: An implementation
  * of {@link AuthorizableNodeName} used to create a node name for a given
  * authorizableId. By {@link AuthorizableNodeName.Default default} the
- * ID itself is used as node name. (since OAK 1.0)</li>
+ * ID itself is used as node name. (since OAK 1.0)
  * </ul>
  *
  * <h3>Compatibility with Jackrabbit 2.x</h3>
@@ -135,8 +134,8 @@ import static org.apache.jackrabbit.oak.spi.nodetype.NodeTypeConstants.NODE_TYPE
  * Due to the fact that this JCR implementation is expected to deal with huge amount
  * of child nodes the following configuration options are no longer supported:
  * <ul>
- * <li>autoExpandTree</li>
- * <li>autoExpandSize</li>
+ * <li>autoExpandTree
+ * <li>autoExpandSize
  * </ul>
  *
  * <h2>User and Group Access</h2>
diff --git a/oak-core/src/main/java/org/apache/jackrabbit/oak/security/user/autosave/AutoSaveEnabledManager.java b/oak-core/src/main/java/org/apache/jackrabbit/oak/security/user/autosave/AutoSaveEnabledManager.java
index b965945d63..d8bb748754 100644
--- a/oak-core/src/main/java/org/apache/jackrabbit/oak/security/user/autosave/AutoSaveEnabledManager.java
+++ b/oak-core/src/main/java/org/apache/jackrabbit/oak/security/user/autosave/AutoSaveEnabledManager.java
@@ -40,7 +40,7 @@ import org.jetbrains.annotations.Nullable;
  *
  * <p>In general any consumer of the Jackrabbit user management API should stick
  * to the API contract and verify that the autosave flag is enabled before
- * relying on the implementation to have it turned on:</p>
+ * relying on the implementation to have it turned on:
  *
  * <pre>
  *     JackrabbitSession session = ...;
diff --git a/oak-core/src/test/java/org/apache/jackrabbit/oak/plugins/index/property/strategy/ContentMirrorStoreStrategyTest.java b/oak-core/src/test/java/org/apache/jackrabbit/oak/plugins/index/property/strategy/ContentMirrorStoreStrategyTest.java
index bc493994b5..5e56e0a426 100644
--- a/oak-core/src/test/java/org/apache/jackrabbit/oak/plugins/index/property/strategy/ContentMirrorStoreStrategyTest.java
+++ b/oak-core/src/test/java/org/apache/jackrabbit/oak/plugins/index/property/strategy/ContentMirrorStoreStrategyTest.java
@@ -57,7 +57,6 @@ public class ContentMirrorStoreStrategyTest {
     /**
      * <p>
      * Tests the index pruning mechanism
-     * </p>
      * <ul>
      * <li>
      * adds a few levels of nodes, nodes with an even index will have the
diff --git a/oak-core/src/test/java/org/apache/jackrabbit/oak/query/AbstractQueryTest.java b/oak-core/src/test/java/org/apache/jackrabbit/oak/query/AbstractQueryTest.java
index 9e7157b677..c20748ae43 100644
--- a/oak-core/src/test/java/org/apache/jackrabbit/oak/query/AbstractQueryTest.java
+++ b/oak-core/src/test/java/org/apache/jackrabbit/oak/query/AbstractQueryTest.java
@@ -413,7 +413,6 @@ public abstract class AbstractQueryTest {
      * or
      * <p>
      * "/ - "test"
-     * </p>
      *
      * @param root
      * @param commit the commit string
diff --git a/oak-core/src/test/java/org/apache/jackrabbit/oak/security/authorization/composite/CompositeProviderScopeTest.java b/oak-core/src/test/java/org/apache/jackrabbit/oak/security/authorization/composite/CompositeProviderScopeTest.java
index 6b071c8c77..f82b5286a1 100644
--- a/oak-core/src/test/java/org/apache/jackrabbit/oak/security/authorization/composite/CompositeProviderScopeTest.java
+++ b/oak-core/src/test/java/org/apache/jackrabbit/oak/security/authorization/composite/CompositeProviderScopeTest.java
@@ -45,8 +45,8 @@ import static org.junit.Assert.assertTrue;
  *
  * - default permission provider
  * - custom provider that
- *   > supports namespace-management and nodetype-def-mgt permission on repository level
- *   > write permission below {@link #TEST_A_PATH}.
+ *   + supports namespace-management and nodetype-def-mgt permission on repository level
+ *   + write permission below {@link #TEST_A_PATH}.
  *
  * The tests are executed both for the set of principals associated with the test
  * user and with the admin session.
diff --git a/oak-core/src/test/java/org/apache/jackrabbit/oak/security/user/MembershipTest.java b/oak-core/src/test/java/org/apache/jackrabbit/oak/security/user/MembershipTest.java
index 100a6963c7..715cd287b2 100644
--- a/oak-core/src/test/java/org/apache/jackrabbit/oak/security/user/MembershipTest.java
+++ b/oak-core/src/test/java/org/apache/jackrabbit/oak/security/user/MembershipTest.java
@@ -40,10 +40,10 @@ import static org.mockito.Mockito.verifyNoMoreInteractions;
  * Tests large group and user graphs.
  *
  * <ul>
- * <li>{@link #NUM_USERS} users</li>
- * <li>{@link #NUM_GROUPS} groups</li>
- * <li>1 group with all users</li>
- * <li>1 user with all groups</li>
+ * <li>{@link #NUM_USERS} users
+ * <li>{@link #NUM_GROUPS} groups
+ * <li>1 group with all users
+ * <li>1 user with all groups
   * </ul>
  *
  * @since OAK 1.0
diff --git a/oak-exercise/src/main/java/org/apache/jackrabbit/oak/exercise/security/authorization/models/readonly/ReadOnlyAuthorizationConfiguration.java b/oak-exercise/src/main/java/org/apache/jackrabbit/oak/exercise/security/authorization/models/readonly/ReadOnlyAuthorizationConfiguration.java
index 6ca2624e35..2c1e5b90ca 100644
--- a/oak-exercise/src/main/java/org/apache/jackrabbit/oak/exercise/security/authorization/models/readonly/ReadOnlyAuthorizationConfiguration.java
+++ b/oak-exercise/src/main/java/org/apache/jackrabbit/oak/exercise/security/authorization/models/readonly/ReadOnlyAuthorizationConfiguration.java
@@ -142,16 +142,15 @@ import static org.apache.jackrabbit.oak.spi.security.RegistrationConstants.OAK_S
  * The following steps are required to install this authorization model in an OSGi based Oak setup.
  *
  * <ul>
- *     <li>Upload the oak-exercise bundle</li>
- *     <li>Edit configuration of 'ReadOnlyAuthorizationConfiguration' specifying the mandatory ranking property</li>
+ *     <li>Upload the oak-exercise bundle
+ *     <li>Edit configuration of 'ReadOnlyAuthorizationConfiguration' specifying the mandatory ranking property
  *     <li>Edit configuration of {@link org.apache.jackrabbit.oak.security.internal.SecurityProviderRegistration}
  *     <ul>
  *         <li>add {@code org.apache.jackrabbit.oak.exercise.security.authorization.models.readonly.ReadOnlyAuthorizationConfiguration}
- *             to the list of required service IDs</li>
- *         <li>make sure the 'Authorization Composition Type' is set to AND</li>
+ *             to the list of required service IDs
+ *         <li>make sure the 'Authorization Composition Type' is set to AND
  *     </ul>
- *     </li>
- *     <li>Wait for the {@link org.apache.jackrabbit.oak.spi.security.SecurityProvider} to be successfully registered again.</li>
+ *     <li>Wait for the {@link org.apache.jackrabbit.oak.spi.security.SecurityProvider} to be successfully registered again.
  * </ul>
  *
  */
diff --git a/oak-exercise/src/test/java/org/apache/jackrabbit/oak/exercise/security/authentication/L3_LoginModuleTest.java b/oak-exercise/src/test/java/org/apache/jackrabbit/oak/exercise/security/authentication/L3_LoginModuleTest.java
index 3a3a1fd02e..e963d2c83f 100644
--- a/oak-exercise/src/test/java/org/apache/jackrabbit/oak/exercise/security/authentication/L3_LoginModuleTest.java
+++ b/oak-exercise/src/test/java/org/apache/jackrabbit/oak/exercise/security/authentication/L3_LoginModuleTest.java
@@ -54,9 +54,9 @@ import org.junit.Test;
  *   {@link #getConfiguration()} method.
  *   Change the JAAS configuration and use the {@link #testLogin()} method to
  *   walk through the login. For example
- *   > look at ConfigurationUtil for various options
- *   > manually create a different configuration with different control flags
- *   > create a configuration that also includes the {@link CustomLoginModule}
+ *   + look at ConfigurationUtil for various options
+ *   + manually create a different configuration with different control flags
+ *   + create a configuration that also includes the {@link CustomLoginModule}
  *   Discuss your findings
  *
  *
diff --git a/oak-exercise/src/test/java/org/apache/jackrabbit/oak/exercise/security/authorization/advanced/L2_SetupAggregationTest.java b/oak-exercise/src/test/java/org/apache/jackrabbit/oak/exercise/security/authorization/advanced/L2_SetupAggregationTest.java
index da388cb708..659f51ca7c 100644
--- a/oak-exercise/src/test/java/org/apache/jackrabbit/oak/exercise/security/authorization/advanced/L2_SetupAggregationTest.java
+++ b/oak-exercise/src/test/java/org/apache/jackrabbit/oak/exercise/security/authorization/advanced/L2_SetupAggregationTest.java
@@ -37,22 +37,22 @@ package org.apache.jackrabbit.oak.exercise.security.authorization.advanced;
  *   and deploy it with your OSGi based Oak setup.
  *
  *   Hint: Oak comes with 2 additional authorization models, which you can use
- *   > Closed User Groups in oak-authorization-cug (see also http://jackrabbit.apache.org/oak/docs/security/authorization/cug.html)
- *   > Read Only in oak-exercise
+ *   + Closed User Groups in oak-authorization-cug (see also http://jackrabbit.apache.org/oak/docs/security/authorization/cug.html)
+ *   + Read Only in oak-exercise
  *
  *   Questions:
- *   > Can you identify the OSGi components that come with the model?
- *   > Does your model require any mandatory configuration in order to be functional?
+ *   + Can you identify the OSGi components that come with the model?
+ *   + Does your model require any mandatory configuration in order to be functional?
  *
  * - Adjust Configuration of 'Apache Jackrabbit Oak SecurityProvider'
  *   In a second step you should adjust the configuration of the SecurityProvider
  *   in order to make sure the additional AuthorizationConfiguration is properly
  *   wired with the security setup.
  *
- *   > Add the addition configuration to the list of required service IDs (see also http://jackrabbit.apache.org/oak/docs/security/introduction.html)
- *   > Check the value of 'Authorization Composition Type'.
- *   > Observe the log INFOs to verify the SecurityProvider is properly registered
- *   > Inspect the references to 'authorizationConfiguration' in org.apache.jackrabbit.oak.security.internal.SecurityProviderRegistration
+ *   + Add the addition configuration to the list of required service IDs (see also http://jackrabbit.apache.org/oak/docs/security/introduction.html)
+ *   + Check the value of 'Authorization Composition Type'.
+ *   + Observe the log INFOs to verify the SecurityProvider is properly registered
+ *   + Inspect the references to 'authorizationConfiguration' in org.apache.jackrabbit.oak.security.internal.SecurityProviderRegistration
  *     and verify that the extra module shows up there.
  *
  * - Verify Access Control Management and Permission Evaluation
@@ -66,10 +66,10 @@ package org.apache.jackrabbit.oak.exercise.security.authorization.advanced;
  * - Play with the configuration option 'Authorization Composition Type'.
  *
  *   Questions:
- *   > Would it be an option to use "OR" as the composition type with the setup you chose?
- *   > What would be the result if this was a valid option?
- *   > If it was a valid option, imaging a setup scenario where it would not work.
- *   > If it wasn't an option, explain why. Think about a scenario where it was valid.
+ *   + Would it be an option to use "OR" as the composition type with the setup you chose?
+ *   + What would be the result if this was a valid option?
+ *   + If it was a valid option, imaging a setup scenario where it would not work.
+ *   + If it wasn't an option, explain why. Think about a scenario where it was valid.
  *
  * </pre>
  */
diff --git a/oak-exercise/src/test/java/org/apache/jackrabbit/oak/exercise/security/authorization/advanced/L3_UnderstandAggregationTest.java b/oak-exercise/src/test/java/org/apache/jackrabbit/oak/exercise/security/authorization/advanced/L3_UnderstandAggregationTest.java
index 42c82d831f..8b9e1b583f 100644
--- a/oak-exercise/src/test/java/org/apache/jackrabbit/oak/exercise/security/authorization/advanced/L3_UnderstandAggregationTest.java
+++ b/oak-exercise/src/test/java/org/apache/jackrabbit/oak/exercise/security/authorization/advanced/L3_UnderstandAggregationTest.java
@@ -82,11 +82,11 @@ import static org.junit.Assert.assertTrue;
  *
  * - Write more tests to explore aggregation of additional features within the
  *   authorization setup such as e.g.
- *   > Privilege discovery
- *   > Repository level privileges such as e.g. ability to register a new node type.
- *   > XML Import
- *   > Validation
- *   > Repository Initialization
+ *   + Privilege discovery
+ *   + Repository level privileges such as e.g. ability to register a new node type.
+ *   + XML Import
+ *   + Validation
+ *   + Repository Initialization
  *
  *
  * Advanced Exercises
diff --git a/oak-exercise/src/test/java/org/apache/jackrabbit/oak/exercise/security/principal/L3_EveryoneTest.java b/oak-exercise/src/test/java/org/apache/jackrabbit/oak/exercise/security/principal/L3_EveryoneTest.java
index 7978518231..a058d7b9ed 100644
--- a/oak-exercise/src/test/java/org/apache/jackrabbit/oak/exercise/security/principal/L3_EveryoneTest.java
+++ b/oak-exercise/src/test/java/org/apache/jackrabbit/oak/exercise/security/principal/L3_EveryoneTest.java
@@ -65,10 +65,10 @@ import org.apache.jackrabbit.test.AbstractJCRTest;
  * - {@link #testEveryoneAsAuthorizableGroup()}
  *   Additional test illustrating that the dynamic nature of the everyone principal
  *   does not change if there exists a corresponding authorizable group.
- *   > Create a new authorizable that corresponds to the everyone principal (Q: what parameters are constants?)
- *   > Verify that principal exposed by the authorizable corresponds to the everyone principal.
- *   > Assert that the dynamic nature of the principal has not changed.
- *   > Test if the dynamic nature also applies to the authorizable
+ *   + Create a new authorizable that corresponds to the everyone principal (Q: what parameters are constants?)
+ *   + Verify that principal exposed by the authorizable corresponds to the everyone principal.
+ *   + Assert that the dynamic nature of the principal has not changed.
+ *   + Test if the dynamic nature also applies to the authorizable
  *
  *
  * Additional Exercises:
diff --git a/oak-exercise/src/test/java/org/apache/jackrabbit/oak/exercise/security/principal/L4_PrincipalProviderTest.java b/oak-exercise/src/test/java/org/apache/jackrabbit/oak/exercise/security/principal/L4_PrincipalProviderTest.java
index 1fc86b249f..56e692ed07 100644
--- a/oak-exercise/src/test/java/org/apache/jackrabbit/oak/exercise/security/principal/L4_PrincipalProviderTest.java
+++ b/oak-exercise/src/test/java/org/apache/jackrabbit/oak/exercise/security/principal/L4_PrincipalProviderTest.java
@@ -64,9 +64,9 @@ import org.junit.Test;
  * - Complete the {@link CustomPrincipalProvider}
  *   stub and deploy the exercise bundle in a Sling base repository installation
  *   (e.g. Cq|Granite).
- *   > Try to identify the tools that allow you to explore your custom principals
- *   > Play with the dynamic group membership as you define it in the principal provider and verify that the subjects calculated upon login are correct
- *   > Play with the authorization part of the principal management granting/revoking access for one of your custom principals
+ *   + Try to identify the tools that allow you to explore your custom principals
+ *   + Play with the dynamic group membership as you define it in the principal provider and verify that the subjects calculated upon login are correct
+ *   + Play with the authorization part of the principal management granting/revoking access for one of your custom principals
  * </pre>
  *
  * @see org.apache.jackrabbit.oak.spi.security.principal.PrincipalProvider
diff --git a/oak-exercise/src/test/java/org/apache/jackrabbit/oak/exercise/security/user/L10_RemovalAndMembershipTest.java b/oak-exercise/src/test/java/org/apache/jackrabbit/oak/exercise/security/user/L10_RemovalAndMembershipTest.java
index 49639036ce..ec5ed28fdb 100644
--- a/oak-exercise/src/test/java/org/apache/jackrabbit/oak/exercise/security/user/L10_RemovalAndMembershipTest.java
+++ b/oak-exercise/src/test/java/org/apache/jackrabbit/oak/exercise/security/user/L10_RemovalAndMembershipTest.java
@@ -80,8 +80,8 @@ import static org.junit.Assert.assertTrue;
  *   it and verify and if members-list at 'administrators' has been adjust (test-user removed).
  *
  * - Explain the result both for the main and variant.
- *   > the removal failed: explain why?
- *   > the member-cleanup didn't succeed: explain why?
+ *   + the removal failed: explain why?
+ *   + the member-cleanup didn't succeed: explain why?
  *
  * 4. Test Execution with 'admin'
  *
diff --git a/oak-exercise/src/test/java/org/apache/jackrabbit/oak/exercise/security/user/L8_MembershipTest.java b/oak-exercise/src/test/java/org/apache/jackrabbit/oak/exercise/security/user/L8_MembershipTest.java
index b7029da8a3..9147ecf0ce 100644
--- a/oak-exercise/src/test/java/org/apache/jackrabbit/oak/exercise/security/user/L8_MembershipTest.java
+++ b/oak-exercise/src/test/java/org/apache/jackrabbit/oak/exercise/security/user/L8_MembershipTest.java
@@ -83,8 +83,8 @@ import static org.junit.Assert.assertTrue;
  *   In order to complete this exercise look at the built-in node types and
  *   identify those types that deal with group membership.
  *   Once you are familiar with the node type definitions look at
- *   > {@link org.apache.jackrabbit.oak.security.user.MembershipProvider} and
- *   > {@link org.apache.jackrabbit.oak.security.user.MembershipWriter}
+ *   + {@link org.apache.jackrabbit.oak.security.user.MembershipProvider} and
+ *   + {@link org.apache.jackrabbit.oak.security.user.MembershipWriter}
  *   and how they deal with massive amount of members on a given group.
  *   Finally fix the test case :-)
  *
diff --git a/oak-jackrabbit-api/src/main/java/org/apache/jackrabbit/api/JackrabbitValueFactory.java b/oak-jackrabbit-api/src/main/java/org/apache/jackrabbit/api/JackrabbitValueFactory.java
index 0360fb037d..596a841b27 100644
--- a/oak-jackrabbit-api/src/main/java/org/apache/jackrabbit/api/JackrabbitValueFactory.java
+++ b/oak-jackrabbit-api/src/main/java/org/apache/jackrabbit/api/JackrabbitValueFactory.java
@@ -46,7 +46,6 @@ import org.osgi.annotation.versioning.ProviderType;
  *     <li>
  *         Direct Binary Access - enable a client to upload or download binaries
  *         directly to/from a storage location
- *     </li>
  * </ul>
  *
  * <p>
@@ -97,14 +96,12 @@ import org.osgi.annotation.versioning.ProviderType;
  *         optionally choose to provide a {@link BinaryUploadOptions} via
  *         {@link #initiateBinaryUpload(long, int, BinaryUploadOptions)} if
  *         additional options must be specified.
- *     </li>
  *     <li>
  *         <b>Upload</b>: The remote client performs the actual binary upload
  *         directly to the binary storage provider. The {@link BinaryUpload}
  *         returned from the previous call to {@link
  *         #initiateBinaryUpload(long, int)} contains detailed instructions on
  *         how to complete the upload successfully.
- *     </li>
  *     <li>
  *         <b>Complete</b>: The remote client notifies the Jackrabbit-based
  *         application that step 2 is complete. The upload token returned in
@@ -114,7 +111,6 @@ import org.osgi.annotation.versioning.ProviderType;
  *         with a regular {@link Binary JCR Binary} that can then be used to
  *         write JCR content including the binary (such as an nt:file structure)
  *         and persist it using {@link Session#save}.
- *     </li>
  * </ol>
  */
 @ProviderType
diff --git a/oak-jackrabbit-api/src/main/java/org/apache/jackrabbit/api/binary/BinaryUpload.java b/oak-jackrabbit-api/src/main/java/org/apache/jackrabbit/api/binary/BinaryUpload.java
index 90181828bd..05b7b9c737 100644
--- a/oak-jackrabbit-api/src/main/java/org/apache/jackrabbit/api/binary/BinaryUpload.java
+++ b/oak-jackrabbit-api/src/main/java/org/apache/jackrabbit/api/binary/BinaryUpload.java
@@ -64,14 +64,14 @@ import org.osgi.annotation.versioning.ProviderType;
  * <h3>Variables used</h3>
  * <ul>
  *     <li>{@code fileSize}: the actual binary size (must be known at this
- *     point)</li>
- *     <li>{@code minPartSize}: the value from {@link #getMinPartSize()}</li>
- *     <li>{@code maxPartSize}: the value from {@link #getMaxPartSize()}</li>
+ *     point)
+ *     <li>{@code minPartSize}: the value from {@link #getMinPartSize()}
+ *     <li>{@code maxPartSize}: the value from {@link #getMaxPartSize()}
  *     <li>{@code numUploadURIs}: the number of entries in {@link
- *     #getUploadURIs()}</li>
- *     <li>{@code uploadURIs}: the entries in {@link #getUploadURIs()}</li>
+ *     #getUploadURIs()}
+ *     <li>{@code uploadURIs}: the entries in {@link #getUploadURIs()}
  *     <li>{@code partSize}: the part size to be used in the upload (to be
- *     determined in the algorithm)</li>
+ *     determined in the algorithm)
  * </ul>
  *
  * <h3>Steps</h3>
@@ -80,7 +80,6 @@ import org.osgi.annotation.versioning.ProviderType;
  *         If {@code (fileSize / maxPartSize) > numUploadURIs}, then the client
  *         cannot proceed and will have to request a new set of URIs with the
  *         right fileSize as {@code maxSize}.
- *     </li>
  *     <li>
  *         Calculate the {@code partSize} and the number of URIs to use.
  *         <br>
@@ -103,7 +102,6 @@ import org.osgi.annotation.versioning.ProviderType;
  *                 provided upload URI to upload the entire binary, with
  *                 {@code partSize = fileSize}.  Note that it is not required to
  *                 use all of the URIs provided in {@code uploadURIs}.
- *             </li>
  *             <li>
  *                 If {@code fileSize / partSize == numUploadURIs}, all part
  *                 URIs must to be used. The {@code partSize} to use for all
@@ -112,7 +110,6 @@ import org.osgi.annotation.versioning.ProviderType;
  *                 It is also possible to simply use {@code maxPartSize} as the
  *                 value for {@code partSize} in this case, for every part
  *                 except the last.
- *             </li>
  *         </ol>
  *         Optionally, a client may select a different {@code partSize},
  *         for example if the client has more information about the
@@ -121,21 +118,18 @@ import org.osgi.annotation.versioning.ProviderType;
  *         different value may be chosen, under the condition that all
  *         of the following are true:
  *         <ol>
- *             <li>{@code partSize >= minPartSize}</li>
+ *             <li>{@code partSize >= minPartSize}
  *             <li>{@code partSize <= maxPartSize}
- *             (unless {@code maxPartSize = -1} meaning unlimited)</li>
- *             <li>{@code partSize > (fileSize / numUploadURIs)}</li>
+ *             (unless {@code maxPartSize = -1} meaning unlimited)
+ *             <li>{@code partSize > (fileSize / numUploadURIs)}
  *         </ol>
- *     </li>
  *     <li>
  *         Upload: segment the binary into {@code partSize}, for each segment
  *         take the next URI from {@code uploadURIs} (strictly in order),
  *         proceed with a standard HTTP PUT for each, and for the last part use
  *         whatever segment size is left.
- *     </li>
  *     <li>
  *         If a segment fails during upload, retry (up to a certain timeout).
- *     </li>
  *     <li>
  *         After the upload has finished successfully, notify the application,
  *         for example through a complete request, passing the {@link
@@ -157,7 +151,6 @@ import org.osgi.annotation.versioning.ProviderType;
  *         Instead, simply restart the upload from the beginning by calling
  *         {@link JackrabbitValueFactory#initiateBinaryUpload(long, int)} when
  *         the situation preventing a successful upload has been resolved.
- *     </li>
  * </ol>
  *
  * <h2>Example JSON view</h2>
diff --git a/oak-jackrabbit-api/src/main/java/org/apache/jackrabbit/api/observation/JackrabbitEventFilter.java b/oak-jackrabbit-api/src/main/java/org/apache/jackrabbit/api/observation/JackrabbitEventFilter.java
index f54de02aae..39cfa5c2a4 100644
--- a/oak-jackrabbit-api/src/main/java/org/apache/jackrabbit/api/observation/JackrabbitEventFilter.java
+++ b/oak-jackrabbit-api/src/main/java/org/apache/jackrabbit/api/observation/JackrabbitEventFilter.java
@@ -39,7 +39,6 @@ import org.osgi.annotation.versioning.ConsumerType;
  * <code>eventTypes</code>:
  * A bitwise <code>OR</code> of the event types to be listened to. See
  * {@link javax.jcr.observation.Event} for details.
- * </li>
  * <li>
  * <code>absPath</code>, <code>absPaths</code>, <code>excludedPaths</code>,
  * <code>isDeep</code>: Only events whose associated parent node is at one
@@ -49,7 +48,6 @@ import org.osgi.annotation.versioning.ConsumerType;
  * <code>excludedPaths</code> or its subgraph.
  * It is permissible to register a listener for a path where no node currently
  * exists.
- * </li>
  * <li>
  * <code>uuid</code>:
  * Only events whose associated parent node has one of
@@ -58,7 +56,6 @@ import org.osgi.annotation.versioning.ConsumerType;
  * events received. Note that specifying an empty array instead of
  * <code>null</code> would result in no nodes being listened to. The term
  * "UUID" is used for compatibility with JCR 1.0.
- * </li>
  * <li>
  * <code>nodeTypeName</code>:
  * Only events whose associated parent node has
@@ -67,20 +64,16 @@ import org.osgi.annotation.versioning.ConsumerType;
  * type-related restriction is placed on events received. Note that
  * specifying an empty array instead of <code>null</code> would result in no
  * nodes types being listened to.
- * </li>
  * <li>
  * <code>noLocal</code>: if <code>true</code>, then events
  * generated by the session through which the listener was registered are
  * ignored. Otherwise, they are not ignored.
- * </li>
  * <li>
  * <code>noExternal</code>: if <code>true</code>, then events
  * from external cluster nodes are ignored. Otherwise, they are not ignored.
- * </li>
  * <li>
  * <code>noInternal</code>: if <code>true</code>, then events
  * from this cluster node are ignored. Otherwise, they are not ignored.
- * </li>
  * </ul>
  * The restrictions are "ANDed" together. In other words, for a particular node to be "listened to" it
  * must meet all the restrictions.
diff --git a/oak-jackrabbit-api/src/main/java/org/apache/jackrabbit/api/security/JackrabbitAccessControlManager.java b/oak-jackrabbit-api/src/main/java/org/apache/jackrabbit/api/security/JackrabbitAccessControlManager.java
index 35e9c341df..cd01a7591e 100644
--- a/oak-jackrabbit-api/src/main/java/org/apache/jackrabbit/api/security/JackrabbitAccessControlManager.java
+++ b/oak-jackrabbit-api/src/main/java/org/apache/jackrabbit/api/security/JackrabbitAccessControlManager.java
@@ -222,8 +222,8 @@ public interface JackrabbitAccessControlManager extends AccessControlManager {
      * must be an existing node. This is equivalent to {@link #getPrivileges(String)} and 
      * {@link #hasPrivileges(String, Privilege[])} but allows for easy resolution of aggregated privileges 
      * (like e.g. jcr:all) and repeated evaluation if the editing session has privileges granted 
-     * at the given target node.</p>
-     * 
+     * at the given target node.
+     * <p>
      * Note: For backwards compatibility this method comes with a default implementation that computes the {@link PrivilegeCollection}
      * using regular JCR/Jackrabbit API, which might not be efficient. Implementations of {@link JackrabbitAccessControlManager} 
      * are therefore expected to overwrite the default.
@@ -245,8 +245,8 @@ public interface JackrabbitAccessControlManager extends AccessControlManager {
      * must be an existing node. This is equivalent to {@link #getPrivileges(String,Set)} and 
      * {@link #hasPrivileges(String, Set, Privilege[])} but allows for easy resolution of aggregated privileges 
      * (like e.g. jcr:all) and repeated evaluation if the editing session has privileges granted 
-     * at the given target node.</p>
-     *
+     * at the given target node.
+     * <p>
      * Note: For backwards compatibility this method comes with a default implementation that computes the {@link PrivilegeCollection}
      * using regular JCR/Jackrabbit API, which might not be efficient. Implementations of {@link JackrabbitAccessControlManager}
      * are therefore expected to overwrite the default.
@@ -268,8 +268,8 @@ public interface JackrabbitAccessControlManager extends AccessControlManager {
     /**
      * <p>Returns the {@link PrivilegeCollection} for the specified <code>privilegeNames</code>.
      * Since the privilege names are JCR names, they may be passed in either
-     * qualified or expanded form (see specification for details on JCR names).</p>
-     * 
+     * qualified or expanded form (see specification for details on JCR names).
+     * <p>
      * Note: For backwards compatibility this method comes with a default implementation that computes the {@link PrivilegeCollection}
      * using regular JCR/Jackrabbit API, which might not be efficient. Implementations of {@link JackrabbitAccessControlManager}
      * are therefore expected to overwrite the default.
diff --git a/oak-jackrabbit-api/src/main/java/org/apache/jackrabbit/api/security/authorization/PrincipalSetPolicy.java b/oak-jackrabbit-api/src/main/java/org/apache/jackrabbit/api/security/authorization/PrincipalSetPolicy.java
index a3a76d99d2..651ac7d50e 100644
--- a/oak-jackrabbit-api/src/main/java/org/apache/jackrabbit/api/security/authorization/PrincipalSetPolicy.java
+++ b/oak-jackrabbit-api/src/main/java/org/apache/jackrabbit/api/security/authorization/PrincipalSetPolicy.java
@@ -37,7 +37,7 @@ import org.osgi.annotation.versioning.ProviderType;
  * remains an implementation detail. Similarly a given permission model is
  * in charge of defining the interactions and effects different
  * {@link AccessControlPolicy policies} will have if used together in the same
- * repository.</p>
+ * repository.
  */
 @ProviderType
 public interface PrincipalSetPolicy extends AccessControlPolicy {
diff --git a/oak-jackrabbit-api/src/main/java/org/apache/jackrabbit/api/security/authorization/PrivilegeCollection.java b/oak-jackrabbit-api/src/main/java/org/apache/jackrabbit/api/security/authorization/PrivilegeCollection.java
index 623a98d0b8..0e43de2e09 100644
--- a/oak-jackrabbit-api/src/main/java/org/apache/jackrabbit/api/security/authorization/PrivilegeCollection.java
+++ b/oak-jackrabbit-api/src/main/java/org/apache/jackrabbit/api/security/authorization/PrivilegeCollection.java
@@ -33,7 +33,7 @@ import org.osgi.annotation.versioning.ProviderType;
 /**
  * <p>Wrapper around a set of {@link Privilege}s that allows to test if a given list of privilege names in included. This 
  * avoids repeated calls to {@link AccessControlManager#hasPrivileges(String, Privilege[])} or having to manually resolve 
- * the privilege aggregation when using {@link AccessControlManager#getPrivileges(String)}.</p>
+ * the privilege aggregation when using {@link AccessControlManager#getPrivileges(String)}.
  * 
  * While a {@link PrivilegeCollection.Default default} is available for backwards compatibility, it uses regular 
  * JCR API. Therefore it is recommended to provide custom implementations of 
diff --git a/oak-jackrabbit-api/src/main/java/org/apache/jackrabbit/api/security/user/Authorizable.java b/oak-jackrabbit-api/src/main/java/org/apache/jackrabbit/api/security/user/Authorizable.java
index 224deeacdd..d9213ed59d 100644
--- a/oak-jackrabbit-api/src/main/java/org/apache/jackrabbit/api/security/user/Authorizable.java
+++ b/oak-jackrabbit-api/src/main/java/org/apache/jackrabbit/api/security/user/Authorizable.java
@@ -51,9 +51,9 @@ import org.osgi.annotation.versioning.ProviderType;
  * The interfaces derived from Authorizable are defined as follows:
  * <ul>
  * <li>{@link User}: defined to be an Authorizable that can be authenticated
- * (by using Credentials) and impersonated.</li>
+ * (by using Credentials) and impersonated.
  * <li>{@link Group}: defined to be a collection of other
- * <code>Authorizable</code>s.</li>
+ * <code>Authorizable</code>s.
  * </ul>
  *
  * @see User
diff --git a/oak-jcr/src/main/java/org/apache/jackrabbit/oak/jcr/Jcr.java b/oak-jcr/src/main/java/org/apache/jackrabbit/oak/jcr/Jcr.java
index 012d8de4c5..7b3bb91146 100644
--- a/oak-jcr/src/main/java/org/apache/jackrabbit/oak/jcr/Jcr.java
+++ b/oak-jcr/src/main/java/org/apache/jackrabbit/oak/jcr/Jcr.java
@@ -59,11 +59,11 @@ import org.jetbrains.annotations.NotNull;
  * <p>The backing {@linkplain ContentRepository} instance will be constructed with
  * reasonable defaults and additional components can be registered by calling
  * the {@code with} methods. Note that it is not possible to remove components
- * once registered.</p>
+ * once registered.
  *
  * <p>The Jcr builder is a lazy initializer, to have a working repository make sure
  * you call {@link Jcr#createContentRepository()} or
- * {@link Jcr#createRepository()}.</p>
+ * {@link Jcr#createRepository()}.
  */
 public class Jcr {
     public static final int DEFAULT_OBSERVATION_QUEUE_LENGTH = BackgroundObserver.DEFAULT_QUEUE_SIZE;
diff --git a/oak-jcr/src/main/java/org/apache/jackrabbit/oak/jcr/delegate/package-info.java b/oak-jcr/src/main/java/org/apache/jackrabbit/oak/jcr/delegate/package-info.java
index 1f10177df6..eccaea43b7 100644
--- a/oak-jcr/src/main/java/org/apache/jackrabbit/oak/jcr/delegate/package-info.java
+++ b/oak-jcr/src/main/java/org/apache/jackrabbit/oak/jcr/delegate/package-info.java
@@ -29,18 +29,18 @@
  *
  * <b>Responsibilities of JCR API implementation classes:</b>
  * <ul>
- * <li>Prevent access to internals.</li>
- * <li>Name/path mapping for both method arguments and return values.</li>
- * <li>Tracking and instantiation of other JCR implementation objects.</li>
- * <li>Conversion from JCR Values to PropertyState instances and vice versa.</li>
- * <li>No direct access to the Oak API</li>
+ * <li>Prevent access to internals.
+ * <li>Name/path mapping for both method arguments and return values.
+ * <li>Tracking and instantiation of other JCR implementation objects.
+ * <li>Conversion from JCR Values to PropertyState instances and vice versa.
+ * <li>No direct access to the Oak API
  * </ul>
  *
  * <b>Responsibilities of the delegate classes:</b>
  * <ul>
- * <li>Business logic associated with complex JCR operations.</li>
- * <li>Provide means for state invariant checking.</li>
- * <li>Must no refer to neither the JCR API nor its implementation classes.</li>
+ * <li>Business logic associated with complex JCR operations.
+ * <li>Provide means for state invariant checking.
+ * <li>Must no refer to neither the JCR API nor its implementation classes.
  * </ul>
  */
 package org.apache.jackrabbit.oak.jcr.delegate;
diff --git a/oak-jcr/src/test/java/org/apache/jackrabbit/oak/jcr/CompatibilityIssuesTest.java b/oak-jcr/src/test/java/org/apache/jackrabbit/oak/jcr/CompatibilityIssuesTest.java
index c26f09929d..976ea39446 100644
--- a/oak-jcr/src/test/java/org/apache/jackrabbit/oak/jcr/CompatibilityIssuesTest.java
+++ b/oak-jcr/src/test/java/org/apache/jackrabbit/oak/jcr/CompatibilityIssuesTest.java
@@ -198,7 +198,7 @@ public class CompatibilityIssuesTest extends AbstractRepositoryTest {
     /**
      * Type checks are deferred to the Session#save call instead of the
      * Node#addNode method like in Jackrabbit2.
-     * <p>Stacktrace in JR2:</p>
+     * <p>Stacktrace in JR2:
      * <pre>
      * {@code
      * javax.jcr.nodetype.ConstraintViolationException: No child node definition for fail found in node /f1362578560413
@@ -211,7 +211,7 @@ public class CompatibilityIssuesTest extends AbstractRepositoryTest {
      *     at org.apache.jackrabbit.core.NodeImpl.addNode(NodeImpl.java:1774)
      * }
      * <pre>
-     * <p>Stacktrace in Oak:</p>
+     * <p>Stacktrace in Oak:
      * <pre>
      * {@code
      *javax.jcr.nodetype.ConstraintViolationException
diff --git a/oak-jcr/src/test/java/org/apache/jackrabbit/oak/jcr/DocumentClusterIT.java b/oak-jcr/src/test/java/org/apache/jackrabbit/oak/jcr/DocumentClusterIT.java
index e24919ba5f..07d65ab535 100644
--- a/oak-jcr/src/test/java/org/apache/jackrabbit/oak/jcr/DocumentClusterIT.java
+++ b/oak-jcr/src/test/java/org/apache/jackrabbit/oak/jcr/DocumentClusterIT.java
@@ -116,7 +116,6 @@ public abstract class DocumentClusterIT {
     /**
      * <p> 
      * ensures that the cluster is aligned by running all the background operations
-     * </p>
      *
      * @param mks the list of {@link DocumentMK} composing the cluster. Cannot be null.
      */
@@ -240,11 +239,9 @@ public abstract class DocumentClusterIT {
      * the default {@link #initRepository(Class, List, List, int, int)} uses this for registering
      * any additional {@link IndexEditorProvider}. Override and return all the provider you'd like
      * to have running other than the OOTB one.
-     * </p>
-     * 
+     *
      * <p>
      * the default implementation returns {@code null}
-     * </p>
      * @return
      */
     protected Set<IndexEditorProvider> additionalIndexEditorProviders() {
diff --git a/oak-jcr/src/test/java/org/apache/jackrabbit/oak/jcr/LargeOperationIT.java b/oak-jcr/src/test/java/org/apache/jackrabbit/oak/jcr/LargeOperationIT.java
index 7ad987fdc9..dfd6cd4f5d 100644
--- a/oak-jcr/src/test/java/org/apache/jackrabbit/oak/jcr/LargeOperationIT.java
+++ b/oak-jcr/src/test/java/org/apache/jackrabbit/oak/jcr/LargeOperationIT.java
@@ -742,7 +742,7 @@ public class LargeOperationIT {
          * associated with a <a href="http://en.wikipedia.org/wiki/Binomial_test"> Binomial test</a>.
          * <p>
          * The number returned is the smallest significance level at which one can reject the null hypothesis.
-         * The form of the hypothesis depends on {@code alternativeHypothesis}.</p>
+         * The form of the hypothesis depends on {@code alternativeHypothesis}.
          * <p>
          * The p-Value represents the likelihood of getting a result at least as extreme as the sample,
          * given the provided {@code probability} of success on a single trial. For single-sided tests,
@@ -750,7 +750,7 @@ public class LargeOperationIT {
          * the implementation works as follows: we start by looking at the most extreme cases
          * (0 success and n success where n is the number of trials from the sample) and determine their likelihood.
          * The lower value is added to the p-Value (if both values are equal, both are added). Then we continue with
-         * the next extreme value, until we added the value for the actual observed sample.</p>
+         * the next extreme value, until we added the value for the actual observed sample.
          * <p>
          * <strong>Preconditions</strong>:
          * <ul>
@@ -758,7 +758,7 @@ public class LargeOperationIT {
          * <li>Number of successes must be &ge; 0.</li>
          * <li>Number of successes must be &le; number of trials.</li>
          * <li>Probability must be &ge; 0 and &le; 1.</li>
-         * </ul></p>
+         * </ul>
          *
          * @param numberOfTrials number of trials performed
          * @param numberOfSuccesses number of successes observed
diff --git a/oak-lucene/src/main/java/org/apache/jackrabbit/oak/plugins/index/lucene/LuceneIndex.java b/oak-lucene/src/main/java/org/apache/jackrabbit/oak/plugins/index/lucene/LuceneIndex.java
index f658ccdc40..cd80307721 100644
--- a/oak-lucene/src/main/java/org/apache/jackrabbit/oak/plugins/index/lucene/LuceneIndex.java
+++ b/oak-lucene/src/main/java/org/apache/jackrabbit/oak/plugins/index/lucene/LuceneIndex.java
@@ -126,16 +126,16 @@ import static org.apache.lucene.search.BooleanClause.Occur.SHOULD;
  *
  * Under it follows the index definition node that:
  * <ul>
- * <li>must be of type <code>oak:QueryIndexDefinition</code></li>
- * <li>must have the <code>type</code> property set to <b><code>lucene</code></b></li>
- * <li>must have the <code>async</code> property set to <b><code>async</code></b></li>
+ * <li>must be of type <code>oak:QueryIndexDefinition</code>
+ * <li>must have the <code>type</code> property set to <b><code>lucene</code></b>
+ * <li>must have the <code>async</code> property set to <b><code>async</code></b>
  * </ul>
  * <p>
  * Optionally you can add
  * <ul>
- * <li>what subset of property types to be included in the index via the <code>includePropertyTypes</code> property</li>
- * <li>a blacklist of property names: what property to be excluded from the index via the <code>excludePropertyNames</code> property</li>
- * <li>the <code>reindex</code> flag which when set to <code>true</code>, triggers a full content re-index.</li>
+ * <li>what subset of property types to be included in the index via the <code>includePropertyTypes</code> property
+ * <li>a blacklist of property names: what property to be excluded from the index via the <code>excludePropertyNames</code> property
+ * <li>the <code>reindex</code> flag which when set to <code>true</code>, triggers a full content re-index.
  * </ul>
  * <pre>{@code
  * {
diff --git a/oak-lucene/src/main/java/org/apache/jackrabbit/oak/plugins/index/lucene/LucenePropertyIndex.java b/oak-lucene/src/main/java/org/apache/jackrabbit/oak/plugins/index/lucene/LucenePropertyIndex.java
index e0be25b24a..a27890a6b1 100644
--- a/oak-lucene/src/main/java/org/apache/jackrabbit/oak/plugins/index/lucene/LucenePropertyIndex.java
+++ b/oak-lucene/src/main/java/org/apache/jackrabbit/oak/plugins/index/lucene/LucenePropertyIndex.java
@@ -169,16 +169,16 @@ import static org.apache.lucene.search.BooleanClause.Occur.MUST_NOT;
  *
  * Under it follows the index definition node that:
  * <ul>
- * <li>must be of type <code>oak:QueryIndexDefinition</code></li>
- * <li>must have the <code>type</code> property set to <b><code>lucene</code></b></li>
- * <li>must have the <code>async</code> property set to <b><code>async</code></b></li>
+ * <li>must be of type <code>oak:QueryIndexDefinition</code>
+ * <li>must have the <code>type</code> property set to <b><code>lucene</code></b>
+ * <li>must have the <code>async</code> property set to <b><code>async</code></b>
  * </ul>
  * <p>
  * Optionally you can add
  * <ul>
- * <li>what subset of property types to be included in the index via the <code>includePropertyTypes</code> property</li>
- * <li>a blacklist of property names: what property to be excluded from the index via the <code>excludePropertyNames</code> property</li>
- * <li>the <code>reindex</code> flag which when set to <code>true</code>, triggers a full content re-index.</li>
+ * <li>what subset of property types to be included in the index via the <code>includePropertyTypes</code> property
+ * <li>a blacklist of property names: what property to be excluded from the index via the <code>excludePropertyNames</code> property
+ * <li>the <code>reindex</code> flag which when set to <code>true</code>, triggers a full content re-index.
  * </ul>
  * <pre>{@code
  * {
diff --git a/oak-run-commons/src/main/java/org/apache/jackrabbit/oak/index/indexer/document/flatfile/DefaultAheadOfTimeBlobDownloader.java b/oak-run-commons/src/main/java/org/apache/jackrabbit/oak/index/indexer/document/flatfile/DefaultAheadOfTimeBlobDownloader.java
index 4876ece169..d40dc17732 100644
--- a/oak-run-commons/src/main/java/org/apache/jackrabbit/oak/index/indexer/document/flatfile/DefaultAheadOfTimeBlobDownloader.java
+++ b/oak-run-commons/src/main/java/org/apache/jackrabbit/oak/index/indexer/document/flatfile/DefaultAheadOfTimeBlobDownloader.java
@@ -63,8 +63,8 @@ import java.util.concurrent.atomic.LongAdder;
  * This AOT download is intended to run asynchronously with the indexing thread. It starts the following threads:
  * <ul>
  * <li>[scanner] - scans the FFS, searching for blobs to download. A blob is selected for download if it is a binary property
- * in a node whose name matches the suffix given as parameter to this class, and is non-inlined.</li>
- * <li>[downloader-n] - a configurable number of threads that download the blobs that were discovered by the scanner thread.</li>
+ * in a node whose name matches the suffix given as parameter to this class, and is non-inlined.
+ * <li>[downloader-n] - a configurable number of threads that download the blobs that were discovered by the scanner thread.
  * </ul>
  * The indexer should periodically call {@link #updateIndexed(long)} to inform the AOT downlaoder of the last line
  * indexed. This is necessary to keep the AOT downloader more or less in sync with the indexer, that is, to prevent it
diff --git a/oak-run-commons/src/main/java/org/apache/jackrabbit/oak/index/indexer/document/flatfile/linkedList/PersistedLinkedListV2.java b/oak-run-commons/src/main/java/org/apache/jackrabbit/oak/index/indexer/document/flatfile/linkedList/PersistedLinkedListV2.java
index b286ed677d..25e1d7d9f4 100644
--- a/oak-run-commons/src/main/java/org/apache/jackrabbit/oak/index/indexer/document/flatfile/linkedList/PersistedLinkedListV2.java
+++ b/oak-run-commons/src/main/java/org/apache/jackrabbit/oak/index/indexer/document/flatfile/linkedList/PersistedLinkedListV2.java
@@ -41,8 +41,8 @@ import java.util.Iterator;
  * persistent store the nodes only when the cache is full. The in-memory cache is limited by two parameters:
  *
  * <ul>
- *     <li>cacheSize: the maximum number of elements to keep in the in-memory cache</li>
- *     <li>cacheSizeMB: the maximum size of the in-memory cache in MB</li>
+ *     <li>cacheSize: the maximum number of elements to keep in the in-memory cache
+ *     <li>cacheSizeMB: the maximum size of the in-memory cache in MB
  * </ul>
  * <p>
  * The recommended configuration is to rely on the total memory usage to limit the cache, giving as much memory as
diff --git a/oak-run-commons/src/main/java/org/apache/jackrabbit/oak/index/indexer/document/flatfile/pipelined/PipelinedUtils.java b/oak-run-commons/src/main/java/org/apache/jackrabbit/oak/index/indexer/document/flatfile/pipelined/PipelinedUtils.java
index 50062d25b4..b5cf018603 100644
--- a/oak-run-commons/src/main/java/org/apache/jackrabbit/oak/index/indexer/document/flatfile/pipelined/PipelinedUtils.java
+++ b/oak-run-commons/src/main/java/org/apache/jackrabbit/oak/index/indexer/document/flatfile/pipelined/PipelinedUtils.java
@@ -25,7 +25,7 @@ import java.util.Locale;
 public class PipelinedUtils {
     /**
      * <p>Format a percentage as a string with 2 decimal places. For instance:
-     * <code>formatAsPercentage(52, 1000)</code> returns <code>"5.20"</code>.</p>
+     * <code>formatAsPercentage(52, 1000)</code> returns <code>"5.20"</code>.
      */
     public static String formatAsPercentage(long numerator, long denominator) {
         if (denominator == 0) {
diff --git a/oak-run/src/test/java/org/apache/jackrabbit/oak/run/FrozenNodeReferenceCreator.java b/oak-run/src/test/java/org/apache/jackrabbit/oak/run/FrozenNodeReferenceCreator.java
index cd47c137ba..91097659b4 100644
--- a/oak-run/src/test/java/org/apache/jackrabbit/oak/run/FrozenNodeReferenceCreator.java
+++ b/oak-run/src/test/java/org/apache/jackrabbit/oak/run/FrozenNodeReferenceCreator.java
@@ -37,10 +37,10 @@ import joptsimple.OptionSpec;
 /**
  * Test class that simplifies creation of a property of type Reference, as that's not
  * easily achievable without a tool.
- * <p/>
+ * <p>
  * The idea is that this might help testing the corresponding FrozenNodeRefsByScanningCommand
  * and FrozenNodeRefsUsingIndexCommand commands.
- * <p/>
+ * <p>
  * Example:
  * <pre>
  * java -mx4g -cp oak-run-*-tests.jar org.apache.jackrabbit.oak.run.FrozenNodeReferenceCreator mongodb://localhost/&lt;dbname&gt; -user=admin -password=admin -testCreateRefPath=&lt;mypath&gt; -testCreateRefProp=&lt;mypropertyname&gt; -testCreateRefUuid=&lt;myuuid&gt; -read-write=true
diff --git a/oak-search-elastic/src/main/java/org/apache/jackrabbit/oak/plugins/index/elastic/ElasticIndexStatistics.java b/oak-search-elastic/src/main/java/org/apache/jackrabbit/oak/plugins/index/elastic/ElasticIndexStatistics.java
index 7b9dc8f12b..53bd9b7cf5 100644
--- a/oak-search-elastic/src/main/java/org/apache/jackrabbit/oak/plugins/index/elastic/ElasticIndexStatistics.java
+++ b/oak-search-elastic/src/main/java/org/apache/jackrabbit/oak/plugins/index/elastic/ElasticIndexStatistics.java
@@ -53,9 +53,9 @@ import co.elastic.clients.elasticsearch.core.CountRequest;
  * in background when accessed after 1 minute (60 seconds). These values can be overwritten with the following system properties:
  *
  * <ul>
- *     <li>{@code oak.elastic.statsMaxSize}</li>
- *     <li>{@code oak.elastic.statsExpireSeconds}</li>
- *     <li>{@code oak.elastic.statsRefreshSeconds}</li>
+ *     <li>{@code oak.elastic.statsMaxSize}
+ *     <li>{@code oak.elastic.statsExpireSeconds}
+ *     <li>{@code oak.elastic.statsRefreshSeconds}
  * </ul>
  */
 public class ElasticIndexStatistics implements IndexStatistics {
diff --git a/oak-search-elastic/src/main/java/org/apache/jackrabbit/oak/plugins/index/elastic/query/ElasticSpellcheckIterator.java b/oak-search-elastic/src/main/java/org/apache/jackrabbit/oak/plugins/index/elastic/query/ElasticSpellcheckIterator.java
index fedc0d551c..633d6a7eef 100644
--- a/oak-search-elastic/src/main/java/org/apache/jackrabbit/oak/plugins/index/elastic/query/ElasticSpellcheckIterator.java
+++ b/oak-search-elastic/src/main/java/org/apache/jackrabbit/oak/plugins/index/elastic/query/ElasticSpellcheckIterator.java
@@ -48,8 +48,8 @@ import java.util.stream.Stream;
  * <p>
  * It requires 2 calls to Elastic:
  * <ul>
- *     <li>get all the possible spellchecked suggestions</li>
- *     <li>multi search query to get a sample of 100 results for each suggestion for ACL check</li>
+ *     <li>get all the possible spellchecked suggestions
+ *     <li>multi search query to get a sample of 100 results for each suggestion for ACL check
  * </ul>
  */
 class ElasticSpellcheckIterator implements ElasticQueryIterator {
diff --git a/oak-search/src/main/java/org/apache/jackrabbit/oak/plugins/index/search/update/RefreshOnReadPolicy.java b/oak-search/src/main/java/org/apache/jackrabbit/oak/plugins/index/search/update/RefreshOnReadPolicy.java
index e615845062..e8a9f73f81 100644
--- a/oak-search/src/main/java/org/apache/jackrabbit/oak/plugins/index/search/update/RefreshOnReadPolicy.java
+++ b/oak-search/src/main/java/org/apache/jackrabbit/oak/plugins/index/search/update/RefreshOnReadPolicy.java
@@ -37,9 +37,9 @@ import org.apache.jackrabbit.oak.stats.Clock;
  *
  * <ul>
  * <li>Upon write if refreshDelta time has elapsed then readers would be
- * refreshed</li>
+ * refreshed
  * <li>Upon read if index is found to be updated then again readers would be
- * refreshed</li>
+ * refreshed
  * </ul>
  *
  * <p>
diff --git a/oak-search/src/main/java/org/apache/jackrabbit/oak/plugins/index/search/util/LMSEstimator.java b/oak-search/src/main/java/org/apache/jackrabbit/oak/plugins/index/search/util/LMSEstimator.java
index 2e8ba2a8a7..d32e2ca041 100644
--- a/oak-search/src/main/java/org/apache/jackrabbit/oak/plugins/index/search/util/LMSEstimator.java
+++ b/oak-search/src/main/java/org/apache/jackrabbit/oak/plugins/index/search/util/LMSEstimator.java
@@ -74,7 +74,7 @@ public class LMSEstimator {
 
     /**
      * Get the input value for a certain feature (by index) in the given filter.
-     * <p/>
+     * <p>
      * A filter is represented as a vector in R^5 where
      * i_0 : no. of property restrictions
      * i_1 : 1 if any native constraint exists in the filter, 0 otherwise
diff --git a/oak-search/src/test/java/org/apache/jackrabbit/oak/plugins/index/IndexAggregation2CommonTest.java b/oak-search/src/test/java/org/apache/jackrabbit/oak/plugins/index/IndexAggregation2CommonTest.java
index 9970be4b77..d5befb41f9 100644
--- a/oak-search/src/test/java/org/apache/jackrabbit/oak/plugins/index/IndexAggregation2CommonTest.java
+++ b/oak-search/src/test/java/org/apache/jackrabbit/oak/plugins/index/IndexAggregation2CommonTest.java
@@ -306,7 +306,6 @@ public abstract class IndexAggregation2CommonTest extends AbstractQueryTest {
     /**
      * <p>
      * convenience method that create an "asset" structure like
-     * </p>
      * <p>
      * <pre>
      *  "parent" : {
@@ -322,9 +321,7 @@ public abstract class IndexAggregation2CommonTest extends AbstractQueryTest {
      *  }
      * </pre>
      * <p>
-     * <p>
      * and returns the {@code metadata} node
-     * </p>
      *
      * @param parent   the parent under which creating the node
      * @param nodeName the node name to be used
@@ -348,7 +345,6 @@ public abstract class IndexAggregation2CommonTest extends AbstractQueryTest {
     /**
      * <p>
      * convenience method that create an "page" structure like
-     * </p>
      * <p>
      * <pre>
      *  "parent" : {
@@ -361,9 +357,7 @@ public abstract class IndexAggregation2CommonTest extends AbstractQueryTest {
      *  }
      * </pre>
      * <p>
-     * <p>
      * and returns the {@code jcr:content} node
-     * </p>
      *
      * @param parent   the parent under which creating the node
      * @param nodeName the node name to be used
diff --git a/oak-security-spi/src/main/java/org/apache/jackrabbit/oak/plugins/tree/TreeType.java b/oak-security-spi/src/main/java/org/apache/jackrabbit/oak/plugins/tree/TreeType.java
index 626ba364e3..694e78a49c 100644
--- a/oak-security-spi/src/main/java/org/apache/jackrabbit/oak/plugins/tree/TreeType.java
+++ b/oak-security-spi/src/main/java/org/apache/jackrabbit/oak/plugins/tree/TreeType.java
@@ -21,15 +21,15 @@ package org.apache.jackrabbit.oak.plugins.tree;
  * or primary type. Currently the following types are supported:
  *
  * <ul>
- *     <li>{@link #DEFAULT}: the default type for trees that don't match any of the following types.</li>
+ *     <li>{@link #DEFAULT}: the default type for trees that don't match any of the following types.
  *     <li>{@link #ACCESS_CONTROL}: A tree that stores access control content
- *     and requires special access {@link org.apache.jackrabbit.oak.spi.security.authorization.permission.Permissions#READ_ACCESS_CONTROL permissions}.</li>
+ *     and requires special access {@link org.apache.jackrabbit.oak.spi.security.authorization.permission.Permissions#READ_ACCESS_CONTROL permissions}.
  *     <li>{@link #HIDDEN}: a hidden tree whose name starts with ":".
- *     Please note that the whole subtree of a hidden node is considered hidden.</li>
- *     <li>{@link #INTERNAL}: repository internal content that is not hidden (e.g. permission store)</li>
+ *     Please note that the whole subtree of a hidden node is considered hidden.
+ *     <li>{@link #INTERNAL}: repository internal content that is not hidden (e.g. permission store)
  *     <li>{@link #VERSION}: if a given tree is located within
  *     any of the version related stores defined by JSR 283. Depending on the
- *     permission evaluation implementation those items require special treatment.</li>
+ *     permission evaluation implementation those items require special treatment.
  * </ul>
  */
 public enum TreeType {
diff --git a/oak-security-spi/src/main/java/org/apache/jackrabbit/oak/spi/security/authentication/AbstractLoginModule.java b/oak-security-spi/src/main/java/org/apache/jackrabbit/oak/spi/security/authentication/AbstractLoginModule.java
index 5eb2dac599..4434d8c3b4 100644
--- a/oak-security-spi/src/main/java/org/apache/jackrabbit/oak/spi/security/authentication/AbstractLoginModule.java
+++ b/oak-security-spi/src/main/java/org/apache/jackrabbit/oak/spi/security/authentication/AbstractLoginModule.java
@@ -78,21 +78,20 @@ import static java.util.concurrent.TimeUnit.NANOSECONDS;
  * Initialization of this abstract module sets the following protected instance
  * fields:
  * <ul>
- * <li>subject: The subject to be authenticated,</li>
- * <li>callbackHandler: The callback handler passed to the login module,</li>
- * <li>shareState: The map used to share state information with other login modules,</li>
+ * <li>subject: The subject to be authenticated,
+ * <li>callbackHandler: The callback handler passed to the login module,
+ * <li>shareState: The map used to share state information with other login modules,
  * <li>options: The configuration options of this login module as specified
- * in the {@link javax.security.auth.login.Configuration}.</li>
+ * in the {@link javax.security.auth.login.Configuration}.
  * </ul>
- * </li>
  * <li>{@link LoginModule#logout() Logout}:
  * If the authenticated subject is not empty this logout implementation
  * attempts to clear both principals and public credentials and returns
- * {@code true}.</li>
+ * {@code true}.
  * <li>{@link LoginModule#abort() Abort}: Clears the state of this login
  * module by setting all private instance variables created in phase 1 or 2
  * to {@code null}. Subclasses are in charge of releasing their own state
- * information by either overriding {@link #clearState()}.</li>
+ * information by either overriding {@link #clearState()}.
  * </ul>
  * <p>
  * <h2>Utility Methods</h2>
@@ -101,42 +100,42 @@ import static java.util.concurrent.TimeUnit.NANOSECONDS;
  * <ul>
  * <li>{@link #clearState()}: Clears all private state information that has
  * be created during login. This method in called in {@link #abort()} and
- * subclasses are expected to override this method.</li>
+ * subclasses are expected to override this method.
  * <li>{@link #getSupportedCredentials()}: Abstract method used by
  * {@link #getCredentials()} that reveals which credential implementations
- * are supported by the {@code LoginModule}.</li>
+ * are supported by the {@code LoginModule}.
  * <li>{@link #getCredentials()}: Tries to retrieve valid (supported)
  * Credentials in the following order:
  * <ol>
- * <li>using a {@link CredentialsCallback},</li>
+ * <li>using a {@link CredentialsCallback},
  * <li>looking for a {@link #SHARED_KEY_CREDENTIALS} entry in the shared
- * state (see also {@link #getSharedCredentials()} and finally by</li>
- * <li>searching for valid credentials in the subject.</li>
- * </ol></li>
+ * state (see also {@link #getSharedCredentials()} and finally by
+ * <li>searching for valid credentials in the subject.
+ * </ol>
  * <li>{@link #getSharedCredentials()}: This method returns credentials
  * passed to the login module with the share state. The key to share credentials
  * with a another module extending from this base class is
  * {@link #SHARED_KEY_CREDENTIALS}. Note, that this method does not verify
  * if the credentials provided by the shared state are
- * {@link #getSupportedCredentials() supported}.</li>
+ * {@link #getSupportedCredentials() supported}.
  * <li>{@link #getSharedLoginName()}: If the shared state contains an entry
- * for {@link #SHARED_KEY_LOGIN_NAME} this method returns the value as login name.</li>
+ * for {@link #SHARED_KEY_LOGIN_NAME} this method returns the value as login name.
  * <li>{@link #getSecurityProvider()}: Returns the configured security
- * provider or {@code null}.</li>
+ * provider or {@code null}.
  * <li>{@link #getRoot()}: Provides access to the latest state of the
  * repository in order to retrieve user or principal information required to
  * authenticate the subject as well as to write back information during
- * {@link #commit()}.</li>
+ * {@link #commit()}.
  * <li>{@link #getUserManager()}: Returns an instance of the configured
- * {@link UserManager} or {@code null}.</li>
+ * {@link UserManager} or {@code null}.
  * <li>{@link #getPrincipalProvider()}: Returns an instance of the configured
- * principal provider or {@code null}.</li>
+ * principal provider or {@code null}.
  * <li>{@link #getPrincipals(String)}: Utility that returns all principals
  * associated with a given user id. This method might be be called after
  * successful authentication in order to be able to populate the subject
  * during {@link #commit()}. The implementation is a shortcut for calling
  * {@link PrincipalProvider#getPrincipals(String) getPrincipals(String userId}
- * on the provider exposed by {@link #getPrincipalProvider()}</li>
+ * on the provider exposed by {@link #getPrincipalProvider()}
  * </ul>
  */
 @ProviderType
diff --git a/oak-security-spi/src/main/java/org/apache/jackrabbit/oak/spi/security/authentication/GuestLoginModule.java b/oak-security-spi/src/main/java/org/apache/jackrabbit/oak/spi/security/authentication/GuestLoginModule.java
index 137515d714..829e784e86 100644
--- a/oak-security-spi/src/main/java/org/apache/jackrabbit/oak/spi/security/authentication/GuestLoginModule.java
+++ b/oak-security-spi/src/main/java/org/apache/jackrabbit/oak/spi/security/authentication/GuestLoginModule.java
@@ -44,11 +44,11 @@ import org.slf4j.LoggerFactory;
  *
  * <ol>
  *     <li>Try to retrieve JCR credentials from the {@link CallbackHandler} using
- *     the {@link CredentialsCallback}</li>
+ *     the {@link CredentialsCallback}
  *     <li>In case no credentials could be obtained it pushes a new instance of
  *     {@link GuestCredentials} to the shared stated. Subsequent login modules
  *     in the authentication process may retrieve the {@link GuestCredentials}
- *     instead of failing to obtain any credentials.</li>
+ *     instead of failing to obtain any credentials.
  * </ol>
  *
  * If this login module pushed {@link GuestLoginModule} to the shared state
diff --git a/oak-security-spi/src/main/java/org/apache/jackrabbit/oak/spi/security/authorization/accesscontrol/AccessControlConstants.java b/oak-security-spi/src/main/java/org/apache/jackrabbit/oak/spi/security/authorization/accesscontrol/AccessControlConstants.java
index 653f21a03f..b5fbd3b030 100644
--- a/oak-security-spi/src/main/java/org/apache/jackrabbit/oak/spi/security/authorization/accesscontrol/AccessControlConstants.java
+++ b/oak-security-spi/src/main/java/org/apache/jackrabbit/oak/spi/security/authorization/accesscontrol/AccessControlConstants.java
@@ -64,22 +64,20 @@ public interface AccessControlConstants {
      * An empty value array will make this restriction matching the target node only (i.e. equivalent to rep:glob=""). 
      * An array of property names will extend the effect of the restriction to properties of the target node that match 
      * the specified names. The {@link org.apache.jackrabbit.oak.spi.nodetype.NodeTypeConstants#RESIDUAL_NAME residual name '*'}  
-     * will match the target node and all it's properties.</p>
+     * will match the target node and all it's properties.
      * <p>
      * The corresponding restriction type is {@link org.apache.jackrabbit.oak.api.Type#STRINGS}
-     * </p>
      * <p>
      * Note: due to the support of {@link NodeTypeConstants#RESIDUAL_NAME}, which isn't a valid JCR name,
      * this restriction is defined to be of {@link org.apache.jackrabbit.oak.api.Type#STRINGS} instead of 
      * {@link org.apache.jackrabbit.oak.api.Type#NAMES}. Like the rep:glob restriction it will therefore not work with 
      * expanded JCR names or with remapped namespace prefixes.
-     * </p>
      * <p>
      * Note: In case of permission evaluation for a path pointing to a non-existing JCR item (see e.g. 
      * {@link javax.jcr.Session#hasPermission(String, String)}) a best-effort attempt is made to determine if the path 
      * may point to a property, default being that the path points to a non-existing node.
-     * </p>
-     * 
+     *
+     * <p>
      * Example:
      * <pre>
      * rep:current = []                =&gt; restriction applies to the target node only
@@ -96,19 +94,18 @@ public interface AccessControlConstants {
      * <p>Name of the optional multi-valued access control restriction that allows to combine more than one 
      * {@link #REP_GLOB} restriction. The effect is equivalent to defining multiple access control entries with a 
      * single {@link #REP_GLOB} restriction each and will match a given path or item if any of the specified glob-values 
-     * matches.</p>
+     * matches.
      * <p>
-     * Note, that an empty value array will never match any path/item.</p>
+     * Note, that an empty value array will never match any path/item.
      * <p>
      * The corresponding restriction type is {@link org.apache.jackrabbit.oak.api.Type#STRINGS}
-     * </p>
      */
     String REP_GLOBS = "rep:globs";
 
     /**
      * <p>Name of the optional multi-valued access control restriction that allows to limit the effect to one or multiple  
      * subtrees. It is a simplified variant of the common pattern using 2 {@link #REP_GLOB} wildcard patterns to grant or 
-     * deny access on a particular node in the subtree and all its descendent items.</p>
+     * deny access on a particular node in the subtree and all its descendent items.
      *
      * <pre>
      * NodePath = "/foo"
@@ -120,10 +117,10 @@ public interface AccessControlConstants {
      * cat/          |   all siblings or descendants of /foo that have an intermediate segment ending with "cat"
      * </pre>
      *  
-     * <p>Note, that variants of 'cat'-paths could also consist of multiple segments like e.g. '/cat/dog' or '/cat/dog'</p> 
-     * <p>Note, that in contrast to {@link #REP_GLOB}</p> no wildcard characters are used to specify the restriction.
-     * <p>Note, that an empty value array will never match any path/item.</p>
-     * <p>Note, that null values and empty string values will be omitted.</p>
+     * <p>Note, that variants of 'cat'-paths could also consist of multiple segments like e.g. '/cat/dog' or '/cat/dog'
+     * <p>Note, that in contrast to {@link #REP_GLOB} no wildcard characters are used to specify the restriction.
+     * <p>Note, that an empty value array will never match any path/item.
+     * <p>Note, that null values and empty string values will be omitted.
      */
     String REP_SUBTREES = "rep:subtrees";
 
diff --git a/oak-security-spi/src/main/java/org/apache/jackrabbit/oak/spi/security/authorization/permission/PermissionProvider.java b/oak-security-spi/src/main/java/org/apache/jackrabbit/oak/spi/security/authorization/permission/PermissionProvider.java
index 994eb0b7fb..0d81731639 100644
--- a/oak-security-spi/src/main/java/org/apache/jackrabbit/oak/spi/security/authorization/permission/PermissionProvider.java
+++ b/oak-security-spi/src/main/java/org/apache/jackrabbit/oak/spi/security/authorization/permission/PermissionProvider.java
@@ -60,7 +60,6 @@ public interface PermissionProvider {
      * <p>
      * Testing a name identifying an aggregate privilege is equivalent to testing
      * each non aggregate privilege name.
-     * </p>
      *
      * @param tree The tree to test for privileges being granted.
      * @param privilegeNames The name of the privileges.
@@ -114,7 +113,6 @@ public interface PermissionProvider {
      * {@link javax.jcr.Session#hasPermission(String, String)}. When more than one
      * action is specified in the {@code jcrActions} parameter, this method will
      * only return {@code true} if all of them are granted on the specified path.
-     * </p>
      *
      * @param oakPath A valid oak path.
      * @param jcrActions The JCR actions that should be tested separated by ','
diff --git a/oak-security-spi/src/main/java/org/apache/jackrabbit/oak/spi/security/user/UserConstants.java b/oak-security-spi/src/main/java/org/apache/jackrabbit/oak/spi/security/user/UserConstants.java
index 1abb3ae5c9..99ec99f207 100644
--- a/oak-security-spi/src/main/java/org/apache/jackrabbit/oak/spi/security/user/UserConstants.java
+++ b/oak-security-spi/src/main/java/org/apache/jackrabbit/oak/spi/security/user/UserConstants.java
@@ -217,7 +217,7 @@ public interface UserConstants {
      * User Management API expects that API consumers tests the auto-save
      * mode is enabled. Therefore this option should be considered a temporary
      * workaround after upgrading a repository to OAK; the affected code should
-     * be reviewed and adjusted accordingly.</p>
+     * be reviewed and adjusted accordingly.
      */
     String PARAM_SUPPORT_AUTOSAVE = "supportAutoSave";
 
diff --git a/oak-security-spi/src/main/java/org/apache/jackrabbit/oak/spi/security/user/action/AccessControlAction.java b/oak-security-spi/src/main/java/org/apache/jackrabbit/oak/spi/security/user/action/AccessControlAction.java
index f465bc3be7..3ef32bb13a 100644
--- a/oak-security-spi/src/main/java/org/apache/jackrabbit/oak/spi/security/user/action/AccessControlAction.java
+++ b/oak-security-spi/src/main/java/org/apache/jackrabbit/oak/spi/security/user/action/AccessControlAction.java
@@ -48,14 +48,14 @@ import org.slf4j.LoggerFactory;
  * granted on it's own 'home directory' being represented by the new node
  * associated with that new authorizable.
  *
- * <p>The following to configuration parameters are available with this implementation:</p>
+ * <p>The following to configuration parameters are available with this implementation:
  * <ul>
  *    <li><strong>groupPrivilegeNames</strong>: the value is expected to be a
  *    comma separated list of privileges that will be granted to the new group on
- *    the group node</li>
+ *    the group node
  *    <li><strong>userPrivilegeNames</strong>: the value is expected to be a
  *    comma separated list of privileges that will be granted to the new user on
- *    the user node.</li>
+ *    the user node.
  * </ul>
  * <p>Example configuration:
  * <pre>
@@ -64,7 +64,7 @@ import org.slf4j.LoggerFactory;
  * </pre>
  * <p>This configuration could for example lead to the following content
  * structure upon user or group creation. Note however that the resulting
- * structure depends on the actual access control management being in place:</p>
+ * structure depends on the actual access control management being in place:
  *
  * <pre>
  *     UserManager umgr = ((JackrabbitSession) session).getUserManager();
diff --git a/oak-security-spi/src/main/java/org/apache/jackrabbit/oak/spi/security/user/action/AuthorizableAction.java b/oak-security-spi/src/main/java/org/apache/jackrabbit/oak/spi/security/user/action/AuthorizableAction.java
index 1cde1fcc0b..5b4baabc93 100644
--- a/oak-security-spi/src/main/java/org/apache/jackrabbit/oak/spi/security/user/action/AuthorizableAction.java
+++ b/oak-security-spi/src/main/java/org/apache/jackrabbit/oak/spi/security/user/action/AuthorizableAction.java
@@ -33,15 +33,15 @@ import org.jetbrains.annotations.Nullable;
  * specific way to execute additional validation or write tasks upon
  *
  * <ul>
- * <li>{@link #onCreate User creation},</li>
- * <li>{@link #onCreate Group creation},</li>
- * <li>{@link #onRemove Authorizable removal} and</li>
- * <li>{@link #onPasswordChange User password modification}.</li>
+ * <li>{@link #onCreate User creation},
+ * <li>{@link #onCreate Group creation},
+ * <li>{@link #onRemove Authorizable removal} and
+ * <li>{@link #onPasswordChange User password modification}.
  * </ul>
  *
  * <p>Please be aware, that in contrast to {@link org.apache.jackrabbit.oak.spi.commit.Validator}
  * the authorizable actions will only be enforced when user related content
- * modifications are generated by using the user management API.</p>
+ * modifications are generated by using the user management API.
  *
  * <p>
  * <strong>Note:</strong> user management operations are defined to perform transient
diff --git a/oak-security-spi/src/main/java/org/apache/jackrabbit/oak/spi/security/user/action/GroupAction.java b/oak-security-spi/src/main/java/org/apache/jackrabbit/oak/spi/security/user/action/GroupAction.java
index fdbcd0265a..173a5dd2ae 100644
--- a/oak-security-spi/src/main/java/org/apache/jackrabbit/oak/spi/security/user/action/GroupAction.java
+++ b/oak-security-spi/src/main/java/org/apache/jackrabbit/oak/spi/security/user/action/GroupAction.java
@@ -29,21 +29,19 @@ import javax.jcr.RepositoryException;
  * changes to a {@link Group}'s members:
  *
  * <ul>
- * <li>{@link #onMemberAdded(Group, Authorizable, Root, NamePathMapper)}</li>
- * <li>{@link #onMembersAdded(Group, Iterable, Iterable, Root, NamePathMapper)}</li>
- * <li>{@link #onMembersAddedContentId(Group, Iterable, Iterable, Root, NamePathMapper)} </li>
- * <li>{@link #onMemberRemoved(Group, Authorizable, Root, NamePathMapper)}</li>
- * <li>{@link #onMembersRemoved(Group, Iterable, Iterable, Root, NamePathMapper)}</li>
+ * <li>{@link #onMemberAdded(Group, Authorizable, Root, NamePathMapper)}
+ * <li>{@link #onMembersAdded(Group, Iterable, Iterable, Root, NamePathMapper)}
+ * <li>{@link #onMembersAddedContentId(Group, Iterable, Iterable, Root, NamePathMapper)} 
+ * <li>{@link #onMemberRemoved(Group, Authorizable, Root, NamePathMapper)}
+ * <li>{@link #onMembersRemoved(Group, Iterable, Iterable, Root, NamePathMapper)}
  * </ul>
  *
  * <p>
  * Please consult the parent interface {@link AuthorizableAction} for details on persisting changes,
  * configuring actions and the API through which actions are invoked.
- * </p>
  *
  * <p>
  * For convenience, an {@link AbstractGroupAction} is provided.
- * </p>
  * @since OAK 1.6
  */
 public interface GroupAction extends AuthorizableAction {
diff --git a/oak-security-spi/src/main/java/org/apache/jackrabbit/oak/spi/security/user/action/PasswordValidationAction.java b/oak-security-spi/src/main/java/org/apache/jackrabbit/oak/spi/security/user/action/PasswordValidationAction.java
index 6e7df51fe7..0df96d8773 100644
--- a/oak-security-spi/src/main/java/org/apache/jackrabbit/oak/spi/security/user/action/PasswordValidationAction.java
+++ b/oak-security-spi/src/main/java/org/apache/jackrabbit/oak/spi/security/user/action/PasswordValidationAction.java
@@ -38,12 +38,12 @@ import org.slf4j.LoggerFactory;
  *
  * <ul>
  *     <li><strong>constraint</strong>: a regular expression that can be compiled
- *     to a {@link java.util.regex.Pattern} defining validation rules for a password.</li>
+ *     to a {@link java.util.regex.Pattern} defining validation rules for a password.
  * </ul>
  *
  * <p>The password validation is executed on user creation and upon password
  * change. It throws a {@code ConstraintViolationException} if the password
- * validation fails.</p>
+ * validation fails.
  *
  * @see org.apache.jackrabbit.api.security.user.UserManager#createUser(String, String)
  * @see org.apache.jackrabbit.api.security.user.User#changePassword(String)
diff --git a/oak-security-spi/src/main/java/org/apache/jackrabbit/oak/spi/security/user/action/UserAction.java b/oak-security-spi/src/main/java/org/apache/jackrabbit/oak/spi/security/user/action/UserAction.java
index 3ce757e748..9d860abcf3 100644
--- a/oak-security-spi/src/main/java/org/apache/jackrabbit/oak/spi/security/user/action/UserAction.java
+++ b/oak-security-spi/src/main/java/org/apache/jackrabbit/oak/spi/security/user/action/UserAction.java
@@ -30,13 +30,12 @@ import org.jetbrains.annotations.Nullable;
  * about and react to the following changes to a {@link User}:
  *
  * <ul>
- * <li>{@link #onDisable(User, String, Root, NamePathMapper)}</li>
+ * <li>{@link #onDisable(User, String, Root, NamePathMapper)}
  * </ul>
  *
  * <p>
  * See {@link AuthorizableAction} for details on persisting changes,
  * configuring actions and the API through which actions are invoked.
- * </p>
  *
  * @since OAK 1.10
  */
diff --git a/oak-segment-remote/src/main/java/org/apache/jackrabbit/oak/segment/remote/persistentcache/DiskCacheIOMonitor.java b/oak-segment-remote/src/main/java/org/apache/jackrabbit/oak/segment/remote/persistentcache/DiskCacheIOMonitor.java
index a703d03bc1..9ecdd9691e 100644
--- a/oak-segment-remote/src/main/java/org/apache/jackrabbit/oak/segment/remote/persistentcache/DiskCacheIOMonitor.java
+++ b/oak-segment-remote/src/main/java/org/apache/jackrabbit/oak/segment/remote/persistentcache/DiskCacheIOMonitor.java
@@ -35,17 +35,17 @@ import static java.util.concurrent.TimeUnit.NANOSECONDS;
  * with the Metrics library if available:
  * <ul>
  *     <li>{@link #OAK_SEGMENT_CACHE_DISK_SEGMENT_READ_BYTES}:
- *          a meter metrics for the number of bytes read from segment disk cache</li>
+ *          a meter metrics for the number of bytes read from segment disk cache
  *     <li>{@link #OAK_SEGMENT_CACHE_DISK_SEGMENT_WRITE_BYTES}:
- *          a meter metrics for the number of bytes written to segment disk cache</li>
+ *          a meter metrics for the number of bytes written to segment disk cache
  *     <li>{@link #OAK_SEGMENT_CACHE_DISK_SEGMENT_READ_TIME}:
- *          a timer metrics for the time spent reading from segment disk cache</li>
+ *          a timer metrics for the time spent reading from segment disk cache
  *     <li>{@link #OAK_SEGMENT_CACHE_DISk_SEGMENT_WRITE_TIME}:
- *          a timer metrics for the time spent writing to segment disk cache</li>
+ *          a timer metrics for the time spent writing to segment disk cache
  *     <li>{@link #OAK_SEGMENT_CACHE_DISK_CACHE_SIZE_CALCULATED}:
- *          a histogram for the calculated segment disk cache size</li>
+ *          a histogram for the calculated segment disk cache size
  *     <li>{@link #OAK_SEGMENT_CACHE_DISK_CACHE_SIZE_CHANGE}:
- *          a histogram for the segment disk cache size change</li>
+ *          a histogram for the segment disk cache size change
  * </ul>
  */
 public class DiskCacheIOMonitor extends IOMonitorAdapter {
diff --git a/oak-segment-remote/src/main/java/org/apache/jackrabbit/oak/segment/remote/persistentcache/RedisCacheIOMonitor.java b/oak-segment-remote/src/main/java/org/apache/jackrabbit/oak/segment/remote/persistentcache/RedisCacheIOMonitor.java
index 7e139f230a..335641f426 100644
--- a/oak-segment-remote/src/main/java/org/apache/jackrabbit/oak/segment/remote/persistentcache/RedisCacheIOMonitor.java
+++ b/oak-segment-remote/src/main/java/org/apache/jackrabbit/oak/segment/remote/persistentcache/RedisCacheIOMonitor.java
@@ -34,13 +34,13 @@ import static java.util.concurrent.TimeUnit.NANOSECONDS;
  * with the Metrics library if available:
  * <ul>
  *     <li>{@link #OAK_SEGMENT_CACHE_REDIS_SEGMENT_READ_BYTES}:
- *          a meter metrics for the number of bytes read from segment redis cache</li>
+ *          a meter metrics for the number of bytes read from segment redis cache
  *     <li>{@link #OAK_SEGMENT_CACHE_REDIS_SEGMENT_WRITE_BYTES}:
- *          a meter metrics for the number of bytes written to segment redis cache</li>
+ *          a meter metrics for the number of bytes written to segment redis cache
  *     <li>{@link #OAK_SEGMENT_CACHE_REDIS_SEGMENT_READ_TIME}:
- *          a timer metrics for the time spent reading from segment redis cache</li>
+ *          a timer metrics for the time spent reading from segment redis cache
  *     <li>{@link #OAK_SEGMENT_CACHE_REDIS_SEGMENT_WRITE_TIME}:
- *          a timer metrics for the time spent writing to segment redis cache</li>
+ *          a timer metrics for the time spent writing to segment redis cache
  * </ul>
  */
 public class RedisCacheIOMonitor extends IOMonitorAdapter {
diff --git a/oak-segment-tar/src/main/java/org/apache/jackrabbit/oak/segment/CheckpointCompactor.java b/oak-segment-tar/src/main/java/org/apache/jackrabbit/oak/segment/CheckpointCompactor.java
index 2a13e3f7ef..4d0e2cf87b 100644
--- a/oak-segment-tar/src/main/java/org/apache/jackrabbit/oak/segment/CheckpointCompactor.java
+++ b/oak-segment-tar/src/main/java/org/apache/jackrabbit/oak/segment/CheckpointCompactor.java
@@ -55,9 +55,9 @@ import org.jetbrains.annotations.Nullable;
  * <ul>
  *     <li>Rebasing the checkpoints and subsequently the root on top of each other
  *     in chronological order. This results minimises the deltas that need to be
- *     processed and stored.</li>
+ *     processed and stored.
  *     <li>Caching the compacted checkpoints and root states for deduplication should
- *     the same checkpoint or root state occur again in a later compaction retry cycle.</li>
+ *     the same checkpoint or root state occur again in a later compaction retry cycle.
  * </ul>
  */
 public class CheckpointCompactor extends Compactor {
diff --git a/oak-segment-tar/src/main/java/org/apache/jackrabbit/oak/segment/CommitsTracker.java b/oak-segment-tar/src/main/java/org/apache/jackrabbit/oak/segment/CommitsTracker.java
index 91dffe7cbc..9e89324e2d 100644
--- a/oak-segment-tar/src/main/java/org/apache/jackrabbit/oak/segment/CommitsTracker.java
+++ b/oak-segment-tar/src/main/java/org/apache/jackrabbit/oak/segment/CommitsTracker.java
@@ -38,7 +38,7 @@ import org.jetbrains.annotations.Nullable;
  * A simple tracker for the source of commits (writes) in
  * {@link SegmentNodeStore}. It provides two basic functionalities:
  * <ul>
- * <li>exposes the number of commits executed per thread</li>
+ * <li>exposes the number of commits executed per thread
  * <li>exposes the threads (and possibly their details - i.e., stack traces)
  * currently waiting on the commit semaphore
  * </ul>
diff --git a/oak-segment-tar/src/main/java/org/apache/jackrabbit/oak/segment/SegmentBufferMonitor.java b/oak-segment-tar/src/main/java/org/apache/jackrabbit/oak/segment/SegmentBufferMonitor.java
index 7572def8f3..fef7a3e521 100644
--- a/oak-segment-tar/src/main/java/org/apache/jackrabbit/oak/segment/SegmentBufferMonitor.java
+++ b/oak-segment-tar/src/main/java/org/apache/jackrabbit/oak/segment/SegmentBufferMonitor.java
@@ -35,13 +35,13 @@ import org.jetbrains.annotations.NotNull;
  * of {@link Buffer} instances:
  * <ul>
  *     <li>{@link #DIRECT_BUFFER_COUNT}: number of allocated direct byte
- *          buffers.</li>
+ *          buffers.
  *     <li>{@link #DIRECT_BUFFER_CAPACITY}: total capacity of the allocated
- *          direct byte buffers.</li>
+ *          direct byte buffers.
  *     <li>{@link #HEAP_BUFFER_COUNT}: number of allocated heap byte
- *          buffers.</li>
+ *          buffers.
  *     <li>{@link #HEAP_BUFFER_CAPACITY}: total capacity of the allocated
- *          heap byte buffers.</li>
+ *          heap byte buffers.
  * </ul>
  * <p>
  * Users of this class call {@link #trackAllocation(Buffer)} to update above statistics.
diff --git a/oak-segment-tar/src/main/java/org/apache/jackrabbit/oak/segment/file/MetricsIOMonitor.java b/oak-segment-tar/src/main/java/org/apache/jackrabbit/oak/segment/file/MetricsIOMonitor.java
index 4cf998ded0..56c4943048 100644
--- a/oak-segment-tar/src/main/java/org/apache/jackrabbit/oak/segment/file/MetricsIOMonitor.java
+++ b/oak-segment-tar/src/main/java/org/apache/jackrabbit/oak/segment/file/MetricsIOMonitor.java
@@ -34,13 +34,13 @@ import org.jetbrains.annotations.NotNull;
  * with the Metrics library if available:
  * <ul>
  *     <li>{@link #OAK_SEGMENT_SEGMENT_READ_BYTES}:
- *          a meter metrics for the number of bytes read from tar files</li>
+ *          a meter metrics for the number of bytes read from tar files
  *     <li>{@link #OAK_SEGMENT_SEGMENT_WRITE_BYTES}:
- *          a meter metrics for the number of bytes written to tar files</li>
+ *          a meter metrics for the number of bytes written to tar files
  *     <li>{@link #OAK_SEGMENT_SEGMENT_READ_TIME}:
- *          a timer metrics for the time spent reading from tar files</li>
+ *          a timer metrics for the time spent reading from tar files
  *     <li>{@link #OAK_SEGMENT_SEGMENT_WRITE_TIME}:
- *          a timer metrics for the time spent writing to tar files</li>
+ *          a timer metrics for the time spent writing to tar files
  * </ul>
  */
 public class MetricsIOMonitor extends IOMonitorAdapter {
diff --git a/oak-segment-tar/src/main/java/org/apache/jackrabbit/oak/segment/file/tar/GCGeneration.java b/oak-segment-tar/src/main/java/org/apache/jackrabbit/oak/segment/file/tar/GCGeneration.java
index 0624ff5c88..d9784d66a9 100644
--- a/oak-segment-tar/src/main/java/org/apache/jackrabbit/oak/segment/file/tar/GCGeneration.java
+++ b/oak-segment-tar/src/main/java/org/apache/jackrabbit/oak/segment/file/tar/GCGeneration.java
@@ -44,10 +44,10 @@ import org.jetbrains.annotations.NotNull;
  * {@code h} be the segment containing the current repository head and {@code n} be
  * the number of retained generations.
  * <ul>
- *     <li>{@code s} is old iff {@code h.generation - s.generation >= n}</li>
+ *     <li>{@code s} is old iff {@code h.generation - s.generation >= n}
  *     <li>{@code s} is in the same compaction tail than h iff
- *         {@code s.isCompacted && s.fullGeneration == h.fullGeneration}</li>
- *     <li>{@code s} is reclaimable iff {@code s} is old and {@code s} is not in the same compaction tail than {@code h}</li>
+ *         {@code s.isCompacted && s.fullGeneration == h.fullGeneration}
+ *     <li>{@code s} is reclaimable iff {@code s} is old and {@code s} is not in the same compaction tail than {@code h}
  * </ul>
  */
 public final class GCGeneration {
diff --git a/oak-segment-tar/src/main/java/org/apache/jackrabbit/oak/segment/spi/persistence/JournalFileWriter.java b/oak-segment-tar/src/main/java/org/apache/jackrabbit/oak/segment/spi/persistence/JournalFileWriter.java
index 1d6053f375..bc12dfddd8 100644
--- a/oak-segment-tar/src/main/java/org/apache/jackrabbit/oak/segment/spi/persistence/JournalFileWriter.java
+++ b/oak-segment-tar/src/main/java/org/apache/jackrabbit/oak/segment/spi/persistence/JournalFileWriter.java
@@ -30,8 +30,8 @@ import java.util.List;
  * care of synchronizing the {@link #writeLine(String)} method calls), but the method
  * should be:
  * <ul>
- *  <li>atomic with regards to the {@link JournalFileReader},</li>
- *  <li><b>flushed to the storage</b>.</li>
+ *  <li>atomic with regards to the {@link JournalFileReader},
+ *  <li><b>flushed to the storage</b>.
  * </ul>
  */
 public interface JournalFileWriter extends Closeable {
diff --git a/oak-segment-tar/src/main/java/org/apache/jackrabbit/oak/segment/spi/persistence/SegmentArchiveWriter.java b/oak-segment-tar/src/main/java/org/apache/jackrabbit/oak/segment/spi/persistence/SegmentArchiveWriter.java
index b94beebe03..7fcff23b93 100644
--- a/oak-segment-tar/src/main/java/org/apache/jackrabbit/oak/segment/spi/persistence/SegmentArchiveWriter.java
+++ b/oak-segment-tar/src/main/java/org/apache/jackrabbit/oak/segment/spi/persistence/SegmentArchiveWriter.java
@@ -32,13 +32,13 @@ import org.jetbrains.annotations.Nullable;
  * <ol>
  *     <li>phase 1:
  *         <ul>
- *             <li>{@link #writeSegment(long, long, byte[], int, int, int, int, boolean)}</li>
- *             <li>{@link #flush()}</li>
+ *             <li>{@link #writeSegment(long, long, byte[], int, int, int, int, boolean)}
+ *             <li>{@link #flush()}
  *         </ul>
- *         repeated in an unspecified order</li>
- *     <li>{@link #writeBinaryReferences(byte[])}</li>
- *     <li>{@link #writeGraph(byte[])} (optionally)</li>
- *     <li>{@link #close()}</li>
+ *         repeated in an unspecified order
+ *     <li>{@link #writeBinaryReferences(byte[])}
+ *     <li>{@link #writeGraph(byte[])} (optionally)
+ *     <li>{@link #close()}
  * </ol>
  * All the calls above are synchronized by the caller.
  * In the first phase of the writer lifecycle, the
diff --git a/oak-segment-tar/src/test/java/org/apache/jackrabbit/oak/segment/CacheWeightEstimator.java b/oak-segment-tar/src/test/java/org/apache/jackrabbit/oak/segment/CacheWeightEstimator.java
index 46067cfa1d..e2707fb43c 100644
--- a/oak-segment-tar/src/test/java/org/apache/jackrabbit/oak/segment/CacheWeightEstimator.java
+++ b/oak-segment-tar/src/test/java/org/apache/jackrabbit/oak/segment/CacheWeightEstimator.java
@@ -46,12 +46,10 @@ import org.junit.Test;
  * The test is <b>disabled</b> by default, to run it you need to set the
  * {@code CacheWeightsTest} system property:<br>
  * {@code mvn clean test -Dtest=CacheWeightEstimator -Dtest.opts.memory=-Xmx2G}
- * </p>
  * <p>
  * To collect the results check the
  * {@code org.apache.jackrabbit.oak.segment.CacheWeightsTest-output.txt} file:<br>
  * {@code cat target/surefire-reports/org.apache.jackrabbit.oak.segment.CacheWeightEstimator-output.txt}
- * </p>
  */
 public class CacheWeightEstimator {
 
diff --git a/oak-segment-tar/src/test/java/org/apache/jackrabbit/oak/segment/ExternalBlobReferenceTest.java b/oak-segment-tar/src/test/java/org/apache/jackrabbit/oak/segment/ExternalBlobReferenceTest.java
index 84a23eb22b..130b3cdbe5 100644
--- a/oak-segment-tar/src/test/java/org/apache/jackrabbit/oak/segment/ExternalBlobReferenceTest.java
+++ b/oak-segment-tar/src/test/java/org/apache/jackrabbit/oak/segment/ExternalBlobReferenceTest.java
@@ -62,12 +62,12 @@ public class ExternalBlobReferenceTest {
      * is between 0 and {@code Segment.BLOB_ID_SMALL_LIMIT - 1} bytes. It should
      * be possible to correctly read the blob ID back and pass it to the {@code
      * BlobStore} to obtain information about the blob.
-     * <p/>
+     * <p>
      * This code path executes only if the written stream is {@code
      * Segment.MEDIUM_LIMIT} bytes long (or more). If the length of the stream
      * is smaller, the binary value is inlined in the segment and the {@code
      * BlobStore} is never called.
-     * <p/>
+     * <p>
      * See OAK-3105.
      */
     @Test
@@ -82,12 +82,12 @@ public class ExternalBlobReferenceTest {
      * and an alternate encoding is used. It should be possible to correctly
      * read the blob ID back and pass it to the {@code BlobStore} to obtain
      * information about the blob.
-     * <p/>
+     * <p>
      * This code path executes only if the written stream is {@code
      * Segment.MEDIUM_LIMIT} bytes long (or more). If the length of the stream
      * is smaller, the binary value is inlined in the segment and the {@code
      * BlobStore} is never called.
-     * <p/>
+     * <p>
      * See OAK-3105 and OAK-3107.
      */
     @Test
diff --git a/oak-segment-tar/src/test/java/org/apache/jackrabbit/oak/segment/ManyChildNodesIT.java b/oak-segment-tar/src/test/java/org/apache/jackrabbit/oak/segment/ManyChildNodesIT.java
index cbf8da3585..84727fcb63 100644
--- a/oak-segment-tar/src/test/java/org/apache/jackrabbit/oak/segment/ManyChildNodesIT.java
+++ b/oak-segment-tar/src/test/java/org/apache/jackrabbit/oak/segment/ManyChildNodesIT.java
@@ -46,7 +46,7 @@ import org.junit.rules.TemporaryFolder;
  * consumes a constant amount of memory (See OAK-4949). It should be possible to add
  * 2M child nodes with a 512M heap.
  *
- *<p>The test is <b>disabled</b> by default, to run it set {@code -Dtest=ManyChildNodesIT} </p>
+ *<p>The test is <b>disabled</b> by default, to run it set {@code -Dtest=ManyChildNodesIT}
  */
 public class ManyChildNodesIT {
     private static final int NODE_COUNT = getInteger("many-child-node-it.node-count", 2000000);
diff --git a/oak-segment-tar/src/test/java/org/apache/jackrabbit/oak/segment/SegmentCompactionIT.java b/oak-segment-tar/src/test/java/org/apache/jackrabbit/oak/segment/SegmentCompactionIT.java
index db3885ebe3..12250da7c5 100644
--- a/oak-segment-tar/src/test/java/org/apache/jackrabbit/oak/segment/SegmentCompactionIT.java
+++ b/oak-segment-tar/src/test/java/org/apache/jackrabbit/oak/segment/SegmentCompactionIT.java
@@ -115,16 +115,15 @@ import org.slf4j.Logger;
 import org.slf4j.LoggerFactory;
 
 /**
- * <p>This is a longevity test for revision garbage collection.</p>
+ * <p>This is a longevity test for revision garbage collection.
  *
  * <p>The test schedules a number of readers, writers, a compactor and holds some references for a certain time.
  * All of which can be interactively modified through the accompanying {@link SegmentCompactionITMBean} and the {@link SegmentRevisionGC}.
  *
  *<p>The test is <b>disabled</b> by default, to run it you need to set the {@code SegmentCompactionIT} system property:<br>
  * {@code mvn test -Dtest=SegmentCompactionIT -Dtest.opts.memory=-Xmx4G}
- * </p>
  *
- * <p>TODO Leverage longevity test support from OAK-2771 once we have it.</p>
+ * <p>TODO Leverage longevity test support from OAK-2771 once we have it.
  */
 public class SegmentCompactionIT {
 
diff --git a/oak-segment-tar/src/test/java/org/apache/jackrabbit/oak/segment/SegmentOverflowExceptionIT.java b/oak-segment-tar/src/test/java/org/apache/jackrabbit/oak/segment/SegmentOverflowExceptionIT.java
index 5ab5e575b5..5b8e98bdcd 100644
--- a/oak-segment-tar/src/test/java/org/apache/jackrabbit/oak/segment/SegmentOverflowExceptionIT.java
+++ b/oak-segment-tar/src/test/java/org/apache/jackrabbit/oak/segment/SegmentOverflowExceptionIT.java
@@ -48,17 +48,15 @@ import org.slf4j.Logger;
 import org.slf4j.LoggerFactory;
 
 /**
- * <p>Tests verifying if the repository gets corrupted or not: {@code OAK-2662 SegmentOverflowException in HeavyWriteIT on Jenkins}</p>
+ * <p>Tests verifying if the repository gets corrupted or not: {@code OAK-2662 SegmentOverflowException in HeavyWriteIT on Jenkins}
  *
  * <p><b>This test will run for one hour unless it fails</b>, thus it is disabled by default. On the
  * command line specify {@code -Dtest=SegmentOverflowExceptionIT} to enable it. Use {@code -Dtimeout=t}
  * to specify a different timeout {@code t} in milliseconds. Use {@code -Dmax-repo-size=s} to specify
  * a maximal repository size {@code s} in megabytes above which to stop the test.
- * </p>
  *
  *<p>If you only want to run this test:<br>
  * {@code mvn verify -DfailIfNoTests=false -DskipTests -PintegrationTesting -Dtest=SegmentOverflowExceptionIT}
- * </p>
  */
 public class SegmentOverflowExceptionIT {
     private static final Logger LOG = LoggerFactory
diff --git a/oak-segment-tar/src/test/java/org/apache/jackrabbit/oak/segment/file/LargeNumberOfPropertiesTestIT.java b/oak-segment-tar/src/test/java/org/apache/jackrabbit/oak/segment/file/LargeNumberOfPropertiesTestIT.java
index e2d1d0eef5..db623506f7 100644
--- a/oak-segment-tar/src/test/java/org/apache/jackrabbit/oak/segment/file/LargeNumberOfPropertiesTestIT.java
+++ b/oak-segment-tar/src/test/java/org/apache/jackrabbit/oak/segment/file/LargeNumberOfPropertiesTestIT.java
@@ -38,15 +38,14 @@ import org.slf4j.Logger;
 import org.slf4j.LoggerFactory;
 
 /**
- * <p>Tests verifying if the repository gets corrupted or not: {@code OAK-2481 IllegalStateException in TarMk with large number of properties}</p>
+ * <p>Tests verifying if the repository gets corrupted or not: {@code OAK-2481 IllegalStateException in TarMk with large number of properties}
  *
  * <p>These tests are disabled by default due to their long running time. On the
  * command line specify {@code -DLargeNumberOfPropertiesTestIT=true} to enable
- * them.</p>
+ * them.
  *
  *<p>If you only want to run this test:<br>
  * {@code mvn verify -Dsurefire.skip.ut=true -PintegrationTesting -Dit.test=LargeNumberOfPropertiesTestIT -DLargeNumberOfPropertiesTestIT=true}
- * </p>
  */
 public class LargeNumberOfPropertiesTestIT {
 
diff --git a/oak-segment-tar/src/test/java/org/apache/jackrabbit/oak/segment/file/SegmentReferenceLimitTestIT.java b/oak-segment-tar/src/test/java/org/apache/jackrabbit/oak/segment/file/SegmentReferenceLimitTestIT.java
index 53c3b5ee2e..a3852ba46d 100644
--- a/oak-segment-tar/src/test/java/org/apache/jackrabbit/oak/segment/file/SegmentReferenceLimitTestIT.java
+++ b/oak-segment-tar/src/test/java/org/apache/jackrabbit/oak/segment/file/SegmentReferenceLimitTestIT.java
@@ -43,15 +43,14 @@ import org.slf4j.Logger;
 import org.slf4j.LoggerFactory;
 
 /**
- * <p>Tests verifying if the repository gets corrupted or not: {@code OAK-2294 Corrupt repository after concurrent version operations}</p>
+ * <p>Tests verifying if the repository gets corrupted or not: {@code OAK-2294 Corrupt repository after concurrent version operations}
  *
  * <p>These tests are disabled by default due to their long running time. On the
  * command line specify {@code -DSegmentReferenceLimitTestIT=true} to enable
- * them.</p>
+ * them.
  *
  *<p>If you only want to run this test:<br>
  * {@code mvn verify -Dsurefire.skip.ut=true -PintegrationTesting -Dit.test=SegmentReferenceLimitTestIT -DSegmentReferenceLimitTestIT=true}
- * </p>
  */
 public class SegmentReferenceLimitTestIT {
 
diff --git a/oak-store-composite/src/main/java/org/apache/jackrabbit/oak/composite/CompositeNodeStore.java b/oak-store-composite/src/main/java/org/apache/jackrabbit/oak/composite/CompositeNodeStore.java
index ed5e1bddcd..59784eb578 100644
--- a/oak-store-composite/src/main/java/org/apache/jackrabbit/oak/composite/CompositeNodeStore.java
+++ b/oak-store-composite/src/main/java/org/apache/jackrabbit/oak/composite/CompositeNodeStore.java
@@ -71,9 +71,9 @@ import static org.apache.jackrabbit.oak.composite.ModifiedPathDiff.getModifiedPa
  * less-than-obvious issues which prevent it:
  * <ol>
  *   <li>Thread safety of the write operation can be quite costly, and will come on top
- *   of the thread safety measures already put in place by the composite node stores.</li>
+ *   of the thread safety measures already put in place by the composite node stores.
  *   <li>Many JCR subsystems require global state, e.g. the versioning store. This global state
- *   can become corrupt if multiple mounts operate on it or if mounts are added and removed.</li>
+ *   can become corrupt if multiple mounts operate on it or if mounts are added and removed.
  * </ol>
  * 
  * <p>As such, the only supported configuration is at most a single write-enabled store.
diff --git a/oak-store-composite/src/main/java/org/apache/jackrabbit/oak/composite/checks/MountedNodeStoreChecker.java b/oak-store-composite/src/main/java/org/apache/jackrabbit/oak/composite/checks/MountedNodeStoreChecker.java
index c300e89fe2..54a0ef6255 100644
--- a/oak-store-composite/src/main/java/org/apache/jackrabbit/oak/composite/checks/MountedNodeStoreChecker.java
+++ b/oak-store-composite/src/main/java/org/apache/jackrabbit/oak/composite/checks/MountedNodeStoreChecker.java
@@ -27,10 +27,9 @@ import org.apache.jackrabbit.oak.spi.state.NodeStore;
 /**
  * Applies a category of consistency checks specific to {@linkplain NodeStore} mounts
  * 
- * <p>Checks are only performed on non-default mounts.</p>
+ * <p>Checks are only performed on non-default mounts.
  * 
- * <p>Named 'Checker' to clarify that it is not a Validator in the Oak sense.</p> 
- *
+ * <p>Named 'Checker' to clarify that it is not a Validator in the Oak sense.
  */
 public interface MountedNodeStoreChecker<T> {
     
diff --git a/oak-store-composite/src/main/java/org/apache/jackrabbit/oak/composite/checks/UniqueIndexNodeStoreChecker.java b/oak-store-composite/src/main/java/org/apache/jackrabbit/oak/composite/checks/UniqueIndexNodeStoreChecker.java
index 79434ff6b0..282b351e43 100644
--- a/oak-store-composite/src/main/java/org/apache/jackrabbit/oak/composite/checks/UniqueIndexNodeStoreChecker.java
+++ b/oak-store-composite/src/main/java/org/apache/jackrabbit/oak/composite/checks/UniqueIndexNodeStoreChecker.java
@@ -52,12 +52,11 @@ import org.slf4j.LoggerFactory;
  * Checker that ensures the consistency of unique entries in the various mounts
  * 
  * <p>For all unique indexes, it checks that the uniqueness constraint holds when
- * taking into account the combined index from all the mounts, including the global one.</p>
+ * taking into account the combined index from all the mounts, including the global one.
  * 
  * <p>Being a one-off check, it does not strictly implement the {@link #check(MountedNodeStore, Tree, ErrorHolder, Context)}
  * contract in terms of navigating the specified tree, but instead accesses the index definitions node directly
- * on first access and skips all subsequent executions.</p>
- *
+ * on first access and skips all subsequent executions.
  */
 @Component(service = {MountedNodeStoreChecker.class})
 public class UniqueIndexNodeStoreChecker implements MountedNodeStoreChecker<UniqueIndexNodeStoreChecker.Context> {
diff --git a/oak-store-composite/src/main/java/org/apache/jackrabbit/oak/composite/impl/NonDefaultMountWriteReportingObserver.java b/oak-store-composite/src/main/java/org/apache/jackrabbit/oak/composite/impl/NonDefaultMountWriteReportingObserver.java
index 17efee6369..e25ec167b2 100644
--- a/oak-store-composite/src/main/java/org/apache/jackrabbit/oak/composite/impl/NonDefaultMountWriteReportingObserver.java
+++ b/oak-store-composite/src/main/java/org/apache/jackrabbit/oak/composite/impl/NonDefaultMountWriteReportingObserver.java
@@ -50,16 +50,15 @@ import org.slf4j.LoggerFactory;
  * 
  * <p>This is a <em>diagnostic observer</em> and is expected to be used in scenarios where the
  * <code>CompositeNodeStore</code> is configured in a 'seed' mode, where the non-default
- * mounts are write-enabled.</p>
+ * mounts are write-enabled.
  * 
  * <p>In such scenarios it is useful to report writes to non-default mounts from components
  * that are unexpected. For instance, it can report all writes that do not originate
- * from the FileVault package installer.</p>
+ * from the FileVault package installer.
  * 
  * <p>Performance note: the overhead of this observer has not been measured, but as it is
  * designed to be used only for initial setups the performance impact should not
- * matter.</p>
- *
+ * matter.
  */
 @Component(service =  Observer.class, configurationPolicy =  ConfigurationPolicy.REQUIRE)
 @Designate(ocd = Config.class)
diff --git a/oak-store-composite/src/main/java/org/apache/jackrabbit/oak/composite/package-info.java b/oak-store-composite/src/main/java/org/apache/jackrabbit/oak/composite/package-info.java
index 6efb8de2a2..fb36293dc2 100644
--- a/oak-store-composite/src/main/java/org/apache/jackrabbit/oak/composite/package-info.java
+++ b/oak-store-composite/src/main/java/org/apache/jackrabbit/oak/composite/package-info.java
@@ -17,15 +17,15 @@
 /**
  * <h1>Composition support</h1>
  *
- * <p>This package contains support classes for implementing a composite persistence at the {@linkplain org.apache.jackrabbit.oak.spi.state.NodeStore} level.</p>
+ * <p>This package contains support classes for implementing a composite persistence at the {@linkplain org.apache.jackrabbit.oak.spi.state.NodeStore} level.
  *
  * <h2>Design goals</h2>
  * <ol>
  *   <li>Transparency of the composition setup. Neither the NodeStores nor the code using a composite
- *       NodeStore should be aware of the specific implementation being used.</li>
+ *       NodeStore should be aware of the specific implementation being used.
  *   <li>Persistence-agnosticity. The composition support should be applicable to any conformant
- *       NodeStore implementation.</li>
- *   <li>Negligible performance impact. Composition should not add a significat performance overhead.</li>
+ *       NodeStore implementation.
+ *   <li>Negligible performance impact. Composition should not add a significat performance overhead.
  * </ol>
  *
  * <h2>Implementation</h2>
diff --git a/oak-store-composite/src/test/java/org/apache/jackrabbit/oak/composite/checks/NodeTypeDefinitionNodeStoreCheckerTest.java b/oak-store-composite/src/test/java/org/apache/jackrabbit/oak/composite/checks/NodeTypeDefinitionNodeStoreCheckerTest.java
index 64489a3a4b..69a097e1bb 100644
--- a/oak-store-composite/src/test/java/org/apache/jackrabbit/oak/composite/checks/NodeTypeDefinitionNodeStoreCheckerTest.java
+++ b/oak-store-composite/src/test/java/org/apache/jackrabbit/oak/composite/checks/NodeTypeDefinitionNodeStoreCheckerTest.java
@@ -41,7 +41,7 @@ import org.junit.Test;
  * Validates that the <tt>NodeTypeDefinitionNodeStoreChecker</tt> is properly applied
  * 
  * <p>This class does not attempt to exhaustively validate the checks that should be performed, only
- * that they are performed when needed.</p>
+ * that they are performed when needed.
  *
  */
 @Component(service = {MountedNodeStoreChecker.class})
diff --git a/oak-store-document/src/main/java/org/apache/jackrabbit/oak/plugins/document/ClusterView.java b/oak-store-document/src/main/java/org/apache/jackrabbit/oak/plugins/document/ClusterView.java
index 5ea00bc6e8..12e5174bce 100644
--- a/oak-store-document/src/main/java/org/apache/jackrabbit/oak/plugins/document/ClusterView.java
+++ b/oak-store-document/src/main/java/org/apache/jackrabbit/oak/plugins/document/ClusterView.java
@@ -38,16 +38,16 @@ import org.apache.jackrabbit.oak.commons.json.JsopBuilder;
  * and has no recoveryLock set. Whether or not the lease has timed out is
  * ignored. If the lease would be timed out, this would be immediately noticed
  * by one of the instances and the affected instance would thus be recovered
- * soon.</li>
+ * soon.
  * <li>Deactivating: An instance that is either recovering (which is the state
  * reported from the ClusterViewDocument) - ie it was active until now but the
  * lease has just timed out and one of the peer instances noticed so it does a
  * recovery now - or it is inactive but some of its changes are still in the
  * backlog (the latter is not tracked in the ClusterViewDocument, instead
- * instances with a backlog are in the 'inactive' bucket there).</li>
+ * instances with a backlog are in the 'inactive' bucket there).
  * <li>Inactive: An instance that is both inactive from a
  * clusterNodes/ClusterViewDocument point of view (ie no longer active and
- * already recovered) and it has no backlog anymore.</li>
+ * already recovered) and it has no backlog anymore.
  * </ul>
  * The JSON generated by the ClusterView (which is propagated to JMX) has the
  * following fields:
@@ -58,7 +58,7 @@ import org.apache.jackrabbit.oak.commons.json.JsopBuilder;
  * even though perhaps all activeIds are still the same (eg when the listener
  * would have missed a few changes). It can also be used to tell with certainty
  * that 'anything has changed' compared to the clusterView with a previous
- * sequence number</li>
+ * sequence number
  * <li>final = is final: this is a boolean indicating whether or not the view
  * with a particular sequence number is final (not going to change anymore) or
  * whether the discovery lite takes the freedom to modify the view in the future
@@ -67,25 +67,24 @@ import org.apache.jackrabbit.oak.commons.json.JsopBuilder;
  * to say that if 'final' is false, that the information provided in
  * active/deactivating/inactive is wrong - that's of course not the case - that
  * info is always correct. But when 'final' is false it just means that
- * active/deactivating/inactive for a given sequence number might change.</li>
+ * active/deactivating/inactive for a given sequence number might change.
  * <li>id = cluster view id: this is the unique, stable identifier of the local
  * cluster. The idea of this id is to provide both an actual identifier for the
  * local cluster as well as a 'namespace' for the instanceIds therein. The
  * instanceIds are all just simply integers and can of course be the same for
- * instances in different clusters.</li>
+ * instances in different clusters.
  * <li>me = my local instance id: this is the id of the local instance as
- * managed by DocumentNodeStore</li>
+ * managed by DocumentNodeStore
  * <li>active = active instance ids: this is the list of instance ids that are
  * all currently active in the local cluster. The ids are managed by
- * DocumentNodeStore</li>
+ * DocumentNodeStore
  * <li>deactivating = deactivating instance ids: this is the list of instance
  * ids that are all in the process of deactivating and for which therefore some
  * data might still be making its way to the local instance. So any changes that
  * were done by instances that are deactivating might not yet be visible locally
- * </li>
  * <li>deactive = deactive instance ids: this is the list of instance ids that
  * are not running nor do they have any data pending to become visible by the
- * local instance</li>
+ * local instance
  * </ul>
  */
 class ClusterView {
diff --git a/oak-store-document/src/main/java/org/apache/jackrabbit/oak/plugins/document/ClusterViewDocument.java b/oak-store-document/src/main/java/org/apache/jackrabbit/oak/plugins/document/ClusterViewDocument.java
index e8fe50247b..dcecf98fb4 100644
--- a/oak-store-document/src/main/java/org/apache/jackrabbit/oak/plugins/document/ClusterViewDocument.java
+++ b/oak-store-document/src/main/java/org/apache/jackrabbit/oak/plugins/document/ClusterViewDocument.java
@@ -45,11 +45,11 @@ import org.slf4j.LoggerFactory;
  * <li>Active: an instance is active and has no recoveryLock is currently
  * acquired. The lease timeout is ignored. When the lease times out, this is
  * noticed by one of the instances at some point and a recovery is started, at
- * which point the instance transitions from 'Active' to 'Recovering'.</li>
+ * which point the instance transitions from 'Active' to 'Recovering'.
  * <li>Recovering: an instance that was active but currently has the
- * recoveryLock acquired by one of the instances.</li>
+ * recoveryLock acquired by one of the instances.
  * <li>Inactive: an instance is not set to active (in which case the
- * recoveryLock is never set)</li>
+ * recoveryLock is never set)
  * </ul>
  * <p>
  * Note that the states managed in this ClusterViewDocument differs from the one
diff --git a/oak-store-document/src/main/java/org/apache/jackrabbit/oak/plugins/document/Collision.java b/oak-store-document/src/main/java/org/apache/jackrabbit/oak/plugins/document/Collision.java
index 61ad2f5759..8d409d1337 100644
--- a/oak-store-document/src/main/java/org/apache/jackrabbit/oak/plugins/document/Collision.java
+++ b/oak-store-document/src/main/java/org/apache/jackrabbit/oak/plugins/document/Collision.java
@@ -35,9 +35,9 @@ import static org.apache.jackrabbit.oak.plugins.document.util.Utils.isPropertyNa
  * includes the following situations:
  * <ul>
  * <li>Our commit goes to trunk and another session committed to a branch
- * not yet merged back.</li>
+ * not yet merged back.
  * <li>Our commit goes to a branch and another session committed to trunk
- * or some other branch.</li>
+ * or some other branch.
  * </ul>
  * Other collisions like concurrent commits to trunk are handled earlier and
  * do not require collision marking.
diff --git a/oak-store-document/src/main/java/org/apache/jackrabbit/oak/plugins/document/DocumentDiscoveryLiteService.java b/oak-store-document/src/main/java/org/apache/jackrabbit/oak/plugins/document/DocumentDiscoveryLiteService.java
index 694335ed7d..684c818895 100644
--- a/oak-store-document/src/main/java/org/apache/jackrabbit/oak/plugins/document/DocumentDiscoveryLiteService.java
+++ b/oak-store-document/src/main/java/org/apache/jackrabbit/oak/plugins/document/DocumentDiscoveryLiteService.java
@@ -59,13 +59,12 @@ import org.slf4j.LoggerFactory;
  * the following states:
  * <ul>
  * <li>active: the instance is currently running and has an up-to-date lease
- * </li>
  * <li>deactivating: the instance failed to update the lease recently thus a
  * recovery is happening - or it has just finished and the local instance is yet
  * to do a backgroundRead before it has finished reading the crashed/shutdown
- * instance's last changes</li>
+ * instance's last changes
  * <li>inactive: the instance is currently not running and all its changes have
- * been seen by the local instance</li>
+ * been seen by the local instance
  * </ul>
  * <p>
  * Additionally, the cluster-view is assigned a monotonically increasing
@@ -117,10 +116,10 @@ import org.slf4j.LoggerFactory;
  * Prerequisites that the clusterView mechanism is stable:
  * <ul>
  * <li>the machine clocks are reasonably in sync - that is, they should be off
- * by magnitudes less than the lease updateFrequency/timeout</li>
+ * by magnitudes less than the lease updateFrequency/timeout
  * <li>the write-delays from any instance to the mongo server where the
  * clusterNodes and settings collections are stored should be very fast - at
- * least orders of magnitudes lower again than the lease timeout</li>
+ * least orders of magnitudes lower again than the lease timeout
  * <li>when this instance notices that others have kicked it out of the
  * clusterView (which it can find out when either its clusterNodes document is
  * set to recovering or it is not in the clusterView anymore, although it just
@@ -130,7 +129,7 @@ import org.slf4j.LoggerFactory;
  * have stabilized - waiting for recovery of its own instance by the remaining
  * instances in the cluster to have finished - and then probably waiting for
  * another gracePeriod until it might rejoin the cluster. In between, any commit
- * should fail with BannedFromClusterException</li>
+ * should fail with BannedFromClusterException
  * </ul>
  * 
  * @see #OAK_DISCOVERYLITE_CLUSTERVIEW
diff --git a/oak-store-document/src/main/java/org/apache/jackrabbit/oak/plugins/document/DocumentNodeStoreService.java b/oak-store-document/src/main/java/org/apache/jackrabbit/oak/plugins/document/DocumentNodeStoreService.java
index 27ce481cb7..b666795a54 100644
--- a/oak-store-document/src/main/java/org/apache/jackrabbit/oak/plugins/document/DocumentNodeStoreService.java
+++ b/oak-store-document/src/main/java/org/apache/jackrabbit/oak/plugins/document/DocumentNodeStoreService.java
@@ -792,7 +792,6 @@ public class DocumentNodeStoreService {
      * <p>
      * This method iterates over the provided varargs of features and closes each one
      * that is not null.
-     * </p>
      *
      * @param features a varargs of {@link Feature} objects to be closed.
      */
diff --git a/oak-store-document/src/main/java/org/apache/jackrabbit/oak/plugins/document/DocumentNodeStoreServiceConfiguration.java b/oak-store-document/src/main/java/org/apache/jackrabbit/oak/plugins/document/DocumentNodeStoreServiceConfiguration.java
index e26b806f04..98618299bf 100644
--- a/oak-store-document/src/main/java/org/apache/jackrabbit/oak/plugins/document/DocumentNodeStoreServiceConfiguration.java
+++ b/oak-store-document/src/main/java/org/apache/jackrabbit/oak/plugins/document/DocumentNodeStoreServiceConfiguration.java
@@ -39,13 +39,13 @@ import static java.util.Objects.requireNonNull;
  * entries in the following sequence:
  * <ul>
  *     <li>Framework/system properties, potentially with mapped names. See
- *          {@link #frameworkPropertyNameFor(String)}.</li>
+ *          {@link #frameworkPropertyNameFor(String)}.
  *     <li>OSGi configuration for {@link DocumentNodeStoreService} with
  *          {@link Configuration#PID} if the property is set via the
- *          OSGi Configuration Admin.</li>
+ *          OSGi Configuration Admin.
  *     <li>OSGi configuration with {@link Configuration#PRESET_PID}. The
  *          default value for a configuration entry will be provided if the
- *          OSGi Configuration Admin does not have an entry as a preset.</li>
+ *          OSGi Configuration Admin does not have an entry as a preset.
  * </ul>
  */
 final class DocumentNodeStoreServiceConfiguration {
diff --git a/oak-store-document/src/main/java/org/apache/jackrabbit/oak/plugins/document/NodeDocument.java b/oak-store-document/src/main/java/org/apache/jackrabbit/oak/plugins/document/NodeDocument.java
index 563522b23d..967ae774b2 100644
--- a/oak-store-document/src/main/java/org/apache/jackrabbit/oak/plugins/document/NodeDocument.java
+++ b/oak-store-document/src/main/java/org/apache/jackrabbit/oak/plugins/document/NodeDocument.java
@@ -563,7 +563,6 @@ public final class NodeDocument extends Document {
      *     <bold>Note</bold> - This method should only be invoked upon startup
      *     as then only we can safely assume that these revisions would not be
      *     committed
-     * </p>
      *
      * @param clusterId the clusterId.
      * @param batchSize the batch size to purge uncommitted revisions
diff --git a/oak-store-document/src/main/java/org/apache/jackrabbit/oak/plugins/document/Sweep2Helper.java b/oak-store-document/src/main/java/org/apache/jackrabbit/oak/plugins/document/Sweep2Helper.java
index ad6f226afa..01216f5e1a 100644
--- a/oak-store-document/src/main/java/org/apache/jackrabbit/oak/plugins/document/Sweep2Helper.java
+++ b/oak-store-document/src/main/java/org/apache/jackrabbit/oak/plugins/document/Sweep2Helper.java
@@ -90,7 +90,7 @@ public class Sweep2Helper {
 
     /**
      * Acquires a cluster singleton lock for doing a sweep2 unless a sweep2 was already done.
-     * <p/>
+     * <p>
      * 'If necessary' refers to the sweep2 status in the settings collection - no further
      * check is done based on content in the nodes collection in this method.
      * @return <ul>
diff --git a/oak-store-document/src/main/java/org/apache/jackrabbit/oak/plugins/document/VersionGCSupport.java b/oak-store-document/src/main/java/org/apache/jackrabbit/oak/plugins/document/VersionGCSupport.java
index c1735d7369..a32f1cc493 100644
--- a/oak-store-document/src/main/java/org/apache/jackrabbit/oak/plugins/document/VersionGCSupport.java
+++ b/oak-store-document/src/main/java/org/apache/jackrabbit/oak/plugins/document/VersionGCSupport.java
@@ -87,8 +87,6 @@ public class VersionGCSupport {
      * since the epoch and the implementation will convert them to seconds at
      * the granularity of the {@link NodeDocument#MODIFIED_IN_SECS} field and
      * then perform the comparison.
-     * <p/>
-     *
      *
      * @param fromModified the lower bound modified timestamp (inclusive)
      * @param toModified   the upper bound modified timestamp (exclusive)
diff --git a/oak-store-document/src/main/java/org/apache/jackrabbit/oak/plugins/document/VersionGarbageCollector.java b/oak-store-document/src/main/java/org/apache/jackrabbit/oak/plugins/document/VersionGarbageCollector.java
index 86291d8def..5ba70f150a 100644
--- a/oak-store-document/src/main/java/org/apache/jackrabbit/oak/plugins/document/VersionGarbageCollector.java
+++ b/oak-store-document/src/main/java/org/apache/jackrabbit/oak/plugins/document/VersionGarbageCollector.java
@@ -1543,7 +1543,7 @@ public class VersionGarbageCollector {
          * establishes whether a branch commit revision is committed or not - this is no
          * longer checked in this method. The resulting operations are added to the
          * provided updateOp.
-         * <p/>
+         * <p>
          * The actions depend on the exacty property key - here's the comprehensive list
          * of system properties and how they are handled:
          * <ul>
diff --git a/oak-store-document/src/main/java/org/apache/jackrabbit/oak/plugins/document/bundlor/Include.java b/oak-store-document/src/main/java/org/apache/jackrabbit/oak/plugins/document/bundlor/Include.java
index af12c7acdc..abf531407c 100644
--- a/oak-store-document/src/main/java/org/apache/jackrabbit/oak/plugins/document/bundlor/Include.java
+++ b/oak-store-document/src/main/java/org/apache/jackrabbit/oak/plugins/document/bundlor/Include.java
@@ -31,15 +31,15 @@ import static java.util.Objects.checkIndex;
  * Include represents a single path pattern which captures the path which
  * needs to be included in bundling. Path patterns can be like below.
  * <ul>
- *     <li>* - Match any immediate child</li>
- *     <li>*\/* - Match child with any name upto 2 levels of depth</li>
- *     <li>jcr:content - Match immediate child with name jcr:content</li>
- *     <li>jcr:content\/** - Match jcr:content and all its child</li>
+ *     <li>* - Match any immediate child
+ *     <li>*\/* - Match child with any name upto 2 levels of depth
+ *     <li>jcr:content - Match immediate child with name jcr:content
+ *     <li>jcr:content\/** - Match jcr:content and all its child
  * </ul>
  *
  * The last path element can specify a directive. Supported directive
  * <ul>
- *     <li>all - Include all nodes under given path</li>
+ *     <li>all - Include all nodes under given path
  * </ul>
  */
 public class Include {
diff --git a/oak-store-document/src/main/java/org/apache/jackrabbit/oak/plugins/document/mongo/MongoVersionGCSupport.java b/oak-store-document/src/main/java/org/apache/jackrabbit/oak/plugins/document/mongo/MongoVersionGCSupport.java
index 931a7b2d19..6b58b0438f 100644
--- a/oak-store-document/src/main/java/org/apache/jackrabbit/oak/plugins/document/mongo/MongoVersionGCSupport.java
+++ b/oak-store-document/src/main/java/org/apache/jackrabbit/oak/plugins/document/mongo/MongoVersionGCSupport.java
@@ -86,7 +86,7 @@ import com.mongodb.client.model.Filters;
  * to fetch required NodeDocuments
  *
  * <p>Version collection involves looking into old record and mostly unmodified
- * documents. In such case read from secondaries are preferred</p>
+ * documents. In such case read from secondaries are preferred
  */
 public class MongoVersionGCSupport extends VersionGCSupport {
 
@@ -237,7 +237,6 @@ public class MongoVersionGCSupport extends VersionGCSupport {
      * since the epoch and the implementation will convert them to seconds at
      * the granularity of the {@link NodeDocument#MODIFIED_IN_SECS} field and
      * then perform the comparison.
-     * <p/>
      *
      * @param fromModified the lower bound modified timestamp in millis (inclusive)
      * @param toModified   the upper bound modified timestamp in millis (exclusive)
diff --git a/oak-store-document/src/main/java/org/apache/jackrabbit/oak/plugins/document/rdb/RDBDocumentStore.java b/oak-store-document/src/main/java/org/apache/jackrabbit/oak/plugins/document/rdb/RDBDocumentStore.java
index ba4438f887..fd00c12dc9 100755
--- a/oak-store-document/src/main/java/org/apache/jackrabbit/oak/plugins/document/rdb/RDBDocumentStore.java
+++ b/oak-store-document/src/main/java/org/apache/jackrabbit/oak/plugins/document/rdb/RDBDocumentStore.java
@@ -103,13 +103,13 @@ import org.apache.jackrabbit.guava.common.collect.Iterators;
  * simplify testing, and <em>that</em> code specifically supports these
  * databases:
  * <ul>
- * <li>H2DB</li>
- * <li>Apache Derby</li>
- * <li>IBM DB2</li>
- * <li>PostgreSQL</li>
- * <li>MariaDB (MySQL)</li>
- * <li>Microsoft SQL Server</li>
- * <li>Oracle</li>
+ * <li>H2DB
+ * <li>Apache Derby
+ * <li>IBM DB2
+ * <li>PostgreSQL
+ * <li>MariaDB (MySQL)
+ * <li>Microsoft SQL Server
+ * <li>Oracle
  * </ul>
  * 
  * <h3 id="apidocs.table-layout">Table Layout</h3>
@@ -216,9 +216,9 @@ import org.apache.jackrabbit.guava.common.collect.Iterators;
  * <p>
  * Databases need to be configured so that:
  * <ul>
- * <li>Text fields support all Unicode code points,</li>
- * <li>Collation of text fields happens by Unicode code point,</li>
- * <li>and BLOBs need to support at least 16 MB.</li>
+ * <li>Text fields support all Unicode code points,
+ * <li>Collation of text fields happens by Unicode code point,
+ * <li>and BLOBs need to support at least 16 MB.
  * </ul>
  * <p>
  * See the
diff --git a/oak-store-document/src/test/java/org/apache/jackrabbit/oak/plugins/document/CollisionRollbackTest.java b/oak-store-document/src/test/java/org/apache/jackrabbit/oak/plugins/document/CollisionRollbackTest.java
index 326426f7cb..d52d28a972 100644
--- a/oak-store-document/src/test/java/org/apache/jackrabbit/oak/plugins/document/CollisionRollbackTest.java
+++ b/oak-store-document/src/test/java/org/apache/jackrabbit/oak/plugins/document/CollisionRollbackTest.java
@@ -103,7 +103,7 @@ public class CollisionRollbackTest {
      * MongoDocumentStore's nodesCache: when a document is read into
      * the nodesCache shortly before a collision is rolled back,
      * it runs risk of later making uncommitted changes visible.
-     * <p/>
+     * <p>
      * The test case works as follows:
      * <ul>
      * <li>consider clusterId 2 and 4 being active in a cluster</li>
diff --git a/oak-store-document/src/test/java/org/apache/jackrabbit/oak/plugins/document/DocumentMKBuilderProvider.java b/oak-store-document/src/test/java/org/apache/jackrabbit/oak/plugins/document/DocumentMKBuilderProvider.java
index 98245231dd..c73358dc69 100644
--- a/oak-store-document/src/test/java/org/apache/jackrabbit/oak/plugins/document/DocumentMKBuilderProvider.java
+++ b/oak-store-document/src/test/java/org/apache/jackrabbit/oak/plugins/document/DocumentMKBuilderProvider.java
@@ -27,16 +27,16 @@ import org.slf4j.LoggerFactory;
  * The <tt>DocumentMkBuilderProvider</tt> is a JUnit <tt>@Rule</tt> which
  * automatically disposes created <tt>DocumentNodeStore</tt> instances
  * 
- * <p>Usage samples are below</p>
+ * <p>Usage samples are below
  * 
- *  <p>Before:</p>
+ * <p>Before:
  *  
  *  <pre>
  *  @Test public void someTest() {
  *      DocumentNodeStore = new DocumentMK.Builder().getNodeStore();
  *  }</pre>
  *  
- *  <p>After:</p>
+ *  <p>After:
  *  
  *  <pre>
  *  @Rule
diff --git a/oak-store-document/src/test/java/org/apache/jackrabbit/oak/plugins/document/Sweep2TestHelper.java b/oak-store-document/src/test/java/org/apache/jackrabbit/oak/plugins/document/Sweep2TestHelper.java
index f8cc03118c..7e3fc3af11 100644
--- a/oak-store-document/src/test/java/org/apache/jackrabbit/oak/plugins/document/Sweep2TestHelper.java
+++ b/oak-store-document/src/test/java/org/apache/jackrabbit/oak/plugins/document/Sweep2TestHelper.java
@@ -215,7 +215,7 @@ public class Sweep2TestHelper {
     /**
      * Removes the "sweep2Status" from the settings collection as well
      * as emptying the "_sweepRev" from the "0:/" root if desired.
-     * <p/>
+     * <p>
      * The reason for emptying the "_sweepRev", and not straight removing it,
      * is that it has an influence on whether Sweep2Helper.isSweep2Necessary
      * considers a sweep2 necessary or not: if it's not there, then the
@@ -247,7 +247,7 @@ public class Sweep2TestHelper {
      * This simulates the provided store having done the changes
      * "pre 1.8" - ie it "ages" the document in a way that it looks
      * like they were applied "pre 1.8".
-     * <p/>
+     * <p>
      * The way this is done is to remove all the "_bc" entries
      * (as they didn't exist before 1.8) - *and then* doing a normal sweep (ie "sweep1")
      */
@@ -259,7 +259,7 @@ public class Sweep2TestHelper {
      * This simulates the provided store having done the changes
      * "pre 1.8" - ie it "ages" the document in a way that it looks
      * like they were applied "pre 1.8".
-     * <p/>
+     * <p>
      * The way this is done is to remove all the "_bc" entries
      * (as they didn't exist before 1.8) - *and then* doing a normal sweep (ie "sweep1")
      */
diff --git a/oak-store-spi/src/main/java/org/apache/jackrabbit/oak/spi/commit/EmptyHook.java b/oak-store-spi/src/main/java/org/apache/jackrabbit/oak/spi/commit/EmptyHook.java
index 20cb7359bc..8938d62b81 100644
--- a/oak-store-spi/src/main/java/org/apache/jackrabbit/oak/spi/commit/EmptyHook.java
+++ b/oak-store-spi/src/main/java/org/apache/jackrabbit/oak/spi/commit/EmptyHook.java
@@ -26,13 +26,13 @@ import org.jetbrains.annotations.NotNull;
  * <ol>
  * <li>The static {@link #INSTANCE} instance can be used as a "null object"
  * in cases where another commit hook has not been configured, thus avoiding
- * the need for extra code for such cases.</li>
+ * the need for extra code for such cases.
  * <li>Other commit hook implementations can extend this class and gain
  * improved forwards-compatibility to possible changes in the
  * {@link CommitHook} interface. For example if it is later decided that
  * new arguments are needed in the hook methods, this class is guaranteed
  * to implement any new method signatures in a way that falls gracefully
- * back to any earlier behavior.</li>
+ * back to any earlier behavior.
  * </ol>
  */
 public class EmptyHook implements CommitHook {
diff --git a/oak-store-spi/src/main/java/org/apache/jackrabbit/oak/spi/state/Clusterable.java b/oak-store-spi/src/main/java/org/apache/jackrabbit/oak/spi/state/Clusterable.java
index 1fc4bd3bbf..0edfd53751 100644
--- a/oak-store-spi/src/main/java/org/apache/jackrabbit/oak/spi/state/Clusterable.java
+++ b/oak-store-spi/src/main/java/org/apache/jackrabbit/oak/spi/state/Clusterable.java
@@ -27,8 +27,7 @@ public interface Clusterable {
      * <p>
      * Will return a unique number per instance across the cluster. It will only make its best
      * effort to preserve the same number across restarts but it must be unique across the cluster.
-     * </p>
-     * 
+     *
      * @return Cannot be null or empty.
      */
     @NotNull
@@ -40,7 +39,7 @@ public interface Clusterable {
      * one NodeStore are visible on another NodeStore of the same cluster. This
      * can be achieved by generating such a visibility token on the source
      * NodeStore, passing it on to the target NodeStore (by whatever means) and
-     * checking for visibility on that target NodeStore.</p>
+     * checking for visibility on that target NodeStore.
      *
      * <p>The visibility check returns true if the target NodeStore sees at least
      * all the changes that the source NodeStore saw at time of visibility token
@@ -48,16 +47,16 @@ public interface Clusterable {
      * it will always return true ever after. This also implies that the
      * visibility check can only state whether at least all source changes are
      * visible on the target and that it is independent of any further
-     * modifications.</p>
+     * modifications.
      *
      * <p>When source and target NodeStore are identical, the visibility check is
      * expected to return true, immediately. This is based on the assumption
      * that with a session.refresh() on that NodeStore you'll always get the
-     * latest changes applied by any other session locally.</p>
+     * latest changes applied by any other session locally.
      *
      * <p>Visibility tokens are meant to be lightweight and are not expected to be
      * persisted by the implementor. Nevertheless they should survive their
-     * validity in the case of crashes of the source and/or the target instance.</p>
+     * validity in the case of crashes of the source and/or the target instance.
      */
     @Nullable
     String getVisibilityToken();
@@ -65,10 +64,10 @@ public interface Clusterable {
     /**
      * <p>Checks if the underlying NodeStore sees at least the changes that were
      * visible at the time the visibility token was created on potentially
-     * another instance if in a clustered NodeStore setup.</p>
+     * another instance if in a clustered NodeStore setup.
      *
      * <p>If the visibility token was created on the underlying NodeStore this
-     * check always returns true, immediately.</p>
+     * check always returns true, immediately.
      * 
      * @param visibilityToken
      *            the visibility token that was created on another instance in a
diff --git a/oak-store-spi/src/main/java/org/apache/jackrabbit/oak/spi/state/MoveDetector.java b/oak-store-spi/src/main/java/org/apache/jackrabbit/oak/spi/state/MoveDetector.java
index 47ad53f746..f1614f37a3 100644
--- a/oak-store-spi/src/main/java/org/apache/jackrabbit/oak/spi/state/MoveDetector.java
+++ b/oak-store-spi/src/main/java/org/apache/jackrabbit/oak/spi/state/MoveDetector.java
@@ -40,14 +40,14 @@ import org.apache.jackrabbit.oak.spi.commit.Validator;
  * Limitations:
  * <ul>
  *     <li>Moving a moved node only reports one move from the original source to the final
- *     target.</li>
+ *     target.
  *     <li>Moving a transiently added node is not reported as a move operation but as an
- *     add operation on the move target.</li>
+ *     add operation on the move target.
  *     <li>Removing a moved node is not reported as a move operation but as a remove operation
- *     from the source of the move.</li>
+ *     from the source of the move.
  *     <li>Moving a child node of a transiently moved node is reported from the original
- *     source node, not from the intermediate one.</li>
- *     <li>Moving a node back and forth to its original location is not reported at all.</li>
+ *     source node, not from the intermediate one.
+ *     <li>Moving a node back and forth to its original location is not reported at all.
  * </ul>
  */
 public class MoveDetector implements Validator {
diff --git a/oak-store-spi/src/main/java/org/apache/jackrabbit/oak/spi/state/NodeBuilder.java b/oak-store-spi/src/main/java/org/apache/jackrabbit/oak/spi/state/NodeBuilder.java
index 77590a9d0b..79bae1a47f 100644
--- a/oak-store-spi/src/main/java/org/apache/jackrabbit/oak/spi/state/NodeBuilder.java
+++ b/oak-store-spi/src/main/java/org/apache/jackrabbit/oak/spi/state/NodeBuilder.java
@@ -34,15 +34,15 @@ import org.jetbrains.annotations.Nullable;
  * interface contains the following key methods:
  * <ul>
  * <li>The {@code setProperty} and {@code removeProperty} methods for
- *     modifying properties</li>
+ *     modifying properties
  * <li>The {@code getChildNode} method for accessing or modifying an existing
- *     subtree</li>
+ *     subtree
  * <li>The {@code setChildNode} and {@code removeChildNode} methods for adding,
- *     replacing or removing a subtree</li>
+ *     replacing or removing a subtree
  * <li>The {@code exists} method for checking whether the node represented by
- *     a builder exists or is accessible</li>
+ *     a builder exists or is accessible
  * <li>The {@code getNodeState} method for getting a frozen snapshot of the
- *     modified content tree</li>
+ *     modified content tree
  * </ul>
  * All the builders acquired from the same root builder instance are linked so
  * that changes made through one instance automatically become visible in the other