001    package org.crsh.cmdline;
002    
003    import org.crsh.cmdline.spi.ValueCompletion;
004    
005    /**
006     * A completion result.
007     *
008     * @author <a href="mailto:julien.viet@exoplatform.com">Julien Viet</a>
009     */
010    public final class CommandCompletion {
011    
012      /** . */
013      private final Delimiter delimiter;
014    
015      /** . */
016      private final ValueCompletion value;
017    
018      public CommandCompletion(Delimiter delimiter, ValueCompletion value) throws NullPointerException {
019        if (delimiter == null) {
020          throw new NullPointerException("No null delimiter accepted");
021        }
022        if (value == null) {
023          throw new NullPointerException("No null value accepted");
024        }
025    
026        //
027        this.delimiter = delimiter;
028        this.value = value;
029      }
030    
031      public Delimiter getDelimiter() {
032        return delimiter;
033      }
034    
035      public ValueCompletion getValue() {
036        return value;
037      }
038    
039      @Override
040      public boolean equals(Object obj) {
041        if (obj == this) {
042          return true;
043        }
044        if (obj instanceof CommandCompletion) {
045          CommandCompletion that = (CommandCompletion)obj;
046          return delimiter.equals(that.delimiter) && value.equals(that.value);
047        }
048        return false;
049      }
050    
051      @Override
052      public String toString() {
053        return "CommandCompletion[delimiter=" + delimiter + ",value=" + value + "]";
054      }
055    }