Skip to content

Commit

Permalink
Fix lazy initialization for relationships
Browse files Browse the repository at this point in the history
  • Loading branch information
wederbn committed Nov 19, 2024
1 parent d82801b commit 2cca0f6
Show file tree
Hide file tree
Showing 2 changed files with 12 additions and 3 deletions.
Original file line number Diff line number Diff line change
Expand Up @@ -74,6 +74,7 @@
import org.opentosca.container.core.next.model.ServiceTemplateInstance;
import org.opentosca.container.core.next.repository.NodeTemplateInstanceRepository;
import org.opentosca.container.core.next.repository.PlanInstanceRepository;
import org.opentosca.container.core.next.repository.RelationshipTemplateInstanceRepository;
import org.opentosca.container.core.next.trigger.SituationTriggerInstanceListener;
import org.opentosca.container.core.plan.ChoreographyHandler;
import org.opentosca.container.core.service.CsarStorageService;
Expand Down Expand Up @@ -143,16 +144,18 @@ public class ManagementBusServiceImpl implements IManagementBusService {
private final PlanInstanceRepository planInstanceRepository;

private final NodeTemplateInstanceRepository nodeTemplateInstanceRepository;
private final RelationshipTemplateInstanceRepository relationshipTemplateInstanceRepository;

@Inject
public ManagementBusServiceImpl(DeploymentDistributionDecisionMaker decisionMaker,
CollaborationContext collaborationContext, ICoreEndpointService endpointService,
ParameterHandler parameterHandler, PluginHandler pluginHandler,
PluginRegistry pluginRegistry, DeploymentPluginCapabilityChecker capabilityChecker,
CsarStorageService storage, ChoreographyHandler choreographyHandler, MBUtils mbUtils,
PlanInstanceHandler planInstanceHandler, PlanInstanceRepository planInstanceRepository, NodeTemplateInstanceRepository nodeTemplateInstanceRepository) {
PlanInstanceHandler planInstanceHandler, PlanInstanceRepository planInstanceRepository, NodeTemplateInstanceRepository nodeTemplateInstanceRepository, RelationshipTemplateInstanceRepository relationshipTemplateInstanceRepository) {
LOG.info("Instantiating ManagementBus Service");
this.nodeTemplateInstanceRepository = nodeTemplateInstanceRepository;
this.relationshipTemplateInstanceRepository = relationshipTemplateInstanceRepository;
this.planInstanceRepository = planInstanceRepository;
this.planInstanceHandler = planInstanceHandler;
this.mbUtils = mbUtils;
Expand Down Expand Up @@ -1384,7 +1387,13 @@ private void updateConnectedNodeTemplateInstance(NodeTemplateInstance nodeTempla
Optional<RelationshipTemplateInstance> optional = nodeTemplateInstance.getOutgoingRelations().stream().filter(rel -> rel.getTemplateType().equals(hostedOnRelationType)).findFirst();

if (optional.isPresent()) {
NodeTemplateInstance target = optional.get().getTarget();
RelationshipTemplateInstance relation = optional.get();
LOG.debug("Found RelationshipTemplateInstance with ID: {}", relation.getTemplateId());
relation = relationshipTemplateInstanceRepository.findWithPropertiesById(relation.getId());

NodeTemplateInstance target = relation.getTarget();
LOG.debug("Searching for NodeTemplateInstance with ID: {}", target.getTemplateId());
target = nodeTemplateInstanceRepository.findWithPropertiesAndOutgoingById(target.getId()).get();
LOG.debug("Found connected NodeTemplateInstance via hostedOn relation: {}", target.getTemplateId());

// get properties of connected NodeTemplateInstance
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -12,6 +12,6 @@ public interface RelationshipTemplateInstanceRepository extends JpaRepository<Re

List<RelationshipTemplateInstance> findByTemplateId(String templateId);

@EntityGraph(attributePaths = {"properties"})
@EntityGraph(attributePaths = {"properties", "target"})
RelationshipTemplateInstance findWithPropertiesById(Long id);
}

0 comments on commit 2cca0f6

Please sign in to comment.