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>