static

in disseminating-executors/src/main/java/software/amazon/swage/concurrent/StateCapture.java [43:69]


    static {
        ClassLoader classLoader;
        /* This system property is available to accommodate customers who need StateCaptors to be discovered and
         * loaded from the context class loader. This is a legacy requirement, and this system property should not be
         * enabled unless absolutely necessary. It will eventually be removed.
         */
        if (System.getProperty("StateCapture.useContextClassLoader") == null) {
            classLoader = StateCapture.class.getClassLoader();
        } else {
            classLoader = Thread.currentThread().getContextClassLoader();
        }
        @SuppressWarnings("rawtypes")
        ServiceLoader<StateCaptor> serviceLoader = ServiceLoader.load(StateCaptor.class, classLoader);

        final List<StateCaptor<?>> registeredStateCaptors = new ArrayList<StateCaptor<?>>();
        for (StateCaptor<?> stateCaptor : serviceLoader) {
            registeredStateCaptors.add(stateCaptor);
            log.fine("Registering state captor: " + stateCaptor.getClass().getCanonicalName());
        }

        if (registeredStateCaptors.isEmpty()) {
            log.fine("Found no state captors to register.");
            stateCaptors = Collections.emptyList();
        } else {
            stateCaptors = Collections.unmodifiableList(registeredStateCaptors);
        }
    }