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 faebb10  SLING-12643 : Support Jakarta ServletAPI in Scripting
faebb10 is described below

commit faebb10f10338aedd28de4be8658a42644c5fae0
Author: Carsten Ziegeler <[email protected]>
AuthorDate: Sun May 25 10:08:19 2025 +0200

    SLING-12643 : Support Jakarta ServletAPI in Scripting
---
 .../servlets/resolver/internal/ScriptResource.java |  10 +-
 .../resolver/internal/SlingScriptWrapper.java      | 263 ---------------------
 .../internal/console/WebConsolePlugin.java         |   6 +-
 .../resolver/internal/ScriptResourceTest.java      |  26 --
 4 files changed, 5 insertions(+), 300 deletions(-)

diff --git 
a/src/main/java/org/apache/sling/servlets/resolver/internal/ScriptResource.java 
b/src/main/java/org/apache/sling/servlets/resolver/internal/ScriptResource.java
index 604f70f..a05eb0b 100644
--- 
a/src/main/java/org/apache/sling/servlets/resolver/internal/ScriptResource.java
+++ 
b/src/main/java/org/apache/sling/servlets/resolver/internal/ScriptResource.java
@@ -29,7 +29,6 @@ import org.apache.sling.api.resource.ResourceMetadata;
 import org.apache.sling.api.resource.ResourceResolver;
 import org.apache.sling.api.resource.ResourceUtil;
 import org.apache.sling.api.resource.ResourceWrapper;
-import org.apache.sling.api.scripting.SlingJakartaScript;
 import org.apache.sling.api.scripting.SlingScript;
 import org.apache.sling.servlets.resolver.internal.resource.ServletResource;
 
