You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@sling.apache.org by di...@apache.org on 2021/06/29 14:37:26 UTC

[sling-org-apache-sling-sitemap] 01/03: SLING-10573: split packages with mixed Consumer- and ProviderTypes

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

diru pushed a commit to branch master
in repository https://gitbox.apache.org/repos/asf/sling-org-apache-sling-sitemap.git

commit d2fed006f571ba96b14c5246ac55f92d41cb9b7d
Author: Dirk Rudolph <di...@apache.org>
AuthorDate: Tue Jun 29 16:30:35 2021 +0200

    SLING-10573: split packages with mixed Consumer- and ProviderTypes
---
 .../{generator => }/SitemapGeneratorManager.java   |  4 ++--
 .../org/apache/sling/sitemap/SitemapService.java   |  2 +-
 .../sling/sitemap/{common => }/SitemapUtil.java    |  7 +++---
 .../java/org/apache/sling/sitemap/builder/Url.java |  3 ++-
 .../sling/sitemap/impl/SitemapEventUtil.java       |  2 +-
 .../sitemap/impl/SitemapGeneratorExecutor.java     |  9 +++-----
 .../sitemap/impl/SitemapGeneratorManagerImpl.java  |  4 ++--
 .../sling/sitemap/impl/SitemapScheduler.java       |  4 ++--
 .../sling/sitemap/impl/SitemapServiceImpl.java     |  8 +++----
 .../apache/sling/sitemap/impl/SitemapServlet.java  |  8 +++----
 .../apache/sling/sitemap/impl/SitemapStorage.java  |  6 ++---
 .../apache/sling/sitemap/impl/builder/UrlImpl.java |  2 +-
 .../AlternateLanguageExtensionProvider.java        | 16 ++++++-------
 .../impl/builder/extensions/ExtensionFactory.java  |  8 +++----
 .../extensions/ExtensionProviderManager.java       | 26 +++++++++++-----------
 .../impl/console/SitemapInventoryPlugin.java       |  2 +-
 .../{common => spi}/SitemapLinkExternalizer.java   |  7 +++---
 .../builder}/AbstractExtension.java                |  7 +++---
 .../builder/SitemapExtensionProvider.java}         | 12 +++++-----
 .../{generator => spi/builder}/package-info.java   |  2 +-
 .../generator/ResourceTreeSitemapGenerator.java    |  4 ++--
 .../{ => spi}/generator/SitemapGenerator.java      |  2 +-
 .../{common => spi/generator}/package-info.java    |  2 +-
 .../sitemap/{common => spi}/package-info.java      |  2 +-
 .../sitemap/{common => }/SitemapUtilTest.java      |  3 ++-
 .../org/apache/sling/sitemap/TestGenerator.java    |  2 +-
 .../sitemap/TestResourceTreeSitemapGenerator.java  |  2 +-
 .../sitemap/impl/SitemapGeneratorExecutorTest.java |  2 +-
 .../impl/SitemapGeneratorManagerImplTest.java      |  2 +-
 .../sling/sitemap/impl/SitemapSchedulerTest.java   |  2 +-
 .../impl/SitemapServiceImplSchedulingTest.java     |  2 +-
 .../sling/sitemap/impl/SitemapServiceImplTest.java |  2 +-
 .../sling/sitemap/impl/SitemapServletTest.java     |  2 +-
 .../sling/sitemap/impl/SitemapStorageTest.java     |  3 +--
 .../sling/sitemap/impl/builder/UrlImplTest.java    |  8 +++----
 .../ResourceTreeSitemapGeneratorTest.java          |  3 ++-
 36 files changed, 91 insertions(+), 91 deletions(-)

diff --git a/src/main/java/org/apache/sling/sitemap/generator/SitemapGeneratorManager.java b/src/main/java/org/apache/sling/sitemap/SitemapGeneratorManager.java
similarity index 96%
rename from src/main/java/org/apache/sling/sitemap/generator/SitemapGeneratorManager.java
rename to src/main/java/org/apache/sling/sitemap/SitemapGeneratorManager.java
index ac5ba71..4b20bd4 100644
--- a/src/main/java/org/apache/sling/sitemap/generator/SitemapGeneratorManager.java
+++ b/src/main/java/org/apache/sling/sitemap/SitemapGeneratorManager.java
@@ -16,14 +16,14 @@
  * specific language governing permissions and limitations
  * under the License.
  */
-package org.apache.sling.sitemap.generator;
+package org.apache.sling.sitemap;
 
 import org.apache.sling.api.resource.Resource;
+import org.apache.sling.sitemap.spi.generator.SitemapGenerator;
 import org.jetbrains.annotations.NotNull;
 import org.jetbrains.annotations.Nullable;
 import org.osgi.annotation.versioning.ProviderType;
 
-import java.util.Collection;
 import java.util.Map;
 import java.util.Set;
 
diff --git a/src/main/java/org/apache/sling/sitemap/SitemapService.java b/src/main/java/org/apache/sling/sitemap/SitemapService.java
index 7fe29f7..13717e2 100644
--- a/src/main/java/org/apache/sling/sitemap/SitemapService.java
+++ b/src/main/java/org/apache/sling/sitemap/SitemapService.java
@@ -19,7 +19,7 @@
 package org.apache.sling.sitemap;
 
 import org.apache.sling.api.resource.Resource;
-import org.apache.sling.sitemap.common.SitemapLinkExternalizer;
+import org.apache.sling.sitemap.spi.SitemapLinkExternalizer;
 import org.jetbrains.annotations.NotNull;
 import org.osgi.annotation.versioning.ProviderType;
 
diff --git a/src/main/java/org/apache/sling/sitemap/common/SitemapUtil.java b/src/main/java/org/apache/sling/sitemap/SitemapUtil.java
similarity index 98%
rename from src/main/java/org/apache/sling/sitemap/common/SitemapUtil.java
rename to src/main/java/org/apache/sling/sitemap/SitemapUtil.java
index 01b7cc0..1101fd8 100644
--- a/src/main/java/org/apache/sling/sitemap/common/SitemapUtil.java
+++ b/src/main/java/org/apache/sling/sitemap/SitemapUtil.java
@@ -16,15 +16,15 @@
  * specific language governing permissions and limitations
  * under the License.
  */
-package org.apache.sling.sitemap.common;
+package org.apache.sling.sitemap;
 
 import org.apache.jackrabbit.JcrConstants;
 import org.apache.jackrabbit.util.ISO9075;
 import org.apache.sling.api.resource.Resource;
 import org.apache.sling.api.resource.ResourceResolver;
-import org.apache.sling.sitemap.SitemapService;
 import org.jetbrains.annotations.NotNull;
 import org.jetbrains.annotations.Nullable;
+import org.osgi.annotation.versioning.ProviderType;
 
 import javax.jcr.query.Query;
 import java.util.*;
