@@ -86,7 +86,7 @@ public List<String> getStyleClasses() {
86
86
}
87
87
88
88
/**
89
- * Gets the {@code Set} of {@code StyleClass}es of the {@code Selector}.
89
+ * Gets the immutable {@code Set} of {@code StyleClass}es of the {@code Selector}.
90
90
* @return the {@code Set} of {@code StyleClass}es
91
91
*/
92
92
public Set <StyleClass > getStyleClassSet () {
@@ -96,9 +96,9 @@ public Set<StyleClass> getStyleClassSet() {
96
96
/**
97
97
* styleClasses converted to a set of bit masks
98
98
*/
99
- final private StyleClassSet styleClassSet ;
99
+ private final Set < StyleClass > styleClassSet ;
100
100
101
- final private String id ;
101
+ private final String id ;
102
102
103
103
/**
104
104
* Gets the value of the selector id.
@@ -108,35 +108,13 @@ public String getId() {
108
108
return id ;
109
109
}
110
110
111
- // a mask of bits corresponding to the pseudoclasses
112
- final private PseudoClassState pseudoClassState ;
111
+ // a mask of bits corresponding to the pseudoclasses (immutable)
112
+ private final Set < PseudoClass > pseudoClassState ;
113
113
114
114
Set <PseudoClass > getPseudoClassStates () {
115
115
return pseudoClassState ;
116
116
}
117
117
118
- /**
119
- * Gets an immutable list of {@code String}s of pseudo classes of the {@code Selector}
120
- * @return an immutable list of {@code String}s
121
- */
122
- List <String > getPseudoclasses () {
123
-
124
- final List <String > names = new ArrayList <>();
125
-
126
- Iterator <PseudoClass > iter = pseudoClassState .iterator ();
127
- while (iter .hasNext ()) {
128
- names .add (iter .next ().getPseudoClassName ());
129
- }
130
-
131
- if (nodeOrientation == RIGHT_TO_LEFT ) {
132
- names .add ("dir(rtl)" );
133
- } else if (nodeOrientation == LEFT_TO_RIGHT ) {
134
- names .add ("dir(ltr)" );
135
- }
136
-
137
- return Collections .unmodifiableList (names );
138
- }
139
-
140
118
// true if name is not a wildcard
141
119
final private boolean matchOnName ;
142
120
@@ -168,41 +146,42 @@ public NodeOrientation getNodeOrientation() {
168
146
// then match needs to check name
169
147
this .matchOnName = (name != null && !("" .equals (name )) && !("*" .equals (name )));
170
148
171
- this . styleClassSet = new StyleClassSet ();
149
+ Set < StyleClass > scs = new StyleClassSet ();
172
150
173
- int nMax = styleClasses != null ? styleClasses . size () : 0 ;
174
- for (int n = 0 ; n < nMax ; n ++) {
151
+ if ( styleClasses != null ) {
152
+ for (int n = 0 ; n < styleClasses . size () ; n ++) {
175
153
176
- final String styleClassName = styleClasses .get (n );
177
- if (styleClassName == null || styleClassName .isEmpty ()) continue ;
154
+ final String styleClassName = styleClasses .get (n );
155
+ if (styleClassName == null || styleClassName .isEmpty ()) continue ;
178
156
179
- final StyleClass styleClass = StyleClassSet .getStyleClass (styleClassName );
180
- this . styleClassSet . add ( styleClass );
157
+ scs . add ( StyleClassSet .getStyleClass (styleClassName ) );
158
+ }
181
159
}
182
160
161
+ this .styleClassSet = Collections .unmodifiableSet (scs );
183
162
this .matchOnStyleClass = (this .styleClassSet .size () > 0 );
184
163
185
- this .pseudoClassState = new PseudoClassState ();
164
+ PseudoClassState pcs = new PseudoClassState ();
165
+ NodeOrientation dir = NodeOrientation .INHERIT ;
186
166
187
- nMax = pseudoClasses != null ? pseudoClasses .size () : 0 ;
167
+ if (pseudoClasses != null ) {
168
+ for (int n = 0 ; n < pseudoClasses .size (); n ++) {
188
169
189
- NodeOrientation dir = NodeOrientation . INHERIT ;
190
- for ( int n = 0 ; n < nMax ; n ++) {
170
+ final String pclass = pseudoClasses . get ( n ) ;
171
+ if ( pclass == null || pclass . isEmpty ()) continue ;
191
172
192
- final String pclass = pseudoClasses .get (n );
193
- if (pclass == null || pclass .isEmpty ()) continue ;
173
+ // TODO: This is not how we should handle functional pseudo-classes in the long-run!
174
+ if ("dir(" .regionMatches (true , 0 , pclass , 0 , 4 )) {
175
+ final boolean rtl = "dir(rtl)" .equalsIgnoreCase (pclass );
176
+ dir = rtl ? RIGHT_TO_LEFT : LEFT_TO_RIGHT ;
177
+ continue ;
178
+ }
194
179
195
- // TODO: This is not how we should handle functional pseudo-classes in the long-run!
196
- if ("dir(" .regionMatches (true , 0 , pclass , 0 , 4 )) {
197
- final boolean rtl = "dir(rtl)" .equalsIgnoreCase (pclass );
198
- dir = rtl ? RIGHT_TO_LEFT : LEFT_TO_RIGHT ;
199
- continue ;
180
+ pcs .add (PseudoClassState .getPseudoClass (pclass ));
200
181
}
201
-
202
- final PseudoClass pseudoClass = PseudoClassState .getPseudoClass (pclass );
203
- this .pseudoClassState .add (pseudoClass );
204
182
}
205
183
184
+ this .pseudoClassState = Collections .unmodifiableSet (pcs );
206
185
this .nodeOrientation = dir ;
207
186
this .id = id == null ? "" : id ;
208
187
// if id is not null and not empty, then match needs to check id
0 commit comments