From 9611b1d0b094a2a3b916271044deea71b4706f16 Mon Sep 17 00:00:00 2001 From: Stefan Seifert Date: Thu, 21 Nov 2024 09:16:42 +0100 Subject: [PATCH 1/2] prepare for 6.5.22 --- 6.5.22/pom.xml | 876 ++++++++++++++++++++++++++++++++++ 6.5.22/update-aem-deps.groovy | 361 ++++++++++++++ pom.xml | 3 +- 3 files changed, 1239 insertions(+), 1 deletion(-) create mode 100644 6.5.22/pom.xml create mode 100644 6.5.22/update-aem-deps.groovy diff --git a/6.5.22/pom.xml b/6.5.22/pom.xml new file mode 100644 index 0000000..2b368e6 --- /dev/null +++ b/6.5.22/pom.xml @@ -0,0 +1,876 @@ + + 4.0.0 + + io.wcm.maven + io.wcm.maven.aem-dependencies + 6.5.22.0000-SNAPSHOT + pom + + io.wcm.maven.aem-dependencies + Defines Maven dependencies for a specific AEM version, including those that are not defined in the aem-api "Uber" JAR provided by Adobe. + https://wcm.io + + + scm:git:https://github.com/wcm-io/io.wcm.maven.aem-dependencies.git + scm:git:https://github.com/wcm-io/io.wcm.maven.aem-dependencies.git + https://github.com/wcm-io/io.wcm.maven.aem-dependencies + HEAD + + + 2024 + + + wcm.io + https://wcm.io + + + + + The Apache Software License, Version 2.0 + http://www.apache.org/licenses/LICENSE-2.0.txt + + + + + + wcm.io Community + wcm.io + https://wcm.io + + + + + + + 1.7.25 + + 2.20.15 + + 1.22.20 + + + ossrh + https://oss.sonatype.org/content/repositories/snapshots + ossrh + https://oss.sonatype.org/service/local/staging/deploy/maven2/ + + + + + + + + + + com.adobe.aem + uber-jar + + 6.5.22 + + + com.adobe.aem + uber-jar + + 6.5.22 + apis-with-deprecations + + + + + org.osgi + org.osgi.framework + + 1.9.0 + + + org.osgi + org.osgi.resource + + 1.0.0 + + + org.osgi + org.osgi.service.component + + 1.4.0 + + + org.osgi + org.osgi.service.metatype + + 1.4.0 + + + org.osgi + org.osgi.service.cm + + 1.6.0 + + + org.osgi + org.osgi.service.event + + 1.4.0 + + + org.osgi + org.osgi.service.http + + 1.2.1 + + + org.osgi + org.osgi.service.http.whiteboard + + 1.1.0 + + + org.osgi + org.osgi.service.log + + 1.3.0 + + + org.osgi + org.osgi.util.converter + + 1.0.9 + + + org.osgi + org.osgi.util.function + + 1.1.0 + + + org.osgi + org.osgi.util.tracker + + 1.5.2 + + + org.osgi + org.osgi.dto + + 1.1.0 + + + org.osgi + org.osgi.service.url + + 1.0.0 + + + + + org.osgi + org.osgi.annotation.bundle + + 1.0.0 + + + org.osgi + org.osgi.annotation.versioning + + 1.1.0 + + + org.osgi + org.osgi.service.component.annotations + + 1.4.0 + + + org.osgi + org.osgi.service.metatype.annotations + + 1.4.0 + + + org.apache.sling + org.apache.sling.servlets.annotations + + 1.2.6 + + + org.apache.sling + org.apache.sling.adapter.annotations + + 2.0.0 + + + + + org.osgi + osgi.core + + 7.0.0 + + + org.osgi + osgi.cmpn + + 7.0.0 + + + + + javax.jcr + jcr + + 2.0 + + + javax.servlet + javax.servlet-api + + 3.1.0 + + + javax.servlet.jsp + jsp-api + + 2.1 + + + org.apache.geronimo.specs + geronimo-atinject_1.0_spec + 1.0 + + + javax.mail + javax.mail-api + + 1.6.2 + + + + + org.apache.taglibs + taglibs-standard-spec + + 1.2.5 + + + org.apache.taglibs + taglibs-standard-impl + + 1.2.5 + + + org.apache.poi + poi + + 5.2.4 + + + org.apache.poi + poi-scratchpad + + 5.2.4 + + + org.apache.poi + poi-ooxml + + 5.2.4 + + + com.adobe.granite + com.adobe.granite.tagsoup + 1.2.1 + + + org.apache.servicemix.bundles + org.apache.servicemix.bundles.jaxb-runtime + + 2.3.2_2 + + + + + org.slf4j + slf4j-api + ${slf4j.version} + + + commons-io + commons-io + + 2.15.1 + + + org.apache.cocoon + cocoon-xml + 2.0.2 + + + org.apache.xmlgraphics + fop + + 1.0 + + + org.apache.commons + commons-email + + 1.5 + + + org.apache.commons + commons-math + + 2.2 + + + joda-time + joda-time + + 2.9.1 + + + org.apache.httpcomponents + httpcore + 4.4.8 + + + org.apache.httpcomponents + httpcore-osgi + + 4.4.8 + + + org.apache.httpcomponents + httpclient + + 4.5.13 + + + org.apache.httpcomponents + httpclient-osgi + + 4.5.13 + + + com.day.commons.osgi.wrapper + com.day.commons.osgi.wrapper.commons-httpclient + + + 3.1.0.018 + + + commons-fileupload + commons-fileupload + + 1.5 + + + org.apache.commons + commons-lang3 + + 3.14.0 + + + commons-lang + commons-lang + + 2.6 + + + commons-collections + commons-collections + + 3.2.2 + + + org.apache.commons + commons-collections4 + 4.4 + + + commons-codec + commons-codec + + 1.16.1 + + + org.apache.commons + commons-compress + 1.26.1 + + + org.apache.commons + commons-imaging + 1.0-alpha3 + + + com.google.guava + guava + + 15.0 + + + com.google.code.gson + gson + + 2.8.9 + + + com.fasterxml.jackson.core + jackson-core + 2.16.2 + + + com.fasterxml.jackson.core + jackson-annotations + 2.16.2 + + + com.fasterxml.jackson.core + jackson-databind + 2.16.2 + + + org.apache.geronimo.specs + geronimo-annotation_1.3_spec + 1.0 + + + com.github.jknack + handlebars + 4.3.1 + + + taglibs + standard + + 1.1.2 + + + javax.servlet.jsp.jstl + jstl-api + + 1.2 + + + + + org.apache.sling + org.apache.sling.api + 2.27.2 + + + org.apache.sling + org.apache.sling.commons.osgi + 2.4.0 + + + org.apache.sling + org.apache.sling.resourceresolver + 1.10.0 + + + org.apache.sling + org.apache.sling.serviceusermapper + 1.5.4 + + + org.apache.sling + org.apache.sling.jcr.api + 2.4.0 + + + org.apache.sling + org.apache.sling.jcr.resource + 3.0.18 + + + org.apache.sling + org.apache.sling.commons.mime + 2.2.2 + + + org.apache.sling + org.apache.sling.commons.johnzon + 1.2.6 + + + org.apache.johnzon + johnzon-core + + 1.2.8 + + + org.apache.geronimo.specs + geronimo-json_1.1_spec + + 1.3 + + + org.apache.sling + org.apache.sling.commons.json + 2.0.20 + + + org.apache.sling + org.apache.sling.commons.classloader + 1.4.2 + + + org.apache.sling + org.apache.sling.settings + 1.3.10 + + + org.apache.sling + org.apache.sling.scripting.api + 2.2.0 + + + org.apache.sling + org.apache.sling.scripting.core + 2.4.8 + + + org.osgi + org.osgi.core + + + org.osgi + org.osgi.compendium + + + + + org.apache.sling + org.apache.sling.scripting.sightly + 1.4.22-1.4.0 + + + org.apache.sling + org.apache.sling.scripting.sightly.compiler + 1.2.14-1.4.0 + + + org.apache.sling + org.apache.sling.scripting.sightly.compiler.java + 1.2.2-1.4.0 + + + org.apache.sling + org.apache.sling.scripting.sightly.runtime + 1.2.6-1.4.0 + + + org.apache.sling + org.apache.sling.adapter + 2.1.10 + + + org.apache.sling + org.apache.sling.i18n + 2.6.2 + + + org.apache.sling + org.apache.sling.models.api + 1.3.8 + + + org.apache.sling + org.apache.sling.models.impl + + + 1.4.14 + + + org.apache.sling + org.apache.sling.caconfig.api + 1.1.2 + + + org.apache.sling + org.apache.sling.caconfig.spi + 1.3.4 + + + org.apache.sling + org.apache.sling.caconfig.impl + 1.4.14 + + + org.apache.sling + org.apache.sling.xss + 2.2.16 + + + org.apache.sling + org.apache.sling.featureflags + 1.2.2 + + + org.apache.sling + org.apache.sling.commons.threads + 3.2.18 + + + org.apache.jackrabbit + jackrabbit-jcr-commons + ${jackrabbit.version} + + + org.apache.jackrabbit + oak-jcr + ${oak.version} + + + org.apache.jackrabbit + oak-jackrabbit-api + ${oak.version} + + + org.apache.jackrabbit.vault + org.apache.jackrabbit.vault + 3.2.8 + + + org.slf4j + slf4j-simple + + ${slf4j.version} + + + + + + + + + org.apache.maven.plugins + maven-source-plugin + + + attach-sources + verify + + jar-no-fork + + + + + + org.apache.maven.plugins + maven-javadoc-plugin + + + attach-javadocs + + jar + + + + + + org.apache.maven.plugins + maven-site-plugin + false + + true + true + + + + org.apache.maven.plugins + maven-enforcer-plugin + + + enforce-default + + enforce + + + + + [3.8.6,) + + + + + + + + + + + org.apache.maven.plugins + maven-clean-plugin + 3.4.0 + + + org.apache.maven.plugins + maven-install-plugin + 3.1.2 + + + org.apache.maven.plugins + maven-source-plugin + 3.3.1 + + + org.apache.maven.plugins + maven-gpg-plugin + 3.2.4 + + + org.apache.maven.plugins + maven-deploy-plugin + 3.1.2 + + + org.apache.maven.plugins + maven-javadoc-plugin + 3.7.0 + + + org.apache.maven.plugins + maven-release-plugin + 3.1.0 + + true + deploy + + + + org.apache.maven.scm + maven-scm-provider-gitexe + 2.1.0 + + + + + org.apache.maven.plugins + maven-site-plugin + 3.12.1 + + + org.apache.maven.plugins + maven-enforcer-plugin + 3.5.0 + + + org.sonatype.plugins + nexus-staging-maven-plugin + 1.7.0 + + + com.amashchenko.maven.plugin + gitflow-maven-plugin + 1.21.0 + false + + true + true + false + true + clean deploy -Prelease-profile + [gitflow-maven-plugin] + + + Update versions for hotfix @{version} + Update for next development version @{version} + Update to hotfix version @{version} + Update versions for release @{version} + Update for next development version @{version} + Update for next development version @{version} + + + + + + + + + + + + release-profile + + + performRelease + true + + + + + + + org.apache.maven.plugins + maven-gpg-plugin + false + + + sign-artifacts + verify + + sign + + + + + + + org.sonatype.plugins + nexus-staging-maven-plugin + false + true + + ossrh + https://oss.sonatype.org/ + + false + + + + + + + + + + + ${distribution.releaseRepositoryId} + ${distribution.releaseRepositoryUrl} + + + ${distribution.snapshotRepositoryId} + ${distribution.snapshotRepositoryUrl} + + + + \ No newline at end of file diff --git a/6.5.22/update-aem-deps.groovy b/6.5.22/update-aem-deps.groovy new file mode 100644 index 0000000..d27010f --- /dev/null +++ b/6.5.22/update-aem-deps.groovy @@ -0,0 +1,361 @@ +/* + * #%L + * wcm.io + * %% + * Copyright (C) 2020 wcm.io + * %% + * Licensed 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/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an 'AS IS' BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + * #L% + */ + +/*********************************************************************** + * + * PARAMETERS + * + ***********************************************************************/ + +LOCAL_AEM_URL = 'http://localhost:45025' +LOCAL_AEM_USER = 'admin' +LOCAL_AEM_PASSWORD = 'admin' + +//---------------------------------------------------------------------- + +@GrabConfig(systemClassLoader=true) +@Grab('org.slf4j:slf4j-simple:2.0.12') +@Grab('jaxen:jaxen:1.1.6') +@GrabExclude('jdom:jdom') +@Grab('org.jdom:jdom2:2.0.6.1') + +import org.jdom2.* +import org.jdom2.filter.* +import org.jdom2.input.* +import org.jdom2.xpath.* +import org.jdom2.output.* +import groovy.xml.XmlSlurper +import groovy.json.JsonSlurper +import groovy.grape.Grape +import org.slf4j.LoggerFactory +import java.net.Authenticator +import java.net.PasswordAuthentication +import java.net.http.HttpClient +import java.net.http.HttpRequest +import java.net.http.HttpResponse +import java.time.Duration +import java.util.regex.Pattern + +HINT_PATTERN = /\s*update-aem-deps:([^\s]*)\s*/ + +log = LoggerFactory.getLogger(this.class) +exitWithFailure = false + +// get bundles version running in local AEM instance +log.info 'Reading bundle versions...' +def bundleData = [:] +readBundleData(bundleData) + +// read process pom using JDOM to preserve formatting and whitespaces +POM_NS = Namespace.getNamespace('ns', 'http://maven.apache.org/POM/4.0.0') +Document doc = new SAXBuilder().build(new FileReader('pom.xml')) + +// update some well-known properties based on specific bundle versions +log.info 'Update properties...' +pomUpdateProperties(doc, bundleData) + +// update all dependencies matching the bundles in local POM +log.info 'Update dependencies...' +pomUpdateDependencies(doc, bundleData) + +// validate all dependencies +log.info 'Validate dependencies...' +pomValidateDependencies(doc) + +// write back pom content +new XMLOutputter().with { + format = Format.getRawFormat() + format.setLineSeparator(LineSeparator.NONE) + def os = new File('pom.xml').newOutputStream() + output(doc, os) + os.close() +} + +if (exitWithFailure) { + System.exit(1) +} + + + +// --- functions --- + +// read URL from locale AEM instance +def readAemUrl(relativeUrl) { + def url = LOCAL_AEM_URL + relativeUrl + try { + HttpClient client = HttpClient.newBuilder() + .connectTimeout(Duration.ofSeconds(10)) + .authenticator(new Authenticator() { + public PasswordAuthentication getPasswordAuthentication() { + return new PasswordAuthentication(LOCAL_AEM_USER, LOCAL_AEM_PASSWORD.toCharArray()) + } + }) + .version(HttpClient.Version.HTTP_1_1) + .build() + HttpRequest request = HttpRequest.newBuilder() + .uri(URI.create(url)) + .build() + HttpResponse response = client.send(request, HttpResponse.BodyHandlers.ofString()) + if (response.statusCode() == 200) { + if (relativeUrl.endsWith('.json')) { + return new JsonSlurper().parseText(response.body()) + } + else { + return response.body() + } + } + else { + throw new RuntimeException("Call failed with HTTP ${response.statusCode()}") + } + } + catch (Exception ex) { + throw new RuntimeException("Unable to access ${url}", ex) + } +} + +// read versions of all maven artifacts from bundle list +def readBundleData(bundleData) { + def bundleList = readAemUrl('/system/console/bundles.json') + bundleList.data.each { + def version = it.version + // try to resolve the implementation version from bundle header as it may differ from the bundle version + def bundleDetails = readAemUrl("/system/console/bundles/${it.id}.json") + def manifestHeader = bundleDetails.data[0].props.findResult { it.key == 'Manifest Headers' ? it : null } + if (manifestHeader) { + def implementationVersion = manifestHeader.value.findResult { it =~ /^Implementation-Version: (.*)$/ ? (it =~ /^Implementation-Version: (.*)$/)[0][1] : null } + if (implementationVersion) { + version = implementationVersion + } + } + bundleData[it.symbolicName] = new BundleData(version: version) + + // read exported package versions + def exportedPackages = bundleDetails.data[0].props.findResult { it.key == 'Exported Packages' ? it : null } + def packageVersions = [:] + if (exportedPackages && exportedPackages.value) { + exportedPackages.value.each { + def exportedPackage = "${it}" + def packageVersionPattern = /(.*),version=(.*)/ + def matcher = (exportedPackage =~ packageVersionPattern) + if (matcher.matches()) { + packageVersions[matcher.group(1)] = matcher.group(2) + } + } + } + bundleData[it.symbolicName].packageVersions = packageVersions + + } +} + +// set pom version +def pomSetAemSdkVersion(doc, aemSdkVersion) { + def versions = XPathFactory.instance().compile('/ns:project/ns:version', Filters.element(), null, POM_NS).evaluate(doc) + for (def version in versions) { + version.text = "${aemSdkVersion}.0000-SNAPSHOT" + } +} + +// update property in POM to match with a specific bundle version +def pomUpdateProperties(doc, bundleData) { + def props = XPathFactory.instance().compile('/ns:project/ns:properties/*', Filters.element(), null, POM_NS).evaluate(doc) + for (def prop in props) { + // check if previous sibling is a comment not with a dependency hint + def elementIndex = prop.parent.getContent().indexOf(prop) + def previousSibling = null + while (elementIndex > 0) { + previousSibling = prop.parent.getContent().get(--elementIndex) + if (previousSibling instanceof Element || previousSibling instanceof Comment) { + break + } + else { + previousSibling = null + } + } + if (previousSibling instanceof Comment && previousSibling.text =~ HINT_PATTERN) { + def hint = (previousSibling.text =~ HINT_PATTERN)[0][1] + // check for dervied-from hint + def derivedFrom = getDerivedFromHint(hint) + if (derivedFrom) { + def actualVersion = getBundleVersion(bundleData, derivedFrom.bundleName) + if (derivedFrom.version != actualVersion) { + if (actualVersion) { + log.warn "property ${prop.name} is derived from ${derivedFrom.bundleName}:${derivedFrom.version}, but that bundle has currently version ${actualVersion}, check manually" + exitWithFailure = true + } + else { + log.warn "property ${prop.name} is derived from ${derivedFrom.bundleName}:${derivedFrom.version}, but that bundle is not present, check manually" + exitWithFailure = true + } + } + continue + } + def bundleName = getBundleNameFromHint(hint) + if (bundleName) { + def version = getBundleVersion(bundleData, bundleName) + assert version != null : 'Version of bundle ' + bundleName + ' not found' + prop.text = version + } + } + } +} + +// updates all dependencies to their latest versions +def pomUpdateDependencies(doc, bundleData) { + def deps = XPathFactory.instance().compile('/ns:project/ns:dependencyManagement/ns:dependencies/ns:dependency', Filters.element(), null, POM_NS).evaluate(doc) + for (def dep in deps) { + def groupId = dep.getChild('groupId', POM_NS).text + def artifactId = dep.getChild('artifactId', POM_NS).text + def versionElement = dep.getChild('version', POM_NS) + + // check for update hint comment + def hint = getDependencyHint(dep) + if (hint == "ignore") { + continue + } + + // check for dervied-from hint + def derivedFrom = getDerivedFromHint(hint) + if (derivedFrom) { + def actualVersion = getBundleVersion(bundleData, derivedFrom.bundleName) + if (derivedFrom.version != actualVersion) { + if (actualVersion) { + log.warn "${groupId}:${artifactId} is derived from ${derivedFrom.bundleName}:${derivedFrom.version}, but that bundle has currently version ${actualVersion}, check manually" + exitWithFailure = true + } + else { + log.warn "${groupId}:${artifactId} is derived from ${derivedFrom.bundleName}:${derivedFrom.version}, but that bundle is not present, check manually" + exitWithFailure = true + } + } + continue + } + + // check if the version references a maven property - skip this dependencies, properties are update separately + def existingVersion = versionElement.text + if (existingVersion =~ /\$\{.*\}/) { + continue + } + + // try to resolve latest version from bundle list + def version = null + def bundleName = getBundleNameFromHint(hint) + if (bundleName) { + version = getBundleVersion(bundleData, bundleName) + } + else { + def bundlePackage = getBundlePackageFromHint(hint) + if (bundlePackage) { + version = bundleData[bundlePackage.bundleName].packageVersions[bundlePackage.packageName] + } + else { + // check for bundle = artifactId + version = getBundleVersion(bundleData, artifactId) + if (!version) { + // alternatively check combination for groupId and artifactId + version = getBundleVersion(bundleData, "${groupId}.${artifactId}") + } + } + } + if (version) { + versionElement.text = version + } + else { + log.warn "No matching bundle: ${groupId}:${artifactId}" + exitWithFailure = true + } + } +} + +// validate all dependencies to make sure they can be resolved in public repositories +def pomValidateDependencies(doc) { + def deps = XPathFactory.instance().compile('/ns:project/ns:dependencyManagement/ns:dependencies/ns:dependency', Filters.element(), null, POM_NS).evaluate(doc) + for (def dep in deps) { + def groupId = dep.getChild('groupId', POM_NS).text + def artifactId = dep.getChild('artifactId', POM_NS).text + def version = dep.getChild('version', POM_NS).text + + // if version is a property try to resolve it in POM + def propertyNameMatcher = (version =~ /\$\{(.*)\}/) + if (propertyNameMatcher) { + def propertyName = propertyNameMatcher[0][1] + def props = XPathFactory.instance().compile('/ns:project/ns:properties/ns:' + propertyName, Filters.element(), null, POM_NS).evaluate(doc) + for (def prop in props) { + version = prop.text + } + } + + // try to resolve dependency + try { + // this may fail with "Error grabbing grapes", see https://stackoverflow.com/a/51159346 and https://issues.apache.org/jira/browse/GROOVY-8655 + Grape.grab(group: groupId, module: artifactId, version: version) + } + catch (Exception ex) { + log.error ex.message + exitWithFailure = true + } + } +} + +// check for update-aem-deps hint in comment +def getDependencyHint(dep) { + return dep.getContent().findResult { (it instanceof Comment) && it.text =~ HINT_PATTERN ? (it.text =~ HINT_PATTERN)[0][1] : null } +} + +def getBundleNameFromHint(hint) { + def bundleNamePattern = /bundle=(.*)/ + def matcher = (hint =~ bundleNamePattern) + if (matcher.matches()) { + return matcher.group(1) + } + else { + return null + } +} + +def getDerivedFromHint(hint) { + def derivedFromPattern = /derived-from=(.*):(.*)/ + def matcher = (hint =~ derivedFromPattern) + if (matcher.matches()) { + return [ bundleName: matcher.group(1), version: matcher.group(2) ] + } + else { + return null + } +} + +def getBundlePackageFromHint(hint) { + def bundlePackagePattern = /bundle-package=(.*):(.*)/ + def matcher = (hint =~ bundlePackagePattern) + if (matcher.matches()) { + return [ bundleName: matcher.group(1), packageName: matcher.group(2) ] + } + else { + return null + } +} + +def getBundleVersion(bundleData, bundleName) { + return bundleData[bundleName]?.version +} + +class BundleData { + String version + Map packageVersions +} diff --git a/pom.xml b/pom.xml index bb55413..30354d3 100644 --- a/pom.xml +++ b/pom.xml @@ -25,7 +25,7 @@ io.wcm.maven io.wcm.maven.global-parent - 57 + 58 @@ -57,6 +57,7 @@ 6.5.19 6.5.20 6.5.21 + 6.5.22 From 1643c7739e3337d9faa5bb370f0cc2997382e4fa Mon Sep 17 00:00:00 2001 From: Stefan Seifert Date: Thu, 21 Nov 2024 09:25:27 +0100 Subject: [PATCH 2/2] deps from 6.5.22 --- 6.5.22/pom.xml | 12 ++++++------ 1 file changed, 6 insertions(+), 6 deletions(-) diff --git a/6.5.22/pom.xml b/6.5.22/pom.xml index 2b368e6..39ce6fb 100644 --- a/6.5.22/pom.xml +++ b/6.5.22/pom.xml @@ -62,9 +62,9 @@ 1.7.25 - 2.20.15 + 2.20.16 - 1.22.20 + 1.22.21 ossrh @@ -405,7 +405,7 @@ commons-collections commons-collections - + 3.2.2 @@ -417,12 +417,12 @@ commons-codec commons-codec - 1.16.1 + 1.17.1 org.apache.commons commons-compress - 1.26.1 + 1.26.2 org.apache.commons @@ -570,7 +570,7 @@ org.apache.sling org.apache.sling.scripting.sightly - 1.4.22-1.4.0 + 1.4.24-1.4.0 org.apache.sling