Example #1
0
  public CatalogProvider waitForCatalogProvider() throws InterruptedException {
    LOGGER.info("Waiting for CatalogProvider to become available.");
    serviceManager.printInactiveBundles();

    CatalogProvider provider = null;
    long timeoutLimit = System.currentTimeMillis() + CATALOG_PROVIDER_TIMEOUT;
    boolean available = false;

    while (!available) {
      if (provider == null) {
        ServiceReference<CatalogProvider> providerRef =
            serviceManager.getServiceReference(CatalogProvider.class);
        if (providerRef != null) {
          provider = serviceManager.getService(providerRef);
        }
      }

      if (provider != null) {
        available = provider.isAvailable();
      }

      if (!available) {
        if (System.currentTimeMillis() > timeoutLimit) {
          LOGGER.info("CatalogProvider.isAvailable = false");
          serviceManager.printInactiveBundles();
          fail(
              String.format(
                  "Catalog provider timed out after %d minutes.",
                  TimeUnit.MILLISECONDS.toMinutes(CATALOG_PROVIDER_TIMEOUT)));
        }
        Thread.sleep(100);
      }
    }

    LOGGER.info("CatalogProvider is available.");
    return provider;
  }