This is an automated email from the ASF dual-hosted git repository.

rombert pushed a commit to branch issue/SLING-13071
in repository 
https://gitbox.apache.org/repos/asf/sling-org-apache-sling-starter-test-services.git

commit d8e3ff079f480de856951c13a31c80d2873eef6f
Author: Robert Munteanu <[email protected]>
AuthorDate: Fri Jan 23 13:52:57 2026 +0100

    SLING-13071 - HTL use objects that adapt from the javax 
SlingHttpServletRequest cannot be instantiated a Jakarta context
    
    Add a Pojo and adapter factory that can help reproduce the problem.
---
 .../adapter/RequestHashCodeAdapterFactory.java     | 50 ++++++++++++++++++++++
 ...{package-info.java => RequestHashCodePojo.java} | 31 +++++++++++++-
 .../testservices/exported/package-info.java        |  2 +-
 3 files changed, 80 insertions(+), 3 deletions(-)

diff --git 
a/src/main/java/org/apache/sling/starter/testservices/adapter/RequestHashCodeAdapterFactory.java
 
b/src/main/java/org/apache/sling/starter/testservices/adapter/RequestHashCodeAdapterFactory.java
new file mode 100644
index 0000000..f29304f
--- /dev/null
+++ 
b/src/main/java/org/apache/sling/starter/testservices/adapter/RequestHashCodeAdapterFactory.java
@@ -0,0 +1,50 @@
+/*
+ * 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.starter.testservices.adapter;
+
+import org.apache.sling.api.SlingHttpServletRequest;
+import org.apache.sling.api.adapter.AdapterFactory;
+import org.apache.sling.starter.testservices.exported.RequestHashCodePojo;
+import org.jetbrains.annotations.NotNull;
+import org.osgi.service.component.annotations.Component;
+
+/**
+ * AdapterFactory that adapts SlingHttpServletRequest to RequestHashCodePojo.
+ * The POJO will contain the hash code of the request object as a string.
+ */
+@Component(
+        service = AdapterFactory.class,
+        property = {
+            AdapterFactory.ADAPTABLE_CLASSES + 
":String=org.apache.sling.api.SlingHttpServletRequest",
+            AdapterFactory.ADAPTER_CLASSES
+                    + 
":String=org.apache.sling.starter.testservices.exported.RequestHashCodePojo"
+        })
+public class RequestHashCodeAdapterFactory implements AdapterFactory {
+
+    @Override
+    public <AdapterType> AdapterType getAdapter(@NotNull Object adaptable, 
@NotNull Class<AdapterType> type) {
+        if (adaptable instanceof SlingHttpServletRequest && type == 
RequestHashCodePojo.class) {
+            SlingHttpServletRequest request = (SlingHttpServletRequest) 
adaptable;
+            String hashCodeString = String.valueOf(request.hashCode());
+            RequestHashCodePojo pojo = new RequestHashCodePojo(hashCodeString);
+            return type.cast(pojo);
+        }
+        return null;
+    }
+}
diff --git 
a/src/main/java/org/apache/sling/starter/testservices/exported/package-info.java
 
b/src/main/java/org/apache/sling/starter/testservices/exported/RequestHashCodePojo.java
similarity index 57%
copy from 
src/main/java/org/apache/sling/starter/testservices/exported/package-info.java
copy to 
src/main/java/org/apache/sling/starter/testservices/exported/RequestHashCodePojo.java
index 1d1ec8a..5c54ffe 100644
--- 
a/src/main/java/org/apache/sling/starter/testservices/exported/package-info.java
+++ 
b/src/main/java/org/apache/sling/starter/testservices/exported/RequestHashCodePojo.java
@@ -16,6 +16,33 @@
  * specific language governing permissions and limitations
  * under the License.
  */
-
[email protected]("2.2.0")
 package org.apache.sling.starter.testservices.exported;
+
+/**
+ * POJO representing a request hash code.
+ *
+ * <p>Key characteristics: does not have a no-arg constructor and its 
AdapterFactory adapts from
+ * the legacy SlingHttpServletRequest interface.</p>
+ */
+public class RequestHashCodePojo {
+
+    private final String hashCode;
+
+    /**
+     * Constructor that takes the hashCode.
+     *
+     * @param hashCode the hash code as a string
+     */
+    public RequestHashCodePojo(String hashCode) {
+        this.hashCode = hashCode;
+    }
+
+    /**
+     * Gets the hash code value.
+     *
+     * @return the hash code as a string
+     */
+    public String getHashCode() {
+        return hashCode;
+    }
+}
diff --git 
a/src/main/java/org/apache/sling/starter/testservices/exported/package-info.java
 
b/src/main/java/org/apache/sling/starter/testservices/exported/package-info.java
index 1d1ec8a..37eaba9 100644
--- 
a/src/main/java/org/apache/sling/starter/testservices/exported/package-info.java
+++ 
b/src/main/java/org/apache/sling/starter/testservices/exported/package-info.java
@@ -17,5 +17,5 @@
  * under the License.
  */
 
[email protected]("2.2.0")
[email protected]("2.3.0")
 package org.apache.sling.starter.testservices.exported;

Reply via email to