@@ -32,7 +32,8 @@ import java.util.*;
 /**
  * A utility class to give access to common functionality used for sitemaps.
  */
-public class SitemapUtil {
+@ProviderType
+public final class SitemapUtil {
 
     private static final String JCR_SYSTEM_PATH = "/" + JcrConstants.JCR_SYSTEM + "/";
 
diff --git a/src/main/java/org/apache/sling/sitemap/builder/Url.java b/src/main/java/org/apache/sling/sitemap/builder/Url.java
index e1598aa..3206b14 100644
--- a/src/main/java/org/apache/sling/sitemap/builder/Url.java
+++ b/src/main/java/org/apache/sling/sitemap/builder/Url.java
@@ -18,6 +18,7 @@
  */
 package org.apache.sling.sitemap.builder;
 
+import org.apache.sling.sitemap.spi.builder.SitemapExtensionProvider;
 import org.jetbrains.annotations.NotNull;
 import org.jetbrains.annotations.Nullable;
 import org.osgi.annotation.versioning.ProviderType;
@@ -68,7 +69,7 @@ public interface Url {
      * @param extensionInterface the interface of the extension to add
      * @param <T>                the type of the extension
      * @return an instance of the given interface, or null when no
-     * {@link org.apache.sling.sitemap.builder.extensions.ExtensionProvider} is registered for the given interface
+     * {@link SitemapExtensionProvider} is registered for the given interface
      */
     @Nullable <T extends Extension> T addExtension(Class<T> extensionInterface);
 
diff --git a/src/main/java/org/apache/sling/sitemap/impl/SitemapEventUtil.java b/src/main/java/org/apache/sling/sitemap/impl/SitemapEventUtil.java
index c0eefa1..6889d68 100644
--- a/src/main/java/org/apache/sling/sitemap/impl/SitemapEventUtil.java
+++ b/src/main/java/org/apache/sling/sitemap/impl/SitemapEventUtil.java
@@ -26,7 +26,7 @@ import java.util.Collections;
 import java.util.HashMap;
 import java.util.Map;
 
-import static org.apache.sling.sitemap.generator.SitemapGenerator.*;
+import static org.apache.sling.sitemap.spi.generator.SitemapGenerator.*;
 
 /**
  * A utility class to create new {@link Event}s for sitemap storage operations.
diff --git a/src/main/java/org/apache/sling/sitemap/impl/SitemapGeneratorExecutor.java b/src/main/java/org/apache/sling/sitemap/impl/SitemapGeneratorExecutor.java
index c667172..a1c0e39 100644
--- a/src/main/java/org/apache/sling/sitemap/impl/SitemapGeneratorExecutor.java
+++ b/src/main/java/org/apache/sling/sitemap/impl/SitemapGeneratorExecutor.java
@@ -31,8 +31,8 @@ import org.apache.sling.sitemap.SitemapException;
 import org.apache.sling.sitemap.SitemapService;
 import org.apache.sling.sitemap.builder.Sitemap;
 import org.apache.sling.sitemap.builder.Url;
-import org.apache.sling.sitemap.generator.SitemapGenerator;
-import org.apache.sling.sitemap.generator.SitemapGeneratorManager;
+import org.apache.sling.sitemap.spi.generator.SitemapGenerator;
+import org.apache.sling.sitemap.SitemapGeneratorManager;
 import org.apache.sling.sitemap.impl.builder.SitemapImpl;
 import org.apache.sling.sitemap.impl.builder.extensions.ExtensionProviderManager;
 import org.jetbrains.annotations.NotNull;
@@ -40,9 +40,6 @@ import org.jetbrains.annotations.Nullable;
 import org.osgi.service.component.annotations.Activate;
 import org.osgi.service.component.annotations.Component;
 import org.osgi.service.component.annotations.Reference;
-import org.osgi.service.event.Event;
-import org.osgi.service.event.EventAdmin;
-import org.osgi.service.event.EventProperties;
 import org.osgi.service.metatype.annotations.AttributeDefinition;
 import org.osgi.service.metatype.annotations.Designate;
 import org.osgi.service.metatype.annotations.ObjectClassDefinition;
@@ -54,7 +51,7 @@ import java.nio.ByteBuffer;
 import java.nio.charset.StandardCharsets;
 import java.util.*;
 
-import static org.apache.sling.sitemap.common.SitemapUtil.normalizeSitemapRoot;
+import static org.apache.sling.sitemap.SitemapUtil.normalizeSitemapRoot;
 
 @Component(
         service = JobExecutor.class,
diff --git a/src/main/java/org/apache/sling/sitemap/impl/SitemapGeneratorManagerImpl.java b/src/main/java/org/apache/sling/sitemap/impl/SitemapGeneratorManagerImpl.java
index c28b0de..3adb142 100644
--- a/src/main/java/org/apache/sling/sitemap/impl/SitemapGeneratorManagerImpl.java
+++ b/src/main/java/org/apache/sling/sitemap/impl/SitemapGeneratorManagerImpl.java
@@ -19,8 +19,8 @@
 package org.apache.sling.sitemap.impl;
 
 import org.apache.sling.api.resource.Resource;
-import org.apache.sling.sitemap.generator.SitemapGenerator;
-import org.apache.sling.sitemap.generator.SitemapGeneratorManager;
+import org.apache.sling.sitemap.spi.generator.SitemapGenerator;
+import org.apache.sling.sitemap.SitemapGeneratorManager;
 import org.jetbrains.annotations.NotNull;
 import org.jetbrains.annotations.Nullable;
 import org.osgi.service.component.annotations.*;
diff --git a/src/main/java/org/apache/sling/sitemap/impl/SitemapScheduler.java b/src/main/java/org/apache/sling/sitemap/impl/SitemapScheduler.java
index 53f8e46..ec6898d 100644
--- a/src/main/java/org/apache/sling/sitemap/impl/SitemapScheduler.java
+++ b/src/main/java/org/apache/sling/sitemap/impl/SitemapScheduler.java
@@ -26,7 +26,7 @@ import org.apache.sling.commons.scheduler.Scheduler;
 import org.apache.sling.event.jobs.Job;
 import org.apache.sling.event.jobs.JobManager;
 import org.apache.sling.serviceusermapping.ServiceUserMapped;
-import org.apache.sling.sitemap.generator.SitemapGeneratorManager;
+import org.apache.sling.sitemap.SitemapGeneratorManager;
 import org.jetbrains.annotations.Nullable;
 import org.osgi.service.component.annotations.Activate;
 import org.osgi.service.component.annotations.Component;
@@ -41,7 +41,7 @@ import org.slf4j.LoggerFactory;
 import java.util.*;
 import java.util.stream.Collectors;
 
-import static org.apache.sling.sitemap.common.SitemapUtil.findSitemapRoots;
+import static org.apache.sling.sitemap.SitemapUtil.findSitemapRoots;
 
 @Component(
         service = {SitemapScheduler.class, Runnable.class},
diff --git a/src/main/java/org/apache/sling/sitemap/impl/SitemapServiceImpl.java b/src/main/java/org/apache/sling/sitemap/impl/SitemapServiceImpl.java
index 60acd81..7b7dbac 100644
--- a/src/main/java/org/apache/sling/sitemap/impl/SitemapServiceImpl.java
+++ b/src/main/java/org/apache/sling/sitemap/impl/SitemapServiceImpl.java
@@ -21,9 +21,9 @@ package org.apache.sling.sitemap.impl;
 import org.apache.sling.api.resource.Resource;
 import org.apache.sling.sitemap.SitemapInfo;
 import org.apache.sling.sitemap.SitemapService;
-import org.apache.sling.sitemap.common.SitemapLinkExternalizer;
-import org.apache.sling.sitemap.common.SitemapUtil;
-import org.apache.sling.sitemap.generator.SitemapGeneratorManager;
+import org.apache.sling.sitemap.spi.SitemapLinkExternalizer;
+import org.apache.sling.sitemap.SitemapUtil;
+import org.apache.sling.sitemap.SitemapGeneratorManager;
 import org.jetbrains.annotations.NotNull;
 import org.jetbrains.annotations.Nullable;
 import org.osgi.framework.BundleContext;
@@ -35,7 +35,7 @@ import org.slf4j.LoggerFactory;
 
 import java.util.*;
 
-import static org.apache.sling.sitemap.common.SitemapUtil.*;
+import static org.apache.sling.sitemap.SitemapUtil.*;
 
 @Component(service = SitemapService.class)
 public class SitemapServiceImpl implements SitemapService {
diff --git a/src/main/java/org/apache/sling/sitemap/impl/SitemapServlet.java b/src/main/java/org/apache/sling/sitemap/impl/SitemapServlet.java
index ff5eaaf..2ed67fb 100644
--- a/src/main/java/org/apache/sling/sitemap/impl/SitemapServlet.java
+++ b/src/main/java/org/apache/sling/sitemap/impl/SitemapServlet.java
@@ -24,9 +24,9 @@ import org.apache.sling.api.resource.Resource;
 import org.apache.sling.api.servlets.ServletResolverConstants;
 import org.apache.sling.api.servlets.SlingSafeMethodsServlet;
 import org.apache.sling.sitemap.SitemapException;
-import org.apache.sling.sitemap.common.SitemapLinkExternalizer;
-import org.apache.sling.sitemap.generator.SitemapGenerator;
-import org.apache.sling.sitemap.generator.SitemapGeneratorManager;
+import org.apache.sling.sitemap.spi.SitemapLinkExternalizer;
+import org.apache.sling.sitemap.spi.generator.SitemapGenerator;
+import org.apache.sling.sitemap.SitemapGeneratorManager;
 import org.apache.sling.sitemap.impl.builder.SitemapImpl;
 import org.apache.sling.sitemap.impl.builder.SitemapIndexImpl;
 import org.apache.sling.sitemap.impl.builder.extensions.ExtensionProviderManager;
@@ -42,7 +42,7 @@ import javax.servlet.http.HttpServletResponse;
 import java.io.IOException;
 import java.util.*;
 
-import static org.apache.sling.sitemap.common.SitemapUtil.*;
+import static org.apache.sling.sitemap.SitemapUtil.*;
 import static org.apache.sling.sitemap.impl.SitemapServlet.*;
 
 @Component(
diff --git a/src/main/java/org/apache/sling/sitemap/impl/SitemapStorage.java b/src/main/java/org/apache/sling/sitemap/impl/SitemapStorage.java
index e3c4388..35ca029 100644
--- a/src/main/java/org/apache/sling/sitemap/impl/SitemapStorage.java
+++ b/src/main/java/org/apache/sling/sitemap/impl/SitemapStorage.java
@@ -27,8 +27,8 @@ import org.apache.sling.commons.metrics.Counter;
 import org.apache.sling.commons.metrics.MetricsService;
 import org.apache.sling.commons.scheduler.Scheduler;
 import org.apache.sling.serviceusermapping.ServiceUserMapped;
-import org.apache.sling.sitemap.common.SitemapUtil;
-import org.apache.sling.sitemap.generator.SitemapGeneratorManager;
+import org.apache.sling.sitemap.SitemapUtil;
+import org.apache.sling.sitemap.SitemapGeneratorManager;
 import org.jetbrains.annotations.NotNull;
 import org.jetbrains.annotations.Nullable;
 import org.osgi.service.component.annotations.*;
@@ -49,7 +49,7 @@ import java.util.stream.Collectors;
 import java.util.stream.Stream;
 import java.util.stream.StreamSupport;
 
-import static org.apache.sling.sitemap.common.SitemapUtil.*;
+import static org.apache.sling.sitemap.SitemapUtil.*;
 import static org.apache.sling.sitemap.impl.SitemapEventUtil.newPurgeEvent;
 import static org.apache.sling.sitemap.impl.SitemapEventUtil.newUpdateEvent;
 
diff --git a/src/main/java/org/apache/sling/sitemap/impl/builder/UrlImpl.java b/src/main/java/org/apache/sling/sitemap/impl/builder/UrlImpl.java
index c0dcbee..c9549e6 100644
--- a/src/main/java/org/apache/sling/sitemap/impl/builder/UrlImpl.java
+++ b/src/main/java/org/apache/sling/sitemap/impl/builder/UrlImpl.java
@@ -21,7 +21,7 @@ package org.apache.sling.sitemap.impl.builder;
 import org.apache.sling.sitemap.SitemapException;
 import org.apache.sling.sitemap.builder.Extension;
 import org.apache.sling.sitemap.builder.Url;
-import org.apache.sling.sitemap.builder.extensions.AbstractExtension;
+import org.apache.sling.sitemap.spi.builder.AbstractExtension;
 import org.apache.sling.sitemap.impl.builder.extensions.ExtensionFactory;
 import org.apache.sling.sitemap.impl.builder.extensions.ExtensionProviderManager;
 import org.jetbrains.annotations.NotNull;
diff --git a/src/main/java/org/apache/sling/sitemap/impl/builder/extensions/AlternateLanguageExtensionProvider.java b/src/main/java/org/apache/sling/sitemap/impl/builder/extensions/AlternateLanguageExtensionProvider.java
index 2f31ff0..e41ee82 100644
--- a/src/main/java/org/apache/sling/sitemap/impl/builder/extensions/AlternateLanguageExtensionProvider.java
+++ b/src/main/java/org/apache/sling/sitemap/impl/builder/extensions/AlternateLanguageExtensionProvider.java
@@ -18,9 +18,9 @@
  */
 package org.apache.sling.sitemap.impl.builder.extensions;
 
-import org.apache.sling.sitemap.builder.extensions.AbstractExtension;
+import org.apache.sling.sitemap.spi.builder.AbstractExtension;
 import org.apache.sling.sitemap.builder.extensions.AlternateLanguageExtension;
-import org.apache.sling.sitemap.builder.extensions.ExtensionProvider;
+import org.apache.sling.sitemap.spi.builder.SitemapExtensionProvider;
 import org.jetbrains.annotations.NotNull;
 import org.osgi.service.component.annotations.Component;
 
@@ -30,14 +30,14 @@ import java.util.Locale;
 
 @Component(
         property = {
-                ExtensionProvider.PROPERTY_INTERFACE + "=org.apache.sling.sitemap.builder.extensions.AlternateLanguageExtension",
-                ExtensionProvider.PROPERTY_PREFIX + "=xhtml",
-                ExtensionProvider.PROPERTY_NAMESPACE + "=http://www.w3.org/1999/xhtml",
-                ExtensionProvider.PROPERTY_LOCAL_NAME + "=link",
-                ExtensionProvider.PROPERTY_EMPTY_TAG + "=true"
+                SitemapExtensionProvider.PROPERTY_INTERFACE + "=org.apache.sling.sitemap.builder.extensions.AlternateLanguageExtension",
+                SitemapExtensionProvider.PROPERTY_PREFIX + "=xhtml",
+                SitemapExtensionProvider.PROPERTY_NAMESPACE + "=http://www.w3.org/1999/xhtml",
+                SitemapExtensionProvider.PROPERTY_LOCAL_NAME + "=link",
+                SitemapExtensionProvider.PROPERTY_EMPTY_TAG + "=true"
         }
 )
-public class AlternateLanguageExtensionProvider implements ExtensionProvider {
+public class AlternateLanguageExtensionProvider implements SitemapExtensionProvider {
 
     @Override
     @NotNull
diff --git a/src/main/java/org/apache/sling/sitemap/impl/builder/extensions/ExtensionFactory.java b/src/main/java/org/apache/sling/sitemap/impl/builder/extensions/ExtensionFactory.java
index 6c36ca2..6a56adc 100644
--- a/src/main/java/org/apache/sling/sitemap/impl/builder/extensions/ExtensionFactory.java
+++ b/src/main/java/org/apache/sling/sitemap/impl/builder/extensions/ExtensionFactory.java
@@ -18,19 +18,19 @@
  */
 package org.apache.sling.sitemap.impl.builder.extensions;
 
-import org.apache.sling.sitemap.builder.extensions.AbstractExtension;
-import org.apache.sling.sitemap.builder.extensions.ExtensionProvider;
+import org.apache.sling.sitemap.spi.builder.AbstractExtension;
+import org.apache.sling.sitemap.spi.builder.SitemapExtensionProvider;
 import org.jetbrains.annotations.NotNull;
 
 public class ExtensionFactory {
 
-    private final ExtensionProvider provider;
+    private final SitemapExtensionProvider provider;
     private final String namespace;
     private final String prefix;
     private final String localName;
     private final boolean emptyTag;
 
-    ExtensionFactory(ExtensionProvider provider,
+    ExtensionFactory(SitemapExtensionProvider provider,
                      String namespace, String prefix, String localName, boolean emptyTag) {
         this.provider = provider;
         this.namespace = namespace;
diff --git a/src/main/java/org/apache/sling/sitemap/impl/builder/extensions/ExtensionProviderManager.java b/src/main/java/org/apache/sling/sitemap/impl/builder/extensions/ExtensionProviderManager.java
index 17061ca..7441f51 100644
--- a/src/main/java/org/apache/sling/sitemap/impl/builder/extensions/ExtensionProviderManager.java
+++ b/src/main/java/org/apache/sling/sitemap/impl/builder/extensions/ExtensionProviderManager.java
@@ -19,7 +19,7 @@
 package org.apache.sling.sitemap.impl.builder.extensions;
 
 import org.apache.sling.sitemap.builder.Extension;
-import org.apache.sling.sitemap.builder.extensions.ExtensionProvider;
+import org.apache.sling.sitemap.spi.builder.SitemapExtensionProvider;
 import org.jetbrains.annotations.NotNull;
 import org.jetbrains.annotations.Nullable;
 import org.osgi.framework.BundleContext;
@@ -34,7 +34,7 @@ import java.util.*;
         service = ExtensionProviderManager.class,
         reference = {
                 @Reference(
-                        service = ExtensionProvider.class,
+                        service = SitemapExtensionProvider.class,
                         name = "providers",
                         bind = "bindExtensionProvider",
                         unbind = "unbindExtensionProvider",
@@ -55,7 +55,7 @@ public class ExtensionProviderManager {
         this.bundleContext = bundleContext;
     }
 
-    protected void bindExtensionProvider(ServiceReference<ExtensionProvider> ref) {
+    protected void bindExtensionProvider(ServiceReference<SitemapExtensionProvider> ref) {
         try {
             namespaces = null;
             providers.put(ref, new Holder(ref));
@@ -64,7 +64,7 @@ public class ExtensionProviderManager {
         }
     }
 
-    protected void unbindExtensionProvider(ServiceReference<ExtensionProvider> ref) {
+    protected void unbindExtensionProvider(ServiceReference<SitemapExtensionProvider> ref) {
         Holder holder = providers.remove(ref);
 
         if (holder != null && holder.provider != null) {
@@ -104,27 +104,27 @@ public class ExtensionProviderManager {
     }
 
     private class Holder {
-        private final ServiceReference<ExtensionProvider> ref;
+        private final ServiceReference<SitemapExtensionProvider> ref;
         private final String extensionInterface;
         private final String prefix;
         private final String namespace;
         private final String localName;
         private final boolean emptyTag;
 
-        private ExtensionProvider provider;
+        private SitemapExtensionProvider provider;
 
-        private Holder(ServiceReference<ExtensionProvider> ref) {
+        private Holder(ServiceReference<SitemapExtensionProvider> ref) {
             this.ref = ref;
             prefix = Objects
-                    .requireNonNull((String) ref.getProperty(ExtensionProvider.PROPERTY_PREFIX), "prefix missing");
+                    .requireNonNull((String) ref.getProperty(SitemapExtensionProvider.PROPERTY_PREFIX), "prefix missing");
             namespace = Objects
-                    .requireNonNull((String) ref.getProperty(ExtensionProvider.PROPERTY_NAMESPACE), "namespace missing");
+                    .requireNonNull((String) ref.getProperty(SitemapExtensionProvider.PROPERTY_NAMESPACE), "namespace missing");
             localName = Objects
-                    .requireNonNull((String) ref.getProperty(ExtensionProvider.PROPERTY_LOCAL_NAME), "local name missing");
+                    .requireNonNull((String) ref.getProperty(SitemapExtensionProvider.PROPERTY_LOCAL_NAME), "local name missing");
             extensionInterface = Objects
-                    .requireNonNull((String) ref.getProperty(ExtensionProvider.PROPERTY_INTERFACE), "prefix missing");
+                    .requireNonNull((String) ref.getProperty(SitemapExtensionProvider.PROPERTY_INTERFACE), "prefix missing");
 
-            Object emptyTagProp = ref.getProperty(ExtensionProvider.PROPERTY_EMPTY_TAG);
+            Object emptyTagProp = ref.getProperty(SitemapExtensionProvider.PROPERTY_EMPTY_TAG);
 
             if (emptyTagProp instanceof Boolean) {
                 emptyTag = (Boolean) emptyTagProp;
@@ -136,7 +136,7 @@ public class ExtensionProviderManager {
             }
         }
 
-        private ExtensionProvider getProvider() {
+        private SitemapExtensionProvider getProvider() {
             if (provider == null) {
                 provider = bundleContext.getService(ref);
             }
diff --git a/src/main/java/org/apache/sling/sitemap/impl/console/SitemapInventoryPlugin.java b/src/main/java/org/apache/sling/sitemap/impl/console/SitemapInventoryPlugin.java
index ef7f106..eec4441 100644
--- a/src/main/java/org/apache/sling/sitemap/impl/console/SitemapInventoryPlugin.java
+++ b/src/main/java/org/apache/sling/sitemap/impl/console/SitemapInventoryPlugin.java
@@ -27,7 +27,7 @@ import org.apache.sling.api.resource.ResourceResolverFactory;
 import org.apache.sling.commons.scheduler.Scheduler;
 import org.apache.sling.sitemap.SitemapInfo;
 import org.apache.sling.sitemap.SitemapService;
-import org.apache.sling.sitemap.common.SitemapUtil;
+import org.apache.sling.sitemap.SitemapUtil;
 import org.apache.sling.sitemap.impl.SitemapServiceConfiguration;
 import org.jetbrains.annotations.Nullable;
 import org.osgi.framework.BundleContext;
diff --git a/src/main/java/org/apache/sling/sitemap/common/SitemapLinkExternalizer.java b/src/main/java/org/apache/sling/sitemap/spi/SitemapLinkExternalizer.java
similarity index 91%
rename from src/main/java/org/apache/sling/sitemap/common/SitemapLinkExternalizer.java
rename to src/main/java/org/apache/sling/sitemap/spi/SitemapLinkExternalizer.java
index 0354d9f..9b0223e 100644
--- a/src/main/java/org/apache/sling/sitemap/common/SitemapLinkExternalizer.java
+++ b/src/main/java/org/apache/sling/sitemap/spi/SitemapLinkExternalizer.java
@@ -16,7 +16,7 @@
  * specific language governing permissions and limitations
  * under the License.
  */
-package org.apache.sling.sitemap.common;
+package org.apache.sling.sitemap.spi;
 
 import org.apache.sling.api.SlingHttpServletRequest;
 import org.apache.sling.api.resource.Resource;
@@ -33,13 +33,14 @@ public interface SitemapLinkExternalizer {
      * A default implementation of the {@link SitemapLinkExternalizer} which may be used as fallback.
      */
     SitemapLinkExternalizer DEFAULT = new SitemapLinkExternalizer() {
+        @Nullable
         @Override
-        public @Nullable String externalize(SlingHttpServletRequest context, String uri) {
+        public String externalize(SlingHttpServletRequest context, String uri) {
             return context.getResourceResolver().map(context, uri);
         }
 
         @Override
-        public @Nullable String externalize(Resource resource) {
+        public String externalize(Resource resource) {
             return resource.getResourceResolver().map(resource.getPath());
         }
     };
diff --git a/src/main/java/org/apache/sling/sitemap/builder/extensions/AbstractExtension.java b/src/main/java/org/apache/sling/sitemap/spi/builder/AbstractExtension.java
similarity index 91%
rename from src/main/java/org/apache/sling/sitemap/builder/extensions/AbstractExtension.java
rename to src/main/java/org/apache/sling/sitemap/spi/builder/AbstractExtension.java
index b6f91a7..8090cb0 100644
--- a/src/main/java/org/apache/sling/sitemap/builder/extensions/AbstractExtension.java
+++ b/src/main/java/org/apache/sling/sitemap/spi/builder/AbstractExtension.java
@@ -16,7 +16,7 @@
  * specific language governing permissions and limitations
  * under the License.
  */
-package org.apache.sling.sitemap.builder.extensions;
+package org.apache.sling.sitemap.spi.builder;
 
 import org.apache.sling.sitemap.builder.Extension;
 import org.jetbrains.annotations.NotNull;
@@ -26,7 +26,7 @@ import javax.xml.stream.XMLStreamException;
 import javax.xml.stream.XMLStreamWriter;
 
 /**
- * The producer API of an extension.
+ * The producer API of an {@link Extension}.
  */
 @ConsumerType
 public abstract class AbstractExtension implements Extension {
@@ -36,8 +36,7 @@ public abstract class AbstractExtension implements Extension {
      * <p>
      * The extension must not open/close its own surrounding tag. This is done by the caller in order to guarantee
      * proper isolation between the core implementation and the extensions. Furthermore, when an extension fails and
-     * throws an {@link XMLStreamException} the extensions output will simply be discarded but the sitemap generation
-     * will not fail.
+     * throws an {@link XMLStreamException} the extensions output will be discarded but the sitemap generation will not fail.
      *
      * @param writer
      * @throws XMLStreamException
diff --git a/src/main/java/org/apache/sling/sitemap/builder/extensions/ExtensionProvider.java b/src/main/java/org/apache/sling/sitemap/spi/builder/SitemapExtensionProvider.java
similarity index 84%
rename from src/main/java/org/apache/sling/sitemap/builder/extensions/ExtensionProvider.java
rename to src/main/java/org/apache/sling/sitemap/spi/builder/SitemapExtensionProvider.java
index d4eea11..aff8158 100644
--- a/src/main/java/org/apache/sling/sitemap/builder/extensions/ExtensionProvider.java
+++ b/src/main/java/org/apache/sling/sitemap/spi/builder/SitemapExtensionProvider.java
@@ -16,26 +16,26 @@
  * specific language governing permissions and limitations
  * under the License.
  */
-package org.apache.sling.sitemap.builder.extensions;
+package org.apache.sling.sitemap.spi.builder;
 
 import org.jetbrains.annotations.NotNull;
 import org.osgi.annotation.versioning.ConsumerType;
 
 /**
  * To provide an implementation for a defined sub type of {@link org.apache.sling.sitemap.builder.Extension} an
- * {@link ExtensionProvider} needs to be registered as OSGI service.
+ * {@link SitemapExtensionProvider} needs to be registered as OSGI service.
  * <p>
  * In order to hide the implementation detail of an extension from the the consumer API, the return type of
- * {@link ExtensionProvider#newInstance()} is {@link AbstractExtension}, the provider facing API of the extension.
+ * {@link SitemapExtensionProvider#newInstance()} is {@link AbstractExtension}, the provider facing API of the extension.
  * However to use the returned instance, it has to also implement the extension sub type interface and be registered
  * with it's full qualified class name.
  * <p>
- * There may be multiple {@link ExtensionProvider}s using the same namespace. If so the one with the highest ranking
+ * There may be multiple {@link SitemapExtensionProvider}s using the same namespace. If so the one with the highest ranking
  * according to the OSGI specification will define the namespace's prefix, which means that lower ranking services
  * may use another prefix then they were registered with.
  */
 @ConsumerType
-public interface ExtensionProvider {
+public interface SitemapExtensionProvider {
 
     /**
      * The mandatory property to set to the {@link org.apache.sling.sitemap.builder.Extension} sub-type.
@@ -60,7 +60,7 @@ public interface ExtensionProvider {
     String PROPERTY_EMPTY_TAG = "extension.emptyTag";
 
     /**
-     * Returns a new instance of the extension provided by the {@link ExtensionProvider}.
+     * Returns a new instance of the extension provided by the {@link SitemapExtensionProvider}.
      *
      * @return
      */
diff --git a/src/main/java/org/apache/sling/sitemap/generator/package-info.java b/src/main/java/org/apache/sling/sitemap/spi/builder/package-info.java
similarity index 89%
rename from src/main/java/org/apache/sling/sitemap/generator/package-info.java
rename to src/main/java/org/apache/sling/sitemap/spi/builder/package-info.java
index 31283f3..d0717d7 100644
--- a/src/main/java/org/apache/sling/sitemap/generator/package-info.java
+++ b/src/main/java/org/apache/sling/sitemap/spi/builder/package-info.java
@@ -17,6 +17,6 @@
  * under the License.
  */
 @Version("1.0.0")
-package org.apache.sling.sitemap.generator;
+package org.apache.sling.sitemap.spi.builder;
 
 import org.osgi.annotation.versioning.Version;
\ No newline at end of file
diff --git a/src/main/java/org/apache/sling/sitemap/generator/ResourceTreeSitemapGenerator.java b/src/main/java/org/apache/sling/sitemap/spi/generator/ResourceTreeSitemapGenerator.java
similarity index 97%
rename from src/main/java/org/apache/sling/sitemap/generator/ResourceTreeSitemapGenerator.java
rename to src/main/java/org/apache/sling/sitemap/spi/generator/ResourceTreeSitemapGenerator.java
index 88190c4..73acb70 100644
--- a/src/main/java/org/apache/sling/sitemap/generator/ResourceTreeSitemapGenerator.java
+++ b/src/main/java/org/apache/sling/sitemap/spi/generator/ResourceTreeSitemapGenerator.java
@@ -16,7 +16,7 @@
  * specific language governing permissions and limitations
  * under the License.
  */
-package org.apache.sling.sitemap.generator;
+package org.apache.sling.sitemap.spi.generator;
 
 import org.apache.jackrabbit.JcrConstants;
 import org.apache.sling.api.resource.Resource;
@@ -30,7 +30,7 @@ import java.util.concurrent.atomic.AtomicBoolean;
 import java.util.stream.Stream;
 import java.util.stream.StreamSupport;
 
-import static org.apache.sling.sitemap.common.SitemapUtil.isSitemapRoot;
+import static org.apache.sling.sitemap.SitemapUtil.isSitemapRoot;
 
 /**
  * A default implementation of {@link SitemapGenerator} that traverses a resource tree.
diff --git a/src/main/java/org/apache/sling/sitemap/generator/SitemapGenerator.java b/src/main/java/org/apache/sling/sitemap/spi/generator/SitemapGenerator.java
similarity index 99%
rename from src/main/java/org/apache/sling/sitemap/generator/SitemapGenerator.java
rename to src/main/java/org/apache/sling/sitemap/spi/generator/SitemapGenerator.java
index 984e78c..155bdaf 100644
--- a/src/main/java/org/apache/sling/sitemap/generator/SitemapGenerator.java
+++ b/src/main/java/org/apache/sling/sitemap/spi/generator/SitemapGenerator.java
@@ -16,7 +16,7 @@
  * specific language governing permissions and limitations
  * under the License.
  */
-package org.apache.sling.sitemap.generator;
+package org.apache.sling.sitemap.spi.generator;
 
 import org.apache.sling.api.resource.Resource;
 import org.apache.sling.sitemap.SitemapException;
diff --git a/src/main/java/org/apache/sling/sitemap/common/package-info.java b/src/main/java/org/apache/sling/sitemap/spi/generator/package-info.java
similarity index 89%
copy from src/main/java/org/apache/sling/sitemap/common/package-info.java
copy to src/main/java/org/apache/sling/sitemap/spi/generator/package-info.java
index 42c3595..54efedc 100644
--- a/src/main/java/org/apache/sling/sitemap/common/package-info.java
+++ b/src/main/java/org/apache/sling/sitemap/spi/generator/package-info.java
@@ -17,6 +17,6 @@
  * under the License.
  */
 @Version("1.0.0")
-package org.apache.sling.sitemap.common;
+package org.apache.sling.sitemap.spi.generator;
 
 import org.osgi.annotation.versioning.Version;
\ No newline at end of file
diff --git a/src/main/java/org/apache/sling/sitemap/common/package-info.java b/src/main/java/org/apache/sling/sitemap/spi/package-info.java
similarity index 90%
rename from src/main/java/org/apache/sling/sitemap/common/package-info.java
rename to src/main/java/org/apache/sling/sitemap/spi/package-info.java
index 42c3595..9df2171 100644
--- a/src/main/java/org/apache/sling/sitemap/common/package-info.java
+++ b/src/main/java/org/apache/sling/sitemap/spi/package-info.java
@@ -17,6 +17,6 @@
  * under the License.
  */
 @Version("1.0.0")
-package org.apache.sling.sitemap.common;
+package org.apache.sling.sitemap.spi;
 
 import org.osgi.annotation.versioning.Version;
\ No newline at end of file
diff --git a/src/test/java/org/apache/sling/sitemap/common/SitemapUtilTest.java b/src/test/java/org/apache/sling/sitemap/SitemapUtilTest.java
similarity index 99%
rename from src/test/java/org/apache/sling/sitemap/common/SitemapUtilTest.java
rename to src/test/java/org/apache/sling/sitemap/SitemapUtilTest.java
index 702cd13..678d081 100644
--- a/src/test/java/org/apache/sling/sitemap/common/SitemapUtilTest.java
+++ b/src/test/java/org/apache/sling/sitemap/SitemapUtilTest.java
@@ -16,11 +16,12 @@
  * specific language governing permissions and limitations
  * under the License.
  */
-package org.apache.sling.sitemap.common;
+package org.apache.sling.sitemap;
 
 import com.google.common.collect.ImmutableMap;
 import org.apache.sling.api.resource.Resource;
 import org.apache.sling.sitemap.SitemapService;
+import org.apache.sling.sitemap.SitemapUtil;
 import org.apache.sling.testing.mock.sling.junit5.SlingContext;
 import org.apache.sling.testing.mock.sling.junit5.SlingContextExtension;
 import org.hamcrest.CustomMatcher;
diff --git a/src/test/java/org/apache/sling/sitemap/TestGenerator.java b/src/test/java/org/apache/sling/sitemap/TestGenerator.java
index 1fb92f3..d051a3d 100644
--- a/src/test/java/org/apache/sling/sitemap/TestGenerator.java
+++ b/src/test/java/org/apache/sling/sitemap/TestGenerator.java
@@ -20,7 +20,7 @@ package org.apache.sling.sitemap;
 
 import org.apache.sling.api.resource.Resource;
 import org.apache.sling.sitemap.builder.Sitemap;
-import org.apache.sling.sitemap.generator.SitemapGenerator;
+import org.apache.sling.sitemap.spi.generator.SitemapGenerator;
 import org.jetbrains.annotations.NotNull;
 
 import java.util.*;
diff --git a/src/test/java/org/apache/sling/sitemap/TestResourceTreeSitemapGenerator.java b/src/test/java/org/apache/sling/sitemap/TestResourceTreeSitemapGenerator.java
index c683244..ff75a9b 100644
--- a/src/test/java/org/apache/sling/sitemap/TestResourceTreeSitemapGenerator.java
+++ b/src/test/java/org/apache/sling/sitemap/TestResourceTreeSitemapGenerator.java
@@ -20,7 +20,7 @@ package org.apache.sling.sitemap;
 
 import org.apache.sling.api.resource.Resource;
 import org.apache.sling.sitemap.builder.Sitemap;
-import org.apache.sling.sitemap.generator.ResourceTreeSitemapGenerator;
+import org.apache.sling.sitemap.spi.generator.ResourceTreeSitemapGenerator;
 import org.jetbrains.annotations.NotNull;
 
 import java.util.Collections;
diff --git a/src/test/java/org/apache/sling/sitemap/impl/SitemapGeneratorExecutorTest.java b/src/test/java/org/apache/sling/sitemap/impl/SitemapGeneratorExecutorTest.java
index 4e7291f..91caba8 100644
--- a/src/test/java/org/apache/sling/sitemap/impl/SitemapGeneratorExecutorTest.java
+++ b/src/test/java/org/apache/sling/sitemap/impl/SitemapGeneratorExecutorTest.java
@@ -26,7 +26,7 @@ import org.apache.sling.serviceusermapping.ServiceUserMapped;
 import org.apache.sling.sitemap.SitemapException;
 import org.apache.sling.sitemap.SitemapService;
 import org.apache.sling.sitemap.builder.Sitemap;
-import org.apache.sling.sitemap.generator.SitemapGenerator;
+import org.apache.sling.sitemap.spi.generator.SitemapGenerator;
 import org.apache.sling.sitemap.impl.builder.SitemapImplTest;
 import org.apache.sling.sitemap.impl.builder.extensions.ExtensionProviderManager;
 import org.apache.sling.testing.mock.osgi.MockOsgi;
diff --git a/src/test/java/org/apache/sling/sitemap/impl/SitemapGeneratorManagerImplTest.java b/src/test/java/org/apache/sling/sitemap/impl/SitemapGeneratorManagerImplTest.java
index aa81bdc..a8f9b0c 100644
--- a/src/test/java/org/apache/sling/sitemap/impl/SitemapGeneratorManagerImplTest.java
+++ b/src/test/java/org/apache/sling/sitemap/impl/SitemapGeneratorManagerImplTest.java
@@ -19,7 +19,7 @@
 package org.apache.sling.sitemap.impl;
 
 import org.apache.sling.sitemap.SitemapService;
-import org.apache.sling.sitemap.generator.SitemapGenerator;
+import org.apache.sling.sitemap.spi.generator.SitemapGenerator;
 import org.apache.sling.testing.mock.osgi.MockOsgi;
 import org.apache.sling.testing.mock.sling.junit5.SlingContext;
 import org.apache.sling.testing.mock.sling.junit5.SlingContextExtension;
diff --git a/src/test/java/org/apache/sling/sitemap/impl/SitemapSchedulerTest.java b/src/test/java/org/apache/sling/sitemap/impl/SitemapSchedulerTest.java
index fb792cb..d91c36b 100644
--- a/src/test/java/org/apache/sling/sitemap/impl/SitemapSchedulerTest.java
+++ b/src/test/java/org/apache/sling/sitemap/impl/SitemapSchedulerTest.java
@@ -28,7 +28,7 @@ import org.apache.sling.event.jobs.JobManager;
 import org.apache.sling.serviceusermapping.ServiceUserMapped;
 import org.apache.sling.sitemap.SitemapService;
 import org.apache.sling.sitemap.TestGenerator;
-import org.apache.sling.sitemap.generator.SitemapGenerator;
+import org.apache.sling.sitemap.spi.generator.SitemapGenerator;
 import org.apache.sling.testing.mock.jcr.MockJcr;
 import org.apache.sling.testing.mock.sling.ResourceResolverType;
 import org.apache.sling.testing.mock.sling.junit5.SlingContext;
diff --git a/src/test/java/org/apache/sling/sitemap/impl/SitemapServiceImplSchedulingTest.java b/src/test/java/org/apache/sling/sitemap/impl/SitemapServiceImplSchedulingTest.java
index 02bf845..de184ef 100644
--- a/src/test/java/org/apache/sling/sitemap/impl/SitemapServiceImplSchedulingTest.java
+++ b/src/test/java/org/apache/sling/sitemap/impl/SitemapServiceImplSchedulingTest.java
@@ -27,7 +27,7 @@ import org.apache.sling.serviceusermapping.ServiceUserMapped;
 import org.apache.sling.sitemap.SitemapException;
 import org.apache.sling.sitemap.SitemapService;
 import org.apache.sling.sitemap.builder.Sitemap;
-import org.apache.sling.sitemap.generator.SitemapGenerator;
+import org.apache.sling.sitemap.spi.generator.SitemapGenerator;
 import org.apache.sling.testing.mock.jcr.MockJcr;
 import org.apache.sling.testing.mock.sling.ResourceResolverType;
 import org.apache.sling.testing.mock.sling.junit5.SlingContext;
diff --git a/src/test/java/org/apache/sling/sitemap/impl/SitemapServiceImplTest.java b/src/test/java/org/apache/sling/sitemap/impl/SitemapServiceImplTest.java
index dc78fae..77f6326 100644
--- a/src/test/java/org/apache/sling/sitemap/impl/SitemapServiceImplTest.java
+++ b/src/test/java/org/apache/sling/sitemap/impl/SitemapServiceImplTest.java
@@ -24,7 +24,7 @@ import org.apache.sling.serviceusermapping.ServiceUserMapped;
 import org.apache.sling.sitemap.SitemapInfo;
 import org.apache.sling.sitemap.SitemapService;
 import org.apache.sling.sitemap.TestGenerator;
-import org.apache.sling.sitemap.generator.SitemapGenerator;
+import org.apache.sling.sitemap.spi.generator.SitemapGenerator;
 import org.apache.sling.testing.mock.jcr.MockJcr;
 import org.apache.sling.testing.mock.sling.ResourceResolverType;
 import org.apache.sling.testing.mock.sling.junit5.SlingContext;
diff --git a/src/test/java/org/apache/sling/sitemap/impl/SitemapServletTest.java b/src/test/java/org/apache/sling/sitemap/impl/SitemapServletTest.java
index 669d403..ba5d95b 100644
--- a/src/test/java/org/apache/sling/sitemap/impl/SitemapServletTest.java
+++ b/src/test/java/org/apache/sling/sitemap/impl/SitemapServletTest.java
@@ -24,7 +24,7 @@ import org.apache.sling.event.jobs.JobManager;
 import org.apache.sling.serviceusermapping.ServiceUserMapped;
 import org.apache.sling.sitemap.SitemapService;
 import org.apache.sling.sitemap.TestResourceTreeSitemapGenerator;
-import org.apache.sling.sitemap.generator.SitemapGenerator;
+import org.apache.sling.sitemap.spi.generator.SitemapGenerator;
 import org.apache.sling.sitemap.impl.builder.SitemapImplTest;
 import org.apache.sling.sitemap.impl.builder.extensions.ExtensionProviderManager;
 import org.apache.sling.testing.mock.jcr.MockJcr;
diff --git a/src/test/java/org/apache/sling/sitemap/impl/SitemapStorageTest.java b/src/test/java/org/apache/sling/sitemap/impl/SitemapStorageTest.java
index 486534d..c327d66 100644
--- a/src/test/java/org/apache/sling/sitemap/impl/SitemapStorageTest.java
+++ b/src/test/java/org/apache/sling/sitemap/impl/SitemapStorageTest.java
@@ -25,7 +25,7 @@ import org.apache.sling.api.resource.Resource;
 import org.apache.sling.api.resource.ValueMap;
 import org.apache.sling.serviceusermapping.ServiceUserMapped;
 import org.apache.sling.sitemap.SitemapService;
-import org.apache.sling.sitemap.generator.SitemapGenerator;
+import org.apache.sling.sitemap.spi.generator.SitemapGenerator;
 import org.apache.sling.testing.mock.sling.junit5.SlingContext;
 import org.apache.sling.testing.mock.sling.junit5.SlingContextExtension;
 import org.hamcrest.CustomMatcher;
@@ -33,7 +33,6 @@ import org.hamcrest.Matcher;
 import org.junit.jupiter.api.BeforeEach;
 import org.junit.jupiter.api.Test;
 import org.junit.jupiter.api.extension.ExtendWith;
-import org.junit.platform.commons.util.StringUtils;
 import org.mockito.Mock;
 import org.mockito.junit.jupiter.MockitoExtension;
 import org.osgi.service.event.Event;
diff --git a/src/test/java/org/apache/sling/sitemap/impl/builder/UrlImplTest.java b/src/test/java/org/apache/sling/sitemap/impl/builder/UrlImplTest.java
index e0c8ab6..bd0a330 100644
--- a/src/test/java/org/apache/sling/sitemap/impl/builder/UrlImplTest.java
+++ b/src/test/java/org/apache/sling/sitemap/impl/builder/UrlImplTest.java
@@ -21,8 +21,8 @@ package org.apache.sling.sitemap.impl.builder;
 import org.apache.sling.sitemap.SitemapException;
 import org.apache.sling.sitemap.builder.Extension;
 import org.apache.sling.sitemap.builder.Url;
-import org.apache.sling.sitemap.builder.extensions.AbstractExtension;
-import org.apache.sling.sitemap.builder.extensions.ExtensionProvider;
+import org.apache.sling.sitemap.spi.builder.AbstractExtension;
+import org.apache.sling.sitemap.spi.builder.SitemapExtensionProvider;
 import org.apache.sling.sitemap.impl.builder.extensions.ExtensionProviderManager;
 import org.apache.sling.testing.mock.sling.junit5.SlingContext;
 import org.jetbrains.annotations.NotNull;
@@ -48,7 +48,7 @@ public class UrlImplTest extends AbstractBuilderTest {
     @BeforeEach
     public void setup() {
         context.registerService(
-                ExtensionProvider.class, new TestExtensionProvider(),
+                SitemapExtensionProvider.class, new TestExtensionProvider(),
                 "extension.interface", TestExtension.class.getName(),
                 "extension.prefix", TestExtensionProvider.PREFIX,
                 "extension.namespace", TestExtensionProvider.NAMESPACE,
@@ -172,7 +172,7 @@ public class UrlImplTest extends AbstractBuilderTest {
         TestExtension setValue(String value);
     }
 
-    static class TestExtensionProvider implements ExtensionProvider {
+    static class TestExtensionProvider implements SitemapExtensionProvider {
 
         static String NAMESPACE = "http://localhost/schema/test/1.0";
         static String PREFIX = "tst";
diff --git a/src/test/java/org/apache/sling/sitemap/generator/ResourceTreeSitemapGeneratorTest.java b/src/test/java/org/apache/sling/sitemap/spi/generator/ResourceTreeSitemapGeneratorTest.java
similarity index 98%
rename from src/test/java/org/apache/sling/sitemap/generator/ResourceTreeSitemapGeneratorTest.java
rename to src/test/java/org/apache/sling/sitemap/spi/generator/ResourceTreeSitemapGeneratorTest.java
index 3f55698..d87f975 100644
--- a/src/test/java/org/apache/sling/sitemap/generator/ResourceTreeSitemapGeneratorTest.java
+++ b/src/test/java/org/apache/sling/sitemap/spi/generator/ResourceTreeSitemapGeneratorTest.java
@@ -16,7 +16,7 @@
  * specific language governing permissions and limitations
  * under the License.
  */
-package org.apache.sling.sitemap.generator;
+package org.apache.sling.sitemap.spi.generator;
 
 import org.apache.sling.api.resource.Resource;
 import org.apache.sling.sitemap.SitemapException;
@@ -24,6 +24,7 @@ import org.apache.sling.sitemap.SitemapService;
 import org.apache.sling.sitemap.TestResourceTreeSitemapGenerator;
 import org.apache.sling.sitemap.impl.builder.extensions.ExtensionProviderManager;
 import org.apache.sling.sitemap.impl.builder.SitemapImpl;
+import org.apache.sling.sitemap.spi.generator.SitemapGenerator;
 import org.apache.sling.testing.mock.sling.junit5.SlingContext;
 import org.apache.sling.testing.mock.sling.junit5.SlingContextExtension;
 import org.junit.jupiter.api.BeforeEach;