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 de298ca6af ISIS-3202: marks viewmodel refreshing stuff deprecated
de298ca6af is described below
commit de298ca6af0c3f6e9bd72a31e1e1d6f6173d6b50
Author: Andi Huber <[email protected]>
AuthorDate: Sat Sep 3 19:56:45 2022 +0200
ISIS-3202: marks viewmodel refreshing stuff deprecated
---
.../facets/object/viewmodel/ViewModelFacet.java | 9 ---
.../metamodel/object/RefreshableViewmodel.java | 5 ++
.../metamodel/object/_ManagedObjectViewmodel.java | 73 +++++++++-------------
3 files changed, 33 insertions(+), 54 deletions(-)
diff --git
a/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/object/viewmodel/ViewModelFacet.java
b/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/object/viewmodel/ViewModelFacet.java
index e68b5aa64c..987d872e99 100644
---
a/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/object/viewmodel/ViewModelFacet.java
+++
b/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/object/viewmodel/ViewModelFacet.java
@@ -54,13 +54,4 @@ public interface ViewModelFacet extends Facet {
*/
Bookmark serializeToBookmark(ManagedObject managedObject);
- /**
- * Governs whether on start of any AJAX request, the viewmodel needs to
reload,
- * so any contained entities end up attached.
- */
- default boolean containsEntities() {
- //XXX future work might improve that for performance optimizations,
such that we need to actually check at facet creation
- return true;
- }
-
}
diff --git
a/core/metamodel/src/main/java/org/apache/isis/core/metamodel/object/RefreshableViewmodel.java
b/core/metamodel/src/main/java/org/apache/isis/core/metamodel/object/RefreshableViewmodel.java
index 4c9525767b..acad8f5cab 100644
---
a/core/metamodel/src/main/java/org/apache/isis/core/metamodel/object/RefreshableViewmodel.java
+++
b/core/metamodel/src/main/java/org/apache/isis/core/metamodel/object/RefreshableViewmodel.java
@@ -24,6 +24,10 @@ import org.springframework.lang.Nullable;
import org.apache.isis.applib.services.bookmark.Bookmark;
+/**
+ * @deprecated this refreshing stuff is a hack - remove eventually
+ */
+@Deprecated
public interface RefreshableViewmodel {
/**
@@ -31,6 +35,7 @@ public interface RefreshableViewmodel {
* (Acts as a no-op otherwise.)
* @apiNote usually should be sufficient to refresh once per interaction.
*/
+ @Deprecated
void refreshViewmodel(@Nullable Supplier<Bookmark> bookmarkSupplier);
}
diff --git
a/core/metamodel/src/main/java/org/apache/isis/core/metamodel/object/_ManagedObjectViewmodel.java
b/core/metamodel/src/main/java/org/apache/isis/core/metamodel/object/_ManagedObjectViewmodel.java
index 92639b37af..ca155ffe38 100644
---
a/core/metamodel/src/main/java/org/apache/isis/core/metamodel/object/_ManagedObjectViewmodel.java
+++
b/core/metamodel/src/main/java/org/apache/isis/core/metamodel/object/_ManagedObjectViewmodel.java
@@ -31,7 +31,6 @@ import org.apache.isis.commons.internal.assertions._Assert;
import org.apache.isis.commons.internal.base._Lazy;
import org.apache.isis.commons.internal.debug._XrayEvent;
import org.apache.isis.core.metamodel.context.MetaModelContext;
-import org.apache.isis.core.metamodel.facets.object.viewmodel.ViewModelFacet;
import org.apache.isis.core.metamodel.spec.ObjectSpecification;
import lombok.Getter;
@@ -111,29 +110,22 @@ implements RefreshableViewmodel {
@Override
public final void refreshViewmodel(final @Nullable Supplier<Bookmark>
bookmarkSupplier) {
- val spec = getSpecification();
- if(spec.isViewModel()) {
- val viewModelFacet = spec.getFacet(ViewModelFacet.class);
- if(viewModelFacet.containsEntities()) {
-
- val shouldRefresh =
spec.getMetaModelContext().getInteractionProvider().getInteractionId()
- .map(this::shouldRefresh)
- .orElse(true); // if there is no current interaction, refresh
regardless; unexpected state, might fail later
-
- if(!shouldRefresh) {
- return;
- }
-
- if(isBookmarkMemoized()) {
- reloadViewmodelFromMemoizedBookmark();
- } else {
- val bookmark = bookmarkSupplier!=null
- ? bookmarkSupplier.get()
- : null;
- if(bookmark!=null) {
- reloadViewmodelFromBookmark(bookmark);
- }
- }
+ val shouldRefresh =
getMetaModelContext().getInteractionProvider().getInteractionId()
+ .map(this::shouldRefresh)
+ .orElse(true); // if there is no current interaction, refresh
regardless; unexpected state, might fail later
+
+ if(!shouldRefresh) {
+ return;
+ }
+
+ if(isBookmarkMemoized()) {
+ reloadViewmodelFromMemoizedBookmark();
+ } else {
+ val bookmark = bookmarkSupplier!=null
+ ? bookmarkSupplier.get()
+ : null;
+ if(bookmark!=null) {
+ reloadViewmodelFromBookmark(bookmark);
}
}
}
@@ -152,35 +144,26 @@ implements RefreshableViewmodel {
* Reload current viewmodel object from memoized bookmark, otherwise does
nothing.
*/
private void reloadViewmodelFromMemoizedBookmark() {
- val spec = getSpecification();
- if(isBookmarkMemoized()
- && spec.isViewModel()) {
-
- val bookmark = getBookmark().get();
- val viewModelClass = spec.getCorrespondingClass();
+ val bookmark = getBookmark().get();
+ val viewModelClass = getCorrespondingClass();
- val recreatedViewmodel =
-
getMetaModelContext().getFactoryService().viewModel(viewModelClass, bookmark);
+ val recreatedViewmodel =
+ getFactoryService().viewModel(viewModelClass, bookmark);
- _XrayEvent.event("Viewmodel '%s' recreated from memoized
bookmark.", viewModelClass.getName());
+ _XrayEvent.event("Viewmodel '%s' recreated from memoized bookmark.",
viewModelClass.getName());
- replacePojo(old->recreatedViewmodel);
- }
+ replacePojo(old->recreatedViewmodel);
}
private void reloadViewmodelFromBookmark(final @NonNull Bookmark bookmark)
{
- val spec = getSpecification();
- if(spec.isViewModel()) {
- val viewModelClass = spec.getCorrespondingClass();
-
- val recreatedViewmodel =
-
getMetaModelContext().getFactoryService().viewModel(viewModelClass, bookmark);
+ val viewModelClass = getCorrespondingClass();
+ val recreatedViewmodel =
+ getFactoryService().viewModel(viewModelClass, bookmark);
- _XrayEvent.event("Viewmodel '%s' recreated from provided
bookmark.", viewModelClass.getName());
+ _XrayEvent.event("Viewmodel '%s' recreated from provided bookmark.",
viewModelClass.getName());
- replacePojo(old->recreatedViewmodel);
- replaceBookmark(old->bookmark);
- }
+ replacePojo(old->recreatedViewmodel);
+ replaceBookmark(old->bookmark);
}
private void replacePojo(final UnaryOperator<Object> replacer) {