001package com.avaje.ebean;
002
003/**
004 * Created by rob on 16/07/15.
005 */
006public class WhenBeanReturn<T> {
007
008  Class<T> beanType;
009
010  Object id;
011
012  T bean;
013
014  public WhenBeanReturn(Class<T> beanType) {
015    this(beanType, null);
016  }
017
018  public WhenBeanReturn(Class<T> beanType, Object id) {
019    this.beanType = beanType;
020    this.id = id;
021  }
022
023  public void thenReturn(T bean) {
024    this.bean = bean;
025  }
026
027  T val() {
028    return bean;
029  }
030
031  /**
032   * Return true if matched by beanType and there is no specific id set.
033   */
034  boolean isMatch(Class<?> beanType) {
035    return beanType.equals(this.beanType) && this.id == null;
036  }
037
038  /**
039   * Return true if matched by beanType and id value.
040   */
041  boolean isMatch(Class<?> beanType, Object id) {
042
043    return beanType.equals(this.beanType) && idMatch(id);
044  }
045
046  boolean idMatch(Object id) {
047    if (id == null) return this.id == null;
048    return id.equals(this.id);
049  }
050}