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/01/04 14:10:33 UTC
[isis] 02/02: ISIS-2010: work in progress going through references
to DOMAIN
This is an automated email from the ASF dual-hosted git repository.
danhaywood pushed a commit to branch ISIS-2010
in repository https://gitbox.apache.org/repos/asf/isis.git
commit 6698f9dbf42148a8289b1c232786f3e4cf0225c4
Author: danhaywood <da...@haywood-associates.co.uk>
AuthorDate: Fri Oct 19 13:51:42 2018 +0100
ISIS-2010: work in progress going through references to DOMAIN
Have added DOMAIN_API, now need to look at existing uses of DOMAIN and see how they should be handled.
---
.../isis/applib/annotation/NatureOfService.java | 28 ++++++++++++++++------
.../conmap/ContentMappingServiceForCommandDto.java | 2 --
.../ContentMappingServiceForCommandsDto.java | 2 --
.../fixturescripts/ExecutionParametersService.java | 1 -
.../isis/applib/mixins/dto/DtoMappingHelper.java | 7 +++---
.../services/audit/AuditerServiceLogging.java | 1 -
.../ClassDiscoveryServiceDefault.java | 1 -
.../isis/applib/services/clock/ClockService.java | 5 ----
.../applib/services/iactn/InteractionContext.java | 3 ---
.../QueryResultsCacheControlInternal.java | 1 -
.../QueryResultsCacheInternal.java | 6 -----
.../services/routing/RoutingServiceDefault.java | 2 --
.../applib/services/scratchpad/Scratchpad.java | 3 ---
.../UrlEncodingServiceWithCompression.java | 2 +-
.../HeadlessTransactionSupportDefault.java | 5 +++-
.../actions/layout/ActionLayoutFacetFactory.java | 4 ----
.../object/domainservice/DomainServiceFacet.java | 10 --------
.../specimpl/dflt/ObjectSpecificationDefault.java | 14 +++++------
...eptionRecognizerCompositeForJdoObjectStore.java | 2 --
19 files changed, 36 insertions(+), 63 deletions(-)
diff --git a/core/applib/src/main/java/org/apache/isis/applib/annotation/NatureOfService.java b/core/applib/src/main/java/org/apache/isis/applib/annotation/NatureOfService.java
index e64fb4f..0595353 100644
--- a/core/applib/src/main/java/org/apache/isis/applib/annotation/NatureOfService.java
+++ b/core/applib/src/main/java/org/apache/isis/applib/annotation/NatureOfService.java
@@ -45,27 +45,41 @@ public enum NatureOfService {
*/
VIEW_REST_ONLY,
/**
- * The service's actions do not appear on menus and are not contributed.
+ * The service's actions do not appear on menus and are not contributed, but can be {@link org.apache.isis.applib.services.wrapper.WrapperFactory#wrap(Object) wrapped}.
+ */
+ DOMAIN_API,
+ /**
+ * The domain service methods are NOT part of the metamodel and instead are intended only to be invoked programmatically.
*/
DOMAIN;
- boolean isViewRestOnly() {
+ public boolean isViewRestOnly() {
return this == VIEW_REST_ONLY;
}
- boolean isView() {
+ public boolean isView() {
return this == VIEW;
}
- boolean isViewMenuOnly() {
+ public boolean isViewMenuOnly() {
return this == VIEW_MENU_ONLY;
}
- boolean isViewContributionsOnly() {
+ public boolean isViewContributionsOnly() {
return this == VIEW_CONTRIBUTIONS_ONLY;
}
- boolean isDomain() {
+
+ /**
+ * Is either {@link #DOMAIN domain (implementation)} or {@link #DOMAIN_API domain (api)}.
+ */
+ public boolean isDomain() {
+ return this == DOMAIN || this == DOMAIN_API;
+ }
+ public boolean isDomainImpl() {
return this == DOMAIN;
}
+ public boolean isDomainApi() {
+ return this == DOMAIN_API;
+ }
- boolean isViewOrViewMenuOnly() {
+ public boolean isViewOrViewMenuOnly() {
return isView() || isViewMenuOnly();
}
diff --git a/core/applib/src/main/java/org/apache/isis/applib/conmap/ContentMappingServiceForCommandDto.java b/core/applib/src/main/java/org/apache/isis/applib/conmap/ContentMappingServiceForCommandDto.java
index 1d59aea..1ea5ae6 100644
--- a/core/applib/src/main/java/org/apache/isis/applib/conmap/ContentMappingServiceForCommandDto.java
+++ b/core/applib/src/main/java/org/apache/isis/applib/conmap/ContentMappingServiceForCommandDto.java
@@ -46,7 +46,6 @@ import org.apache.isis.schema.utils.jaxbadapters.JavaSqlTimestampXmlGregorianCal
public class ContentMappingServiceForCommandDto implements ContentMappingService {
@Override
- @Programmatic
public Object map(Object object, final List<MediaType> acceptableMediaTypes) {
final boolean supported = Util.isSupported(CommandDto.class, acceptableMediaTypes);
if(!supported) {
@@ -59,7 +58,6 @@ public class ContentMappingServiceForCommandDto implements ContentMappingService
/**
* Not part of the {@link ContentMappingService} API.
*/
- @Programmatic
public CommandDto map(final CommandWithDto commandWithDto) {
return asProcessedDto(commandWithDto);
}
diff --git a/core/applib/src/main/java/org/apache/isis/applib/conmap/ContentMappingServiceForCommandsDto.java b/core/applib/src/main/java/org/apache/isis/applib/conmap/ContentMappingServiceForCommandsDto.java
index 6934b6a..f7b34f4 100644
--- a/core/applib/src/main/java/org/apache/isis/applib/conmap/ContentMappingServiceForCommandsDto.java
+++ b/core/applib/src/main/java/org/apache/isis/applib/conmap/ContentMappingServiceForCommandsDto.java
@@ -37,7 +37,6 @@ import org.apache.isis.schema.cmd.v1.CommandsDto;
public class ContentMappingServiceForCommandsDto implements ContentMappingService {
@Override
- @Programmatic
public Object map(Object object, final List<MediaType> acceptableMediaTypes) {
final boolean supported = Util.isSupported(CommandsDto.class, acceptableMediaTypes);
if(!supported) {
@@ -50,7 +49,6 @@ public class ContentMappingServiceForCommandsDto implements ContentMappingServic
/**
* Not part of the {@link ContentMappingService} API.
*/
- @Programmatic
public CommandsDto map(final Object object) {
if(object instanceof CommandsDto) {
return ((CommandsDto) object);
diff --git a/core/applib/src/main/java/org/apache/isis/applib/fixturescripts/ExecutionParametersService.java b/core/applib/src/main/java/org/apache/isis/applib/fixturescripts/ExecutionParametersService.java
index e119a6e..8a0be21 100644
--- a/core/applib/src/main/java/org/apache/isis/applib/fixturescripts/ExecutionParametersService.java
+++ b/core/applib/src/main/java/org/apache/isis/applib/fixturescripts/ExecutionParametersService.java
@@ -40,7 +40,6 @@ import org.apache.isis.applib.annotation.Programmatic;
)
public class ExecutionParametersService {
- @Programmatic
public ExecutionParameters newExecutionParameters(final String parameters) {
return new ExecutionParameters(parameters);
}
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 6bafe2e..866b2c5 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
@@ -20,17 +20,18 @@ import javax.inject.Inject;
import org.apache.isis.applib.annotation.DomainService;
import org.apache.isis.applib.annotation.NatureOfService;
-import org.apache.isis.applib.annotation.Programmatic;
import org.apache.isis.applib.services.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;
-@DomainService(nature = NatureOfService.DOMAIN)
+@DomainService(
+ nature = NatureOfService.DOMAIN,
+ menuOrder = "" + Integer.MAX_VALUE
+)
public class DtoMappingHelper {
- @Programmatic
public OidDto oidDtoFor(final Object object) {
final Bookmark bookmark = bookmarkService.bookmarkFor(object);
return asOidDto(bookmark);
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 19a1ece..fd4364d 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
@@ -48,7 +48,6 @@ public class AuditerServiceLogging implements AuditerService {
return LOG.isDebugEnabled();
}
- @Programmatic
@Override
public void audit(
final UUID interactionId, int sequence,
diff --git a/core/applib/src/main/java/org/apache/isis/applib/services/classdiscovery/ClassDiscoveryServiceDefault.java b/core/applib/src/main/java/org/apache/isis/applib/services/classdiscovery/ClassDiscoveryServiceDefault.java
index cd09e32..e8e7236 100644
--- a/core/applib/src/main/java/org/apache/isis/applib/services/classdiscovery/ClassDiscoveryServiceDefault.java
+++ b/core/applib/src/main/java/org/apache/isis/applib/services/classdiscovery/ClassDiscoveryServiceDefault.java
@@ -48,7 +48,6 @@ public class ClassDiscoveryServiceDefault
extends AbstractService
implements ClassDiscoveryService {
- @Programmatic
@Override
public <T> Set<Class<? extends T>> findSubTypesOfClasses(Class<T> type, String packageNamePrefix) {
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 c1ef0bc..1357bf1 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
@@ -42,27 +42,22 @@ import org.apache.isis.applib.clock.Clock;
)
public class ClockService {
- @Programmatic
public LocalDate now() {
return Clock.getTimeAsLocalDate();
}
- @Programmatic
public LocalDateTime nowAsLocalDateTime() {
return Clock.getTimeAsLocalDateTime();
}
- @Programmatic
public DateTime nowAsDateTime() {
return Clock.getTimeAsDateTime();
}
- @Programmatic
public Timestamp nowAsJavaSqlTimestamp() {
return Clock.getTimeAsJavaSqlTimestamp();
}
- @Programmatic
public long nowAsMillis() {
return Clock.getTime();
}
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 0a65efc..503e622 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
@@ -46,9 +46,7 @@ public class InteractionContext {
/**
* Returns the currently active {@link Interaction} for this thread.
- * @return
*/
- @Programmatic
public Interaction getInteraction() {
return interaction;
}
@@ -56,7 +54,6 @@ public class InteractionContext {
/**
* <b>NOT API</b>: intended to be called only by the framework.
*/
- @Programmatic
public void setInteraction(final Interaction interaction) {
this.interaction = interaction;
}
diff --git a/core/applib/src/main/java/org/apache/isis/applib/services/queryresultscache/QueryResultsCacheControlInternal.java b/core/applib/src/main/java/org/apache/isis/applib/services/queryresultscache/QueryResultsCacheControlInternal.java
index ac6b244..3271602 100644
--- a/core/applib/src/main/java/org/apache/isis/applib/services/queryresultscache/QueryResultsCacheControlInternal.java
+++ b/core/applib/src/main/java/org/apache/isis/applib/services/queryresultscache/QueryResultsCacheControlInternal.java
@@ -53,7 +53,6 @@ public class QueryResultsCacheControlInternal extends AbstractSubscriber impleme
private boolean fixturesInstalling;
- @Programmatic
@Override
public boolean isFixturesInstalling() {
return fixturesInstalling;
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 eedaa5b..53464e1 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
@@ -52,7 +52,6 @@ public class QueryResultsCacheInternal implements QueryResultsCache, WithTransac
private final Map<Key, Value<?>> cache = _Maps.newHashMap();
- @Programmatic
@Override
public <T> T execute(
final Callable<T> callable,
@@ -70,7 +69,6 @@ public class QueryResultsCacheInternal implements QueryResultsCache, WithTransac
return executeWithCaching(callable, cacheKey);
}
- @Programmatic
private <T> T execute(final Callable<T> callable, final Key cacheKey) {
if(control.isFixturesInstalling()) {
try {
@@ -107,12 +105,10 @@ public class QueryResultsCacheInternal implements QueryResultsCache, WithTransac
}
}
- @Programmatic
private <T> Value<T> get(final Class<?> callingClass, final String methodName, final Object... keys) {
return get(new Key(callingClass, methodName, keys));
}
- @Programmatic
@SuppressWarnings("unchecked")
private <T> Value<T> get(final Key cacheKey) {
Value<T> value = (Value<T>) cache.get(cacheKey);
@@ -120,7 +116,6 @@ public class QueryResultsCacheInternal implements QueryResultsCache, WithTransac
return value;
}
- @Programmatic
private <T> void put(final Key cacheKey, final T result) {
LOG.debug("PUT: {}", cacheKey);
cache.put(cacheKey, new Value<T>(result));
@@ -141,7 +136,6 @@ public class QueryResultsCacheInternal implements QueryResultsCache, WithTransac
* a transaction-scoped service; since that isn't yet supported by the framework, we have to manually reset).
* </p>
*/
- @Programmatic
@Override
public void resetForNextTransaction() {
cache.clear();
diff --git a/core/applib/src/main/java/org/apache/isis/applib/services/routing/RoutingServiceDefault.java b/core/applib/src/main/java/org/apache/isis/applib/services/routing/RoutingServiceDefault.java
index 69a4235..1ee0847 100644
--- a/core/applib/src/main/java/org/apache/isis/applib/services/routing/RoutingServiceDefault.java
+++ b/core/applib/src/main/java/org/apache/isis/applib/services/routing/RoutingServiceDefault.java
@@ -35,13 +35,11 @@ public class RoutingServiceDefault implements RoutingService {
@SuppressWarnings("unused")
private final static Logger LOG = LoggerFactory.getLogger(RoutingServiceDefault.class);
- @Programmatic
@Override
public boolean canRoute(final Object original) {
return true;
}
- @Programmatic
@Override
public Object route(final Object original) {
return original != null? original: homePageProviderService.homePage();
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 4a66430..d1b707b 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
@@ -53,14 +53,12 @@ public class Scratchpad {
/**
* Obtain user-data, as set by a previous object being acted upon.
*/
- @Programmatic
public Object get(Object key) {
return userData.get(key);
}
/**
* Set user-data, for the use of a subsequent object being acted upon.
*/
- @Programmatic
public void put(Object key, Object value) {
userData.put(key, value);
}
@@ -68,7 +66,6 @@ public class Scratchpad {
/**
* Clear any user data.
*/
- @Programmatic
public void clear() {
userData.clear();
}
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 dd652d2..8b93c78 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,7 +26,7 @@ import org.apache.isis.commons.internal.base._Strings;
@DomainService(
nature = NatureOfService.DOMAIN,
menuOrder = "" + Integer.MAX_VALUE
- )
+)
public class UrlEncodingServiceWithCompression implements UrlEncodingService {
@Override
diff --git a/core/integtestsupport/src/main/java/org/apache/isis/core/integtestsupport/components/HeadlessTransactionSupportDefault.java b/core/integtestsupport/src/main/java/org/apache/isis/core/integtestsupport/components/HeadlessTransactionSupportDefault.java
index a5762b9..1572085 100644
--- a/core/integtestsupport/src/main/java/org/apache/isis/core/integtestsupport/components/HeadlessTransactionSupportDefault.java
+++ b/core/integtestsupport/src/main/java/org/apache/isis/core/integtestsupport/components/HeadlessTransactionSupportDefault.java
@@ -32,7 +32,10 @@ import org.apache.isis.core.runtime.system.transaction.IsisTransaction;
import org.apache.isis.core.runtime.system.transaction.IsisTransactionManager;
import org.apache.isis.core.runtime.system.transaction.IsisTransaction.State;
-@DomainService(nature=NatureOfService.DOMAIN)
+@DomainService(
+ nature=NatureOfService.DOMAIN,
+ menuOrder = "" + Integer.MAX_VALUE
+)
public class HeadlessTransactionSupportDefault implements HeadlessTransactionSupport {
@Override
diff --git a/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/actions/layout/ActionLayoutFacetFactory.java b/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/actions/layout/ActionLayoutFacetFactory.java
index f9af501..4dadd96 100644
--- a/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/actions/layout/ActionLayoutFacetFactory.java
+++ b/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/actions/layout/ActionLayoutFacetFactory.java
@@ -130,10 +130,6 @@ public class ActionLayoutFacetFactory extends FacetFactoryAbstract implements Co
return b;
}
- // UNUSED
- protected boolean skipContributing(final DomainServiceFacet domainServiceFacet) {
- return domainServiceFacet == null || domainServiceFacet.isNoop() || domainServiceFacet.getNatureOfService() == NatureOfService.VIEW_MENU_ONLY || domainServiceFacet.getNatureOfService() == NatureOfService.DOMAIN;
- }
@Override
public void process(ProcessContributeeMemberContext processMemberContext) {
diff --git a/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/object/domainservice/DomainServiceFacet.java b/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/object/domainservice/DomainServiceFacet.java
index b389767..ae314ca 100644
--- a/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/object/domainservice/DomainServiceFacet.java
+++ b/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/object/domainservice/DomainServiceFacet.java
@@ -39,16 +39,6 @@ public interface DomainServiceFacet extends Facet {
/**
* Corresponds to {@link org.apache.isis.applib.annotation.DomainService#nature()}.
- *
- * <p>
- * If set to {@link org.apache.isis.applib.annotation.NatureOfService#VIEW_MENU_ONLY} or {@link org.apache.isis.applib.annotation.NatureOfService#DOMAIN}, then {@link org.apache.isis.core.metamodel.facets.actions.notcontributed.NotContributedFacet} is
- * derived for all actions.
- * </p>
- *
- * <p>
- * If set to {@link org.apache.isis.applib.annotation.NatureOfService#VIEW_CONTRIBUTIONS_ONLY} or {@link org.apache.isis.applib.annotation.NatureOfService#DOMAIN}, then {@link org.apache.isis.core.metamodel.facets.actions.notinservicemenu.NotInServiceMenuFacet} is
- * derived for all actions.
- * </p>
*/
public NatureOfService getNatureOfService();
diff --git a/core/metamodel/src/main/java/org/apache/isis/core/metamodel/specloader/specimpl/dflt/ObjectSpecificationDefault.java b/core/metamodel/src/main/java/org/apache/isis/core/metamodel/specloader/specimpl/dflt/ObjectSpecificationDefault.java
index 4da74ce..0beedb3 100644
--- a/core/metamodel/src/main/java/org/apache/isis/core/metamodel/specloader/specimpl/dflt/ObjectSpecificationDefault.java
+++ b/core/metamodel/src/main/java/org/apache/isis/core/metamodel/specloader/specimpl/dflt/ObjectSpecificationDefault.java
@@ -19,8 +19,6 @@
package org.apache.isis.core.metamodel.specloader.specimpl.dflt;
-import static org.apache.isis.commons.internal.base._With.mapIfPresentElse;
-
import java.lang.reflect.Method;
import java.util.HashMap;
import java.util.List;
@@ -33,13 +31,12 @@ import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import org.apache.isis.applib.Identifier;
+import org.apache.isis.applib.annotation.HomePage;
import org.apache.isis.applib.annotation.NatureOfService;
+import org.apache.isis.applib.fixturescripts.FixtureScript;
import org.apache.isis.commons.internal.base._Lazy;
import org.apache.isis.commons.internal.collections._Lists;
import org.apache.isis.commons.internal.collections._Maps;
-import org.apache.isis.applib.annotation.HomePage;
-import org.apache.isis.applib.annotation.NatureOfService;
-import org.apache.isis.applib.fixturescripts.FixtureScript;
import org.apache.isis.core.commons.lang.StringExtensions;
import org.apache.isis.core.commons.util.ToString;
import org.apache.isis.core.metamodel.facetapi.Facet;
@@ -79,6 +76,8 @@ import org.apache.isis.core.metamodel.specloader.specimpl.ObjectSpecificationAbs
import org.apache.isis.core.metamodel.specloader.specimpl.OneToManyAssociationDefault;
import org.apache.isis.core.metamodel.specloader.specimpl.OneToOneAssociationDefault;
+import static org.apache.isis.commons.internal.base._With.mapIfPresentElse;
+
public class ObjectSpecificationDefault extends ObjectSpecificationAbstract implements FacetHolder {
private final static Logger LOG = LoggerFactory.getLogger(ObjectSpecificationDefault.class);
@@ -263,11 +262,10 @@ public class ObjectSpecificationDefault extends ObjectSpecificationAbstract impl
}
private boolean skipAssociationsAndActions() {
- return isFixtureScript() || isDomainServiceWithDomainNatureOfServiceNotHomePage();
+ return isFixtureScript() || isDomainServiceWithDomainImpl();
}
- // TODO: this is a bit horrible; maybe instead introduce a new NatureOfService for home page services (also for seed services?)
- private boolean isDomainServiceWithDomainNatureOfServiceNotHomePage() {
+ private boolean isDomainServiceWithDomainImpl() {
final DomainServiceFacet domainServiceFacet = this.getFacet(DomainServiceFacet.class);
if (domainServiceFacet == null) {
return false;
diff --git a/core/runtime/src/main/java/org/apache/isis/applib/services/exceprecog/jdo/ExceptionRecognizerCompositeForJdoObjectStore.java b/core/runtime/src/main/java/org/apache/isis/applib/services/exceprecog/jdo/ExceptionRecognizerCompositeForJdoObjectStore.java
index 07887e1..0e56090 100644
--- a/core/runtime/src/main/java/org/apache/isis/applib/services/exceprecog/jdo/ExceptionRecognizerCompositeForJdoObjectStore.java
+++ b/core/runtime/src/main/java/org/apache/isis/applib/services/exceprecog/jdo/ExceptionRecognizerCompositeForJdoObjectStore.java
@@ -24,7 +24,6 @@ import javax.annotation.PostConstruct;
import org.apache.isis.applib.annotation.DomainService;
import org.apache.isis.applib.annotation.NatureOfService;
-import org.apache.isis.applib.annotation.Programmatic;
import org.apache.isis.applib.services.exceprecog.ExceptionRecognizer;
import org.apache.isis.applib.services.exceprecog.ExceptionRecognizerComposite;
import org.apache.isis.commons.internal.base._Strings;
@@ -51,7 +50,6 @@ public class ExceptionRecognizerCompositeForJdoObjectStore extends ExceptionReco
"isis.services.ExceptionRecognizerCompositeForJdoObjectStore.disable";
@Override
- @Programmatic
@PostConstruct
public void init() {