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 2021/11/12 10:04:47 UTC
[isis] branch master updated: ISIS-2877: fixes Bookmarked Panel
broken entries
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 02b7c60 ISIS-2877: fixes Bookmarked Panel broken entries
02b7c60 is described below
commit 02b7c601ec0e53d7a865fb7272e1e1fbd6598258
Author: Andi Huber <ah...@apache.org>
AuthorDate: Fri Nov 12 11:04:38 2021 +0100
ISIS-2877: fixes Bookmarked Panel broken entries
---
examples/demo/pre-flight.adoc | 34 ++++++++---------
.../bookmarkedpages/BookmarkedPagesPanel.java | 43 ++++++++--------------
.../org/apache/isis/viewer/wicket/ui/util/Wkt.java | 15 ++++++++
3 files changed, 48 insertions(+), 44 deletions(-)
diff --git a/examples/demo/pre-flight.adoc b/examples/demo/pre-flight.adoc
index cf88207..4f6e5ee 100644
--- a/examples/demo/pre-flight.adoc
+++ b/examples/demo/pre-flight.adoc
@@ -64,29 +64,29 @@ _For mixins, override the default method name_
WARNING: Returns scalar of: `void`
-==== Nature Stateful
+==== Nature Stateful ✔
_@DomainObject(nature=VIEW_MODEL) for a Stateful View Model_
Returns scalar of: `demo.StatefulVmUsingJaxb`
-===== FieldSet
-
-* [ ] Property `Sources`
-
-===== FieldSet Demo
-
-* [ ] Property `Message`
-
-===== FieldSet Referenced Property
-
===== Collection Children
-
-===== FieldSet Description
-
-* [ ] Action `Clear Hints`
-
-* [ ] Property `Description`
+* [x] Test: add Child(ren)
+* [ ] Test: open a Child, then return to previous page (browser back button)
+
+[IMPORTANT]
+====
+ Caused by: java.util.NoSuchElementException: sources
+ at org.apache.isis.commons.internal.exceptions._Exceptions.noSuchElement(_Exceptions.java:110) ~[classes/:?]
+ at org.apache.isis.viewer.wicket.model.models.interaction.prop.PropertyInteractionWkt.lambda$1(PropertyInteractionWkt.java:80) ~[classes/:?]
+ at java.util.Optional.orElseThrow(Optional.java:408) ~[?:?]
+ at org.apache.isis.viewer.wicket.model.models.interaction.prop.PropertyInteractionWkt.load(PropertyInteractionWkt.java:80) ~[classes/:?]
+ at org.apache.isis.viewer.wicket.model.models.interaction.prop.PropertyInteractionWkt.load(PropertyInteractionWkt.java:1) ~[classes/:?]
+ at org.apache.wicket.model.LoadableDetachableModel.getObject(LoadableDetachableModel.java:128) ~[wicket-core-8.13.0.jar:8.13.0]
+ at org.apache.wicket.model.ChainingModel.getObject(ChainingModel.java:95) ~[wicket-core-8.13.0.jar:8.13.0]
+ at org.apache.isis.viewer.wicket.model.models.interaction.prop.PropertyUiModelWkt.propertyInteraction(PropertyUiModelWkt.java:61) ~[classes/:?]
+====
+* [x] Test: remove Child(ren)
==== Nature Stateful Refs Entity
diff --git a/viewers/wicket/ui/src/main/java/org/apache/isis/viewer/wicket/ui/components/bookmarkedpages/BookmarkedPagesPanel.java b/viewers/wicket/ui/src/main/java/org/apache/isis/viewer/wicket/ui/components/bookmarkedpages/BookmarkedPagesPanel.java
index 4100534..8840660 100644
--- a/viewers/wicket/ui/src/main/java/org/apache/isis/viewer/wicket/ui/components/bookmarkedpages/BookmarkedPagesPanel.java
+++ b/viewers/wicket/ui/src/main/java/org/apache/isis/viewer/wicket/ui/components/bookmarkedpages/BookmarkedPagesPanel.java
@@ -19,6 +19,7 @@
package org.apache.isis.viewer.wicket.ui.components.bookmarkedpages;
import java.util.List;
+import java.util.Optional;
import javax.inject.Inject;
@@ -29,17 +30,12 @@ import org.apache.wicket.markup.head.IHeaderResponse;
import org.apache.wicket.markup.head.JavaScriptReferenceHeaderItem;
import org.apache.wicket.markup.html.WebMarkupContainer;
import org.apache.wicket.markup.html.basic.Label;
-import org.apache.wicket.markup.html.image.Image;
-import org.apache.wicket.markup.html.link.AbstractLink;
import org.apache.wicket.model.IModel;
-import org.apache.wicket.request.mapper.parameter.PageParameters;
import org.apache.wicket.request.resource.CssResourceReference;
import org.apache.wicket.request.resource.JavaScriptResourceReference;
-import org.apache.wicket.request.resource.ResourceReference;
import org.apache.wicket.util.string.Strings;
import org.apache.isis.applib.exceptions.unrecoverable.ObjectNotFoundException;
-import org.apache.isis.core.metamodel.spec.ObjectSpecification;
import org.apache.isis.viewer.wicket.model.models.BookmarkTreeNode;
import org.apache.isis.viewer.wicket.model.models.BookmarkedPagesModel;
import org.apache.isis.viewer.wicket.model.models.PageType;
@@ -113,50 +109,43 @@ extends PanelAbstract<List<BookmarkTreeNode>, BookmarkedPagesModel> {
}
Wkt.listViewAdd(container, ID_BOOKMARKED_PAGE_ITEM, bookmarkedPagesModel, item->{
- final BookmarkTreeNode node = item.getModelObject();
+ final BookmarkTreeNode bookmarkNode = item.getModelObject();
try {
final Class<? extends Page> pageClass = pageClassRegistry.getPageClass(PageType.ENTITY);
val clearBookmarkLink = Wkt.linkAdd(item, ID_CLEAR_BOOKMARK_LINK, target->{
- bookmarkedPagesModel.remove(node);
+ bookmarkedPagesModel.remove(bookmarkNode);
if(bookmarkedPagesModel.isEmpty()) {
permanentlyHide(CLEAR_BOOKMARKS);
}
target.add(container, clearAllBookmarksLink);
});
- if(node.getDepth() == 0) {
+
+ if(bookmarkNode.getDepth() == 0) {
Wkt.cssAppend(clearBookmarkLink, "clearBookmark");
} else {
clearBookmarkLink.setEnabled(true);
}
- PageParameters pageParameters = node.getPageParameters();
- final AbstractLink link = Links.newBookmarkablePageLink(ID_BOOKMARKED_PAGE_LINK, pageParameters, pageClass);
+ val link = Wkt.add(item, Links.newBookmarkablePageLink(ID_BOOKMARKED_PAGE_LINK,
+ bookmarkNode.getPageParameters(),
+ pageClass));
- ObjectSpecification objectSpec = null;
- val oid = node.getOidNoVer();
- if(oid != null) {
- objectSpec = getSpecificationLoader().specForLogicalTypeName(oid.getLogicalTypeName())
- .orElse(null);
- }
- final ResourceReference imageResource = getImageResourceCache().resourceReferenceForSpec(objectSpec);
- final Image image = new Image(ID_BOOKMARKED_PAGE_ICON, imageResource) {
- private static final long serialVersionUID = 1L;
- @Override
- protected boolean shouldAddAntiCacheParameter() {
- return false;
- }
- };
- link.addOrReplace(image);
+ Optional.ofNullable(bookmarkNode.getOidNoVer())
+ .flatMap(oid->getSpecificationLoader().specForLogicalTypeName(oid.getLogicalTypeName()))
+ .ifPresent(objectSpec->{
+ Wkt.imageAddCachable(link, ID_BOOKMARKED_PAGE_ICON,
+ getImageResourceCache().resourceReferenceForSpec(objectSpec));
+ });
- Wkt.labelAdd(link, ID_BOOKMARKED_PAGE_TITLE, node.getTitle());
+ Wkt.labelAdd(link, ID_BOOKMARKED_PAGE_TITLE, bookmarkNode.getTitle());
//XXX seems broken when there is only one bookmark entry;
// an alternative idea would be to render the item differently eg. bold, but don't disable it
// if(bookmarkedPagesModel.isCurrent(pageParameters)) {
// item.add(new CssClassAppender("disabled"));
// }
- Wkt.cssAppend(item, "bookmarkDepth" + node.getDepth());
+ Wkt.cssAppend(item, "bookmarkDepth" + bookmarkNode.getDepth());
} catch(ObjectNotFoundException ex) {
// ignore
// this is a partial fix for an infinite redirect loop.
diff --git a/viewers/wicket/ui/src/main/java/org/apache/isis/viewer/wicket/ui/util/Wkt.java b/viewers/wicket/ui/src/main/java/org/apache/isis/viewer/wicket/ui/util/Wkt.java
index de3a1b4..30875ae 100644
--- a/viewers/wicket/ui/src/main/java/org/apache/isis/viewer/wicket/ui/util/Wkt.java
+++ b/viewers/wicket/ui/src/main/java/org/apache/isis/viewer/wicket/ui/util/Wkt.java
@@ -38,10 +38,12 @@ import org.apache.wicket.markup.html.WebMarkupContainer;
import org.apache.wicket.markup.html.basic.Label;
import org.apache.wicket.markup.html.form.TextArea;
import org.apache.wicket.markup.html.form.TextField;
+import org.apache.wicket.markup.html.image.Image;
import org.apache.wicket.markup.html.list.ListItem;
import org.apache.wicket.markup.html.list.ListView;
import org.apache.wicket.markup.html.panel.Fragment;
import org.apache.wicket.model.IModel;
+import org.apache.wicket.request.resource.ResourceReference;
import org.apache.wicket.util.convert.IConverter;
import org.apache.wicket.validation.IValidationError;
import org.apache.wicket.validation.ValidationError;
@@ -293,6 +295,19 @@ public class Wkt {
};
}
+ // -- IMAGE
+
+ private Image imageCachable(final String id, final ResourceReference imageResource) {
+ return new Image(id, imageResource) {
+ private static final long serialVersionUID = 1L;
+ @Override protected boolean shouldAddAntiCacheParameter() { return false; }
+ };
+ }
+
+ public Image imageAddCachable(final MarkupContainer container, final String id, final ResourceReference imageResource) {
+ return add(container, imageCachable(id, imageResource));
+ }
+
// -- LABEL
public Label label(final String id, final String label) {