1 package org.eclipse.aether.util.graph.transformer;
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22 import java.util.Collection;
23
24 import org.eclipse.aether.RepositoryException;
25 import org.eclipse.aether.util.graph.transformer.ConflictResolver.ConflictContext;
26 import org.eclipse.aether.util.graph.transformer.ConflictResolver.ConflictItem;
27 import org.eclipse.aether.util.graph.transformer.ConflictResolver.OptionalitySelector;
28
29
30
31
32
33
34 public final class SimpleOptionalitySelector
35 extends OptionalitySelector
36 {
37
38
39
40
41 public SimpleOptionalitySelector()
42 {
43 }
44
45 @Override
46 public void selectOptionality( ConflictContext context )
47 throws RepositoryException
48 {
49 boolean optional = chooseEffectiveOptionality( context.getItems() );
50 context.setOptional( optional );
51 }
52
53 private boolean chooseEffectiveOptionality( Collection<ConflictItem> items )
54 {
55 boolean optional = true;
56 for ( ConflictItem item : items )
57 {
58 if ( item.getDepth() <= 1 )
59 {
60 return item.getDependency().isOptional();
61 }
62 if ( ( item.getOptionalities() & ConflictItem.OPTIONAL_FALSE ) != 0 )
63 {
64 optional = false;
65 }
66 }
67 return optional;
68 }
69
70 }