1 package org.eclipse.aether.internal.test.util;
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22 import static java.util.Objects.requireNonNull;
23
24 import org.eclipse.aether.version.Version;
25 import org.eclipse.aether.version.VersionConstraint;
26 import org.eclipse.aether.version.VersionRange;
27
28
29
30
31 final class TestVersionConstraint
32 implements VersionConstraint
33 {
34
35 private final VersionRange range;
36
37 private final Version version;
38
39
40
41
42
43
44 public TestVersionConstraint( VersionRange range )
45 {
46 this.range = requireNonNull( range, "version range cannot be null" );
47 this.version = null;
48 }
49
50
51
52
53
54
55 public TestVersionConstraint( Version version )
56 {
57 this.version = requireNonNull( version, "version cannot be null" );
58 this.range = null;
59 }
60
61 public VersionRange getRange()
62 {
63 return range;
64 }
65
66 public Version getVersion()
67 {
68 return version;
69 }
70
71 public boolean containsVersion( Version version )
72 {
73 if ( range == null )
74 {
75 return version.equals( this.version );
76 }
77 else
78 {
79 return range.containsVersion( version );
80 }
81 }
82
83 @Override
84 public String toString()
85 {
86 return String.valueOf( ( range == null ) ? version : range );
87 }
88
89 @Override
90 public boolean equals( Object obj )
91 {
92 if ( this == obj )
93 {
94 return true;
95 }
96 if ( obj == null || !getClass().equals( obj.getClass() ) )
97 {
98 return false;
99 }
100
101 TestVersionConstraint that = (TestVersionConstraint) obj;
102
103 return eq( range, that.range ) && eq( version, that.getVersion() );
104 }
105
106 private static <T> boolean eq( T s1, T s2 )
107 {
108 return s1 != null ? s1.equals( s2 ) : s2 == null;
109 }
110
111 @Override
112 public int hashCode()
113 {
114 int hash = 17;
115 hash = hash * 31 + hash( getRange() );
116 hash = hash * 31 + hash( getVersion() );
117 return hash;
118 }
119
120 private static int hash( Object obj )
121 {
122 return obj != null ? obj.hashCode() : 0;
123 }
124
125 }