This is an automated email from the ASF dual-hosted git repository.
cziegeler pushed a commit to branch master
in repository
https://gitbox.apache.org/repos/asf/sling-org-apache-sling-servlets-resolver.git
The following commit(s) were added to refs/heads/master by this push:
new 6253610 SLING-12060 : Remove dependency to Sling osgi.commons
6253610 is described below
commit 6253610756c206fa340f27c2b2903bf09f82f116
Author: Carsten Ziegeler <[email protected]>
AuthorDate: Sun Oct 1 12:09:23 2023 +0200
SLING-12060 : Remove dependency to Sling osgi.commons
---
pom.xml | 6 +--
.../bundle/BundledRenderUnitCapabilityImpl.java | 9 ++--
.../internal/bundle/BundledScriptTracker.java | 60 +++++++++++-----------
.../resource/ServletResourceProviderFactory.java | 56 ++++++++++----------
4 files changed, 65 insertions(+), 66 deletions(-)
diff --git a/pom.xml b/pom.xml
index 9536d32..8c59441 100644
--- a/pom.xml
+++ b/pom.xml
@@ -243,9 +243,9 @@
<scope>provided</scope>
</dependency>
<dependency>
- <groupId>org.apache.sling</groupId>
- <artifactId>org.apache.sling.commons.osgi</artifactId>
- <version>2.2.0</version>
+ <groupId>org.osgi</groupId>
+ <artifactId>org.osgi.util.converter</artifactId>
+ <version>1.0.9</version>
<scope>provided</scope>
</dependency>
<dependency>
diff --git
a/src/main/java/org/apache/sling/servlets/resolver/internal/bundle/BundledRenderUnitCapabilityImpl.java
b/src/main/java/org/apache/sling/servlets/resolver/internal/bundle/BundledRenderUnitCapabilityImpl.java
index 04e0a53..96a422a 100644
---
a/src/main/java/org/apache/sling/servlets/resolver/internal/bundle/BundledRenderUnitCapabilityImpl.java
+++
b/src/main/java/org/apache/sling/servlets/resolver/internal/bundle/BundledRenderUnitCapabilityImpl.java
@@ -18,7 +18,6 @@
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~*/
package org.apache.sling.servlets.resolver.internal.bundle;
-import java.util.Arrays;
import java.util.Collections;
import java.util.LinkedHashSet;
import java.util.List;
@@ -29,12 +28,13 @@ import java.util.Set;
import org.apache.commons.lang3.StringUtils;
import org.apache.sling.api.resource.type.ResourceType;
import org.apache.sling.api.servlets.ServletResolverConstants;
-import org.apache.sling.commons.osgi.PropertiesUtil;
import org.apache.sling.scripting.spi.bundle.BundledRenderUnitCapability;
import org.jetbrains.annotations.NotNull;
import org.jetbrains.annotations.Nullable;
import org.osgi.framework.Version;
import org.osgi.framework.wiring.BundleCapability;
+import org.osgi.util.converter.Converters;
+import org.osgi.util.converter.TypeReference;
class BundledRenderUnitCapabilityImpl implements BundledRenderUnitCapability {
@@ -167,7 +167,7 @@ class BundledRenderUnitCapabilityImpl implements
BundledRenderUnitCapability {
Map<String, Object> attributes = capability.getAttributes();
Set<ResourceType> resourceTypes = new LinkedHashSet<>();
String[] capabilityResourceTypes =
-
PropertiesUtil.toStringArray(attributes.get(ServletResolverConstants.SLING_SERVLET_RESOURCE_TYPES),
new String[0]);
+
Converters.standardConverter().convert(attributes.get(ServletResolverConstants.SLING_SERVLET_RESOURCE_TYPES)).to(String[].class);
Version version = (Version)
attributes.get(BundledScriptTracker.AT_VERSION);
for (String rt : capabilityResourceTypes) {
if (version == null) {
@@ -179,8 +179,7 @@ class BundledRenderUnitCapabilityImpl implements
BundledRenderUnitCapability {
return new BundledRenderUnitCapabilityImpl(
resourceTypes,
(String)
attributes.get(ServletResolverConstants.SLING_SERVLET_PATHS),
- Arrays.asList(
-
PropertiesUtil.toStringArray(attributes.get(ServletResolverConstants.SLING_SERVLET_SELECTORS),
new String[0])),
+
Converters.standardConverter().convert(attributes.get(ServletResolverConstants.SLING_SERVLET_SELECTORS)).to(new
TypeReference<List<String>>() {}),
(String)
attributes.get(ServletResolverConstants.SLING_SERVLET_EXTENSIONS),
(String)
attributes.get(ServletResolverConstants.SLING_SERVLET_METHODS),
(String) attributes.get(BundledScriptTracker.AT_EXTENDS),
diff --git
a/src/main/java/org/apache/sling/servlets/resolver/internal/bundle/BundledScriptTracker.java
b/src/main/java/org/apache/sling/servlets/resolver/internal/bundle/BundledScriptTracker.java
index c907d53..6b9144d 100644
---
a/src/main/java/org/apache/sling/servlets/resolver/internal/bundle/BundledScriptTracker.java
+++
b/src/main/java/org/apache/sling/servlets/resolver/internal/bundle/BundledScriptTracker.java
@@ -57,7 +57,6 @@ import org.apache.sling.api.request.RequestDispatcherOptions;
import org.apache.sling.api.resource.ResourceUtil;
import org.apache.sling.api.resource.type.ResourceType;
import org.apache.sling.api.servlets.ServletResolverConstants;
-import org.apache.sling.commons.osgi.PropertiesUtil;
import org.apache.sling.scripting.spi.bundle.BundledRenderUnit;
import org.apache.sling.scripting.spi.bundle.BundledRenderUnitCapability;
import org.apache.sling.scripting.spi.bundle.BundledRenderUnitFinder;
@@ -84,6 +83,8 @@ import org.osgi.service.component.annotations.Component;
import org.osgi.service.component.annotations.Deactivate;
import org.osgi.service.component.annotations.Reference;
import org.osgi.service.component.annotations.ReferencePolicy;
+import org.osgi.util.converter.Converter;
+import org.osgi.util.converter.Converters;
import org.osgi.util.tracker.BundleTracker;
import org.osgi.util.tracker.BundleTrackerCustomizer;
import org.slf4j.Logger;
@@ -285,17 +286,15 @@ public class BundledScriptTracker implements
BundleTrackerCustomizer<List<Servic
properties.put(ServletResolverConstants.SLING_SERVLET_PATHS, paths.toArray(new
String[0]));
}
if
(!properties.containsKey(ServletResolverConstants.SLING_SERVLET_PATHS)) {
- String[] rts =
PropertiesUtil.toStringArray(properties.get(ServletResolverConstants.SLING_SERVLET_RESOURCE_TYPES));
- if (rts != null) {
- for (String resourceType : rts) {
- String path;
- if (resourceType.startsWith("/")) {
- path = resourceType + "/" +
resourceType.substring(resourceType.lastIndexOf('/') + 1) + "." +
FilenameUtils.getExtension(scriptName);
- } else {
- path = this.searchPaths.get(0)
+ resourceType + "/" + resourceType.substring(resourceType.lastIndexOf('/') +
1) + "." + FilenameUtils.getExtension(scriptName);
- }
-
properties.put(ServletResolverConstants.SLING_SERVLET_PATHS, path);
+ String[] rts =
Converters.standardConverter().convert(properties.get(ServletResolverConstants.SLING_SERVLET_RESOURCE_TYPES)).to(String[].class);
+ for (String resourceType : rts) {
+ String path;
+ if (resourceType.startsWith("/")) {
+ path = resourceType + "/" +
resourceType.substring(resourceType.lastIndexOf('/') + 1) + "." +
FilenameUtils.getExtension(scriptName);
+ } else {
+ path = this.searchPaths.get(0) +
resourceType + "/" + resourceType.substring(resourceType.lastIndexOf('/') + 1)
+ "." + FilenameUtils.getExtension(scriptName);
}
+
properties.put(ServletResolverConstants.SLING_SERVLET_PATHS, path);
}
}
}
@@ -467,6 +466,7 @@ public class BundledScriptTracker implements
BundleTrackerCustomizer<List<Servic
}
Map<Set<String>, ServiceRegistration<Servlet>> oldDispatchers =
dispatchers.get();
Map<Set<String>, ServiceRegistration<Servlet>> newDispatchers = new
HashMap<>();
+ final Converter c = Converters.standardConverter();
Stream.concat(tracked.values().stream(),
Stream.of(regs)).flatMap(List::stream)
.filter(ref -> getResourceTypeVersion(ref.getReference()) != null)
.map(this::toProperties)
@@ -477,9 +477,9 @@ public class BundledScriptTracker implements
BundleTrackerCustomizer<List<Servic
properties.put(ServletResolverConstants.SLING_SERVLET_RESOURCE_TYPES,
rt.toArray());
Set<String> methods = propList.stream()
.map(props ->
props.getOrDefault(ServletResolverConstants.SLING_SERVLET_METHODS, new
String[]{"GET", "HEAD"}))
-
.map(PropertiesUtil::toStringArray).map(Arrays::asList).flatMap(List::stream).collect(Collectors.toSet());
+ .map(v ->
c.convert(v).to(String[].class)).map(Arrays::asList).flatMap(List::stream).collect(Collectors.toSet());
Set<String> extensions = propList.stream().map(props ->
props.getOrDefault(ServletResolverConstants
- .SLING_SERVLET_EXTENSIONS, new
String[]{"html"})).map(PropertiesUtil::toStringArray).map(Arrays::asList).flatMap
+ .SLING_SERVLET_EXTENSIONS, new String[]{"html"})).map(v ->
c.convert(v).to(String[].class)).map(Arrays::asList).flatMap
(List::stream).collect(Collectors.toSet());
properties.put(ServletResolverConstants.SLING_SERVLET_EXTENSIONS,
extensions.toArray(new String[0]));
if (!methods.equals(new HashSet<>(Arrays.asList("GET", "HEAD")))) {
@@ -504,8 +504,8 @@ public class BundledScriptTracker implements
BundleTrackerCustomizer<List<Servic
reg = register(registeringBundle.orElse(bc), new
DispatcherServlet(rt), properties);
} else {
- if (!new HashSet<>(Arrays.asList(PropertiesUtil
-
.toStringArray(reg.getReference().getProperty(ServletResolverConstants.SLING_SERVLET_METHODS),
new String[0])))
+ if (!new HashSet<>(Arrays.asList(Converters.standardConverter()
+
.convert(reg.getReference().getProperty(ServletResolverConstants.SLING_SERVLET_METHODS)).to(String[].class)))
.equals(methods)) {
reg.setProperties(properties);
}
@@ -571,6 +571,7 @@ public class BundledScriptTracker implements
BundleTrackerCustomizer<List<Servic
BundleContext bc = bundleContext.get();
final Bundle bcBundle = bc == null ? null : bc.getBundle();
+ final Converter c = Converters.standardConverter();
Optional<ServiceRegistration<Servlet>> target =
tracked.values().stream().flatMap(List::stream)
.filter(
reg ->
!reg.getReference().getBundle().equals(bcBundle)
@@ -580,21 +581,22 @@ public class BundledScriptTracker implements
BundleTrackerCustomizer<List<Servic
{
Map<String, Object> props = toProperties(reg);
return getResourceTypes(props).equals(resourceType) &&
- Arrays.asList(PropertiesUtil
-
.toStringArray(props.get(ServletResolverConstants.SLING_SERVLET_METHODS),
- new String[]{"GET", "HEAD"}))
+ Arrays.asList(c
+
.convert(props.get(ServletResolverConstants.SLING_SERVLET_METHODS))
+ .defaultValue(new String[]{"GET",
"HEAD"}).to(String[].class))
.contains(slingRequest.getMethod()) &&
- Arrays.asList(PropertiesUtil
-
.toStringArray(props.get(ServletResolverConstants.SLING_SERVLET_EXTENSIONS),
new String[]{"html"}))
+ Arrays.asList(c
+
.convert(props.get(ServletResolverConstants.SLING_SERVLET_EXTENSIONS))
+ .defaultValue(new
String[]{"html"}).to(String[].class))
.contains(slingRequest.getRequestPathInfo().getExtension() == null ? "html" :
slingRequest.getRequestPathInfo().getExtension());
}).min((left, right) ->
{
- boolean la = Arrays.asList(PropertiesUtil
-
.toStringArray(toProperties(left).get(ServletResolverConstants.SLING_SERVLET_SELECTORS),
new String[0]))
+ boolean la = Arrays.asList(c
+
.convert(toProperties(left).get(ServletResolverConstants.SLING_SERVLET_SELECTORS)).to(String[].class))
.containsAll(Arrays.asList(slingRequest.getRequestPathInfo().getSelectors()));
- boolean ra = Arrays.asList(PropertiesUtil
-
.toStringArray(toProperties(right).get(ServletResolverConstants.SLING_SERVLET_SELECTORS),
new String[0]))
+ boolean ra = Arrays.asList(c
+
.convert(toProperties(right).get(ServletResolverConstants.SLING_SERVLET_SELECTORS)).to(String[].class))
.containsAll(Arrays.asList(slingRequest.getRequestPathInfo().getSelectors()));
if ((la && ra) || (!la && !ra)) {
Version rightVersion =
getResourceTypeVersion(right.getReference());
@@ -616,8 +618,8 @@ public class BundledScriptTracker implements
BundleTrackerCustomizer<List<Servic
if (target.isPresent()) {
String[] targetRT =
-
PropertiesUtil.toStringArray(target.get().getReference().getProperty(ServletResolverConstants.SLING_SERVLET_RESOURCE_TYPES));
- if (targetRT == null || targetRT.length == 0) {
+
c.convert(target.get().getReference().getProperty(ServletResolverConstants.SLING_SERVLET_RESOURCE_TYPES)).to(String[].class);
+ if (targetRT.length == 0) {
((SlingHttpServletResponse)
res).sendError(HttpServletResponse.SC_NOT_FOUND);
} else {
String rt = targetRT[0];
@@ -647,8 +649,8 @@ public class BundledScriptTracker implements
BundleTrackerCustomizer<List<Servic
}
private static @Nullable Version
getResourceTypeVersion(ServiceReference<?> ref) {
- String[] values =
PropertiesUtil.toStringArray(ref.getProperty(ServletResolverConstants.SLING_SERVLET_RESOURCE_TYPES));
- if (values != null) {
+ String[] values =
Converters.standardConverter().convert(ref.getProperty(ServletResolverConstants.SLING_SERVLET_RESOURCE_TYPES)).to(String[].class);
+ if (values.length > 0) {
String resourceTypeValue = values[0];
ResourceType resourceType =
ResourceType.parseResourceType(resourceTypeValue);
return resourceType.getVersion();
@@ -658,7 +660,7 @@ public class BundledScriptTracker implements
BundleTrackerCustomizer<List<Servic
private static Set<String> getResourceTypes(Map<String, Object> props) {
Set<String> resourceTypes = new HashSet<>();
- String[] values =
PropertiesUtil.toStringArray(props.get(ServletResolverConstants.SLING_SERVLET_RESOURCE_TYPES));
+ String[] values =
Converters.standardConverter().convert(props.get(ServletResolverConstants.SLING_SERVLET_RESOURCE_TYPES)).to(String[].class);
for (String resourceTypeValue : values) {
resourceTypes.add(ResourceType.parseResourceType(resourceTypeValue).getType());
}
diff --git
a/src/main/java/org/apache/sling/servlets/resolver/internal/resource/ServletResourceProviderFactory.java
b/src/main/java/org/apache/sling/servlets/resolver/internal/resource/ServletResourceProviderFactory.java
index 169066f..afe703c 100644
---
a/src/main/java/org/apache/sling/servlets/resolver/internal/resource/ServletResourceProviderFactory.java
+++
b/src/main/java/org/apache/sling/servlets/resolver/internal/resource/ServletResourceProviderFactory.java
@@ -38,10 +38,10 @@ import org.apache.commons.io.FilenameUtils;
import org.apache.commons.lang3.StringUtils;
import org.apache.sling.api.resource.ResourceUtil;
import org.apache.sling.api.servlets.HttpConstants;
-import org.apache.sling.commons.osgi.PropertiesUtil;
import org.osgi.framework.Bundle;
import org.osgi.framework.Constants;
import org.osgi.framework.ServiceReference;
+import org.osgi.util.converter.Converters;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
@@ -147,10 +147,10 @@ public class ServletResourceProviderFactory {
log.debug("create({}): Registering servlet for paths {}",
getServiceReferenceInfo(ref), pathSet);
}
- String resourceSuperType =
PropertiesUtil.toString(ref.getProperty(SLING_SERVLET_RESOURCE_SUPER_TYPE),
null);
+ String resourceSuperType =
Converters.standardConverter().convert(ref.getProperty(SLING_SERVLET_RESOURCE_SUPER_TYPE)).to(String.class);
Set<String> resourceSuperTypeMarkers = new HashSet<>();
if (StringUtils.isNotEmpty(resourceSuperType) &&
!ServletResource.DEFAULT_RESOURCE_SUPER_TYPE.equals(resourceSuperType)) {
- for (String rt :
PropertiesUtil.toStringArray(ref.getProperty(SLING_SERVLET_RESOURCE_TYPES))) {
+ for (String rt :
Converters.standardConverter().convert(ref.getProperty(SLING_SERVLET_RESOURCE_TYPES)).to(String[].class))
{
if (!rt.startsWith("/")) {
rt =
getPrefix(ref).concat(ResourceUtil.resourceTypeToPath(rt));
}
@@ -211,23 +211,21 @@ public class ServletResourceProviderFactory {
* @param ref
*/
private void addByPath(Set<String> pathSet, ServiceReference<Servlet> ref)
{
- String[] paths =
PropertiesUtil.toStringArray(ref.getProperty(SLING_SERVLET_PATHS));
- if (paths != null && paths.length > 0) {
- for (String path : paths) {
- if (!path.startsWith("/")) {
- path = getPrefix(ref).concat(path);
- }
+ String[] paths =
Converters.standardConverter().convert(ref.getProperty(SLING_SERVLET_PATHS)).to(String[].class);
+ for (String path : paths) {
+ if (!path.startsWith("/")) {
+ path = getPrefix(ref).concat(path);
+ }
- // add the unmodified path
- pathSet.add(path);
+ // add the unmodified path
+ pathSet.add(path);
- String[] types =
PropertiesUtil.toStringArray(ref.getProperty(SLING_SERVLET_RESOURCE_TYPES));
+ String[] types =
Converters.standardConverter().convert(ref.getProperty(SLING_SERVLET_RESOURCE_TYPES)).to(String[].class);
- if ((types == null || types.length == 0) ||
StringUtils.isEmpty(FilenameUtils.getExtension(path))) {
- // ensure we have another entry which has the .servlet
ext. if there wasn't one to begin with
- // Radu says: this will make sure that scripts are equal
to servlets in the resolution process
- pathSet.add(ensureServletNameExtension(path));
- }
+ if ((types.length == 0) ||
StringUtils.isEmpty(FilenameUtils.getExtension(path))) {
+ // ensure we have another entry which has the .servlet ext. if
there wasn't one to begin with
+ // Radu says: this will make sure that scripts are equal to
servlets in the resolution process
+ pathSet.add(ensureServletNameExtension(path));
}
}
}
@@ -238,13 +236,13 @@ public class ServletResourceProviderFactory {
* @param ref
*/
private void addByType(Set<String> pathSet, ServiceReference<Servlet> ref)
{
- String[] types =
PropertiesUtil.toStringArray(ref.getProperty(SLING_SERVLET_RESOURCE_TYPES));
- String[] paths =
PropertiesUtil.toStringArray(ref.getProperty(SLING_SERVLET_PATHS));
+ String[] types =
Converters.standardConverter().convert(ref.getProperty(SLING_SERVLET_RESOURCE_TYPES)).to(String[].class);
+ String[] paths =
Converters.standardConverter().convert(ref.getProperty(SLING_SERVLET_PATHS)).to(String[].class);
boolean hasPathRegistration = true;
- if (paths == null || paths.length == 0) {
+ if (paths.length == 0) {
hasPathRegistration = false;
}
- if (types == null || types.length == 0) {
+ if (types.length == 0) {
if (log.isDebugEnabled()) {
log.debug("addByType({}): no resource types declared",
getServiceReferenceInfo(ref));
@@ -253,20 +251,20 @@ public class ServletResourceProviderFactory {
}
// check for selectors
- String[] selectors =
PropertiesUtil.toStringArray(ref.getProperty(SLING_SERVLET_SELECTORS));
- if (selectors == null) {
+ String[] selectors =
Converters.standardConverter().convert(ref.getProperty(SLING_SERVLET_SELECTORS)).to(String[].class);
+ if (selectors.length == 0) {
selectors = new String[] { null };
}
// we have types and expect extensions and/or methods
- String[] extensions =
PropertiesUtil.toStringArray(ref.getProperty(SLING_SERVLET_EXTENSIONS));
+ String[] extensions =
Converters.standardConverter().convert(ref.getProperty(SLING_SERVLET_EXTENSIONS)).to(String[].class);
// handle the methods property specially (SLING-430)
- String[] methods =
PropertiesUtil.toStringArray(ref.getProperty(SLING_SERVLET_METHODS));
- if (methods == null || methods.length == 0) {
+ String[] methods =
Converters.standardConverter().convert(ref.getProperty(SLING_SERVLET_METHODS)).to(String[].class);
+ if (methods.length == 0) {
// SLING-512 only, set default methods if no extensions are
declared
- if ((extensions == null || extensions.length == 0) &&
!hasPathRegistration) {
+ if (extensions.length == 0 && !hasPathRegistration) {
if (log.isDebugEnabled()) {
log.debug(
"addByType({}): No methods declared, assuming
GET/HEAD",
@@ -307,8 +305,8 @@ public class ServletResourceProviderFactory {
}
boolean pathAdded = false;
- if (extensions != null) {
- if (methods != null) {
+ if (extensions.length > 0) {
+ if (methods != null && methods.length > 0) {
// both methods and extensions declared
for (String ext : extensions) {
for (String method : methods) {