@Override public void leftOnly(T left) { // Create changes.linkAdd(fromDnsPointer, linkType, left); }
} else { logger.debug("Adding link to Resource {}", toResource); changesContext.linkAdd(fromResource, linkType, toResource);
protected void manageNeededResourcesNoUpdates(CommonServicesContext services, ChangesContext changes, IPResource resource, List<IPResource> neededManagedResources, List<Class<? extends IPResource>> managedResourceTypes) { IPResourceService resourceService = services.getResourceService(); // Get the currently managed resources List<IPResource> currentlyManagedResources = new ArrayList<>(); for (Class<? extends IPResource> managedResourceType : managedResourceTypes) { currentlyManagedResources.addAll(resourceService.linkFindAllByFromResourceAndLinkTypeAndToResourceClass(resource, LinkTypeConstants.MANAGES, managedResourceType)); } // Find or create the needed resources neededManagedResources = neededManagedResources.stream().map(it -> retrieveOrCreateResource(resourceService, changes, it)).collect(Collectors.toList()); // Create the links List<Long> neededManagedResourceIds = new ArrayList<>(); for (IPResource neededManagedResource : neededManagedResources) { changes.linkAdd(resource, LinkTypeConstants.MANAGES, neededManagedResource); if (neededManagedResource.getInternalId() != null) { neededManagedResourceIds.add(neededManagedResource.getInternalId()); } } // Remove the previously no more used links for (IPResource currentlyManagedResource : currentlyManagedResources) { if (!neededManagedResourceIds.contains(currentlyManagedResource.getInternalId())) { removeManagedLinkAndDeleteIfNotManagedByAnyoneElse(resourceService, changes, currentlyManagedResource, resource); } } }
} else { logger.debug("Adding link from Resource {}", fromResource); changesContext.linkAdd(fromResource, linkType, toResource);
@Test public void testChanges_reduntantLinksAndTags() { ChangesContext changes = new ChangesContext(getCommonServicesContext().getResourceService()); JunitResource r1 = new JunitResource("reduntant_1"); JunitResource r2 = new JunitResource("reduntant_2"); changes.resourceAdd(r1); changes.resourceAdd(r2); changes.linkAdd(r1, "link1", r2); changes.linkAdd(r1, "link1", r2); changes.linkAdd(r1, "link2", r2); changes.tagAdd(r1, "tag1"); changes.tagAdd(r1, "tag1"); changes.tagAdd(r1, "tag2"); getInternalServicesContext().getInternalChangeService().changesExecute(changes); // Check IPResourceService resourceService = getCommonServicesContext().getResourceService(); r1 = resourceService.resourceFindByPk(r1).get(); r2 = resourceService.resourceFindByPk(r2).get(); Assert.assertEquals(Arrays.asList("link1", "link2"), resourceService.linkFindAllByFromResource(r1).stream().map(it -> it.getA()).sorted().collect(Collectors.toList())); Assert.assertEquals(Arrays.asList("tag1", "tag2"), resourceService.tagFindAllByResource(r1).stream().sorted().collect(Collectors.toList())); }
pointToMachines.forEach(machine -> changes.linkAdd(dnsPointer, LinkTypeConstants.POINTS_TO, machine)); DnsPointer dnsPointer = new DnsPointer(imapDomainName); context.addManagedResources(dnsPointer); pointToMachines.forEach(machine -> changes.linkAdd(dnsPointer, LinkTypeConstants.POINTS_TO, machine)); DnsPointer dnsPointer = new DnsPointer(pop3DomainName); context.addManagedResources(dnsPointer); pointToMachines.forEach(machine -> changes.linkAdd(dnsPointer, LinkTypeConstants.POINTS_TO, machine));
changesContext.linkAdd(editedResource, linkType, it); });
changes.linkAdd(resource, LinkTypeConstants.MANAGES, neededManagedResource); if (neededManagedResource.getInternalId() != null) { neededManagedResourceIds.add(neededManagedResource.getInternalId());
changesContext.linkAdd(editedResource, linkType, finalLink);
changes.linkAdd(fromResource, linkType, toResource);
changesContext.linkAdd(finalLink, linkType, editedResource);
@Test public void testChanges_linksAndTagsAreNotKeptWhenDeleted() { // Create ChangesContext changes = new ChangesContext(getCommonServicesContext().getResourceService()); JunitResource r1 = new JunitResource("1"); JunitResource r2 = new JunitResource("2"); changes.resourceAdd(r1); changes.resourceAdd(r2); changes.linkAdd(r1, "link1", r2); changes.tagAdd(r1, "tag1"); getInternalServicesContext().getInternalChangeService().changesExecute(changes); IPResourceService resourceService = getCommonServicesContext().getResourceService(); r1 = resourceService.resourceFindByPk(r1).get(); r2 = resourceService.resourceFindByPk(r2).get(); Assert.assertEquals(Arrays.asList("link1"), resourceService.linkFindAllByFromResource(r1).stream().map(it -> it.getA()).sorted().collect(Collectors.toList())); Assert.assertEquals(Arrays.asList("tag1"), resourceService.tagFindAllByResource(r1).stream().sorted().collect(Collectors.toList())); // Delete it changes.resourceDelete(resourceService.resourceFindByPk(r1).get().getInternalId()); getInternalServicesContext().getInternalChangeService().changesExecute(changes); Assert.assertEquals(0, resourceService.linkFindAllByFromResource(r1).size()); Assert.assertEquals(0, resourceService.tagFindAllByResource(r1).size()); // Recreate it changes.resourceAdd(r1); getInternalServicesContext().getInternalChangeService().changesExecute(changes); // Check no links and tags Assert.assertEquals(0, resourceService.linkFindAllByFromResource(r1).size()); Assert.assertEquals(0, resourceService.tagFindAllByResource(r1).size()); }
ctx.getChangesContext().linkAdd(it, linkType, editedResource); });
ctx.getChangesContext().linkAdd(editedResource, linkType, finalLink);
ctx.getChangesContext().linkAdd(editedResource, linkType, finalLink);
changes.linkAdd(m1, "extraLink", m2); getInternalServicesContext().getInternalChangeService().changesExecute(changes);
changes.linkAdd(dp, LinkTypeConstants.POINTS_TO, m1); getInternalServicesContext().getInternalChangeService().changesExecute(changes); changes.linkAdd(dp, LinkTypeConstants.POINTS_TO, m2); getInternalServicesContext().getInternalChangeService().changesExecute(changes); changes.linkAdd(dp, LinkTypeConstants.POINTS_TO, m2); getInternalServicesContext().getInternalChangeService().changesExecute(changes);