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/26 16:00:46 UTC
[isis] branch 2033-IoC updated: ISIS-2033: fixes provisioning of
email related services
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 c72ab46 ISIS-2033: fixes provisioning of email related services
c72ab46 is described below
commit c72ab4658f9a201ba1e70213c4791412f8dff403
Author: Andi Huber <ah...@apache.org>
AuthorDate: Sat Jan 26 17:00:36 2019 +0100
ISIS-2033: fixes provisioning of email related services
also handle serialization aspects such that injection points are
transient
Task-Url: https://issues.apache.org/jira/browse/ISIS-2033
---
.../apache/isis/applib/annotation/Constants.java | 6 ++++
.../isis/applib/services/email/EmailService.java | 12 -------
.../services/userreg/EmailNotificationService.java | 11 -------
.../apache/isis/config/beans/WebAppConfigBean.java | 6 +++-
.../isis/core/plugins/ioc/weld/WeldFactory.java | 2 ++
.../services/email/EmailServiceDefault.java | 21 ++++++------
.../userreg/EmailNotificationServiceDefault.java | 27 ++++-----------
.../wicket/viewer/IsisWicketApplication.java | 9 +++--
.../services/EmailNotificationServiceWicket.java | 13 ++------
.../password_reset/PasswordResetEmailPanel.java | 29 +++++++++--------
.../accmngt/signup/RegistrationFormPanel.java | 29 +++++++++--------
.../wicket/ui/pages/login/IsisSignInPanel.java | 38 +++++++++-------------
.../application/HelloWorldAppManifest.java | 19 ++++++++---
13 files changed, 98 insertions(+), 124 deletions(-)
diff --git a/core/applib/src/main/java/org/apache/isis/applib/annotation/Constants.java b/core/applib/src/main/java/org/apache/isis/applib/annotation/Constants.java
index c33615f..ea52801 100644
--- a/core/applib/src/main/java/org/apache/isis/applib/annotation/Constants.java
+++ b/core/applib/src/main/java/org/apache/isis/applib/annotation/Constants.java
@@ -24,4 +24,10 @@ public class Constants {
private Constants(){}
public static final String MENU_ORDER_DEFAULT = "" + (Integer.MAX_VALUE - 100);
+
+ /**
+ * use for @Priority(value=...) as wicket default, when required
+ */
+ public static final int WICKET_SERVICE_PRIORITY = 20;
+
}
\ No newline at end of file
diff --git a/core/applib/src/main/java/org/apache/isis/applib/services/email/EmailService.java b/core/applib/src/main/java/org/apache/isis/applib/services/email/EmailService.java
index d2ca299..294af48 100644
--- a/core/applib/src/main/java/org/apache/isis/applib/services/email/EmailService.java
+++ b/core/applib/src/main/java/org/apache/isis/applib/services/email/EmailService.java
@@ -22,9 +22,6 @@ import java.io.Serializable;
import java.util.List;
import javax.activation.DataSource;
-import javax.annotation.PostConstruct;
-
-import org.apache.isis.applib.annotation.Programmatic;
/**
* Provides the ability to send emails to one or more recipients.
@@ -37,22 +34,13 @@ import org.apache.isis.applib.annotation.Programmatic;
public interface EmailService extends Serializable {
/**
- * Always called by the framework, and allows the implementation to read configuration properties and initialize itself
- */
- @PostConstruct
- @Programmatic
- public void init() ;
-
- /**
* Main API to send email and optional attachments.
*/
- @Programmatic
boolean send(List<String> to, List<String> cc, List<String> bcc, String subject, String body, DataSource... attachments);
/**
* Whether this service has been configured and thus available for use.
*/
- @Programmatic
boolean isConfigured();
}
diff --git a/core/applib/src/main/java/org/apache/isis/applib/services/userreg/EmailNotificationService.java b/core/applib/src/main/java/org/apache/isis/applib/services/userreg/EmailNotificationService.java
index 95660a5..fa29b66 100644
--- a/core/applib/src/main/java/org/apache/isis/applib/services/userreg/EmailNotificationService.java
+++ b/core/applib/src/main/java/org/apache/isis/applib/services/userreg/EmailNotificationService.java
@@ -20,9 +20,6 @@ package org.apache.isis.applib.services.userreg;
import java.io.Serializable;
-import javax.annotation.PostConstruct;
-
-import org.apache.isis.applib.annotation.Programmatic;
import org.apache.isis.applib.services.userreg.events.EmailRegistrationEvent;
import org.apache.isis.applib.services.userreg.events.PasswordResetEvent;
@@ -36,19 +33,11 @@ import org.apache.isis.applib.services.userreg.events.PasswordResetEvent;
*/
public interface EmailNotificationService extends Serializable {
- @PostConstruct
- @Programmatic
- public void init() ;
-
- @Programmatic
boolean send(EmailRegistrationEvent ev);
-
- @Programmatic
boolean send(PasswordResetEvent ev);
/**
* Whether this service has been configured and thus available for use.
*/
- @Programmatic
boolean isConfigured();
}
diff --git a/core/config/src/main/java/org/apache/isis/config/beans/WebAppConfigBean.java b/core/config/src/main/java/org/apache/isis/config/beans/WebAppConfigBean.java
index f998110..3266c9d 100644
--- a/core/config/src/main/java/org/apache/isis/config/beans/WebAppConfigBean.java
+++ b/core/config/src/main/java/org/apache/isis/config/beans/WebAppConfigBean.java
@@ -1,11 +1,15 @@
package org.apache.isis.config.beans;
+import java.io.Serializable;
+
import lombok.Builder;
import lombok.Data;
@Data @Builder
-public class WebAppConfigBean {
+public class WebAppConfigBean implements Serializable {
+ private static final long serialVersionUID = 1L;
+
private String applicationName;
private String applicationVersion;
private String aboutMessage;
diff --git a/core/plugins/ioc-weld/src/main/java/org/apache/isis/core/plugins/ioc/weld/WeldFactory.java b/core/plugins/ioc-weld/src/main/java/org/apache/isis/core/plugins/ioc/weld/WeldFactory.java
index 18c29bc..a84d5d4 100644
--- a/core/plugins/ioc-weld/src/main/java/org/apache/isis/core/plugins/ioc/weld/WeldFactory.java
+++ b/core/plugins/ioc-weld/src/main/java/org/apache/isis/core/plugins/ioc/weld/WeldFactory.java
@@ -52,6 +52,8 @@ public class WeldFactory {
final Class<?>[] additionalPackages =
classesForClassNames(
+ //FIXME [2033] this is just for PoC, don't hardcode this here !? ...
+
"org.apache.isis.core.plugins.ioc.weld.services.request.RequestContextServiceWeld",
"domainapp.application.HelloWorldAppManifest", // specific to the app
diff --git a/core/runtime/src/main/java/org/apache/isis/core/runtime/services/email/EmailServiceDefault.java b/core/runtime/src/main/java/org/apache/isis/core/runtime/services/email/EmailServiceDefault.java
index 1abd4ee..e35facd 100644
--- a/core/runtime/src/main/java/org/apache/isis/core/runtime/services/email/EmailServiceDefault.java
+++ b/core/runtime/src/main/java/org/apache/isis/core/runtime/services/email/EmailServiceDefault.java
@@ -31,22 +31,23 @@ import org.apache.commons.mail.DefaultAuthenticator;
import org.apache.commons.mail.EmailException;
import org.apache.commons.mail.ImageHtmlEmail;
import org.apache.commons.mail.resolver.DataSourceClassPathResolver;
-import org.slf4j.Logger;
-import org.slf4j.LoggerFactory;
-import org.apache.isis.applib.annotation.Programmatic;
import org.apache.isis.applib.services.email.EmailService;
import org.apache.isis.commons.internal.base._Strings;
import org.apache.isis.config.IsisConfiguration;
+import lombok.extern.slf4j.Slf4j;
+
/**
* A service that sends email notifications when specific events occur
*/
-@Singleton
+@Slf4j @Singleton
public class EmailServiceDefault implements EmailService {
private static final long serialVersionUID = 1L;
- private static final Logger LOG = LoggerFactory.getLogger(EmailServiceDefault.class);
+
+ @Inject transient IsisConfiguration configuration;
+
public static class EmailServiceException extends RuntimeException {
static final long serialVersionUID = 1L;
@@ -90,9 +91,7 @@ public class EmailServiceDefault implements EmailService {
/**
* Loads responsive email templates borrowed from http://zurb.com/ink/templates.php (Basic)
*/
- @Override
@PostConstruct
- @Programmatic
public void init() {
if (initialized) {
@@ -102,9 +101,9 @@ public class EmailServiceDefault implements EmailService {
initialized = true;
if (!isConfigured()) {
- LOG.warn("NOT configured");
+ log.warn("NOT configured");
} else {
- LOG.debug("configured");
+ log.debug("configured");
}
}
@@ -241,7 +240,7 @@ public class EmailServiceDefault implements EmailService {
email.send();
} catch (EmailException ex) {
- LOG.error("An error occurred while trying to send an email", ex);
+ log.error("An error occurred while trying to send an email", ex);
final Boolean throwExceptionOnFail = isThrowExceptionOnFail();
if (throwExceptionOnFail) {
throw new EmailServiceException(ex);
@@ -270,6 +269,6 @@ public class EmailServiceDefault implements EmailService {
}
// endregion
- @Inject IsisConfiguration configuration;
+
}
\ No newline at end of file
diff --git a/core/runtime/src/main/java/org/apache/isis/core/runtime/services/userreg/EmailNotificationServiceDefault.java b/core/runtime/src/main/java/org/apache/isis/core/runtime/services/userreg/EmailNotificationServiceDefault.java
index 3bf2c31..32a9b94 100644
--- a/core/runtime/src/main/java/org/apache/isis/core/runtime/services/userreg/EmailNotificationServiceDefault.java
+++ b/core/runtime/src/main/java/org/apache/isis/core/runtime/services/userreg/EmailNotificationServiceDefault.java
@@ -29,10 +29,11 @@ import java.util.List;
import java.util.regex.Pattern;
import javax.annotation.PostConstruct;
+import javax.annotation.Priority;
+import javax.enterprise.inject.Alternative;
import javax.inject.Inject;
import javax.inject.Singleton;
-import org.apache.isis.applib.annotation.Programmatic;
import org.apache.isis.applib.services.email.EmailService;
import org.apache.isis.applib.services.userreg.EmailNotificationService;
import org.apache.isis.applib.services.userreg.events.EmailEventAbstract;
@@ -43,11 +44,13 @@ import org.apache.isis.commons.internal.resources._Resources;
/**
* A service that sends email notifications when specific events occur
*/
-@Singleton
+@Singleton @Alternative @Priority(0)
public class EmailNotificationServiceDefault implements EmailNotificationService {
private static final long serialVersionUID = 1L;
- //private static final Logger LOG = LoggerFactory.getLogger(EmailNotificationServiceDefault.class);
+
+ @Inject private transient EmailService emailService;
+
// -- constants
@@ -66,9 +69,7 @@ public class EmailNotificationServiceDefault implements EmailNotificationService
/**
* Loads responsive email templates borrowed from http://zurb.com/ink/templates.php (Basic)
*/
- @Override
@PostConstruct
- @Programmatic
public void init() {
if(initialized) {
@@ -92,18 +93,13 @@ public class EmailNotificationServiceDefault implements EmailNotificationService
// -- isConfigured
- @Programmatic
@Override
public boolean isConfigured() {
return emailService != null && emailService.isConfigured();
}
-
-
// -- send
-
- @Programmatic
@Override
public boolean send(final EmailRegistrationEvent emailRegistrationEvent) {
ensureConfigured();
@@ -111,7 +107,6 @@ public class EmailNotificationServiceDefault implements EmailNotificationService
return sendEmail(emailRegistrationEvent, body);
}
- @Programmatic
@Override
public boolean send(final PasswordResetEvent passwordResetEvent) {
ensureConfigured();
@@ -119,8 +114,6 @@ public class EmailNotificationServiceDefault implements EmailNotificationService
return sendEmail(passwordResetEvent, body);
}
-
-
// -- helper methods for send(...)
private void ensureConfigured() {
@@ -162,12 +155,6 @@ public class EmailNotificationServiceDefault implements EmailNotificationService
message = APPLICATION_NAME_PATTERN.matcher(message).replaceAll(emailEvent.getApplicationName());
return message;
}
-
-
-
- // -- dependencies
-
- @Inject private EmailService emailService;
-
+
}
diff --git a/core/viewer-wicket-impl/src/main/java/org/apache/isis/viewer/wicket/viewer/IsisWicketApplication.java b/core/viewer-wicket-impl/src/main/java/org/apache/isis/viewer/wicket/viewer/IsisWicketApplication.java
index aa008a4..467d808 100644
--- a/core/viewer-wicket-impl/src/main/java/org/apache/isis/viewer/wicket/viewer/IsisWicketApplication.java
+++ b/core/viewer-wicket-impl/src/main/java/org/apache/isis/viewer/wicket/viewer/IsisWicketApplication.java
@@ -19,6 +19,9 @@
package org.apache.isis.viewer.wicket.viewer;
+import static java.util.Objects.requireNonNull;
+import static org.apache.isis.commons.internal.base._With.acceptIfPresent;
+
import java.io.IOException;
import java.nio.charset.StandardCharsets;
import java.util.Arrays;
@@ -76,7 +79,6 @@ import org.apache.isis.config.IsisConfiguration;
import org.apache.isis.config.internal._Config;
import org.apache.isis.core.commons.ensure.Ensure;
import org.apache.isis.core.metamodel.adapter.ObjectAdapter;
-import org.apache.isis.core.metamodel.specloader.validator.MetaModelInvalidException;
import org.apache.isis.core.runtime.system.context.IsisContext;
import org.apache.isis.core.runtime.system.session.IsisSessionFactory;
import org.apache.isis.core.runtime.threadpool.ThreadPoolSupport;
@@ -104,9 +106,6 @@ import org.apache.isis.viewer.wicket.viewer.integration.wicket.ConverterForObjec
import org.apache.isis.viewer.wicket.viewer.integration.wicket.WebRequestCycleForIsis;
import org.apache.isis.viewer.wicket.viewer.settings.IsisResourceSettings;
-import static java.util.Objects.requireNonNull;
-import static org.apache.isis.commons.internal.base._With.acceptIfPresent;
-
import de.agilecoders.wicket.core.Bootstrap;
import de.agilecoders.wicket.core.markup.html.bootstrap.behavior.BootstrapBaseBehavior;
import de.agilecoders.wicket.core.settings.BootstrapSettings;
@@ -255,7 +254,7 @@ implements ComponentFactoryRegistryAccessor, PageClassRegistryAccessor, WicketVi
new CdiConfiguration(beanManager).configure(this);
-// // FIXME
+// // FIXME [2033]
// // create IsisSessionFactory
// //
// final Injector injector = Guice.createInjector(
diff --git a/core/viewer-wicket-impl/src/main/java/org/apache/isis/viewer/wicket/viewer/services/EmailNotificationServiceWicket.java b/core/viewer-wicket-impl/src/main/java/org/apache/isis/viewer/wicket/viewer/services/EmailNotificationServiceWicket.java
index e3e4f01..ca5ad9d 100644
--- a/core/viewer-wicket-impl/src/main/java/org/apache/isis/viewer/wicket/viewer/services/EmailNotificationServiceWicket.java
+++ b/core/viewer-wicket-impl/src/main/java/org/apache/isis/viewer/wicket/viewer/services/EmailNotificationServiceWicket.java
@@ -16,26 +16,19 @@
*/
package org.apache.isis.viewer.wicket.viewer.services;
-import javax.inject.Singleton;
-import javax.enterprise.context.ApplicationScoped;
-
import org.apache.isis.applib.services.userreg.EmailNotificationService;
import org.apache.isis.applib.services.userreg.events.EmailRegistrationEvent;
import org.apache.isis.applib.services.userreg.events.PasswordResetEvent;
import org.apache.isis.commons.internal.base._Lazy;
import org.apache.isis.core.runtime.system.context.IsisContext;
-@Singleton
-public class EmailNotificationServiceWicket implements EmailNotificationService {
+//@Singleton @Alternative @Priority(Constants.WICKET_SERVICE_PRIORITY)
+@Deprecated //TODO [2033] adds no value
+class EmailNotificationServiceWicket implements EmailNotificationService {
private static final long serialVersionUID = 1L;
@Override
- public void init() {
- // delegate is a managed object, hence the framework takes care of initializing it
- }
-
- @Override
public boolean send(EmailRegistrationEvent ev) {
return delegate.get().send(ev);
}
diff --git a/core/viewer-wicket-ui/src/main/java/org/apache/isis/viewer/wicket/ui/pages/accmngt/password_reset/PasswordResetEmailPanel.java b/core/viewer-wicket-ui/src/main/java/org/apache/isis/viewer/wicket/ui/pages/accmngt/password_reset/PasswordResetEmailPanel.java
index 9399bf1..4d1e408 100644
--- a/core/viewer-wicket-ui/src/main/java/org/apache/isis/viewer/wicket/ui/pages/accmngt/password_reset/PasswordResetEmailPanel.java
+++ b/core/viewer-wicket-ui/src/main/java/org/apache/isis/viewer/wicket/ui/pages/accmngt/password_reset/PasswordResetEmailPanel.java
@@ -52,6 +52,12 @@ public class PasswordResetEmailPanel extends Panel {
private static final long serialVersionUID = 1L;
+ @Inject private transient EmailNotificationService emailNotificationService;
+ @Inject private transient EmailService emailService;
+ @Inject private transient EmailVerificationUrlService emailVerificationUrlService;
+ @Inject private transient PageNavigationService pageNavigationService;
+ @Inject private transient WebAppConfigBean webAppConfigBean;
+
/**
* Constructor
*
@@ -85,14 +91,15 @@ public class PasswordResetEmailPanel extends Panel {
String confirmationUrl = emailVerificationUrlService.createVerificationUrl(PageType.PASSWORD_RESET, email);
- /**
- * We have to init() the services here because the Isis runtime is not available to us
- * (guice will have instantiated a new instance of the service).
- *
- * We do it this way just so that the programming model for the EmailService is similar to regular Isis-managed services.
- */
- emailNotificationService.init();
- emailService.init();
+//TODO [2033] remove ...
+// /**
+// * We have to init() the services here because the Isis runtime is not available to us
+// * (guice will have instantiated a new instance of the service).
+// *
+// * We do it this way just so that the programming model for the EmailService is similar to regular Isis-managed services.
+// */
+// emailNotificationService.init();
+// emailService.init();
final PasswordResetEvent passwordResetEvent = new PasswordResetEvent(
email,
@@ -116,10 +123,6 @@ public class PasswordResetEmailPanel extends Panel {
form.add(signUpButton);
}
- @Inject private EmailNotificationService emailNotificationService;
- @Inject private EmailService emailService;
- @Inject private EmailVerificationUrlService emailVerificationUrlService;
- @Inject private PageNavigationService pageNavigationService;
- @Inject private WebAppConfigBean webAppConfigBean;
+
}
diff --git a/core/viewer-wicket-ui/src/main/java/org/apache/isis/viewer/wicket/ui/pages/accmngt/signup/RegistrationFormPanel.java b/core/viewer-wicket-ui/src/main/java/org/apache/isis/viewer/wicket/ui/pages/accmngt/signup/RegistrationFormPanel.java
index 06602e9..ffcfb06 100644
--- a/core/viewer-wicket-ui/src/main/java/org/apache/isis/viewer/wicket/ui/pages/accmngt/signup/RegistrationFormPanel.java
+++ b/core/viewer-wicket-ui/src/main/java/org/apache/isis/viewer/wicket/ui/pages/accmngt/signup/RegistrationFormPanel.java
@@ -52,6 +52,12 @@ import de.agilecoders.wicket.core.markup.html.bootstrap.common.NotificationPanel
public class RegistrationFormPanel extends Panel {
private static final long serialVersionUID = 1L;
+
+ @Inject private transient EmailNotificationService emailNotificationService;
+ @Inject private transient EmailService emailService;
+ @Inject private transient EmailVerificationUrlService emailVerificationUrlService;
+ @Inject private transient PageNavigationService pageNavigationService;
+ @Inject private transient WebAppConfigBean webAppConfigBean;
/**
* Constructor
@@ -87,14 +93,15 @@ public class RegistrationFormPanel extends Panel {
String email = emailField.getModelObject();
String confirmationUrl = emailVerificationUrlService.createVerificationUrl(PageType.SIGN_UP_VERIFY, email);
- /**
- * We have to init() the services here because the Isis runtime is not available to us
- * (guice will have instantiated a new instance of the service).
- *
- * We do it this way just so that the programming model for the EmailService is similar to regular Isis-managed services.
- */
- emailNotificationService.init();
- emailService.init();
+//TODO [2033] remove ...
+// /**
+// * We have to init() the services here because the Isis runtime is not available to us
+// * (guice will have instantiated a new instance of the service).
+// *
+// * We do it this way just so that the programming model for the EmailService is similar to regular Isis-managed services.
+// */
+// emailNotificationService.init();
+// emailService.init();
final EmailRegistrationEvent emailRegistrationEvent = new EmailRegistrationEvent(
email,
@@ -117,11 +124,7 @@ public class RegistrationFormPanel extends Panel {
form.add(signUpButton);
}
- @Inject private EmailNotificationService emailNotificationService;
- @Inject private EmailService emailService;
- @Inject private EmailVerificationUrlService emailVerificationUrlService;
- @Inject private PageNavigationService pageNavigationService;
- @Inject private WebAppConfigBean webAppConfigBean;
+
}
diff --git a/core/viewer-wicket-ui/src/main/java/org/apache/isis/viewer/wicket/ui/pages/login/IsisSignInPanel.java b/core/viewer-wicket-ui/src/main/java/org/apache/isis/viewer/wicket/ui/pages/login/IsisSignInPanel.java
index 2fdc4dc..b8a3ac0 100644
--- a/core/viewer-wicket-ui/src/main/java/org/apache/isis/viewer/wicket/ui/pages/login/IsisSignInPanel.java
+++ b/core/viewer-wicket-ui/src/main/java/org/apache/isis/viewer/wicket/ui/pages/login/IsisSignInPanel.java
@@ -19,6 +19,9 @@
package org.apache.isis.viewer.wicket.ui.pages.login;
+import javax.enterprise.inject.Instance;
+import javax.inject.Inject;
+
import org.apache.wicket.Component;
import org.apache.wicket.MarkupContainer;
import org.apache.wicket.Page;
@@ -44,6 +47,12 @@ public class IsisSignInPanel extends SignInPanel {
private static final long serialVersionUID = 1L;
+ @Inject transient IsisSessionFactory isisSessionFactory;
+ @Inject transient ServiceInjector servicesInjector;
+ @Inject transient private PageClassRegistry pageClassRegistry;
+ @Inject transient Instance<UserRegistrationService> anyUserRegistrationService;
+ @Inject transient Instance<EmailNotificationService> anyEmailNotificationService;
+
private final boolean signUpLink;
private final boolean passwordResetLink;
private final boolean clearOriginalDestination;
@@ -117,11 +126,12 @@ public class IsisSignInPanel extends SignInPanel {
}
private void setVisibilityAllowedBasedOnAvailableServices(final Component... components) {
- final UserRegistrationService userRegistrationService =
- servicesInjector.lookupService(UserRegistrationService.class).orElse(null);
- final EmailNotificationService emailNotificationService1 =
- servicesInjector.lookupService(EmailNotificationService.class).orElse(null);
- final boolean visibilityAllowed = userRegistrationService != null && emailNotificationService1.isConfigured();
+ final UserRegistrationService userRegistrationService =
+ anyUserRegistrationService.stream().findFirst().orElse(null);
+ final EmailNotificationService emailNotificationService =
+ anyEmailNotificationService.stream().findFirst().orElse(null);
+
+ final boolean visibilityAllowed = userRegistrationService != null && emailNotificationService.isConfigured();
for (final Component component: components) {
if(component.isVisibilityAllowed()) {
component.setVisibilityAllowed(visibilityAllowed);
@@ -149,24 +159,6 @@ public class IsisSignInPanel extends SignInPanel {
}
super.onSignInRemembered();
}
-
-
- // //////////////////////////////////////
-
- @javax.inject.Inject // strangely, this isn't a @com.google.inject.Inject
- IsisSessionFactory isisSessionFactory;
-
- @javax.inject.Inject // strangely, this isn't a @com.google.inject.Inject
- ServiceInjector servicesInjector;
-
- @javax.inject.Inject // strangely, this isn't a @com.google.inject.Inject
- private PageClassRegistry pageClassRegistry;
-//not used
-// @javax.inject.Inject // strangely, this isn't a @com.google.inject.Inject
-// private EmailNotificationService emailNotificationService;
-//
-// @javax.inject.Inject // strangely, this isn't a @com.google.inject.Inject
-// private EmailService emailService;
}
diff --git a/example/application/helloworld/src/main/java/domainapp/application/HelloWorldAppManifest.java b/example/application/helloworld/src/main/java/domainapp/application/HelloWorldAppManifest.java
index 137a819..865d9cf 100644
--- a/example/application/helloworld/src/main/java/domainapp/application/HelloWorldAppManifest.java
+++ b/example/application/helloworld/src/main/java/domainapp/application/HelloWorldAppManifest.java
@@ -18,12 +18,13 @@
*/
package domainapp.application;
-import javax.enterprise.context.ApplicationScoped;
import javax.enterprise.inject.Produces;
+import javax.inject.Singleton;
import org.apache.isis.applib.AppManifestAbstract2;
import org.apache.isis.config.AppConfig;
import org.apache.isis.config.IsisConfiguration;
+import org.apache.isis.config.beans.WebAppConfigBean;
import org.apache.isis.core.runtime.authorization.standard.AuthorizationManagerStandard;
import org.apache.isis.core.runtime.threadpool.ThreadPoolExecutionMode;
import org.apache.isis.core.runtime.threadpool.ThreadPoolSupport;
@@ -38,7 +39,7 @@ import domainapp.dom.HelloWorldModule;
/**
* Bootstrap the application.
*/
-@ApplicationScoped // only if you want AppConfig to be managed by CDI (if available), otherwise not required
+@Singleton // only if you want AppConfig to be managed by CDI (if available), otherwise not required
public class HelloWorldAppManifest extends AppManifestAbstract2 implements AppConfig {
public static final Builder BUILDER = Builder
@@ -57,7 +58,7 @@ public class HelloWorldAppManifest extends AppManifestAbstract2 implements AppCo
}
// Implementing AppConfig, to tell the framework how to bootstrap the configuration.
- @Override @Produces @ApplicationScoped
+ @Override @Produces @Singleton
public IsisConfiguration isisConfiguration() {
return IsisConfiguration.buildFromAppManifest(this);
}
@@ -68,14 +69,14 @@ public class HelloWorldAppManifest extends AppManifestAbstract2 implements AppCo
* <p>
* integration tests ignore appManifest for authentication and authorization.
*/
- @Produces @ApplicationScoped
+ @Produces @Singleton
public AuthenticationManager authenticationManagerWithBypass() {
final AuthenticationManagerStandard authenticationManager = new AuthenticationManagerStandard();
authenticationManager.addAuthenticator(new AuthenticatorBypass());
return authenticationManager;
}
- @Produces @ApplicationScoped
+ @Produces @Singleton
public AuthorizationManager authorizationManagerWithBypass() {
final AuthorizationManagerStandard authorizationManager = new AuthorizationManagerStandard() {
{
@@ -84,6 +85,14 @@ public class HelloWorldAppManifest extends AppManifestAbstract2 implements AppCo
};
return authorizationManager;
}
+
+ @Produces @Singleton
+ public WebAppConfigBean webAppConfigBean() {
+ return WebAppConfigBean.builder()
+ .build();
+ }
+
+
}