@Modified
    public void modified(ComponentContext context) {
        if (context == null) {
            log.info("No component configuration");
            return;
        } else {
            Dictionary<?, ?> properties = context.getProperties();

            int newPollFrequency = getNewPollFrequency(properties, linkPollFrequencySeconds);
            int newPollDelay = getNewPollDealy(properties, linkPollDelaySeconds);
            int newDiscoveryTimeout = getNewDiscoveryTimeout(properties, linkDiscoveryTimeoutSeconds);
            if (newPollFrequency != linkPollFrequencySeconds ||
                    newPollDelay != linkPollDelaySeconds ||
                    newDiscoveryTimeout != linkDiscoveryTimeoutSeconds) {
                linkPollFrequencySeconds = newPollFrequency;
                linkPollDelaySeconds = newPollDelay;
                linkDiscoveryTimeoutSeconds = newDiscoveryTimeout;
                //stops the old scheduled task
                scheduledTask.cancel(true);
                //schedules new task at the new polling rate
                scheduledTask = schedulePolling();
            }
        }
        log.info("Modified");
    }
@Test
    @Ignore("FIXME: fails intermittently; suspecting insufficient time and race condition")
    public void linksTestForStoredDevice() {
        provider.modified(CONTEXT);
        providerService.discoveredLinkDescriptions().put(LINKKEY1, LINK1);
        providerService.discoveredLinkDescriptions().put(LINKKEY2, LINK2);
        providerService.discoveredLinkDescriptions().put(LINKKEY4, LINK4);
        testLink.addLinkDesc(LINK2);
        testLink.addLinkDesc(LINK3);
        assertAfter(1100, () -> {
            assertEquals("Total number of link must be 3", 3, providerService.discoveredLinkDescriptions().size());
            assertFalse("Link1 should be removed",
                        providerService.discoveredLinkDescriptions().containsKey(LINKKEY1));
            assertTrue("Link2 should be present",
                       providerService.discoveredLinkDescriptions().containsKey(LINKKEY2));
            assertTrue("Link3 should be added",
                       providerService.discoveredLinkDescriptions().containsKey(LINKKEY3));
            assertEquals("Link3 should be annotated", SCHEME_NAME.toUpperCase(),
                         providerService.discoveredLinkDescriptions()
                    .get(LINKKEY3).annotations().value(AnnotationKeys.PROTOCOL));
            assertTrue("Link4 should be present because it is not related to the LinkDiscovery",
                       providerService.discoveredLinkDescriptions().containsKey(LINKKEY4));

        });
        clear();
    }