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 152e09a Automatic website deployment from
https://ci-builds.apache.org/job/Sling/job/modules/job/sling-site/job/master/317/
152e09a is described below
commit 152e09adc08543f1cd3d341593f847a1f2fd6995
Author: jenkins <[email protected]>
AuthorDate: Thu Nov 4 14:31:37 2021 +0000
Automatic website deployment from
https://ci-builds.apache.org/job/Sling/job/modules/job/sling-site/job/master/317/
---
.../bundles/resource-access-security.html | 65 ++++++++++++----------
.../the-sling-engine/sling-api-crud-support.html | 63 ++++++++++++---------
sitemap.xml | 8 +--
3 files changed, 77 insertions(+), 59 deletions(-)
diff --git a/documentation/bundles/resource-access-security.html
b/documentation/bundles/resource-access-security.html
index 43dec73..67a9e6c 100644
--- a/documentation/bundles/resource-access-security.html
+++ b/documentation/bundles/resource-access-security.html
@@ -112,31 +112,34 @@
</li>
</ul>
</nav><script src='/res/jquery-3.2.1.min.js'
type='text/javascript'></script><script src='/res/tocjs-1-1-2.js'
type='text/javascript'></script><script
type='text/javascript'>$(document).ready(function() {
$('#generatedToC').toc({'selector':'h1[class!=title],h2,h3','ulClass':'menu-list'});
} );</script><div class="content is-marginless">
-<div class="row"><div><section><p>Notice: Licensed to the Apache Software
Foundation (ASF) under one or more contributor license agreements. See the
NOTICE file distributed with this work for additional information regarding
copyright ownership. The ASF licenses this file to you under the Apache
License, Version 2.0 (the "License"); you may not use this file
except in compliance with the License. You may obtain a copy of the License at
. http://www.apache.org/licenses/LIC [...]
-<h2><a href="#summary" id="summary">Summary</a></h2>
-<p>The ResourceAccessSecurity service allows it to restrict access to
resources. The access can be granted or denied for read, create, update and
delete actions.</p>
-<p>The ResourceAccessSecurity defines a service API which is used in two
different context: for securing resource providers which have no own access
control and on the application level to further restrict the access to
resources in general.</p>
-<p>A resource access security service is registered with the service property
“context”. Allowed values are “application” and “provider”. If the value is
missing or invalid, the service will be ignored.</p>
-<p>In the context of resource providers, this service might be used for
implementations of resource providers where the underlying persistence layer
does not implement access control. The goal is to make it easy to implement a
lightweight access control for such providers. For example, a JCR resource
providers should not use the provider context resource access security - in a
JCR context, security is fully delegated to the underlying repository, and
mixing security models would be a bad [...]
-<p>In the context of the application, this service might be used to add
additional or temporary constraints across the whole resource tree.</p>
-<h2><a href="#how-to-use-resourceaccesssecurity"
id="how-to-use-resourceaccesssecurity">How to use
ResourceAccessSecurity</a></h2>
-<p>To use the ResourceAccessSecurity service you don’t have to implement the
interface ResourceAccessSecurity. Simply add the resourceaccesssecurity bundle
to your sling instance. This adds an implementation of the
ResourceAccessSecurity service for the provider context (“provider”) and also
the application context (“application”).</p>
-<p>Furthermore the implementation of ResourceAccessSecurity defines a service
provider interface named ResourceAccessGate. This is the service interface
which you can implement and register to control the access to the resources.</p>
-<p>The ResourceAccessGate defines a service API which can be used to make some
restrictions to accessing resources. Implementations of this service interface
must be registered like ResourceProvider with a path (like provider.roots but
with the property name “path”). If different ResourceAccessGate services match
a path, not only the ResourceAccessGate with the longest path will be called,
but all of them, that's in contrast to the ResourceProvider, but in this case
more logical (and sec [...]
-<h3><a href="#service-properties" id="service-properties">Service
properties</a></h3>
+<div class="row"><div><section><h1><a href="#summary"
id="summary">Summary</a></h1>
+<p>The <code>ResourceAccessSecurity</code> service allows to restrict access
to resources. The access can be granted or denied for read, create, update,
delete and order resources actions.</p>
+<p>The <code>ResourceAccessSecurity</code> interface defines a service API
which is used in two different context:</p>
+<ol>
+<li>for securing resource providers which have no own access control and</li>
+<li>on the application level to further restrict the access to resources in
general.</li>
+</ol>
+<p>A resource access security service is registered with the service property
<code>context</code>. Allowed values are <code>application</code> and
<code>provider</code>. If the value is missing or invalid, the service will be
ignored.</p>
+<p>In the context of resource providers, this service might be used for those
providers where the underlying persistence layer does not implement access
control. The goal is to make it easy to implement a lightweight access control
for such providers. On the other hand a JCR resource providers should not use
the provider context resource access security - in a JCR context, security is
fully delegated to the underlying repository, and mixing security models would
be a bad idea.</p>
+<p>In the context of the application, this service might be used to add
additional or temporary constraints across the whole resource tree. It is
automatically called by the Resource Resolver implementation.</p>
+<h1><a href="#default-implementation" id="default-implementation">Default
Implementation</a></h1>
+<p>To use the <code>ResourceAccessSecurity</code> service just rely on the
default implementation provided by the <a
href="https://github.com/apache/sling-org-apache-sling-resourceaccesssecurity"><code>resourceaccesssecurity</code>bundle</a>.
This adds an implementation of the <code>ResourceAccessSecurity</code> service
for the provider context (<code>provider</code>) and also the application
context (<code>application</code>).</p>
+<p>Furthermore this implementation of <code>ResourceAccessSecurity</code>
defines a service provider interface (SPI) named
<code>ResourceAccessGate</code>. This is the service interface which you can
implement and register to control the access to particular resources.</p>
+<p>The <code>ResourceAccessGate</code> interface defines an SPI which can be
used to make some restrictions for accessing resources. Implementations of this
service interface must be registered like <code>ResourceProvider</code>s with a
path (like <code>provider.roots</code> but with the property name
<code>path</code>). If multiple <code>ResourceAccessGate</code> services match
a path, not only the <code>ResourceAccessGate</code> with the longest path will
be called, but all of them. Th [...]
+<h2><a href="#service-properties-for-resourceaccessgate-services"
id="service-properties-for-resourceaccessgate-services">Service properties for
<code>ResourceAccessGate</code> services</a></h2>
<table>
<thead>
-<tr><th>Property name </th><th> description</th></tr>
+<tr><th>Name </th><th> Description </th><th> Default</th></tr>
</thead>
<tbody>
-<tr><td>Path </td><td> regexp to define on which paths the
service should be called (default .*)</td></tr>
-<tr><td>operations </td><td> set of operations on which the service
should be called ("read,create,update,delete,execute", default all of
them)</td></tr>
-<tr><td>finaloperations </td><td> set of operations on which the service
answer is final and no further service should be called (default none of them),
except the GateResult is GateResult.CANT_DECIDE</td></tr>
-<tr><td>context </td><td> “provider” or “application”. The resource
access gate can either have the context “provider”, in this case the gate is
only applied to resource providers requesting the security checks. Or the
context can be “application”. In this case the access gate is invoked for the
whole resource tree. This is indicated by the required service property
“context”. If the property is missing or invalid, the service is
ignored.</td></tr>
+<tr><td><code>path</code> </td><td> Regular expression to
restrict on which paths the service should be called </td><td>
<code>.*</code></td></tr>
+<tr><td><code>operations</code> </td><td> Set of operations on which
the service should be called. Allowed string values:
<code>read</code>,<code>create</code>,<code>update</code>,<code>delete</code>,<code>execute</code>,<code>order-children</code>.
The value <code>order-children</code> is only supported since version 1.1.0
(<a href="https://issues.apache.org/jira/browse/SLING-7975">SLING-7975</a>)
</td><td> <code>{
"read","create","update","dele [...]
+<tr><td><code>finaloperations</code> </td><td> Set of operations on which
the service answer is final and no further service should be called, except the
GateResult is GateResult.CANT_DECIDE. Allows the same values as
<code>operations</code>. </td><td> (none)</td></tr>
+<tr><td><code>context</code> </td><td> The resource access gate can
either have the context <code>provider</code> in which case the gate is only
applied to resource providers requesting the security checks or the context
<code>application</code> in which case the access gate is invoked for the whole
resource tree. If the property is missing or invalid, the service is ignored.
</td><td> (none)</td></tr>
</tbody>
</table>
-<h3><a href="#how-to-implement-resourceaccessgate"
id="how-to-implement-resourceaccessgate">How to implement
ResourceAccessGate</a></h3>
-<p>The implementation is straightforward. The easiest way is to extend
<code>AllowingResourceAccessGate</code> which is exported by the
resourceaccesssecurity bundle and does not deny any access. So if you wan’t
restrict access on resources for read operations you have to implement to
following two methods:</p>
+<h2><a href="#how-to-implement-resourceaccessgate"
id="how-to-implement-resourceaccessgate">How to implement
<code>ResourceAccessGate</code></a></h2>
+<p>The implementation is straightforward: The easiest way is to extend
<code>AllowingResourceAccessGate</code> which is exported by the
<code>resourceaccesssecurity</code> bundle and does not deny any access. So if
you want to restrict access on resources for read operations you have to
implement to following two methods:</p>
<pre><code><!-- TODO syntax marker (::java) disabled -->@Override
public boolean hasReadRestrictions(final ResourceResolver resourceResolver) {
return true;
@@ -155,18 +158,20 @@ public GateResult canRead(final Resource resource) {
return returnValue;
}
</code></pre>
-<p>And you have to register the ResourceAccessGate with the path where you
wan’t to restrict access and the operation property set to “read”. Furthermore
you have to decide if the ResourceAccessGate should operate on all resource
providers (context=”application”) or only on the resourceproviders flagged with
the property useResourceAccessSecurity=true (context=”provider”).</p>
+<p>You have to register the <code>ResourceAccessGate</code> with service
properties outlined above.</p>
<p>Tip: We do not recommend to mix up application and provider context in the
same application. This can lead to confusing configurations in the
ResourceAccessGate implementations.</p>
-<h3><a href="#gateresult" id="gateresult">GateResult</a></h3>
+<h2><a href="#gateresult" id="gateresult">GateResult</a></h2>
<p>GateResult does have three states:</p>
-<ul>
-<li>GateResult.GRANTED</li>
-<li>GateResult.DENIED</li>
-<li>GateResult.CANT_DECIDE</li>
-</ul>
-<p>The first two of them are self-explanatory. CANT_DECIDE means that the
actual gate neither can grant nor deny the access. If no other gate does return
GRANTED or DENIED the access to the resource will be denied for security
reasons. CANT-DECIDE comes handy if you declare finaloperations (where no other
gate will be called after this gate). If such a gate returns CANT_DECIDE,
further gates will be called regardless of the setted finaloperations
property.</p>
-<h2><a href="#actual-state-of-resourceaccesssecurity"
id="actual-state-of-resourceaccesssecurity">Actual state of
ResourceAccessSecurity</a></h2>
-<p>By now the implementation is complete for securing access on resource level
for CRUD operations. It is not yet ready to allow fine granular access rights
on values of a resource. So at the moment the <code>canReadValue,
canUpdateValue, canDeleteValue</code> and <code>canCreateValue</code> on
<code>ResourceAccessGate</code> methods are ignored.</p>
+<ol>
+<li><code>GateResult.GRANTED</code></li>
+<li><code>GateResult.DENIED</code></li>
+<li><code>GateResult.CANT_DECIDE</code></li>
+</ol>
+<p>The first two of them are self-explanatory. <code>CANT_DECIDE</code> means
that the actual gate neither can grant nor deny the access. If no other gate
does return <code>GRANTED</code> or <code>DENIED</code> the access to the
resource will be denied for security reasons. <code>CANT_DECIDE</code> comes
handy if you declare <code>finaloperations</code> (where no other gate will be
called after this gate). If such a gate returns <code>CANT_DECIDE</code>,
further gates will be called rega [...]
+<h2><a href="#resourceaccessgates-implementations"
id="resourceaccessgates-implementations"><code>ResourceAccessGates</code>
Implementations</a></h2>
+<p>There is an implementation of <code>ResourceAccessGate</code> provided by
<a
href="https://github.com/apache/sling-org-apache-sling-jcr-resourcesecurity">bundle
<code>org.apache.sling.jcr.resourcesecurity</code></a> which grants/denies
access based on the permissions set on a JCR node. <em>This should only be used
for paths not provided by the JCR Resource Provider</em>. It is implemented as
service factory so each OSGi configuration provides a dedicated
<code>ResourceAccessGate</code [...]
+<h2><a href="#limitations" id="limitations">Limitations</a></h2>
+<p>By now the implementation is complete for securing access on resource level
for CRUD operations. It is not yet ready to allow fine granular access rights
on properties/values of a resource. So at the moment the <code>canReadValue,
canUpdateValue, canDeleteValue</code> and <code>canCreateValue</code> on
<code>ResourceAccessGate</code> methods are ignored (<a
href="https://issues.apache.org/jira/browse/SLING-10906">SLING-10906</a>).</p>
</section></div></div>
</div>
</div>
@@ -178,7 +183,7 @@ public GateResult canRead(final Resource resource) {
content/documentation/bundles/resource-access-security.md
</a>
</div> <div class="revisionInfo">
- Last modified by <span class="author">Bertrand
Delacretaz</span> on <span class="comment">2017-09-29</span>
+ Last modified by <span class="author">Konrad
Windszus</span> on <span class="comment">2021-11-04</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 may be trademarks or registered
trademarks of their respective owners.
</p><p>
diff --git a/documentation/the-sling-engine/sling-api-crud-support.html
b/documentation/the-sling-engine/sling-api-crud-support.html
index fe2a758..f45b794 100644
--- a/documentation/the-sling-engine/sling-api-crud-support.html
+++ b/documentation/the-sling-engine/sling-api-crud-support.html
@@ -118,21 +118,22 @@
</nav><script src='/res/jquery-3.2.1.min.js'
type='text/javascript'></script><script src='/res/tocjs-1-1-2.js'
type='text/javascript'></script><script
type='text/javascript'>$(document).ready(function() {
$('#generatedToC').toc({'selector':'h1[class!=title],h2,h3','ulClass':'menu-list'});
} );</script><div class="content is-marginless">
<div class="row"><div><section><p><!-- TODO reactivate TOC once JBake moves to
flexmark-java -->
</p>
-<h2><a href="#apache-sling-api-support" id="apache-sling-api-support">Apache
Sling API Support</a></h2>
+<h1><a href="#apache-sling-api-support" id="apache-sling-api-support">Apache
Sling API Support</a></h1>
<p>As of version 2.3.0, the Sling API provides full Create Read Update Delete
(CRUD) features. CRUD support is provided by the addition of the following
methods to the ResourceResolver:</p>
<ul>
-<li><a
href="https://sling.apache.org/apidocs/sling7/org/apache/sling/api/resource/ResourceResolver.html#delete-org.apache.sling.api.resource.Resource-">void
delete(Resource resource) throws PersistenceException</a></li>
-<li><a
href="https://sling.apache.org/apidocs/sling7/org/apache/sling/api/resource/ResourceResolver.html#create-org.apache.sling.api.resource.Resource-java.lang.String-java.util.Map-">Resource
create(Resource parent, String name, Map<String, Object> properties)
throws PersistenceException</a></li>
-<li><a
href="https://sling.apache.org/apidocs/sling7/org/apache/sling/api/resource/ResourceResolver.html#revert--">void
revert()</a></li>
-<li><a
href="https://sling.apache.org/apidocs/sling7/org/apache/sling/api/resource/ResourceResolver.html#commit--">void
commit() throws PersistenceException</a></li>
-<li><a
href="https://sling.apache.org/apidocs/sling7/org/apache/sling/api/resource/ResourceResolver.html#hasChanges--">boolean
hasChanges()</a></li>
-<li><a
href="https://sling.apache.org/apidocs/sling7/org/apache/sling/api/resource/ResourceResolver.html#refresh--">void
refresh()</a></li>
+<li><a
href="https://sling.apache.org/apidocs/sling11/org/apache/sling/api/resource/ResourceResolver.html#delete-org.apache.sling.api.resource.Resource-"><code>void
delete(Resource resource) throws PersistenceException</code></a></li>
+<li><a
href="https://sling.apache.org/apidocs/sling11/org/apache/sling/api/resource/ResourceResolver.html#create-org.apache.sling.api.resource.Resource-java.lang.String-java.util.Map-"><code>Resource
create(Resource parent, String name, Map<String, Object> properties)
throws PersistenceException</code></a></li>
+<li><a
href="https://sling.apache.org/apidocs/sling11/org/apache/sling/api/resource/ResourceResolver.html#revert--"><code>void
revert()</code></a></li>
+<li><a
href="https://sling.apache.org/apidocs/sling11/org/apache/sling/api/resource/ResourceResolver.html#commit--"><code>void
commit()</code> throws PersistenceException</a></li>
+<li><a
href="https://sling.apache.org/apidocs/sling7/org/apache/sling/api/resource/ResourceResolver.html#hasChanges--"><code>boolean
hasChanges()</code></a></li>
+<li><a
href="https://sling.apache.org/apidocs/sling11/org/apache/sling/api/resource/ResourceResolver.html#refresh--"><code>void
refresh()</code></a></li>
+<li><code>orderBefore(Resource parent, String name, String
followingSiblingName) throws UnsupportedOperationException,
PersistenceException, IllegalArgumentException</code>(since <a
href="https://issues.apache.org/jira/browse/SLING-7975">API 2.24.0</a>)</li>
</ul>
-<p>Which provide the ability to create and delete resources as well as the
addition of the ModifiableValueMap interface which is similar to the ValueMap
interface, but allows for updating properties on a resource.</p>
-<h2><a href="#comparing-sling-api-crud-to-sling-post-servlet"
id="comparing-sling-api-crud-to-sling-post-servlet">Comparing Sling API CRUD to
Sling Post Servlet</a></h2>
+<p>Those methods provide the ability to create and delete resources as well.
In addition you can adapt a <code>Resource</code> to a
<code>ModifiableValueMap</code> interface which is similar to the
<code>ValueMap</code> interface, but allows for updating properties on a
resource.</p>
+<h1><a href="#examples" id="examples">Examples</a></h1>
<p>Here are some examples of common operations performed using the Sling Post
Servlet and Sling API CRUD support. Note, the examples are derived from the
cheat sheet in Adobe's AEM documentation at <a
href="https://experienceleague.adobe.com/docs/experience-manager-cloud-service/implementing/developing/full-stack/sling-cheatsheet.html">https://experienceleague.adobe.com/docs/experience-manager-cloud-service/implementing/developing/full-stack/sling-cheatsheet.html</a>.</p>
-<h3><a href="#updating-a-property" id="updating-a-property">Updating a
Property</a></h3>
-<p>Update /myresource, setting the title and body:</p>
+<h2><a href="#updating-a-property" id="updating-a-property">Updating a
Property</a></h2>
+<p>Update <code>/myresource</code>, setting the title and body:</p>
<p><strong>Sling Post Servlet</strong></p>
<pre><code><form action="/myresource" method="POST">
<input type="text" name="title">
@@ -146,8 +147,8 @@ properties.put("title", {TITLE});
properties.put("body", {BODY});
resourceResolver.commit();
</code></pre>
-<h3><a href="#create-new-resource" id="create-new-resource">Create New
Resource</a></h3>
-<p>Create a new resource below /myresource</p>
+<h2><a href="#create-new-resource" id="create-new-resource">Create New
Resource</a></h2>
+<p>Create a new resource below <code>/myresource</code></p>
<p><strong>Sling Post Servlet</strong></p>
<pre><code><form action="/myresource/" method="POST">
<input type="text" name="dummy">
@@ -161,7 +162,7 @@ properties.put("sling:resourceType",
"myapp/components/mytype&quo
Resource dummy = resourceResolver.create(myResource, "dummy",
properties);
resourceResolver.commit();
</code></pre>
-<h3><a href="#remove-a-property" id="remove-a-property">Remove a
Property</a></h3>
+<h2><a href="#remove-a-property" id="remove-a-property">Remove a
Property</a></h2>
<p>Remove the property title</p>
<p><strong>Sling Post Servlet</strong></p>
<pre><code><form action="/myresource" method="POST">
@@ -174,8 +175,8 @@ ModifiableValueMap properties =
myResource.adaptTo(ModifiableValueMap.class);
properties.remove("title");
resourceResolver.commit();
</code></pre>
-<h3><a href="#copy-a-resource" id="copy-a-resource">Copy a Resource</a></h3>
-<p>Copy the resource /myresource to /myresource2</p>
+<h2><a href="#copy-a-resource" id="copy-a-resource">Copy a Resource</a></h2>
+<p>Copy the resource <code>/myresource</code> to <code>/myresource2</code></p>
<p><strong>Sling Post Servlet</strong></p>
<pre><code><form action="/myresource" method="POST">
<input type="hidden" name=":operation"
value="copy">
@@ -188,8 +189,8 @@ resourceResolver.commit();
Resource myResource2 = resourceResolver.create(null, "myresource2",
properties);
resourceResolver.commit();
</code></pre>
-<h3><a href="#move-a-resource" id="move-a-resource">Move a Resource</a></h3>
-<p>Move the resource /myresource2 to /myresource3</p>
+<h2><a href="#move-a-resource" id="move-a-resource">Move a Resource</a></h2>
+<p>Move the resource <code>/myresource2</code> to <code>/myresource3</code></p>
<p><strong>Sling Post Servlet</strong></p>
<pre><code><form action="/myresource2" method="POST">
<input type="hidden" name=":operation"
value="move">
@@ -203,7 +204,7 @@ Resource myResource3 = resourceResolver.create(null,
"myresource3", pr
resourceResolver.delete(myResource2);
resourceResolver.commit();
</code></pre>
-<h3><a href="#setting-non-string-value" id="setting-non-string-value">Setting
non-String Value</a></h3>
+<h2><a href="#setting-non-string-value" id="setting-non-string-value">Setting
non-String Value</a></h2>
<p>Set the property date to a particular date</p>
<p><strong>Sling Post Servlet</strong></p>
<pre><code><form action="/myresource3" method="POST">
@@ -218,8 +219,8 @@ ModifiableValueMap properties =
myResource3.adaptTo(ModifiableValueMap.class);
properties.put("date", calendar);
resourceResolver.commit();
</code></pre>
-<h3><a href="#delete-a-resource" id="delete-a-resource">Delete a
Resource</a></h3>
-<p>Delete the resource /myresource</p>
+<h2><a href="#delete-a-resource" id="delete-a-resource">Delete a
Resource</a></h2>
+<p>Delete the resource <code>/myresource</code></p>
<p><strong>Sling Post Servlet</strong></p>
<pre><code><form action="/myresource" method="POST">
<input type="hidden" name=":operation"
value="delete">
@@ -230,15 +231,27 @@ resourceResolver.commit();
resourceResolver.delete(myResource);
resourceResolver.commit();
</code></pre>
-<h2><a href="#value-class-support" id="value-class-support">Value Class
Support</a></h2>
+<h2><a href="#order-a-resource" id="order-a-resource">Order a Resource</a></h2>
+<p>Reorder the resource <code>/myresource</code> before sibling node
<code>child1</code></p>
+<p><strong>Sling Post Servlet</strong></p>
+<pre><code><form action="/myresource" method="POST">
+ <input type="hidden" name=":order" value="before
child1">
+</form>
+</code></pre>
+<p><strong>Sling API CRUD</strong></p>
+<pre><code>Resource myResource = resourceResolver.getResource("/");
+resourceResolver.orderBefore(myResource, "myresource",
"child1");
+resourceResolver.commit();
+</code></pre>
+<h1><a href="#value-class-support" id="value-class-support">Value Class
Support</a></h1>
<div class="info">
Please note, this information is specific to the Sling JCR Resource
implementation provided by the Apache Sling project. Other implementations may
have different value class support.
</div>
-<p>The Classes implementing the following types are supported directly when
setting properties:</p>
+<p>The classes implementing the following types are supported directly when
setting properties:</p>
<ul>
<li><a
href="http://docs.oracle.com/javase/8/docs/api/java/util/Calendar.html">Calendar</a></li>
<li><a
href="http://docs.oracle.com/javase/8/docs/api/java/io/InputStream.html">InputStream</a></li>
-<li><a
href="http://www.day.com/maven/javax.jcr/javadocs/jcr-2.0/javax/jcr/Node.html">Node</a></li>
+<li><a
href="https://s.apache.org/jcr-2.0-javadoc/javax/jcr/Node.html">Node</a></li>
<li><a
href="http://docs.oracle.com/javase/8/docs/api/java/math/BigDecimal.html">BigDecimal</a></li>
<li><a
href="http://docs.oracle.com/javase/8/docs/api/java/lang/Long.html">Long</a></li>
<li><a
href="http://docs.oracle.com/javase/8/docs/api/java/lang/Short.html">Short</a></li>
@@ -259,7 +272,7 @@ resourceResolver.commit();
content/documentation/the-sling-engine/sling-api-crud-support.md
</a>
</div> <div class="revisionInfo">
- Last modified by <span class="author">Aravindo
Wingeier</span> on <span class="comment">2021-05-19</span>
+ Last modified by <span class="author">Konrad
Windszus</span> on <span class="comment">2021-11-04</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 may be trademarks or registered
trademarks of their respective owners.
</p><p>
diff --git a/sitemap.xml b/sitemap.xml
index 72521e4..7bf2803 100644
--- a/sitemap.xml
+++ b/sitemap.xml
@@ -1,6 +1,10 @@
<?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/bundles/resource-access-security.html</loc><lastmod>2021-11-04</lastmod>
+ </url><url>
+
<loc>https://sling.apache.org/documentation/the-sling-engine/sling-api-crud-support.html</loc><lastmod>2021-11-04</lastmod>
+ </url><url>
<loc>https://sling.apache.org/releases.html</loc><lastmod>2021-11-01</lastmod>
</url><url>
<loc>https://sling.apache.org/documentation/the-sling-engine/servlets.html</loc><lastmod>2021-10-20</lastmod>
@@ -43,8 +47,6 @@
</url><url>
<loc>https://sling.apache.org/documentation/the-sling-engine/url-decomposition.html</loc><lastmod>2021-05-19</lastmod>
</url><url>
-
<loc>https://sling.apache.org/documentation/the-sling-engine/sling-api-crud-support.html</loc><lastmod>2021-05-19</lastmod>
- </url><url>
<loc>https://sling.apache.org/documentation/the-sling-engine/wrap-or-decorate-resources.html</loc><lastmod>2021-05-19</lastmod>
</url><url>
<loc>https://sling.apache.org/documentation/bundles/content-package-installer-factory.html</loc><lastmod>2021-05-10</lastmod>
@@ -101,8 +103,6 @@
</url><url>
<loc>https://sling.apache.org/documentation/bundles/resource-editor.html</loc><lastmod>2017-09-29</lastmod>
</url><url>
-
<loc>https://sling.apache.org/documentation/bundles/resource-access-security.html</loc><lastmod>2017-09-29</lastmod>
- </url><url>
<loc>https://sling.apache.org/documentation/bundles/request-analysis.html</loc><lastmod>2017-11-22</lastmod>
</url><url>
<loc>https://sling.apache.org/documentation/bundles/rendering-content-default-get-servlets.html</loc><lastmod>2020-01-08</lastmod>