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);
