private void processStatusItems()

in services/provisioning-service/src/main/java/com/epam/datalab/backendapi/core/response/folderlistener/FolderListener.java [275:337]


    private void processStatusItems() {
        int i = 0;

        if (itemList.size() > 0) {
            expiredIdleMillis = 0;
        }
        itemList.processItemAll();

        synchronized (itemList) {
            while (i < itemList.size()) {
                final WatchItem item = itemList.get(i);
                final ItemStatus status = item.getStatus();
                final String uuid = item.getFileHandlerCallback().getUUID();

                switch (status) {
                    case WAIT_FOR_FILE:
                    case FILE_CAPTURED:
                    case INPROGRESS:
                        // Skip
                        i++;
                        continue;
                    case TIMEOUT_EXPIRED:
                        LOGGER.warn("Folder listener \"{}\" remove expired file handler for UUID {}", getDirectoryName
                                (), uuid);
                        try {
                            item.getFileHandlerCallback().handleError("Request timeout expired");
                        } catch (Exception e) {
                            LOGGER.error("Folder listener \"{}\" caused exception for UUID {}", getDirectoryName(),
                                    uuid, e);
                        }
                        break;
                    case IS_DONE:
                        if (item.getFutureResult()) {
                            LOGGER.trace("Folder listener \"{}\" remove processed file handler for UUID {}, handler " +
                                    "result is {}", getDirectoryName(), uuid, item.getFutureResult());
                        } else {
                            LOGGER.warn("Folder listener \"{}\" remove processed file handler for UUID {}, handler " +
                                    "result is {}", getDirectoryName(), uuid, item.getFutureResult());
                        }
                        break;
                    case IS_CANCELED:
                        LOGGER.debug("Folder listener \"{}\" remove canceled file handler for UUID {}",
                                getDirectoryName(), uuid);
                        break;
                    case IS_FAILED:
                        LOGGER.warn("Folder listener \"{}\" remove failed file handler for UUID {}", getDirectoryName
                                (), uuid);
                        break;
                    case IS_INTERRUPTED:
                        LOGGER.debug("Folder listener \"{}\" remove iterrupted file handler for UUID {}",
                                getDirectoryName(), uuid);
                        break;
                    default:
                        continue;
                }
                itemList.remove(i);
            }
        }

        if (expiredIdleMillis == 0 && itemList.size() == 0) {
            expiredIdleMillis = System.currentTimeMillis() + LISTENER_IDLE_TIMEOUT_MILLLIS;
        }
    }