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