Skip to content

Commit 2cca0f6

Browse files
committed
Fix lazy initialization for relationships
1 parent d82801b commit 2cca0f6

File tree

2 files changed

+12
-3
lines changed

2 files changed

+12
-3
lines changed

org.opentosca.bus/org.opentosca.bus.management.service/src/main/java/org/opentosca/bus/management/service/impl/ManagementBusServiceImpl.java

+11-2
Original file line numberDiff line numberDiff line change
@@ -74,6 +74,7 @@
7474
import org.opentosca.container.core.next.model.ServiceTemplateInstance;
7575
import org.opentosca.container.core.next.repository.NodeTemplateInstanceRepository;
7676
import org.opentosca.container.core.next.repository.PlanInstanceRepository;
77+
import org.opentosca.container.core.next.repository.RelationshipTemplateInstanceRepository;
7778
import org.opentosca.container.core.next.trigger.SituationTriggerInstanceListener;
7879
import org.opentosca.container.core.plan.ChoreographyHandler;
7980
import org.opentosca.container.core.service.CsarStorageService;
@@ -143,16 +144,18 @@ public class ManagementBusServiceImpl implements IManagementBusService {
143144
private final PlanInstanceRepository planInstanceRepository;
144145

145146
private final NodeTemplateInstanceRepository nodeTemplateInstanceRepository;
147+
private final RelationshipTemplateInstanceRepository relationshipTemplateInstanceRepository;
146148

147149
@Inject
148150
public ManagementBusServiceImpl(DeploymentDistributionDecisionMaker decisionMaker,
149151
CollaborationContext collaborationContext, ICoreEndpointService endpointService,
150152
ParameterHandler parameterHandler, PluginHandler pluginHandler,
151153
PluginRegistry pluginRegistry, DeploymentPluginCapabilityChecker capabilityChecker,
152154
CsarStorageService storage, ChoreographyHandler choreographyHandler, MBUtils mbUtils,
153-
PlanInstanceHandler planInstanceHandler, PlanInstanceRepository planInstanceRepository, NodeTemplateInstanceRepository nodeTemplateInstanceRepository) {
155+
PlanInstanceHandler planInstanceHandler, PlanInstanceRepository planInstanceRepository, NodeTemplateInstanceRepository nodeTemplateInstanceRepository, RelationshipTemplateInstanceRepository relationshipTemplateInstanceRepository) {
154156
LOG.info("Instantiating ManagementBus Service");
155157
this.nodeTemplateInstanceRepository = nodeTemplateInstanceRepository;
158+
this.relationshipTemplateInstanceRepository = relationshipTemplateInstanceRepository;
156159
this.planInstanceRepository = planInstanceRepository;
157160
this.planInstanceHandler = planInstanceHandler;
158161
this.mbUtils = mbUtils;
@@ -1384,7 +1387,13 @@ private void updateConnectedNodeTemplateInstance(NodeTemplateInstance nodeTempla
13841387
Optional<RelationshipTemplateInstance> optional = nodeTemplateInstance.getOutgoingRelations().stream().filter(rel -> rel.getTemplateType().equals(hostedOnRelationType)).findFirst();
13851388

13861389
if (optional.isPresent()) {
1387-
NodeTemplateInstance target = optional.get().getTarget();
1390+
RelationshipTemplateInstance relation = optional.get();
1391+
LOG.debug("Found RelationshipTemplateInstance with ID: {}", relation.getTemplateId());
1392+
relation = relationshipTemplateInstanceRepository.findWithPropertiesById(relation.getId());
1393+
1394+
NodeTemplateInstance target = relation.getTarget();
1395+
LOG.debug("Searching for NodeTemplateInstance with ID: {}", target.getTemplateId());
1396+
target = nodeTemplateInstanceRepository.findWithPropertiesAndOutgoingById(target.getId()).get();
13881397
LOG.debug("Found connected NodeTemplateInstance via hostedOn relation: {}", target.getTemplateId());
13891398

13901399
// get properties of connected NodeTemplateInstance

org.opentosca.container.core/src/main/java/org/opentosca/container/core/next/repository/RelationshipTemplateInstanceRepository.java

+1-1
Original file line numberDiff line numberDiff line change
@@ -12,6 +12,6 @@ public interface RelationshipTemplateInstanceRepository extends JpaRepository<Re
1212

1313
List<RelationshipTemplateInstance> findByTemplateId(String templateId);
1414

15-
@EntityGraph(attributePaths = {"properties"})
15+
@EntityGraph(attributePaths = {"properties", "target"})
1616
RelationshipTemplateInstance findWithPropertiesById(Long id);
1717
}

0 commit comments

Comments
 (0)