hadoop Options 源码

  • 2022-10-20
  • 浏览 (207)

haddop Options 代码

文件路径:/hadoop-common-project/hadoop-common/src/main/java/org/apache/hadoop/util/Options.java

/**
 * Licensed to the Apache Software Foundation (ASF) under one or more
 * contributor license agreements. See the NOTICE file distributed with this
 * work for additional information regarding copyright ownership. The ASF
 * 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.apache.hadoop.util;

import java.io.IOException;
import java.util.Arrays;

import org.apache.hadoop.fs.FSDataInputStream;
import org.apache.hadoop.fs.FSDataOutputStream;
import org.apache.hadoop.fs.Path;

/**
 * This class allows generic access to variable length type-safe parameter
 * lists.
 */
public class Options {

  public static abstract class StringOption {
    private final String value;
    protected StringOption(String value) {
      this.value = value;
    }
    public String getValue() {
      return value;
    }
  }

  public static abstract class ClassOption {
    private final Class<?> value;
    protected ClassOption(Class<?> value) {
      this.value = value;
    }
    public Class<?> getValue() {
      return value;
    }
  }

  public static abstract class BooleanOption {
    private final boolean value;
    protected BooleanOption(boolean value) {
      this.value = value;
    }
    public boolean getValue() {
      return value;
    }
  }

  public static abstract class IntegerOption {
    private final int value;
    protected IntegerOption(int value) {
      this.value = value;
    }
    public int getValue() {
      return value;
    }
  }

  public static abstract class LongOption {
    private final long value;
    protected LongOption(long value) {
      this.value = value;
    }
    public long getValue() {
      return value;
    }
  }

  public static abstract class PathOption {
    private final Path value;
    protected PathOption(Path value) {
      this.value = value;
    }
    public Path getValue() {
      return value;
    }
  }

  public static abstract class FSDataInputStreamOption {
    private final FSDataInputStream value;
    protected FSDataInputStreamOption(FSDataInputStream value) {
      this.value = value;
    }
    public FSDataInputStream getValue() {
      return value;
    }
  }

  public static abstract class FSDataOutputStreamOption {
    private final FSDataOutputStream value;
    protected FSDataOutputStreamOption(FSDataOutputStream value) {
      this.value = value;
    }
    public FSDataOutputStream getValue() {
      return value;
    }
  }

  public static abstract class ProgressableOption {
    private final Progressable value;
    protected ProgressableOption(Progressable value) {
      this.value = value;
    }
    public Progressable getValue() {
      return value;
    }
  }

  /**
   * Find the first option of the required class.
   * @param <T> the static class to find
   * @param <base> the parent class of the array
   * @param cls the dynamic class to find
   * @param opts the list of options to look through
   * @return the first option that matches
   * @throws IOException raised on errors performing I/O.
   */
  @SuppressWarnings("unchecked")
  public static <base, T extends base> T getOption(Class<T> cls, base [] opts
                                                   ) throws IOException {
    for(base o: opts) {
      if (o.getClass() == cls) {
        return (T) o;
      }
    }
    return null;
  }

  /**
   * Prepend some new options to the old options
   * @param <T> the type of options
   * @param oldOpts the old options
   * @param newOpts the new options
   * @return a new array of options
   */
  public static <T> T[] prependOptions(T[] oldOpts, T... newOpts) {
    // copy the new options to the front of the array
    T[] result = Arrays.copyOf(newOpts, newOpts.length+oldOpts.length);
    // now copy the old options
    System.arraycopy(oldOpts, 0, result, newOpts.length, oldOpts.length);
    return result;
  }
}

相关信息

hadoop 源码目录

相关文章

hadoop ApplicationClassLoader 源码

hadoop AsyncDiskService 源码

hadoop AutoCloseableLock 源码

hadoop BasicDiskValidator 源码

hadoop BlockingThreadPoolExecutorService 源码

hadoop CacheableIPList 源码

hadoop ChunkedArrayList 源码

hadoop ClassUtil 源码

hadoop Classpath 源码

hadoop CleanerUtil 源码

0  赞