Skip to content

Commit 6acb09f

Browse files
Merge pull request appium#377 from TikhomirovSergey/SrinivasanTarget-defect_fix
Srinivasan target defect fix
2 parents b9053d5 + 08d85c4 commit 6acb09f

2 files changed

Lines changed: 106 additions & 3 deletions

File tree

src/main/java/io/appium/java_client/pagefactory/AppiumFieldDecorator.java

Lines changed: 7 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -184,7 +184,7 @@ private Object decorateWidget(Field field) {
184184
return null;
185185
}
186186

187-
Class<? extends Widget> widgetType;
187+
Class<? extends Widget> widgetType = null;
188188
boolean isAlist = false;
189189
if (List.class.isAssignableFrom(type)) {
190190
isAlist = true;
@@ -199,11 +199,15 @@ private Object decorateWidget(Field field) {
199199
listType = ((ParameterizedType) listType).getRawType();
200200
}
201201

202-
if (!Widget.class.isAssignableFrom((Class) listType)) {
202+
if (listType instanceof Class) {
203+
if (!Widget.class.isAssignableFrom((Class) listType)) {
204+
return null;
205+
}
206+
widgetType = Class.class.cast(listType);
207+
} else {
203208
return null;
204209
}
205210

206-
widgetType = Class.class.cast(listType);
207211
} else {
208212
widgetType = (Class<? extends Widget>) field.getType();
209213
}
Lines changed: 99 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,99 @@
1+
package io.appium.java_client.pagefactory_tests;
2+
3+
4+
import io.appium.java_client.pagefactory.AppiumFieldDecorator;
5+
import org.junit.Test;
6+
import org.openqa.selenium.By;
7+
import org.openqa.selenium.WebDriver;
8+
import org.openqa.selenium.WebElement;
9+
import org.openqa.selenium.support.PageFactory;
10+
11+
import java.util.List;
12+
import java.util.Set;
13+
14+
public class GenericTest {
15+
16+
static class TempGenericPage<T> {
17+
18+
public List<T> items;
19+
20+
public List<T> getItems() {
21+
return items;
22+
}
23+
}
24+
25+
static class MockWebDriver implements WebDriver {
26+
27+
@Override
28+
public void get(String url) {
29+
30+
}
31+
32+
@Override
33+
public String getCurrentUrl() {
34+
return null;
35+
}
36+
37+
@Override
38+
public String getTitle() {
39+
return null;
40+
}
41+
42+
@Override
43+
public List<WebElement> findElements(By by) {
44+
return null;
45+
}
46+
47+
@Override
48+
public WebElement findElement(By by) {
49+
return null;
50+
}
51+
52+
@Override
53+
public String getPageSource() {
54+
return null;
55+
}
56+
57+
@Override
58+
public void close() {
59+
60+
}
61+
62+
@Override
63+
public void quit() {
64+
65+
}
66+
67+
@Override
68+
public Set<String> getWindowHandles() {
69+
return null;
70+
}
71+
72+
@Override
73+
public String getWindowHandle() {
74+
return null;
75+
}
76+
77+
@Override
78+
public TargetLocator switchTo() {
79+
return null;
80+
}
81+
82+
@Override
83+
public Navigation navigate() {
84+
return null;
85+
}
86+
87+
@Override
88+
public Options manage() {
89+
return null;
90+
}
91+
}
92+
93+
@Test
94+
public void genericTestCse() {
95+
PageFactory
96+
.initElements(new AppiumFieldDecorator(new MockWebDriver()),
97+
new TempGenericPage<>());
98+
}
99+
}

0 commit comments

Comments
 (0)