io.v.rx.UncheckedVException.java Source code

Java tutorial

Introduction

Here is the source code for io.v.rx.UncheckedVException.java

Source

// Copyright 2015 The Vanadium Authors. All rights reserved.
// Use of this source code is governed by a BSD-style
// license that can be found in the LICENSE file.

package io.v.rx;

import com.google.common.collect.Iterables;

import java.util.Arrays;

import io.v.v23.verror.VException;

/**
 * This wrapper for {@link VException} facilitates its use with lambdas and RxJava. Where this is
 * used, it is expected that alternate error handling mechanisms are in place.
 */
public class UncheckedVException extends RuntimeException {
    public UncheckedVException(final VException cause) {
        super(cause);
    }

    @Override
    public VException getCause() {
        return (VException) super.getCause();
    }

    public boolean isIdIn(final Iterable<VException.IDAction> ids) {
        return Iterables.any(ids, id -> id.getID().equals(getCause().getID()));
    }

    public boolean isIdIn(final VException.IDAction... ids) {
        return isIdIn(Arrays.asList(ids));
    }

    public static boolean isIdIn(final Throwable t, final Iterable<VException.IDAction> ids) {
        return t instanceof UncheckedVException && ((UncheckedVException) t).isIdIn(ids);
    }

    public static boolean isIdIn(final Throwable t, final VException.IDAction... ids) {
        return isIdIn(t, Arrays.asList(ids));
    }
}