You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@isis.apache.org by ah...@apache.org on 2019/05/09 17:39:34 UTC
[isis] 03/04: ISIS-2112: fixes poReader provisioning
This is an automated email from the ASF dual-hosted git repository.
ahuber pushed a commit to branch 2112_SpringBoot
in repository https://gitbox.apache.org/repos/asf/isis.git
commit 9304c68515db70542f5140278ea3913b8314f3a7
Author: Andi Huber <ah...@apache.org>
AuthorDate: Thu May 9 19:34:31 2019 +0200
ISIS-2112: fixes poReader provisioning
Task-Url: https://issues.apache.org/jira/browse/ISIS-2112
---
.../core/runtime/services/i18n/po/PoReader.java | 33 +++++++++++++--------
.../services/i18n/po/TranslationServicePo.java | 34 ++++++++++------------
.../services/TranslationsResolverWicket.java | 11 +++----
3 files changed, 40 insertions(+), 38 deletions(-)
diff --git a/core/runtime-services/src/main/java/org/apache/isis/core/runtime/services/i18n/po/PoReader.java b/core/runtime-services/src/main/java/org/apache/isis/core/runtime/services/i18n/po/PoReader.java
index 9822194..da55735 100644
--- a/core/runtime-services/src/main/java/org/apache/isis/core/runtime/services/i18n/po/PoReader.java
+++ b/core/runtime-services/src/main/java/org/apache/isis/core/runtime/services/i18n/po/PoReader.java
@@ -23,9 +23,7 @@ import java.util.List;
import java.util.Locale;
import java.util.Map;
import java.util.Set;
-
-import org.slf4j.Logger;
-import org.slf4j.LoggerFactory;
+import java.util.stream.Collectors;
import org.apache.isis.applib.services.i18n.LocaleProvider;
import org.apache.isis.applib.services.i18n.TranslationService;
@@ -34,12 +32,15 @@ import org.apache.isis.commons.internal.base._Strings;
import org.apache.isis.commons.internal.collections._Lists;
import org.apache.isis.commons.internal.collections._Maps;
import org.apache.isis.commons.internal.collections._Sets;
+import org.apache.isis.core.commons.collections.Bin;
+
+import lombok.extern.slf4j.Slf4j;
+@Slf4j
class PoReader extends PoAbstract {
public static final String DASH = "-";
public static final String UNDERSCORE = "_";
- public static Logger LOG = LoggerFactory.getLogger(PoReader.class);
private final Map<Locale, Map<ContextAndMsgId, String>> translationByKeyByLocale = _Maps.newHashMap();
private final Map<Locale, Boolean> usesFallbackByLocale = _Maps.newHashMap();
@@ -59,18 +60,21 @@ class PoReader extends PoAbstract {
* </p>
*/
private final String basename = "translations";
- private final TranslationsResolver translationsResolver;
- private final LocaleProvider localeProvider;
+ private final Bin<TranslationsResolver> translationsResolver;
+ private final Bin<LocaleProvider> localeProvider;
private List<String> fallback;
public PoReader(final TranslationServicePo translationServicePo) {
super(translationServicePo, TranslationService.Mode.READ);
translationsResolver = translationServicePo.getTranslationsResolver();
- if(translationsResolver == null) {
- LOG.warn("No translationsResolver available");
+ if(translationsResolver.isEmpty()) {
+ log.warn("No TranslationsResolver available");
}
localeProvider = translationServicePo.getLocaleProvider();
+ if(localeProvider.isEmpty()) {
+ log.warn("No LocaleProvider available");
+ }
}
// -- init, shutdown
@@ -81,7 +85,7 @@ class PoReader extends PoAbstract {
void init() {
fallback = readUrl(basename + ".po");
if(fallback == null) {
- LOG.info("No fallback translations found; i18n is in effect disabled for this application");
+ log.info("No fallback translations found; i18n is in effect disabled for this application");
fallback = Collections.emptyList();
}
}
@@ -127,7 +131,9 @@ class PoReader extends PoAbstract {
final Locale targetLocale;
try {
- targetLocale = localeProvider.getLocale();
+ targetLocale = localeProvider.getFirst()
+ .map(LocaleProvider::getLocale)
+ .orElse(null);
if(targetLocale == null) {
// eg if request from RO viewer and the (default) LocaleProviderWicket is being used.
return msgId;
@@ -241,14 +247,17 @@ class PoReader extends PoAbstract {
}
private List<String> readUrl(final String candidate) {
- return translationsResolver.readLines(candidate);
+ return translationsResolver.stream()
+ .map(resolver->resolver.readLines(candidate))
+ .flatMap(List::stream)
+ .collect(Collectors.toList());
}
// to avoid flooding the logs
private void logInfoIfNotPreviously(final String infoMessage) {
if(!loggedInfoMessages.contains(infoMessage)) {
- LOG.info(infoMessage);
+ log.info(infoMessage);
loggedInfoMessages.add(infoMessage);
}
}
diff --git a/core/runtime-services/src/main/java/org/apache/isis/core/runtime/services/i18n/po/TranslationServicePo.java b/core/runtime-services/src/main/java/org/apache/isis/core/runtime/services/i18n/po/TranslationServicePo.java
index 52919a1..0e2cc19 100644
--- a/core/runtime-services/src/main/java/org/apache/isis/core/runtime/services/i18n/po/TranslationServicePo.java
+++ b/core/runtime-services/src/main/java/org/apache/isis/core/runtime/services/i18n/po/TranslationServicePo.java
@@ -20,28 +20,22 @@ package org.apache.isis.core.runtime.services.i18n.po;
import javax.annotation.PostConstruct;
import javax.annotation.PreDestroy;
+import javax.inject.Singleton;
-import org.slf4j.Logger;
-import org.slf4j.LoggerFactory;
-
-import org.apache.isis.applib.annotation.DomainService;
-import org.apache.isis.applib.annotation.NatureOfService;
import org.apache.isis.applib.annotation.Programmatic;
import org.apache.isis.applib.services.i18n.LocaleProvider;
import org.apache.isis.applib.services.i18n.TranslationService;
import org.apache.isis.applib.services.i18n.TranslationsResolver;
+import org.apache.isis.commons.internal.base._Lazy;
import org.apache.isis.commons.internal.context._Context;
+import org.apache.isis.core.commons.collections.Bin;
+import org.apache.isis.core.runtime.system.context.IsisContext;
import static org.apache.isis.config.internal._Config.getConfiguration;
-@DomainService(
- nature = NatureOfService.DOMAIN,
- menuOrder = "" + Integer.MAX_VALUE
- )
+@Singleton
public class TranslationServicePo implements TranslationService {
- public static Logger LOG = LoggerFactory.getLogger(TranslationServicePo.class);
-
public static final String KEY_PO_MODE = "isis.services.translation.po.mode";
private PoAbstract po;
@@ -172,20 +166,22 @@ public class TranslationServicePo implements TranslationService {
// //////////////////////////////////////
- @javax.inject.Inject
- private TranslationsResolver translationsResolver;
+
+ private _Lazy<Bin<TranslationsResolver>> translationsResolvers = _Lazy.threadSafe(()->
+ IsisContext.getServiceRegistry().select(TranslationsResolver.class) );
@Programmatic
- TranslationsResolver getTranslationsResolver() {
- return translationsResolver;
+ Bin<TranslationsResolver> getTranslationsResolver() {
+ return translationsResolvers.get();
}
- @javax.inject.Inject
- private LocaleProvider localeProvider;
+ private _Lazy<Bin<LocaleProvider>> localeProviders = _Lazy.threadSafe(()->
+ IsisContext.getServiceRegistry().select(LocaleProvider.class) );
@Programmatic
- LocaleProvider getLocaleProvider() {
- return localeProvider;
+ Bin<LocaleProvider> getLocaleProvider() {
+ return localeProviders.get();
}
+
}
diff --git a/core/viewer-wicket-impl/src/main/java/org/apache/isis/viewer/wicket/viewer/services/TranslationsResolverWicket.java b/core/viewer-wicket-impl/src/main/java/org/apache/isis/viewer/wicket/viewer/services/TranslationsResolverWicket.java
index f064097..40d933a 100644
--- a/core/viewer-wicket-impl/src/main/java/org/apache/isis/viewer/wicket/viewer/services/TranslationsResolverWicket.java
+++ b/core/viewer-wicket-impl/src/main/java/org/apache/isis/viewer/wicket/viewer/services/TranslationsResolverWicket.java
@@ -37,24 +37,21 @@ import com.google.common.io.CharSource;
import com.google.common.io.Files;
import com.google.common.io.Resources;
-import org.slf4j.Logger;
-import org.slf4j.LoggerFactory;
-
import org.apache.isis.applib.annotation.Programmatic;
import org.apache.isis.applib.services.i18n.TranslationsResolver;
import org.apache.isis.commons.internal.collections._Lists;
import org.apache.isis.config.WebAppConstants;
import org.apache.isis.viewer.wicket.viewer.IsisWicketApplication;
+import lombok.extern.slf4j.Slf4j;
+
/**
* An implementation that reads from /WEB-INF/...
*/
-@Singleton
+@Singleton @Slf4j
public class TranslationsResolverWicket implements TranslationsResolver {
- public static Logger LOG = LoggerFactory.getLogger(TranslationsResolverWicket.class);
-
@Override
@Programmatic
public List<String> readLines(final String file) {
@@ -63,7 +60,7 @@ public class TranslationsResolverWicket implements TranslationsResolver {
final String configLocation = servletContext.getInitParameter(WebAppConstants.CONFIG_DIR_PARAM);
try {
if(configLocation != null) {
- LOG.info( "Reading translations relative to config override location: {}", configLocation );
+ log.info( "Reading translations relative to config override location: {}", configLocation );
return Files.readLines(newFile(configLocation, file), Charsets.UTF_8);
} else {
final URL url = servletContext.getResource("/WEB-INF/" + file);