Skip to content

Commit 2cd25af

Browse files
committed
Fix lazy load by adding all get methods in readOnly Transactional
Signed-off-by: Thang PHAM <[email protected]>
1 parent e640d19 commit 2cd25af

File tree

1 file changed

+28
-18
lines changed

1 file changed

+28
-18
lines changed

src/main/java/org/gridsuite/mapping/server/service/implementation/ModelServiceImpl.java

Lines changed: 28 additions & 18 deletions
Original file line numberDiff line numberDiff line change
@@ -31,7 +31,8 @@
3131
import org.springframework.util.CollectionUtils;
3232
import org.springframework.web.client.HttpClientErrorException;
3333

34-
import java.io.*;
34+
import java.io.IOException;
35+
import java.io.InputStream;
3536
import java.nio.file.Files;
3637
import java.nio.file.Path;
3738
import java.nio.file.Paths;
@@ -171,26 +172,31 @@ public String getAutomatonDefinitions() {
171172
}
172173

173174
@Override
175+
@Transactional(readOnly = true)
174176
public List<SimpleModel> getModels() {
175-
return modelRepository.findAll().stream().map(modelEntity -> new SimpleModel(new Model(modelEntity))).collect(Collectors.toList());
177+
return modelRepository.findAll().stream().map(modelEntity -> new SimpleModel(new Model(modelEntity))).toList();
176178
}
177179

178180
@Override
181+
@Transactional(readOnly = true)
179182
public List<ModelParameter> getParameters() {
180183
return modelParameterRepository.findAll().stream().map(ModelParameter::new).toList();
181184
}
182185

183186
@Override
187+
@Transactional(readOnly = true)
184188
public List<ParametersSetsGroup> getParametersSetsGroups() {
185189
return modelSetsGroupRepository.findAll().stream().map(ParametersSetsGroup::new).toList();
186190
}
187191

188192
@Override
193+
@Transactional(readOnly = true)
189194
public List<ParametersSet> getParametersSets() {
190195
return modelParameterSetRepository.findAll().stream().map(ParametersSet::new).toList();
191196
}
192197

