/*
 * Copyright (c) 2009 JSCAPE
 * 1147 S. 53rd Pl., Mesa, Arizona, 85206, U.S.A.
 * All rights reserved.
 *
 * This software is the confidential and proprietary information of
 * JSCAPE. ("Confidential Information").  You shall not disclose such
 * Confidential Information and shall use it only in accordance with
 * the terms of the license agreement you entered into with JSCAPE.
 *
 */

package com.jscape.util.reflection;

import com.jscape.util.functor.UnaryPredicate;

import java.lang.reflect.Method;

import static com.jscape.util.Parameters.assertGreaterOrEqual;

/**
 * @author Alex Usun
 */
public class MethodParameterCountEqual
        extends UnaryPredicate<Method> {

    private final int count;

    public MethodParameterCountEqual(int count) {
        assertGreaterOrEqual(count, 0, "Bad count value.");
        this.count = count;
    }

    public boolean evaluate(Method value) {
        return value.getParameterTypes().length == this.count;
    }

    @Override
    public String toString() {
        return "MethodParameterCountEqual {"
                + "count=" + this.count
                + '}';
    }
}