From ceeb02797c5ae750f1b37addc68f6cc45111cf18 Mon Sep 17 00:00:00 2001
From: srosse <none@none>
Date: Tue, 9 Sep 2014 09:35:44 +0200
Subject: [PATCH] OO-1184: cache the named group (it's always the same 9 ones),
 load the extensions right after startup

---
 .../org/olat/basesecurity/BaseSecurityManager.java   |  1 +
 .../java/org/olat/core/servlets/OpenOLATServlet.java |  4 ++++
 .../java/org/olat/core/util/i18n/I18nManager.java    |  4 ++--
 .../ui/courselayout/_spring/courseLayoutContext.xml  | 12 ++++++------
 4 files changed, 13 insertions(+), 8 deletions(-)

diff --git a/src/main/java/org/olat/basesecurity/BaseSecurityManager.java b/src/main/java/org/olat/basesecurity/BaseSecurityManager.java
index f8ea85b4355..d747aa1f9b1 100644
--- a/src/main/java/org/olat/basesecurity/BaseSecurityManager.java
+++ b/src/main/java/org/olat/basesecurity/BaseSecurityManager.java
@@ -858,6 +858,7 @@ public class BaseSecurityManager extends BasicManager implements BaseSecurity {
 		List<SecurityGroup> group = this.dbInstance.getCurrentEntityManager()
 				.createQuery(sb.toString(), SecurityGroup.class)
 				.setParameter("groupName", securityGroupName)
+				.setHint("org.hibernate.cacheable", Boolean.TRUE)
 				.getResultList();
 
 		int size = group.size();
diff --git a/src/main/java/org/olat/core/servlets/OpenOLATServlet.java b/src/main/java/org/olat/core/servlets/OpenOLATServlet.java
index dd475c93817..3952b2cca92 100644
--- a/src/main/java/org/olat/core/servlets/OpenOLATServlet.java
+++ b/src/main/java/org/olat/core/servlets/OpenOLATServlet.java
@@ -38,6 +38,7 @@ import org.olat.core.dispatcher.Dispatcher;
 import org.olat.core.dispatcher.DispatcherModule;
 import org.olat.core.dispatcher.mapper.GlobalMapperRegistry;
 import org.olat.core.dispatcher.mapper.MapperDispatcher;
+import org.olat.core.extensions.ExtManager;
 import org.olat.core.helpers.Settings;
 import org.olat.core.logging.OLog;
 import org.olat.core.logging.Tracing;
@@ -116,6 +117,9 @@ public class OpenOLATServlet extends HttpServlet {
 				legacyContext += "/";
 			}
 		}
+		
+		//preload extensions
+		ExtManager.getInstance().getExtensions();
 	}
 
 	@Override
diff --git a/src/main/java/org/olat/core/util/i18n/I18nManager.java b/src/main/java/org/olat/core/util/i18n/I18nManager.java
index 55329dc3874..91d65df5560 100644
--- a/src/main/java/org/olat/core/util/i18n/I18nManager.java
+++ b/src/main/java/org/olat/core/util/i18n/I18nManager.java
@@ -824,11 +824,11 @@ public class I18nManager extends BasicManager {
 			}
 			//
 			// 2) Try to load from classpath
-			String fileName = (locale == null ? METADATA_FILENAME : buildI18nFilename(locale));
-			String relPath = bundleName.replace('.', '/') + "/" + I18N_DIRNAME + "/" + fileName;
 			// No "/" at the beginning of the resource! since the
 			// resource will not be found within jars
 			if (is == null) {
+				String fileName = (locale == null ? METADATA_FILENAME : buildI18nFilename(locale));
+				String relPath = bundleName.replace('.', '/') + "/" + I18N_DIRNAME + "/" + fileName;
 				ClassLoader classLoader = this.getClass().getClassLoader();
 				is = classLoader.getResourceAsStream(relPath);
 				if (logDebug && is != null) logDebug("loading LocalStrings from classpath relpath::" + relPath, null);
diff --git a/src/main/java/org/olat/course/config/ui/courselayout/_spring/courseLayoutContext.xml b/src/main/java/org/olat/course/config/ui/courselayout/_spring/courseLayoutContext.xml
index 7d37b4a9a75..4b1b211d364 100644
--- a/src/main/java/org/olat/course/config/ui/courselayout/_spring/courseLayoutContext.xml
+++ b/src/main/java/org/olat/course/config/ui/courselayout/_spring/courseLayoutContext.xml
@@ -3,7 +3,7 @@
 	xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
 	xsi:schemaLocation="
   http://www.springframework.org/schema/beans 
-  http://www.springframework.org/schema/beans/spring-beans-3.0.xsd">
+  http://www.springframework.org/schema/beans/spring-beans.xsd">
 
 	<bean id="courseLayoutHelper" class="org.olat.course.config.ui.courselayout.CourseLayoutHelper" depends-on="courseModule">
 		<property name="logoMaxHeight" value="100"/>
@@ -16,11 +16,11 @@
 	<bean id="courseConfigManager" class="org.olat.course.config.ui.courselayout.CustomConfigManager" depends-on="courseModule">
 		<property name="availableLayoutElements">
 			<list>
-				<bean class="org.olat.course.config.ui.courselayout.elements.TextLE" lazy-init="true"/>
-				<bean class="org.olat.course.config.ui.courselayout.elements.HeaderLE" lazy-init="true"/>
-				<bean class="org.olat.course.config.ui.courselayout.elements.LinkLE" lazy-init="true"/>
-				<bean class="org.olat.course.config.ui.courselayout.elements.MenuLE" lazy-init="true"/>
-				<bean class="org.olat.course.config.ui.courselayout.elements.ToolboxLE" lazy-init="true"/>		
+				<bean class="org.olat.course.config.ui.courselayout.elements.TextLE" />
+				<bean class="org.olat.course.config.ui.courselayout.elements.HeaderLE" />
+				<bean class="org.olat.course.config.ui.courselayout.elements.LinkLE" />
+				<bean class="org.olat.course.config.ui.courselayout.elements.MenuLE" />
+				<bean class="org.olat.course.config.ui.courselayout.elements.ToolboxLE" />		
 			</list>
 		</property>
 		<property name="availableLayoutAttributes">
-- 
GitLab