package net.onrc.onos.core.newintent; import com.google.common.base.Objects; import net.onrc.onos.api.flowmanager.SingleDstTreeFlow; import net.onrc.onos.api.newintent.AbstractIntent; import net.onrc.onos.api.newintent.InstallableIntent; import net.onrc.onos.api.newintent.IntentId; import static com.google.common.base.Preconditions.checkNotNull; /** * Intent containing {@link SingleDstTreeFlow} object, which defines an explicit tree. * * It is intended to establish a path by using Flow Manager's API. */ public class SingleDstTreeFlowIntent extends AbstractIntent implements InstallableIntent { private final SingleDstTreeFlow tree; /** * Constructs an intent containing the specified {@link SingleDstTreeFlow tree}. * * @param id intent identifier * @param tree tree */ public SingleDstTreeFlowIntent(IntentId id, SingleDstTreeFlow tree) { super(id); this.tree = checkNotNull(tree); } /** * Constructor for serializer. */ protected SingleDstTreeFlowIntent() { super(); this.tree = null; } /** * Returns the tree. * * @return tree */ public SingleDstTreeFlow getTree() { return tree; } @Override public boolean equals(Object o) { if (this == o) { return true; } if (o == null || getClass() != o.getClass()) { return false; } if (!super.equals(o)) { return false; } SingleDstTreeFlowIntent that = (SingleDstTreeFlowIntent) o; return Objects.equal(this.tree, that.tree); } @Override public int hashCode() { return Objects.hashCode(super.hashCode(), tree); } @Override public String toString() { return Objects.toStringHelper(getClass()) .add("id", getId()) .add("tree", tree) .toString(); } }