001/* 002 * Licensed to DuraSpace under one or more contributor license agreements. 003 * See the NOTICE file distributed with this work for additional information 004 * regarding copyright ownership. 005 * 006 * DuraSpace licenses this file to you under the Apache License, 007 * Version 2.0 (the "License"); you may not use this file except in 008 * compliance with the License. You may obtain a copy of the License at 009 * 010 * http://www.apache.org/licenses/LICENSE-2.0 011 * 012 * Unless required by applicable law or agreed to in writing, software 013 * distributed under the License is distributed on an "AS IS" BASIS, 014 * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 015 * See the License for the specific language governing permissions and 016 * limitations under the License. 017 */ 018package org.fcrepo.kernel.modeshape.services.functions; 019 020import static java.util.Arrays.asList; 021import static java.util.Objects.requireNonNull; 022import static org.fcrepo.kernel.modeshape.utils.UncheckedPredicate.uncheck; 023 024import java.util.Collection; 025import javax.jcr.Node; 026 027import org.fcrepo.kernel.modeshape.utils.UncheckedPredicate; 028 029 030/** 031 * Predicate to match nodes with any of the given mixin types 032 * @author armintor@gmail.com 033 * @author ajs6f 034 * 035 */ 036public class AnyTypesPredicate implements UncheckedPredicate<Node> { 037 private final Collection<String> nodeTypes; 038 039 /** 040 * True if any of the types specified match. 041 * @param types the types 042 */ 043 public AnyTypesPredicate(final String...types) { 044 nodeTypes = asList(types); 045 } 046 047 @Override 048 public boolean testThrows(final Node input) { 049 requireNonNull(input, "null node has no types!"); 050 return nodeTypes.stream().anyMatch(uncheck(input::isNodeType)); 051 } 052}