Compositeview

The hashCode and equals can be made real simple with simple utility methods

public static boolean equal(@Nullable Object a, @Nullable Object b) {
    return a == b || (a != null && a.equals(b));
  }

And the calling 
if (obj != null && obj instance of ViewAction) {
    ViewAction action = (ViewAction) obj;
    return equals(viewId, action.getViewId()) && equals(triggerType, action.getTriggerType())
}
return false;

Similarly for hash a utility method that does a simple multiply by prime and to result for all values passed in.