193198
@Override
199+
@Transactional(readOnly = true)
194200
public List<ParametersSet> getSetsFromGroup(String modelName, String groupName, SetGroupType groupType) {
195201
Optional<ModelEntity> foundModelOpt = modelRepository.findById(modelName);
196202

@@ -201,7 +207,7 @@ public List<ParametersSet> getSetsFromGroup(String modelName, String groupName,
201207
.findAny();
202208
ModelSetsGroupEntity setsGroup = getSetsGroupFromOptional("[" + groupName + "," + groupType.name() + "]", modelSetsGroupOpt);
203209

204-
return setsGroup.getSets().stream().map(ParametersSet::new).collect(Collectors.toList());
210+
return setsGroup.getSets().stream().map(ParametersSet::new).toList();
205211
}
206212

207213
@Override
@@ -220,9 +226,7 @@ public ParametersSetsGroup saveParametersSetsGroup(String modelName, ParametersS
220226
savedGroups.add(groupToAdd);
221227
} else {
222228
// If additional checks are required here, ensure that set erasure cannot happen here with sets merging.
223-
groupToAdd.getSets().forEach(set ->
224-
previousGroup.addParameterSet(set)
225-
);
229+
groupToAdd.getSets().forEach(previousGroup::addParameterSet);
226230
}
227231

228232
if (new Model(modelToUpdate).isParameterSetGroupValid(setsGroup.getName(), strict)) {
@@ -302,6 +306,7 @@ public List<String> deleteModels(List<String> modelNames) {
302306
}
303307

304308
@Override
309+
@Transactional
305310
public ParametersSetsGroup deleteSet(String modelName, String groupName, SetGroupType groupType, String setName) {
306311
Optional<ModelEntity> foundModelOpt = modelRepository.findById(modelName);
307312

@@ -327,11 +332,13 @@ public ParametersSetsGroup deleteSet(String modelName, String groupName, SetGrou
327332
// --- BEGIN parameter definition-related service methods --- //
328333

329334
@Override
335+
@Transactional(readOnly = true)
330336
public List<String> getParameterDefinitionNames() {
331337
return modelParameterDefinitionRepository.findAll().stream().map(ModelParameterDefinitionEntity::getName).toList();
332338
}
333339

334340
@Override
341+
@Transactional(readOnly = true)
335342
public List<ModelParameterDefinition> getParameterDefinitions(List<String> parameterDefinitionNames) {
336343
return modelParameterDefinitionRepository.findAllById(parameterDefinitionNames).stream()
337344
.map(parameterDefinitionEntity -> new ModelParameterDefinition(parameterDefinitionEntity, null, null)).toList();
@@ -382,8 +389,8 @@ public Model addExistingParameterDefinitionsToModel(String modelName, List<Strin
382389
// check whether found all, fail fast
383390
if (foundParameterDefinitionEntities.size() != parameterDefinitionNames.size()) {
384391
List<String> foundNames = foundParameterDefinitionEntities.stream()
385-
.map(ModelParameterDefinitionEntity::getName).collect(Collectors.toList());
386-
List<String> notFoundNames = parameterDefinitionNames.stream().filter(name -> !foundNames.contains(name)).collect(Collectors.toList());
392+
.map(ModelParameterDefinitionEntity::getName).toList();
393+
List<String> notFoundNames = parameterDefinitionNames.stream().filter(name -> !foundNames.contains(name)).toList();
387394
throw new HttpClientErrorException(HttpStatus.NOT_FOUND, "Some parameter definition not found: " + notFoundNames);
388395
}
389396

@@ -430,7 +437,7 @@ public Model removeAllParameterDefinitionsOnModel(String modelName) {
430437

431438
// clear the existing list
432439
modelToUpdate.removeAllParameterDefinition(modelToUpdate.getParameterDefinitions().stream()
433-
.map(ModelModelParameterDefinitionEntity::getParameterDefinition).collect(Collectors.toList()));
440+
.map(ModelModelParameterDefinitionEntity::getParameterDefinition).toList());
434441

435442
// save modified existing model entity
436443
modelRepository.save(modelToUpdate);
@@ -446,7 +453,7 @@ public List<ModelParameterDefinition> saveNewParameterDefinitions(List<ModelPara
446453
.map(ModelParameterDefinitionEntity::new)
447454
.collect(Collectors.toCollection(LinkedHashSet::new));
448455
List<ModelParameterDefinitionEntity> savedParameterDefinitionEntities = modelParameterDefinitionRepository.saveAll(parameterDefinitionEntities);
449-
return savedParameterDefinitionEntities.stream().map(entity -> new ModelParameterDefinition(entity, null, null)).collect(Collectors.toList());
456+
return savedParameterDefinitionEntities.stream().map(entity -> new ModelParameterDefinition(entity, null, null)).toList();
450457
}
451458

452459
return Collections.emptyList();
@@ -476,10 +483,12 @@ public List<ModelVariableDefinition> getVariableDefinitionsFromModel(String mode
476483
}
477484

478485
@Override
486+
@Transactional(readOnly = true)
479487
public List<String> getVariableDefinitionNames() {
480488
return modelVariableRepository.findAll().stream().map(ModelVariableDefinitionEntity::getName).toList();
481489
}
482490

491+
@Transactional(readOnly = true)
483492
@Override
484493
public List<ModelVariableDefinition> getVariableDefinitions(List<String> variableNames) {
485494
return modelVariableRepository.findAllById(variableNames).stream().map(ModelVariableDefinition::new).toList();
@@ -497,7 +506,7 @@ public Model addNewVariableDefinitionsToModel(String modelName, List<ModelVariab
497506
// do merge with existing list
498507
List<ModelVariableDefinitionEntity> variableDefinitionEntities = variableDefinitions.stream()
499508
.map(variableDefinition -> new ModelVariableDefinitionEntity(modelToUpdate, null, variableDefinition))
500-
.collect(Collectors.toList());
509+
.toList();
501510
modelToUpdate.addAllVariableDefinition(variableDefinitionEntities);
502511
// save modified existing model entity
503512
modelRepository.save(modelToUpdate);
@@ -522,8 +531,8 @@ public Model addExistingVariableDefinitionsToModel(String modelName, List<String
522531
// check whether found all, fail fast
523532
if (foundVariableDefinitionEntities.size() != variableDefinitionNames.size()) {
524533
List<String> foundNames = foundVariableDefinitionEntities.stream()
525-
.map(ModelVariableDefinitionEntity::getName).collect(Collectors.toList());
526-
List<String> notFoundNames = variableDefinitionNames.stream().filter(name -> !foundNames.contains(name)).collect(Collectors.toList());
534+
.map(ModelVariableDefinitionEntity::getName).toList();
535+
List<String> notFoundNames = variableDefinitionNames.stream().filter(name -> !foundNames.contains(name)).toList();
527536
throw new HttpClientErrorException(HttpStatus.NOT_FOUND, "Some variable definition not found: " + notFoundNames);
528537
}
529538

@@ -567,7 +576,7 @@ public List<ModelVariableDefinition> saveNewVariableDefinitions(List<ModelVariab
567576
.map(variableDefinition -> new ModelVariableDefinitionEntity(null, null, variableDefinition))
568577
.collect(Collectors.toCollection(LinkedHashSet::new));
569578
List<ModelVariableDefinitionEntity> savedVariableDefinitionEntities = modelVariableRepository.saveAll(variableDefinitionEntities);
570-
return savedVariableDefinitionEntities.stream().map(ModelVariableDefinition::new).collect(Collectors.toList());
579+
return savedVariableDefinitionEntities.stream().map(ModelVariableDefinition::new).toList();
571580
}
572581
return Collections.emptyList();
573582
}
@@ -589,6 +598,7 @@ public Model removeAllVariableDefinitionsOnModel(String modelName) {
589598
}
590599

591600
@Override
601+
@Transactional(readOnly = true)
592602
public List<String> getVariablesSetNames() {
593603
return modelVariablesSetRepository.findAll().stream().map(ModelVariableSetEntity::getName).toList();
594604
}
@@ -640,7 +650,7 @@ public VariablesSet addNewVariableDefinitionToVariablesSet(String variableSetNam
640650
// do merge with existing list
641651
List<ModelVariableDefinitionEntity> variableDefinitionEntities = variableDefinitions.stream()
642652
.map(variableDefinition -> new ModelVariableDefinitionEntity(null, variableSetToUpdate, variableDefinition))
643-
.collect(Collectors.toList());
653+
.toList();
644654
variableSetToUpdate.addAllVariableDefinition(variableDefinitionEntities);
645655
// save modified existing variables set entity
646656
modelVariablesSetRepository.save(variableSetToUpdate);
@@ -697,7 +707,7 @@ public Model addNewVariablesSetsToModel(String modelName, List<VariablesSet> var
697707
// do merge with existing list
698708
List<ModelVariableSetEntity> variablesSetEntities = variableSets.stream()
699709
.map(variablesSet -> new ModelVariableSetEntity(modelToUpdate, variablesSet))
700-
.collect(Collectors.toList());
710+
.toList();
701711
modelToUpdate.addAllVariablesSet(variablesSetEntities);
702712
// save modified existing model entity
703713
modelRepository.save(modelToUpdate);
@@ -720,8 +730,8 @@ public Model addExistingVariablesSetsToModel(String modelName, List<String> vari
720730

721731
// check whether found all
722732
if (foundVariablesSetEntities.size() != variablesSetNames.size()) {
723-
List<String> foundNames = foundVariablesSetEntities.stream().map(ModelVariableSetEntity::getName).collect(Collectors.toList());
724-
List<String> notFoundNames = variablesSetNames.stream().filter(name -> !foundNames.contains(name)).collect(Collectors.toList());
733+
List<String> foundNames = foundVariablesSetEntities.stream().map(ModelVariableSetEntity::getName).toList();
734+
List<String> notFoundNames = variablesSetNames.stream().filter(name -> !foundNames.contains(name)).toList();
725735
throw new HttpClientErrorException(HttpStatus.NOT_FOUND, "Some variables set not found: " + notFoundNames);
726736
}
727737

0 commit comments

Comments
 (0)