public static List getIndexFromRequest()

in ranger-elasticsearch-plugin-shim/src/main/java/org/apache/ranger/authorization/elasticsearch/plugin/utils/RequestUtils.java [96:343]


    public static <Request extends ActionRequest> List<String> getIndexFromRequest(Request request) {
        List<String> indexs = new ArrayList<>();

        if (request instanceof SingleShardRequest) {
            indexs.add(((SingleShardRequest<?>) request).index());

            return indexs;
        }

        if (request instanceof ReplicationRequest) {
            indexs.add(((ReplicationRequest<?>) request).index());

            return indexs;
        }

        if (request instanceof InstanceShardOperationRequest) {
            indexs.add(((InstanceShardOperationRequest<?>) request).index());

            return indexs;
        }

        if (request instanceof CreateIndexRequest) {
            indexs.add(((CreateIndexRequest) request).index());

            return indexs;
        }

        if (request instanceof PutMappingRequest) {
            if (((PutMappingRequest) request).getConcreteIndex() != null) {
                indexs.add(((PutMappingRequest) request).getConcreteIndex().getName());

                return indexs;
            } else {
                return Arrays.asList(((PutMappingRequest) request).indices());
            }
        }

        if (request instanceof SearchRequest) {
            return Arrays.asList(((SearchRequest) request).indices());
        }

        if (request instanceof IndicesStatsRequest) {
            return Arrays.asList(((IndicesStatsRequest) request).indices());
        }

        if (request instanceof OpenIndexRequest) {
            return Arrays.asList(((OpenIndexRequest) request).indices());
        }

        if (request instanceof DeleteIndexRequest) {
            return Arrays.asList(((DeleteIndexRequest) request).indices());
        }

        if (request instanceof BulkRequest) {
            @SuppressWarnings("rawtypes") List<DocWriteRequest<?>> requests = ((BulkRequest) request).requests();

            if (CollectionUtils.isNotEmpty(requests)) {
                for (DocWriteRequest<?> docWriteRequest : requests) {
                    indexs.add(docWriteRequest.index());
                }

                return indexs;
            }
        }

        if (request instanceof MultiGetRequest) {
            List<Item> items = ((MultiGetRequest) request).getItems();

            if (CollectionUtils.isNotEmpty(items)) {
                for (Item item : items) {
                    indexs.add(item.index());
                }

                return indexs;
            }
        }

        if (request instanceof GetMappingsRequest) {
            return Arrays.asList(((GetMappingsRequest) request).indices());
        }

        if (request instanceof GetSettingsRequest) {
            return Arrays.asList(((GetSettingsRequest) request).indices());
        }

        if (request instanceof IndicesExistsRequest) {
            return Arrays.asList(((IndicesExistsRequest) request).indices());
        }

        if (request instanceof GetAliasesRequest) {
            return Arrays.asList(((GetAliasesRequest) request).indices());
        }

        if (request instanceof GetIndexRequest) {
            return Arrays.asList(((GetIndexRequest) request).indices());
        }

        if (request instanceof GetFieldMappingsRequest) {
            return Arrays.asList(((GetFieldMappingsRequest) request).indices());
        }

        if (request instanceof TypesExistsRequest) {
            return Arrays.asList(((TypesExistsRequest) request).indices());
        }

        if (request instanceof ValidateQueryRequest) {
            return Arrays.asList(((ValidateQueryRequest) request).indices());
        }

        if (request instanceof RecoveryRequest) {
            return Arrays.asList(((RecoveryRequest) request).indices());
        }

        if (request instanceof IndicesSegmentsRequest) {
            return Arrays.asList(((IndicesSegmentsRequest) request).indices());
        }

        if (request instanceof IndicesShardStoresRequest) {
            return Arrays.asList(((IndicesShardStoresRequest) request).indices());
        }

        if (request instanceof UpgradeStatusRequest) {
            return Arrays.asList(((UpgradeStatusRequest) request).indices());
        }

        if (request instanceof ClusterSearchShardsRequest) {
            return Arrays.asList(((ClusterSearchShardsRequest) request).indices());
        }

        if (request instanceof IndicesAliasesRequest) {
            List<IndicesAliasesRequest.AliasActions> aliasActions = ((IndicesAliasesRequest) request).getAliasActions();

            if (CollectionUtils.isNotEmpty(aliasActions)) {
                for (IndicesAliasesRequest.AliasActions action : aliasActions) {
                    indexs.addAll(Arrays.asList(action.indices()));
                }

                return indexs;
            }
        }

        if (request instanceof ClearIndicesCacheRequest) {
            return Arrays.asList(((ClearIndicesCacheRequest) request).indices());
        }

        if (request instanceof CloseIndexRequest) {
            return Arrays.asList(((CloseIndexRequest) request).indices());
        }

        if (request instanceof FlushRequest) {
            return Arrays.asList(((FlushRequest) request).indices());
        }

        if (request instanceof SyncedFlushRequest) {
            return Arrays.asList(((SyncedFlushRequest) request).indices());
        }

        if (request instanceof ForceMergeRequest) {
            return Arrays.asList(((ForceMergeRequest) request).indices());
        }

        if (request instanceof RefreshRequest) {
            return Arrays.asList(((RefreshRequest) request).indices());
        }

        if (request instanceof RolloverRequest) {
            return Arrays.asList(((RolloverRequest) request).indices());
        }

        if (request instanceof UpdateSettingsRequest) {
            return Arrays.asList(((UpdateSettingsRequest) request).indices());
        }

        if (request instanceof ResizeRequest) {
            return Arrays.asList(((ResizeRequest) request).indices());
        }

        if (request instanceof DeleteIndexTemplateRequest) {
            indexs.add(((DeleteIndexTemplateRequest) request).name());
            return indexs;
        }

        if (request instanceof GetIndexTemplatesRequest) {
            return Arrays.asList(((GetIndexTemplatesRequest) request).names());
        }

        if (request instanceof PutIndexTemplateRequest) {
            indexs.add(((PutIndexTemplateRequest) request).name());
            return indexs;
        }

        if (request instanceof UpgradeRequest) {
            return Arrays.asList(((UpgradeRequest) request).indices());
        }

        if (request instanceof FieldCapabilitiesRequest) {
            return Arrays.asList(((FieldCapabilitiesRequest) request).indices());
        }

        if (request instanceof MultiSearchRequest) {
            List<SearchRequest> searchRequests = ((MultiSearchRequest) request).requests();

            if (CollectionUtils.isNotEmpty(searchRequests)) {
                for (SearchRequest singleRequest : searchRequests) {
                    indexs.addAll(Arrays.asList(singleRequest.indices()));
                }

                return indexs;
            }
        }

        if (request instanceof MultiTermVectorsRequest) {
            List<TermVectorsRequest> termVectorsRequests = ((MultiTermVectorsRequest) request).getRequests();

            if (CollectionUtils.isNotEmpty(termVectorsRequests)) {
                for (TermVectorsRequest singleRequest : termVectorsRequests) {
                    indexs.addAll(Arrays.asList(singleRequest.indices()));
                }

                return indexs;
            }
        }

        if (request instanceof UpdateByQueryRequest) {
            return Arrays.asList(((UpdateByQueryRequest) request).indices());
        }

        if (request instanceof DeleteByQueryRequest) {
            return Arrays.asList(((DeleteByQueryRequest) request).indices());
        }

        if (request instanceof ReindexRequest) {
            indexs.addAll(Arrays.asList(((ReindexRequest) request).getSearchRequest().indices()));
            indexs.addAll(Arrays.asList(((ReindexRequest) request).getDestination().indices()));

            return indexs;
        }

        //ClearScrollRequest does not carry any index, so return empty List
        if (request instanceof ClearScrollRequest) {
            return indexs;
        }

        // No matched request type to find specific index , set default value *
        indexs.add("*");

        return indexs;
    }