You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@isis.apache.org by da...@apache.org on 2019/12/07 08:02:33 UTC
[isis] 03/05: ISIS-2216: adds @Ordered and @Primary
This is an automated email from the ASF dual-hosted git repository.
danhaywood pushed a commit to branch master
in repository https://gitbox.apache.org/repos/asf/isis.git
commit 244b6d1cd52bfe0405aa05db7e2ed436943919f0
Author: danhaywood <da...@haywood-associates.co.uk>
AuthorDate: Fri Dec 6 17:01:59 2019 +0000
ISIS-2216: adds @Ordered and @Primary
---
.../isis/applib/annotation/OrderPrecedence.java | 58 ++++++++++++++++++++++
.../isis/applib/mixins/dto/DtoMappingHelper.java | 5 ++
.../services/audit/AuditerServiceLogging.java | 6 +++
.../isis/applib/services/clock/ClockService.java | 5 ++
.../applib/services/command/CommandContext.java | 5 ++
.../ContentMappingServiceForCommandDto.java | 7 ++-
.../ContentMappingServiceForCommandsDto.java | 5 ++
.../applib/services/iactn/InteractionContext.java | 5 ++
.../applib/services/jaxb/JaxbServiceDefault.java | 5 ++
.../services/publish/PublisherServiceLogging.java | 5 ++
.../QueryResultsCacheInternal.java | 5 ++
.../applib/services/scratchpad/Scratchpad.java | 5 ++
.../services/tablecol/TableColumnOrderService.java | 5 ++
.../UrlEncodingServiceWithCompression.java | 5 ++
.../environment/IsisSystemEnvironment.java | 6 ++-
.../config/viewer/wicket/WebAppConfiguration.java | 5 ++
.../objectmanager/ObjectManagerDefault.java | 5 ++
.../metamodel/services/ServiceInjectorDefault.java | 5 ++
.../appfeat/ApplicationFeatureFactory.java | 7 ++-
.../services/events/MetamodelEventService.java | 5 ++
.../exceprecog/ExceptionRecognizerDocDefault.java | 8 ++-
.../services/grid/GridLoaderServiceDefault.java | 5 ++
.../services/grid/GridReaderUsingJaxb.java | 5 ++
.../services/grid/GridServiceDefault.java | 5 ++
.../grid/bootstrap3/GridSystemServiceBS3.java | 5 ++
.../services/layout/LayoutServiceDefault.java | 5 ++
.../metamodel/MetaModelServiceDefault.java | 5 ++
.../services/registry/ServiceRegistryDefault.java | 5 ++
.../services/swagger/SwaggerServiceDefault.java | 5 ++
.../services/title/TitleServiceDefault.java | 5 ++
.../services/user/UserServiceDefault.java | 7 +++
.../specloader/InjectorMethodEvaluatorDefault.java | 5 ++
.../specloader/ProgrammingModelServiceDefault.java | 5 ++
.../specloader/SpecificationLoaderDefault.java | 5 ++
.../datanucleus/DataNucleusSettings.java | 8 +++
.../service/JdoPersistenceLifecycleService.java | 10 +++-
...eptionRecognizerCompositeForJdoObjectStore.java | 5 ++
.../datanucleus5/jdosupport/IsisJdoSupportDN5.java | 10 ++++
.../metrics/MetricsServiceDefault.java | 5 ++
.../IsisPlatformTransactionManagerForJdo.java | 11 +++-
.../persistence/PersistenceSessionFactory5.java | 11 +++-
.../auth/AuthenticationSessionProviderDefault.java | 5 ++
.../auth/AuthorizationManagerStandard.java | 5 ++
.../background/CommandExecutorServiceDefault.java | 5 ++
.../bookmarks/BookmarkServiceInternalDefault.java | 5 ++
.../command/CommandDtoServiceInternalDefault.java | 5 ++
.../services/command/CommandServiceDefault.java | 5 ++
.../confmenu/ConfigurationViewServiceDefault.java | 5 ++
.../services/email/EmailServiceDefault.java | 5 ++
.../services/eventbus/EventBusServiceSpring.java | 5 ++
.../services/factory/FactoryServiceDefault.java | 5 ++
.../homepage/HomePageResolverServiceDefault.java | 9 ++--
.../services/i18n/po/TranslationServicePo.java | 5 ++
.../ixn/InteractionDtoServiceInternalDefault.java | 5 ++
.../menubars/MenuBarsLoaderServiceDefault.java | 5 ++
.../menubars/bootstrap3/MenuBarsServiceBS3.java | 5 ++
.../services/message/MessageServiceDefault.java | 5 ++
.../publish/PublishingServiceInternalDefault.java | 7 ++-
.../sessmgmt/SessionManagementServiceDefault.java | 5 ++
.../runtime/services/sudo/SudoServiceDefault.java | 5 ++
.../userprof/UserProfileServiceDefault.java | 5 ++
.../userreg/EmailNotificationServiceDefault.java | 5 ++
.../services/wrapper/WrapperFactoryDefault.java | 5 ++
.../services/xactn/TransactionServiceSpring.java | 5 ++
.../xmlsnapshot/XmlSnapshotServiceDefault.java | 5 ++
.../context/session/RuntimeEventService.java | 8 +++
.../events/PersistenceEventService.java | 8 +++
.../persistence/events/TimestampService.java | 5 ++
.../system/session/IsisSessionFactoryDefault.java | 5 ++
.../transaction/AuditingServiceInternal.java | 7 +++
.../transaction/ChangedObjectsServiceInternal.java | 7 +++
.../standard/AuthenticationManagerStandard.java | 5 ++
.../keycloak/webmodule/WebModuleKeycloak.java | 8 ++-
.../security/shiro/webmodule/WebModuleShiro.java | 10 +++-
.../rendering/domainobjects/JsonValueEncoder.java | 12 ++++-
.../RepresentationServiceContentNegotiator.java | 10 ++++
.../acceptheader/AcceptHeaderServiceForRest.java | 5 ++
...entNegotiationServiceForRestfulObjectsV1_0.java | 5 ++
.../ContentNegotiationServiceOrgApacheIsisV1.java | 4 +-
.../ContentNegotiationServiceXRoDomainType.java | 8 ++-
.../viewer/webmodule/WebModuleRestfulObjects.java | 3 +-
.../themepicker/IsisWicketThemeSupportDefault.java | 10 +++-
.../ComponentFactoryRegistrarDefault.java | 11 ++++
.../ComponentFactoryRegistryDefault.java | 9 ++++
.../registries/pages/PageClassListDefault.java | 11 ++++
.../registries/pages/PageClassRegistryDefault.java | 10 ++++
.../pages/PageNavigationServiceDefault.java | 10 ++++
.../viewer/services/BookmarkUiServiceWicket.java | 5 ++
.../viewer/services/DeepLinkServiceWicket.java | 10 ++++
.../services/HintStoreUsingWicketSession.java | 5 ++
.../services/ImageResourceCacheClassPath.java | 10 ++++
.../viewer/services/LocaleProviderWicket.java | 11 ++++
.../services/TranslationsResolverWicket.java | 10 +++-
.../services/WicketViewerSettingsDefault.java | 9 ++++
.../mementos/ObjectMementoServiceWicket.java | 5 ++
.../wicket/viewer/webmodule/WebModuleWicket.java | 11 +++-
.../logonlog/WebModuleLogOnExceptionLogger.java | 8 ++-
.../templresources/WebModuleTemplateResources.java | 9 +++-
.../error/service/DemoErrorReportingService.java | 2 +
.../java/demoapp/dom/events/EventSubscriber.java | 2 +
.../main/java/demoapp/dom/jee/JeeDemoService.java | 6 +++
.../demoapp/utils/LibraryPreloadingService.java | 4 ++
102 files changed, 673 insertions(+), 25 deletions(-)
diff --git a/core/applib/src/main/java/org/apache/isis/applib/annotation/OrderPrecedence.java b/core/applib/src/main/java/org/apache/isis/applib/annotation/OrderPrecedence.java
new file mode 100644
index 0000000..c305158
--- /dev/null
+++ b/core/applib/src/main/java/org/apache/isis/applib/annotation/OrderPrecedence.java
@@ -0,0 +1,58 @@
+/*
+ * 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.applib.annotation;
+
+import lombok.experimental.UtilityClass;
+
+import org.springframework.core.Ordered;
+
+@UtilityClass
+public class OrderPrecedence {
+
+ /**
+ * Useful constant for the highest precedence value.
+ *
+ * @see java.lang.Integer#MIN_VALUE
+ * @see Ordered#HIGHEST_PRECEDENCE
+ */
+ public static final int HIGHEST = Ordered.HIGHEST_PRECEDENCE;
+
+ /**
+ * Useful constant for the lowest precedence value.
+ *
+ * @see java.lang.Integer#MAX_VALUE
+ * @see Ordered#LOWEST_PRECEDENCE
+ */
+ public static final int LOWEST = Ordered.LOWEST_PRECEDENCE;
+
+ /**
+ * Used by framework services that are unlikely to be overridden by application code.
+ */
+ public static final int HIGH = HIGHEST / 2;
+ /**
+ * Used by framework services that could be overridden by application code (though not commonly).
+ */
+ public static final int DEFAULT = 0;
+ /**
+ * Used by framework services that are expected to be overridden by application code, or that act as a fallback.
+ */
+ public static final int LOW = OrderPrecedence.LOWEST / 2;
+
+}
\ No newline at end of file
diff --git a/core/applib/src/main/java/org/apache/isis/applib/mixins/dto/DtoMappingHelper.java b/core/applib/src/main/java/org/apache/isis/applib/mixins/dto/DtoMappingHelper.java
index 6f25302..ecdc02f 100644
--- a/core/applib/src/main/java/org/apache/isis/applib/mixins/dto/DtoMappingHelper.java
+++ b/core/applib/src/main/java/org/apache/isis/applib/mixins/dto/DtoMappingHelper.java
@@ -25,15 +25,20 @@ import javax.inject.Named;
import org.apache.isis.applib.annotation.DomainService;
import org.apache.isis.applib.annotation.NatureOfService;
+import org.apache.isis.applib.annotation.OrderPrecedence;
import org.apache.isis.applib.services.bookmark.Bookmark;
import org.apache.isis.applib.services.bookmark.BookmarkService;
import org.apache.isis.commons.internal.exceptions._Exceptions;
import org.apache.isis.schema.common.v1.BookmarkObjectState;
import org.apache.isis.schema.common.v1.OidDto;
+import org.springframework.context.annotation.Primary;
+import org.springframework.core.annotation.Order;
import org.springframework.stereotype.Service;
@Service
@Named("isisApplib.DtoMappingHelper")
+@Order(OrderPrecedence.DEFAULT)
+@Primary
@Log4j2
public class DtoMappingHelper {
diff --git a/core/applib/src/main/java/org/apache/isis/applib/services/audit/AuditerServiceLogging.java b/core/applib/src/main/java/org/apache/isis/applib/services/audit/AuditerServiceLogging.java
index 681bcc0..b5291ee 100644
--- a/core/applib/src/main/java/org/apache/isis/applib/services/audit/AuditerServiceLogging.java
+++ b/core/applib/src/main/java/org/apache/isis/applib/services/audit/AuditerServiceLogging.java
@@ -24,7 +24,10 @@ import java.util.UUID;
import javax.annotation.PostConstruct;
import javax.inject.Named;
+import org.apache.isis.applib.annotation.OrderPrecedence;
import org.springframework.beans.factory.annotation.Qualifier;
+import org.springframework.context.annotation.Primary;
+import org.springframework.core.annotation.Order;
import org.springframework.stereotype.Service;
import org.apache.isis.applib.services.bookmark.Bookmark;
@@ -33,6 +36,9 @@ import lombok.extern.log4j.Log4j2;
@Service
@Named("isisApplib.AuditerServiceLogging")
+@Order(OrderPrecedence.LOW)
+@Primary
+@Qualifier("logging")
@Log4j2
public class AuditerServiceLogging implements AuditerService {
diff --git a/core/applib/src/main/java/org/apache/isis/applib/services/clock/ClockService.java b/core/applib/src/main/java/org/apache/isis/applib/services/clock/ClockService.java
index 88118d7..62ada44 100644
--- a/core/applib/src/main/java/org/apache/isis/applib/services/clock/ClockService.java
+++ b/core/applib/src/main/java/org/apache/isis/applib/services/clock/ClockService.java
@@ -27,6 +27,9 @@ import java.time.OffsetDateTime;
import javax.inject.Named;
+import org.apache.isis.applib.annotation.OrderPrecedence;
+import org.springframework.context.annotation.Primary;
+import org.springframework.core.annotation.Order;
import org.springframework.stereotype.Service;
import org.apache.isis.applib.clock.Clock;
@@ -39,6 +42,8 @@ import org.apache.isis.applib.clock.Clock;
*/
@Service
@Named("isisApplib.ClockService")
+@Order(OrderPrecedence.DEFAULT)
+@Primary
@Log4j2
public class ClockService {
diff --git a/core/applib/src/main/java/org/apache/isis/applib/services/command/CommandContext.java b/core/applib/src/main/java/org/apache/isis/applib/services/command/CommandContext.java
index 64fab8c..00d2d37 100644
--- a/core/applib/src/main/java/org/apache/isis/applib/services/command/CommandContext.java
+++ b/core/applib/src/main/java/org/apache/isis/applib/services/command/CommandContext.java
@@ -23,6 +23,9 @@ import lombok.extern.log4j.Log4j2;
import javax.enterprise.context.RequestScoped;
import javax.inject.Named;
+import org.apache.isis.applib.annotation.OrderPrecedence;
+import org.springframework.context.annotation.Primary;
+import org.springframework.core.annotation.Order;
import org.springframework.stereotype.Component;
import org.springframework.stereotype.Service;
@@ -36,6 +39,8 @@ import org.springframework.stereotype.Service;
@Service
@Named("isisApplib.CommandContext")
@RequestScoped
+@Order(OrderPrecedence.DEFAULT)
+@Primary
@Log4j2
public class CommandContext {
diff --git a/core/applib/src/main/java/org/apache/isis/applib/services/conmap/command/ContentMappingServiceForCommandDto.java b/core/applib/src/main/java/org/apache/isis/applib/services/conmap/command/ContentMappingServiceForCommandDto.java
index 7aa68b7..eae9098 100644
--- a/core/applib/src/main/java/org/apache/isis/applib/services/conmap/command/ContentMappingServiceForCommandDto.java
+++ b/core/applib/src/main/java/org/apache/isis/applib/services/conmap/command/ContentMappingServiceForCommandDto.java
@@ -27,6 +27,8 @@ import javax.inject.Inject;
import javax.inject.Named;
import javax.ws.rs.core.MediaType;
+import org.apache.isis.applib.annotation.OrderPrecedence;
+import org.springframework.context.annotation.Primary;
import org.springframework.core.annotation.Order;
import org.apache.isis.applib.annotation.DomainService;
@@ -46,6 +48,8 @@ import org.springframework.stereotype.Service;
@Service
@Named("isisApplib.ContentMappingServiceForCommandDto")
+@Order(OrderPrecedence.HIGH)
+@Primary
@Log4j2
public class ContentMappingServiceForCommandDto implements ContentMappingService {
@@ -106,7 +110,8 @@ public class ContentMappingServiceForCommandDto implements ContentMappingService
@Named("isisApplib.ContentMappingServiceForCommandDto.CopyOverFromCommand")
// specify quite a high priority since custom processors will probably want to run after this one
// (but can choose to run before if they wish)
- @Order(-1000)
+ @Order(OrderPrecedence.HIGH)
+ @Primary
@Log4j2
public static class CopyOverFromCommand implements CommandDtoProcessorService {
diff --git a/core/applib/src/main/java/org/apache/isis/applib/services/conmap/command/ContentMappingServiceForCommandsDto.java b/core/applib/src/main/java/org/apache/isis/applib/services/conmap/command/ContentMappingServiceForCommandsDto.java
index 9729302..af81fe8 100644
--- a/core/applib/src/main/java/org/apache/isis/applib/services/conmap/command/ContentMappingServiceForCommandsDto.java
+++ b/core/applib/src/main/java/org/apache/isis/applib/services/conmap/command/ContentMappingServiceForCommandsDto.java
@@ -28,13 +28,18 @@ import javax.ws.rs.core.MediaType;
import org.apache.isis.applib.annotation.DomainService;
import org.apache.isis.applib.annotation.NatureOfService;
+import org.apache.isis.applib.annotation.OrderPrecedence;
import org.apache.isis.applib.services.conmap.ContentMappingService;
import org.apache.isis.schema.cmd.v1.CommandDto;
import org.apache.isis.schema.cmd.v1.CommandsDto;
+import org.springframework.context.annotation.Primary;
+import org.springframework.core.annotation.Order;
import org.springframework.stereotype.Service;
@Service
@Named("isisApplib.ContentMappingServiceForCommandsDto")
+@Order(OrderPrecedence.HIGH)
+@Primary
@Log4j2
public class ContentMappingServiceForCommandsDto implements ContentMappingService {
diff --git a/core/applib/src/main/java/org/apache/isis/applib/services/iactn/InteractionContext.java b/core/applib/src/main/java/org/apache/isis/applib/services/iactn/InteractionContext.java
index 9e9726c..68e2591 100644
--- a/core/applib/src/main/java/org/apache/isis/applib/services/iactn/InteractionContext.java
+++ b/core/applib/src/main/java/org/apache/isis/applib/services/iactn/InteractionContext.java
@@ -23,6 +23,9 @@ import lombok.extern.log4j.Log4j2;
import javax.enterprise.context.RequestScoped;
import javax.inject.Named;
+import org.apache.isis.applib.annotation.OrderPrecedence;
+import org.springframework.context.annotation.Primary;
+import org.springframework.core.annotation.Order;
import org.springframework.stereotype.Service;
import org.apache.isis.applib.annotation.DomainService;
@@ -36,6 +39,8 @@ import org.apache.isis.applib.annotation.DomainService;
*/
@Service
@Named("isisApplib.InteractionContext")
+@Order(OrderPrecedence.DEFAULT)
+@Primary
@RequestScoped
@Log4j2
public class InteractionContext {
diff --git a/core/applib/src/main/java/org/apache/isis/applib/services/jaxb/JaxbServiceDefault.java b/core/applib/src/main/java/org/apache/isis/applib/services/jaxb/JaxbServiceDefault.java
index a03e9c9..55185c7 100644
--- a/core/applib/src/main/java/org/apache/isis/applib/services/jaxb/JaxbServiceDefault.java
+++ b/core/applib/src/main/java/org/apache/isis/applib/services/jaxb/JaxbServiceDefault.java
@@ -30,6 +30,9 @@ import javax.xml.bind.Marshaller;
import javax.xml.bind.Unmarshaller;
import javax.xml.bind.annotation.adapters.XmlJavaTypeAdapter;
+import org.apache.isis.applib.annotation.OrderPrecedence;
+import org.springframework.context.annotation.Primary;
+import org.springframework.core.annotation.Order;
import org.springframework.stereotype.Service;
import org.apache.isis.applib.NonRecoverableException;
@@ -42,6 +45,8 @@ import org.apache.isis.applib.jaxbadapters.PersistentEntityAdapter;
@Service
@Named("isisApplib.JaxbServiceDefault")
+@Order(OrderPrecedence.DEFAULT)
+@Primary
@Log4j2
public class JaxbServiceDefault extends JaxbService.Simple {
diff --git a/core/applib/src/main/java/org/apache/isis/applib/services/publish/PublisherServiceLogging.java b/core/applib/src/main/java/org/apache/isis/applib/services/publish/PublisherServiceLogging.java
index 8d87040..0fc2d2f 100644
--- a/core/applib/src/main/java/org/apache/isis/applib/services/publish/PublisherServiceLogging.java
+++ b/core/applib/src/main/java/org/apache/isis/applib/services/publish/PublisherServiceLogging.java
@@ -18,6 +18,9 @@
*/
package org.apache.isis.applib.services.publish;
+import org.apache.isis.applib.annotation.OrderPrecedence;
+import org.springframework.context.annotation.Primary;
+import org.springframework.core.annotation.Order;
import org.springframework.stereotype.Service;
import org.apache.isis.applib.services.iactn.Interaction;
@@ -32,6 +35,8 @@ import javax.inject.Named;
@Service
@Named("isisApplib.PublisherServiceLogging")
+@Order(OrderPrecedence.LOW)
+@Primary
@Log4j2
public class PublisherServiceLogging implements PublisherService {
diff --git a/core/applib/src/main/java/org/apache/isis/applib/services/queryresultscache/QueryResultsCacheInternal.java b/core/applib/src/main/java/org/apache/isis/applib/services/queryresultscache/QueryResultsCacheInternal.java
index fa88193..a578c6d 100644
--- a/core/applib/src/main/java/org/apache/isis/applib/services/queryresultscache/QueryResultsCacheInternal.java
+++ b/core/applib/src/main/java/org/apache/isis/applib/services/queryresultscache/QueryResultsCacheInternal.java
@@ -24,6 +24,7 @@ import java.util.concurrent.Callable;
import javax.enterprise.context.RequestScoped;
import javax.inject.Named;
+import org.apache.isis.applib.annotation.OrderPrecedence;
import org.springframework.beans.factory.annotation.Autowired;
import org.apache.isis.applib.annotation.DomainService;
@@ -32,6 +33,8 @@ import org.apache.isis.applib.services.WithTransactionScope;
import org.apache.isis.commons.internal.base._Casts;
import org.apache.isis.commons.internal.base._NullSafe;
import org.apache.isis.commons.internal.collections._Maps;
+import org.springframework.context.annotation.Primary;
+import org.springframework.core.annotation.Order;
import org.springframework.stereotype.Service;
import lombok.extern.log4j.Log4j2;
@@ -48,6 +51,8 @@ import lombok.extern.log4j.Log4j2;
*/
@Service
@Named("isisApplib.QueryResultsCacheInternal")
+@Order(OrderPrecedence.HIGH)
+@Primary
@RequestScoped
@Log4j2
public class QueryResultsCacheInternal implements QueryResultsCache, WithTransactionScope {
diff --git a/core/applib/src/main/java/org/apache/isis/applib/services/scratchpad/Scratchpad.java b/core/applib/src/main/java/org/apache/isis/applib/services/scratchpad/Scratchpad.java
index 0b17e50..a9ba852 100644
--- a/core/applib/src/main/java/org/apache/isis/applib/services/scratchpad/Scratchpad.java
+++ b/core/applib/src/main/java/org/apache/isis/applib/services/scratchpad/Scratchpad.java
@@ -27,7 +27,10 @@ import javax.inject.Named;
import org.apache.isis.applib.annotation.DomainService;
import org.apache.isis.applib.annotation.NatureOfService;
+import org.apache.isis.applib.annotation.OrderPrecedence;
import org.apache.isis.commons.internal.collections._Maps;
+import org.springframework.context.annotation.Primary;
+import org.springframework.core.annotation.Order;
import org.springframework.stereotype.Service;
/**
@@ -42,6 +45,8 @@ import org.springframework.stereotype.Service;
*/
@Service
@RequestScoped
+@Order(OrderPrecedence.HIGH)
+@Primary
@Named("isisApplib.Scratchpad")
@Log4j2
public class Scratchpad {
diff --git a/core/applib/src/main/java/org/apache/isis/applib/services/tablecol/TableColumnOrderService.java b/core/applib/src/main/java/org/apache/isis/applib/services/tablecol/TableColumnOrderService.java
index 23bd1b8..dcf8ac1 100644
--- a/core/applib/src/main/java/org/apache/isis/applib/services/tablecol/TableColumnOrderService.java
+++ b/core/applib/src/main/java/org/apache/isis/applib/services/tablecol/TableColumnOrderService.java
@@ -26,6 +26,9 @@ import javax.inject.Named;
import org.apache.isis.applib.annotation.DomainService;
import org.apache.isis.applib.annotation.NatureOfService;
+import org.apache.isis.applib.annotation.OrderPrecedence;
+import org.springframework.context.annotation.Primary;
+import org.springframework.core.annotation.Order;
import org.springframework.stereotype.Service;
public interface TableColumnOrderService {
@@ -45,6 +48,8 @@ public interface TableColumnOrderService {
*/
@Service
@Named("isisApplib.TableColumnOrderService.Default")
+ @Order(OrderPrecedence.LOW)
+ @Primary
@Log4j2
public static class Default implements TableColumnOrderService {
diff --git a/core/applib/src/main/java/org/apache/isis/applib/services/urlencoding/UrlEncodingServiceWithCompression.java b/core/applib/src/main/java/org/apache/isis/applib/services/urlencoding/UrlEncodingServiceWithCompression.java
index 5e9fb3b..ea498e4 100644
--- a/core/applib/src/main/java/org/apache/isis/applib/services/urlencoding/UrlEncodingServiceWithCompression.java
+++ b/core/applib/src/main/java/org/apache/isis/applib/services/urlencoding/UrlEncodingServiceWithCompression.java
@@ -26,12 +26,17 @@ import javax.inject.Named;
import org.apache.isis.applib.annotation.DomainService;
import org.apache.isis.applib.annotation.NatureOfService;
+import org.apache.isis.applib.annotation.OrderPrecedence;
import org.apache.isis.commons.internal.base._Bytes;
import org.apache.isis.commons.internal.base._Strings;
+import org.springframework.context.annotation.Primary;
+import org.springframework.core.annotation.Order;
import org.springframework.stereotype.Service;
@Service
@Named("isisApplib.UrlEncodingServiceWithCompression")
+@Order(OrderPrecedence.DEFAULT)
+@Primary
@Log4j2
public class UrlEncodingServiceWithCompression implements UrlEncodingService {
diff --git a/core/commons/src/main/java/org/apache/isis/commons/internal/environment/IsisSystemEnvironment.java b/core/commons/src/main/java/org/apache/isis/commons/internal/environment/IsisSystemEnvironment.java
index 1304639..b0ed9c9 100644
--- a/core/commons/src/main/java/org/apache/isis/commons/internal/environment/IsisSystemEnvironment.java
+++ b/core/commons/src/main/java/org/apache/isis/commons/internal/environment/IsisSystemEnvironment.java
@@ -25,9 +25,11 @@ import javax.inject.Named;
import javax.inject.Singleton;
import org.springframework.context.ApplicationContext;
+import org.springframework.context.annotation.Primary;
import org.springframework.context.event.ContextClosedEvent;
import org.springframework.context.event.ContextRefreshedEvent;
import org.springframework.context.event.EventListener;
+import org.springframework.core.annotation.Order;
import org.springframework.stereotype.Service;
import org.apache.isis.commons.internal.context._Context;
@@ -46,8 +48,10 @@ import lombok.extern.log4j.Log4j2;
* @implNote acts as the framework's bootstrapping entry-point for Spring
*/
@Service
-@Singleton
@Named("isisCommons.IsisSystemEnvironment")
+@Order(-1_073_741_824) // same as OrderedPrecedence#HIGH
+@Primary
+@Singleton
@Log4j2
public class IsisSystemEnvironment {
diff --git a/core/config/src/main/java/org/apache/isis/config/viewer/wicket/WebAppConfiguration.java b/core/config/src/main/java/org/apache/isis/config/viewer/wicket/WebAppConfiguration.java
index 41de174..1a420ba 100644
--- a/core/config/src/main/java/org/apache/isis/config/viewer/wicket/WebAppConfiguration.java
+++ b/core/config/src/main/java/org/apache/isis/config/viewer/wicket/WebAppConfiguration.java
@@ -25,6 +25,9 @@ import javax.inject.Inject;
import javax.inject.Named;
import javax.inject.Singleton;
+import org.apache.isis.applib.annotation.OrderPrecedence;
+import org.springframework.context.annotation.Primary;
+import org.springframework.core.annotation.Order;
import org.springframework.core.io.AbstractResource;
import org.springframework.core.io.ClassPathResource;
import org.springframework.stereotype.Service;
@@ -42,6 +45,8 @@ import lombok.val;
@Service
@Singleton
@Named("isisConfig.WebAppConfiguration")
+@Order(OrderPrecedence.DEFAULT)
+@Primary
@Log4j2
public class WebAppConfiguration {
diff --git a/core/metamodel/src/main/java/org/apache/isis/metamodel/objectmanager/ObjectManagerDefault.java b/core/metamodel/src/main/java/org/apache/isis/metamodel/objectmanager/ObjectManagerDefault.java
index 71ad5f3..df62b04 100644
--- a/core/metamodel/src/main/java/org/apache/isis/metamodel/objectmanager/ObjectManagerDefault.java
+++ b/core/metamodel/src/main/java/org/apache/isis/metamodel/objectmanager/ObjectManagerDefault.java
@@ -22,6 +22,9 @@ import javax.annotation.PostConstruct;
import javax.inject.Inject;
import javax.inject.Named;
+import org.apache.isis.applib.annotation.OrderPrecedence;
+import org.springframework.context.annotation.Primary;
+import org.springframework.core.annotation.Order;
import org.springframework.stereotype.Service;
import org.apache.isis.metamodel.context.MetaModelContext;
@@ -41,6 +44,8 @@ import lombok.val;
*/
@Service
@Named("isisMetaModel.ObjectManagerDefault")
+@Order(OrderPrecedence.HIGH)
+@Primary
@Log4j2
public class ObjectManagerDefault implements ObjectManager {
diff --git a/core/metamodel/src/main/java/org/apache/isis/metamodel/services/ServiceInjectorDefault.java b/core/metamodel/src/main/java/org/apache/isis/metamodel/services/ServiceInjectorDefault.java
index 42afb6d..c3f57f0 100644
--- a/core/metamodel/src/main/java/org/apache/isis/metamodel/services/ServiceInjectorDefault.java
+++ b/core/metamodel/src/main/java/org/apache/isis/metamodel/services/ServiceInjectorDefault.java
@@ -25,8 +25,11 @@ import java.util.function.Consumer;
import javax.inject.Inject;
import javax.inject.Named;
+import org.apache.isis.applib.annotation.OrderPrecedence;
import org.springframework.beans.factory.InjectionPoint;
import org.springframework.beans.factory.config.AutowireCapableBeanFactory;
+import org.springframework.context.annotation.Primary;
+import org.springframework.core.annotation.Order;
import org.springframework.stereotype.Service;
import org.apache.isis.applib.services.inject.ServiceInjector;
@@ -38,6 +41,8 @@ import org.apache.isis.applib.services.inject.ServiceInjector;
*/
@Service
@Named("isisMetaModel.ServiceInjectorDefault")
+@Order(OrderPrecedence.HIGH)
+@Primary
@Log4j2
public class ServiceInjectorDefault implements ServiceInjector {
diff --git a/core/metamodel/src/main/java/org/apache/isis/metamodel/services/appfeat/ApplicationFeatureFactory.java b/core/metamodel/src/main/java/org/apache/isis/metamodel/services/appfeat/ApplicationFeatureFactory.java
index 39b013a..fa662e8 100644
--- a/core/metamodel/src/main/java/org/apache/isis/metamodel/services/appfeat/ApplicationFeatureFactory.java
+++ b/core/metamodel/src/main/java/org/apache/isis/metamodel/services/appfeat/ApplicationFeatureFactory.java
@@ -23,13 +23,18 @@ import lombok.extern.log4j.Log4j2;
import javax.inject.Inject;
import javax.inject.Named;
+import org.apache.isis.applib.annotation.OrderPrecedence;
+import org.springframework.context.annotation.Primary;
+import org.springframework.core.annotation.Order;
import org.springframework.stereotype.Service;
import org.apache.isis.applib.services.factory.FactoryService;
@Service
-@Log4j2
@Named("isisMetaModel.ApplicationFeatureFactory")
+@Order(OrderPrecedence.DEFAULT)
+@Primary
+@Log4j2
public class ApplicationFeatureFactory {
public ApplicationFeature newApplicationFeature() {
diff --git a/core/metamodel/src/main/java/org/apache/isis/metamodel/services/events/MetamodelEventService.java b/core/metamodel/src/main/java/org/apache/isis/metamodel/services/events/MetamodelEventService.java
index 448de73..69146fa 100644
--- a/core/metamodel/src/main/java/org/apache/isis/metamodel/services/events/MetamodelEventService.java
+++ b/core/metamodel/src/main/java/org/apache/isis/metamodel/services/events/MetamodelEventService.java
@@ -23,6 +23,9 @@ import javax.inject.Inject;
import javax.inject.Named;
import javax.inject.Singleton;
+import org.apache.isis.applib.annotation.OrderPrecedence;
+import org.springframework.context.annotation.Primary;
+import org.springframework.core.annotation.Order;
import org.springframework.stereotype.Service;
import org.apache.isis.applib.events.domain.ActionDomainEvent;
@@ -43,6 +46,8 @@ import lombok.extern.log4j.Log4j2;
*/
@Service
@Named("isisMetaModel.MetamodelEventService")
+@Order(OrderPrecedence.DEFAULT)
+@Primary
@Log4j2
@Builder //for JUnit Test support
public class MetamodelEventService {
diff --git a/core/metamodel/src/main/java/org/apache/isis/metamodel/services/exceprecog/ExceptionRecognizerDocDefault.java b/core/metamodel/src/main/java/org/apache/isis/metamodel/services/exceprecog/ExceptionRecognizerDocDefault.java
index 459e2b7..9d2ff41 100644
--- a/core/metamodel/src/main/java/org/apache/isis/metamodel/services/exceprecog/ExceptionRecognizerDocDefault.java
+++ b/core/metamodel/src/main/java/org/apache/isis/metamodel/services/exceprecog/ExceptionRecognizerDocDefault.java
@@ -26,6 +26,9 @@ import javax.annotation.PreDestroy;
import javax.inject.Inject;
import javax.inject.Named;
+import org.apache.isis.applib.annotation.OrderPrecedence;
+import org.springframework.context.annotation.Primary;
+import org.springframework.core.annotation.Order;
import org.springframework.stereotype.Service;
import org.apache.isis.applib.RecoverableException;
@@ -36,6 +39,8 @@ import org.apache.isis.applib.services.inject.ServiceInjector;
@Service
@Named("isisMetaModel.ExceptionRecognizerDocDefault")
+@Order(OrderPrecedence.DEFAULT)
+@Primary
@Log4j2
public class ExceptionRecognizerDocDefault
implements ExceptionRecognizer {
@@ -69,8 +74,7 @@ implements ExceptionRecognizer {
/**
* Framework-provided implementation of {@link ExceptionRecognizer},
- * which will automatically recognize any {@link org.apache.isis.applib.RecoverableException}s or
- * any {@link ConcurrencyException}s.
+ * which will automatically recognize any {@link org.apache.isis.applib.RecoverableException}s.
*/
@Override
public String recognize(Throwable ex) {
diff --git a/core/metamodel/src/main/java/org/apache/isis/metamodel/services/grid/GridLoaderServiceDefault.java b/core/metamodel/src/main/java/org/apache/isis/metamodel/services/grid/GridLoaderServiceDefault.java
index 3f9f563..2712bca 100644
--- a/core/metamodel/src/main/java/org/apache/isis/metamodel/services/grid/GridLoaderServiceDefault.java
+++ b/core/metamodel/src/main/java/org/apache/isis/metamodel/services/grid/GridLoaderServiceDefault.java
@@ -28,6 +28,9 @@ import javax.inject.Inject;
import javax.inject.Named;
import javax.inject.Singleton;
+import org.apache.isis.applib.annotation.OrderPrecedence;
+import org.springframework.context.annotation.Primary;
+import org.springframework.core.annotation.Order;
import org.springframework.stereotype.Service;
import org.apache.isis.applib.layout.grid.Grid;
@@ -43,6 +46,8 @@ import lombok.extern.log4j.Log4j2;
@Service
@Named("isisMetaModel.GridLoaderServiceDefault")
+@Order(OrderPrecedence.DEFAULT)
+@Primary
@Log4j2
public class GridLoaderServiceDefault implements GridLoaderService {
diff --git a/core/metamodel/src/main/java/org/apache/isis/metamodel/services/grid/GridReaderUsingJaxb.java b/core/metamodel/src/main/java/org/apache/isis/metamodel/services/grid/GridReaderUsingJaxb.java
index 956b745..dab5043 100644
--- a/core/metamodel/src/main/java/org/apache/isis/metamodel/services/grid/GridReaderUsingJaxb.java
+++ b/core/metamodel/src/main/java/org/apache/isis/metamodel/services/grid/GridReaderUsingJaxb.java
@@ -28,6 +28,9 @@ import javax.inject.Named;
import javax.xml.bind.JAXBContext;
import javax.xml.bind.JAXBException;
+import org.apache.isis.applib.annotation.OrderPrecedence;
+import org.springframework.context.annotation.Primary;
+import org.springframework.core.annotation.Order;
import org.springframework.stereotype.Service;
import org.apache.isis.applib.layout.grid.Grid;
@@ -43,6 +46,8 @@ import org.apache.isis.commons.internal.collections._Arrays;
*/
@Service
@Named("isisMetaModel.GridReaderUsingJaxb")
+@Order(OrderPrecedence.DEFAULT)
+@Primary
@Log4j2
public class GridReaderUsingJaxb {
diff --git a/core/metamodel/src/main/java/org/apache/isis/metamodel/services/grid/GridServiceDefault.java b/core/metamodel/src/main/java/org/apache/isis/metamodel/services/grid/GridServiceDefault.java
index 9d42ef4..4b05e8a 100644
--- a/core/metamodel/src/main/java/org/apache/isis/metamodel/services/grid/GridServiceDefault.java
+++ b/core/metamodel/src/main/java/org/apache/isis/metamodel/services/grid/GridServiceDefault.java
@@ -27,6 +27,9 @@ import javax.inject.Inject;
import javax.inject.Named;
import javax.inject.Singleton;
+import org.apache.isis.applib.annotation.OrderPrecedence;
+import org.springframework.context.annotation.Primary;
+import org.springframework.core.annotation.Order;
import org.springframework.stereotype.Service;
import org.apache.isis.applib.layout.grid.Grid;
@@ -39,6 +42,8 @@ import org.apache.isis.commons.internal.collections._Lists;
@Service
@Named("isisMetaModel.GridServiceDefault")
+@Order(OrderPrecedence.DEFAULT)
+@Primary
@Log4j2
public class GridServiceDefault implements GridService {
diff --git a/core/metamodel/src/main/java/org/apache/isis/metamodel/services/grid/bootstrap3/GridSystemServiceBS3.java b/core/metamodel/src/main/java/org/apache/isis/metamodel/services/grid/bootstrap3/GridSystemServiceBS3.java
index 66a82cb..f0d4169 100644
--- a/core/metamodel/src/main/java/org/apache/isis/metamodel/services/grid/bootstrap3/GridSystemServiceBS3.java
+++ b/core/metamodel/src/main/java/org/apache/isis/metamodel/services/grid/bootstrap3/GridSystemServiceBS3.java
@@ -30,6 +30,9 @@ import javax.inject.Inject;
import javax.inject.Named;
import javax.inject.Singleton;
+import org.apache.isis.applib.annotation.OrderPrecedence;
+import org.springframework.context.annotation.Primary;
+import org.springframework.core.annotation.Order;
import org.springframework.stereotype.Service;
import org.apache.isis.applib.annotation.ActionLayout;
@@ -73,6 +76,8 @@ import lombok.val;
@Service
@Named("isisMetaModel.GridSystemServiceBS3")
+@Order(OrderPrecedence.DEFAULT)
+@Primary
@Log4j2
public class GridSystemServiceBS3 extends GridSystemServiceAbstract<BS3Grid> {
diff --git a/core/metamodel/src/main/java/org/apache/isis/metamodel/services/layout/LayoutServiceDefault.java b/core/metamodel/src/main/java/org/apache/isis/metamodel/services/layout/LayoutServiceDefault.java
index 6b454a9..9904399 100644
--- a/core/metamodel/src/main/java/org/apache/isis/metamodel/services/layout/LayoutServiceDefault.java
+++ b/core/metamodel/src/main/java/org/apache/isis/metamodel/services/layout/LayoutServiceDefault.java
@@ -26,6 +26,9 @@ import javax.inject.Inject;
import javax.inject.Named;
import javax.xml.bind.Marshaller;
+import org.apache.isis.applib.annotation.OrderPrecedence;
+import org.springframework.context.annotation.Primary;
+import org.springframework.core.annotation.Order;
import org.springframework.stereotype.Service;
import org.apache.isis.applib.layout.grid.Grid;
@@ -46,6 +49,8 @@ import lombok.val;
@Service
@Named("isisMetaModel.LayoutServiceDefault")
+@Order(OrderPrecedence.DEFAULT)
+@Primary
@Log4j2
public class LayoutServiceDefault implements LayoutService {
diff --git a/core/metamodel/src/main/java/org/apache/isis/metamodel/services/metamodel/MetaModelServiceDefault.java b/core/metamodel/src/main/java/org/apache/isis/metamodel/services/metamodel/MetaModelServiceDefault.java
index dab539a..f850c90 100644
--- a/core/metamodel/src/main/java/org/apache/isis/metamodel/services/metamodel/MetaModelServiceDefault.java
+++ b/core/metamodel/src/main/java/org/apache/isis/metamodel/services/metamodel/MetaModelServiceDefault.java
@@ -29,6 +29,9 @@ import javax.annotation.PostConstruct;
import javax.inject.Inject;
import javax.inject.Named;
+import org.apache.isis.applib.annotation.OrderPrecedence;
+import org.springframework.context.annotation.Primary;
+import org.springframework.core.annotation.Order;
import org.springframework.stereotype.Service;
import org.apache.isis.applib.services.bookmark.Bookmark;
@@ -57,6 +60,8 @@ import org.apache.isis.schema.metamodel.v1.MetamodelDto;
@Service
@Named("isisMetaModel.MetaModelServiceDefault")
+@Order(OrderPrecedence.DEFAULT)
+@Primary
@Log4j2
public class MetaModelServiceDefault implements MetaModelService {
diff --git a/core/metamodel/src/main/java/org/apache/isis/metamodel/services/registry/ServiceRegistryDefault.java b/core/metamodel/src/main/java/org/apache/isis/metamodel/services/registry/ServiceRegistryDefault.java
index 32f8648..9d9bc94 100644
--- a/core/metamodel/src/main/java/org/apache/isis/metamodel/services/registry/ServiceRegistryDefault.java
+++ b/core/metamodel/src/main/java/org/apache/isis/metamodel/services/registry/ServiceRegistryDefault.java
@@ -29,6 +29,7 @@ import javax.inject.Named;
import org.apache.isis.applib.annotation.DomainService;
import org.apache.isis.applib.annotation.NatureOfService;
+import org.apache.isis.applib.annotation.OrderPrecedence;
import org.apache.isis.applib.services.registry.ServiceRegistry;
import org.apache.isis.commons.collections.Can;
import org.apache.isis.commons.internal.base._Lazy;
@@ -38,6 +39,8 @@ import org.apache.isis.commons.internal.environment.IsisSystemEnvironment;
import org.apache.isis.commons.internal.ioc.ManagedBeanAdapter;
import org.apache.isis.commons.internal.ioc.spring._Spring;
import org.apache.isis.config.beans.IsisBeanTypeRegistryHolder;
+import org.springframework.context.annotation.Primary;
+import org.springframework.core.annotation.Order;
import org.springframework.stereotype.Service;
import lombok.extern.log4j.Log4j2;
@@ -48,6 +51,8 @@ import lombok.val;
*/
@Service
@Named("isisMetaModel.ServiceRegistryDefault")
+@Order(OrderPrecedence.DEFAULT)
+@Primary
@Log4j2
public final class ServiceRegistryDefault implements ServiceRegistry {
diff --git a/core/metamodel/src/main/java/org/apache/isis/metamodel/services/swagger/SwaggerServiceDefault.java b/core/metamodel/src/main/java/org/apache/isis/metamodel/services/swagger/SwaggerServiceDefault.java
index 634c926..1b0d52f 100644
--- a/core/metamodel/src/main/java/org/apache/isis/metamodel/services/swagger/SwaggerServiceDefault.java
+++ b/core/metamodel/src/main/java/org/apache/isis/metamodel/services/swagger/SwaggerServiceDefault.java
@@ -23,6 +23,9 @@ import lombok.extern.log4j.Log4j2;
import javax.inject.Inject;
import javax.inject.Named;
+import org.apache.isis.applib.annotation.OrderPrecedence;
+import org.springframework.context.annotation.Primary;
+import org.springframework.core.annotation.Order;
import org.springframework.stereotype.Service;
import org.apache.isis.applib.services.swagger.SwaggerService;
@@ -37,6 +40,8 @@ import static org.apache.isis.commons.internal.resources._Resources.prependConte
@Service
@Named("isisMetaModel.swaggerServiceDefault")
+@Order(OrderPrecedence.DEFAULT)
+@Primary
@Log4j2
public class SwaggerServiceDefault implements SwaggerService {
diff --git a/core/metamodel/src/main/java/org/apache/isis/metamodel/services/title/TitleServiceDefault.java b/core/metamodel/src/main/java/org/apache/isis/metamodel/services/title/TitleServiceDefault.java
index 15ad22b..3837d6f 100644
--- a/core/metamodel/src/main/java/org/apache/isis/metamodel/services/title/TitleServiceDefault.java
+++ b/core/metamodel/src/main/java/org/apache/isis/metamodel/services/title/TitleServiceDefault.java
@@ -22,6 +22,9 @@ package org.apache.isis.metamodel.services.title;
import javax.inject.Inject;
import javax.inject.Named;
+import org.apache.isis.applib.annotation.OrderPrecedence;
+import org.springframework.context.annotation.Primary;
+import org.springframework.core.annotation.Order;
import org.springframework.stereotype.Service;
import org.apache.isis.applib.services.title.TitleService;
@@ -34,6 +37,8 @@ import lombok.val;
@Service
@Named("isisMetaModel.TitleServiceDefault")
+@Order(OrderPrecedence.DEFAULT)
+@Primary
@Log4j2
public class TitleServiceDefault implements TitleService {
diff --git a/core/metamodel/src/main/java/org/apache/isis/metamodel/services/user/UserServiceDefault.java b/core/metamodel/src/main/java/org/apache/isis/metamodel/services/user/UserServiceDefault.java
index 23e5606..346683e 100644
--- a/core/metamodel/src/main/java/org/apache/isis/metamodel/services/user/UserServiceDefault.java
+++ b/core/metamodel/src/main/java/org/apache/isis/metamodel/services/user/UserServiceDefault.java
@@ -28,6 +28,9 @@ import java.util.Stack;
import javax.inject.Inject;
import javax.inject.Named;
+import org.apache.isis.applib.annotation.OrderPrecedence;
+import org.springframework.context.annotation.Primary;
+import org.springframework.core.annotation.Order;
import org.springframework.stereotype.Service;
import org.apache.isis.applib.annotation.DomainService;
@@ -41,6 +44,8 @@ import org.apache.isis.security.api.authentication.AuthenticationSessionProvider
@Service
@Named("isisMetaModel.UserServiceDefault")
+@Order(OrderPrecedence.DEFAULT)
+@Primary
@Log4j2
public class UserServiceDefault implements UserService {
@@ -150,6 +155,8 @@ public class UserServiceDefault implements UserService {
@Service
@Named("isisMetaModel.UserServiceDefault.SudoServiceSpi")
+ @Order(OrderPrecedence.DEFAULT)
+ @Primary
@Log4j2
public static class SudoServiceSpi implements SudoService.Spi {
diff --git a/core/metamodel/src/main/java/org/apache/isis/metamodel/specloader/InjectorMethodEvaluatorDefault.java b/core/metamodel/src/main/java/org/apache/isis/metamodel/specloader/InjectorMethodEvaluatorDefault.java
index e158430..07c75fe 100644
--- a/core/metamodel/src/main/java/org/apache/isis/metamodel/specloader/InjectorMethodEvaluatorDefault.java
+++ b/core/metamodel/src/main/java/org/apache/isis/metamodel/specloader/InjectorMethodEvaluatorDefault.java
@@ -25,12 +25,17 @@ import java.lang.reflect.Method;
import javax.inject.Named;
+import org.apache.isis.applib.annotation.OrderPrecedence;
+import org.springframework.context.annotation.Primary;
+import org.springframework.core.annotation.Order;
import org.springframework.stereotype.Service;
import org.apache.isis.metamodel.spec.InjectorMethodEvaluator;
@Service
@Named("isisMetaModel.InjectorMethodEvaluatorDefault")
+@Order(OrderPrecedence.HIGH)
+@Primary
@Log4j2
public final class InjectorMethodEvaluatorDefault implements InjectorMethodEvaluator {
diff --git a/core/metamodel/src/main/java/org/apache/isis/metamodel/specloader/ProgrammingModelServiceDefault.java b/core/metamodel/src/main/java/org/apache/isis/metamodel/specloader/ProgrammingModelServiceDefault.java
index 5697862..9eb3fa3 100644
--- a/core/metamodel/src/main/java/org/apache/isis/metamodel/specloader/ProgrammingModelServiceDefault.java
+++ b/core/metamodel/src/main/java/org/apache/isis/metamodel/specloader/ProgrammingModelServiceDefault.java
@@ -21,7 +21,10 @@ package org.apache.isis.metamodel.specloader;
import javax.inject.Inject;
import javax.inject.Named;
+import org.apache.isis.applib.annotation.OrderPrecedence;
import org.apache.isis.applib.services.inject.ServiceInjector;
+import org.springframework.context.annotation.Primary;
+import org.springframework.core.annotation.Order;
import org.springframework.stereotype.Service;
import org.apache.isis.applib.services.registry.ServiceRegistry;
@@ -38,6 +41,8 @@ import lombok.extern.log4j.Log4j2;
@Service
@Named("isisMetaModel.ProgrammingModelServiceDefault")
+@Order(OrderPrecedence.DEFAULT)
+@Primary
@Log4j2
public class ProgrammingModelServiceDefault implements ProgrammingModelService {
diff --git a/core/metamodel/src/main/java/org/apache/isis/metamodel/specloader/SpecificationLoaderDefault.java b/core/metamodel/src/main/java/org/apache/isis/metamodel/specloader/SpecificationLoaderDefault.java
index 4f723f9..b84df83 100644
--- a/core/metamodel/src/main/java/org/apache/isis/metamodel/specloader/SpecificationLoaderDefault.java
+++ b/core/metamodel/src/main/java/org/apache/isis/metamodel/specloader/SpecificationLoaderDefault.java
@@ -29,6 +29,7 @@ import javax.annotation.PreDestroy;
import javax.inject.Inject;
import javax.inject.Named;
+import org.apache.isis.applib.annotation.OrderPrecedence;
import org.apache.isis.applib.services.inject.ServiceInjector;
import org.apache.isis.applib.services.registry.ServiceRegistry;
import org.apache.isis.commons.internal.base._Blackhole;
@@ -59,6 +60,8 @@ import org.apache.isis.metamodel.specloader.specimpl.standalonelist.ObjectSpecif
import org.apache.isis.metamodel.specloader.validator.MetaModelValidatorAbstract;
import org.apache.isis.metamodel.specloader.validator.ValidationFailures;
import org.apache.isis.applib.util.schema.CommonDtoUtils;
+import org.springframework.context.annotation.Primary;
+import org.springframework.core.annotation.Order;
import org.springframework.stereotype.Service;
import lombok.Getter;
@@ -83,6 +86,8 @@ import static org.apache.isis.commons.internal.base._With.requires;
*/
@Service
@Named("isisMetaModel.SpecificationLoaderDefault")
+@Order(OrderPrecedence.HIGH)
+@Primary
@Log4j2
public class SpecificationLoaderDefault implements SpecificationLoader {
diff --git a/core/persistence/jdo/datanucleus-5/src/main/java/org/apache/isis/persistence/jdo/datanucleus5/datanucleus/DataNucleusSettings.java b/core/persistence/jdo/datanucleus-5/src/main/java/org/apache/isis/persistence/jdo/datanucleus5/datanucleus/DataNucleusSettings.java
index 071721b..1d79a05 100644
--- a/core/persistence/jdo/datanucleus-5/src/main/java/org/apache/isis/persistence/jdo/datanucleus5/datanucleus/DataNucleusSettings.java
+++ b/core/persistence/jdo/datanucleus-5/src/main/java/org/apache/isis/persistence/jdo/datanucleus5/datanucleus/DataNucleusSettings.java
@@ -18,11 +18,16 @@
*/
package org.apache.isis.persistence.jdo.datanucleus5.datanucleus;
+import lombok.extern.log4j.Log4j2;
+
import java.util.Map;
import javax.inject.Inject;
import javax.inject.Named;
+import org.apache.isis.applib.annotation.OrderPrecedence;
+import org.springframework.context.annotation.Primary;
+import org.springframework.core.annotation.Order;
import org.springframework.stereotype.Service;
/**
@@ -30,6 +35,9 @@ import org.springframework.stereotype.Service;
*/
@Service
@Named("isisJdoDn5.DataNucleusSettings")
+@Order(OrderPrecedence.HIGH)
+@Primary
+@Log4j2
public class DataNucleusSettings {
@Inject @Named("dn-settings")
diff --git a/core/persistence/jdo/datanucleus-5/src/main/java/org/apache/isis/persistence/jdo/datanucleus5/datanucleus/service/JdoPersistenceLifecycleService.java b/core/persistence/jdo/datanucleus-5/src/main/java/org/apache/isis/persistence/jdo/datanucleus5/datanucleus/service/JdoPersistenceLifecycleService.java
index 495ee6d..4b6494e 100644
--- a/core/persistence/jdo/datanucleus-5/src/main/java/org/apache/isis/persistence/jdo/datanucleus5/datanucleus/service/JdoPersistenceLifecycleService.java
+++ b/core/persistence/jdo/datanucleus-5/src/main/java/org/apache/isis/persistence/jdo/datanucleus5/datanucleus/service/JdoPersistenceLifecycleService.java
@@ -20,8 +20,12 @@ package org.apache.isis.persistence.jdo.datanucleus5.datanucleus.service;
import javax.annotation.PostConstruct;
import javax.inject.Inject;
+import javax.inject.Named;
+import org.apache.isis.applib.annotation.OrderPrecedence;
+import org.springframework.context.annotation.Primary;
import org.springframework.context.event.EventListener;
+import org.springframework.core.annotation.Order;
import org.springframework.stereotype.Service;
import org.apache.isis.commons.internal.context._Context;
@@ -37,7 +41,11 @@ import org.apache.isis.runtime.system.session.IsisSession;
import lombok.val;
import lombok.extern.log4j.Log4j2;
-@Service @Log4j2
+@Service
+@Named("isisJdoDn5.JdoPersistenceLifecycleService")
+@Order(OrderPrecedence.DEFAULT)
+@Primary
+@Log4j2
public class JdoPersistenceLifecycleService {
@Inject private MetaModelContext metaModelContext;
diff --git a/core/persistence/jdo/datanucleus-5/src/main/java/org/apache/isis/persistence/jdo/datanucleus5/exceprecog/ExceptionRecognizerCompositeForJdoObjectStore.java b/core/persistence/jdo/datanucleus-5/src/main/java/org/apache/isis/persistence/jdo/datanucleus5/exceprecog/ExceptionRecognizerCompositeForJdoObjectStore.java
index 6fdf2d1..f68e84d 100644
--- a/core/persistence/jdo/datanucleus-5/src/main/java/org/apache/isis/persistence/jdo/datanucleus5/exceprecog/ExceptionRecognizerCompositeForJdoObjectStore.java
+++ b/core/persistence/jdo/datanucleus-5/src/main/java/org/apache/isis/persistence/jdo/datanucleus5/exceprecog/ExceptionRecognizerCompositeForJdoObjectStore.java
@@ -26,9 +26,12 @@ import javax.inject.Named;
import org.apache.isis.applib.annotation.DomainService;
import org.apache.isis.applib.annotation.NatureOfService;
+import org.apache.isis.applib.annotation.OrderPrecedence;
import org.apache.isis.applib.services.exceprecog.ExceptionRecognizer;
import org.apache.isis.applib.services.exceprecog.ExceptionRecognizerComposite;
import org.apache.isis.config.IsisConfiguration;
+import org.springframework.context.annotation.Primary;
+import org.springframework.core.annotation.Order;
import org.springframework.stereotype.Service;
/**
@@ -44,6 +47,8 @@ import org.springframework.stereotype.Service;
*/
@Service
@Named("isisJdoDn5.ExceptionRecognizerCompositeForJdoObjectStore")
+@Order(OrderPrecedence.DEFAULT)
+@Primary
@Log4j2
public class ExceptionRecognizerCompositeForJdoObjectStore extends ExceptionRecognizerComposite {
diff --git a/core/persistence/jdo/datanucleus-5/src/main/java/org/apache/isis/persistence/jdo/datanucleus5/jdosupport/IsisJdoSupportDN5.java b/core/persistence/jdo/datanucleus-5/src/main/java/org/apache/isis/persistence/jdo/datanucleus5/jdosupport/IsisJdoSupportDN5.java
index a5656a4..af321ce 100644
--- a/core/persistence/jdo/datanucleus-5/src/main/java/org/apache/isis/persistence/jdo/datanucleus5/jdosupport/IsisJdoSupportDN5.java
+++ b/core/persistence/jdo/datanucleus-5/src/main/java/org/apache/isis/persistence/jdo/datanucleus5/jdosupport/IsisJdoSupportDN5.java
@@ -19,6 +19,8 @@
package org.apache.isis.persistence.jdo.datanucleus5.jdosupport;
+import lombok.extern.log4j.Log4j2;
+
import java.sql.ResultSet;
import java.sql.ResultSetMetaData;
import java.sql.SQLException;
@@ -29,13 +31,17 @@ import java.util.Map;
import java.util.stream.Collectors;
import javax.inject.Inject;
+import javax.inject.Named;
import javax.jdo.Extent;
import javax.jdo.JDOQLTypedQuery;
import javax.jdo.PersistenceManager;
import javax.jdo.datastore.JDOConnection;
import javax.jdo.query.BooleanExpression;
+import org.apache.isis.applib.annotation.OrderPrecedence;
import org.apache.isis.persistence.jdo.applib.services.IsisJdoSupport_v3_2;
+import org.springframework.context.annotation.Primary;
+import org.springframework.core.annotation.Order;
import org.springframework.stereotype.Service;
import org.apache.isis.applib.FatalException;
@@ -56,6 +62,10 @@ import static org.apache.isis.commons.internal.base._NullSafe.stream;
*
*/
@Service
+@Named("isisJdoDn5.IsisJdoSupportDN5")
+@Order(OrderPrecedence.DEFAULT)
+@Primary
+@Log4j2
public class IsisJdoSupportDN5 implements IsisJdoSupport_v3_2 {
diff --git a/core/persistence/jdo/datanucleus-5/src/main/java/org/apache/isis/persistence/jdo/datanucleus5/metrics/MetricsServiceDefault.java b/core/persistence/jdo/datanucleus-5/src/main/java/org/apache/isis/persistence/jdo/datanucleus5/metrics/MetricsServiceDefault.java
index b1dc252..d61fab5 100644
--- a/core/persistence/jdo/datanucleus-5/src/main/java/org/apache/isis/persistence/jdo/datanucleus5/metrics/MetricsServiceDefault.java
+++ b/core/persistence/jdo/datanucleus-5/src/main/java/org/apache/isis/persistence/jdo/datanucleus5/metrics/MetricsServiceDefault.java
@@ -31,13 +31,18 @@ import javax.jdo.listener.LoadLifecycleListener;
import org.apache.isis.applib.annotation.DomainService;
import org.apache.isis.applib.annotation.NatureOfService;
+import org.apache.isis.applib.annotation.OrderPrecedence;
import org.apache.isis.applib.services.WithTransactionScope;
import org.apache.isis.applib.services.metrics.MetricsService;
import org.apache.isis.runtime.system.transaction.ChangedObjectsServiceInternal;
+import org.springframework.context.annotation.Primary;
+import org.springframework.core.annotation.Order;
import org.springframework.stereotype.Service;
@Service
@Named("isisJdoDn5.MetricsServiceDefault")
+@Order(OrderPrecedence.DEFAULT)
+@Primary
@RequestScoped
@Log4j2
public class MetricsServiceDefault implements MetricsService, InstanceLifecycleListener,
diff --git a/core/persistence/jdo/datanucleus-5/src/main/java/org/apache/isis/persistence/jdo/datanucleus5/persistence/IsisPlatformTransactionManagerForJdo.java b/core/persistence/jdo/datanucleus-5/src/main/java/org/apache/isis/persistence/jdo/datanucleus5/persistence/IsisPlatformTransactionManagerForJdo.java
index 1794698..65a7d43 100644
--- a/core/persistence/jdo/datanucleus-5/src/main/java/org/apache/isis/persistence/jdo/datanucleus5/persistence/IsisPlatformTransactionManagerForJdo.java
+++ b/core/persistence/jdo/datanucleus-5/src/main/java/org/apache/isis/persistence/jdo/datanucleus5/persistence/IsisPlatformTransactionManagerForJdo.java
@@ -19,8 +19,12 @@
package org.apache.isis.persistence.jdo.datanucleus5.persistence;
import javax.inject.Inject;
+import javax.inject.Named;
+import org.apache.isis.applib.annotation.OrderPrecedence;
import org.springframework.beans.factory.annotation.Qualifier;
+import org.springframework.context.annotation.Primary;
+import org.springframework.core.annotation.Order;
import org.springframework.stereotype.Service;
import org.springframework.transaction.TransactionDefinition;
import org.springframework.transaction.TransactionException;
@@ -39,7 +43,12 @@ import org.apache.isis.security.api.authentication.AuthenticationSession;
import lombok.val;
import lombok.extern.log4j.Log4j2;
-@Service @Log4j2 @Qualifier("jdo")
+@Service
+@Named("isisJdoDn5.IsisPlatformTransactionManagerForJdo")
+@Order(OrderPrecedence.DEFAULT)
+@Primary
+@Qualifier("jdo")
+@Log4j2
public class IsisPlatformTransactionManagerForJdo extends AbstractPlatformTransactionManager {
private static final long serialVersionUID = 1L;
diff --git a/core/persistence/jdo/datanucleus-5/src/main/java/org/apache/isis/persistence/jdo/datanucleus5/persistence/PersistenceSessionFactory5.java b/core/persistence/jdo/datanucleus-5/src/main/java/org/apache/isis/persistence/jdo/datanucleus5/persistence/PersistenceSessionFactory5.java
index 1013248..20beeb4 100644
--- a/core/persistence/jdo/datanucleus-5/src/main/java/org/apache/isis/persistence/jdo/datanucleus5/persistence/PersistenceSessionFactory5.java
+++ b/core/persistence/jdo/datanucleus-5/src/main/java/org/apache/isis/persistence/jdo/datanucleus5/persistence/PersistenceSessionFactory5.java
@@ -24,11 +24,15 @@ import java.util.Objects;
import javax.annotation.PreDestroy;
import javax.inject.Inject;
+import javax.inject.Named;
import javax.inject.Singleton;
import javax.jdo.listener.StoreLifecycleListener;
+import org.apache.isis.applib.annotation.OrderPrecedence;
import org.datanucleus.PropertyNames;
import org.datanucleus.api.jdo.JDOPersistenceManagerFactory;
+import org.springframework.context.annotation.Primary;
+import org.springframework.core.annotation.Order;
import org.springframework.stereotype.Service;
import org.apache.isis.commons.internal.base._Blackhole;
@@ -56,7 +60,12 @@ import lombok.extern.log4j.Log4j2;
* Factory for {@link PersistenceSession}.
*
*/
-@Service @Singleton @Log4j2
+@Service
+@Named("isisJdoDn5.PersistenceSessionFactory5")
+@Order(OrderPrecedence.DEFAULT)
+@Primary
+@Singleton
+@Log4j2
public class PersistenceSessionFactory5
implements PersistenceSessionFactory, FixturesInstalledStateHolder {
diff --git a/core/runtime-services/src/main/java/org/apache/isis/runtime/services/auth/AuthenticationSessionProviderDefault.java b/core/runtime-services/src/main/java/org/apache/isis/runtime/services/auth/AuthenticationSessionProviderDefault.java
index 7ae7e4c..f3789bc 100644
--- a/core/runtime-services/src/main/java/org/apache/isis/runtime/services/auth/AuthenticationSessionProviderDefault.java
+++ b/core/runtime-services/src/main/java/org/apache/isis/runtime/services/auth/AuthenticationSessionProviderDefault.java
@@ -25,6 +25,9 @@ import java.util.List;
import javax.inject.Inject;
import javax.inject.Named;
+import org.apache.isis.applib.annotation.OrderPrecedence;
+import org.springframework.context.annotation.Primary;
+import org.springframework.core.annotation.Order;
import org.springframework.stereotype.Service;
import org.apache.isis.metamodel.services.user.UserServiceDefault;
@@ -36,6 +39,8 @@ import org.apache.isis.security.api.authentication.standard.SimpleSession;
@Service
@Named("isisRuntimeServices.AuthenticationSessionProviderDefault")
+@Order(OrderPrecedence.DEFAULT)
+@Primary
@Log4j2
public class AuthenticationSessionProviderDefault implements AuthenticationSessionProvider {
diff --git a/core/runtime-services/src/main/java/org/apache/isis/runtime/services/auth/AuthorizationManagerStandard.java b/core/runtime-services/src/main/java/org/apache/isis/runtime/services/auth/AuthorizationManagerStandard.java
index 066fa3f..5801947 100644
--- a/core/runtime-services/src/main/java/org/apache/isis/runtime/services/auth/AuthorizationManagerStandard.java
+++ b/core/runtime-services/src/main/java/org/apache/isis/runtime/services/auth/AuthorizationManagerStandard.java
@@ -24,6 +24,9 @@ import javax.annotation.PreDestroy;
import javax.inject.Inject;
import javax.inject.Named;
+import org.apache.isis.applib.annotation.OrderPrecedence;
+import org.springframework.context.annotation.Primary;
+import org.springframework.core.annotation.Order;
import org.springframework.stereotype.Service;
import org.apache.isis.applib.Identifier;
@@ -41,6 +44,8 @@ import lombok.val;
@Service
@Named("isisRuntimeServices.AuthorizationManagerStandard")
+@Order(OrderPrecedence.DEFAULT)
+@Primary
@Log4j2
public class AuthorizationManagerStandard implements AuthorizationManager, MetaModelRefiner {
diff --git a/core/runtime-services/src/main/java/org/apache/isis/runtime/services/background/CommandExecutorServiceDefault.java b/core/runtime-services/src/main/java/org/apache/isis/runtime/services/background/CommandExecutorServiceDefault.java
index 5122efd..e13e55a 100644
--- a/core/runtime-services/src/main/java/org/apache/isis/runtime/services/background/CommandExecutorServiceDefault.java
+++ b/core/runtime-services/src/main/java/org/apache/isis/runtime/services/background/CommandExecutorServiceDefault.java
@@ -27,6 +27,9 @@ import java.util.stream.Stream;
import javax.inject.Inject;
import javax.inject.Named;
+import org.apache.isis.applib.annotation.OrderPrecedence;
+import org.springframework.context.annotation.Primary;
+import org.springframework.core.annotation.Order;
import org.springframework.stereotype.Service;
import org.apache.isis.applib.services.bookmark.Bookmark;
@@ -72,6 +75,8 @@ import lombok.extern.log4j.Log4j2;
@Service
@Named("isisRuntimeServices.CommandExecutorServiceDefault")
+@Order(OrderPrecedence.DEFAULT)
+@Primary
@Log4j2
public class CommandExecutorServiceDefault implements CommandExecutorService {
diff --git a/core/runtime-services/src/main/java/org/apache/isis/runtime/services/bookmarks/BookmarkServiceInternalDefault.java b/core/runtime-services/src/main/java/org/apache/isis/runtime/services/bookmarks/BookmarkServiceInternalDefault.java
index 6b92143..af72bf6 100644
--- a/core/runtime-services/src/main/java/org/apache/isis/runtime/services/bookmarks/BookmarkServiceInternalDefault.java
+++ b/core/runtime-services/src/main/java/org/apache/isis/runtime/services/bookmarks/BookmarkServiceInternalDefault.java
@@ -27,6 +27,7 @@ import java.util.Set;
import javax.inject.Inject;
import javax.inject.Named;
+import org.apache.isis.applib.annotation.OrderPrecedence;
import org.apache.isis.applib.services.bookmark.Bookmark;
import org.apache.isis.applib.services.bookmark.BookmarkHolder;
import org.apache.isis.applib.services.bookmark.BookmarkService;
@@ -42,6 +43,8 @@ import org.apache.isis.metamodel.objectmanager.load.ObjectLoader;
import org.apache.isis.metamodel.spec.ManagedObject;
import org.apache.isis.metamodel.spec.ObjectSpecId;
import org.apache.isis.metamodel.specloader.SpecificationLoader;
+import org.springframework.context.annotation.Primary;
+import org.springframework.core.annotation.Order;
import org.springframework.stereotype.Service;
import lombok.extern.log4j.Log4j2;
@@ -53,6 +56,8 @@ import lombok.val;
*/
@Service
@Named("isisRuntimeServices.BookmarkServiceInternalDefault")
+@Order(OrderPrecedence.DEFAULT)
+@Primary
@Log4j2
public class BookmarkServiceInternalDefault implements BookmarkService, SerializingAdapter {
diff --git a/core/runtime-services/src/main/java/org/apache/isis/runtime/services/command/CommandDtoServiceInternalDefault.java b/core/runtime-services/src/main/java/org/apache/isis/runtime/services/command/CommandDtoServiceInternalDefault.java
index f5e38c8..f74db4f 100644
--- a/core/runtime-services/src/main/java/org/apache/isis/runtime/services/command/CommandDtoServiceInternalDefault.java
+++ b/core/runtime-services/src/main/java/org/apache/isis/runtime/services/command/CommandDtoServiceInternalDefault.java
@@ -26,6 +26,7 @@ import javax.inject.Named;
import org.apache.isis.applib.annotation.DomainService;
import org.apache.isis.applib.annotation.NatureOfService;
+import org.apache.isis.applib.annotation.OrderPrecedence;
import org.apache.isis.applib.services.bookmark.Bookmark;
import org.apache.isis.applib.services.bookmark.BookmarkService;
import org.apache.isis.applib.services.command.Command;
@@ -48,6 +49,8 @@ import org.apache.isis.schema.common.v1.OidsDto;
import org.apache.isis.schema.common.v1.ValueWithTypeDto;
import org.apache.isis.applib.util.schema.CommandDtoUtils;
import org.apache.isis.applib.util.schema.CommonDtoUtils;
+import org.springframework.context.annotation.Primary;
+import org.springframework.core.annotation.Order;
import org.springframework.stereotype.Service;
import lombok.extern.log4j.Log4j2;
@@ -55,6 +58,8 @@ import lombok.val;
@Service
@Named("isisRuntimeServices.CommandDtoServiceInternalDefault")
+@Order(OrderPrecedence.DEFAULT)
+@Primary
@Log4j2
public class CommandDtoServiceInternalDefault implements CommandDtoServiceInternal {
diff --git a/core/runtime-services/src/main/java/org/apache/isis/runtime/services/command/CommandServiceDefault.java b/core/runtime-services/src/main/java/org/apache/isis/runtime/services/command/CommandServiceDefault.java
index a495969..62218c9 100644
--- a/core/runtime-services/src/main/java/org/apache/isis/runtime/services/command/CommandServiceDefault.java
+++ b/core/runtime-services/src/main/java/org/apache/isis/runtime/services/command/CommandServiceDefault.java
@@ -22,6 +22,9 @@ import lombok.extern.log4j.Log4j2;
import javax.inject.Named;
+import org.apache.isis.applib.annotation.OrderPrecedence;
+import org.springframework.context.annotation.Primary;
+import org.springframework.core.annotation.Order;
import org.springframework.stereotype.Service;
import org.apache.isis.applib.services.command.Command;
@@ -30,6 +33,8 @@ import org.apache.isis.applib.services.command.spi.CommandService;
@Service
@Named("isisRuntimeServices.CommandServiceDefault")
+@Order(OrderPrecedence.DEFAULT)
+@Primary
@Log4j2
public class CommandServiceDefault implements CommandService {
diff --git a/core/runtime-services/src/main/java/org/apache/isis/runtime/services/confmenu/ConfigurationViewServiceDefault.java b/core/runtime-services/src/main/java/org/apache/isis/runtime/services/confmenu/ConfigurationViewServiceDefault.java
index 1f68bd1..06bc5c8 100644
--- a/core/runtime-services/src/main/java/org/apache/isis/runtime/services/confmenu/ConfigurationViewServiceDefault.java
+++ b/core/runtime-services/src/main/java/org/apache/isis/runtime/services/confmenu/ConfigurationViewServiceDefault.java
@@ -28,6 +28,7 @@ import javax.inject.Named;
import org.apache.isis.applib.annotation.DomainService;
import org.apache.isis.applib.annotation.NatureOfService;
+import org.apache.isis.applib.annotation.OrderPrecedence;
import org.apache.isis.applib.services.confview.ConfigurationProperty;
import org.apache.isis.applib.services.confview.ConfigurationViewService;
import org.apache.isis.commons.internal.base._Lazy;
@@ -37,6 +38,8 @@ import org.apache.isis.commons.internal.environment.IsisSystemEnvironment;
import org.apache.isis.config.ConfigurationConstants;
import org.apache.isis.config.IsisConfiguration;
import org.apache.isis.config.util.ConfigUtil;
+import org.springframework.context.annotation.Primary;
+import org.springframework.core.annotation.Order;
import org.springframework.stereotype.Service;
import lombok.val;
@@ -47,6 +50,8 @@ import lombok.extern.log4j.Log4j2;
*/
@Service
@Named("isisRuntimeServices.ConfigurationViewServiceDefault")
+@Order(OrderPrecedence.DEFAULT)
+@Primary
@Log4j2
public class ConfigurationViewServiceDefault implements ConfigurationViewService {
diff --git a/core/runtime-services/src/main/java/org/apache/isis/runtime/services/email/EmailServiceDefault.java b/core/runtime-services/src/main/java/org/apache/isis/runtime/services/email/EmailServiceDefault.java
index ddf669a..50fd4cc 100644
--- a/core/runtime-services/src/main/java/org/apache/isis/runtime/services/email/EmailServiceDefault.java
+++ b/core/runtime-services/src/main/java/org/apache/isis/runtime/services/email/EmailServiceDefault.java
@@ -34,9 +34,12 @@ import org.apache.commons.mail.resolver.DataSourceClassPathResolver;
import org.apache.isis.applib.annotation.DomainService;
import org.apache.isis.applib.annotation.NatureOfService;
+import org.apache.isis.applib.annotation.OrderPrecedence;
import org.apache.isis.applib.services.email.EmailService;
import org.apache.isis.commons.internal.base._Strings;
import org.apache.isis.config.IsisConfiguration;
+import org.springframework.context.annotation.Primary;
+import org.springframework.core.annotation.Order;
import org.springframework.stereotype.Service;
import lombok.extern.log4j.Log4j2;
@@ -46,6 +49,8 @@ import lombok.extern.log4j.Log4j2;
*/
@Service
@Named("isisRuntimeServices.EmailServiceDefault")
+@Order(OrderPrecedence.DEFAULT)
+@Primary
@Log4j2
public class EmailServiceDefault implements EmailService {
diff --git a/core/runtime-services/src/main/java/org/apache/isis/runtime/services/eventbus/EventBusServiceSpring.java b/core/runtime-services/src/main/java/org/apache/isis/runtime/services/eventbus/EventBusServiceSpring.java
index 9e59533..6be08c7 100644
--- a/core/runtime-services/src/main/java/org/apache/isis/runtime/services/eventbus/EventBusServiceSpring.java
+++ b/core/runtime-services/src/main/java/org/apache/isis/runtime/services/eventbus/EventBusServiceSpring.java
@@ -23,13 +23,18 @@ import lombok.extern.log4j.Log4j2;
import javax.inject.Inject;
import javax.inject.Named;
+import org.apache.isis.applib.annotation.OrderPrecedence;
import org.springframework.context.ApplicationEventPublisher;
+import org.springframework.context.annotation.Primary;
+import org.springframework.core.annotation.Order;
import org.springframework.stereotype.Service;
import org.apache.isis.applib.services.eventbus.EventBusService;
@Service
@Named("isisRuntimeServices.EventBusServiceSpring")
+@Order(OrderPrecedence.DEFAULT)
+@Primary
@Log4j2
public class EventBusServiceSpring implements EventBusService {
diff --git a/core/runtime-services/src/main/java/org/apache/isis/runtime/services/factory/FactoryServiceDefault.java b/core/runtime-services/src/main/java/org/apache/isis/runtime/services/factory/FactoryServiceDefault.java
index 05ecdac..8ac32d7 100644
--- a/core/runtime-services/src/main/java/org/apache/isis/runtime/services/factory/FactoryServiceDefault.java
+++ b/core/runtime-services/src/main/java/org/apache/isis/runtime/services/factory/FactoryServiceDefault.java
@@ -25,6 +25,9 @@ import java.lang.reflect.InvocationTargetException;
import javax.inject.Inject;
import javax.inject.Named;
+import org.apache.isis.applib.annotation.OrderPrecedence;
+import org.springframework.context.annotation.Primary;
+import org.springframework.core.annotation.Order;
import org.springframework.stereotype.Service;
import org.apache.isis.applib.NonRecoverableException;
@@ -46,6 +49,8 @@ import lombok.val;
@Service
@Named("isisRuntimeServices.FactoryServiceDefault")
+@Order(OrderPrecedence.DEFAULT)
+@Primary
@Log4j2
public class FactoryServiceDefault implements FactoryService {
diff --git a/core/runtime-services/src/main/java/org/apache/isis/runtime/services/homepage/HomePageResolverServiceDefault.java b/core/runtime-services/src/main/java/org/apache/isis/runtime/services/homepage/HomePageResolverServiceDefault.java
index c0dc63c..02cc17a 100644
--- a/core/runtime-services/src/main/java/org/apache/isis/runtime/services/homepage/HomePageResolverServiceDefault.java
+++ b/core/runtime-services/src/main/java/org/apache/isis/runtime/services/homepage/HomePageResolverServiceDefault.java
@@ -22,13 +22,12 @@ import javax.enterprise.inject.Vetoed;
import javax.inject.Inject;
import javax.inject.Named;
+import org.apache.isis.applib.annotation.*;
import org.apache.isis.commons.internal.ioc.ManagedBeanAdapter;
+import org.springframework.context.annotation.Primary;
+import org.springframework.core.annotation.Order;
import org.springframework.stereotype.Service;
-import org.apache.isis.applib.annotation.Action;
-import org.apache.isis.applib.annotation.HomePage;
-import org.apache.isis.applib.annotation.ViewModel;
-import org.apache.isis.applib.annotation.Where;
import org.apache.isis.applib.services.factory.FactoryService;
import org.apache.isis.applib.services.registry.ServiceRegistry;
import org.apache.isis.commons.internal.base._Lazy;
@@ -51,6 +50,8 @@ import lombok.val;
@Service
@Named("isisRuntimeServices.HomePageResolverServiceDefault")
+@Order(OrderPrecedence.DEFAULT)
+@Primary
@Log4j2
public class HomePageResolverServiceDefault implements HomePageResolverService {
diff --git a/core/runtime-services/src/main/java/org/apache/isis/runtime/services/i18n/po/TranslationServicePo.java b/core/runtime-services/src/main/java/org/apache/isis/runtime/services/i18n/po/TranslationServicePo.java
index 6dccb39..c1c973a 100644
--- a/core/runtime-services/src/main/java/org/apache/isis/runtime/services/i18n/po/TranslationServicePo.java
+++ b/core/runtime-services/src/main/java/org/apache/isis/runtime/services/i18n/po/TranslationServicePo.java
@@ -25,6 +25,9 @@ import javax.annotation.PreDestroy;
import javax.inject.Inject;
import javax.inject.Named;
+import org.apache.isis.applib.annotation.OrderPrecedence;
+import org.springframework.context.annotation.Primary;
+import org.springframework.core.annotation.Order;
import org.springframework.stereotype.Service;
import org.apache.isis.applib.services.i18n.LocaleProvider;
@@ -38,6 +41,8 @@ import org.apache.isis.config.IsisConfiguration;
@Service
@Named("isisRuntimeServices.TranslationServicePo")
+@Order(OrderPrecedence.DEFAULT)
+@Primary
@Log4j2
public class TranslationServicePo implements TranslationService {
diff --git a/core/runtime-services/src/main/java/org/apache/isis/runtime/services/ixn/InteractionDtoServiceInternalDefault.java b/core/runtime-services/src/main/java/org/apache/isis/runtime/services/ixn/InteractionDtoServiceInternalDefault.java
index 0d29994..887754f 100644
--- a/core/runtime-services/src/main/java/org/apache/isis/runtime/services/ixn/InteractionDtoServiceInternalDefault.java
+++ b/core/runtime-services/src/main/java/org/apache/isis/runtime/services/ixn/InteractionDtoServiceInternalDefault.java
@@ -28,6 +28,7 @@ import javax.inject.Named;
import org.apache.isis.applib.annotation.DomainService;
import org.apache.isis.applib.annotation.NatureOfService;
+import org.apache.isis.applib.annotation.OrderPrecedence;
import org.apache.isis.applib.services.bookmark.Bookmark;
import org.apache.isis.applib.services.bookmark.BookmarkService;
import org.apache.isis.applib.services.iactn.Interaction;
@@ -47,10 +48,14 @@ import org.apache.isis.schema.ixn.v1.ActionInvocationDto;
import org.apache.isis.schema.ixn.v1.PropertyEditDto;
import org.apache.isis.applib.util.schema.CommandDtoUtils;
import org.apache.isis.applib.util.schema.InteractionDtoUtils;
+import org.springframework.context.annotation.Primary;
+import org.springframework.core.annotation.Order;
import org.springframework.stereotype.Service;
@Service
@Named("isisRuntimeServices.InteractionDtoServiceInternalDefault")
+@Order(OrderPrecedence.DEFAULT)
+@Primary
@Log4j2
public class InteractionDtoServiceInternalDefault implements InteractionDtoServiceInternal {
diff --git a/core/runtime-services/src/main/java/org/apache/isis/runtime/services/menubars/MenuBarsLoaderServiceDefault.java b/core/runtime-services/src/main/java/org/apache/isis/runtime/services/menubars/MenuBarsLoaderServiceDefault.java
index 36ba7ec..bf76682 100644
--- a/core/runtime-services/src/main/java/org/apache/isis/runtime/services/menubars/MenuBarsLoaderServiceDefault.java
+++ b/core/runtime-services/src/main/java/org/apache/isis/runtime/services/menubars/MenuBarsLoaderServiceDefault.java
@@ -24,7 +24,10 @@ import java.util.Optional;
import javax.inject.Inject;
import javax.inject.Named;
+import org.apache.isis.applib.annotation.OrderPrecedence;
import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.context.annotation.Primary;
+import org.springframework.core.annotation.Order;
import org.springframework.core.io.AbstractResource;
import org.springframework.stereotype.Service;
@@ -40,6 +43,8 @@ import lombok.extern.log4j.Log4j2;
@Service
@Named("isisRuntimeServices.MenuBarsLoaderServiceDefault")
+@Order(OrderPrecedence.DEFAULT)
+@Primary
@Log4j2
public class MenuBarsLoaderServiceDefault implements MenuBarsLoaderService {
diff --git a/core/runtime-services/src/main/java/org/apache/isis/runtime/services/menubars/bootstrap3/MenuBarsServiceBS3.java b/core/runtime-services/src/main/java/org/apache/isis/runtime/services/menubars/bootstrap3/MenuBarsServiceBS3.java
index 9d3ad65..25d5381 100644
--- a/core/runtime-services/src/main/java/org/apache/isis/runtime/services/menubars/bootstrap3/MenuBarsServiceBS3.java
+++ b/core/runtime-services/src/main/java/org/apache/isis/runtime/services/menubars/bootstrap3/MenuBarsServiceBS3.java
@@ -28,6 +28,9 @@ import java.util.stream.Stream;
import javax.inject.Inject;
import javax.inject.Named;
+import org.apache.isis.applib.annotation.OrderPrecedence;
+import org.springframework.context.annotation.Primary;
+import org.springframework.core.annotation.Order;
import org.springframework.stereotype.Service;
import org.apache.isis.applib.annotation.DomainServiceLayout;
@@ -65,6 +68,8 @@ import lombok.extern.log4j.Log4j2;
@Service
@Named("isisRuntimeServices.MenuBarsServiceBS3")
+@Order(OrderPrecedence.DEFAULT)
+@Primary
@Log4j2
public class MenuBarsServiceBS3 implements MenuBarsService {
diff --git a/core/runtime-services/src/main/java/org/apache/isis/runtime/services/message/MessageServiceDefault.java b/core/runtime-services/src/main/java/org/apache/isis/runtime/services/message/MessageServiceDefault.java
index 2337862..7118f60 100644
--- a/core/runtime-services/src/main/java/org/apache/isis/runtime/services/message/MessageServiceDefault.java
+++ b/core/runtime-services/src/main/java/org/apache/isis/runtime/services/message/MessageServiceDefault.java
@@ -23,6 +23,9 @@ import lombok.extern.log4j.Log4j2;
import javax.inject.Inject;
import javax.inject.Named;
+import org.apache.isis.applib.annotation.OrderPrecedence;
+import org.springframework.context.annotation.Primary;
+import org.springframework.core.annotation.Order;
import org.springframework.stereotype.Service;
import org.apache.isis.applib.RecoverableException;
@@ -34,6 +37,8 @@ import org.apache.isis.security.api.authentication.MessageBroker;
@Service
@Named("isisRuntimeServices.MessageServiceDefault")
+@Order(OrderPrecedence.DEFAULT)
+@Primary
@Log4j2
public class MessageServiceDefault implements MessageService {
diff --git a/core/runtime-services/src/main/java/org/apache/isis/runtime/services/publish/PublishingServiceInternalDefault.java b/core/runtime-services/src/main/java/org/apache/isis/runtime/services/publish/PublishingServiceInternalDefault.java
index 80185f4..425f38d 100644
--- a/core/runtime-services/src/main/java/org/apache/isis/runtime/services/publish/PublishingServiceInternalDefault.java
+++ b/core/runtime-services/src/main/java/org/apache/isis/runtime/services/publish/PublishingServiceInternalDefault.java
@@ -34,6 +34,7 @@ import javax.inject.Named;
import org.apache.isis.applib.annotation.DomainService;
import org.apache.isis.applib.annotation.NatureOfService;
+import org.apache.isis.applib.annotation.OrderPrecedence;
import org.apache.isis.applib.annotation.PublishingChangeKind;
import org.apache.isis.applib.services.clock.ClockService;
import org.apache.isis.applib.services.command.Command;
@@ -49,14 +50,18 @@ import org.apache.isis.metamodel.adapter.ObjectAdapter;
import org.apache.isis.metamodel.facets.object.publishedobject.PublishedObjectFacet;
import org.apache.isis.metamodel.services.publishing.PublishingServiceInternal;
import org.apache.isis.runtime.system.transaction.ChangedObjectsServiceInternal;
+import org.springframework.context.annotation.Primary;
+import org.springframework.core.annotation.Order;
import org.springframework.stereotype.Service;
/**
* Wrapper around {@link PublisherService}. Is a no-op if there is no injected service.
*/
@Service
-@RequestScoped
@Named("isisRuntimeServices.PublishingServiceInternalDefault")
+@Order(OrderPrecedence.DEFAULT)
+@Primary
+@RequestScoped
@Log4j2
public class PublishingServiceInternalDefault implements PublishingServiceInternal {
diff --git a/core/runtime-services/src/main/java/org/apache/isis/runtime/services/sessmgmt/SessionManagementServiceDefault.java b/core/runtime-services/src/main/java/org/apache/isis/runtime/services/sessmgmt/SessionManagementServiceDefault.java
index 40c49a69..d815307 100644
--- a/core/runtime-services/src/main/java/org/apache/isis/runtime/services/sessmgmt/SessionManagementServiceDefault.java
+++ b/core/runtime-services/src/main/java/org/apache/isis/runtime/services/sessmgmt/SessionManagementServiceDefault.java
@@ -22,6 +22,9 @@ package org.apache.isis.runtime.services.sessmgmt;
import javax.inject.Inject;
import javax.inject.Named;
+import org.apache.isis.applib.annotation.OrderPrecedence;
+import org.springframework.context.annotation.Primary;
+import org.springframework.core.annotation.Order;
import org.springframework.stereotype.Service;
import org.apache.isis.applib.services.sessmgmt.SessionManagementService;
@@ -33,6 +36,8 @@ import lombok.val;
@Service
@Named("isisRuntimeServices.SessionManagementServiceDefault")
+@Order(OrderPrecedence.DEFAULT)
+@Primary
@Log4j2
public class SessionManagementServiceDefault implements SessionManagementService {
diff --git a/core/runtime-services/src/main/java/org/apache/isis/runtime/services/sudo/SudoServiceDefault.java b/core/runtime-services/src/main/java/org/apache/isis/runtime/services/sudo/SudoServiceDefault.java
index 904ca59..0168093 100644
--- a/core/runtime-services/src/main/java/org/apache/isis/runtime/services/sudo/SudoServiceDefault.java
+++ b/core/runtime-services/src/main/java/org/apache/isis/runtime/services/sudo/SudoServiceDefault.java
@@ -29,11 +29,16 @@ import javax.inject.Named;
import org.apache.isis.applib.annotation.DomainService;
import org.apache.isis.applib.annotation.NatureOfService;
+import org.apache.isis.applib.annotation.OrderPrecedence;
import org.apache.isis.applib.services.sudo.SudoService;
+import org.springframework.context.annotation.Primary;
+import org.springframework.core.annotation.Order;
import org.springframework.stereotype.Service;
@Service
@Named("isisRuntimeServices.SudoServiceDefault")
+@Order(OrderPrecedence.DEFAULT)
+@Primary
@Log4j2
public class SudoServiceDefault implements SudoService {
diff --git a/core/runtime-services/src/main/java/org/apache/isis/runtime/services/userprof/UserProfileServiceDefault.java b/core/runtime-services/src/main/java/org/apache/isis/runtime/services/userprof/UserProfileServiceDefault.java
index b31f8d4..9aa19f7 100644
--- a/core/runtime-services/src/main/java/org/apache/isis/runtime/services/userprof/UserProfileServiceDefault.java
+++ b/core/runtime-services/src/main/java/org/apache/isis/runtime/services/userprof/UserProfileServiceDefault.java
@@ -25,13 +25,18 @@ import javax.inject.Named;
import org.apache.isis.applib.annotation.DomainService;
import org.apache.isis.applib.annotation.NatureOfService;
+import org.apache.isis.applib.annotation.OrderPrecedence;
import org.apache.isis.applib.annotation.Programmatic;
import org.apache.isis.applib.services.userprof.UserProfileService;
import org.apache.isis.security.api.authentication.AuthenticationSessionProvider;
+import org.springframework.context.annotation.Primary;
+import org.springframework.core.annotation.Order;
import org.springframework.stereotype.Service;
@Service
@Named("isisRuntimeServices.UserProfileServiceDefault")
+@Order(OrderPrecedence.DEFAULT)
+@Primary
@Log4j2
public class UserProfileServiceDefault implements UserProfileService {
diff --git a/core/runtime-services/src/main/java/org/apache/isis/runtime/services/userreg/EmailNotificationServiceDefault.java b/core/runtime-services/src/main/java/org/apache/isis/runtime/services/userreg/EmailNotificationServiceDefault.java
index 126d4a3..22d678f 100644
--- a/core/runtime-services/src/main/java/org/apache/isis/runtime/services/userreg/EmailNotificationServiceDefault.java
+++ b/core/runtime-services/src/main/java/org/apache/isis/runtime/services/userreg/EmailNotificationServiceDefault.java
@@ -32,12 +32,15 @@ import javax.inject.Named;
import org.apache.isis.applib.annotation.DomainService;
import org.apache.isis.applib.annotation.NatureOfService;
+import org.apache.isis.applib.annotation.OrderPrecedence;
import org.apache.isis.applib.services.email.EmailService;
import org.apache.isis.applib.services.userreg.EmailNotificationService;
import org.apache.isis.applib.services.userreg.events.EmailEventAbstract;
import org.apache.isis.applib.services.userreg.events.EmailRegistrationEvent;
import org.apache.isis.applib.services.userreg.events.PasswordResetEvent;
import org.apache.isis.commons.internal.resources._Resources;
+import org.springframework.context.annotation.Primary;
+import org.springframework.core.annotation.Order;
import org.springframework.stereotype.Service;
import static java.util.regex.Pattern.compile;
@@ -48,6 +51,8 @@ import static java.util.regex.Pattern.quote;
*/
@Service
@Named("isisRuntimeServices.EmailNotificationServiceDefault")
+@Order(OrderPrecedence.DEFAULT)
+@Primary
@Log4j2
public class EmailNotificationServiceDefault implements EmailNotificationService {
diff --git a/core/runtime-services/src/main/java/org/apache/isis/runtime/services/wrapper/WrapperFactoryDefault.java b/core/runtime-services/src/main/java/org/apache/isis/runtime/services/wrapper/WrapperFactoryDefault.java
index c85d373..8d78a9d 100644
--- a/core/runtime-services/src/main/java/org/apache/isis/runtime/services/wrapper/WrapperFactoryDefault.java
+++ b/core/runtime-services/src/main/java/org/apache/isis/runtime/services/wrapper/WrapperFactoryDefault.java
@@ -32,6 +32,9 @@ import java.util.function.BiConsumer;
import javax.inject.Inject;
import javax.inject.Named;
+import org.apache.isis.applib.annotation.OrderPrecedence;
+import org.springframework.context.annotation.Primary;
+import org.springframework.core.annotation.Order;
import org.springframework.stereotype.Service;
import org.apache.isis.applib.services.factory.FactoryService;
@@ -77,6 +80,8 @@ import lombok.extern.log4j.Log4j2;
*/
@Service
@Named("isisRuntimeServices.WrapperFactoryDefault")
+@Order(OrderPrecedence.DEFAULT)
+@Primary
@Log4j2
public class WrapperFactoryDefault implements WrapperFactory {
diff --git a/core/runtime-services/src/main/java/org/apache/isis/runtime/services/xactn/TransactionServiceSpring.java b/core/runtime-services/src/main/java/org/apache/isis/runtime/services/xactn/TransactionServiceSpring.java
index 8d2cc97..4c00bf4 100644
--- a/core/runtime-services/src/main/java/org/apache/isis/runtime/services/xactn/TransactionServiceSpring.java
+++ b/core/runtime-services/src/main/java/org/apache/isis/runtime/services/xactn/TransactionServiceSpring.java
@@ -24,6 +24,9 @@ import java.util.function.Supplier;
import javax.annotation.Nonnull;
import javax.inject.Named;
+import org.apache.isis.applib.annotation.OrderPrecedence;
+import org.springframework.context.annotation.Primary;
+import org.springframework.core.annotation.Order;
import org.springframework.stereotype.Service;
import org.springframework.transaction.PlatformTransactionManager;
import org.springframework.transaction.TransactionStatus;
@@ -43,6 +46,8 @@ import lombok.extern.log4j.Log4j2;
@Service
@Named("isisRuntimeServices.TransactionServiceSpring")
+@Order(OrderPrecedence.DEFAULT)
+@Primary
@Log4j2
public class TransactionServiceSpring implements TransactionService {
diff --git a/core/runtime-services/src/main/java/org/apache/isis/runtime/services/xmlsnapshot/XmlSnapshotServiceDefault.java b/core/runtime-services/src/main/java/org/apache/isis/runtime/services/xmlsnapshot/XmlSnapshotServiceDefault.java
index ba0662a..07579fe 100644
--- a/core/runtime-services/src/main/java/org/apache/isis/runtime/services/xmlsnapshot/XmlSnapshotServiceDefault.java
+++ b/core/runtime-services/src/main/java/org/apache/isis/runtime/services/xmlsnapshot/XmlSnapshotServiceDefault.java
@@ -23,6 +23,9 @@ import lombok.extern.log4j.Log4j2;
import javax.inject.Inject;
import javax.inject.Named;
+import org.apache.isis.applib.annotation.OrderPrecedence;
+import org.springframework.context.annotation.Primary;
+import org.springframework.core.annotation.Order;
import org.springframework.stereotype.Service;
import org.apache.isis.applib.services.xmlsnapshot.XmlSnapshotService;
@@ -42,6 +45,8 @@ import org.apache.isis.metamodel.util.snapshot.XmlSnapshot;
*/
@Service
@Named("isisRuntimeServices.XmlSnapshotServiceDefault")
+@Order(OrderPrecedence.DEFAULT)
+@Primary
@Log4j2
public class XmlSnapshotServiceDefault extends XmlSnapshotServiceAbstract {
diff --git a/core/runtime/src/main/java/org/apache/isis/runtime/system/context/session/RuntimeEventService.java b/core/runtime/src/main/java/org/apache/isis/runtime/system/context/session/RuntimeEventService.java
index 656305d..a934ad2 100644
--- a/core/runtime/src/main/java/org/apache/isis/runtime/system/context/session/RuntimeEventService.java
+++ b/core/runtime/src/main/java/org/apache/isis/runtime/system/context/session/RuntimeEventService.java
@@ -18,9 +18,14 @@
*/
package org.apache.isis.runtime.system.context.session;
+import lombok.extern.log4j.Log4j2;
+
import javax.inject.Inject;
import javax.inject.Named;
+import org.apache.isis.applib.annotation.OrderPrecedence;
+import org.springframework.context.annotation.Primary;
+import org.springframework.core.annotation.Order;
import org.springframework.stereotype.Service;
import org.apache.isis.applib.services.eventbus.EventBusService;
@@ -34,6 +39,9 @@ import org.apache.isis.runtime.system.session.IsisSession;
*/
@Service
@Named("isisRuntime.RuntimeEventService")
+@Order(OrderPrecedence.DEFAULT)
+@Primary
+@Log4j2
public class RuntimeEventService {
@Inject private EventBusService eventBusService;
diff --git a/core/runtime/src/main/java/org/apache/isis/runtime/system/persistence/events/PersistenceEventService.java b/core/runtime/src/main/java/org/apache/isis/runtime/system/persistence/events/PersistenceEventService.java
index 76dfa08..b840bab 100644
--- a/core/runtime/src/main/java/org/apache/isis/runtime/system/persistence/events/PersistenceEventService.java
+++ b/core/runtime/src/main/java/org/apache/isis/runtime/system/persistence/events/PersistenceEventService.java
@@ -18,10 +18,15 @@
*/
package org.apache.isis.runtime.system.persistence.events;
+import lombok.extern.log4j.Log4j2;
+
import javax.enterprise.event.Event;
import javax.inject.Inject;
import javax.inject.Named;
+import org.apache.isis.applib.annotation.OrderPrecedence;
+import org.springframework.context.annotation.Primary;
+import org.springframework.core.annotation.Order;
import org.springframework.stereotype.Service;
/**
@@ -31,6 +36,9 @@ import org.springframework.stereotype.Service;
*/
@Service
@Named("isisRuntime.PersistenceEventService")
+@Order(OrderPrecedence.DEFAULT)
+@Primary
+@Log4j2
public class PersistenceEventService {
// -- MANAGED EVENTS
diff --git a/core/runtime/src/main/java/org/apache/isis/runtime/system/persistence/events/TimestampService.java b/core/runtime/src/main/java/org/apache/isis/runtime/system/persistence/events/TimestampService.java
index b7d04a5..78c36cc 100644
--- a/core/runtime/src/main/java/org/apache/isis/runtime/system/persistence/events/TimestampService.java
+++ b/core/runtime/src/main/java/org/apache/isis/runtime/system/persistence/events/TimestampService.java
@@ -21,7 +21,10 @@ package org.apache.isis.runtime.system.persistence.events;
import javax.inject.Inject;
import javax.inject.Named;
+import org.apache.isis.applib.annotation.OrderPrecedence;
+import org.springframework.context.annotation.Primary;
import org.springframework.context.event.EventListener;
+import org.springframework.core.annotation.Order;
import org.springframework.stereotype.Service;
import org.apache.isis.applib.mixins.timestamp.HoldsUpdatedAt;
@@ -35,6 +38,8 @@ import lombok.val;
@Service
@Named("isisRuntime.TimestampService")
+@Order(OrderPrecedence.DEFAULT)
+@Primary
@Log4j2
public class TimestampService {
diff --git a/core/runtime/src/main/java/org/apache/isis/runtime/system/session/IsisSessionFactoryDefault.java b/core/runtime/src/main/java/org/apache/isis/runtime/system/session/IsisSessionFactoryDefault.java
index 604a057..ee9df7b 100644
--- a/core/runtime/src/main/java/org/apache/isis/runtime/system/session/IsisSessionFactoryDefault.java
+++ b/core/runtime/src/main/java/org/apache/isis/runtime/system/session/IsisSessionFactoryDefault.java
@@ -27,8 +27,11 @@ import javax.annotation.PreDestroy;
import javax.inject.Inject;
import javax.inject.Named;
+import org.apache.isis.applib.annotation.OrderPrecedence;
+import org.springframework.context.annotation.Primary;
import org.springframework.context.event.ContextRefreshedEvent;
import org.springframework.context.event.EventListener;
+import org.springframework.core.annotation.Order;
import org.springframework.stereotype.Service;
import org.apache.isis.commons.internal.collections._Sets;
@@ -65,6 +68,8 @@ import lombok.extern.log4j.Log4j2;
*/
@Service
@Named("isisRuntime.IsisSessionFactoryDefault")
+@Order(OrderPrecedence.DEFAULT)
+@Primary
@Log4j2
public class IsisSessionFactoryDefault implements IsisSessionFactory {
diff --git a/core/runtime/src/main/java/org/apache/isis/runtime/system/transaction/AuditingServiceInternal.java b/core/runtime/src/main/java/org/apache/isis/runtime/system/transaction/AuditingServiceInternal.java
index 17b5c57..ce43ea1 100644
--- a/core/runtime/src/main/java/org/apache/isis/runtime/system/transaction/AuditingServiceInternal.java
+++ b/core/runtime/src/main/java/org/apache/isis/runtime/system/transaction/AuditingServiceInternal.java
@@ -26,6 +26,9 @@ import java.util.UUID;
import javax.inject.Inject;
import javax.inject.Named;
+import org.apache.isis.applib.annotation.OrderPrecedence;
+import org.springframework.context.annotation.Primary;
+import org.springframework.core.annotation.Order;
import org.springframework.stereotype.Service;
import org.apache.isis.applib.services.audit.AuditerService;
@@ -37,6 +40,7 @@ import org.apache.isis.metamodel.adapter.ObjectAdapter;
import org.apache.isis.metamodel.facets.actions.action.invocation.CommandUtil;
import org.apache.isis.metamodel.facets.object.audit.AuditableFacet;
+import lombok.extern.log4j.Log4j2;
import lombok.val;
/**
@@ -44,6 +48,9 @@ import lombok.val;
*/
@Service
@Named("isisRuntime.AuditingServiceInternal")
+@Order(OrderPrecedence.HIGH)
+@Primary
+@Log4j2
public class AuditingServiceInternal {
@Inject private List<AuditerService> auditerServices;
diff --git a/core/runtime/src/main/java/org/apache/isis/runtime/system/transaction/ChangedObjectsServiceInternal.java b/core/runtime/src/main/java/org/apache/isis/runtime/system/transaction/ChangedObjectsServiceInternal.java
index 9116b1d..88e3ca6 100644
--- a/core/runtime/src/main/java/org/apache/isis/runtime/system/transaction/ChangedObjectsServiceInternal.java
+++ b/core/runtime/src/main/java/org/apache/isis/runtime/system/transaction/ChangedObjectsServiceInternal.java
@@ -28,6 +28,9 @@ import java.util.stream.Stream;
import javax.enterprise.context.RequestScoped;
import javax.inject.Named;
+import org.apache.isis.applib.annotation.OrderPrecedence;
+import org.springframework.context.annotation.Primary;
+import org.springframework.core.annotation.Order;
import org.springframework.stereotype.Service;
import org.apache.isis.applib.annotation.PublishingChangeKind;
@@ -41,11 +44,15 @@ import org.apache.isis.metamodel.spec.ObjectSpecification;
import org.apache.isis.metamodel.spec.feature.Contributed;
import org.apache.isis.metamodel.spec.feature.ObjectAssociation;
+import lombok.extern.log4j.Log4j2;
import lombok.val;
@Service
@Named("isisRuntime.ChangedObjectsServiceInternal")
+@Order(OrderPrecedence.HIGH)
+@Primary
@RequestScoped
+@Log4j2
public class ChangedObjectsServiceInternal implements WithTransactionScope {
/**
diff --git a/core/security/api/src/main/java/org/apache/isis/security/api/authentication/standard/AuthenticationManagerStandard.java b/core/security/api/src/main/java/org/apache/isis/security/api/authentication/standard/AuthenticationManagerStandard.java
index eb8f3d6..3d0ae67 100644
--- a/core/security/api/src/main/java/org/apache/isis/security/api/authentication/standard/AuthenticationManagerStandard.java
+++ b/core/security/api/src/main/java/org/apache/isis/security/api/authentication/standard/AuthenticationManagerStandard.java
@@ -27,6 +27,7 @@ import javax.annotation.PostConstruct;
import javax.inject.Inject;
import javax.inject.Named;
+import org.apache.isis.applib.annotation.OrderPrecedence;
import org.apache.isis.applib.services.registry.ServiceRegistry;
import org.apache.isis.applib.util.ToString;
import org.apache.isis.commons.collections.Can;
@@ -38,6 +39,8 @@ import org.apache.isis.security.api.authentication.AuthenticationRequest;
import org.apache.isis.security.api.authentication.AuthenticationSession;
import org.apache.isis.security.api.authentication.manager.AuthenticationManager;
import org.apache.isis.security.api.authentication.manager.RegistrationDetails;
+import org.springframework.context.annotation.Primary;
+import org.springframework.core.annotation.Order;
import org.springframework.stereotype.Service;
import static org.apache.isis.commons.internal.base._With.requires;
@@ -48,6 +51,8 @@ import lombok.val;
@Service
@Named("isisSecurityApi.AuthenticationManagerStandard")
+@Order(OrderPrecedence.DEFAULT)
+@Primary
@Log4j2
public class AuthenticationManagerStandard implements AuthenticationManager {
diff --git a/core/security/keycloak/src/main/java/org/apache/isis/security/keycloak/webmodule/WebModuleKeycloak.java b/core/security/keycloak/src/main/java/org/apache/isis/security/keycloak/webmodule/WebModuleKeycloak.java
index 705fd51..23c515e 100644
--- a/core/security/keycloak/src/main/java/org/apache/isis/security/keycloak/webmodule/WebModuleKeycloak.java
+++ b/core/security/keycloak/src/main/java/org/apache/isis/security/keycloak/webmodule/WebModuleKeycloak.java
@@ -18,15 +18,19 @@
*/
package org.apache.isis.security.keycloak.webmodule;
+import lombok.extern.log4j.Log4j2;
import lombok.val;
+import javax.inject.Named;
import javax.servlet.FilterRegistration.Dynamic;
import javax.servlet.ServletContext;
import javax.servlet.ServletContextListener;
import javax.servlet.ServletException;
+import org.apache.isis.applib.annotation.OrderPrecedence;
import org.apache.isis.webapp.modules.WebModule;
import org.apache.isis.webapp.modules.WebModuleContext;
+import org.springframework.context.annotation.Primary;
import org.springframework.core.Ordered;
import org.springframework.core.annotation.Order;
import org.springframework.stereotype.Service;
@@ -39,7 +43,9 @@ import static org.apache.isis.commons.internal.exceptions._Exceptions.unexpected
* WebModule to enable support for Keycloak.
*/
@Service
-@Order(Ordered.HIGHEST_PRECEDENCE + 100)
+@Named("isisSecKeycloak.WebModuleKeycloak")
+@Order(OrderPrecedence.HIGHEST + 100)
+@Log4j2
public final class WebModuleKeycloak implements WebModule {
private final static String KEYCLOAK_FILTER_CLASS_NAME = KeycloakFilter.class.getName();
diff --git a/core/security/shiro/src/main/java/org/apache/isis/security/shiro/webmodule/WebModuleShiro.java b/core/security/shiro/src/main/java/org/apache/isis/security/shiro/webmodule/WebModuleShiro.java
index 1705470..3faf8c3 100644
--- a/core/security/shiro/src/main/java/org/apache/isis/security/shiro/webmodule/WebModuleShiro.java
+++ b/core/security/shiro/src/main/java/org/apache/isis/security/shiro/webmodule/WebModuleShiro.java
@@ -22,11 +22,13 @@ import java.util.Collection;
import java.util.HashMap;
import java.util.Map;
+import javax.inject.Named;
import javax.servlet.FilterRegistration.Dynamic;
import javax.servlet.ServletContext;
import javax.servlet.ServletContextListener;
import javax.servlet.ServletException;
+import org.apache.isis.applib.annotation.OrderPrecedence;
import org.apache.shiro.config.Ini;
import org.apache.shiro.realm.Realm;
import org.apache.shiro.web.env.EnvironmentLoaderListener;
@@ -51,6 +53,7 @@ import static org.apache.isis.commons.internal.context._Context.getDefaultClassL
import static org.apache.isis.commons.internal.exceptions._Exceptions.unexpectedCodeReach;
import lombok.SneakyThrows;
+import lombok.extern.log4j.Log4j2;
import lombok.val;
/**
@@ -59,8 +62,11 @@ import lombok.val;
* Can be customized via static {@link WebModuleShiro#setShiroEnvironmentClass(Class)}
* @since 2.0
*/
-@Service @Order(Ordered.HIGHEST_PRECEDENCE + 100)
-public final class WebModuleShiro implements WebModule {
+@Service
+@Named("isisSecKeycloak.WebModuleKeycloak")
+@Order(OrderPrecedence.HIGHEST + 200)
+@Log4j2
+public class WebModuleShiro implements WebModule {
private final static String SHIRO_LISTENER_CLASS_NAME = EnvironmentLoaderListenerForIsis.class.getName();
private final static String SHIRO_FILTER_CLASS_NAME = ShiroFilter.class.getName();
diff --git a/core/viewers/restfulobjects/rendering/src/main/java/org/apache/isis/viewer/restfulobjects/rendering/domainobjects/JsonValueEncoder.java b/core/viewers/restfulobjects/rendering/src/main/java/org/apache/isis/viewer/restfulobjects/rendering/domainobjects/JsonValueEncoder.java
index f8d295d..cfca5ff 100644
--- a/core/viewers/restfulobjects/rendering/src/main/java/org/apache/isis/viewer/restfulobjects/rendering/domainobjects/JsonValueEncoder.java
+++ b/core/viewers/restfulobjects/rendering/src/main/java/org/apache/isis/viewer/restfulobjects/rendering/domainobjects/JsonValueEncoder.java
@@ -25,10 +25,14 @@ import java.util.stream.Collectors;
import javax.annotation.PostConstruct;
import javax.inject.Inject;
+import javax.inject.Named;
import javax.inject.Singleton;
import com.fasterxml.jackson.databind.node.NullNode;
+import org.apache.isis.applib.annotation.OrderPrecedence;
+import org.springframework.context.annotation.Primary;
+import org.springframework.core.annotation.Order;
import org.springframework.stereotype.Service;
import org.apache.isis.commons.internal.base._NullSafe;
@@ -43,6 +47,7 @@ import org.apache.isis.viewer.restfulobjects.applib.JsonRepresentation;
import static org.apache.isis.commons.internal.base._With.requires;
+import lombok.extern.log4j.Log4j2;
import lombok.val;
@@ -50,7 +55,12 @@ import lombok.val;
* Similar to Isis' value encoding, but with additional support for JSON
* primitives.
*/
-@Service @Singleton
+@Service
+@Named("isisRoRendering.JsonValueEncoder")
+@Order(OrderPrecedence.HIGH)
+@Primary
+@Singleton
+@Log4j2
public class JsonValueEncoder {
@Inject private SpecificationLoader specificationLoader;
diff --git a/core/viewers/restfulobjects/rendering/src/main/java/org/apache/isis/viewer/restfulobjects/rendering/service/RepresentationServiceContentNegotiator.java b/core/viewers/restfulobjects/rendering/src/main/java/org/apache/isis/viewer/restfulobjects/rendering/service/RepresentationServiceContentNegotiator.java
index da67861..320c910 100644
--- a/core/viewers/restfulobjects/rendering/src/main/java/org/apache/isis/viewer/restfulobjects/rendering/service/RepresentationServiceContentNegotiator.java
+++ b/core/viewers/restfulobjects/rendering/src/main/java/org/apache/isis/viewer/restfulobjects/rendering/service/RepresentationServiceContentNegotiator.java
@@ -18,14 +18,20 @@
*/
package org.apache.isis.viewer.restfulobjects.rendering.service;
+import lombok.extern.log4j.Log4j2;
+
import java.util.List;
import java.util.function.Function;
import javax.annotation.PostConstruct;
import javax.inject.Inject;
+import javax.inject.Named;
import javax.ws.rs.core.Response;
import javax.ws.rs.core.Response.ResponseBuilder;
+import org.apache.isis.applib.annotation.OrderPrecedence;
+import org.springframework.context.annotation.Primary;
+import org.springframework.core.annotation.Order;
import org.springframework.stereotype.Service;
import org.apache.isis.metamodel.spec.ManagedObject;
@@ -40,6 +46,10 @@ import org.apache.isis.viewer.restfulobjects.rendering.service.conneg.ContentNeg
import org.apache.isis.viewer.restfulobjects.rendering.service.conneg.ContentNegotiationServiceForRestfulObjectsV1_0;
@Service
+@Named("isisRoRendering.RepresentationServiceContentNegotiator")
+@Order(OrderPrecedence.HIGH)
+@Primary
+@Log4j2
public class RepresentationServiceContentNegotiator implements RepresentationService {
@Inject List<ContentNegotiationService> contentNegotiationServices;
diff --git a/core/viewers/restfulobjects/rendering/src/main/java/org/apache/isis/viewer/restfulobjects/rendering/service/acceptheader/AcceptHeaderServiceForRest.java b/core/viewers/restfulobjects/rendering/src/main/java/org/apache/isis/viewer/restfulobjects/rendering/service/acceptheader/AcceptHeaderServiceForRest.java
index ee28a12..6860b52 100644
--- a/core/viewers/restfulobjects/rendering/src/main/java/org/apache/isis/viewer/restfulobjects/rendering/service/acceptheader/AcceptHeaderServiceForRest.java
+++ b/core/viewers/restfulobjects/rendering/src/main/java/org/apache/isis/viewer/restfulobjects/rendering/service/acceptheader/AcceptHeaderServiceForRest.java
@@ -35,14 +35,19 @@ import javax.ws.rs.ext.Provider;
import org.apache.isis.applib.annotation.DomainService;
import org.apache.isis.applib.annotation.NatureOfService;
+import org.apache.isis.applib.annotation.OrderPrecedence;
import org.apache.isis.applib.services.acceptheader.AcceptHeaderService;
import org.apache.isis.commons.internal.base._NullSafe;
+import org.springframework.context.annotation.Primary;
+import org.springframework.core.annotation.Order;
import org.springframework.stereotype.Service;
import static org.apache.isis.commons.internal.base._NullSafe.stream;
@Service
@Named("isisRoRendering.AcceptHeaderServiceForRest")
+@Order(OrderPrecedence.DEFAULT)
+@Primary
@RequestScoped
@Log4j2
public class AcceptHeaderServiceForRest implements AcceptHeaderService {
diff --git a/core/viewers/restfulobjects/rendering/src/main/java/org/apache/isis/viewer/restfulobjects/rendering/service/conneg/ContentNegotiationServiceForRestfulObjectsV1_0.java b/core/viewers/restfulobjects/rendering/src/main/java/org/apache/isis/viewer/restfulobjects/rendering/service/conneg/ContentNegotiationServiceForRestfulObjectsV1_0.java
index 95dcb23..7d1f993 100644
--- a/core/viewers/restfulobjects/rendering/src/main/java/org/apache/isis/viewer/restfulobjects/rendering/service/conneg/ContentNegotiationServiceForRestfulObjectsV1_0.java
+++ b/core/viewers/restfulobjects/rendering/src/main/java/org/apache/isis/viewer/restfulobjects/rendering/service/conneg/ContentNegotiationServiceForRestfulObjectsV1_0.java
@@ -32,6 +32,7 @@ import javax.ws.rs.core.Response.ResponseBuilder;
import org.apache.isis.applib.annotation.DomainService;
import org.apache.isis.applib.annotation.NatureOfService;
+import org.apache.isis.applib.annotation.OrderPrecedence;
import org.apache.isis.applib.domain.DomainObjectList;
import org.apache.isis.config.IsisConfiguration;
import org.apache.isis.metamodel.facets.actcoll.typeof.TypeOfFacet;
@@ -59,6 +60,8 @@ import org.apache.isis.viewer.restfulobjects.rendering.domainobjects.ObjectAndPr
import org.apache.isis.viewer.restfulobjects.rendering.domainobjects.ObjectCollectionReprRenderer;
import org.apache.isis.viewer.restfulobjects.rendering.domainobjects.ObjectPropertyReprRenderer;
import org.apache.isis.viewer.restfulobjects.rendering.service.RepresentationService;
+import org.springframework.context.annotation.Primary;
+import org.springframework.core.annotation.Order;
import org.springframework.stereotype.Service;
import lombok.extern.log4j.Log4j2;
@@ -66,6 +69,8 @@ import lombok.val;
@Service
@Named("isisRoRendering.ContentNegotiationServiceForRestfulObjectsV1_0")
+@Order(OrderPrecedence.DEFAULT)
+@Primary
@Log4j2
public class ContentNegotiationServiceForRestfulObjectsV1_0 implements ContentNegotiationService {
diff --git a/core/viewers/restfulobjects/rendering/src/main/java/org/apache/isis/viewer/restfulobjects/rendering/service/conneg/ContentNegotiationServiceOrgApacheIsisV1.java b/core/viewers/restfulobjects/rendering/src/main/java/org/apache/isis/viewer/restfulobjects/rendering/service/conneg/ContentNegotiationServiceOrgApacheIsisV1.java
index 5f05aa6..1e18248 100644
--- a/core/viewers/restfulobjects/rendering/src/main/java/org/apache/isis/viewer/restfulobjects/rendering/service/conneg/ContentNegotiationServiceOrgApacheIsisV1.java
+++ b/core/viewers/restfulobjects/rendering/src/main/java/org/apache/isis/viewer/restfulobjects/rendering/service/conneg/ContentNegotiationServiceOrgApacheIsisV1.java
@@ -26,6 +26,8 @@ import javax.inject.Named;
import javax.ws.rs.core.MediaType;
import javax.ws.rs.core.Response;
+import org.apache.isis.applib.annotation.OrderPrecedence;
+import org.springframework.context.annotation.Primary;
import org.springframework.core.annotation.Order;
import org.apache.isis.applib.annotation.DomainService;
@@ -56,7 +58,7 @@ import lombok.val;
@Service
@Named("isisRoRendering.ContentNegotiationServiceOrgApacheIsisV1")
-@Order(200) //in effect, is the relative priority (lower numbers have higher priority)
+@Order(OrderPrecedence.DEFAULT + 200)
@Log4j2
public class ContentNegotiationServiceOrgApacheIsisV1 extends ContentNegotiationServiceAbstract {
diff --git a/core/viewers/restfulobjects/rendering/src/main/java/org/apache/isis/viewer/restfulobjects/rendering/service/conneg/ContentNegotiationServiceXRoDomainType.java b/core/viewers/restfulobjects/rendering/src/main/java/org/apache/isis/viewer/restfulobjects/rendering/service/conneg/ContentNegotiationServiceXRoDomainType.java
index 5a972e5..4e99b2b 100644
--- a/core/viewers/restfulobjects/rendering/src/main/java/org/apache/isis/viewer/restfulobjects/rendering/service/conneg/ContentNegotiationServiceXRoDomainType.java
+++ b/core/viewers/restfulobjects/rendering/src/main/java/org/apache/isis/viewer/restfulobjects/rendering/service/conneg/ContentNegotiationServiceXRoDomainType.java
@@ -18,12 +18,16 @@
*/
package org.apache.isis.viewer.restfulobjects.rendering.service.conneg;
+import lombok.extern.log4j.Log4j2;
+
import java.util.List;
import javax.inject.Inject;
+import javax.inject.Named;
import javax.ws.rs.core.MediaType;
import javax.ws.rs.core.Response;
+import org.apache.isis.applib.annotation.OrderPrecedence;
import org.springframework.core.annotation.Order;
import org.springframework.stereotype.Service;
@@ -51,7 +55,9 @@ import org.apache.isis.viewer.restfulobjects.rendering.service.RepresentationSer
* </p>
*/
@Service
-@Order(100) //in effect, is the relative priority (lower numbers have higher priority)
+@Named("isisRoRendering.ContentNegotiationServiceXRoDomainType")
+@Order(OrderPrecedence.DEFAULT + 100)
+@Log4j2
public class ContentNegotiationServiceXRoDomainType extends ContentNegotiationServiceAbstract {
public static final String X_RO_DOMAIN_TYPE = "x-ro-domain-type";
diff --git a/core/viewers/restfulobjects/viewer/src/main/java/org/apache/isis/viewer/restfulobjects/viewer/webmodule/WebModuleRestfulObjects.java b/core/viewers/restfulobjects/viewer/src/main/java/org/apache/isis/viewer/restfulobjects/viewer/webmodule/WebModuleRestfulObjects.java
index 3724ab8..9e46a37 100644
--- a/core/viewers/restfulobjects/viewer/src/main/java/org/apache/isis/viewer/restfulobjects/viewer/webmodule/WebModuleRestfulObjects.java
+++ b/core/viewers/restfulobjects/viewer/src/main/java/org/apache/isis/viewer/restfulobjects/viewer/webmodule/WebModuleRestfulObjects.java
@@ -24,6 +24,7 @@ import javax.servlet.ServletContext;
import javax.servlet.ServletContextListener;
import javax.servlet.ServletException;
+import org.apache.isis.applib.annotation.OrderPrecedence;
import org.apache.isis.config.IsisConfiguration;
import org.apache.isis.viewer.restfulobjects.viewer.webmodule.auth.AuthenticationSessionStrategyBasicAuth;
import org.springframework.core.annotation.Order;
@@ -52,7 +53,7 @@ import lombok.val;
*/
@Service
@Named("isisRoViewer.WebModuleRestfulObjects")
-@Order(-80)
+@Order(OrderPrecedence.DEFAULT - 80)
@Log4j2
public final class WebModuleRestfulObjects implements WebModule {
diff --git a/core/viewers/wicket/ui/src/main/java/org/apache/isis/viewer/wicket/ui/components/widgets/themepicker/IsisWicketThemeSupportDefault.java b/core/viewers/wicket/ui/src/main/java/org/apache/isis/viewer/wicket/ui/components/widgets/themepicker/IsisWicketThemeSupportDefault.java
index 2e494a4..d691265 100644
--- a/core/viewers/wicket/ui/src/main/java/org/apache/isis/viewer/wicket/ui/components/widgets/themepicker/IsisWicketThemeSupportDefault.java
+++ b/core/viewers/wicket/ui/src/main/java/org/apache/isis/viewer/wicket/ui/components/widgets/themepicker/IsisWicketThemeSupportDefault.java
@@ -23,7 +23,11 @@ import java.util.Set;
import java.util.stream.Collectors;
import javax.inject.Inject;
+import javax.inject.Named;
+import org.apache.isis.applib.annotation.OrderPrecedence;
+import org.springframework.context.annotation.Primary;
+import org.springframework.core.annotation.Order;
import org.springframework.stereotype.Service;
import org.apache.isis.applib.services.registry.ServiceRegistry;
@@ -41,7 +45,11 @@ import lombok.extern.log4j.Log4j2;
/**
* @since 2.0
*/
-@Service @Log4j2
+@Service
+@Named("isisWicketUi.IsisWicketThemeSupportDefault")
+@Order(OrderPrecedence.DEFAULT)
+@Primary
+@Log4j2
public class IsisWicketThemeSupportDefault implements IsisWicketThemeSupport {
private final _Lazy<ThemeProviderComposite> themeProvider = _Lazy.of(this::createThemeProvider);
diff --git a/core/viewers/wicket/viewer/src/main/java/org/apache/isis/viewer/wicket/viewer/registries/components/ComponentFactoryRegistrarDefault.java b/core/viewers/wicket/viewer/src/main/java/org/apache/isis/viewer/wicket/viewer/registries/components/ComponentFactoryRegistrarDefault.java
index e9abf95..f96b2d0 100644
--- a/core/viewers/wicket/viewer/src/main/java/org/apache/isis/viewer/wicket/viewer/registries/components/ComponentFactoryRegistrarDefault.java
+++ b/core/viewers/wicket/viewer/src/main/java/org/apache/isis/viewer/wicket/viewer/registries/components/ComponentFactoryRegistrarDefault.java
@@ -19,8 +19,15 @@
package org.apache.isis.viewer.wicket.viewer.registries.components;
+import lombok.extern.log4j.Log4j2;
+
import java.util.ServiceLoader;
+import javax.inject.Named;
+
+import org.apache.isis.applib.annotation.OrderPrecedence;
+import org.springframework.context.annotation.Primary;
+import org.springframework.core.annotation.Order;
import org.springframework.stereotype.Service;
import org.apache.isis.commons.internal.context._Plugin;
@@ -95,6 +102,10 @@ import org.apache.isis.viewer.wicket.ui.components.widgets.entitysimplelink.Enti
* <tt>META-INF/services</tt>).
*/
@Service
+@Named("isisWicketViewer.ComponentFactoryRegistrarDefault")
+@Order(OrderPrecedence.DEFAULT)
+@Primary
+@Log4j2
public class ComponentFactoryRegistrarDefault implements ComponentFactoryRegistrar {
@Override
diff --git a/core/viewers/wicket/viewer/src/main/java/org/apache/isis/viewer/wicket/viewer/registries/components/ComponentFactoryRegistryDefault.java b/core/viewers/wicket/viewer/src/main/java/org/apache/isis/viewer/wicket/viewer/registries/components/ComponentFactoryRegistryDefault.java
index bbc7e87..d1505a5 100644
--- a/core/viewers/wicket/viewer/src/main/java/org/apache/isis/viewer/wicket/viewer/registries/components/ComponentFactoryRegistryDefault.java
+++ b/core/viewers/wicket/viewer/src/main/java/org/apache/isis/viewer/wicket/viewer/registries/components/ComponentFactoryRegistryDefault.java
@@ -26,10 +26,14 @@ import java.util.stream.Collectors;
import javax.annotation.PostConstruct;
import javax.inject.Inject;
+import javax.inject.Named;
+import org.apache.isis.applib.annotation.OrderPrecedence;
import org.apache.wicket.Component;
import org.apache.wicket.MarkupContainer;
import org.apache.wicket.model.IModel;
+import org.springframework.context.annotation.Primary;
+import org.springframework.core.annotation.Order;
import org.springframework.stereotype.Service;
import org.apache.isis.commons.internal.collections._Lists;
@@ -45,6 +49,7 @@ import org.apache.isis.viewer.wicket.ui.app.registry.ComponentFactoryRegistrar.C
import org.apache.isis.viewer.wicket.ui.app.registry.ComponentFactoryRegistry;
import org.apache.isis.webapp.context.IsisWebAppCommonContext;
+import lombok.extern.log4j.Log4j2;
import lombok.val;
/**
@@ -52,6 +57,10 @@ import lombok.val;
* provided {@link ComponentFactoryRegistrar}.
*/
@Service
+@Named("isisWicketViewer.ComponentFactoryRegistryDefault")
+@Order(OrderPrecedence.DEFAULT)
+@Primary
+@Log4j2
public class ComponentFactoryRegistryDefault implements ComponentFactoryRegistry {
@Inject private ComponentFactoryRegistrar componentFactoryRegistrar;
diff --git a/core/viewers/wicket/viewer/src/main/java/org/apache/isis/viewer/wicket/viewer/registries/pages/PageClassListDefault.java b/core/viewers/wicket/viewer/src/main/java/org/apache/isis/viewer/wicket/viewer/registries/pages/PageClassListDefault.java
index ecc2fbc..dd79c1c 100644
--- a/core/viewers/wicket/viewer/src/main/java/org/apache/isis/viewer/wicket/viewer/registries/pages/PageClassListDefault.java
+++ b/core/viewers/wicket/viewer/src/main/java/org/apache/isis/viewer/wicket/viewer/registries/pages/PageClassListDefault.java
@@ -19,7 +19,14 @@
package org.apache.isis.viewer.wicket.viewer.registries.pages;
+import lombok.extern.log4j.Log4j2;
+
+import javax.inject.Named;
+
+import org.apache.isis.applib.annotation.OrderPrecedence;
import org.apache.wicket.Page;
+import org.springframework.context.annotation.Primary;
+import org.springframework.core.annotation.Order;
import org.springframework.stereotype.Service;
import org.apache.isis.viewer.wicket.model.models.PageType;
@@ -42,6 +49,10 @@ import org.apache.isis.viewer.wicket.ui.pages.voidreturn.VoidReturnPage;
* for each of the {@link PageType}s.
*/
@Service
+@Named("isisWicketViewer.PageClassListDefault")
+@Order(OrderPrecedence.DEFAULT)
+@Primary
+@Log4j2
public class PageClassListDefault implements PageClassList {
private static final long serialVersionUID = 1L;
diff --git a/core/viewers/wicket/viewer/src/main/java/org/apache/isis/viewer/wicket/viewer/registries/pages/PageClassRegistryDefault.java b/core/viewers/wicket/viewer/src/main/java/org/apache/isis/viewer/wicket/viewer/registries/pages/PageClassRegistryDefault.java
index a34d1eb..5853bfc 100644
--- a/core/viewers/wicket/viewer/src/main/java/org/apache/isis/viewer/wicket/viewer/registries/pages/PageClassRegistryDefault.java
+++ b/core/viewers/wicket/viewer/src/main/java/org/apache/isis/viewer/wicket/viewer/registries/pages/PageClassRegistryDefault.java
@@ -19,12 +19,18 @@
package org.apache.isis.viewer.wicket.viewer.registries.pages;
+import lombok.extern.log4j.Log4j2;
+
import java.util.Map;
import javax.annotation.PostConstruct;
import javax.inject.Inject;
+import javax.inject.Named;
+import org.apache.isis.applib.annotation.OrderPrecedence;
import org.apache.wicket.Page;
+import org.springframework.context.annotation.Primary;
+import org.springframework.core.annotation.Order;
import org.springframework.stereotype.Service;
import org.apache.isis.commons.internal.collections._Maps;
@@ -38,6 +44,10 @@ import org.apache.isis.viewer.wicket.ui.pages.PageClassRegistrySpi;
* underlying {@link PageClassList}.
*/
@Service
+@Named("isisWicketViewer.PageClassRegistryDefault")
+@Order(OrderPrecedence.DEFAULT)
+@Primary
+@Log4j2
public class PageClassRegistryDefault implements PageClassRegistry, PageClassRegistrySpi {
private static final long serialVersionUID = 1L;
diff --git a/core/viewers/wicket/viewer/src/main/java/org/apache/isis/viewer/wicket/viewer/registries/pages/PageNavigationServiceDefault.java b/core/viewers/wicket/viewer/src/main/java/org/apache/isis/viewer/wicket/viewer/registries/pages/PageNavigationServiceDefault.java
index 9016edf..1a62e97 100644
--- a/core/viewers/wicket/viewer/src/main/java/org/apache/isis/viewer/wicket/viewer/registries/pages/PageNavigationServiceDefault.java
+++ b/core/viewers/wicket/viewer/src/main/java/org/apache/isis/viewer/wicket/viewer/registries/pages/PageNavigationServiceDefault.java
@@ -19,13 +19,19 @@
package org.apache.isis.viewer.wicket.viewer.registries.pages;
+import lombok.extern.log4j.Log4j2;
+
import javax.inject.Inject;
+import javax.inject.Named;
+import org.apache.isis.applib.annotation.OrderPrecedence;
import org.apache.wicket.Page;
import org.apache.wicket.RestartResponseAtInterceptPageException;
import org.apache.wicket.RestartResponseException;
import org.apache.wicket.request.cycle.RequestCycle;
import org.apache.wicket.request.mapper.parameter.PageParameters;
+import org.springframework.context.annotation.Primary;
+import org.springframework.core.annotation.Order;
import org.springframework.stereotype.Service;
import org.apache.isis.viewer.wicket.model.models.PageType;
@@ -36,6 +42,10 @@ import org.apache.isis.viewer.wicket.ui.pages.PageNavigationService;
* Default implementation of {@link org.apache.isis.viewer.wicket.ui.pages.PageNavigationService}
*/
@Service
+@Named("isisWicketViewer.PageNavigationServiceDefault")
+@Order(OrderPrecedence.DEFAULT)
+@Primary
+@Log4j2
public class PageNavigationServiceDefault implements PageNavigationService {
private static final long serialVersionUID = 1L;
diff --git a/core/viewers/wicket/viewer/src/main/java/org/apache/isis/viewer/wicket/viewer/services/BookmarkUiServiceWicket.java b/core/viewers/wicket/viewer/src/main/java/org/apache/isis/viewer/wicket/viewer/services/BookmarkUiServiceWicket.java
index 2fc172f..86d8fa1 100644
--- a/core/viewers/wicket/viewer/src/main/java/org/apache/isis/viewer/wicket/viewer/services/BookmarkUiServiceWicket.java
+++ b/core/viewers/wicket/viewer/src/main/java/org/apache/isis/viewer/wicket/viewer/services/BookmarkUiServiceWicket.java
@@ -20,6 +20,9 @@ package org.apache.isis.viewer.wicket.viewer.services;
import javax.inject.Named;
+import org.apache.isis.applib.annotation.OrderPrecedence;
+import org.springframework.context.annotation.Primary;
+import org.springframework.core.annotation.Order;
import org.springframework.stereotype.Service;
import org.apache.isis.applib.services.bookmarkui.BookmarkUiService;
@@ -29,6 +32,8 @@ import lombok.extern.log4j.Log4j2;
@Service
@Named("isisWicketViewer.BookmarkUiServiceWicket")
+@Order(OrderPrecedence.HIGH)
+@Primary
@Log4j2
public class BookmarkUiServiceWicket implements BookmarkUiService {
diff --git a/core/viewers/wicket/viewer/src/main/java/org/apache/isis/viewer/wicket/viewer/services/DeepLinkServiceWicket.java b/core/viewers/wicket/viewer/src/main/java/org/apache/isis/viewer/wicket/viewer/services/DeepLinkServiceWicket.java
index c46f571..9bd6e93 100644
--- a/core/viewers/wicket/viewer/src/main/java/org/apache/isis/viewer/wicket/viewer/services/DeepLinkServiceWicket.java
+++ b/core/viewers/wicket/viewer/src/main/java/org/apache/isis/viewer/wicket/viewer/services/DeepLinkServiceWicket.java
@@ -18,15 +18,21 @@
*/
package org.apache.isis.viewer.wicket.viewer.services;
+import lombok.extern.log4j.Log4j2;
+
import java.net.URI;
import java.net.URISyntaxException;
import javax.inject.Inject;
+import javax.inject.Named;
+import org.apache.isis.applib.annotation.OrderPrecedence;
import org.apache.wicket.Page;
import org.apache.wicket.request.Url;
import org.apache.wicket.request.cycle.RequestCycle;
import org.apache.wicket.request.mapper.parameter.PageParameters;
+import org.springframework.context.annotation.Primary;
+import org.springframework.core.annotation.Order;
import org.springframework.stereotype.Service;
import org.apache.isis.applib.services.linking.DeepLinkService;
@@ -41,6 +47,10 @@ import org.apache.isis.viewer.wicket.ui.pages.PageClassRegistry;
* for Wicket Viewer
*/
@Service
+@Named("isisWicketViewer.DeepLinkServiceWicket")
+@Order(OrderPrecedence.HIGH)
+@Primary
+@Log4j2
public class DeepLinkServiceWicket implements DeepLinkService {
@Inject private PageClassRegistry pageClassRegistry;
diff --git a/core/viewers/wicket/viewer/src/main/java/org/apache/isis/viewer/wicket/viewer/services/HintStoreUsingWicketSession.java b/core/viewers/wicket/viewer/src/main/java/org/apache/isis/viewer/wicket/viewer/services/HintStoreUsingWicketSession.java
index ece2f3e..82f703d 100644
--- a/core/viewers/wicket/viewer/src/main/java/org/apache/isis/viewer/wicket/viewer/services/HintStoreUsingWicketSession.java
+++ b/core/viewers/wicket/viewer/src/main/java/org/apache/isis/viewer/wicket/viewer/services/HintStoreUsingWicketSession.java
@@ -24,7 +24,10 @@ import java.util.Set;
import javax.inject.Named;
+import org.apache.isis.applib.annotation.OrderPrecedence;
import org.apache.wicket.Session;
+import org.springframework.context.annotation.Primary;
+import org.springframework.core.annotation.Order;
import org.springframework.stereotype.Service;
import org.apache.isis.applib.services.bookmark.Bookmark;
@@ -35,6 +38,8 @@ import lombok.extern.log4j.Log4j2;
@Service
@Named("isisWicketViewer.HintStoreUsingWicketSession")
+@Order(OrderPrecedence.HIGH)
+@Primary
@Log4j2
public class HintStoreUsingWicketSession implements HintStore {
diff --git a/core/viewers/wicket/viewer/src/main/java/org/apache/isis/viewer/wicket/viewer/services/ImageResourceCacheClassPath.java b/core/viewers/wicket/viewer/src/main/java/org/apache/isis/viewer/wicket/viewer/services/ImageResourceCacheClassPath.java
index 9830b7a..54f393d 100644
--- a/core/viewers/wicket/viewer/src/main/java/org/apache/isis/viewer/wicket/viewer/services/ImageResourceCacheClassPath.java
+++ b/core/viewers/wicket/viewer/src/main/java/org/apache/isis/viewer/wicket/viewer/services/ImageResourceCacheClassPath.java
@@ -26,8 +26,11 @@ import java.util.Collections;
import java.util.List;
import java.util.Map;
+import org.apache.isis.applib.annotation.OrderPrecedence;
import org.apache.wicket.request.resource.PackageResourceReference;
import org.apache.wicket.request.resource.ResourceReference;
+import org.springframework.context.annotation.Primary;
+import org.springframework.core.annotation.Order;
import org.springframework.stereotype.Service;
import org.apache.isis.commons.internal.collections._Lists;
@@ -39,6 +42,9 @@ import org.apache.isis.metamodel.spec.Specification;
import org.apache.isis.viewer.wicket.model.models.ImageResourceCache;
import images.Images;
+import lombok.extern.log4j.Log4j2;
+
+import javax.inject.Named;
/**
* Caches images loaded either from the same package as the specified object, or from the <tt>images</tt> package (using the {@link Images} otherwise.
@@ -48,6 +54,10 @@ import images.Images;
* Searches for a fixed set of suffixes: <code>png, gif, jpeg, jpg, svg</code>.
*/
@Service
+@Named("isisWicketViewer.ImageResourceCacheClassPath")
+@Order(OrderPrecedence.DEFAULT)
+@Primary
+@Log4j2
public class ImageResourceCacheClassPath implements ImageResourceCache {
private static final long serialVersionUID = 1L;
diff --git a/core/viewers/wicket/viewer/src/main/java/org/apache/isis/viewer/wicket/viewer/services/LocaleProviderWicket.java b/core/viewers/wicket/viewer/src/main/java/org/apache/isis/viewer/wicket/viewer/services/LocaleProviderWicket.java
index e71ef81..86813f02 100644
--- a/core/viewers/wicket/viewer/src/main/java/org/apache/isis/viewer/wicket/viewer/services/LocaleProviderWicket.java
+++ b/core/viewers/wicket/viewer/src/main/java/org/apache/isis/viewer/wicket/viewer/services/LocaleProviderWicket.java
@@ -18,11 +18,18 @@
*/
package org.apache.isis.viewer.wicket.viewer.services;
+import lombok.extern.log4j.Log4j2;
+
import java.util.Locale;
+import javax.inject.Named;
+
+import org.apache.isis.applib.annotation.OrderPrecedence;
import org.apache.wicket.Application;
import org.apache.wicket.Session;
import org.apache.wicket.request.cycle.RequestCycle;
+import org.springframework.context.annotation.Primary;
+import org.springframework.core.annotation.Order;
import org.springframework.stereotype.Service;
import org.apache.isis.applib.services.i18n.LocaleProvider;
@@ -32,6 +39,10 @@ import org.apache.isis.applib.services.i18n.LocaleProvider;
* An implementation that provides the locale of the current session.
*/
@Service
+@Named("isisWicketViewer.LocaleProviderWicket")
+@Order(OrderPrecedence.DEFAULT)
+@Primary
+@Log4j2
public class LocaleProviderWicket implements LocaleProvider {
@Override
diff --git a/core/viewers/wicket/viewer/src/main/java/org/apache/isis/viewer/wicket/viewer/services/TranslationsResolverWicket.java b/core/viewers/wicket/viewer/src/main/java/org/apache/isis/viewer/wicket/viewer/services/TranslationsResolverWicket.java
index 90b091d..132c4cd 100644
--- a/core/viewers/wicket/viewer/src/main/java/org/apache/isis/viewer/wicket/viewer/services/TranslationsResolverWicket.java
+++ b/core/viewers/wicket/viewer/src/main/java/org/apache/isis/viewer/wicket/viewer/services/TranslationsResolverWicket.java
@@ -29,8 +29,12 @@ import java.util.List;
import java.util.regex.Pattern;
import java.util.stream.Collectors;
+import javax.inject.Named;
import javax.servlet.ServletContext;
+import org.apache.isis.applib.annotation.OrderPrecedence;
+import org.springframework.context.annotation.Primary;
+import org.springframework.core.annotation.Order;
import org.springframework.stereotype.Service;
import org.apache.isis.applib.services.i18n.TranslationsResolver;
@@ -44,7 +48,11 @@ import lombok.extern.log4j.Log4j2;
/**
* An implementation that reads from /WEB-INF/...
*/
-@Service @Log4j2
+@Service
+@Named("isisWicketViewer.TranslationsResolverWicket")
+@Order(OrderPrecedence.DEFAULT)
+@Primary
+@Log4j2
public class TranslationsResolverWicket implements TranslationsResolver {
/**
diff --git a/core/viewers/wicket/viewer/src/main/java/org/apache/isis/viewer/wicket/viewer/services/WicketViewerSettingsDefault.java b/core/viewers/wicket/viewer/src/main/java/org/apache/isis/viewer/wicket/viewer/services/WicketViewerSettingsDefault.java
index d296b30..0295da3 100644
--- a/core/viewers/wicket/viewer/src/main/java/org/apache/isis/viewer/wicket/viewer/services/WicketViewerSettingsDefault.java
+++ b/core/viewers/wicket/viewer/src/main/java/org/apache/isis/viewer/wicket/viewer/services/WicketViewerSettingsDefault.java
@@ -20,7 +20,11 @@
package org.apache.isis.viewer.wicket.viewer.services;
import javax.inject.Inject;
+import javax.inject.Named;
+import org.apache.isis.applib.annotation.OrderPrecedence;
+import org.springframework.context.annotation.Primary;
+import org.springframework.core.annotation.Order;
import org.springframework.stereotype.Service;
import org.apache.isis.applib.annotation.PromptStyle;
@@ -28,8 +32,13 @@ import org.apache.isis.config.IsisConfiguration;
import org.apache.isis.viewer.wicket.model.isis.WicketViewerSettings;
import lombok.Getter;
+import lombok.extern.log4j.Log4j2;
@Service
+@Named("isisWicketViewer.WicketViewerSettingsDefault")
+@Order(OrderPrecedence.DEFAULT)
+@Primary
+@Log4j2
public class WicketViewerSettingsDefault implements WicketViewerSettings {
private static final long serialVersionUID = 1L;
diff --git a/core/viewers/wicket/viewer/src/main/java/org/apache/isis/viewer/wicket/viewer/services/mementos/ObjectMementoServiceWicket.java b/core/viewers/wicket/viewer/src/main/java/org/apache/isis/viewer/wicket/viewer/services/mementos/ObjectMementoServiceWicket.java
index 441225c..ff840c2 100644
--- a/core/viewers/wicket/viewer/src/main/java/org/apache/isis/viewer/wicket/viewer/services/mementos/ObjectMementoServiceWicket.java
+++ b/core/viewers/wicket/viewer/src/main/java/org/apache/isis/viewer/wicket/viewer/services/mementos/ObjectMementoServiceWicket.java
@@ -25,6 +25,9 @@ import javax.inject.Inject;
import javax.inject.Named;
import javax.inject.Singleton;
+import org.apache.isis.applib.annotation.OrderPrecedence;
+import org.springframework.context.annotation.Primary;
+import org.springframework.core.annotation.Order;
import org.springframework.stereotype.Service;
import org.apache.isis.applib.services.bookmark.Bookmark;
@@ -50,6 +53,8 @@ import lombok.val;
*/
@Service
@Named("isisWicketViewer.ObjectMementoServiceWicket")
+@Order(OrderPrecedence.DEFAULT)
+@Primary
@Singleton
public class ObjectMementoServiceWicket
implements ObjectMementoService {
diff --git a/core/viewers/wicket/viewer/src/main/java/org/apache/isis/viewer/wicket/viewer/webmodule/WebModuleWicket.java b/core/viewers/wicket/viewer/src/main/java/org/apache/isis/viewer/wicket/viewer/webmodule/WebModuleWicket.java
index 77a7d0f..b5cb7cb 100644
--- a/core/viewers/wicket/viewer/src/main/java/org/apache/isis/viewer/wicket/viewer/webmodule/WebModuleWicket.java
+++ b/core/viewers/wicket/viewer/src/main/java/org/apache/isis/viewer/wicket/viewer/webmodule/WebModuleWicket.java
@@ -18,14 +18,19 @@
*/
package org.apache.isis.viewer.wicket.viewer.webmodule;
+import lombok.extern.log4j.Log4j2;
+
import javax.inject.Inject;
+import javax.inject.Named;
import javax.servlet.Filter;
import javax.servlet.FilterRegistration.Dynamic;
import javax.servlet.ServletContext;
import javax.servlet.ServletContextListener;
import javax.servlet.ServletException;
+import org.apache.isis.applib.annotation.OrderPrecedence;
import org.apache.wicket.protocol.http.WicketFilter;
+import org.springframework.context.annotation.Primary;
import org.springframework.core.annotation.Order;
import org.springframework.stereotype.Service;
@@ -45,7 +50,11 @@ import static org.apache.isis.commons.internal.exceptions._Exceptions.unexpected
* WebModule that provides the Wicket Viewer.
* @since 2.0
*/
-@Service @Order(-80)
+@Service
+@Named("isisWicketViewer.WebModuleWicket")
+@Order(OrderPrecedence.DEFAULT - 80)
+@Primary
+@Log4j2
public final class WebModuleWicket implements WebModule {
private final static String WICKET_FILTER_CLASS_NAME = WicketFilter.class.getName();
diff --git a/core/webapp/src/main/java/org/apache/isis/webapp/modules/logonlog/WebModuleLogOnExceptionLogger.java b/core/webapp/src/main/java/org/apache/isis/webapp/modules/logonlog/WebModuleLogOnExceptionLogger.java
index 5d98083..1088e18 100644
--- a/core/webapp/src/main/java/org/apache/isis/webapp/modules/logonlog/WebModuleLogOnExceptionLogger.java
+++ b/core/webapp/src/main/java/org/apache/isis/webapp/modules/logonlog/WebModuleLogOnExceptionLogger.java
@@ -18,6 +18,9 @@
*/
package org.apache.isis.webapp.modules.logonlog;
+import lombok.extern.log4j.Log4j2;
+
+import javax.inject.Named;
import javax.servlet.Filter;
import javax.servlet.FilterRegistration.Dynamic;
import javax.servlet.ServletContext;
@@ -42,7 +45,10 @@ import static org.apache.isis.commons.internal.exceptions._Exceptions.unexpected
*
* @since 2.0
*/
-@Service @Order(Ordered.LOWEST_PRECEDENCE)
+@Service
+@Named("isisWebapp.WebModuleLogOnExceptionLogger")
+@Order(Ordered.LOWEST_PRECEDENCE) // TODO: should this not be the highest precedence, ie first in stack?
+@Log4j2
public final class WebModuleLogOnExceptionLogger implements WebModule {
private final static String LOGONLOGGER_FILTER_CLASS_NAME = IsisLogOnExceptionFilter.class.getName();
diff --git a/core/webapp/src/main/java/org/apache/isis/webapp/modules/templresources/WebModuleTemplateResources.java b/core/webapp/src/main/java/org/apache/isis/webapp/modules/templresources/WebModuleTemplateResources.java
index 8778bc3..316fce4 100644
--- a/core/webapp/src/main/java/org/apache/isis/webapp/modules/templresources/WebModuleTemplateResources.java
+++ b/core/webapp/src/main/java/org/apache/isis/webapp/modules/templresources/WebModuleTemplateResources.java
@@ -18,11 +18,15 @@
*/
package org.apache.isis.webapp.modules.templresources;
+import lombok.extern.log4j.Log4j2;
+
+import javax.inject.Named;
import javax.servlet.FilterRegistration.Dynamic;
import javax.servlet.ServletContext;
import javax.servlet.ServletContextListener;
import javax.servlet.ServletException;
+import org.apache.isis.applib.annotation.OrderPrecedence;
import org.springframework.core.annotation.Order;
import org.springframework.stereotype.Service;
@@ -34,7 +38,10 @@ import org.apache.isis.webapp.modules.WebModuleContext;
*
* @since 2.0
*/
-@Service @Order(-100)
+@Service
+@Named("isisWebapp.WebModuleTemplateResources")
+@Order(OrderPrecedence.DEFAULT - 100)
+@Log4j2
public final class WebModuleTemplateResources implements WebModule {
private final static String[] urlPatterns = { "*.thtml" };
diff --git a/examples/demo/src/main/java/demoapp/dom/error/service/DemoErrorReportingService.java b/examples/demo/src/main/java/demoapp/dom/error/service/DemoErrorReportingService.java
index e4fe595..5110d2e 100644
--- a/examples/demo/src/main/java/demoapp/dom/error/service/DemoErrorReportingService.java
+++ b/examples/demo/src/main/java/demoapp/dom/error/service/DemoErrorReportingService.java
@@ -26,6 +26,7 @@ import org.apache.isis.applib.services.error.Ticket;
import org.apache.isis.applib.services.error.Ticket.StackTracePolicy;
import org.apache.isis.runtime.services.error.EmailTicket;
import org.apache.isis.runtime.services.error.EmailTicket.MailTo;
+import org.springframework.beans.factory.annotation.Qualifier;
import org.springframework.stereotype.Service;
import lombok.val;
@@ -34,6 +35,7 @@ import javax.inject.Named;
@Service
@Named("demoapp.demoErrorReportingService")
+@Qualifier("demo")
public class DemoErrorReportingService implements ErrorReportingService {
@Override
diff --git a/examples/demo/src/main/java/demoapp/dom/events/EventSubscriber.java b/examples/demo/src/main/java/demoapp/dom/events/EventSubscriber.java
index 91d601d..a3abb62 100644
--- a/examples/demo/src/main/java/demoapp/dom/events/EventSubscriber.java
+++ b/examples/demo/src/main/java/demoapp/dom/events/EventSubscriber.java
@@ -22,6 +22,7 @@ import javax.annotation.PostConstruct;
import javax.inject.Inject;
import javax.inject.Named;
+import org.springframework.beans.factory.annotation.Qualifier;
import org.springframework.context.event.EventListener;
import org.springframework.stereotype.Component;
@@ -39,6 +40,7 @@ import lombok.extern.log4j.Log4j2;
@Service
@Named("demoapp.eventSubscriber")
+@Qualifier("demo")
@Log4j2
public class EventSubscriber {
diff --git a/examples/demo/src/main/java/demoapp/dom/jee/JeeDemoService.java b/examples/demo/src/main/java/demoapp/dom/jee/JeeDemoService.java
index ba028e1..68dba18 100644
--- a/examples/demo/src/main/java/demoapp/dom/jee/JeeDemoService.java
+++ b/examples/demo/src/main/java/demoapp/dom/jee/JeeDemoService.java
@@ -18,9 +18,15 @@
*/
package demoapp.dom.jee;
+import lombok.extern.log4j.Log4j2;
+
+import javax.inject.Named;
+
import org.springframework.stereotype.Service;
@Service
+@Named("demoapp.JeeDemoService")
+@Log4j2
public class JeeDemoService {
public String getMessage() {
diff --git a/examples/demo/src/main/java/demoapp/utils/LibraryPreloadingService.java b/examples/demo/src/main/java/demoapp/utils/LibraryPreloadingService.java
index 7dd4a32..be331e6 100644
--- a/examples/demo/src/main/java/demoapp/utils/LibraryPreloadingService.java
+++ b/examples/demo/src/main/java/demoapp/utils/LibraryPreloadingService.java
@@ -19,6 +19,7 @@
package demoapp.utils;
import javax.annotation.PostConstruct;
+import javax.inject.Named;
import org.springframework.stereotype.Service;
@@ -26,9 +27,12 @@ import org.apache.isis.commons.internal.concurrent._ConcurrentContext;
import org.apache.isis.commons.internal.concurrent._ConcurrentTaskList;
import org.apache.isis.extensions.asciidoc.applib.value.AsciiDoc;
+import lombok.extern.log4j.Log4j2;
import lombok.val;
@Service
+@Named("demoapp.LibraryPreloadingService")
+@Log4j2
public class LibraryPreloadingService {
@PostConstruct