Skip to content

Commit c4a89bc

Browse files
committed
% selectorlistimpl is no a real list
1 parent 1e79752 commit c4a89bc

File tree

5 files changed

+176
-91
lines changed

5 files changed

+176
-91
lines changed

src/main/java/com/gargoylesoftware/css/parser/selector/SelectorList.java

Lines changed: 3 additions & 12 deletions
Original file line numberDiff line numberDiff line change
@@ -14,24 +14,15 @@
1414
*/
1515
package com.gargoylesoftware.css.parser.selector;
1616

17+
import java.util.List;
18+
1719
/**
1820
* The SelectorList interface provides the abstraction of an ordered collection
1921
* of selectors, without defining or constraining how this collection is
2022
* implemented.
2123
*
2224
* @author Ronald Brill
2325
*/
24-
public interface SelectorList {
25-
26-
/**
27-
* Returns the length of this selector list
28-
*/
29-
int getLength();
30-
31-
/**
32-
* Returns the selector at the specified index, or <code>null</code> if this
33-
* is not a valid index.
34-
*/
35-
Selector item(int index);
26+
public interface SelectorList extends List<Selector> {
3627
}
3728

src/main/java/com/gargoylesoftware/css/parser/selector/SelectorListImpl.java

Lines changed: 112 additions & 18 deletions
Original file line numberDiff line numberDiff line change
@@ -16,7 +16,11 @@
1616

1717
import java.io.Serializable;
1818
import java.util.ArrayList;
19+
import java.util.Collection;
20+
import java.util.Iterator;
1921
import java.util.List;
22+
import java.util.ListIterator;
23+
import java.util.stream.Collectors;
2024

2125
import com.gargoylesoftware.css.parser.AbstractLocatable;
2226

@@ -27,41 +31,131 @@
2731
*/
2832
public class SelectorListImpl extends AbstractLocatable implements SelectorList, Serializable {
2933

30-
private List<Selector> selectors_ = new ArrayList<Selector>(10);
34+
private List<Selector> selectors_ = new ArrayList<Selector>();
3135

3236
public List<Selector> getSelectors() {
3337
return selectors_;
3438
}
3539

36-
public void setSelectors(final List<Selector> selectors) {
37-
selectors_ = selectors;
40+
@Override
41+
public String toString() {
42+
return selectors_.stream()
43+
.map(n -> n.toString())
44+
.collect(Collectors.joining(", "));
3845
}
3946

4047
@Override
41-
public int getLength() {
48+
public int size() {
4249
return selectors_.size();
4350
}
4451

4552
@Override
46-
public Selector item(final int index) {
53+
public boolean isEmpty() {
54+
return selectors_.isEmpty();
55+
}
56+
57+
@Override
58+
public boolean contains(final Object o) {
59+
return selectors_.contains(o);
60+
}
61+
62+
@Override
63+
public Iterator<Selector> iterator() {
64+
return selectors_.iterator();
65+
}
66+
67+
@Override
68+
public Object[] toArray() {
69+
return selectors_.toArray();
70+
}
71+
72+
@Override
73+
public <T> T[] toArray(final T[] a) {
74+
return selectors_.toArray(a);
75+
}
76+
77+
@Override
78+
public boolean add(final Selector e) {
79+
return selectors_.add(e);
80+
}
81+
82+
@Override
83+
public boolean remove(final Object o) {
84+
return selectors_.remove(o);
85+
}
86+
87+
@Override
88+
public boolean containsAll(final Collection<?> c) {
89+
return selectors_.containsAll(c);
90+
}
91+
92+
@Override
93+
public boolean addAll(final Collection<? extends Selector> c) {
94+
return selectors_.addAll(c);
95+
}
96+
97+
@Override
98+
public boolean addAll(final int index, final Collection<? extends Selector> c) {
99+
return selectors_.addAll(index, c);
100+
}
101+
102+
@Override
103+
public boolean removeAll(final Collection<?> c) {
104+
return selectors_.removeAll(c);
105+
}
106+
107+
@Override
108+
public boolean retainAll(final Collection<?> c) {
109+
return selectors_.retainAll(c);
110+
}
111+
112+
@Override
113+
public void clear() {
114+
selectors_.clear();
115+
}
116+
117+
@Override
118+
public Selector get(final int index) {
47119
return selectors_.get(index);
48120
}
49121

50-
public void add(final Selector sel) {
51-
selectors_.add(sel);
122+
@Override
123+
public Selector set(final int index, final Selector element) {
124+
return selectors_.set(index, element);
52125
}
53126

54127
@Override
55-
public String toString() {
56-
final int len = getLength();
57-
58-
final StringBuilder sb = new StringBuilder();
59-
for (int i = 0; i < len; i++) {
60-
sb.append(item(i).toString());
61-
if (i < len - 1) {
62-
sb.append(", ");
63-
}
64-
}
65-
return sb.toString();
128+
public void add(final int index, final Selector element) {
129+
selectors_.add(index, element);
130+
}
131+
132+
@Override
133+
public Selector remove(final int index) {
134+
return selectors_.remove(index);
135+
}
136+
137+
@Override
138+
public int indexOf(final Object o) {
139+
return selectors_.indexOf(o);
140+
}
141+
142+
@Override
143+
public int lastIndexOf(final Object o) {
144+
return selectors_.lastIndexOf(o);
145+
}
146+
147+
@Override
148+
public ListIterator<Selector> listIterator() {
149+
return selectors_.listIterator();
150+
}
151+
152+
@Override
153+
public ListIterator<Selector> listIterator(final int index) {
154+
return selectors_.listIterator(index);
155+
}
156+
157+
@Override
158+
public List<Selector> subList(final int fromIndex, final int toIndex) {
159+
return selectors_.subList(fromIndex, toIndex);
66160
}
67161
}

src/test/java/com/gargoylesoftware/css/parser/AbstractCSSParserTest.java

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -136,7 +136,7 @@ protected SelectorList createSelectors(final String cssText) throws Exception {
136136

137137
protected List<Condition> createConditions(final String cssText) throws Exception {
138138
final SelectorList selectors = createSelectors(cssText);
139-
final Selector selector = selectors.item(0);
139+
final Selector selector = selectors.get(0);
140140
final ElementSelector elementSelector = (ElementSelector) selector;
141141
return elementSelector.getConditions();
142142
}
@@ -212,12 +212,12 @@ protected void conditionAssert(final String cssText, final String name,
212212

213213
protected void selectorList(final String cssText, final int length) throws Exception {
214214
final SelectorList selectors = createSelectors(cssText);
215-
Assert.assertEquals(length, selectors.getLength());
215+
Assert.assertEquals(length, selectors.size());
216216
}
217217

218218
protected void selectorType(final String cssText, final SelectorType... selectorTypes) throws Exception {
219219
final SelectorList selectors = createSelectors(cssText);
220-
final Selector selector = selectors.item(0);
220+
final Selector selector = selectors.get(0);
221221
Assert.assertEquals(selectorTypes[0], selector.getSelectorType());
222222
if (selectorTypes[0] == SelectorType.DESCENDANT_SELECTOR) {
223223
final DescendantSelector descendantSelector = (DescendantSelector) selector;

0 commit comments

Comments
 (0)