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/01/28 19:36:36 UTC
[isis] branch 2033-IoC updated: ISIS-2033: removes GuiceBeanProvider
This is an automated email from the ASF dual-hosted git repository.
ahuber pushed a commit to branch 2033-IoC
in repository https://gitbox.apache.org/repos/asf/isis.git
The following commit(s) were added to refs/heads/2033-IoC by this push:
new d106195 ISIS-2033: removes GuiceBeanProvider
d106195 is described below
commit d1061953cf55c44cd52388dcaecaaafe32da0261
Author: Andi Huber <ah...@apache.org>
AuthorDate: Mon Jan 28 20:36:29 2019 +0100
ISIS-2033: removes GuiceBeanProvider
Task-Url: https://issues.apache.org/jira/browse/ISIS-2033
---
.../applib/services/guice/GuiceBeanProvider.java | 48 ----------------
.../isis/applib/services/guice/package-info.java | 26 ---------
.../SeamConversationContextSupport.java | 4 +-
.../integration/wicket/WebRequestCycleForIsis.java | 21 +++----
.../settings/WicketViewerSettingsDefault.java | 1 -
.../wicket/ui/panels/FormExecutorDefault.java | 66 ++++++++++++----------
6 files changed, 47 insertions(+), 119 deletions(-)
diff --git a/core/applib/src/main/java/org/apache/isis/applib/services/guice/GuiceBeanProvider.java b/core/applib/src/main/java/org/apache/isis/applib/services/guice/GuiceBeanProvider.java
deleted file mode 100644
index 0093a68..0000000
--- a/core/applib/src/main/java/org/apache/isis/applib/services/guice/GuiceBeanProvider.java
+++ /dev/null
@@ -1,48 +0,0 @@
-/**
- * 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
- *
- * 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.services.guice;
-
-import java.lang.annotation.Annotation;
-
-import org.apache.isis.applib.annotation.Programmatic;
-
-/**
- * A domain service acting as a bridge between Isis services and Guice.
- */
-public interface GuiceBeanProvider {
-
- /**
- * Looks up a Guice bean by class type
- *
- * @param beanType The class type of the Guice bean
- * @param <T> The type of the Guice bean
- * @return The resolved bean
- */
- @Programmatic
- <T> T lookup(Class<T> beanType);
-
- /**
- * Looks up a Guice bean by class type
- *
- * @param beanType The class type of the Guice bean
- * @param qualifier An annotation identifying the bean instance
- * @param <T> The type of the Guice bean
- * @return The resolved bean
- */
- @Programmatic
- <T> T lookup(Class<T> beanType, final Annotation qualifier);
-}
diff --git a/core/applib/src/main/java/org/apache/isis/applib/services/guice/package-info.java b/core/applib/src/main/java/org/apache/isis/applib/services/guice/package-info.java
deleted file mode 100644
index 81b6f05..0000000
--- a/core/applib/src/main/java/org/apache/isis/applib/services/guice/package-info.java
+++ /dev/null
@@ -1,26 +0,0 @@
-/*
- * 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
- *
- * 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.
- */
-
-/**
- * The {@link org.apache.isis.applib.services.guice.GuiceBeanProvider} domain service acts as a bridge between
- * Apache Isis' Wicket viewer internal bootstrapping using Google Guice.
- *
- * @see <a href="http://isis.apache.org/guides/rgsvc/rgsvc.html#_rgsvc_presentation-api_GuiceBeanProvider">Reference guide</a>
- */
-package org.apache.isis.applib.services.guice;
\ No newline at end of file
diff --git a/core/plugins/ioc-weld/src/main/java/org/apache/isis/core/plugins/ioc/weld/scopes/conversation/SeamConversationContextSupport.java b/core/plugins/ioc-weld/src/main/java/org/apache/isis/core/plugins/ioc/weld/scopes/conversation/SeamConversationContextSupport.java
index db5840e..7495541 100644
--- a/core/plugins/ioc-weld/src/main/java/org/apache/isis/core/plugins/ioc/weld/scopes/conversation/SeamConversationContextSupport.java
+++ b/core/plugins/ioc-weld/src/main/java/org/apache/isis/core/plugins/ioc/weld/scopes/conversation/SeamConversationContextSupport.java
@@ -62,8 +62,10 @@ public class SeamConversationContextSupport implements SeamConversationContext<H
return this;
}
- // -- STUPID HACK
+ // -- HACK
+ // the existence of this method allows for Wicket to identify this bean as appropriate
+ // for store type 'HttpServletRequest'
protected void doAssociate(HttpServletRequest nop) {
}
diff --git a/core/viewer-wicket-impl/src/main/java/org/apache/isis/viewer/wicket/viewer/integration/wicket/WebRequestCycleForIsis.java b/core/viewer-wicket-impl/src/main/java/org/apache/isis/viewer/wicket/viewer/integration/wicket/WebRequestCycleForIsis.java
index 30e9876..b0f91f9 100644
--- a/core/viewer-wicket-impl/src/main/java/org/apache/isis/viewer/wicket/viewer/integration/wicket/WebRequestCycleForIsis.java
+++ b/core/viewer-wicket-impl/src/main/java/org/apache/isis/viewer/wicket/viewer/integration/wicket/WebRequestCycleForIsis.java
@@ -29,7 +29,7 @@ import org.apache.isis.applib.services.exceprecog.ExceptionRecognizer;
import org.apache.isis.applib.services.exceprecog.ExceptionRecognizerComposite;
import org.apache.isis.applib.services.exceprecog.ExceptionRecognizerForType;
import org.apache.isis.applib.services.i18n.TranslationService;
-import org.apache.isis.applib.services.inject.ServiceInjector;
+import org.apache.isis.applib.services.registry.ServiceRegistry;
import org.apache.isis.commons.internal.base._Lazy;
import org.apache.isis.commons.internal.cdi._CDI;
import org.apache.isis.commons.internal.collections._Lists;
@@ -253,9 +253,9 @@ public class WebRequestCycleForIsis implements IRequestCycleListener {
}
- // handle recognised exceptions gracefully also
+ // handle recognized exceptions gracefully also
final Stream<ExceptionRecognizer> exceptionRecognizers =
- getServicesInjector().streamServices(ExceptionRecognizer.class);
+ getServiceRegistry().streamServices(ExceptionRecognizer.class);
String recognizedMessageIfAny = new ExceptionRecognizerComposite(exceptionRecognizers).recognize(ex);
if(recognizedMessageIfAny != null) {
return respondGracefully(cycle);
@@ -334,7 +334,7 @@ public class WebRequestCycleForIsis implements IRequestCycleListener {
exceptionRecognizers.add(pageExpiredExceptionRecognizer);
if(inIsisSession()) {
- getServicesInjector().streamServices(ExceptionRecognizer.class)
+ getServiceRegistry().streamServices(ExceptionRecognizer.class)
.forEach(exceptionRecognizers::add);
} else {
val metaModelDeficiencies = IsisContext.getMetaModelDeficienciesIfAny();
@@ -405,12 +405,6 @@ public class WebRequestCycleForIsis implements IRequestCycleListener {
// -- Dependencies (from isis' context)
-
-
- protected ServiceInjector getServicesInjector() {
- return getIsisSessionFactory().getServiceInjector();
- }
-
protected IsisTransactionManager getTransactionManager() {
return getIsisSessionFactory().getCurrentSession().getPersistenceSession().getTransactionManager();
}
@@ -427,13 +421,16 @@ public class WebRequestCycleForIsis implements IRequestCycleListener {
return getAuthenticationSession().getMessageBroker();
}
+ protected ServiceRegistry getServiceRegistry() {
+ return IsisContext.getServiceRegistry();
+ }
+
IsisSessionFactory getIsisSessionFactory() {
return IsisContext.getSessionFactory();
}
-
TranslationService getTranslationService() {
- return getServicesInjector().lookupService(TranslationService.class).orElse(null);
+ return getServiceRegistry().lookupServiceElseFail(TranslationService.class);
}
// -- Dependencies (from wicket)
diff --git a/core/viewer-wicket-impl/src/main/java/org/apache/isis/viewer/wicket/viewer/settings/WicketViewerSettingsDefault.java b/core/viewer-wicket-impl/src/main/java/org/apache/isis/viewer/wicket/viewer/settings/WicketViewerSettingsDefault.java
index a5aa504..aa1ec7b 100644
--- a/core/viewer-wicket-impl/src/main/java/org/apache/isis/viewer/wicket/viewer/settings/WicketViewerSettingsDefault.java
+++ b/core/viewer-wicket-impl/src/main/java/org/apache/isis/viewer/wicket/viewer/settings/WicketViewerSettingsDefault.java
@@ -20,7 +20,6 @@
package org.apache.isis.viewer.wicket.viewer.settings;
import javax.inject.Singleton;
-import javax.enterprise.context.ApplicationScoped;
import org.apache.isis.applib.annotation.PromptStyle;
import org.apache.isis.config.IsisConfiguration;
diff --git a/core/viewer-wicket-ui/src/main/java/org/apache/isis/viewer/wicket/ui/panels/FormExecutorDefault.java b/core/viewer-wicket-ui/src/main/java/org/apache/isis/viewer/wicket/ui/panels/FormExecutorDefault.java
index 778069e..49d3eef 100644
--- a/core/viewer-wicket-ui/src/main/java/org/apache/isis/viewer/wicket/ui/panels/FormExecutorDefault.java
+++ b/core/viewer-wicket-ui/src/main/java/org/apache/isis/viewer/wicket/ui/panels/FormExecutorDefault.java
@@ -21,29 +21,15 @@ import java.util.Objects;
import java.util.concurrent.Callable;
import java.util.stream.Stream;
-import com.google.common.base.Throwables;
-
-import org.apache.wicket.Component;
-import org.apache.wicket.MarkupContainer;
-import org.apache.wicket.Page;
-import org.apache.wicket.ajax.AjaxRequestTarget;
-import org.apache.wicket.markup.html.form.Form;
-import org.apache.wicket.request.cycle.RequestCycle;
-import org.apache.wicket.util.visit.IVisit;
-import org.apache.wicket.util.visit.IVisitor;
-import org.slf4j.Logger;
-import org.slf4j.LoggerFactory;
-
import org.apache.isis.applib.RecoverableException;
import org.apache.isis.applib.services.bookmark.Bookmark;
import org.apache.isis.applib.services.command.Command;
import org.apache.isis.applib.services.command.CommandContext;
import org.apache.isis.applib.services.exceprecog.ExceptionRecognizer;
import org.apache.isis.applib.services.exceprecog.ExceptionRecognizerComposite;
-import org.apache.isis.applib.services.guice.GuiceBeanProvider;
import org.apache.isis.applib.services.hint.HintStore;
-import org.apache.isis.applib.services.inject.ServiceInjector;
import org.apache.isis.applib.services.message.MessageService;
+import org.apache.isis.applib.services.registry.ServiceRegistry;
import org.apache.isis.commons.internal.collections._Lists;
import org.apache.isis.core.metamodel.adapter.ObjectAdapter;
import org.apache.isis.core.metamodel.adapter.concurrency.ConcurrencyChecking;
@@ -69,6 +55,18 @@ import org.apache.isis.viewer.wicket.model.models.ScalarModel;
import org.apache.isis.viewer.wicket.ui.components.scalars.isisapplib.IsisBlobOrClobPanelAbstract;
import org.apache.isis.viewer.wicket.ui.errors.JGrowlUtil;
import org.apache.isis.viewer.wicket.ui.pages.entity.EntityPage;
+import org.apache.wicket.Component;
+import org.apache.wicket.MarkupContainer;
+import org.apache.wicket.Page;
+import org.apache.wicket.ajax.AjaxRequestTarget;
+import org.apache.wicket.markup.html.form.Form;
+import org.apache.wicket.request.cycle.RequestCycle;
+import org.apache.wicket.util.visit.IVisit;
+import org.apache.wicket.util.visit.IVisitor;
+import org.slf4j.Logger;
+import org.slf4j.LoggerFactory;
+
+import com.google.common.base.Throwables;
public final class FormExecutorDefault<M extends BookmarkableModel<ObjectAdapter> & ParentEntityModelProvider>
implements FormExecutor {
@@ -87,11 +85,6 @@ implements FormExecutor {
this.formExecutorStrategy = formExecutorStrategy;
}
- protected WicketViewerSettings getSettings() {
- final GuiceBeanProvider guiceBeanProvider = getServicesInjector().lookupServiceElseFail(GuiceBeanProvider.class);
- return guiceBeanProvider.lookup(WicketViewerSettings.class);
- }
-
/**
*
* @param page
@@ -128,7 +121,7 @@ implements FormExecutor {
return false;
}
- final CommandContext commandContext = getServicesInjector().lookupService(CommandContext.class).orElse(null);
+ final CommandContext commandContext = getCommandContext();
if (commandContext != null) {
command = commandContext.getCommand();
command.internal().setExecutor(Command.Executor.USER);
@@ -210,8 +203,7 @@ implements FormExecutor {
forwardOnConcurrencyException(targetAdapter, ex);
- final MessageService messageService = getServicesInjector().lookupServiceElseFail(MessageService.class);
- messageService.warnUser(ex.getMessage());
+ getMessageService().warnUser(ex.getMessage());
return false;
@@ -324,15 +316,15 @@ implements FormExecutor {
// this is a bit of a hack... currently the blob/clob panel doesn't correctly redraw itself.
// we therefore force a re-forward (unless is declared as unchanging).
final Object hasBlobsOrClobs = page.visitChildren(IsisBlobOrClobPanelAbstract.class,
- new IVisitor<IsisBlobOrClobPanelAbstract, Object>() {
+ new IVisitor<IsisBlobOrClobPanelAbstract<?>, Object>() {
@Override
- public void component(final IsisBlobOrClobPanelAbstract object, final IVisit<Object> visit) {
+ public void component(final IsisBlobOrClobPanelAbstract<?> object, final IVisit<Object> visit) {
if (!isUnchanging(object)) {
visit.stop(true);
}
}
- private boolean isUnchanging(final IsisBlobOrClobPanelAbstract object) {
+ private boolean isUnchanging(final IsisBlobOrClobPanelAbstract<?> object) {
final ScalarModel scalarModel = (ScalarModel) object.getModel();
final UnchangingFacet unchangingFacet = scalarModel.getFacet(UnchangingFacet.class);
return unchangingFacet != null && unchangingFacet.value();
@@ -475,7 +467,7 @@ implements FormExecutor {
// see if the exception is recognized as being a non-serious error
// (nb: similar code in WebRequestCycleForIsis, as a fallback)
- final Stream<ExceptionRecognizer> exceptionRecognizers = getServicesInjector()
+ final Stream<ExceptionRecognizer> exceptionRecognizers = getServiceRegistry()
.streamServices(ExceptionRecognizer.class);
String recognizedErrorIfAny = new ExceptionRecognizerComposite(exceptionRecognizers).recognize(ex);
if (recognizedErrorIfAny != null) {
@@ -500,7 +492,7 @@ implements FormExecutor {
targetIfAny.add(feedbackFormIfAny);
feedbackFormIfAny.error(error);
} else {
- final MessageService messageService = getServicesInjector().lookupServiceElseFail(MessageService.class);
+ final MessageService messageService = getServiceRegistry().lookupServiceElseFail(MessageService.class);
messageService.warnUser(error);
}
}
@@ -519,12 +511,12 @@ implements FormExecutor {
return getCurrentSession().getPersistenceSession();
}
- protected ServiceInjector getServicesInjector() {
- return getIsisSessionFactory().getServiceInjector();
+ protected ServiceRegistry getServiceRegistry() {
+ return IsisContext.getServiceRegistry();
}
protected SpecificationLoader getSpecificationLoader() {
- return getIsisSessionFactory().getSpecificationLoader();
+ return IsisContext.getSpecificationLoader();
}
private IsisTransactionManager getTransactionManager() {
@@ -538,7 +530,19 @@ implements FormExecutor {
protected AuthenticationSession getAuthenticationSession() {
return getCurrentSession().getAuthenticationSession();
}
+
+ private MessageService getMessageService() {
+ return getServiceRegistry().lookupServiceElseFail(MessageService.class);
+ }
+
+ protected WicketViewerSettings getSettings() {
+ return getServiceRegistry().lookupServiceElseFail(WicketViewerSettings.class);
+ }
+ private CommandContext getCommandContext() {
+ return getServiceRegistry().lookupService(CommandContext.class).orElse(null);
+ }
+
///////////////////////////////////////////////////////////////////////////////