@@ -102,7 +101,6 @@ public class ScriptResource extends AbstractResource {
     /**
      * @see 
org.apache.sling.api.adapter.SlingAdaptable#adaptTo(java.lang.Class)
      */
-    @SuppressWarnings({"unchecked", "deprecation"})
     @Override
     public <T> T adaptTo(final Class<T> type) {
         if (type == javax.servlet.Servlet.class) {
@@ -135,15 +133,11 @@ public class ScriptResource extends AbstractResource {
                     return (T) ServletWrapperUtil.toJakartaServlet(sx);
                 }
             }
-        } else if (type == SlingJakartaScript.class) {
-            final SlingJakartaScript s = (SlingJakartaScript) 
super.adaptTo(type);
+        } else if (type == SlingScript.class) {
+            final SlingScript s = (SlingScript) super.adaptTo(type);
             if (s != null) {
                 return (T) s;
             }
-            final SlingScript legacy = (SlingScript) 
super.adaptTo(SlingScript.class);
-            if (legacy != null) {
-                return (T) new SlingScriptWrapper(legacy);
-            }
         } else if (type == SlingScript.class) {
             final SlingScript s = (SlingScript) super.adaptTo(type);
             if (s != null) {
diff --git 
a/src/main/java/org/apache/sling/servlets/resolver/internal/SlingScriptWrapper.java
 
b/src/main/java/org/apache/sling/servlets/resolver/internal/SlingScriptWrapper.java
deleted file mode 100644
index a6a8ddd..0000000
--- 
a/src/main/java/org/apache/sling/servlets/resolver/internal/SlingScriptWrapper.java
+++ /dev/null
@@ -1,263 +0,0 @@
-/*
- * 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/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.
- */
-package org.apache.sling.servlets.resolver.internal;
-
-import java.io.PrintWriter;
-import java.io.Reader;
-import java.util.Collection;
-import java.util.Map;
-import java.util.Set;
-import java.util.function.BiConsumer;
-import java.util.function.BiFunction;
-import java.util.function.Function;
-
-import org.apache.sling.api.SlingHttpServletRequest;
-import org.apache.sling.api.SlingHttpServletResponse;
-import org.apache.sling.api.resource.Resource;
-import org.apache.sling.api.resource.ResourceResolver;
-import org.apache.sling.api.scripting.SlingBindings;
-import org.apache.sling.api.scripting.SlingJakartaBindings;
-import org.apache.sling.api.scripting.SlingJakartaScript;
-import org.apache.sling.api.scripting.SlingScript;
-import org.apache.sling.api.scripting.SlingScriptHelper;
-import org.apache.sling.api.wrappers.JakartaToJavaxRequestWrapper;
-import org.apache.sling.api.wrappers.JakartaToJavaxResponseWrapper;
-import org.apache.sling.api.wrappers.JavaxToJakartaRequestWrapper;
-import org.apache.sling.api.wrappers.JavaxToJakartaResponseWrapper;
-import org.jetbrains.annotations.NotNull;
-import org.jetbrains.annotations.Nullable;
-import org.slf4j.Logger;
-
-/**
- * TODO - we need to figure out what the best approach to support scripts is
- */
-@Deprecated
-public class SlingScriptWrapper implements SlingJakartaScript {
-
-    private final SlingScript legacy;
-
-    public SlingScriptWrapper(final SlingScript legacy) {
-        this.legacy = legacy;
-    }
-
-    @Override
-    public Object call(@NotNull final SlingJakartaBindings props, @NotNull 
final String method, final Object... args) {
-        return this.legacy.call(new SlingBindingsWrapper(props), method, args);
-    }
-
-    @Override
-    public Object eval(@NotNull final SlingJakartaBindings props) {
-        return this.legacy.eval(new SlingBindingsWrapper(props));
-    }
-
-    @Override
-    public @NotNull Resource getScriptResource() {
-        return this.legacy.getScriptResource();
-    }
-
-    private static class SlingBindingsWrapper extends SlingBindings {
-
-        private final SlingJakartaBindings bindings;
-
-        public SlingBindingsWrapper(final SlingJakartaBindings bindings) {
-            this.bindings = bindings;
-        }
-
-        public Object put(String key, Object value) {
-            return bindings.put(key, value);
-        }
-
-        public void putAll(Map<? extends String, ?> toMerge) {
-            bindings.putAll(toMerge);
-        }
-
-        public void clear() {
-            bindings.clear();
-        }
-
-        public @NotNull Set<String> keySet() {
-            return bindings.keySet();
-        }
-
-        public @NotNull Collection<Object> values() {
-            return bindings.values();
-        }
-
-        public @NotNull Set<Entry<String, Object>> entrySet() {
-            return bindings.entrySet();
-        }
-
-        public int size() {
-            return bindings.size();
-        }
-
-        public boolean isEmpty() {
-            return bindings.isEmpty();
-        }
-
-        public boolean containsKey(Object key) {
-            return bindings.containsKey(key);
-        }
-
-        public Object get(Object key) {
-            return bindings.get(key);
-        }
-
-        public Object remove(Object key) {
-            return bindings.remove(key);
-        }
-
-        public boolean equals(Object o) {
-            return bindings.equals(o);
-        }
-
-        public int hashCode() {
-            return bindings.hashCode();
-        }
-
-        public Object getOrDefault(Object key, Object defaultValue) {
-            return bindings.getOrDefault(key, defaultValue);
-        }
-
-        public void setFlush(boolean flush) {
-            bindings.setFlush(flush);
-        }
-
-        public boolean getFlush() {
-            return bindings.getFlush();
-        }
-
-        public void setLog(Logger log) {
-            bindings.setLog(log);
-        }
-
-        public @Nullable Logger getLog() {
-            return bindings.getLog();
-        }
-
-        public void setOut(PrintWriter out) {
-            bindings.setOut(out);
-        }
-
-        public @Nullable PrintWriter getOut() {
-            return bindings.getOut();
-        }
-
-        public void setRequest(SlingHttpServletRequest request) {
-            
bindings.setRequest(JavaxToJakartaRequestWrapper.toJakartaRequest(request));
-        }
-
-        public @Nullable SlingHttpServletRequest getRequest() {
-            return 
JakartaToJavaxRequestWrapper.toJavaxRequest(bindings.getRequest());
-        }
-
-        public void setReader(Reader reader) {
-            bindings.setReader(reader);
-        }
-
-        public @Nullable Reader getReader() {
-            return bindings.getReader();
-        }
-
-        public void setResource(Resource resource) {
-            bindings.setResource(resource);
-        }
-
-        public @Nullable Resource getResource() {
-            return bindings.getResource();
-        }
-
-        public void setResourceResolver(ResourceResolver resourceResolver) {
-            bindings.setResourceResolver(resourceResolver);
-        }
-
-        public @Nullable ResourceResolver getResourceResolver() {
-            return bindings.getResourceResolver();
-        }
-
-        public void setResponse(SlingHttpServletResponse response) {
-            
bindings.setResponse(JavaxToJakartaResponseWrapper.toJakartaResponse(response));
-        }
-
-        public @Nullable SlingHttpServletResponse getResponse() {
-            return 
JakartaToJavaxResponseWrapper.toJavaxResponse(bindings.getResponse());
-        }
-
-        public void setSling(SlingScriptHelper sling) {
-            // bindings.setSling(sling);
-        }
-
-        public @Nullable SlingScriptHelper getSling() {
-            return null; // bindings.getSling();
-        }
-
-        public String toString() {
-            return bindings.toString();
-        }
-
-        public boolean containsValue(Object value) {
-            return bindings.containsValue(value);
-        }
-
-        public Object putIfAbsent(String key, Object value) {
-            return bindings.putIfAbsent(key, value);
-        }
-
-        public boolean remove(Object key, Object value) {
-            return bindings.remove(key, value);
-        }
-
-        public boolean replace(String key, Object oldValue, Object newValue) {
-            return bindings.replace(key, oldValue, newValue);
-        }
-
-        public Object replace(String key, Object value) {
-            return bindings.replace(key, value);
-        }
-
-        public Object computeIfAbsent(String key, Function<? super String, ? 
extends Object> mappingFunction) {
-            return bindings.computeIfAbsent(key, mappingFunction);
-        }
-
-        public Object computeIfPresent(
-                String key, BiFunction<? super String, ? super Object, ? 
extends Object> remappingFunction) {
-            return bindings.computeIfPresent(key, remappingFunction);
-        }
-
-        public Object compute(
-                String key, BiFunction<? super String, ? super Object, ? 
extends Object> remappingFunction) {
-            return bindings.compute(key, remappingFunction);
-        }
-
-        public Object merge(
-                String key,
-                Object value,
-                BiFunction<? super Object, ? super Object, ? extends Object> 
remappingFunction) {
-            return bindings.merge(key, value, remappingFunction);
-        }
-
-        public void forEach(BiConsumer<? super String, ? super Object> action) 
{
-            bindings.forEach(action);
-        }
-
-        public void replaceAll(BiFunction<? super String, ? super Object, ? 
extends Object> function) {
-            bindings.replaceAll(function);
-        }
-    }
-}
diff --git 
a/src/main/java/org/apache/sling/servlets/resolver/internal/console/WebConsolePlugin.java
 
b/src/main/java/org/apache/sling/servlets/resolver/internal/console/WebConsolePlugin.java
index 63bf91f..a1d86e0 100644
--- 
a/src/main/java/org/apache/sling/servlets/resolver/internal/console/WebConsolePlugin.java
+++ 
b/src/main/java/org/apache/sling/servlets/resolver/internal/console/WebConsolePlugin.java
@@ -43,7 +43,7 @@ import org.apache.sling.api.resource.Resource;
 import org.apache.sling.api.resource.ResourceResolver;
 import org.apache.sling.api.resource.ResourceResolverFactory;
 import org.apache.sling.api.resource.ResourceUtil;
-import org.apache.sling.api.scripting.SlingJakartaScript;
+import org.apache.sling.api.scripting.SlingScript;
 import org.apache.sling.api.servlets.JakartaOptingServlet;
 import org.apache.sling.api.uri.SlingUriBuilder;
 import org.apache.sling.serviceusermapping.ServiceUserMapped;
@@ -437,8 +437,8 @@ public class WebConsolePlugin extends HttpServlet {
 
     private String getServletDetails(Servlet servlet) {
         StringBuilder details = new StringBuilder();
-        if (servlet instanceof SlingJakartaScript) {
-            final SlingJakartaScript script = 
SlingJakartaScript.class.cast(servlet);
+        if (servlet instanceof SlingScript) {
+            final SlingScript script = SlingScript.class.cast(servlet);
             
details.append(Encode.forHtml(script.getScriptResource().getPath()));
             details.append(" (Resource Script)");
         } else {
diff --git 
a/src/test/java/org/apache/sling/servlets/resolver/internal/ScriptResourceTest.java
 
b/src/test/java/org/apache/sling/servlets/resolver/internal/ScriptResourceTest.java
index 7124e7f..67d2ae2 100644
--- 
a/src/test/java/org/apache/sling/servlets/resolver/internal/ScriptResourceTest.java
+++ 
b/src/test/java/org/apache/sling/servlets/resolver/internal/ScriptResourceTest.java
@@ -24,7 +24,6 @@ import org.apache.sling.api.adapter.SlingAdaptable;
 import org.apache.sling.api.resource.Resource;
 import org.apache.sling.api.resource.ResourceResolver;
 import org.apache.sling.api.resource.ResourceWrapper;
-import org.apache.sling.api.scripting.SlingJakartaScript;
 import org.apache.sling.api.scripting.SlingScript;
 import org.apache.sling.servlets.resolver.internal.resource.ServletResource;
 import org.junit.Test;
@@ -162,29 +161,4 @@ public class ScriptResourceTest {
         SlingScript adaptedScript = scriptResource.adaptTo(SlingScript.class);
         assertEquals(script, adaptedScript);
     }
-
-    @Test
-    public void testAdaptToSlingJakartaScript() {
-        final String resourcePath = "/sling/test/test.html";
-        ResourceResolver perThreadRR = mock(ResourceResolver.class);
-        ResourceResolver sharedRR = mock(ResourceResolver.class);
-        Resource resource = mock(Resource.class);
-        when(resource.getPath()).thenReturn(resourcePath);
-
-        SlingJakartaScript script = mock(SlingJakartaScript.class);
-
-        Resource wrappedResource = new ResourceWrapper(resource);
-        
when(perThreadRR.getResource(resourcePath)).thenReturn(wrappedResource);
-        when(perThreadRR.isLive()).thenReturn(true);
-
-        ScriptResource scriptResource = new ScriptResource(resource, () -> 
perThreadRR, sharedRR);
-
-        AdapterManager adapterManager = mock(AdapterManager.class);
-        when(adapterManager.getAdapter(scriptResource, 
SlingJakartaScript.class))
-                .thenReturn(script);
-        SlingAdaptable.setAdapterManager(adapterManager);
-
-        SlingJakartaScript adaptedScript = 
scriptResource.adaptTo(SlingJakartaScript.class);
-        assertEquals(script, adaptedScript);
-    }
 }

Reply via email to