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

pauls pushed a commit to branch i18n
in repository 
https://gitbox.apache.org/repos/asf/sling-org-apache-sling-scripting-sightly.git

commit b6ed3a6972d78b29da8138829ef20a4c883b9f38
Author: Karl Pauls <[email protected]>
AuthorDate: Mon Dec 4 22:34:42 2023 +0100

    Make i18n dependency optional
---
 bnd.bnd                                               |  1 +
 .../impl/engine/extension/I18nRuntimeExtension.java   | 19 +++++++++++++++----
 2 files changed, 16 insertions(+), 4 deletions(-)

diff --git a/bnd.bnd b/bnd.bnd
index c4c672d..ed75b62 100644
--- a/bnd.bnd
+++ b/bnd.bnd
@@ -8,6 +8,7 @@ Provide-Capability: io.sightly;version:Version="1.0", \\
                     io.sightly;version:Version="1.4"
 Require-Capability: io.sightly.runtime; 
filter:="(&(version>=1.0)(!(version>=2.0)))"
 Import-Package:     
org.apache.sling.scripting.sightly.compiler.*;resolution:=optional, \\
+                    org.apache.sling.i18n.*;resolution:=optional, \\
                     
org.apache.sling.scripting.sightly.java.compiler.*;resolution:=optional, \\
                     org.apache.sling.commons.compiler.*;resolution:=optional, 
\\
                     
org.apache.sling.commons.classloader.*;resolution:=optional, \\
diff --git 
a/src/main/java/org/apache/sling/scripting/sightly/impl/engine/extension/I18nRuntimeExtension.java
 
b/src/main/java/org/apache/sling/scripting/sightly/impl/engine/extension/I18nRuntimeExtension.java
index 39a8236..02f79a2 100644
--- 
a/src/main/java/org/apache/sling/scripting/sightly/impl/engine/extension/I18nRuntimeExtension.java
+++ 
b/src/main/java/org/apache/sling/scripting/sightly/impl/engine/extension/I18nRuntimeExtension.java
@@ -61,11 +61,22 @@ public class I18nRuntimeExtension implements 
RuntimeExtension {
         return get(bindings, text, locale, basename, hint);
     }
 
+    private Object getResourceBundleProvider(SlingScriptHelper 
slingScriptHelper) {
+        Class clazz;
+        try {
+            clazz = 
getClass().getClassLoader().loadClass("org.apache.sling.i18n.ResourceBundleProvider");
+        } catch (Throwable t) {
+            LOG.warn("i18n package not available");
+            return null;
+        }
+        return slingScriptHelper.getService(clazz);
+    }
+
     private String get(final Bindings bindings, String text, String locale, 
String basename, String hint) {
 
         final SlingScriptHelper slingScriptHelper = 
BindingsUtils.getHelper(bindings);
         final SlingHttpServletRequest request = 
BindingsUtils.getRequest(bindings);
-        final ResourceBundleProvider resourceBundleProvider = 
slingScriptHelper.getService(ResourceBundleProvider.class);
+        final Object resourceBundleProvider = 
getResourceBundleProvider(slingScriptHelper);
         if (resourceBundleProvider != null) {
             String key = text;
             if (StringUtils.isNotEmpty(hint)) {
@@ -99,12 +110,12 @@ public class I18nRuntimeExtension implements 
RuntimeExtension {
         return text;
     }
 
-    private String getTranslation(ResourceBundleProvider 
resourceBundleProvider, String basename, String key, Locale locale) {
+    private String getTranslation(Object resourceBundleProvider, String 
basename, String key, Locale locale) {
         ResourceBundle resourceBundle;
         if (StringUtils.isNotEmpty(basename)) {
-            resourceBundle = 
resourceBundleProvider.getResourceBundle(basename, locale);
+            resourceBundle = ((ResourceBundleProvider) 
resourceBundleProvider).getResourceBundle(basename, locale);
         } else {
-            resourceBundle = resourceBundleProvider.getResourceBundle(locale);
+            resourceBundle = ((ResourceBundleProvider) 
resourceBundleProvider).getResourceBundle(locale);
         }
         if (resourceBundle != null && resourceBundle.containsKey(key)) {
             return resourceBundle.getString(key);

Reply via email to