1 package org.apache.maven.plugins.invoker;
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27 class Selector
28 {
29 static final int SELECTOR_MAVENVERSION = 1;
30
31 static final int SELECTOR_JREVERSION = 2;
32
33 static final int SELECTOR_OSFAMILY = 4;
34
35 static final int SELECTOR_MULTI = 8;
36
37 private final String actualMavenVersion;
38
39 private final String actualJavaVersion;
40
41 public Selector( String actualMavenVersion, String actualJavaVersion )
42 {
43 this.actualMavenVersion = actualMavenVersion;
44 this.actualJavaVersion = actualJavaVersion;
45 }
46
47 public int getSelection( InvokerProperties invokerProperties )
48 {
49 if ( !invokerProperties.isSelectorDefined( 1 ) )
50 {
51 return getGlobal( invokerProperties );
52 }
53
54 for ( int selectorIndex = 1;; selectorIndex++ )
55 {
56 if ( selectorIndex > 1 && !invokerProperties.isSelectorDefined( selectorIndex ) )
57 {
58 break;
59 }
60
61 int selection = 0;
62 if ( !SelectorUtils.isMavenVersion( invokerProperties.getMavenVersion( selectorIndex ),
63 actualMavenVersion ) )
64 {
65 selection |= SELECTOR_MAVENVERSION;
66 }
67
68 if ( !SelectorUtils.isJreVersion( invokerProperties.getJreVersion( selectorIndex ), actualJavaVersion ) )
69 {
70 selection |= SELECTOR_JREVERSION;
71 }
72
73 if ( !SelectorUtils.isOsFamily( invokerProperties.getOsFamily( selectorIndex ) ) )
74 {
75 selection |= SELECTOR_OSFAMILY;
76 }
77
78 if ( selection == 0 )
79 {
80 return 0;
81 }
82 }
83 return SELECTOR_MULTI;
84 }
85
86
87
88
89
90
91
92
93 private int getGlobal( InvokerProperties invokerProperties )
94 {
95 int selection = 0;
96 if ( !SelectorUtils.isMavenVersion( invokerProperties.getMavenVersion(), actualMavenVersion ) )
97 {
98 selection |= SELECTOR_MAVENVERSION;
99 }
100
101 if ( !SelectorUtils.isJreVersion( invokerProperties.getJreVersion(), actualJavaVersion.toString() ) )
102 {
103 selection |= SELECTOR_JREVERSION;
104 }
105
106 if ( !SelectorUtils.isOsFamily( invokerProperties.getOsFamily() ) )
107 {
108 selection |= SELECTOR_OSFAMILY;
109 }
110
111 return selection;
112 }
113 }