1 // 2 // ======================================================================== 3 // Copyright (c) 1995-2016 Mort Bay Consulting Pty. Ltd. 4 // ------------------------------------------------------------------------ 5 // All rights reserved. This program and the accompanying materials 6 // are made available under the terms of the Eclipse Public License v1.0 7 // and Apache License v2.0 which accompanies this distribution. 8 // 9 // The Eclipse Public License is available at 10 // http://www.eclipse.org/legal/epl-v10.html 11 // 12 // The Apache License v2.0 is available at 13 // http://www.opensource.org/licenses/apache2.0.php 14 // 15 // You may elect to redistribute this code under either of these licenses. 16 // ======================================================================== 17 // 18 19 package org.eclipse.jetty.start.graph; 20 21 /** 22 * Match against a specific {@link Selection#getCriteria()}, where 23 * there are no other {@link Selection#isExplicit()} specified. 24 */ 25 public class UniqueCriteriaPredicate implements Predicate 26 { 27 private final String criteria; 28 29 public UniqueCriteriaPredicate(String criteria) 30 { 31 this.criteria = criteria; 32 } 33 34 @Override 35 public boolean match(Node<?> node) 36 { 37 if (node.getSelections().isEmpty()) 38 { 39 // Empty selection list (no uniqueness to it) 40 return false; 41 } 42 43 // Assume no match 44 boolean ret = false; 45 46 for (Selection selection : node.getSelections()) 47 { 48 if (criteria.equalsIgnoreCase(selection.getCriteria())) 49 { 50 // Found a match 51 ret = true; 52 continue; // this criteria is always valid. 53 } 54 else if (selection.isExplicit()) 55 { 56 // Automatic failure 57 return false; 58 } 59 } 60 61 return ret; 62 } 63 }