diff --git a/server/src/main/java/org/elasticsearch/index/store/DirectoryUtils.java b/server/src/main/java/org/elasticsearch/index/store/DirectoryUtils.java deleted file mode 100644 index 11203a8198770..0000000000000 --- a/server/src/main/java/org/elasticsearch/index/store/DirectoryUtils.java +++ /dev/null @@ -1,83 +0,0 @@ -/* - * Licensed to Elasticsearch under one or more contributor - * license agreements. See the NOTICE file distributed with - * this work for additional information regarding copyright - * ownership. Elasticsearch licenses this file to you under - * the Apache License, Version 2.0 (the "License"); you may - * not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, - * software distributed under the License is distributed on an - * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY - * KIND, either express or implied. See the License for the - * specific language governing permissions and limitations - * under the License. - */ - -package org.elasticsearch.index.store; - -import org.apache.lucene.store.Directory; -import org.apache.lucene.store.FileSwitchDirectory; -import org.apache.lucene.store.FilterDirectory; - -/** - * Utils for working with {@link Directory} classes. - */ -public final class DirectoryUtils { - - private DirectoryUtils() {} // no instance - - static Directory getLeafDirectory(FilterDirectory dir, Class targetClass) { - Directory current = dir.getDelegate(); - while (true) { - if ((current instanceof FilterDirectory)) { - if (targetClass != null && targetClass.isAssignableFrom(current.getClass())) { - break; - } - current = ((FilterDirectory) current).getDelegate(); - } else { - break; - } - } - return current; - } - - /** - * Tries to extract the leaf of the {@link Directory} if the directory is a {@link FilterDirectory} and cast - * it to the given target class or returns null if the leaf is not assignable to the target class. - * If the given {@link Directory} is a concrete directory it will treated as a leaf and the above applies. - */ - public static T getLeaf(Directory dir, Class targetClass) { - return getLeaf(dir, targetClass, null); - } - /** - * Tries to extract the leaf of the {@link Directory} if the directory is a {@link FilterDirectory} and cast - * it to the given target class or returns the given default value, if the leaf is not assignable to the target class. - * If the given {@link Directory} is a concrete directory it will treated as a leaf and the above applies. - */ - public static T getLeaf(Directory dir, Class targetClass, T defaultValue) { - Directory d = dir; - if (dir instanceof FilterDirectory) { - d = getLeafDirectory((FilterDirectory) dir, targetClass); - } - if (d instanceof FileSwitchDirectory) { - T leaf = getLeaf(((FileSwitchDirectory) d).getPrimaryDir(), targetClass); - if (leaf == null) { - d = getLeaf(((FileSwitchDirectory) d).getSecondaryDir(), targetClass, defaultValue); - } else { - d = leaf; - } - } - - if (d != null && targetClass.isAssignableFrom(d.getClass())) { - return targetClass.cast(d); - } else { - return defaultValue; - } - } - - -} diff --git a/server/src/test/java/org/elasticsearch/index/store/DirectoryUtilsTests.java b/server/src/test/java/org/elasticsearch/index/store/DirectoryUtilsTests.java deleted file mode 100644 index 57265872c4c79..0000000000000 --- a/server/src/test/java/org/elasticsearch/index/store/DirectoryUtilsTests.java +++ /dev/null @@ -1,86 +0,0 @@ -/* - * Licensed to Elasticsearch under one or more contributor - * license agreements. See the NOTICE file distributed with - * this work for additional information regarding copyright - * ownership. Elasticsearch licenses this file to you under - * the Apache License, Version 2.0 (the "License"); you may - * not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, - * software distributed under the License is distributed on an - * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY - * KIND, either express or implied. See the License for the - * specific language governing permissions and limitations - * under the License. - */ -package org.elasticsearch.index.store; - -import org.apache.lucene.store.BaseDirectoryWrapper; -import org.apache.lucene.store.FSDirectory; -import org.apache.lucene.store.FileSwitchDirectory; -import org.apache.lucene.store.FilterDirectory; -import org.apache.lucene.store.RAMDirectory; -import org.elasticsearch.test.ESTestCase; - -import java.io.IOException; -import java.nio.file.Path; -import java.util.Collections; -import java.util.Set; - -import static org.hamcrest.CoreMatchers.notNullValue; -import static org.hamcrest.CoreMatchers.nullValue; -import static org.hamcrest.CoreMatchers.sameInstance; - -public class DirectoryUtilsTests extends ESTestCase { - public void testGetLeave() throws IOException { - Path file = createTempDir(); - final int iters = scaledRandomIntBetween(10, 100); - for (int i = 0; i < iters; i++) { - { - BaseDirectoryWrapper dir = newFSDirectory(file); - FSDirectory directory = DirectoryUtils.getLeaf(new FilterDirectory(dir) {}, FSDirectory.class, null); - assertThat(directory, notNullValue()); - assertThat(directory, sameInstance(DirectoryUtils.getLeafDirectory(dir, null))); - dir.close(); - } - - { - BaseDirectoryWrapper dir = newFSDirectory(file); - FSDirectory directory = DirectoryUtils.getLeaf(dir, FSDirectory.class, null); - assertThat(directory, notNullValue()); - assertThat(directory, sameInstance(DirectoryUtils.getLeafDirectory(dir, null))); - dir.close(); - } - - { - Set stringSet = Collections.emptySet(); - BaseDirectoryWrapper dir = newFSDirectory(file); - FSDirectory directory = DirectoryUtils.getLeaf(new FileSwitchDirectory(stringSet, dir, dir, random().nextBoolean()), FSDirectory.class, null); - assertThat(directory, notNullValue()); - assertThat(directory, sameInstance(DirectoryUtils.getLeafDirectory(dir, null))); - dir.close(); - } - - { - Set stringSet = Collections.emptySet(); - BaseDirectoryWrapper dir = newFSDirectory(file); - FSDirectory directory = DirectoryUtils.getLeaf(new FilterDirectory(new FileSwitchDirectory(stringSet, dir, dir, random().nextBoolean())) {}, FSDirectory.class, null); - assertThat(directory, notNullValue()); - assertThat(directory, sameInstance(DirectoryUtils.getLeafDirectory(dir, null))); - dir.close(); - } - - { - Set stringSet = Collections.emptySet(); - BaseDirectoryWrapper dir = newFSDirectory(file); - RAMDirectory directory = DirectoryUtils.getLeaf(new FilterDirectory(new FileSwitchDirectory(stringSet, dir, dir, random().nextBoolean())) {}, RAMDirectory.class, null); - assertThat(directory, nullValue()); - dir.close(); - } - - } - } -}