Skip to content

Commit ab8d4a2

Browse files
authored
Add new implementation of base Screen (#22)
* Add new implementation of base Screen * Add javadoc to ScreenPlatform annotation * Rename annotation ScreenPlatform to ScreenType
1 parent 897eb21 commit ab8d4a2

26 files changed

+119
-184
lines changed

src/main/java/aquality/appium/mobile/application/AqualityServices.java

Lines changed: 1 addition & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -5,7 +5,6 @@
55
import aquality.appium.mobile.configuration.ILocalServiceSettings;
66
import aquality.appium.mobile.elements.interfaces.IElementFactory;
77
import aquality.appium.mobile.screens.screenfactory.IScreenFactory;
8-
import aquality.appium.mobile.screens.screenfactory.IScreenFactoryProvider;
98
import aquality.selenium.core.localization.ILocalizedLogger;
109
import aquality.selenium.core.logging.Logger;
1110
import aquality.selenium.core.waitings.IConditionalWait;
@@ -162,7 +161,7 @@ public static IElementFactory getElementFactory() {
162161
* @return Factory of screens.
163162
*/
164163
public static IScreenFactory getScreenFactory() {
165-
return get(IScreenFactoryProvider.class).getScreenFactory();
164+
return get(IScreenFactory.class);
166165
}
167166

168167
/**

src/main/java/aquality/appium/mobile/application/MobileModule.java

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -6,7 +6,7 @@
66
import aquality.appium.mobile.configuration.ILocalServiceSettings;
77
import aquality.appium.mobile.elements.IElementsModule;
88
import aquality.appium.mobile.elements.interfaces.IElementFactory;
9-
import aquality.appium.mobile.screens.screenfactory.IScreenFactoryProvider;
9+
import aquality.appium.mobile.screens.screenfactory.IScreenFactory;
1010
import aquality.appium.mobile.screens.screenfactory.IScreensModule;
1111
import aquality.selenium.core.applications.AqualityModule;
1212
import com.google.inject.Provider;
@@ -25,6 +25,6 @@ protected void configure() {
2525
bind(ILocalServiceSettings.class).to(getLocalServiceSettingsImplementation()).in(Singleton.class);
2626
bind(IConfiguration.class).to(getConfigurationImplementation());
2727
bind(IElementFactory.class).to(getElementFactoryImplementation());
28-
bind(IScreenFactoryProvider.class).to(getScreenFactoryProviderImplementation());
28+
bind(IScreenFactory.class).to(getScreenFactoryImplementation());
2929
}
3030
}

src/main/java/aquality/appium/mobile/elements/ElementType.java

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -11,12 +11,13 @@ public enum ElementType {
1111
RADIOBUTTON(IRadioButton.class),
1212
TEXTBOX(ITextBox.class);
1313

14-
private Class<? extends IElement> clazz;
14+
private final Class<? extends IElement> clazz;
1515

1616
<T extends IElement> ElementType(Class<T> clazz){
1717
this.clazz = clazz;
1818
}
1919

20+
@SuppressWarnings("unchecked")
2021
public <T extends IElement> Class<T> getClazz() {
2122
return (Class<T>) clazz;
2223
}

src/main/java/aquality/appium/mobile/screens/AndroidScreen.java

Lines changed: 0 additions & 33 deletions
This file was deleted.

src/main/java/aquality/appium/mobile/screens/IOSScreen.java

Lines changed: 0 additions & 24 deletions
This file was deleted.
Lines changed: 5 additions & 25 deletions
Original file line numberDiff line numberDiff line change
@@ -1,16 +1,13 @@
11
package aquality.appium.mobile.screens;
22

33
import aquality.appium.mobile.application.AqualityServices;
4-
import aquality.appium.mobile.application.PlatformName;
54
import aquality.appium.mobile.elements.interfaces.IElementFactory;
65
import aquality.appium.mobile.elements.interfaces.ILabel;
76
import aquality.selenium.core.elements.interfaces.IElementStateProvider;
8-
import io.appium.java_client.AppiumDriver;
97
import org.openqa.selenium.By;
108
import org.openqa.selenium.Dimension;
11-
import org.openqa.selenium.InvalidArgumentException;
129

13-
public abstract class Screen<T extends AppiumDriver> implements IScreen {
10+
public abstract class Screen implements IScreen {
1411

1512
private final By locator;
1613
private final String name;
@@ -25,27 +22,6 @@ protected Screen(By locator, String name) {
2522
this.screenLabel = getElementFactory().getLabel(locator, name);
2623
}
2724

28-
protected IElementFactory getElementFactory(){
29-
return AqualityServices.getElementFactory();
30-
}
31-
32-
@SuppressWarnings("unchecked")
33-
protected T getDriver() {
34-
ensureApplicationPlatformCorrect(getPlatform());
35-
return (T) AqualityServices.getApplication().getDriver();
36-
}
37-
38-
protected abstract PlatformName getPlatform();
39-
40-
private void ensureApplicationPlatformCorrect(PlatformName targetPlatform) {
41-
PlatformName currentPlatform = AqualityServices.getApplication().getPlatformName();
42-
if (targetPlatform != currentPlatform) {
43-
throw new InvalidArgumentException(String.format(
44-
"Cannot perform this operation. Current platform %s don't match to target %s",
45-
currentPlatform, targetPlatform));
46-
}
47-
}
48-
4925
public By getLocator() {
5026
return locator;
5127
}
@@ -61,4 +37,8 @@ public Dimension getSize() {
6137
public IElementStateProvider state() {
6238
return screenLabel.state();
6339
}
40+
41+
protected IElementFactory getElementFactory(){
42+
return AqualityServices.getElementFactory();
43+
}
6444
}

src/main/java/aquality/appium/mobile/screens/screenfactory/AndroidScreenFactory.java

Lines changed: 0 additions & 11 deletions
This file was deleted.

src/main/java/aquality/appium/mobile/screens/screenfactory/IOSScreenFactory.java

Lines changed: 0 additions & 11 deletions
This file was deleted.

src/main/java/aquality/appium/mobile/screens/screenfactory/IScreenFactoryProvider.java

Lines changed: 0 additions & 9 deletions
This file was deleted.

src/main/java/aquality/appium/mobile/screens/screenfactory/IScreensModule.java

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -6,9 +6,9 @@
66
public interface IScreensModule {
77

88
/**
9-
* @return class which implements {@link IScreenFactoryProvider}
9+
* @return class which implements {@link IScreenFactory}
1010
*/
11-
default Class<? extends IScreenFactoryProvider> getScreenFactoryProviderImplementation() {
12-
return ScreenFactoryProvider.class;
11+
default Class<? extends IScreenFactory> getScreenFactoryImplementation() {
12+
return ScreenFactory.class;
1313
}
1414
}

0 commit comments

Comments
 (0)