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/01/24 07:07:17 UTC
[isis] branch 2033-IoC updated: ISIS-2033: fixes provisioning of
TranslationService + MessageService
This is an automated email from the ASF dual-hosted git repository.
ahuber pushed a commit to branch 2033-IoC
in repository https://gitbox.apache.org/repos/asf/isis.git
The following commit(s) were added to refs/heads/2033-IoC by this push:
new 6e70355 ISIS-2033: fixes provisioning of TranslationService + MessageService
6e70355 is described below
commit 6e7035567c3729da1022544d738d133a95e6cb33
Author: Andi Huber <ah...@apache.org>
AuthorDate: Thu Jan 24 08:07:10 2019 +0100
ISIS-2033: fixes provisioning of TranslationService + MessageService
Task-Url: https://issues.apache.org/jira/browse/ISIS-2033
---
.../isis/applib/services/i18n/LocaleProvider.java | 3 -
.../applib/services/i18n/TranslationService.java | 7 +-
.../org/apache/isis/config/AppConfigLocator.java | 32 ++++++--
.../services/message/MessageServiceNoop.java | 85 ----------------------
.../isis/core/plugins/ioc/weld/WeldFactory.java | 3 +-
.../services/i18n/po/TranslationServicePo.java | 43 ++++-------
.../services/message/MessageServiceDefault.java | 8 +-
.../system/session/IsisSessionProducerBean.java | 1 -
.../core/webapp/IsisWebAppContextListener.java | 22 ------
.../webapp/jee/IsisCDIBeanScanInterceptor.java | 19 ++++-
.../viewer/services/LocaleProviderWicket.java | 14 ++--
.../services/TranslationsResolverWicket.java | 26 +++----
12 files changed, 80 insertions(+), 183 deletions(-)
diff --git a/core/applib/src/main/java/org/apache/isis/applib/services/i18n/LocaleProvider.java b/core/applib/src/main/java/org/apache/isis/applib/services/i18n/LocaleProvider.java
index f5656cb..a5854f5 100644
--- a/core/applib/src/main/java/org/apache/isis/applib/services/i18n/LocaleProvider.java
+++ b/core/applib/src/main/java/org/apache/isis/applib/services/i18n/LocaleProvider.java
@@ -20,10 +20,7 @@ package org.apache.isis.applib.services.i18n;
import java.util.Locale;
-import org.apache.isis.applib.annotation.Programmatic;
-
public interface LocaleProvider {
- @Programmatic
Locale getLocale();
}
diff --git a/core/applib/src/main/java/org/apache/isis/applib/services/i18n/TranslationService.java b/core/applib/src/main/java/org/apache/isis/applib/services/i18n/TranslationService.java
index f3b04b8..97fdc83 100644
--- a/core/applib/src/main/java/org/apache/isis/applib/services/i18n/TranslationService.java
+++ b/core/applib/src/main/java/org/apache/isis/applib/services/i18n/TranslationService.java
@@ -21,8 +21,6 @@ package org.apache.isis.applib.services.i18n;
import java.util.Objects;
import java.util.function.Predicate;
-import org.apache.isis.applib.annotation.Programmatic;
-
public interface TranslationService {
/**
@@ -36,7 +34,6 @@ public interface TranslationService {
* @param text
* @return
*/
- @Programmatic
public String translate(final String context, final String text);
/**
@@ -53,7 +50,6 @@ public interface TranslationService {
* @param num - whether to return the translation of the singular (if =1) or of the plural (if != 1)
* @return
*/
- @Programmatic
public String translate(final String context, final String singularText, final String pluralText, int num);
@@ -108,6 +104,5 @@ public interface TranslationService {
* such that all pathways are exercised..
* </p>
*/
- @Programmatic
- Mode getMode();
+ public Mode getMode();
}
diff --git a/core/config/src/main/java/org/apache/isis/config/AppConfigLocator.java b/core/config/src/main/java/org/apache/isis/config/AppConfigLocator.java
index d96e913..9788ece 100644
--- a/core/config/src/main/java/org/apache/isis/config/AppConfigLocator.java
+++ b/core/config/src/main/java/org/apache/isis/config/AppConfigLocator.java
@@ -23,6 +23,7 @@ import java.util.Set;
import java.util.stream.Collectors;
import org.apache.isis.commons.internal.cdi._CDI;
+import org.apache.isis.commons.internal.collections._Lists;
import org.apache.isis.commons.internal.collections._Sets;
import org.apache.isis.commons.internal.context._Context;
import org.apache.isis.commons.internal.context._Plugin;
@@ -48,19 +49,38 @@ public final class AppConfigLocator {
// for sanity check
private final static Set<String> criticalServices() {
- return _Sets.newHashSet(_Sets.of(
+ return _Sets.newLinkedHashSet(_Lists.of(
"org.apache.isis.applib.services.registry.ServiceRegistry",
"org.apache.isis.config.IsisConfiguration",
"org.apache.isis.core.runtime.system.session.IsisSessionFactory",
"org.apache.isis.core.security.authentication.manager.AuthenticationManager",
"org.apache.isis.core.security.authorization.manager.AuthorizationManager",
"org.apache.isis.core.metamodel.specloader.SpecificationLoader",
- "org.apache.isis.core.runtime.system.persistence.PersistenceSessionFactory"
+ "org.apache.isis.core.runtime.system.persistence.PersistenceSessionFactory",
+
+ "org.apache.isis.applib.services.eventbus.EventBusService",
+ "org.apache.isis.applib.services.factory.FactoryService",
+
+ "org.apache.isis.applib.services.i18n.LocaleProvider",
+ "org.apache.isis.applib.services.i18n.TranslationsResolver",
+ "org.apache.isis.applib.services.i18n.TranslationService",
+ "org.apache.isis.applib.services.message.MessageService",
+
+ "org.apache.isis.applib.services.repository.RepositoryService",
+ "org.apache.isis.applib.services.title.TitleService",
+ "org.apache.isis.applib.services.user.UserService",
+ "org.apache.isis.applib.services.xactn.TransactionService",
+
+ "org.apache.isis.applib.services.homepage.HomePageProviderService"
+
+
));
}
private final static _Probe probe =
_Probe.unlimited().label("AppConfigLocator");
+ private final static _Probe probeSanity =
+ _Probe.unlimited().label("AppConfigLocator SANITY");
private static AppConfig lookupAppConfigAndVerifyCDI() {
final AppConfig appConfig = lookupAppConfig();
@@ -75,7 +95,6 @@ public final class AppConfigLocator {
}
});
-
// ensure critical services are managed by CDI
final Set<String> managedTypes = new HashSet<>();
for(String serviceClassName : criticalServices()) {
@@ -84,11 +103,14 @@ public final class AppConfigLocator {
_CDI.getSingleton(type);
- probe.println("SANITY-CHECK Critical service managed by CDI %s", type.getSimpleName());
+ probeSanity.println("%s ... managed by CDI", type.getSimpleName());
managedTypes.add(serviceClassName);
} catch (Exception e) {
- probe.println("failed to resolve bean %s cause: %s", serviceClassName, e.getMessage());
+ probeSanity.println("*%s ... failed to resolve bean '%s' cause: %s",
+ serviceClassName.substring(1+serviceClassName.lastIndexOf(".")),
+ serviceClassName,
+ e.getMessage());
}
}
diff --git a/core/metamodel/src/main/java/org/apache/isis/core/metamodel/services/message/MessageServiceNoop.java b/core/metamodel/src/main/java/org/apache/isis/core/metamodel/services/message/MessageServiceNoop.java
deleted file mode 100644
index b422e04..0000000
--- a/core/metamodel/src/main/java/org/apache/isis/core/metamodel/services/message/MessageServiceNoop.java
+++ /dev/null
@@ -1,85 +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.isis.core.metamodel.services.message;
-
-import org.apache.isis.applib.services.i18n.TranslatableString;
-import org.apache.isis.applib.services.message.MessageService;
-
-public abstract class MessageServiceNoop implements MessageService {
-
- @Override
- public void informUser(final String message) {
- throw new UnsupportedOperationException("Not supported by this implementation of RuntimeContext");
- }
-
- @Override
- public String informUser(
- final TranslatableString message,
- final Class<?> contextClass,
- final String contextMethod) {
- throw notSupported();
- }
-
- @Override
- public String informUser(TranslatableString message, String translationContext) {
- throw notSupported();
- }
-
- @Override
- public void warnUser(final String message) {
- throw notSupported();
- }
-
- @Override public String warnUser(
- final TranslatableString message,
- final Class<?> contextClass,
- final String contextMethod) {
- throw notSupported();
- }
-
- @Override
- public String warnUser(TranslatableString message, String translationContext) {
- throw notSupported();
- }
-
- @Override
- public void raiseError(final String message) {
- throw notSupported();
- }
-
- @Override public String raiseError(
- final TranslatableString message,
- final Class<?> contextClass,
- final String contextMethod) {
- throw notSupported();
- }
-
- @Override
- public String raiseError(TranslatableString message, String translationContext) {
- throw notSupported();
- }
-
- // -- HELPER
-
- private static UnsupportedOperationException notSupported() {
- return new UnsupportedOperationException("Not supported by this implementation of RuntimeContext");
- }
-
-
-}
diff --git a/core/plugins/ioc-weld/src/main/java/org/apache/isis/core/plugins/ioc/weld/WeldFactory.java b/core/plugins/ioc-weld/src/main/java/org/apache/isis/core/plugins/ioc/weld/WeldFactory.java
index 7ef0cd1..6ab0162 100644
--- a/core/plugins/ioc-weld/src/main/java/org/apache/isis/core/plugins/ioc/weld/WeldFactory.java
+++ b/core/plugins/ioc-weld/src/main/java/org/apache/isis/core/plugins/ioc/weld/WeldFactory.java
@@ -60,7 +60,8 @@ public class WeldFactory {
"org.apache.isis.core.wrapper.WrapperFactoryDefault",
"org.apache.isis.viewer.wicket.viewer.IsisWicketModule",
"org.apache.isis.applib.services.jdosupport.IsisJdoSupportDN5",
- "org.apache.isis.core.runtime.services.persistsession.PersistenceSessionServiceInternalDefault",
+ "org.apache.isis.core.runtime.services.ServiceInstantiator",
+ "org.apache.isis.core.runtime.services.i18n.po.TranslationServicePo", //why?
"org.apache.wicket.cdi.AutoConversation"
diff --git a/core/runtime/src/main/java/org/apache/isis/core/runtime/services/i18n/po/TranslationServicePo.java b/core/runtime/src/main/java/org/apache/isis/core/runtime/services/i18n/po/TranslationServicePo.java
index f103c84..b7904e8 100644
--- a/core/runtime/src/main/java/org/apache/isis/core/runtime/services/i18n/po/TranslationServicePo.java
+++ b/core/runtime/src/main/java/org/apache/isis/core/runtime/services/i18n/po/TranslationServicePo.java
@@ -22,37 +22,36 @@ import static org.apache.isis.config.internal._Config.getConfiguration;
import javax.annotation.PostConstruct;
import javax.annotation.PreDestroy;
+import javax.enterprise.context.ApplicationScoped;
+import javax.inject.Inject;
import javax.inject.Singleton;
-import org.slf4j.Logger;
-import org.slf4j.LoggerFactory;
-
-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.context._Context;
+import org.slf4j.Logger;
+import org.slf4j.LoggerFactory;
+
+import lombok.AccessLevel;
+import lombok.Getter;
-@Singleton
+@ApplicationScoped //FIXME [2033] cannot provision with @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;
-
/**
- * Defaults to writer mode because the service won't have been init'd while the metamodel is bring instantiated,
+ * Defaults to writer mode because the service won't have been init'd while the metamodel is being instantiated,
* and we want to ensure that we capture all requests for translation.
*/
- public TranslationServicePo() {
- po = new PoWriter(this);
- }
+ private PoAbstract po = new PoWriter(this);
+
// -- init, shutdown
- @Programmatic
@PostConstruct
public void init() {
@@ -89,7 +88,6 @@ public class TranslationServicePo implements TranslationService {
return _Context.isPrototyping();
}
- @Programmatic
@PreDestroy
public void shutdown() {
po.shutdown();
@@ -98,7 +96,6 @@ public class TranslationServicePo implements TranslationService {
@Override
- @Programmatic
public String translate(final String context, final String text) {
return po.translate(context, text);
}
@@ -116,7 +113,6 @@ public class TranslationServicePo implements TranslationService {
/**
* Not API
*/
- @Programmatic
public String toPot() {
if (!getMode().isWrite()) {
return null;
@@ -130,7 +126,6 @@ public class TranslationServicePo implements TranslationService {
/**
* Not API
*/
- @Programmatic
void clearCache() {
if (!getMode().isRead()) {
return;
@@ -144,7 +139,6 @@ public class TranslationServicePo implements TranslationService {
/**
* Not API
*/
- @Programmatic
public void toggleMode() {
if(getMode().isRead()) {
previousPoReader = (PoReader) po;
@@ -168,20 +162,11 @@ public class TranslationServicePo implements TranslationService {
// //////////////////////////////////////
- @javax.inject.Inject
+ @Inject @Getter(AccessLevel.PACKAGE)
private TranslationsResolver translationsResolver;
- @Programmatic
- TranslationsResolver getTranslationsResolver() {
- return translationsResolver;
- }
-
- @javax.inject.Inject
+ @Inject @Getter(AccessLevel.PACKAGE)
private LocaleProvider localeProvider;
-
- @Programmatic
- LocaleProvider getLocaleProvider() {
- return localeProvider;
- }
+
}
diff --git a/core/runtime/src/main/java/org/apache/isis/core/runtime/services/message/MessageServiceDefault.java b/core/runtime/src/main/java/org/apache/isis/core/runtime/services/message/MessageServiceDefault.java
index 8e00941..5e8f515 100644
--- a/core/runtime/src/main/java/org/apache/isis/core/runtime/services/message/MessageServiceDefault.java
+++ b/core/runtime/src/main/java/org/apache/isis/core/runtime/services/message/MessageServiceDefault.java
@@ -18,6 +18,7 @@
*/
package org.apache.isis.core.runtime.services.message;
+import javax.inject.Inject;
import javax.inject.Singleton;
import org.apache.isis.applib.RecoverableException;
@@ -104,10 +105,7 @@ public class MessageServiceDefault implements MessageService {
return isisSessionFactory.getCurrentSession().getAuthenticationSession().getMessageBroker();
}
- @javax.inject.Inject
- IsisSessionFactory isisSessionFactory;
-
- @javax.inject.Inject
- TranslationService translationService;
+ @Inject IsisSessionFactory isisSessionFactory;
+ @Inject TranslationService translationService;
}
diff --git a/core/runtime/src/main/java/org/apache/isis/core/runtime/system/session/IsisSessionProducerBean.java b/core/runtime/src/main/java/org/apache/isis/core/runtime/system/session/IsisSessionProducerBean.java
index 40751e4..0e53df2 100644
--- a/core/runtime/src/main/java/org/apache/isis/core/runtime/system/session/IsisSessionProducerBean.java
+++ b/core/runtime/src/main/java/org/apache/isis/core/runtime/system/session/IsisSessionProducerBean.java
@@ -46,7 +46,6 @@ public class IsisSessionProducerBean {
return produceIsisSessionFactory().getPersistenceSessionFactory();
}
-
// -- HELPER
private final _Lazy<IsisSessionFactory> isisSessionFactorySingleton =
diff --git a/core/runtime/src/main/java/org/apache/isis/core/webapp/IsisWebAppContextListener.java b/core/runtime/src/main/java/org/apache/isis/core/webapp/IsisWebAppContextListener.java
index ad8159e..35ff7b5 100644
--- a/core/runtime/src/main/java/org/apache/isis/core/webapp/IsisWebAppContextListener.java
+++ b/core/runtime/src/main/java/org/apache/isis/core/webapp/IsisWebAppContextListener.java
@@ -30,17 +30,10 @@ import javax.servlet.ServletContextEvent;
import javax.servlet.ServletContextListener;
import javax.servlet.ServletException;
-import org.apache.isis.applib.services.registry.ServiceRegistry;
import org.apache.isis.commons.internal.base._Blackhole;
-import org.apache.isis.commons.internal.base._With;
-import org.apache.isis.commons.internal.cdi._CDI;
import org.apache.isis.commons.internal.context._Context;
import org.apache.isis.config.AppConfigLocator;
-import org.apache.isis.config.IsisConfiguration;
import org.apache.isis.core.runtime.system.context.IsisContext;
-import org.apache.isis.core.runtime.system.session.IsisSessionFactory;
-import org.apache.isis.core.security.authentication.manager.AuthenticationManager;
-import org.apache.isis.core.security.authorization.manager.AuthorizationManager;
import org.apache.isis.core.webapp.modules.WebModule;
import org.apache.isis.core.webapp.modules.WebModuleContext;
import org.slf4j.Logger;
@@ -67,21 +60,6 @@ public class IsisWebAppContextListener implements ServletContextListener {
private final List<ServletContextListener> activeListeners = new ArrayList<>();
- // -- SANITY CHECK
-
- public static void verifyCDISetup() {
- _CDI.getBeanManager();
- _With.requires(_CDI.getSingleton(IsisConfiguration.class), "IsisConfiguration");
- _With.requires(_CDI.getSingleton(ServiceRegistry.class), "ServiceRegistry");
- _With.requires(_CDI.getSingleton(AuthenticationManager.class), "AuthenticationManager");
- _With.requires(_CDI.getSingleton(AuthorizationManager.class), "AuthorizationManager");
- _With.requires(_CDI.getSingleton(IsisSessionFactory.class), "IsisSessionFactory");
-
-
- // TODO list registered beans
-
- }
-
// -- INTERFACE IMPLEMENTATION
@Override
diff --git a/core/runtime/src/main/java/org/apache/isis/core/webapp/jee/IsisCDIBeanScanInterceptor.java b/core/runtime/src/main/java/org/apache/isis/core/webapp/jee/IsisCDIBeanScanInterceptor.java
index aed018a..8705feb 100644
--- a/core/runtime/src/main/java/org/apache/isis/core/webapp/jee/IsisCDIBeanScanInterceptor.java
+++ b/core/runtime/src/main/java/org/apache/isis/core/webapp/jee/IsisCDIBeanScanInterceptor.java
@@ -28,11 +28,13 @@ import javax.enterprise.inject.spi.BeforeBeanDiscovery;
import javax.enterprise.inject.spi.Extension;
import javax.enterprise.inject.spi.ProcessAnnotatedType;
+import org.apache.isis.applib.services.exceprecog.ExceptionRecognizer;
+import org.apache.isis.applib.services.metrics.MetricsService;
+import org.apache.isis.commons.internal.debug._Probe;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
-import org.apache.isis.applib.services.exceprecog.ExceptionRecognizer;
-import org.apache.isis.applib.services.metrics.MetricsService;
+import lombok.val;
/**
*
@@ -54,6 +56,8 @@ import org.apache.isis.applib.services.metrics.MetricsService;
public final class IsisCDIBeanScanInterceptor implements Extension {
private static final Logger log = LoggerFactory.getLogger(IsisCDIBeanScanInterceptor.class);
+ private final static _Probe probe =
+ _Probe.unlimited().label("IsisCDIBeanScanInterceptor");
/**
* Declaration of Beans that are managed by Isis and should be ignored by CDI.
@@ -74,7 +78,16 @@ public final class IsisCDIBeanScanInterceptor implements Extension {
final Class<?> clazz = event.getAnnotatedType().getJavaClass();
final String className = clazz.getName();
- if(isTabu(clazz, event)) {
+ val logScope = className.startsWith("org.apache.isis.") ||
+ className.startsWith("domainapp.");
+
+ val isTabu = isTabu(clazz, event);
+
+ if(logScope) {
+ probe.println("processAnnotatedType(%s)", className);
+ }
+
+ if(isTabu) {
log.debug("veto type: " + className);
event.veto();
} else {
diff --git a/core/viewer-wicket-impl/src/main/java/org/apache/isis/viewer/wicket/viewer/services/LocaleProviderWicket.java b/core/viewer-wicket-impl/src/main/java/org/apache/isis/viewer/wicket/viewer/services/LocaleProviderWicket.java
index aa9d868..0b9ed20 100644
--- a/core/viewer-wicket-impl/src/main/java/org/apache/isis/viewer/wicket/viewer/services/LocaleProviderWicket.java
+++ b/core/viewer-wicket-impl/src/main/java/org/apache/isis/viewer/wicket/viewer/services/LocaleProviderWicket.java
@@ -19,29 +19,25 @@
package org.apache.isis.viewer.wicket.viewer.services;
import java.util.Locale;
+
+import javax.inject.Singleton;
+
+import org.apache.isis.applib.services.i18n.LocaleProvider;
import org.apache.wicket.Application;
import org.apache.wicket.Session;
import org.apache.wicket.request.cycle.RequestCycle;
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;
/**
* An implementation that provides the locale of the current session.
*/
-@DomainService(
- nature = NatureOfService.DOMAIN,
- menuOrder = "" + Integer.MAX_VALUE
- )
+@Singleton
public class LocaleProviderWicket implements LocaleProvider {
public static final Logger LOG = LoggerFactory.getLogger(LocaleProviderWicket.class);
- @Programmatic
@Override
public Locale getLocale() {
// Request Cycle can be null, e.g. during the start of an application
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 0d68991..9e2c238 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
@@ -25,33 +25,31 @@ import java.nio.file.Path;
import java.util.Collections;
import java.util.List;
import java.util.regex.Pattern;
+
+import javax.inject.Singleton;
import javax.servlet.ServletContext;
+
+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 org.slf4j.Logger;
+import org.slf4j.LoggerFactory;
+
import com.google.common.base.Charsets;
import com.google.common.base.Predicate;
import com.google.common.collect.ImmutableList;
import com.google.common.collect.Iterables;
-import org.apache.isis.commons.internal.collections._Lists;
-import org.apache.isis.config.WebAppConstants;
-
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.DomainService;
-import org.apache.isis.applib.annotation.NatureOfService;
-import org.apache.isis.applib.annotation.Programmatic;
-import org.apache.isis.applib.services.i18n.TranslationsResolver;
-import org.apache.isis.viewer.wicket.viewer.IsisWicketApplication;
/**
* An implementation that reads from /WEB-INF/...
*/
-@DomainService(
- nature = NatureOfService.DOMAIN,
- menuOrder = "" + Integer.MAX_VALUE
- )
+@Singleton
public class TranslationsResolverWicket implements TranslationsResolver {
public static Logger LOG = LoggerFactory.getLogger(TranslationsResolverWicket.class);