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/23 18:04:05 UTC
[isis] branch 2033-IoC updated: ISIS-2033: further fixes
provisioning issues
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 ecd4226 ISIS-2033: further fixes provisioning issues
ecd4226 is described below
commit ecd4226a0720bbbd30236c20a8257aefc930dfd0
Author: Andi Huber <ah...@apache.org>
AuthorDate: Wed Jan 23 19:03:57 2019 +0100
ISIS-2033: further fixes provisioning issues
Task-Url: https://issues.apache.org/jira/browse/ISIS-2033
---
.../org/apache/isis/commons/internal/cdi/_CDI.java | 18 +++-
.../org/apache/isis/config/AppConfigLocator.java | 107 ++++++++++++---------
.../config/builder/IsisConfigurationBuilder.java | 1 +
.../builder/IsisConfigurationBuilderDefault.java | 5 +
.../services/registry/ServiceRegistryDefault.java | 53 +++++-----
.../isis/core/plugins/ioc/weld/WeldFactory.java | 27 +++---
.../system/session/IsisSessionFactoryDefault.java | 4 +-
.../system/session/IsisSessionProducerBean.java | 12 ---
.../core/webapp/IsisWebAppContextListener.java | 30 ++++--
....AppConfig => org.apache.isis.config.AppConfig} | 0
.../application/HelloWorldAppManifest.java | 7 +-
11 files changed, 151 insertions(+), 113 deletions(-)
diff --git a/core/commons/src/main/java/org/apache/isis/commons/internal/cdi/_CDI.java b/core/commons/src/main/java/org/apache/isis/commons/internal/cdi/_CDI.java
index 9523e4e..79b5277 100644
--- a/core/commons/src/main/java/org/apache/isis/commons/internal/cdi/_CDI.java
+++ b/core/commons/src/main/java/org/apache/isis/commons/internal/cdi/_CDI.java
@@ -23,14 +23,18 @@ import java.util.Collection;
import java.util.List;
import java.util.NoSuchElementException;
import java.util.Optional;
+import java.util.Set;
import java.util.function.Supplier;
import java.util.stream.Collectors;
import java.util.stream.Stream;
+import javax.enterprise.inject.Any;
import javax.enterprise.inject.Instance;
+import javax.enterprise.inject.spi.Bean;
import javax.enterprise.inject.spi.BeanManager;
import javax.enterprise.inject.spi.CDI;
import javax.enterprise.inject.spi.CDIProvider;
+import javax.enterprise.util.AnnotationLiteral;
import javax.inject.Qualifier;
import org.apache.isis.commons.internal.context._Context;
@@ -206,6 +210,18 @@ public final class _CDI {
new NoSuchElementException(String.format("Could not resolve an instance of type '%s'", type.getName())));
}
+ // -- ENUMERATE BEANS
+
+ public final static AnnotationLiteral<Any> QUALIFIER_ANY =
+ new AnnotationLiteral<Any>() {
+ private static final long serialVersionUID = 1L;};
+
+ public static Stream<Bean<?>> streamAllBeans() {
+ BeanManager beanManager = _CDI.getBeanManager();
+ Set<Bean<?>> beans = beanManager.getBeans(Object.class, _CDI.QUALIFIER_ANY);
+ return beans.stream();
+ }
+
// -- HELPER
private _CDI() {}
@@ -231,7 +247,7 @@ public final class _CDI {
}
}
-
+
}
diff --git a/core/config/src/main/java/org/apache/isis/config/AppConfigLocator.java b/core/config/src/main/java/org/apache/isis/config/AppConfigLocator.java
index c7d62d6..bf378f9 100644
--- a/core/config/src/main/java/org/apache/isis/config/AppConfigLocator.java
+++ b/core/config/src/main/java/org/apache/isis/config/AppConfigLocator.java
@@ -18,16 +18,15 @@
*/
package org.apache.isis.config;
-import org.slf4j.Logger;
-import org.slf4j.LoggerFactory;
-
-import org.apache.isis.applib.AppManifest;
-import org.apache.isis.commons.internal.base._Casts;
import org.apache.isis.commons.internal.cdi._CDI;
import org.apache.isis.commons.internal.context._Context;
import org.apache.isis.commons.internal.context._Plugin;
-import org.apache.isis.config.builder.IsisConfigurationBuilder;
+import org.apache.isis.commons.internal.debug._Probe;
import org.apache.isis.core.commons.exceptions.IsisException;
+import org.slf4j.Logger;
+import org.slf4j.LoggerFactory;
+
+import lombok.val;
public final class AppConfigLocator {
@@ -36,14 +35,29 @@ public final class AppConfigLocator {
private AppConfigLocator() { }
public static AppConfig getAppConfig() {
- return _Context.computeIfAbsent(AppConfig.class, ()->lookupAppConfigAndInitCDI());
+ return _Context.computeIfAbsent(AppConfig.class, ()->lookupAppConfigAndVerifyCDI());
}
// -- HELPER
- private static AppConfig lookupAppConfigAndInitCDI() {
+ private final static _Probe probe =
+ _Probe.unlimited().label("AppConfigLocator");
+
+ private static AppConfig lookupAppConfigAndVerifyCDI() {
final AppConfig appConfig = lookupAppConfig();
- _CDI.init(appConfig.isisConfiguration()::streamClassesToDiscover);
+
+ _CDI.streamAllBeans().forEach(bean->{
+
+ val type = bean.getBeanClass();
+ val logScope = type.getName().startsWith("org.apache.isis.") ||
+ type.getName().startsWith("domainapp.");
+ if(logScope) {
+ probe.println("discovered bean %s", bean);
+ }
+ });
+
+ // TODO ensure critical services are managed by CDI
+
return appConfig;
}
@@ -54,22 +68,27 @@ public final class AppConfigLocator {
appConfig = lookupAppConfig_UsingCDI();
if(appConfig!=null) {
LOG.info(String.format("Located AppConfig '%s' via CDI.", appConfig.getClass().getName()));
+
return appConfig;
}
appConfig = lookupAppConfig_UsingServiceLoader();
if(appConfig!=null) {
LOG.info(String.format("Located AppConfig '%s' via ServiceLoader.", appConfig.getClass().getName()));
+
+ // as we are in a non-managed environment, we need to bootstrap CDI ourself
+ _CDI.init(appConfig.isisConfiguration()::streamClassesToDiscover);
+
return appConfig;
}
- appConfig = lookupAppConfig_UsingConfigProperties();
- if(appConfig!=null) {
- LOG.info(String.format("Located AppConfig '%s' using config properties.", appConfig.getClass().getName()));
- return appConfig;
- }
+// appConfig = lookupAppConfig_UsingConfigProperties();
+// if(appConfig!=null) {
+// LOG.info(String.format("Located AppConfig '%s' using config properties.", appConfig.getClass().getName()));
+// return appConfig;
+// }
- throw new IsisException("Failed to locate the AppManifest");
+ throw new IsisException("Failed to locate the AppConfig");
}
private static AppConfig lookupAppConfig_UsingCDI() {
@@ -85,35 +104,35 @@ public final class AppConfigLocator {
()->null);
}
- // to support pre 2.0.0-M2 behavior
- private static AppConfig lookupAppConfig_UsingConfigProperties() {
-
- IsisConfigurationBuilder builder = IsisConfigurationBuilder.getDefault();
- String appManifestClassName = builder.peekAtString("isis.appManifest");
-
- final Class<AppManifest> appManifestClass;
- try {
- appManifestClass = _Casts.uncheckedCast(_Context.loadClassAndInitialize(appManifestClassName));
- } catch (ClassNotFoundException e) {
- throw new IsisException(
- String.format(
- "Failed to locate the AppManifest using config property 'isis.appManifest=%s'.",
- appManifestClassName),
- e);
- }
-
- final AppManifest appManifest;
- try {
- appManifest = appManifestClass.newInstance();
- } catch (InstantiationException | IllegalAccessException e) {
- throw new IsisException(
- String.format("Failed to create instance of AppManifest '%s'.", appManifestClass), e);
- }
-
- // Note: AppConfig is a FunctionalInterface
- return ()->IsisConfiguration.buildFromAppManifest(appManifest);
-
- }
+// // to support pre 2.0.0-M2 behavior
+// private static AppConfig lookupAppConfig_UsingConfigProperties() {
+//
+// IsisConfigurationBuilder builder = IsisConfigurationBuilder.getDefault();
+// String appManifestClassName = builder.peekAtString("isis.appManifest");
+//
+// final Class<AppManifest> appManifestClass;
+// try {
+// appManifestClass = _Casts.uncheckedCast(_Context.loadClassAndInitialize(appManifestClassName));
+// } catch (ClassNotFoundException e) {
+// throw new IsisException(
+// String.format(
+// "Failed to locate the AppManifest using config property 'isis.appManifest=%s'.",
+// appManifestClassName),
+// e);
+// }
+//
+// final AppManifest appManifest;
+// try {
+// appManifest = appManifestClass.newInstance();
+// } catch (InstantiationException | IllegalAccessException e) {
+// throw new IsisException(
+// String.format("Failed to create instance of AppManifest '%s'.", appManifestClass), e);
+// }
+//
+// // Note: AppConfig is a FunctionalInterface
+// return ()->IsisConfiguration.buildFromAppManifest(appManifest);
+//
+// }
diff --git a/core/config/src/main/java/org/apache/isis/config/builder/IsisConfigurationBuilder.java b/core/config/src/main/java/org/apache/isis/config/builder/IsisConfigurationBuilder.java
index 4514eff..f458d10 100644
--- a/core/config/src/main/java/org/apache/isis/config/builder/IsisConfigurationBuilder.java
+++ b/core/config/src/main/java/org/apache/isis/config/builder/IsisConfigurationBuilder.java
@@ -23,6 +23,7 @@ import java.util.List;
import org.apache.isis.applib.AppManifest;
import org.apache.isis.applib.Module;
import org.apache.isis.applib.PropertyResource;
+import org.apache.isis.commons.internal.debug._Probe;
import org.apache.isis.config.IsisConfiguration;
import org.apache.isis.config.NotFoundPolicy;
import org.apache.isis.config.resource.ResourceStreamSource;
diff --git a/core/config/src/main/java/org/apache/isis/config/builder/IsisConfigurationBuilderDefault.java b/core/config/src/main/java/org/apache/isis/config/builder/IsisConfigurationBuilderDefault.java
index 0a5e751..fd182d8 100644
--- a/core/config/src/main/java/org/apache/isis/config/builder/IsisConfigurationBuilderDefault.java
+++ b/core/config/src/main/java/org/apache/isis/config/builder/IsisConfigurationBuilderDefault.java
@@ -34,6 +34,7 @@ import org.apache.isis.applib.Module;
import org.apache.isis.applib.PropertyResource;
import org.apache.isis.commons.internal.collections._Sets;
import org.apache.isis.commons.internal.context._Context;
+import org.apache.isis.commons.internal.debug._Probe;
import org.apache.isis.config.ConfigurationConstants;
import org.apache.isis.config.IsisConfiguration;
import org.apache.isis.config.NotFoundPolicy;
@@ -80,12 +81,16 @@ final class IsisConfigurationBuilderDefault implements IsisConfigurationBuilder
return builder;
}
+ private final static _Probe probe = _Probe.maxCallsThenExitWithStacktrace(2).label("IsisConfigurationBuilderDefault");
+
static IsisConfigurationBuilder getDefault() {
if(_Context.isUnitTesting()) {
return empty();
}
+ probe.println("getDefault()");
+
final ResourceStreamSourceChainOfResponsibility chain = createComposite(Arrays.asList(
ResourceStreamSourceFileSystem.create(ConfigurationConstants.DEFAULT_CONFIG_DIRECTORY)
));
diff --git a/core/metamodel/src/main/java/org/apache/isis/core/metamodel/services/registry/ServiceRegistryDefault.java b/core/metamodel/src/main/java/org/apache/isis/core/metamodel/services/registry/ServiceRegistryDefault.java
index d12b922..a9fc7cc 100644
--- a/core/metamodel/src/main/java/org/apache/isis/core/metamodel/services/registry/ServiceRegistryDefault.java
+++ b/core/metamodel/src/main/java/org/apache/isis/core/metamodel/services/registry/ServiceRegistryDefault.java
@@ -31,11 +31,8 @@ import java.util.function.Predicate;
import java.util.stream.Collectors;
import java.util.stream.Stream;
-import javax.enterprise.inject.Any;
import javax.enterprise.inject.Instance;
import javax.enterprise.inject.spi.Bean;
-import javax.enterprise.inject.spi.BeanManager;
-import javax.enterprise.util.AnnotationLiteral;
import javax.inject.Singleton;
import org.apache.isis.applib.annotation.DomainService;
@@ -77,7 +74,7 @@ public final class ServiceRegistryDefault implements ServiceRegistry {
@Override
public <T> Optional<T> lookupService(Class<T> serviceClass) {
- return _CDI.getInstance(serviceClass, _Lists.of(QUALIFIER_ANY))
+ return _CDI.getInstance(serviceClass, _Lists.of(_CDI.QUALIFIER_ANY))
.map(Instance::get);
}
@@ -158,35 +155,29 @@ public final class ServiceRegistryDefault implements ServiceRegistry {
// -- HELPER ...
- private final static AnnotationLiteral<Any> QUALIFIER_ANY =
- new AnnotationLiteral<Any>() {
- private static final long serialVersionUID = 1L;};
-
private Stream<Bean<?>> streamServiceBeans() {
- if(registeredServiceBeans.isEmpty()) {
-
- BeanManager beanManager = _CDI.getBeanManager();
-
- Set<Bean<?>> beans = beanManager.getBeans(Object.class, QUALIFIER_ANY);
- for (Bean<?> bean : beans) {
-
- val type = bean.getBeanClass();
- val logScope = type.getName().startsWith("org.apache.isis.");
-
-// if(logScope) {
-// log.info("processing bean {}", bean);
-// }
-
- if(!isServiceType(type)) {
- continue;
- }
-
- if(logScope) {
- log.info("registering as a service {}", bean);
- }
-
- }
+ if(registeredServiceBeans.isEmpty()) {
+
+ _CDI.streamAllBeans().forEach(bean->{
+
+ val type = bean.getBeanClass();
+ val logScope = type.getName().startsWith("org.apache.isis.");
+
+ // if(logScope) {
+ // log.info("processing bean {}", bean);
+ // }
+
+ if(!isServiceType(type)) {
+ return;
+ }
+
+ if(logScope) {
+ log.info("registering as a service {}", bean);
+ registeredServiceBeans.add(bean);
+ }
+
+ });
}
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 d487e04..7ef0cd1 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
@@ -16,20 +16,19 @@
*/
package org.apache.isis.core.plugins.ioc.weld;
+import static org.apache.isis.commons.internal.base._NullSafe.stream;
+
import java.util.stream.Stream;
import javax.annotation.Nullable;
-import org.jboss.weld.environment.se.Weld;
-import org.jboss.weld.environment.se.WeldContainer;
-
import org.apache.isis.commons.internal.base._Strings;
import org.apache.isis.commons.internal.collections._Arrays;
import org.apache.isis.commons.internal.context._Context;
import org.apache.isis.commons.internal.debug._Probe;
import org.apache.isis.commons.internal.exceptions._Exceptions;
-
-import static org.apache.isis.commons.internal.base._NullSafe.stream;
+import org.jboss.weld.environment.se.Weld;
+import org.jboss.weld.environment.se.WeldContainer;
/**
* @since 2.0.0-M2
@@ -49,7 +48,7 @@ public class WeldFactory {
final Class<?>[] classes = stream(discover)
.collect(_Arrays.toArray(Class.class));
- final Class<?> beanScanInterceptor = classForName("org.apache.isis.core.webapp.jee.IsisCDIBeanScanInterceptor");
+ //final Class<?> beanScanInterceptor = classForName("org.apache.isis.core.webapp.jee.IsisCDIBeanScanInterceptor");
final Class<?>[] additionalPackages =
classesForClassNames(
@@ -70,7 +69,7 @@ public class WeldFactory {
stream(classes)
.forEach(c->probe.println("scanning class %s", c));
stream(additionalPackages)
- .forEach(p->probe.println("scanning additionalPackag %s", p));
+ .forEach(p->probe.println("scanning additionalPackage %s", p));
boolean scanRecursively = true;
@@ -91,13 +90,13 @@ public class WeldFactory {
}
- private static Package[] packagesForClassNames(String ... names) {
- final Package[] packages = stream(names)
- .map(WeldFactory::classForName)
- .map(Class::getPackage)
- .collect(_Arrays.toArray(Package.class));
- return packages;
- }
+// private static Package[] packagesForClassNames(String ... names) {
+// final Package[] packages = stream(names)
+// .map(WeldFactory::classForName)
+// .map(Class::getPackage)
+// .collect(_Arrays.toArray(Package.class));
+// return packages;
+// }
private static Class<?>[] classesForClassNames(String ... names) {
final Class<?>[] classes = stream(names)
diff --git a/core/runtime/src/main/java/org/apache/isis/core/runtime/system/session/IsisSessionFactoryDefault.java b/core/runtime/src/main/java/org/apache/isis/core/runtime/system/session/IsisSessionFactoryDefault.java
index 8f3bb7f..de16714 100644
--- a/core/runtime/src/main/java/org/apache/isis/core/runtime/system/session/IsisSessionFactoryDefault.java
+++ b/core/runtime/src/main/java/org/apache/isis/core/runtime/system/session/IsisSessionFactoryDefault.java
@@ -65,8 +65,7 @@ import org.apache.isis.core.security.authorization.manager.AuthorizationManager;
@Vetoed // has a producer
public class IsisSessionFactoryDefault implements IsisSessionFactory {
- @Inject private IsisConfiguration configuration;
-
+ private IsisConfiguration configuration;
private PersistenceSessionFactory persistenceSessionFactory;
private ServiceInjector serviceInjector;
private ServiceRegistry serviceRegistry;
@@ -105,6 +104,7 @@ public class IsisSessionFactoryDefault implements IsisSessionFactory {
void initDependencies(
PersistenceSessionFactory persistenceSessionFactory,
SpecificationLoader specificationLoader) {
+ this.configuration = IsisContext.getConfiguration();
this.serviceInjector = IsisContext.getServiceInjector();
this.serviceRegistry = IsisContext.getServiceRegistry();
this.authorizationManager = IsisContext.getAuthorizationManager();
diff --git a/core/runtime/src/main/java/org/apache/isis/core/runtime/system/session/IsisSessionProducerBean.java b/core/runtime/src/main/java/org/apache/isis/core/runtime/system/session/IsisSessionProducerBean.java
index 73b2e47..40751e4 100644
--- a/core/runtime/src/main/java/org/apache/isis/core/runtime/system/session/IsisSessionProducerBean.java
+++ b/core/runtime/src/main/java/org/apache/isis/core/runtime/system/session/IsisSessionProducerBean.java
@@ -27,8 +27,6 @@ import org.apache.isis.commons.internal.context._Context;
import org.apache.isis.commons.internal.debug._Probe;
import org.apache.isis.core.metamodel.specloader.SpecificationLoader;
import org.apache.isis.core.runtime.system.persistence.PersistenceSessionFactory;
-import org.apache.isis.core.security.authentication.manager.AuthenticationManager;
-import org.apache.isis.core.security.authorization.manager.AuthorizationManager;
@ApplicationScoped
public class IsisSessionProducerBean {
@@ -44,16 +42,6 @@ public class IsisSessionProducerBean {
}
@Produces @ApplicationScoped
- public AuthenticationManager produceAuthenticationManager() {
- return produceIsisSessionFactory().getAuthenticationManager();
- }
-
- @Produces @ApplicationScoped
- public AuthorizationManager produceAuthorizationManager() {
- return produceIsisSessionFactory().getAuthorizationManager();
- }
-
- @Produces @ApplicationScoped
public PersistenceSessionFactory producePersistenceSessionFactory() {
return produceIsisSessionFactory().getPersistenceSessionFactory();
}
diff --git a/core/runtime/src/main/java/org/apache/isis/core/webapp/IsisWebAppContextListener.java b/core/runtime/src/main/java/org/apache/isis/core/webapp/IsisWebAppContextListener.java
index 5054eea..fe01c21 100644
--- a/core/runtime/src/main/java/org/apache/isis/core/webapp/IsisWebAppContextListener.java
+++ b/core/runtime/src/main/java/org/apache/isis/core/webapp/IsisWebAppContextListener.java
@@ -30,16 +30,19 @@ import javax.servlet.ServletContextEvent;
import javax.servlet.ServletContextListener;
import javax.servlet.ServletException;
-import org.slf4j.Logger;
-import org.slf4j.LoggerFactory;
-
-import org.apache.isis.commons.internal.base._Blackhole;
+import org.apache.isis.applib.services.registry.ServiceRegistry;
+import org.apache.isis.commons.internal.base._With;
+import org.apache.isis.commons.internal.cdi._CDI;
import org.apache.isis.commons.internal.context._Context;
import org.apache.isis.config.AppConfigLocator;
import org.apache.isis.config.IsisConfiguration;
import org.apache.isis.core.runtime.system.context.IsisContext;
+import org.apache.isis.core.security.authentication.manager.AuthenticationManager;
+import org.apache.isis.core.security.authorization.manager.AuthorizationManager;
import org.apache.isis.core.webapp.modules.WebModule;
import org.apache.isis.core.webapp.modules.WebModuleContext;
+import org.slf4j.Logger;
+import org.slf4j.LoggerFactory;
/**
*
@@ -62,6 +65,19 @@ public class IsisWebAppContextListener implements ServletContextListener {
private final List<ServletContextListener> activeListeners = new ArrayList<>();
+ // -- SANITY CHECK
+
+ public static void verifyCDISetup() {
+ _CDI.getBeanManager();
+ _With.requires(_CDI.getSingleton(IsisConfiguration.class), "IsisConfiguration");
+ _With.requires(_CDI.getSingleton(ServiceRegistry.class), "ServiceRegistry");
+ _With.requires(_CDI.getSingleton(AuthenticationManager.class), "AuthenticationManager");
+ _With.requires(_CDI.getSingleton(AuthorizationManager.class), "AuthorizationManager");
+
+ // TODO list registered beans
+
+ }
+
// -- INTERFACE IMPLEMENTATION
@Override
@@ -79,8 +95,10 @@ public class IsisWebAppContextListener implements ServletContextListener {
// finalize the config (build and regard immutable)
// as a side-effect bootstrap CDI, if the environment we are running on does not already have its own
- IsisConfiguration isisConfiguration = AppConfigLocator.getAppConfig().isisConfiguration();
- _Blackhole.consume(isisConfiguration);
+ AppConfigLocator.getAppConfig();
+
+ verifyCDISetup();
+
LOG.info("=== PHASE 2 === Preparing the ServletContext");
diff --git a/example/application/helloworld/src/main/java/META-INF/services/org.apache.isis.core.commons.config.AppConfig b/example/application/helloworld/src/main/java/META-INF/services/org.apache.isis.config.AppConfig
similarity index 100%
rename from example/application/helloworld/src/main/java/META-INF/services/org.apache.isis.core.commons.config.AppConfig
rename to example/application/helloworld/src/main/java/META-INF/services/org.apache.isis.config.AppConfig
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 c2072c2..137a819 100644
--- a/example/application/helloworld/src/main/java/domainapp/application/HelloWorldAppManifest.java
+++ b/example/application/helloworld/src/main/java/domainapp/application/HelloWorldAppManifest.java
@@ -45,7 +45,8 @@ public class HelloWorldAppManifest extends AppManifestAbstract2 implements AppCo
.forModule(new HelloWorldModule())
.withConfigurationPropertiesFile(
HelloWorldAppManifest.class, "isis-non-changing.properties")
- .withAuthMechanism("shiro");
+ .withAuthMechanism("shiro")
+ ;
public HelloWorldAppManifest() {
super(BUILDER);
@@ -60,8 +61,8 @@ public class HelloWorldAppManifest extends AppManifestAbstract2 implements AppCo
public IsisConfiguration isisConfiguration() {
return IsisConfiguration.buildFromAppManifest(this);
}
-
- /**
+
+ /**
* The standard authentication manager, configured with the 'bypass' authenticator
* (allows all requests through).
* <p>