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 }