You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@isis.apache.org by ah...@apache.org on 2019/12/09 15:55:09 UTC
[isis] branch master updated: ISIS-2158: disable exception
suppression for Interaction.execute(...)
This is an automated email from the ASF dual-hosted git repository.
ahuber pushed a commit to branch master
in repository https://gitbox.apache.org/repos/asf/isis.git
The following commit(s) were added to refs/heads/master by this push:
new 3b12fbe ISIS-2158: disable exception suppression for Interaction.execute(...)
3b12fbe is described below
commit 3b12fbe15351aa9107ee037d467daa741ac0f50c
Author: Andi Huber <ah...@apache.org>
AuthorDate: Mon Dec 9 16:54:59 2019 +0100
ISIS-2158: disable exception suppression for Interaction.execute(...)
- there is an issue with exceptions getting swallowed: unless this is
fixed, we rather print all of them, no matter whether recognized or not
later on
- also throw more meaningful exceptions, when the BookmarkService is
unable to provide a bookmark for a certain type
---
.../jaxbadapters/PersistentEntitiesAdapter.java | 43 ++++++++++++----------
.../jaxbadapters/PersistentEntityAdapter.java | 2 +-
.../isis/applib/mixins/dto/DtoMappingHelper.java | 17 +++++----
.../applib/mixins/layout/Object_openRestApi.java | 8 ++--
.../mixins/metamodel/Object_objectIdentifier.java | 8 ++--
.../applib/mixins/metamodel/Object_objectType.java | 9 ++---
.../applib/services/bookmark/BookmarkService.java | 28 +++++++++++++-
.../isis/applib/services/iactn/Interaction.java | 17 ++++++---
.../isis/applib/util/schema/CommonDtoUtils.java | 14 ++++---
.../isis/metamodel/facets/DomainEventHelper.java | 9 +----
.../invocation/ActionDomainEventFacetAbstract.java | 3 --
...ctionInvocationFacetForDomainEventAbstract.java | 4 +-
.../bookmarks/BookmarkServiceInternalDefault.java | 14 ++++---
.../ixn/InteractionDtoServiceInternalDefault.java | 4 +-
.../handlers/DomainObjectInvocationHandler.java | 3 +-
.../wicket/viewer/mixins/Object_clearHints.java | 25 ++++++-------
.../extensions/excel/dom/util/CellMarshaller.java | 26 +++++++++----
17 files changed, 140 insertions(+), 94 deletions(-)
diff --git a/core/applib/src/main/java/org/apache/isis/applib/jaxbadapters/PersistentEntitiesAdapter.java b/core/applib/src/main/java/org/apache/isis/applib/jaxbadapters/PersistentEntitiesAdapter.java
index c01e22a..efc9c41 100644
--- a/core/applib/src/main/java/org/apache/isis/applib/jaxbadapters/PersistentEntitiesAdapter.java
+++ b/core/applib/src/main/java/org/apache/isis/applib/jaxbadapters/PersistentEntitiesAdapter.java
@@ -1,18 +1,20 @@
-/**
- * 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
+/*
+ * 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
+ * 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.
+ * 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.jaxbadapters;
@@ -24,9 +26,10 @@ import javax.xml.bind.annotation.adapters.XmlAdapter;
import org.apache.isis.applib.services.bookmark.Bookmark;
import org.apache.isis.applib.services.bookmark.BookmarkService;
import org.apache.isis.commons.internal.collections._Lists;
-import org.apache.isis.schema.common.v1.OidDto;
import org.apache.isis.schema.common.v1.OidsDto;
+import lombok.val;
+
public class PersistentEntitiesAdapter extends XmlAdapter<OidsDto, List<Object>> {
@Inject private BookmarkService bookmarkService;
@@ -35,9 +38,9 @@ public class PersistentEntitiesAdapter extends XmlAdapter<OidsDto, List<Object>>
public List<Object> unmarshal(final OidsDto oidsDto) {
List<Object> domainObjects = _Lists.newArrayList();
- for (final OidDto oidDto : oidsDto.getOid()) {
- final Bookmark bookmark = Bookmark.from(oidDto);
- Object domainObject = bookmarkService.lookup(bookmark);
+ for (val oidDto : oidsDto.getOid()) {
+ val bookmark = Bookmark.from(oidDto);
+ val domainObject = bookmarkService.lookup(bookmark);
domainObjects.add(domainObject);
}
return domainObjects;
@@ -48,9 +51,9 @@ public class PersistentEntitiesAdapter extends XmlAdapter<OidsDto, List<Object>>
if(domainObjects == null) {
return null;
}
- OidsDto oidsDto = new OidsDto();
- for (final Object domainObject : domainObjects) {
- final Bookmark bookmark = getBookmarkService().bookmarkFor(domainObject);
+ val oidsDto = new OidsDto();
+ for (val domainObject : domainObjects) {
+ val bookmark = getBookmarkService().bookmarkForElseThrow(domainObject);
oidsDto.getOid().add(bookmark.toOidDto());
}
return oidsDto;
diff --git a/core/applib/src/main/java/org/apache/isis/applib/jaxbadapters/PersistentEntityAdapter.java b/core/applib/src/main/java/org/apache/isis/applib/jaxbadapters/PersistentEntityAdapter.java
index 7ec8d64..60f1e97 100644
--- a/core/applib/src/main/java/org/apache/isis/applib/jaxbadapters/PersistentEntityAdapter.java
+++ b/core/applib/src/main/java/org/apache/isis/applib/jaxbadapters/PersistentEntityAdapter.java
@@ -42,7 +42,7 @@ public class PersistentEntityAdapter extends XmlAdapter<OidDto, Object> {
if(domainObject == null) {
return null;
}
- val bookmark = bookmarkService.bookmarkFor(domainObject);
+ val bookmark = bookmarkService.bookmarkForElseThrow(domainObject);
return bookmark.toOidDto();
}
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 301502a..0043b19 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
@@ -18,21 +18,22 @@
*/
package org.apache.isis.applib.mixins.dto;
-import lombok.extern.log4j.Log4j2;
-
import javax.inject.Inject;
import javax.inject.Named;
+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.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.beans.factory.annotation.Qualifier;
-import org.springframework.context.annotation.Primary;
-import org.springframework.core.annotation.Order;
-import org.springframework.stereotype.Service;
+
+import lombok.extern.log4j.Log4j2;
@Service
@Named("isisApplib.DtoMappingHelper")
@@ -41,6 +42,8 @@ import org.springframework.stereotype.Service;
@Qualifier("Default")
@Log4j2
public class DtoMappingHelper {
+
+ @Inject private BookmarkService bookmarkService;
public OidDto oidDtoFor(final Object object) {
final Bookmark bookmark = bookmarkService.bookmarkFor(object);
@@ -74,5 +77,5 @@ public class DtoMappingHelper {
}
- @Inject BookmarkService bookmarkService;
+
}
diff --git a/core/applib/src/main/java/org/apache/isis/applib/mixins/layout/Object_openRestApi.java b/core/applib/src/main/java/org/apache/isis/applib/mixins/layout/Object_openRestApi.java
index ef143ba..b03e4f4 100644
--- a/core/applib/src/main/java/org/apache/isis/applib/mixins/layout/Object_openRestApi.java
+++ b/core/applib/src/main/java/org/apache/isis/applib/mixins/layout/Object_openRestApi.java
@@ -29,7 +29,6 @@ import org.apache.isis.applib.annotation.RestrictTo;
import org.apache.isis.applib.annotation.SemanticsOf;
import org.apache.isis.applib.mixins.MixinConstants;
import org.apache.isis.applib.services.bookmark.BookmarkService;
-import org.apache.isis.applib.services.swagger.SwaggerService;
import org.apache.isis.applib.value.LocalResourcePath;
import org.apache.isis.commons.internal.resources._Resources;
@@ -40,6 +39,8 @@ import lombok.val;
@RequiredArgsConstructor
public class Object_openRestApi {
+ @Inject private BookmarkService bookmarkService;
+
private final Object holder;
public static class ActionDomainEvent
@@ -57,7 +58,7 @@ public class Object_openRestApi {
)
@MemberOrder(name = MixinConstants.METADATA_LAYOUT_GROUPNAME, sequence = "750.1")
public LocalResourcePath act() {
- val bookmark = bookmarkService.bookmarkFor(holder);
+ val bookmark = bookmarkService.bookmarkForElseThrow(holder);
val objType = bookmark.getObjectType();
val objId = bookmark.getIdentifier();
val restfulPathIfAny = _Resources.getRestfulPathIfAny();
@@ -68,7 +69,6 @@ public class Object_openRestApi {
: new LocalResourcePath(String.format(
"/objects/%s/%s", objType, objId));
}
-
- @Inject BookmarkService bookmarkService;
+
}
diff --git a/core/applib/src/main/java/org/apache/isis/applib/mixins/metamodel/Object_objectIdentifier.java b/core/applib/src/main/java/org/apache/isis/applib/mixins/metamodel/Object_objectIdentifier.java
index 9cd5181..f74af70 100644
--- a/core/applib/src/main/java/org/apache/isis/applib/mixins/metamodel/Object_objectIdentifier.java
+++ b/core/applib/src/main/java/org/apache/isis/applib/mixins/metamodel/Object_objectIdentifier.java
@@ -29,15 +29,17 @@ import org.apache.isis.applib.annotation.Property;
import org.apache.isis.applib.annotation.SemanticsOf;
import org.apache.isis.applib.annotation.Where;
import org.apache.isis.applib.mixins.MixinConstants;
-import org.apache.isis.applib.services.bookmark.Bookmark;
import org.apache.isis.applib.services.bookmark.BookmarkService;
import lombok.RequiredArgsConstructor;
+import lombok.val;
@Mixin(method="prop")
@RequiredArgsConstructor
public class Object_objectIdentifier {
+ @Inject private BookmarkService bookmarkService;
+
private final Object holder;
public static class ActionDomainEvent
@@ -53,11 +55,11 @@ public class Object_objectIdentifier {
@Property()
@MemberOrder(name = MixinConstants.METADATA_LAYOUT_GROUPNAME, sequence = "700.2")
public String prop() {
- final Bookmark bookmark = bookmarkService.bookmarkFor(this.holder);
+ val bookmark = bookmarkService.bookmarkForElseThrow(this.holder);
return bookmark.getIdentifier();
}
- @Inject BookmarkService bookmarkService;
+
}
diff --git a/core/applib/src/main/java/org/apache/isis/applib/mixins/metamodel/Object_objectType.java b/core/applib/src/main/java/org/apache/isis/applib/mixins/metamodel/Object_objectType.java
index 92cba00..963224b 100644
--- a/core/applib/src/main/java/org/apache/isis/applib/mixins/metamodel/Object_objectType.java
+++ b/core/applib/src/main/java/org/apache/isis/applib/mixins/metamodel/Object_objectType.java
@@ -29,14 +29,16 @@ import org.apache.isis.applib.annotation.Property;
import org.apache.isis.applib.annotation.SemanticsOf;
import org.apache.isis.applib.annotation.Where;
import org.apache.isis.applib.mixins.MixinConstants;
-import org.apache.isis.applib.services.bookmark.Bookmark;
import org.apache.isis.applib.services.bookmark.BookmarkService;
import lombok.RequiredArgsConstructor;
+import lombok.val;
@Mixin(method="prop")
@RequiredArgsConstructor
public class Object_objectType {
+
+ @Inject private BookmarkService bookmarkService;
private final Object holder;
@@ -53,11 +55,8 @@ public class Object_objectType {
@Property()
@MemberOrder(name = MixinConstants.METADATA_LAYOUT_GROUPNAME, sequence = "700.1")
public String prop() {
- final Bookmark bookmark = bookmarkService.bookmarkFor(this.holder);
+ val bookmark = bookmarkService.bookmarkForElseThrow(this.holder);
return bookmark.getObjectType();
}
-
- @Inject BookmarkService bookmarkService;
-
}
diff --git a/core/applib/src/main/java/org/apache/isis/applib/services/bookmark/BookmarkService.java b/core/applib/src/main/java/org/apache/isis/applib/services/bookmark/BookmarkService.java
index 2508361..da05d27 100644
--- a/core/applib/src/main/java/org/apache/isis/applib/services/bookmark/BookmarkService.java
+++ b/core/applib/src/main/java/org/apache/isis/applib/services/bookmark/BookmarkService.java
@@ -18,7 +18,14 @@
*/
package org.apache.isis.applib.services.bookmark;
+import javax.annotation.Nullable;
+
import org.apache.isis.commons.internal.base._Casts;
+import org.apache.isis.commons.internal.exceptions._Exceptions;
+
+import static org.apache.isis.commons.internal.base._With.requires;
+
+import lombok.val;
/**
* This service enables a serializable 'bookmark' to be created for an entity.
@@ -26,7 +33,26 @@ import org.apache.isis.commons.internal.base._Casts;
*/
public interface BookmarkService {
- Bookmark bookmarkFor(Object domainObject);
+ /**
+ * Given any {@link Bookmark} this service is
+ * able to reconstruct to originating domain object the {@link Bookmark} was created for.
+ * <p>
+ * Note: Not every domain object is bookmark-able.
+ * @param domainObject
+ * @return optionally a {@link Bookmark} representing given {@code domainObject}
+ */
+ Bookmark bookmarkFor(@Nullable Object domainObject);
+
+ default Bookmark bookmarkForElseThrow(Object domainObject) {
+ requires(domainObject, "domainObject");
+ val bookmark = bookmarkFor(domainObject);
+ if(bookmark!=null) {
+ return bookmark;
+ }
+ throw _Exceptions.illegalArgument(
+ "cannot create bookmark for type %s", domainObject.getClass().getName());
+ }
+
Bookmark bookmarkFor(Class<?> cls, String identifier);
diff --git a/core/applib/src/main/java/org/apache/isis/applib/services/iactn/Interaction.java b/core/applib/src/main/java/org/apache/isis/applib/services/iactn/Interaction.java
index 5b1b4e4..ac58ed7 100644
--- a/core/applib/src/main/java/org/apache/isis/applib/services/iactn/Interaction.java
+++ b/core/applib/src/main/java/org/apache/isis/applib/services/iactn/Interaction.java
@@ -164,8 +164,8 @@ public class Interaction implements HasUniqueId {
final MemberExecutor<T> memberExecutor,
final T execution) {
- // as a convenience, since in all cases we want the command to start when the first interaction executes,
- // we populate the command here.
+ // as a convenience, since in all cases we want the command to start when the first
+ // interaction executes, we populate the command here.
try {
try {
@@ -174,9 +174,16 @@ public class Interaction implements HasUniqueId {
return result;
} catch (Exception ex) {
- // just because an exception has thrown, does not mean it is that significant; it could be that
- // it is recognized by an ExceptionRecognizer and is not severe, eg unique index violation in the DB.
- currentExecution.setThrew(ex);
+ //TODO there is an issue with exceptions getting swallowed, unless this is fixed,
+ // we rather print all of them, no matter whether recognized or not later on
+ // examples are IllegalArgument- or NullPointer- exceptions being swallowed when using the
+ // WrapperFactory utilizing async calls
+ ex.printStackTrace();
+
+ // just because an exception has thrown, does not mean it is that significant;
+ // it could be that it is recognized by an ExceptionRecognizer and is not severe
+ // eg. unique index violation in the DB
+ getCurrentExecution().setThrew(ex);
// propagate (as in previous design); caller will need to trap and decide
throw ex;
diff --git a/core/applib/src/main/java/org/apache/isis/applib/util/schema/CommonDtoUtils.java b/core/applib/src/main/java/org/apache/isis/applib/util/schema/CommonDtoUtils.java
index 16c618f..179c420 100644
--- a/core/applib/src/main/java/org/apache/isis/applib/util/schema/CommonDtoUtils.java
+++ b/core/applib/src/main/java/org/apache/isis/applib/util/schema/CommonDtoUtils.java
@@ -250,13 +250,15 @@ public final class CommonDtoUtils {
case REFERENCE: {
final Bookmark bookmark = val instanceof Bookmark
? (Bookmark) val
- : bookmarkService!=null ? bookmarkService.bookmarkFor(val) : null;
+ : bookmarkService!=null
+ ? bookmarkService.bookmarkFor(val)
+ : null;
- if (bookmark != null) {
- OidDto argValue = bookmark.toOidDto();
- valueDto.setReference(argValue);
- }
- return valueDto;
+ if (bookmark != null) {
+ OidDto argValue = bookmark.toOidDto();
+ valueDto.setReference(argValue);
+ }
+ return valueDto;
}
case BLOB: {
diff --git a/core/metamodel/src/main/java/org/apache/isis/metamodel/facets/DomainEventHelper.java b/core/metamodel/src/main/java/org/apache/isis/metamodel/facets/DomainEventHelper.java
index 8630c74..2e27420 100644
--- a/core/metamodel/src/main/java/org/apache/isis/metamodel/facets/DomainEventHelper.java
+++ b/core/metamodel/src/main/java/org/apache/isis/metamodel/facets/DomainEventHelper.java
@@ -32,10 +32,8 @@ import org.apache.isis.applib.events.domain.AbstractDomainEvent;
import org.apache.isis.applib.events.domain.ActionDomainEvent;
import org.apache.isis.applib.events.domain.CollectionDomainEvent;
import org.apache.isis.applib.events.domain.PropertyDomainEvent;
-import org.apache.isis.applib.services.command.Command;
import org.apache.isis.applib.services.registry.ServiceRegistry;
import org.apache.isis.commons.internal.assertions._Assert;
-import org.apache.isis.commons.internal.base._Casts;
import org.apache.isis.metamodel.facetapi.IdentifiedHolder;
import org.apache.isis.metamodel.services.events.MetamodelEventService;
import org.apache.isis.metamodel.spec.ManagedObject;
@@ -69,11 +67,10 @@ public class DomainEventHelper {
final ManagedObject targetAdapter,
final ManagedObject mixedInAdapter,
final ManagedObject[] argumentAdapters,
- final Command command,
final ManagedObject resultAdapter) {
return postEventForAction(phase, uncheckedCast(eventType), /*existingEvent*/null, objectAction, identified,
- targetAdapter, mixedInAdapter, argumentAdapters, command, resultAdapter);
+ targetAdapter, mixedInAdapter, argumentAdapters, resultAdapter);
}
// variant using existing event and not eventType (is derived from event)
@@ -85,12 +82,11 @@ public class DomainEventHelper {
final ManagedObject targetAdapter,
final ManagedObject mixedInAdapter,
final ManagedObject[] argumentAdapters,
- final Command command,
final ManagedObject resultAdapter) {
return postEventForAction(phase,
uncheckedCast(existingEvent.getClass()), existingEvent, objectAction, identified,
- targetAdapter, mixedInAdapter, argumentAdapters, command, resultAdapter);
+ targetAdapter, mixedInAdapter, argumentAdapters, resultAdapter);
}
private <S> ActionDomainEvent<S> postEventForAction(
@@ -102,7 +98,6 @@ public class DomainEventHelper {
final ManagedObject targetAdapter,
final ManagedObject mixedInAdapter,
final ManagedObject[] argumentAdapters,
- final Command command,
final ManagedObject resultAdapter) {
_Assert.assertTypeIsInstanceOf(eventType, ActionDomainEvent.class);
diff --git a/core/metamodel/src/main/java/org/apache/isis/metamodel/facets/actions/action/invocation/ActionDomainEventFacetAbstract.java b/core/metamodel/src/main/java/org/apache/isis/metamodel/facets/actions/action/invocation/ActionDomainEventFacetAbstract.java
index a07552e..448c4ec 100644
--- a/core/metamodel/src/main/java/org/apache/isis/metamodel/facets/actions/action/invocation/ActionDomainEventFacetAbstract.java
+++ b/core/metamodel/src/main/java/org/apache/isis/metamodel/facets/actions/action/invocation/ActionDomainEventFacetAbstract.java
@@ -81,7 +81,6 @@ implements ActionDomainEventFacet {
getEventType(),
actionFrom(ic), getIdentified(),
ic.getTarget(), ic.getMixedIn(), argumentAdaptersFrom(ic),
- null,
null);
if (event != null && event.isHidden()) {
return "Hidden by subscriber";
@@ -98,7 +97,6 @@ implements ActionDomainEventFacet {
getEventType(),
actionFrom(ic), getIdentified(),
ic.getTarget(), ic.getMixedIn(), argumentAdaptersFrom(ic),
- null,
null);
if (event != null && event.isDisabled()) {
final TranslatableString reasonTranslatable = event.getDisabledReasonTranslatable();
@@ -121,7 +119,6 @@ implements ActionDomainEventFacet {
getEventType(),
actionFrom(ic), getIdentified(),
ic.getTarget(), ic.getMixedIn(), aic.getArgs(),
- null,
null);
if (event != null && event.isInvalid()) {
final TranslatableString reasonTranslatable = event.getInvalidityReasonTranslatable();
diff --git a/core/metamodel/src/main/java/org/apache/isis/metamodel/facets/actions/action/invocation/ActionInvocationFacetForDomainEventAbstract.java b/core/metamodel/src/main/java/org/apache/isis/metamodel/facets/actions/action/invocation/ActionInvocationFacetForDomainEventAbstract.java
index 04b3901..0f22089 100644
--- a/core/metamodel/src/main/java/org/apache/isis/metamodel/facets/actions/action/invocation/ActionInvocationFacetForDomainEventAbstract.java
+++ b/core/metamodel/src/main/java/org/apache/isis/metamodel/facets/actions/action/invocation/ActionInvocationFacetForDomainEventAbstract.java
@@ -328,7 +328,7 @@ implements ImperativeFacet {
}
if(getRepositoryService().isPersistent(domainObject)) {
BookmarkService bookmarkService = getBookmarkService();
- Bookmark bookmark = bookmarkService.bookmarkFor(domainObject);
+ Bookmark bookmark = bookmarkService.bookmarkForElseThrow(domainObject);
command.internal().setResult(bookmark);
}
break;
@@ -461,7 +461,6 @@ implements ImperativeFacet {
getEventType(),
owningAction, owningAction,
targetAdapter, mixedInAdapter, argumentAdapters,
- command,
null);
// set event onto the execution
@@ -478,7 +477,6 @@ implements ImperativeFacet {
AbstractDomainEvent.Phase.EXECUTED,
actionDomainEvent,
owningAction, owningAction, targetAdapter, mixedInAdapter, argumentAdapters,
- command,
resultAdapterPossiblyCloned);
final Object returnValue = actionDomainEvent.getReturnValue();
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 66161e8..85d997a 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
@@ -22,11 +22,17 @@ import java.io.Serializable;
import java.math.BigDecimal;
import java.math.BigInteger;
import java.util.List;
+import java.util.Optional;
import java.util.Set;
import javax.inject.Inject;
import javax.inject.Named;
+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.annotation.OrderPrecedence;
import org.apache.isis.applib.services.bookmark.Bookmark;
import org.apache.isis.applib.services.bookmark.BookmarkHolder;
@@ -43,13 +49,9 @@ 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.beans.factory.annotation.Qualifier;
-import org.springframework.context.annotation.Primary;
-import org.springframework.core.annotation.Order;
-import org.springframework.stereotype.Service;
-import lombok.extern.log4j.Log4j2;
import lombok.val;
+import lombok.extern.log4j.Log4j2;
/**
* This service enables a serializable 'bookmark' to be created for an entity.
@@ -201,7 +203,7 @@ public class BookmarkServiceInternalDefault implements BookmarkService, Serializ
if(isPredefinedSerializable(value.getClass())) {
return (Serializable) value;
} else {
- final Bookmark valueBookmark = bookmarkFor(value);
+ val valueBookmark = bookmarkFor(value);
return valueBookmark;
}
}
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 4a27c3f..973af39 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
@@ -74,7 +74,7 @@ public class InteractionDtoServiceInternalDefault implements InteractionDtoServi
final int nextEventSequence = interaction.next(Interaction.Sequence.INTERACTION.id());
final Object targetPojo = targetAdapter.getPojo();
- final Bookmark targetBookmark = bookmarkService.bookmarkFor(targetPojo);
+ final Bookmark targetBookmark = bookmarkService.bookmarkForElseThrow(targetPojo);
final String actionIdentifier = objectAction.getIdentifier().toClassAndNameIdentityString();
final String actionId = actionIdentifier.substring(actionIdentifier.indexOf('#')+1);
@@ -120,7 +120,7 @@ public class InteractionDtoServiceInternalDefault implements InteractionDtoServi
final int nextEventSequence = interaction.next(Interaction.Sequence.INTERACTION.id());
final Object targetPojo = targetAdapter.getPojo();
- final Bookmark targetBookmark = bookmarkService.bookmarkFor(targetPojo);
+ final Bookmark targetBookmark = bookmarkService.bookmarkForElseThrow(targetPojo);
final String propertyIdentifier = property.getIdentifier().toClassAndNameIdentityString();
final String propertyId = propertyIdentifier.substring(propertyIdentifier.indexOf('#')+1);
diff --git a/core/runtime-services/src/main/java/org/apache/isis/runtime/services/wrapper/handlers/DomainObjectInvocationHandler.java b/core/runtime-services/src/main/java/org/apache/isis/runtime/services/wrapper/handlers/DomainObjectInvocationHandler.java
index 3c89374..73a5561 100644
--- a/core/runtime-services/src/main/java/org/apache/isis/runtime/services/wrapper/handlers/DomainObjectInvocationHandler.java
+++ b/core/runtime-services/src/main/java/org/apache/isis/runtime/services/wrapper/handlers/DomainObjectInvocationHandler.java
@@ -42,9 +42,9 @@ import org.apache.isis.applib.services.wrapper.events.UsabilityEvent;
import org.apache.isis.applib.services.wrapper.events.ValidityEvent;
import org.apache.isis.applib.services.wrapper.events.VisibilityEvent;
import org.apache.isis.commons.internal.collections._Arrays;
-import org.apache.isis.metamodel.context.MetaModelContext;
import org.apache.isis.metamodel.consent.InteractionInitiatedBy;
import org.apache.isis.metamodel.consent.InteractionResult;
+import org.apache.isis.metamodel.context.MetaModelContext;
import org.apache.isis.metamodel.facets.ImperativeFacet;
import org.apache.isis.metamodel.facets.ImperativeFacet.Intent;
import org.apache.isis.metamodel.facets.object.entity.EntityFacet;
@@ -242,6 +242,7 @@ public class DomainObjectInvocationHandler<T> extends DelegatingInvocationHandle
}
return handleActionMethod(actualTargetAdapter, args, actualObjectAction, contributeeMember);
+
}
throw new UnsupportedOperationException(String.format("Unknown member type '%s'", objectMember));
diff --git a/core/viewers/wicket/viewer/src/main/java/org/apache/isis/viewer/wicket/viewer/mixins/Object_clearHints.java b/core/viewers/wicket/viewer/src/main/java/org/apache/isis/viewer/wicket/viewer/mixins/Object_clearHints.java
index 1ee3bbd..55e6936 100644
--- a/core/viewers/wicket/viewer/src/main/java/org/apache/isis/viewer/wicket/viewer/mixins/Object_clearHints.java
+++ b/core/viewers/wicket/viewer/src/main/java/org/apache/isis/viewer/wicket/viewer/mixins/Object_clearHints.java
@@ -27,22 +27,24 @@ import org.apache.isis.applib.annotation.Contributed;
import org.apache.isis.applib.annotation.MemberOrder;
import org.apache.isis.applib.annotation.Mixin;
import org.apache.isis.applib.annotation.SemanticsOf;
-import org.apache.isis.applib.services.bookmark.Bookmark;
import org.apache.isis.applib.services.bookmark.BookmarkService;
import org.apache.isis.applib.services.hint.HintStore;
import org.apache.isis.viewer.wicket.viewer.services.HintStoreUsingWicketSession;
+import lombok.RequiredArgsConstructor;
+import lombok.val;
+
@Mixin(method="act")
+@RequiredArgsConstructor
public class Object_clearHints {
- private final Object object;
-
- public Object_clearHints(Object object) {
- this.object = object;
- }
+ @Inject private HintStore hintStore;
+ @Inject private BookmarkService bookmarkService;
+
+ private final Object holder;
- public static class ActionDomainEvent extends org.apache.isis.applib.events.domain.ActionDomainEvent<Object> {
- private static final long serialVersionUID = 1L; }
+ public static class ActionDomainEvent
+ extends org.apache.isis.applib.events.domain.ActionDomainEvent<Object> {}
@Action(
domainEvent = ActionDomainEvent.class,
@@ -57,10 +59,10 @@ public class Object_clearHints {
@MemberOrder(name = "datanucleusIdLong", sequence = "400.1")
public Object act() {
if (getHintStoreUsingWicketSession() != null) {
- final Bookmark bookmark = bookmarkService.bookmarkFor(object);
+ val bookmark = bookmarkService.bookmarkForElseThrow(holder);
getHintStoreUsingWicketSession().removeAll(bookmark);
}
- return object;
+ return holder;
}
public boolean hideAct() {
@@ -73,7 +75,4 @@ public class Object_clearHints {
: null;
}
- @Inject HintStore hintStore;
- @Inject BookmarkService bookmarkService;
-
}
diff --git a/extensions/lib/excel/impl/src/main/java/org/apache/isis/extensions/excel/dom/util/CellMarshaller.java b/extensions/lib/excel/impl/src/main/java/org/apache/isis/extensions/excel/dom/util/CellMarshaller.java
index b2b5ba0..75963ae 100644
--- a/extensions/lib/excel/impl/src/main/java/org/apache/isis/extensions/excel/dom/util/CellMarshaller.java
+++ b/extensions/lib/excel/impl/src/main/java/org/apache/isis/extensions/excel/dom/util/CellMarshaller.java
@@ -4,18 +4,30 @@ import java.math.BigDecimal;
import java.math.BigInteger;
import java.util.Date;
-import org.apache.isis.applib.services.bookmark.Bookmark;
-import org.apache.isis.applib.services.bookmark.BookmarkService;
-import org.apache.isis.metamodel.spec.ManagedObject;
-import org.apache.isis.metamodel.spec.ObjectSpecification;
-import org.apache.isis.metamodel.spec.feature.OneToOneAssociation;
import org.apache.poi.common.usermodel.HyperlinkType;
-import org.apache.poi.ss.usermodel.*;
+import org.apache.poi.ss.usermodel.Cell;
+import org.apache.poi.ss.usermodel.CellStyle;
+import org.apache.poi.ss.usermodel.CellType;
+import org.apache.poi.ss.usermodel.ClientAnchor;
+import org.apache.poi.ss.usermodel.Comment;
+import org.apache.poi.ss.usermodel.CreationHelper;
+import org.apache.poi.ss.usermodel.Drawing;
+import org.apache.poi.ss.usermodel.RichTextString;
+import org.apache.poi.ss.usermodel.Row;
+import org.apache.poi.ss.usermodel.Sheet;
+import org.apache.poi.ss.usermodel.VerticalAlignment;
+import org.apache.poi.ss.usermodel.Workbook;
import org.apache.poi.xssf.usermodel.XSSFHyperlink;
import org.joda.time.DateTime;
import org.joda.time.LocalDate;
import org.joda.time.LocalDateTime;
+import org.apache.isis.applib.services.bookmark.Bookmark;
+import org.apache.isis.applib.services.bookmark.BookmarkService;
+import org.apache.isis.metamodel.spec.ManagedObject;
+import org.apache.isis.metamodel.spec.ObjectSpecification;
+import org.apache.isis.metamodel.spec.feature.OneToOneAssociation;
+
final class CellMarshaller {
private final CellStyle dateCellStyle;
@@ -224,7 +236,7 @@ final class CellMarshaller {
}
private void setCellValueForBookmark(final Cell cell, final Object propertyAsObject, final String propertyAsTitle, final CellStyle cellStyle) {
- Bookmark bookmark = bookmarkService.bookmarkFor(propertyAsObject);
+ Bookmark bookmark = bookmarkService.bookmarkForElseThrow(propertyAsObject);
setCellComment(cell, bookmark.toString());
cell.setCellValue(propertyAsTitle);