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/10/25 11:16:24 UTC
[isis] branch v2 updated: ISIS-2158: fixes de-serialization issue
also for panels
This is an automated email from the ASF dual-hosted git repository.
ahuber pushed a commit to branch v2
in repository https://gitbox.apache.org/repos/asf/isis.git
The following commit(s) were added to refs/heads/v2 by this push:
new f266316 ISIS-2158: fixes de-serialization issue also for panels
f266316 is described below
commit f266316cfca389c8836fa2421eebea7fd0d84705
Author: Andi Huber <ah...@apache.org>
AuthorDate: Fri Oct 25 13:16:11 2019 +0200
ISIS-2158: fixes de-serialization issue also for panels
- it seems with wicket, injection points are not honored for
de-serialized panels, models and pages
---
.../viewer/wicket/model/models/ModelAbstract.java | 11 +---
.../isis/viewer/wicket/ui/pages/WebPageBase.java | 32 ++++-----
.../isis/viewer/wicket/ui/panels/PanelBase.java | 76 ++++++++++++++++------
3 files changed, 71 insertions(+), 48 deletions(-)
diff --git a/core/viewer-wicket/model/src/main/java/org/apache/isis/viewer/wicket/model/models/ModelAbstract.java b/core/viewer-wicket/model/src/main/java/org/apache/isis/viewer/wicket/model/models/ModelAbstract.java
index 0ea3b83..8382490 100644
--- a/core/viewer-wicket/model/src/main/java/org/apache/isis/viewer/wicket/model/models/ModelAbstract.java
+++ b/core/viewer-wicket/model/src/main/java/org/apache/isis/viewer/wicket/model/models/ModelAbstract.java
@@ -51,17 +51,8 @@ implements IsisWebAppCommonContext.Delegating {
@Override
public IsisWebAppCommonContext getCommonContext() {
- commonContext = CommonContextUtils.computeIfAbsent(commonContext);
- return commonContext;
+ return commonContext = CommonContextUtils.computeIfAbsent(commonContext);
}
-// public IsisSessionFactory getIsisSessionFactory() {
-// if(isisSessionFactory==null) {
-// isisSessionFactory = getCommonContext().lookupServiceElseFail(IsisSessionFactory.class);
-// }
-// return isisSessionFactory;
-// }
-
-
}
diff --git a/core/viewer-wicket/ui/src/main/java/org/apache/isis/viewer/wicket/ui/pages/WebPageBase.java b/core/viewer-wicket/ui/src/main/java/org/apache/isis/viewer/wicket/ui/pages/WebPageBase.java
index 8f1f36f..46ed4a6 100644
--- a/core/viewer-wicket/ui/src/main/java/org/apache/isis/viewer/wicket/ui/pages/WebPageBase.java
+++ b/core/viewer-wicket/ui/src/main/java/org/apache/isis/viewer/wicket/ui/pages/WebPageBase.java
@@ -50,34 +50,28 @@ public abstract class WebPageBase extends WebPage implements IsisWebAppCommonCon
@Override
public IsisWebAppCommonContext getCommonContext() {
- commonContext = CommonContextUtils.computeIfAbsent(commonContext);
-
- this.webAppConfigBean = commonContext.lookupServiceElseFail(WebAppConfigBean.class);
- this.pageClassRegistry = commonContext.lookupServiceElseFail(PageClassRegistry.class);
-
- return commonContext;
+ return commonContext = CommonContextUtils.computeIfAbsent(commonContext);
}
public WebAppConfigBean getWebAppConfigBean() {
- if(webAppConfigBean==null) {
- webAppConfigBean = getCommonContext().lookupServiceElseFail(WebAppConfigBean.class);
- }
- return webAppConfigBean;
+ return webAppConfigBean = computeIfAbsent(WebAppConfigBean.class, webAppConfigBean);
}
public PageClassRegistry getPageClassRegistry() {
- if(pageClassRegistry==null) {
- pageClassRegistry = getCommonContext().lookupServiceElseFail(PageClassRegistry.class);
- }
- return pageClassRegistry;
+ return pageClassRegistry = computeIfAbsent(PageClassRegistry.class, pageClassRegistry);
}
-
+
public IsisSessionFactory getIsisSessionFactory() {
- if(isisSessionFactory==null) {
- isisSessionFactory = getCommonContext().lookupServiceElseFail(IsisSessionFactory.class);
- }
- return isisSessionFactory;
+ return isisSessionFactory = computeIfAbsent(IsisSessionFactory.class, isisSessionFactory);
}
+ // -- HELPER
+
+ private <X> X computeIfAbsent(Class<X> type, X existingIfAny) {
+ return existingIfAny!=null
+ ? existingIfAny
+ : getCommonContext().lookupServiceElseFail(type);
+ }
+
}
diff --git a/core/viewer-wicket/ui/src/main/java/org/apache/isis/viewer/wicket/ui/panels/PanelBase.java b/core/viewer-wicket/ui/src/main/java/org/apache/isis/viewer/wicket/ui/panels/PanelBase.java
index 6d93d7e..6d04b80 100644
--- a/core/viewer-wicket/ui/src/main/java/org/apache/isis/viewer/wicket/ui/panels/PanelBase.java
+++ b/core/viewer-wicket/ui/src/main/java/org/apache/isis/viewer/wicket/ui/panels/PanelBase.java
@@ -19,7 +19,6 @@
package org.apache.isis.viewer.wicket.ui.panels;
import javax.annotation.Nullable;
-import javax.inject.Inject;
import org.apache.wicket.markup.html.panel.GenericPanel;
import org.apache.wicket.model.IModel;
@@ -30,6 +29,7 @@ import org.apache.isis.config.beans.WebAppConfigBean;
import org.apache.isis.metamodel.MetaModelContext;
import org.apache.isis.runtime.system.session.IsisSessionFactory;
import org.apache.isis.security.authentication.MessageBroker;
+import org.apache.isis.viewer.wicket.model.common.CommonContextUtils;
import org.apache.isis.viewer.wicket.model.hints.UiHintContainer;
import org.apache.isis.viewer.wicket.model.isis.WicketViewerSettings;
import org.apache.isis.viewer.wicket.model.models.ImageResourceCache;
@@ -38,8 +38,6 @@ import org.apache.isis.viewer.wicket.ui.app.registry.ComponentFactoryRegistryAcc
import org.apache.isis.viewer.wicket.ui.pages.PageClassRegistry;
import org.apache.isis.webapp.context.IsisWebAppCommonContext;
-import lombok.Getter;
-
/**
* Provides the <em>common context</em> for all implementing sub-classes.
* @since 2.0
@@ -48,17 +46,15 @@ public class PanelBase<T> extends GenericPanel<T> implements IsisWebAppCommonCon
private static final long serialVersionUID = 1L;
- @Inject @Getter protected transient WicketViewerSettings settings;
- @Inject protected transient WebAppConfigBean webAppConfigBean;
- @Inject @Getter protected transient PageClassRegistry pageClassRegistry;
- @Inject @Getter protected transient ImageResourceCache imageCache;
-
- @Inject private transient MetaModelContext metaModelContext;
- @Getter protected final transient IsisWebAppCommonContext commonContext;
-
- @Getter protected final transient IsisSessionFactory isisSessionFactory;
- @Getter protected final transient TranslationService translationService;
- @Getter protected final transient LocaleProvider localeProvider;
+ private transient WicketViewerSettings settings;
+ private transient WebAppConfigBean webAppConfigBean;
+ private transient PageClassRegistry pageClassRegistry;
+ private transient ImageResourceCache imageCache;
+ private transient MetaModelContext metaModelContext;
+ private transient IsisWebAppCommonContext commonContext;
+ private transient IsisSessionFactory isisSessionFactory;
+ private transient TranslationService translationService;
+ private transient LocaleProvider localeProvider;
protected PanelBase(String id) {
this(id, null);
@@ -66,14 +62,49 @@ public class PanelBase<T> extends GenericPanel<T> implements IsisWebAppCommonCon
public PanelBase(String id, @Nullable IModel<T> model) {
super(id, model);
- this.commonContext = IsisWebAppCommonContext.of(metaModelContext);
- this.isisSessionFactory = commonContext.lookupServiceElseFail(IsisSessionFactory.class);
- this.translationService = commonContext.lookupServiceElseFail(TranslationService.class);
- this.localeProvider = commonContext.lookupServiceElseFail(LocaleProvider.class);
+ }
+
+
+ @Override
+ public IsisWebAppCommonContext getCommonContext() {
+ commonContext = CommonContextUtils.computeIfAbsent(commonContext);
+ return commonContext;
+ }
+
+ public WicketViewerSettings getWicketViewerSettings() {
+ return settings = computeIfAbsent(WicketViewerSettings.class, settings);
+ }
+
+ public WebAppConfigBean getWebAppConfigBean() {
+ return webAppConfigBean = computeIfAbsent(WebAppConfigBean.class, webAppConfigBean);
+ }
+
+ public PageClassRegistry getPageClassRegistry() {
+ return pageClassRegistry = computeIfAbsent(PageClassRegistry.class, pageClassRegistry);
+ }
+
+ public ImageResourceCache getImageResourceCache() {
+ return imageCache = computeIfAbsent(ImageResourceCache.class, imageCache);
+ }
+
+ public MetaModelContext getMetaModelContext() {
+ return metaModelContext = computeIfAbsent(MetaModelContext.class, metaModelContext);
+ }
+
+ public IsisSessionFactory getIsisSessionFactory() {
+ return isisSessionFactory = computeIfAbsent(IsisSessionFactory.class, isisSessionFactory);
+ }
+
+ public TranslationService getTranslationService() {
+ return translationService = computeIfAbsent(TranslationService.class, translationService);
+ }
+
+ public LocaleProvider getLocaleProvider() {
+ return localeProvider = computeIfAbsent(LocaleProvider.class, localeProvider);
}
protected MessageBroker getMessageBroker() {
- return commonContext.getAuthenticationSession().getMessageBroker();
+ return commonContext.getAuthenticationSession().getMessageBroker(); // don't cache?
}
// Hint support
@@ -88,5 +119,12 @@ public class PanelBase<T> extends GenericPanel<T> implements IsisWebAppCommonCon
return ((ComponentFactoryRegistryAccessor) getApplication()).getComponentFactoryRegistry();
}
+ // -- HELPER
+
+ private <X> X computeIfAbsent(Class<X> type, X existingIfAny) {
+ return existingIfAny!=null
+ ? existingIfAny
+ : getCommonContext().lookupServiceElseFail(type);
+ }
}