This is an automated email from the ASF dual-hosted git repository.
git-site-role pushed a commit to branch asf-site
in repository https://gitbox.apache.org/repos/asf/sling-site.git
The following commit(s) were added to refs/heads/asf-site by this push:
new 76aae2ba7 Automatic website deployment from
https://ci-builds.apache.org/job/Sling/job/modules/job/sling-site/job/master/774/
76aae2ba7 is described below
commit 76aae2ba7f7836bd07f2932aff2867fd2f55eef9
Author: jenkins <[email protected]>
AuthorDate: Thu Oct 19 19:35:17 2023 +0000
Automatic website deployment from
https://ci-builds.apache.org/job/Sling/job/modules/job/sling-site/job/master/774/
---
documentation/development/osgi-mock.html | 231 ++++++++++++++++++++++++++++++-
pagefind/fragment/en_57c747e.pf_fragment | Bin 0 -> 4674 bytes
pagefind/fragment/en_bacb946.pf_fragment | Bin 2744 -> 0 bytes
pagefind/index/en_1480382.pf_index | Bin 0 -> 37789 bytes
pagefind/index/en_1568a9b.pf_index | Bin 1710 -> 0 bytes
pagefind/index/en_1bbefdf.pf_index | Bin 38903 -> 0 bytes
pagefind/index/en_1bf3f82.pf_index | Bin 0 -> 40662 bytes
pagefind/index/en_20b1532.pf_index | Bin 45039 -> 0 bytes
pagefind/index/en_20dcf89.pf_index | Bin 40125 -> 0 bytes
pagefind/index/en_2d502ff.pf_index | Bin 40230 -> 0 bytes
pagefind/index/en_35e5b47.pf_index | Bin 0 -> 41140 bytes
pagefind/index/en_3e4112d.pf_index | Bin 0 -> 40016 bytes
pagefind/index/en_48a350f.pf_index | Bin 40362 -> 0 bytes
pagefind/index/en_4eb7fb5.pf_index | Bin 0 -> 40021 bytes
pagefind/index/en_4ec127d.pf_index | Bin 0 -> 47964 bytes
pagefind/index/en_5242fd9.pf_index | Bin 40396 -> 0 bytes
pagefind/index/en_59ca981.pf_index | Bin 38167 -> 0 bytes
pagefind/index/en_633c6fb.pf_index | Bin 0 -> 38958 bytes
pagefind/index/en_63c21b4.pf_index | Bin 0 -> 40528 bytes
pagefind/index/en_6534506.pf_index | Bin 40366 -> 0 bytes
pagefind/index/en_6e72fae.pf_index | Bin 0 -> 1724 bytes
pagefind/index/en_7975109.pf_index | Bin 41512 -> 0 bytes
pagefind/index/en_7b48848.pf_index | Bin 38901 -> 0 bytes
pagefind/index/en_7e9cf87.pf_index | Bin 0 -> 39541 bytes
pagefind/index/en_7fe756d.pf_index | Bin 39164 -> 0 bytes
pagefind/index/en_814f99a.pf_index | Bin 0 -> 39862 bytes
pagefind/index/en_86968db.pf_index | Bin 0 -> 39109 bytes
pagefind/index/en_8f0a3f7.pf_index | Bin 38781 -> 0 bytes
pagefind/index/en_9e9ce86.pf_index | Bin 0 -> 42000 bytes
pagefind/index/en_ae62b17.pf_index | Bin 40494 -> 0 bytes
pagefind/index/en_bcb811e.pf_index | Bin 40200 -> 0 bytes
pagefind/index/en_c118ef7.pf_index | Bin 37756 -> 0 bytes
pagefind/index/en_c8d7497.pf_index | Bin 0 -> 38931 bytes
pagefind/index/en_d7ed387.pf_index | Bin 0 -> 38460 bytes
pagefind/index/en_de98e81.pf_index | Bin 0 -> 40757 bytes
pagefind/index/en_e1ddf6b.pf_index | Bin 0 -> 40483 bytes
pagefind/index/en_ec54a03.pf_index | Bin 39767 -> 0 bytes
pagefind/index/en_ed1295a.pf_index | Bin 0 -> 40581 bytes
pagefind/index/en_f7e433b.pf_index | Bin 42218 -> 0 bytes
pagefind/pagefind-entry.json | 2 +-
pagefind/pagefind.en_2fca4d61ce.pf_meta | Bin 0 -> 1829 bytes
pagefind/pagefind.en_9a8449ae85.pf_meta | Bin 1828 -> 0 bytes
sitemap.xml | 4 +-
43 files changed, 233 insertions(+), 4 deletions(-)
diff --git a/documentation/development/osgi-mock.html
b/documentation/development/osgi-mock.html
index 460c3098c..b40e6f767 100644
--- a/documentation/development/osgi-mock.html
+++ b/documentation/development/osgi-mock.html
@@ -191,6 +191,10 @@
<ul>
<li>Support OSGi R6 and Declarative Services 1.3: Field-based reference
bindings and component property types</li>
</ul>
+<p>Since osgi-mock 3.4.0:</p>
+<ul>
+<li>Support direct construction of component property type <a
href="#config-annotations">Config Annotations</a>.</li>
+</ul>
<h2><a href="#usage" id="usage">Usage</a></h2>
<p>The <code>OsgiContext</code> object provides access to mock implementations
of:</p>
<ul>
@@ -312,6 +316,231 @@ myServiceConfig.update(props);
<li><a
href="https://github.com/apache/sling-org-apache-sling-testing-caconfig-mock-plugin/blob/master/src/main/java/org/apache/sling/testing/mock/caconfig/ContextPlugins.java">Apache
Sling Context-Aware Configuration Mock Plugin</a></li>
<li><a
href="https://github.com/apache/sling-org-apache-sling-testing-caconfig-mock-plugin/blob/master/src/test/java/org/apache/sling/testing/mock/caconfig/ContextPluginsTest.java">Apache
Sling Context-Aware Configuration Mock Plugin Test</a></li>
</ul>
+<h2><a href="#config-annotations" id="config-annotations">Config
Annotations</a></h2>
+<p>Since osgi-mock 3.4.0, it is possible to use your component
<code>Config</code> annotation test methods and classes, or use the provided
<code>@SetConfig</code> and <code>@ConfigType</code> annotations to construct
them for use as first-class values in unit tests.</p>
+<h3><a href="#setconfig" id="setconfig"><code>@SetConfig</code></a></h3>
+<p><code>@SetConfig</code> is used to declare a ConfigurationAdmin
configuration update prior to execution of a test using a
<code>@Component</code>-style property declaration.</p>
+<p>Either the <code>pid</code> or <code>component</code> Class attribute must
be specified for it to have any effect. If both are specified, the
<code>pid</code> attribute takes precedence.</p>
+<p>Multiple <code>@SetConfig</code> annotations may be specified on the test
class and the test method. They will be applied in the order they are declared,
<strong>starting with the class annotations, then the method
annotations</strong>.</p>
+<h3><a href="#configtype" id="configtype"><code>@ConfigType</code></a></h3>
+<p><code>@ConfigType</code> is used to map a service component's
<code>Config</code> annotation type to an optional
<code>@Component</code>-style property declaration, or to a pid to get a
configuration from <code>ConfigurationAdmin</code> when the type is injected as
a test parameter or collected by a <code>ConfigCollector</code>.</p>
+<h3><a href="#autoconfig" id="autoconfig"><code>@AutoConfig</code></a></h3>
+<p><code>@AutoConfig(MyService.class)</code> is used to automatically convert
a component property type annotation to a property map and install it using
ConfigurationAdmin for the designated component class, so that a matching
<code>context.registerInjectActivateService(MyService.class)</code> call will
reflect the values of config annotation, without having to explicitly pass them
as a <code>Map<String, Object></code> in the method arguments.</p>
+<p>An <code>@AutoConfig</code> annotation may be specified on the test class
or the test method. If both are specified, the method annotation takes
precedence.</p>
+<p>All <code>@SetConfig</code> annotations in scope will be applied before
<code>@AutoConfig</code>, if present, and <code>@ConfigType</code> annotations
will be constructed after that.</p>
+<p>Multiple <code>@ConfigType</code> annotations may be specified on the test
class and the test method. They will be injected into matching parameters in
the order they are declared, <strong>starting with the method annotations, then
the class annotations</strong>.</p>
+<p>Both osgi-mock.junit4 and osgi-mock.junit5 provide different approaches for
convenient reflection and injection of these annotations.</p>
+<h3><a href="#junit-5-osgiconfigparametersextension-junit-extension"
id="junit-5-osgiconfigparametersextension-junit-extension">JUnit 5:
<code>OsgiConfigParametersExtension</code> JUnit Extension</a></h3>
+<p>Given an OSGi component class that looks like this:</p>
+<pre><code><!-- TODO syntax marker (#!java) disabled -->import
org.osgi.service.component.annotations.Activate;
+import org.osgi.service.component.annotations.Component;
+import java.lang.annotation.Retention;
+import java.lang.annotation.RetentionPolicy;
+
+@Component(service = MyService.class)
+public class MyService {
+
+ // specify runtime retention to allow for direct usage in unit tests
+ @Retention(RetentionPolicy.RUNTIME)
+ public @interface Config {
+ String path() default "/";
+ }
+
+ private final String path;
+
+ @Activate
+ public MyService(Config config) {
+ this.path = config.path();
+ }
+
+ public String getPath() {
+ return path;
+ }
+}
+</code></pre>
+<p>A companion unit test in JUnit 5 might look like this:</p>
+<pre><code><!-- TODO syntax marker (#!java) disabled -->import
org.apache.sling.testing.mock.osgi.config.annotations.ConfigType;
+import org.apache.sling.testing.mock.osgi.config.annotations.SetConfig;
+import org.apache.sling.testing.mock.osgi.junit5.OsgiConfigParametersExtension;
+import org.junit.jupiter.api.Test;
+import org.junit.jupiter.api.extension.ExtendWith;
+
+import static org.junit.jupiter.api.Assertions.assertEquals;
+
+@ExtendWith(OsgiConfigParametersExtension.class)
+class MyServiceTest {
+
+ @Test
+ @MyService.Config(path = "/apps") // requires
@Retention(RetentionPolicy.RUNTIME)
+ void getPath(MyService.Config config) {
+ MyService myService = new MyService(config);
+ assertEquals("/apps", myService.getPath());
+ }
+
+ @Test
+ @ConfigType(type = MyService.Config.class, property =
"path=/libs")
+ void getPath_ConfigType(MyService.Config config) {
+ MyService myService = new MyService(config);
+ assertEquals("/libs", myService.getPath());
+ }
+
+ @Test
+ @SetConfig(pid = "new-pid", property = "path=/content")
+ @ConfigType(pid = "new-pid", type = MyService.Config.class)
+ void getPath_SetConfig(MyService.Config config) {
+ MyService myService = new MyService(config);
+ assertEquals("/content", myService.getPath());
+ }
+}
+</code></pre>
+<p>There are multiple ways to declare a <code>Config</code> annotation and
then use it as a test parameter.</p>
+<p>Directly use the annotation on the test method and declare it as a test
parameter:</p>
+<pre><code><!-- TODO syntax marker (#!java) disabled -->@Test
[email protected](path = "/apps")
+void getPath(MyService.Config config) {
+ MyService myService = new MyService(config);
+ assertEquals("/apps", myService.getPath());
+}
+</code></pre>
+<p>Directly use the annotation on the test method, but use the
<code>@AutoConfig(MyService.class)</code> annotation to install your component
configuration behind the scenes, so that
<code>registerInjectActivateService</code> will load it from
ConfigurationAdmin:</p>
+<pre><code><!-- TODO syntax marker (#!java) disabled -->@Test
+@AutoConfig(MyService.class)
[email protected](path = "/apps")
+void getPath() {
+ MyService myService =
context.registerInjectActivateService(MyService.class);
+ assertEquals("/apps", myService.getPath());
+}
+</code></pre>
+<p>To create more than one configurable service in your test, use the
<code>@ConfigMap</code> annotation on a <code>Map<String, Object></code>
parameters to have the typed config annotations converted for use as Map
arguments to <code>registerInjectActivateService</code>:</p>
+<pre><code><!-- TODO syntax marker (#!java) disabled -->
+@Test
[email protected](allowedPaths = "/apps")
[email protected](path = "/apps")
+void getPath(@ConfigMap(MyServiceDependency.Config.class)
+ Map<String, Object> myDependencyConfig,
+ @ConfigMap(MyService.Config.class)
+ Map<String, Object> myServiceConfig) {
+ MyServiceDependency myDependency =
+ context.registerInjectActivateService(MyServiceDependency.class,
myDependencyConfig);
+ MyService myService =
+ context.registerInjectActivateService(MyService.class,
myServiceConfig);
+ assertEquals("/apps", myService.getPath());
+}
+</code></pre>
+<h3><a href="#junit-4-configcollector-junit-rule"
id="junit-4-configcollector-junit-rule">JUnit 4: <code>ConfigCollector</code>
JUnit Rule</a></h3>
+<p>Given the same example OSGi component from before:</p>
+<pre><code><!-- TODO syntax marker (#!java) disabled -->import
org.osgi.service.component.annotations.Activate;
+import org.osgi.service.component.annotations.Component;
+import java.lang.annotation.Retention;
+import java.lang.annotation.RetentionPolicy;
+
+@Component(service = MyService.class)
+public class MyService {
+
+ // specify runtime retention to allow for direct usage in unit tests
+ @Retention(RetentionPolicy.RUNTIME)
+ public @interface Config {
+ String path() default "/";
+ }
+
+ private final String path;
+
+ @Activate
+ public MyService(Config config) {
+ this.path = config.path();
+ }
+
+ public String getPath() {
+ return path;
+ }
+}
+</code></pre>
+<p>A companion unit test in JUnit 4 might look like this:</p>
+<pre><code><!-- TODO syntax marker (#!java) disabled -->import
org.apache.sling.testing.mock.osgi.config.annotations.ConfigType;
+import org.apache.sling.testing.mock.osgi.config.annotations.SetConfig;
+import org.apache.sling.testing.mock.osgi.junit.ConfigCollector;
+import org.apache.sling.testing.mock.osgi.junit.OsgiContext;
+import org.apache.sling.testing.mock.osgi.junit.OsgiContextBuilder;
+import org.junit.Rule;
+
+import static org.junit.Assert.assertEquals;
+
+public class MyServiceTest {
+
+ @Rule
+ public OsgiContext context = new OsgiContextBuilder().build();
+
+ @Rule
+ public ConfigCollector configs = new ConfigCollector(context);
+
+ @Test
+ @MyService.Config(path = "/apps") // requires
@Retention(RetentionPolicy.RUNTIME)
+ public void myServiceMethod() {
+ MyService.Config config = configs.firstConfig(MyService.Config.class);
+ MyService myService = new MyService(config);
+ assertEquals("/apps", myService.getPath());
+ }
+
+ @Test
+ @ConfigType(type = MyService.Config.class, property =
"path=/libs")
+ public void myServiceMethod() {
+ MyService.Config config = configs.firstConfig(MyService.Config.class);
+ MyService myService = new MyService(config);
+ assertEquals("/libs", myService.getPath());
+ }
+
+ @Test
+ @SetConfig(pid = "new-pid", property = "path=/content")
+ @ConfigType(pid = "new-pid", type = MyService.Config.class)
+ public void myServiceMethod() {
+ MyService.Config config = configs.firstConfig(MyService.Config.class);
+ MyService myService = new MyService(config);
+ assertEquals("/content", myService.getPath());
+ }
+}
+</code></pre>
+<p>In JUnit4 are multiple ways to declare a <code>Config</code> annotation and
then use it as a test parameter.</p>
+<p>Directly use the annotation on the test method and retrieve it from the
<code>ConfigCollector</code> using the <code>firstConfig(Config.class)</code>
method to pass to your component's <code>@Activate</code> constructor:</p>
+<pre><code><!-- TODO syntax marker (#!java) disabled -->@Rule
+public ConfigCollector configs = new ConfigCollector(context);
+
+@Test
[email protected](path = "/apps")
+public void testGetPath() {
+ MyService.Config config = configs.firstConfig(MyService.Config.class);
+ MyService myService = new MyService(config);
+ assertEquals("/apps", myService.getPath());
+}
+</code></pre>
+<p>Directly use the annotation on the test method, but use the
<code>@AutoConfig(MyService.class)</code> annotation to install your component
configuration behind the scenes, so that
<code>registerInjectActivateService</code> will load it from
ConfigurationAdmin:</p>
+<pre><code><!-- TODO syntax marker (#!java) disabled -->@Rule
+public ConfigCollector configs = new ConfigCollector(context);
+
+@Test
+@AutoConfig(MyService.class)
[email protected](path = "/apps")
+public void testGetPath() {
+ MyService myService =
context.registerInjectActivateService(MyService.class);
+ assertEquals("/apps", myService.getPath());
+}
+</code></pre>
+<p>To create more than one configurable service in your test, use the
<code>ConfigCollector.firstConfigMap(Config.class)</code> method to return a
<code>Map<String, Object></code> converted from each <code>@Config</code>
annotation for use as Map arguments to
<code>registerInjectActivateService</code>:</p>
+<pre><code><!-- TODO syntax marker (#!java) disabled -->@Rule
+public ConfigCollector configs = new ConfigCollector(context);
+
+@Test
[email protected](allowedPaths = "/apps")
[email protected](path = "/apps")
+public void testGetPath() {
+ Map<String, Object> myDependencyConfig =
configs.firstConfigMap(MyServiceDependency.Config.class);
+ Map<String, Object> myServiceConfig =
configs.firstConfigMap(MyService.Config.class);
+ MyServiceDependency myDependency =
context.registerInjectActivateService(MyServiceDependency.class,
myDependencyConfig);
+ MyService myService =
context.registerInjectActivateService(MyService.class, myServiceConfig);
+ assertEquals("/apps", myService.getPath());
+}
+</code></pre>
+<h3><a href="#config-annotations-slingcontext-compatibility"
id="config-annotations-slingcontext-compatibility">Config Annotations:
SlingContext Compatibility</a></h3>
+<p>The OSGi Mock Config Annotations and JUnit4/JUnit5 extensions are
compatible with the <code>SlingContext</code> from Sling Mocks and other
libraries that provide extensions of <code>OsgiContextImpl</code>. The JUnit4
Rule or JUnit5 Extension will be available in test code as long as the osgi
context provider's junit4 or junit5 library is explicitly or transitively
dependent on the respective osgi-mock.junit4 or osgi-mock.junit5 dependency.</p>
</section></div></div><div data-pagefind-body="true"
data-pagefind-weight="7.0" style="display:none;"> - ( OSGi Mocks )</div>
</div>
</div>
@@ -323,7 +552,7 @@ myServiceConfig.update(props);
content/documentation/development/osgi-mock.md
</a>
</div> <div class="revisionInfo">
- Last modified by <span class="author">sseifert</span>
on <span class="comment">2019-03-17</span>
+ Last modified by <span class="author">Mark
Adamcin</span> on <span class="comment">2023-10-16</span>
</div><p>
Apache Sling, Sling, Apache, the Apache feather logo,
and the Apache Sling project
logo are trademarks of The Apache Software Foundation. All other marks
mentioned
diff --git a/pagefind/fragment/en_57c747e.pf_fragment
b/pagefind/fragment/en_57c747e.pf_fragment
new file mode 100644
index 000000000..6ae1a5d66
Binary files /dev/null and b/pagefind/fragment/en_57c747e.pf_fragment differ
diff --git a/pagefind/fragment/en_bacb946.pf_fragment
b/pagefind/fragment/en_bacb946.pf_fragment
deleted file mode 100644
index 86c733b8f..000000000
Binary files a/pagefind/fragment/en_bacb946.pf_fragment and /dev/null differ
diff --git a/pagefind/index/en_1480382.pf_index
b/pagefind/index/en_1480382.pf_index
new file mode 100644
index 000000000..7ff25df71
Binary files /dev/null and b/pagefind/index/en_1480382.pf_index differ
diff --git a/pagefind/index/en_1568a9b.pf_index
b/pagefind/index/en_1568a9b.pf_index
deleted file mode 100644
index 614cbf71e..000000000
Binary files a/pagefind/index/en_1568a9b.pf_index and /dev/null differ
diff --git a/pagefind/index/en_1bbefdf.pf_index
b/pagefind/index/en_1bbefdf.pf_index
deleted file mode 100644
index 3cb341f1a..000000000
Binary files a/pagefind/index/en_1bbefdf.pf_index and /dev/null differ
diff --git a/pagefind/index/en_1bf3f82.pf_index
b/pagefind/index/en_1bf3f82.pf_index
new file mode 100644
index 000000000..4e4d26417
Binary files /dev/null and b/pagefind/index/en_1bf3f82.pf_index differ
diff --git a/pagefind/index/en_20b1532.pf_index
b/pagefind/index/en_20b1532.pf_index
deleted file mode 100644
index b688fe0b1..000000000
Binary files a/pagefind/index/en_20b1532.pf_index and /dev/null differ
diff --git a/pagefind/index/en_20dcf89.pf_index
b/pagefind/index/en_20dcf89.pf_index
deleted file mode 100644
index bf48652fc..000000000
Binary files a/pagefind/index/en_20dcf89.pf_index and /dev/null differ
diff --git a/pagefind/index/en_2d502ff.pf_index
b/pagefind/index/en_2d502ff.pf_index
deleted file mode 100644
index 31ec14ea3..000000000
Binary files a/pagefind/index/en_2d502ff.pf_index and /dev/null differ
diff --git a/pagefind/index/en_35e5b47.pf_index
b/pagefind/index/en_35e5b47.pf_index
new file mode 100644
index 000000000..b264e7b6c
Binary files /dev/null and b/pagefind/index/en_35e5b47.pf_index differ
diff --git a/pagefind/index/en_3e4112d.pf_index
b/pagefind/index/en_3e4112d.pf_index
new file mode 100644
index 000000000..f2e3cdb2d
Binary files /dev/null and b/pagefind/index/en_3e4112d.pf_index differ
diff --git a/pagefind/index/en_48a350f.pf_index
b/pagefind/index/en_48a350f.pf_index
deleted file mode 100644
index 360189f7e..000000000
Binary files a/pagefind/index/en_48a350f.pf_index and /dev/null differ
diff --git a/pagefind/index/en_4eb7fb5.pf_index
b/pagefind/index/en_4eb7fb5.pf_index
new file mode 100644
index 000000000..95cac07bc
Binary files /dev/null and b/pagefind/index/en_4eb7fb5.pf_index differ
diff --git a/pagefind/index/en_4ec127d.pf_index
b/pagefind/index/en_4ec127d.pf_index
new file mode 100644
index 000000000..6ae9a7b96
Binary files /dev/null and b/pagefind/index/en_4ec127d.pf_index differ
diff --git a/pagefind/index/en_5242fd9.pf_index
b/pagefind/index/en_5242fd9.pf_index
deleted file mode 100644
index 90b4c11cd..000000000
Binary files a/pagefind/index/en_5242fd9.pf_index and /dev/null differ
diff --git a/pagefind/index/en_59ca981.pf_index
b/pagefind/index/en_59ca981.pf_index
deleted file mode 100644
index e100d90ba..000000000
Binary files a/pagefind/index/en_59ca981.pf_index and /dev/null differ
diff --git a/pagefind/index/en_633c6fb.pf_index
b/pagefind/index/en_633c6fb.pf_index
new file mode 100644
index 000000000..29cbcfc9f
Binary files /dev/null and b/pagefind/index/en_633c6fb.pf_index differ
diff --git a/pagefind/index/en_63c21b4.pf_index
b/pagefind/index/en_63c21b4.pf_index
new file mode 100644
index 000000000..f93396548
Binary files /dev/null and b/pagefind/index/en_63c21b4.pf_index differ
diff --git a/pagefind/index/en_6534506.pf_index
b/pagefind/index/en_6534506.pf_index
deleted file mode 100644
index e664b928e..000000000
Binary files a/pagefind/index/en_6534506.pf_index and /dev/null differ
diff --git a/pagefind/index/en_6e72fae.pf_index
b/pagefind/index/en_6e72fae.pf_index
new file mode 100644
index 000000000..01770c3cd
Binary files /dev/null and b/pagefind/index/en_6e72fae.pf_index differ
diff --git a/pagefind/index/en_7975109.pf_index
b/pagefind/index/en_7975109.pf_index
deleted file mode 100644
index 9069cccd8..000000000
Binary files a/pagefind/index/en_7975109.pf_index and /dev/null differ
diff --git a/pagefind/index/en_7b48848.pf_index
b/pagefind/index/en_7b48848.pf_index
deleted file mode 100644
index ac4306ea1..000000000
Binary files a/pagefind/index/en_7b48848.pf_index and /dev/null differ
diff --git a/pagefind/index/en_7e9cf87.pf_index
b/pagefind/index/en_7e9cf87.pf_index
new file mode 100644
index 000000000..acf0af243
Binary files /dev/null and b/pagefind/index/en_7e9cf87.pf_index differ
diff --git a/pagefind/index/en_7fe756d.pf_index
b/pagefind/index/en_7fe756d.pf_index
deleted file mode 100644
index 318439ef9..000000000
Binary files a/pagefind/index/en_7fe756d.pf_index and /dev/null differ
diff --git a/pagefind/index/en_814f99a.pf_index
b/pagefind/index/en_814f99a.pf_index
new file mode 100644
index 000000000..739eb07cd
Binary files /dev/null and b/pagefind/index/en_814f99a.pf_index differ
diff --git a/pagefind/index/en_86968db.pf_index
b/pagefind/index/en_86968db.pf_index
new file mode 100644
index 000000000..1d3302c90
Binary files /dev/null and b/pagefind/index/en_86968db.pf_index differ
diff --git a/pagefind/index/en_8f0a3f7.pf_index
b/pagefind/index/en_8f0a3f7.pf_index
deleted file mode 100644
index ce9eda873..000000000
Binary files a/pagefind/index/en_8f0a3f7.pf_index and /dev/null differ
diff --git a/pagefind/index/en_9e9ce86.pf_index
b/pagefind/index/en_9e9ce86.pf_index
new file mode 100644
index 000000000..091a16b31
Binary files /dev/null and b/pagefind/index/en_9e9ce86.pf_index differ
diff --git a/pagefind/index/en_ae62b17.pf_index
b/pagefind/index/en_ae62b17.pf_index
deleted file mode 100644
index 1d7a04d07..000000000
Binary files a/pagefind/index/en_ae62b17.pf_index and /dev/null differ
diff --git a/pagefind/index/en_bcb811e.pf_index
b/pagefind/index/en_bcb811e.pf_index
deleted file mode 100644
index 1152c488d..000000000
Binary files a/pagefind/index/en_bcb811e.pf_index and /dev/null differ
diff --git a/pagefind/index/en_c118ef7.pf_index
b/pagefind/index/en_c118ef7.pf_index
deleted file mode 100644
index a0202a85b..000000000
Binary files a/pagefind/index/en_c118ef7.pf_index and /dev/null differ
diff --git a/pagefind/index/en_c8d7497.pf_index
b/pagefind/index/en_c8d7497.pf_index
new file mode 100644
index 000000000..28bacbed9
Binary files /dev/null and b/pagefind/index/en_c8d7497.pf_index differ
diff --git a/pagefind/index/en_d7ed387.pf_index
b/pagefind/index/en_d7ed387.pf_index
new file mode 100644
index 000000000..38b27a6d8
Binary files /dev/null and b/pagefind/index/en_d7ed387.pf_index differ
diff --git a/pagefind/index/en_de98e81.pf_index
b/pagefind/index/en_de98e81.pf_index
new file mode 100644
index 000000000..5fcb17b29
Binary files /dev/null and b/pagefind/index/en_de98e81.pf_index differ
diff --git a/pagefind/index/en_e1ddf6b.pf_index
b/pagefind/index/en_e1ddf6b.pf_index
new file mode 100644
index 000000000..1be4603ff
Binary files /dev/null and b/pagefind/index/en_e1ddf6b.pf_index differ
diff --git a/pagefind/index/en_ec54a03.pf_index
b/pagefind/index/en_ec54a03.pf_index
deleted file mode 100644
index 72674f3a8..000000000
Binary files a/pagefind/index/en_ec54a03.pf_index and /dev/null differ
diff --git a/pagefind/index/en_ed1295a.pf_index
b/pagefind/index/en_ed1295a.pf_index
new file mode 100644
index 000000000..39b0f0fd8
Binary files /dev/null and b/pagefind/index/en_ed1295a.pf_index differ
diff --git a/pagefind/index/en_f7e433b.pf_index
b/pagefind/index/en_f7e433b.pf_index
deleted file mode 100644
index ad1dfc18b..000000000
Binary files a/pagefind/index/en_f7e433b.pf_index and /dev/null differ
diff --git a/pagefind/pagefind-entry.json b/pagefind/pagefind-entry.json
index e20b428e2..d59b0b77d 100644
--- a/pagefind/pagefind-entry.json
+++ b/pagefind/pagefind-entry.json
@@ -1 +1 @@
-{"version":"1.0.3","languages":{"en":{"hash":"en_9a8449ae85","wasm":"en","page_count":187}}}
\ No newline at end of file
+{"version":"1.0.3","languages":{"en":{"hash":"en_2fca4d61ce","wasm":"en","page_count":187}}}
\ No newline at end of file
diff --git a/pagefind/pagefind.en_2fca4d61ce.pf_meta
b/pagefind/pagefind.en_2fca4d61ce.pf_meta
new file mode 100644
index 000000000..42e4b20df
Binary files /dev/null and b/pagefind/pagefind.en_2fca4d61ce.pf_meta differ
diff --git a/pagefind/pagefind.en_9a8449ae85.pf_meta
b/pagefind/pagefind.en_9a8449ae85.pf_meta
deleted file mode 100644
index 3064ac28e..000000000
Binary files a/pagefind/pagefind.en_9a8449ae85.pf_meta and /dev/null differ
diff --git a/sitemap.xml b/sitemap.xml
index 1d893154e..f70b02068 100644
--- a/sitemap.xml
+++ b/sitemap.xml
@@ -1,6 +1,8 @@
<?xml version="1.0"?>
<urlset xmlns="http://www.sitemaps.org/schemas/sitemap/0.9"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://www.sitemaps.org/schemas/sitemap/0.9
http://www.sitemaps.org/schemas/sitemap/0.9/sitemap.xsd">
<url>
+
<loc>https://sling.apache.org/documentation/development/osgi-mock.html</loc><lastmod>2023-10-16</lastmod>
+ </url><url>
<loc>https://sling.apache.org/releases.html</loc><lastmod>2023-10-16</lastmod>
</url><url>
<loc>https://sling.apache.org/documentation/bundles/resource-merger.html</loc><lastmod>2023-10-12</lastmod>
@@ -154,8 +156,6 @@
<loc>https://sling.apache.org/documentation/getting-started/discover-sling-in-15-minutes.html</loc><lastmod>2019-07-09</lastmod>
</url><url>
<loc>https://sling.apache.org/documentation/development/testing-paxexam.html</loc><lastmod>2023-07-13</lastmod>
- </url><url>
-
<loc>https://sling.apache.org/documentation/development/osgi-mock.html</loc><lastmod>2019-03-17</lastmod>
</url><url>
<loc>https://sling.apache.org/documentation/development/jsr-305.html</loc><lastmod>2018-08-18</lastmod>
</url><url>