All Downloads are FREE. Search and download functionalities are using the official Maven repository.

com.feilong.lib.collection4.functors.FunctorUtils Maven / Gradle / Ivy

Go to download

feilong is a suite of core and expanded libraries that include utility classes, http, excel,cvs, io classes, and much much more.

There is a newer version: 4.3.0
Show newest version
/*
 * Licensed to the Apache Software Foundation (ASF) under one or more
 * contributor license agreements.  See the NOTICE file distributed with
 * this work for additional information regarding copyright ownership.
 * The ASF licenses this file to You under the Apache License, Version 2.0
 * (the "License"); you may not use this file except in compliance with
 * the License.  You may obtain a copy of the License at
 *
 *      http://www.apache.org/licenses/LICENSE-2.0
 *
 * Unless required by applicable law or agreed to in writing, software
 * distributed under the License is distributed on an "AS IS" BASIS,
 * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
 * See the License for the specific language governing permissions and
 * limitations under the License.
 */
package com.feilong.lib.collection4.functors;

import java.util.Collection;

import org.apache.commons.collections4.Closure;
import org.apache.commons.collections4.Predicate;
import org.apache.commons.collections4.Transformer;

/**
 * Internal utilities for functors.
 *
 * @since 3.0
 */
class FunctorUtils{

    /**
     * Restricted constructor.
     */
    private FunctorUtils(){
        super();
    }

    /**
     * Clone the predicates to ensure that the internal reference can't be messed with.
     * Due to the {@link Predicate#evaluate(T)} method, Predicate is
     * able to be coerced to Predicate without casting issues.
     *
     * @param predicates
     *            the predicates to copy
     * @return the cloned predicates
     */
    @SuppressWarnings("unchecked")
    static  Predicate[] copy(final Predicate...predicates){
        if (predicates == null){
            return null;
        }
        return (Predicate[]) predicates.clone();
    }

    /**
     * A very simple method that coerces Predicate to Predicate.
     * Due to the {@link Predicate#evaluate(T)} method, Predicate is
     * able to be coerced to Predicate without casting issues.
     * 

* This method exists * simply as centralised documentation and atomic unchecked warning * suppression. * * @param * the type of object the returned predicate should "accept" * @param predicate * the predicate to coerce. * @return the coerced predicate. */ @SuppressWarnings("unchecked") static Predicate coerce(final Predicate predicate){ return (Predicate) predicate; } /** * Validate the predicates to ensure that all is well. * * @param predicates * the predicates to validate */ static void validate(final Predicate...predicates){ if (predicates == null){ throw new NullPointerException("The predicate array must not be null"); } for (int i = 0; i < predicates.length; i++){ if (predicates[i] == null){ throw new NullPointerException("The predicate array must not contain a null predicate, index " + i + " was null"); } } } /** * Validate the predicates to ensure that all is well. * * @param predicates * the predicates to validate * @return predicate array */ static Predicate[] validate(final Collection> predicates){ if (predicates == null){ throw new NullPointerException("The predicate collection must not be null"); } // convert to array like this to guarantee iterator() ordering @SuppressWarnings("unchecked") // OK final Predicate[] preds = new Predicate[predicates.size()]; int i = 0; for (final Predicate predicate : predicates){ preds[i] = predicate; if (preds[i] == null){ throw new NullPointerException("The predicate collection must not contain a null predicate, index " + i + " was null"); } i++; } return preds; } /** * Clone the closures to ensure that the internal reference can't be messed with. * * @param closures * the closures to copy * @return the cloned closures */ @SuppressWarnings("unchecked") static Closure[] copy(final Closure...closures){ if (closures == null){ return null; } return (Closure[]) closures.clone(); } /** * Validate the closures to ensure that all is well. * * @param closures * the closures to validate */ static void validate(final Closure...closures){ if (closures == null){ throw new NullPointerException("The closure array must not be null"); } for (int i = 0; i < closures.length; i++){ if (closures[i] == null){ throw new NullPointerException("The closure array must not contain a null closure, index " + i + " was null"); } } } /** * A very simple method that coerces Closure to Closure. *

* This method exists * simply as centralised documentation and atomic unchecked warning * suppression. * * @param * the type of object the returned closure should "accept" * @param closure * the closure to coerce. * @return the coerced closure. */ @SuppressWarnings("unchecked") static Closure coerce(final Closure closure){ return (Closure) closure; } /** * Copy method * * @param transformers * the transformers to copy * @return a clone of the transformers */ @SuppressWarnings("unchecked") static Transformer[] copy(final Transformer...transformers){ if (transformers == null){ return null; } return (Transformer[]) transformers.clone(); } /** * Validate method * * @param transformers * the transformers to validate */ static void validate(final Transformer...transformers){ if (transformers == null){ throw new NullPointerException("The transformer array must not be null"); } for (int i = 0; i < transformers.length; i++){ if (transformers[i] == null){ throw new NullPointerException("The transformer array must not contain a null transformer, index " + i + " was null"); } } } /** * A very simple method that coerces Transformer to Transformer. *

* This method exists * simply as centralised documentation and atomic unchecked warning * suppression. * * @param * the type of object the returned transformer should "accept" * @param * the type of object the returned transformer should "produce" * @param transformer * the transformer to coerce. * @return the coerced transformer. */ @SuppressWarnings("unchecked") static Transformer coerce(final Transformer transformer){ return (Transformer) transformer; } }





© 2015 - 2024 Weber Informatics LLC | Privacy Policy