Skip to content

Commit 7183b93

Browse files
committed
corrections context
1 parent 2ab996d commit 7183b93

File tree

8 files changed

+108
-55
lines changed

8 files changed

+108
-55
lines changed

src/main/java/fr/univlorraine/ecandidat/Initializer.java

Lines changed: 14 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -19,6 +19,7 @@
1919
import java.io.IOException;
2020
import java.io.InputStream;
2121
import java.util.Enumeration;
22+
import java.util.Properties;
2223

2324
import javax.servlet.FilterRegistration;
2425
import javax.servlet.ServletContext;
@@ -40,6 +41,7 @@
4041
import ch.qos.logback.core.joran.spi.JoranException;
4142
import fr.univlorraine.ecandidat.config.SpringConfig;
4243
import fr.univlorraine.ecandidat.utils.ConstanteUtils;
44+
import fr.univlorraine.ecandidat.utils.MethodUtils;
4345
import fr.univlorraine.tools.logback.UserMdcServletFilter;
4446

4547
/**
@@ -48,6 +50,8 @@
4850
*/
4951
public class Initializer implements WebApplicationInitializer {
5052

53+
public final static String PROPERTY_FILE_PATH = "config.location";
54+
5155
/**
5256
* Profil Spring de debug
5357
*/
@@ -100,6 +104,10 @@ private void addContextParametersToSystemProperties(final ServletContext servlet
100104
*/
101105
@Override
102106
public void onStartup(final ServletContext servletContext) throws ServletException {
107+
/* Si un fichier de properties est fourni, on charge toutes les propriétés dans le servletContext pour alimenter logback par la suite */
108+
final Properties properties = MethodUtils.loadPropertieFile();
109+
properties.forEach((k, v) -> servletContext.setInitParameter((String) k, (String) v));
110+
103111
addContextParametersToSystemProperties(servletContext);
104112
addContextParametersToLogbackConfig(servletContext);
105113

@@ -127,11 +135,12 @@ public void sessionDestroyed(final HttpSessionEvent httpSessionEvent) {
127135
springContext.register(SpringConfig.class);
128136
servletContext.addListener(new ContextLoaderListener(springContext));
129137

130-
final String refreshRate = servletContext.getInitParameter("load.balancing.refresh.fixedRate");
131-
if (refreshRate == null) {
132-
//on place par défaut le refresh à 10min
133-
servletContext.setInitParameter("load.balancing.refresh.fixedRate", "600000");
134-
}
138+
// final String refreshRate = servletContext.getInitParameter("load.balancing.refresh.fixedRate");
139+
// System.out.println("refreshRate "+refreshRate);
140+
// if (refreshRate == null) {
141+
// //on place par défaut le refresh à 10min
142+
// servletContext.setInitParameter("load.balancing.refresh.fixedRate", "600000");
143+
// }
135144

136145
/* String refreshRateFichier = servletContext.getInitParameter("fiabilisation.fichier.refresh.fixedRate");
137146
* if (refreshRateFichier==null){
Lines changed: 51 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,51 @@
1+
/**
2+
* ESUP-Portail eCandidat - Copyright (c) 2016 ESUP-Portail consortium
3+
*
4+
*
5+
* Licensed under the Apache License, Version 2.0 (the "License");
6+
* you may not use this file except in compliance with the License.
7+
* You may obtain a copy of the License at
8+
*
9+
* http://www.apache.org/licenses/LICENSE-2.0
10+
*
11+
* Unless required by applicable law or agreed to in writing, software
12+
* distributed under the License is distributed on an "AS IS" BASIS,
13+
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
14+
* See the License for the specific language governing permissions and
15+
* limitations under the License.
16+
*/
17+
package fr.univlorraine.ecandidat.config;
18+
19+
import javax.annotation.Resource;
20+
21+
import org.slf4j.Logger;
22+
import org.slf4j.LoggerFactory;
23+
import org.springframework.context.ApplicationListener;
24+
import org.springframework.context.event.ContextStoppedEvent;
25+
import org.springframework.stereotype.Component;
26+
27+
import fr.univlorraine.ecandidat.controllers.LockCandidatController;
28+
29+
/**
30+
* Configuration du lancement de l'appli
31+
* @author Kevin Hergalant
32+
*/
33+
@Component
34+
public class StopAppConfig implements ApplicationListener<ContextStoppedEvent> {
35+
36+
private final Logger logger = LoggerFactory.getLogger(StopAppConfig.class);
37+
38+
@Resource
39+
private transient LockCandidatController lockCandidatController;
40+
41+
@Override
42+
public void onApplicationEvent(final ContextStoppedEvent event) {
43+
preprocessCleanLock();
44+
}
45+
46+
/** Au stop de l'appli, on supprime tout les locks */
47+
private void preprocessCleanLock() {
48+
logger.info("Nettoyage des locks");
49+
lockCandidatController.cleanAllLockCandidatForInstance();
50+
}
51+
}

src/main/java/fr/univlorraine/ecandidat/controllers/CacheController.java

Lines changed: 6 additions & 20 deletions
Original file line numberDiff line numberDiff line change
@@ -1032,10 +1032,10 @@ public void reloadData(final String code, final Boolean needToPushToCandidat) {
10321032
reloadListeTypeAvis();
10331033
break;
10341034
case ConstanteUtils.CACHE_SPRING_CONF:
1035-
self.invalidConfCacheWithoutAskToReloadData();
1035+
self.invalidConfCache(false);
10361036
break;
10371037
case ConstanteUtils.CACHE_SPRING_RESSOURCES:
1038-
self.invalidRessourcesCacheWithoutAskToReloadData();
1038+
self.invalidRessourcesCache(false);
10391039
break;
10401040
default:
10411041
break;
@@ -1131,30 +1131,16 @@ public void askToReloadData(final String code) {
11311131
/**
11321132
* Invalide le cache de la config etablissement (url pegase, ..)
11331133
*/
1134-
public void invalidConfCacheWithoutAskToReloadData() {
1134+
public void invalidConfCache(final Boolean needToPushToCandidat) {
11351135
cacheManager.getCache(CacheConfig.CACHE_CONF_ETAB).clear();
1136+
loadBalancingController.askToReloadData(ConstanteUtils.CACHE_SPRING_CONF, needToPushToCandidat);
11361137
}
11371138

11381139
/**
11391140
* Invalide le cache de la config des ressrouces (images, fichiers siscol, templates)
11401141
*/
1141-
public void invalidRessourcesCacheWithoutAskToReloadData() {
1142+
public void invalidRessourcesCache(final Boolean needToPushToCandidat) {
11421143
cacheManager.getCache(CacheConfig.CACHE_CONF_RESSOURCE).clear();
1143-
}
1144-
1145-
/**
1146-
* Invalide le cache de la config (config etab, url pegase, ..)
1147-
*/
1148-
public void invalidConfCache() {
1149-
cacheManager.getCache(CacheConfig.CACHE_CONF_ETAB).clear();
1150-
loadBalancingController.askToReloadData(ConstanteUtils.CACHE_SPRING_CONF, true);
1151-
}
1152-
1153-
/**
1154-
* Invalide le cache de la config des ressrouces (images, fichiers siscol, templates)
1155-
*/
1156-
public void invalidRessourcesCache() {
1157-
cacheManager.getCache(CacheConfig.CACHE_CONF_RESSOURCE).clear();
1158-
loadBalancingController.askToReloadData(ConstanteUtils.CACHE_SPRING_RESSOURCES, true);
1144+
loadBalancingController.askToReloadData(ConstanteUtils.CACHE_SPRING_RESSOURCES, needToPushToCandidat);
11591145
}
11601146
}

src/main/java/fr/univlorraine/ecandidat/controllers/ConfigController.java

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -386,7 +386,7 @@ public void saveConfigEtab(final ConfigEtab config) {
386386
saveConfigEtabItem(config.getAssistContactUrl(), Configuration.COD_CONFIG_ETAB_ASSIST_CONTACT_URL);
387387

388388
Notification.show(applicationContext.getMessage("config.save", null, UI.getCurrent().getLocale()), Type.TRAY_NOTIFICATION);
389-
cacheController.invalidConfCache();
389+
cacheController.invalidConfCache(true);
390390
}
391391

392392
/**
@@ -508,7 +508,7 @@ public void saveConfigPegaseAuth(final ConfigPegaseAuthEtab configPegaseAuthEtab
508508
configurationRepository.saveAndFlush(new Configuration(Configuration.COD_CONFIG_PEGASE_AUTH_PWD, CryptoUtils.encrypt(configPegaseAuthEtab.getPwd(), cryptoSecret, cryptoSalt)));
509509
configurationRepository.saveAndFlush(new Configuration(Configuration.COD_CONFIG_PEGASE_AUTH_ETAB, configPegaseAuthEtab.getEtab()));
510510
Notification.show(applicationContext.getMessage("config.save", null, UI.getCurrent().getLocale()), Type.TRAY_NOTIFICATION);
511-
cacheController.invalidConfCache();
511+
cacheController.invalidConfCache(true);
512512
}
513513

514514
/**
@@ -595,7 +595,7 @@ public void saveConfigPegaseUrl(final ConfigPegaseUrl configPegaseUrl) {
595595
configurationRepository.saveAndFlush(new Configuration(Configuration.COD_CONFIG_PEGASE_URL_PARAM_TEST_COD_ETU, configPegaseUrl.getParamTestCodEtu()));
596596
configurationRepository.saveAndFlush(new Configuration(Configuration.COD_CONFIG_PEGASE_URL_PARAM_TEST_COD_FORMATION, configPegaseUrl.getParamTestCodFormation()));
597597
Notification.show(applicationContext.getMessage("config.save", null, UI.getCurrent().getLocale()), Type.TRAY_NOTIFICATION);
598-
cacheController.invalidConfCache();
598+
cacheController.invalidConfCache(true);
599599
}
600600

601601
/**

src/main/java/fr/univlorraine/ecandidat/controllers/LockCandidatController.java

Lines changed: 4 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -74,8 +74,7 @@ public List<LockCandidat> getListLockMore24Heure() {
7474
*/
7575
public void deleteLock(final LockCandidat lock, final LockCandidatListener listener) {
7676
final ConfirmWindow confirmWindow = new ConfirmWindow(
77-
applicationContext.getMessage("lock.candidat.window.confirmDelete", new Object[]
78-
{ lock.getId().getRessourceLock(), lock.getId().getNumDossierOpiCptMin() }, UI.getCurrent().getLocale()),
77+
applicationContext.getMessage("lock.candidat.window.confirmDelete", new Object[] { lock.getId().getRessourceLock(), lock.getId().getNumDossierOpiCptMin() }, UI.getCurrent().getLocale()),
7978
applicationContext.getMessage("lock.candidat.window.confirmDeleteTitle", null, UI.getCurrent().getLocale()));
8079
confirmWindow.addBtnOuiListener(e -> {
8180
if (!lockCandidatRepository.exists(lock.getId())) {
@@ -136,6 +135,7 @@ private String getUIId() {
136135
* Supprime tout les locks
137136
*/
138137
public void cleanAllLockCandidatForInstance() {
138+
logger.info("Nettoyage des locks pour l'instance " + loadBalancingController.getIdInstance());
139139
lockCandidatRepository.deleteInBatch(lockCandidatRepository.findByInstanceIdLock(loadBalancingController.getIdInstance()));
140140
}
141141

@@ -255,16 +255,15 @@ public boolean getLockOrNotifyCandidature(final Candidature candidature) {
255255
}
256256
return getLockOrNotify(candidature.getCandidat().getCompteMinima(),
257257
ConstanteUtils.LOCK_CAND + "_" + candidature.getIdCand(),
258-
applicationContext.getMessage("lock.message.candidature", new Object[]
259-
{ candidature.getCandidat().getCompteMinima().getNumDossierOpiCptMin() }, UI.getCurrent().getLocale()));
258+
applicationContext.getMessage("lock.message.candidature", new Object[] { candidature.getCandidat().getCompteMinima().getNumDossierOpiCptMin() }, UI.getCurrent().getLocale()));
260259
}
261260

262261
/**
263262
* Verrouille une ressource pour l'UI courante
264263
* @param cptMin
265264
* @param ressource
266265
* @param msgIfAlreadyLocked message affiché si la ressource est déjà verrouillée pour une autre UI. Si cette propriété vaut null, un message par défaut est
267-
* affiché.
266+
* affiché.
268267
* @return true si la ressource est bien verrouillée pour l'UI courante, false sinon
269268
*/
270269
private boolean getLockOrNotify(final CompteMinima cptMin, final String ressource, String msgIfAlreadyLocked) {

src/main/java/fr/univlorraine/ecandidat/utils/ConstanteUtils.java

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -36,6 +36,9 @@ public class ConstanteUtils {
3636
public static final String SISCOL_TYP_PEGASE = "P";
3737
public static final String SISCOL_TYP_DEFAULT = "D";
3838

39+
/* Fichier de properties */
40+
public final static String PROPERTY_FILE_PATH = "config.location";
41+
3942
/* Parametres Servlet */
4043
public static final String SERVLET_ALL_MATCH = "/*";
4144
public static final String SERVLET_NO_MATCH = "/nomatchingpossible";

src/main/java/fr/univlorraine/ecandidat/utils/LoggerStartupListener.java

Lines changed: 4 additions & 22 deletions
Original file line numberDiff line numberDiff line change
@@ -16,21 +16,16 @@
1616
*/
1717
package fr.univlorraine.ecandidat.utils;
1818

19-
import java.io.File;
20-
import java.io.FileInputStream;
2119
import java.util.Arrays;
2220
import java.util.Properties;
2321

24-
import org.apache.commons.lang3.StringUtils;
25-
2622
import ch.qos.logback.classic.jul.LevelChangePropagator;
2723
import ch.qos.logback.core.Context;
2824

2925
public class LoggerStartupListener extends LevelChangePropagator {
3026

3127
String[] LOG_MODE_POSSIBLE = new String[] { "traceFull", "trace", "debug", "info" };
3228

33-
public final static String PROPERTY_FILE_PATH = "config.location";
3429
private static final String PROPERTY_LOG_MODE = "logMode";
3530
private static final String DEFAULT_LOG_MODE = "info";
3631

@@ -55,23 +50,10 @@ public void start() {
5550
}
5651

5752
/* Si un fichier de properties est fourni, on récupère la valeur de logMode */
58-
final String systemFilePropertiesPath = System.getProperty(PROPERTY_FILE_PATH);
59-
if (StringUtils.isNotBlank(systemFilePropertiesPath)) {
60-
try {
61-
final Properties properties = new Properties();
62-
final File fileConfig = new File(systemFilePropertiesPath);
63-
if (fileConfig.exists() && fileConfig.isFile()) {
64-
try (FileInputStream file = new FileInputStream(fileConfig)) {
65-
properties.load(file);
66-
final String logModeProp = properties.getProperty(PROPERTY_LOG_MODE);
67-
if (isValidLogMode(logModeProp)) {
68-
logMode = logModeProp;
69-
}
70-
}
71-
}
72-
} catch (final Exception e) {
73-
74-
}
53+
final Properties properties = MethodUtils.loadPropertieFile();
54+
final String logModeProp = properties.getProperty(PROPERTY_LOG_MODE);
55+
if (isValidLogMode(logModeProp)) {
56+
logMode = logModeProp;
7557
}
7658
context.putProperty("LOG_MODE", logMode);
7759

src/main/java/fr/univlorraine/ecandidat/utils/MethodUtils.java

Lines changed: 23 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -19,6 +19,7 @@
1919
import java.io.ByteArrayInputStream;
2020
import java.io.Closeable;
2121
import java.io.File;
22+
import java.io.FileInputStream;
2223
import java.io.InputStream;
2324
import java.io.UnsupportedEncodingException;
2425
import java.lang.annotation.Annotation;
@@ -44,6 +45,7 @@
4445
import java.util.Locale;
4546
import java.util.Map;
4647
import java.util.Optional;
48+
import java.util.Properties;
4749
import java.util.ResourceBundle;
4850
import java.util.Set;
4951
import java.util.StringTokenizer;
@@ -1327,4 +1329,25 @@ public static File getExternalResource(final String externalRessourceFolder, fin
13271329
}
13281330
return null;
13291331
}
1332+
1333+
/**
1334+
* Charge le fichier de properties
1335+
* @return les properties
1336+
*/
1337+
public static Properties loadPropertieFile() {
1338+
final Properties properties = new Properties();
1339+
try {
1340+
final String systemFilePropertiesPath = System.getProperty(ConstanteUtils.PROPERTY_FILE_PATH);
1341+
if (StringUtils.isNotBlank(systemFilePropertiesPath)) {
1342+
final File fileConfig = new File(systemFilePropertiesPath);
1343+
if (fileConfig.exists() && fileConfig.isFile()) {
1344+
try (FileInputStream file = new FileInputStream(fileConfig)) {
1345+
properties.load(file);
1346+
}
1347+
}
1348+
}
1349+
} catch (final Exception e) {
1350+
}
1351+
return properties;
1352+
}
13301353
}

0 commit comments

Comments
 (0)