20
20
import java .io .Serializable ;
21
21
import java .io .StringReader ;
22
22
import java .util .ArrayList ;
23
+ import java .util .Collections ;
23
24
import java .util .HashMap ;
24
25
import java .util .Iterator ;
25
26
import java .util .LinkedList ;
@@ -372,25 +373,42 @@ public CSSStyleRuleImpl getRule() {
372
373
373
374
public static class CSSStyleSheetRuleIndex {
374
375
376
+ private static final class SelectorIndex {
377
+
378
+ private final Map <String , List <SelectorEntry >> keyToSelectors = new HashMap <>();
379
+
380
+ void add (final String key , final SelectorEntry selector ) {
381
+ List <SelectorEntry > entry = keyToSelectors .get (key );
382
+ if (entry == null ) {
383
+ entry = new ArrayList <SelectorEntry >();
384
+ keyToSelectors .put (key , entry );
385
+ }
386
+ entry .add (selector );
387
+ }
388
+
389
+ List <SelectorEntry > get (final String key ) {
390
+ List <SelectorEntry > entry = keyToSelectors .get (key );
391
+ if (entry == null ) {
392
+ return Collections .emptyList ();
393
+ }
394
+ return entry ;
395
+ }
396
+ }
397
+
398
+
375
399
private static final MediaList DEFAULT_MEDIA_LIST = new MediaListImpl (null );
376
400
377
401
private final List <CSSStyleSheetRuleIndex > children_ = new ArrayList <>();
378
402
379
403
private MediaList mediaList_ = DEFAULT_MEDIA_LIST ;
380
- private final Map < String , List < SelectorEntry >> elementSelectors_ = new HashMap <> ();
381
- private final Map < String , List < SelectorEntry >> classSelectors_ = new HashMap <> ();
404
+ private final SelectorIndex elementSelectors_ = new SelectorIndex ();
405
+ private final SelectorIndex classSelectors_ = new SelectorIndex ();
382
406
private final List <SelectorEntry > otherSelectors_ = new ArrayList <>();
383
407
384
408
public void addElementSelector (final ElementSelector elementSelector ,
385
409
final Selector s , final CSSStyleRuleImpl styleRule ) {
386
410
final String elementName = elementSelector .getLocalNameLowerCase ();
387
- List <SelectorEntry > entries = elementSelectors_ .get (elementName );
388
- if (entries == null ) {
389
- entries = new ArrayList <SelectorEntry >();
390
- elementSelectors_ .put (elementName , entries );
391
- }
392
- final SelectorEntry selectorEntry = new SelectorEntry (s , styleRule );
393
- entries .add (selectorEntry );
411
+ elementSelectors_ .add (elementName , new SelectorEntry (s , styleRule ));
394
412
}
395
413
396
414
public void addClassSelector (final ElementSelector elementSelector , final String className ,
@@ -403,13 +421,7 @@ public void addClassSelector(final ElementSelector elementSelector, final String
403
421
else {
404
422
key = elementName + "." + className ;
405
423
}
406
- List <SelectorEntry > entries = classSelectors_ .get (key );
407
- if (entries == null ) {
408
- entries = new ArrayList <SelectorEntry >();
409
- classSelectors_ .put (key , entries );
410
- }
411
- final SelectorEntry selectorEntry = new SelectorEntry (s , styleRule );
412
- entries .add (selectorEntry );
424
+ classSelectors_ .add (key , new SelectorEntry (s , styleRule ));
413
425
}
414
426
415
427
public void addOtherSelector (final Selector s , final CSSStyleRuleImpl styleRule ) {
@@ -449,29 +461,32 @@ static final class SelectorEntriesIterator implements Iterator<SelectorEntry> {
449
461
private LinkedList <Iterator <SelectorEntry >> iterators_ ;
450
462
451
463
SelectorEntriesIterator (final CSSStyleSheetRuleIndex index ,
452
- final String elementName , final String [] classes ) {
464
+ final String elementName ,
465
+ final String [] classes ) {
466
+
453
467
iterators_ = new LinkedList <Iterator <SelectorEntry >>();
454
468
455
- List <SelectorEntry > sel = index .elementSelectors_ .get (null );
456
- if (sel != null && ! sel .isEmpty ()) {
457
- iterators_ .add (sel .iterator ());
469
+ List <SelectorEntry > selectors = index .elementSelectors_ .get (null );
470
+ if (! selectors .isEmpty ()) {
471
+ iterators_ .add (selectors .iterator ());
458
472
}
459
- sel = index .elementSelectors_ .get (elementName );
460
- if (sel != null && !sel .isEmpty ()) {
461
- iterators_ .add (sel .iterator ());
473
+
474
+ selectors = index .elementSelectors_ .get (elementName );
475
+ if (!selectors .isEmpty ()) {
476
+ iterators_ .add (selectors .iterator ());
462
477
}
463
478
464
479
if (classes != null ) {
465
480
for (String clazz : classes ) {
466
- sel = index .classSelectors_ .get ("." + clazz );
467
- if (sel != null && !sel .isEmpty ()) {
468
- iterators_ .add (sel .iterator ());
481
+ selectors = index .classSelectors_ .get ("." + clazz );
482
+ if (selectors != null && !selectors .isEmpty ()) {
483
+ iterators_ .add (selectors .iterator ());
469
484
}
470
485
471
486
if (elementName != null ) {
472
- sel = index .classSelectors_ .get (elementName + "." + clazz );
473
- if (sel != null && !sel .isEmpty ()) {
474
- iterators_ .add (sel .iterator ());
487
+ selectors = index .classSelectors_ .get (elementName + "." + clazz );
488
+ if (selectors != null && !selectors .isEmpty ()) {
489
+ iterators_ .add (selectors .iterator ());
475
490
}
476
491
}
477
492
}
0 commit comments