1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19 package io.earcam.instrumental.module.jpms;
20
21 import static io.earcam.instrumental.module.jpms.ExportModifier.MANDATED;
22
23 import java.io.Serializable;
24 import java.util.Arrays;
25 import java.util.Objects;
26 import java.util.Set;
27
28 import javax.annotation.concurrent.Immutable;
29
30
31
32
33
34
35
36 @Immutable
37 public class Export implements Serializable {
38
39 private static final long serialVersionUID = -4919749651818958350L;
40 private static final transient String[] NO_MODULES = new String[0];
41 private final String paquet;
42 private final int access;
43 private final String[] modules;
44
45
46
47
48
49
50
51
52
53
54 public Export(String paquet, String... modules)
55 {
56 this(paquet, MANDATED.access(), modules);
57 }
58
59
60
61
62
63
64
65
66
67
68
69 public Export(String paquet, int access, String... modules)
70 {
71 this.paquet = paquet;
72 this.access = access;
73 this.modules = (modules == null) ? NO_MODULES : Arrays.copyOf(modules, modules.length);
74 }
75
76
77 @Override
78 public boolean equals(Object other)
79 {
80 return other instanceof Export && equals((Export) other);
81 }
82
83
84
85
86
87
88
89
90
91
92 public boolean equals(Export that)
93 {
94 return that != null
95 && Objects.equals(that.paquet(), paquet)
96 && that.access() == access
97 && Arrays.equals(that.modules(), modules);
98 }
99
100
101 @Override
102 public int hashCode()
103 {
104 return Objects.hash(paquet, access, Arrays.hashCode(modules));
105 }
106
107
108
109
110
111
112
113
114
115 public String paquet()
116 {
117 return paquet;
118 }
119
120
121
122
123
124
125
126
127
128 public int access()
129 {
130 return access;
131 }
132
133
134
135
136
137
138
139
140
141 public Set<ExportModifier> modifiers()
142 {
143 return Access.modifiers(ExportModifier.class, access());
144 }
145
146
147
148
149
150
151
152
153
154 public String[] modules()
155 {
156 return modules;
157 }
158 }