Github user adeneche commented on a diff in the pull request:

    https://github.com/apache/drill/pull/270#discussion_r45413002
  
    --- Diff: 
exec/java-exec/src/main/java/org/apache/drill/exec/store/dfs/FileSelection.java 
---
    @@ -19,82 +19,72 @@
     
     import java.io.IOException;
     import java.net.URI;
    -import java.util.Collections;
     import java.util.List;
    -import java.util.concurrent.TimeUnit;
    -
    -import com.google.common.base.Stopwatch;
    -import org.apache.commons.lang3.ArrayUtils;
    -import org.apache.commons.lang3.StringUtils;
    -import 
org.apache.drill.exec.store.parquet.Metadata.ParquetTableMetadata_v1;
    -import org.apache.hadoop.fs.FileStatus;
    -import org.apache.hadoop.fs.Path;
    +import javax.annotation.Nullable;
     
     import com.fasterxml.jackson.annotation.JsonIgnore;
    +import com.google.common.base.Preconditions;
    +import com.google.common.base.Predicate;
    +import com.google.common.base.Strings;
    +import com.google.common.collect.Iterables;
     import com.google.common.collect.Lists;
    +import org.apache.hadoop.fs.FileStatus;
    +import org.apache.hadoop.fs.Path;
     
     /**
    - * Jackson serializable description of a file selection. Maintains an 
internal set of file statuses. However, also
    - * serializes out as a list of Strings. All accessing methods first 
regenerate the FileStatus objects if they are not
    - * available.  This allows internal movement of FileStatus and the ability 
to serialize if need be.
    + * Jackson serializable description of a file selection.
      */
     public class FileSelection {
       static final org.slf4j.Logger logger = 
org.slf4j.LoggerFactory.getLogger(FileSelection.class);
     
       @JsonIgnore
    -  private List<FileStatus> statuses;
    +  public List<FileStatus> statuses;
     
       public List<String> files;
       public String selectionRoot;
     
    -  // this is a temporary location for the reference to Parquet metadata
    -  // TODO: ideally this should be in a Parquet specific derived class.
    -  private ParquetTableMetadata_v1 parquetMeta = null;
    -
    -  public FileSelection() {
    -  }
    -
    -  public FileSelection(List<String> files, String selectionRoot, boolean 
dummy) {
    -    this.files = files;
    -    this.selectionRoot = selectionRoot;
    -  }
    -
    -  public FileSelection(List<String> files, boolean dummy) {
    -    this.files = files;
    -  }
    -
    -  public FileSelection(List<FileStatus> statuses) {
    -    this(statuses, null);
    -  }
    -
    -  public FileSelection(List<String> files, String selectionRoot,
    -      ParquetTableMetadata_v1 meta) {
    +  /**
    +   * Creates a {@link FileSelection selection} out of given file 
statuses/files and selection root.
    +   *
    +   * @param statuses  list of file statuses
    +   * @param files  list of files
    +   * @param selectionRoot  root path for selections
    +   *
    +   * @throws IllegalArgumentException if the list of statuses and files 
are null or empty.
    +   */
    +  protected FileSelection(List<FileStatus> statuses, List<String> files, 
String selectionRoot) {
    +    final boolean emptySelection = (statuses == null || statuses.size() == 
0) && (files == null || files.size() == 0);
    +    Preconditions.checkArgument(!emptySelection, "Either statuses or files 
must be supplied not both/node of them");
    --- End diff --
    
    small typo here "node" should read "none"
    
    also this doesn't actually check if both of them are not null, let the 
message seem to suggest


---
If your project is set up for it, you can reply to this email and have your
reply appear on GitHub as well. If your project does not have this feature
enabled and wishes so, or if the feature is enabled but not working, please
contact infrastructure at [email protected] or file a JIRA ticket
with INFRA.
---

Reply via email to