Skip to content

Commit f7d82bb

Browse files
authored
Update dependencies and code to be compatible to RF 3.2.1 (#133)
1 parent ae09ac2 commit f7d82bb

File tree

16 files changed

+109
-143
lines changed

16 files changed

+109
-143
lines changed

pom.xml

Lines changed: 8 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -8,7 +8,7 @@
88
</parent>
99
<groupId>org.robotframework</groupId>
1010
<artifactId>swinglibrary</artifactId>
11-
<version>1.9.9</version>
11+
<version>2.0.0</version>
1212
<packaging>jar</packaging>
1313
<name>swinglibrary</name>
1414
<description>A Robot Framework test library for Swing UI testing</description>
@@ -64,7 +64,7 @@
6464
<dependency>
6565
<groupId>org.robotframework</groupId>
6666
<artifactId>javalib-core</artifactId>
67-
<version>1.2</version>
67+
<version>2.0.3</version>
6868
</dependency>
6969
<dependency>
7070
<groupId>org.jretrofit</groupId>
@@ -74,7 +74,7 @@
7474
<dependency>
7575
<groupId>commons-collections</groupId>
7676
<artifactId>commons-collections</artifactId>
77-
<version>3.2</version>
77+
<version>[3.2.2,)</version>
7878
</dependency>
7979
<dependency>
8080
<groupId>com.thoughtworks.paranamer</groupId>
@@ -120,8 +120,8 @@
120120
<artifactId>maven-compiler-plugin</artifactId>
121121
<version>2.3.2</version>
122122
<configuration>
123-
<source>1.7</source>
124-
<target>1.7</target>
123+
<source>8</source>
124+
<target>8</target>
125125
</configuration>
126126
</plugin>
127127
<plugin>
@@ -138,7 +138,7 @@
138138
<plugin>
139139
<groupId>org.robotframework</groupId>
140140
<artifactId>robotframework-maven-plugin</artifactId>
141-
<version>1.5.1</version>
141+
<version>1.7.1</version>
142142
<executions>
143143
<execution>
144144
<goals>
@@ -181,12 +181,13 @@
181181
</extraPathDirectories>
182182
<libraryOrResourceFile>SwingLibrary</libraryOrResourceFile>
183183
</libdoc>
184+
<testdoc/>
184185
</configuration>
185186
</plugin>
186187
<plugin>
187188
<groupId>org.sonatype.plugins</groupId>
188189
<artifactId>jarjar-maven-plugin</artifactId>
189-
<version>1.7</version>
190+
<version>1.9</version>
190191
<executions>
191192
<execution>
192193
<phase>package</phase>

src/main/java/com/some/own/keyword/KeywordsInOtherPackage.java

Lines changed: 3 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -14,7 +14,8 @@ public String keywordInOtherPackage(String arg) {
1414
}
1515

1616
@RobotKeyword
17-
public String keywordwithoutArgumentNames(String arg) {
18-
return arg;
17+
@ArgumentNames({"*args"})
18+
public String keywordwithoutArgumentNames(String... args) {
19+
return args[0];
1920
}
2021
}

src/main/java/org/robotframework/swing/SwingLibrary.java

Lines changed: 13 additions & 18 deletions
Original file line numberDiff line numberDiff line change
@@ -19,15 +19,17 @@
1919
import org.netbeans.jemmy.TestOut;
2020
import org.robotframework.javalib.library.AnnotationLibrary;
2121
import org.robotframework.javalib.library.KeywordDocumentationRepository;
22-
import org.robotframework.javalib.library.RobotJavaLibrary;
22+
import org.robotframework.javalib.library.RobotFrameworkDynamicAPI ;
2323
import org.robotframework.swing.keyword.timeout.TimeoutKeywords;
2424
import org.robotframework.swing.util.StandardOutOutput;
2525

2626
import java.util.ArrayList;
27+
import java.util.List;
28+
import java.util.Map;
2729
import java.util.Collection;
2830
import java.util.Collections;
2931

30-
public class SwingLibrary implements KeywordDocumentationRepository, RobotJavaLibrary {
32+
public class SwingLibrary implements KeywordDocumentationRepository, RobotFrameworkDynamicAPI {
3133
public static final String ROBOT_LIBRARY_SCOPE = "GLOBAL";
3234
public static SwingLibrary instance;
3335
private final AnnotationLibrary annotationLibrary = new AnnotationLibrary(
@@ -116,12 +118,17 @@ private void addKeywordPatterns(Collection<String> keywordPatterns) {
116118
}
117119

118120
@Override
119-
public Object runKeyword(String keywordName, Object[] args) {
120-
return annotationLibrary.runKeyword(keywordName, toStrings(args));
121+
public Object runKeyword(String keywordName, List args) {
122+
return annotationLibrary.runKeyword(keywordName, args);
121123
}
122124

123125
@Override
124-
public String[] getKeywordArguments(String keywordName) {
126+
public Object runKeyword(String keywordName, List args, Map kwargs) {
127+
return annotationLibrary.runKeyword(keywordName, args, kwargs);
128+
}
129+
130+
@Override
131+
public List<String> getKeywordArguments(String keywordName) {
125132
return annotationLibrary.getKeywordArguments(keywordName);
126133
}
127134

@@ -133,7 +140,7 @@ public String getKeywordDocumentation(String keywordName) {
133140
}
134141

135142
@Override
136-
public String[] getKeywordNames() {
143+
public List<String> getKeywordNames() {
137144
return annotationLibrary.getKeywordNames();
138145
}
139146

@@ -145,16 +152,4 @@ private void disableOutput() {
145152
TestOut out = new StandardOutOutput();
146153
JemmyProperties.setCurrentOutput(out);
147154
}
148-
149-
private Object[] toStrings(Object[] args) {
150-
Object[] newArgs = new Object[args.length];
151-
for (int i = 0; i < newArgs.length; i++) {
152-
if (args[i].getClass().isArray()) {
153-
newArgs[i] = args[i];
154-
} else {
155-
newArgs[i] = args[i].toString();
156-
}
157-
}
158-
return newArgs;
159-
}
160155
}

src/main/java/org/robotframework/swing/keyword/component/ComponentKeywords.java

Lines changed: 19 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -21,9 +21,8 @@
2121
import org.netbeans.jemmy.operators.JPopupMenuOperator;
2222
import org.robotframework.javalib.annotation.ArgumentNames;
2323
import org.robotframework.javalib.annotation.RobotKeyword;
24-
import org.robotframework.javalib.annotation.RobotKeywordOverload;
2524
import org.robotframework.javalib.annotation.RobotKeywords;
26-
import org.robotframework.javalib.reflection.ArgumentConverter;
25+
import org.robotframework.javalib.reflection.ArgumentCollector;
2726
import org.robotframework.swing.comparator.EqualsStringComparator;
2827
import org.robotframework.swing.component.ComponentOperator;
2928
import org.robotframework.swing.component.ComponentOperatorFactory;
@@ -36,6 +35,7 @@
3635
import java.awt.*;
3736
import java.awt.event.InputEvent;
3837
import java.lang.reflect.Method;
38+
import java.lang.reflect.Parameter;
3939
import java.util.*;
4040
import java.util.List;
4141

@@ -72,8 +72,8 @@ public void componentShouldExist(String identifier) {
7272
+ "| `Click On Component` | myComponent | # Double clicks with mouse button 2 on the component ... |\n"
7373
+ "| ... | 2 | RIGHT BUTTON | ALT | # ... while holding down the ALT key |\n")
7474
@ArgumentNames({ "identifier", "clickCountString=1", "buttonString=BUTTON1_MASK", "*keyModifierStrings" })
75-
public void clickOnComponent(String identifier, String[] optionalArgs) {
76-
OptionalArgsForTableCellAndComponentClicking optArgs = new OptionalArgsForTableCellAndComponentClicking(optionalArgs);
75+
public void clickOnComponent(String identifier, String clickCountString, String buttonString, String... args) {
76+
OptionalArgsForTableCellAndComponentClicking optArgs = new OptionalArgsForTableCellAndComponentClicking(clickCountString, buttonString, args);
7777
operator(identifier).clickOnComponent(
7878
optArgs.clickCount(),
7979
optArgs.button(),
@@ -204,18 +204,31 @@ private Method getMethodByNameAndArgumentCount(Class klass, String name, int arg
204204
throw new RuntimeException(String.format("Method \"%s\" with %d argument(s) doesn't exist.", name, argCount));
205205
}
206206

207+
public static List<String> getParameterNames(Method method) {
208+
Parameter[] parameters = method.getParameters();
209+
List<String> parameterNames = new ArrayList<>();
210+
211+
for (Parameter parameter : parameters) {
212+
String parameterName = parameter.getName();
213+
parameterNames.add(parameterName);
214+
}
215+
216+
return parameterNames;
217+
}
218+
207219
@RobotKeyword("Calls a method from specified component.\n\n"
208220
+ "Arguments are automatically converted if possible to type expected by the method.\n\n"
209221
+ "Example:\n"
210222
+ "| `Call Component Method` | buttonId | setToolTipText | new tooltip text |")
211223
@ArgumentNames({"identifier", "method", "*args"})
212-
public Object callComponentMethod(String identifier, String method, String[] args) {
224+
public Object callComponentMethod(String identifier, String method, String... args) {
213225
Object component = operator(identifier).getSource();
214226
Class klass = component.getClass();
215227
Method m = getMethodByNameAndArgumentCount(klass, method, args.length);
216228

217229
try {
218-
return m.invoke(component, new ArgumentConverter(m.getParameterTypes()).convertArguments(args));
230+
return m.invoke(component, new ArgumentCollector(m.getParameterTypes(), getParameterNames(m)).collectArguments(Arrays.asList(args), null).toArray());
231+
219232
} catch (Exception e) {
220233
throw new RuntimeException(e);
221234
}

src/main/java/org/robotframework/swing/keyword/concurrent/ThreadKeywords.java

Lines changed: 11 additions & 12 deletions
Original file line numberDiff line numberDiff line change
@@ -47,32 +47,32 @@ public void runKeywordInSeparateThread(final String keywordName, final Object...
4747
assertArgumentCountIsCorrect(keywordName, arguments);
4848
new Thread() {
4949
public void run() {
50-
SwingLibrary.instance.runKeyword(keywordName, arguments);
50+
SwingLibrary.instance.runKeyword(keywordName, Arrays.asList(arguments));
5151
}
5252
}.start();
5353
}
5454

5555
public String stringify(String keywordName, Object... arguments) {
5656
assertKeywordExists(keywordName);
5757
assertArgumentCountIsCorrect(keywordName, arguments);
58-
return SwingLibrary.instance.runKeyword(keywordName, arguments).toString();
58+
return SwingLibrary.instance.runKeyword(keywordName, Arrays.asList(arguments)).toString();
5959
}
6060

6161
private void assertArgumentCountIsCorrect(String keywordName, Object[] arguments) {
62-
String[] keywordArguments = SwingLibrary.instance.getKeywordArguments(normalizer.normalize(keywordName));
62+
List<String> keywordArguments = SwingLibrary.instance.getKeywordArguments(normalizer.normalize(keywordName));
6363
if (keywordArguments == null)
6464
return;
6565
if (hasVarArgs(keywordArguments)) {
66-
String errorMessage = "Expected " + (keywordArguments.length-1) + " or more but got " + arguments.length + " arguments. ";
67-
Assert.assertTrue(errorMessage, keywordArguments.length-1 <= arguments.length);
66+
String errorMessage = "Expected " + (keywordArguments.size()-1) + " or more but got " + arguments.length + " arguments. ";
67+
Assert.assertTrue(errorMessage, keywordArguments.size()-1 <= arguments.length);
6868
} else {
69-
String errorMessage = "Expected " + keywordArguments.length + " but got " + arguments.length + " arguments. ";
70-
Assert.assertEquals(errorMessage, keywordArguments.length, arguments.length);
69+
String errorMessage = "Expected " + keywordArguments.size() + " but got " + arguments.length + " arguments. ";
70+
Assert.assertEquals(errorMessage, keywordArguments.size(), arguments.length);
7171
}
7272
}
7373

74-
private boolean hasVarArgs(String[] keywordArguments) {
75-
return keywordArguments.length > 0 && keywordArguments[keywordArguments.length-1].startsWith("*");
74+
private boolean hasVarArgs(List<String> keywordArguments) {
75+
return keywordArguments.size() > 0 && keywordArguments.get(keywordArguments.size()-1).startsWith("*");
7676
}
7777

7878
private void assertKeywordExists(final String keywordName) {
@@ -83,9 +83,8 @@ private void assertKeywordExists(final String keywordName) {
8383
}
8484

8585
@SuppressWarnings("unchecked")
86-
private Collection<String> normalizeKeywordNames(String[] keywordNames) {
87-
List<String> keywordsList = Arrays.asList(keywordNames);
88-
return CollectionUtils.collect(keywordsList, new Transformer() {
86+
private Collection<String> normalizeKeywordNames(List<String> keywordNames) {
87+
return CollectionUtils.collect(keywordNames, new Transformer() {
8988
public Object transform(Object input) {
9089
return normalizer.normalize(input.toString());
9190
}

src/main/java/org/robotframework/swing/keyword/table/TableKeywords.java

Lines changed: 2 additions & 12 deletions
Original file line numberDiff line numberDiff line change
@@ -139,11 +139,6 @@ private CellValueExtractor.TextSource textExtractionSourceFromText(String text)
139139
return CellValueExtractor.TextSource.AUTO;
140140
}
141141

142-
@RobotKeywordOverload
143-
public String getTableCellValue(String identifier, String row, String columnIdentifier) {
144-
return getTableCellValue(identifier, row, columnIdentifier, "auto");
145-
}
146-
147142
@RobotKeyword("Returns selected cell's value from a table.\n\n"
148143
+ "Optional parameter ``source`` allows to override text extraction strategy. "
149144
+ "Available values are ``auto`` (default, will try to get text from cell component "
@@ -157,11 +152,6 @@ public Object getSelectedTableCellValue(String identifier, String source) {
157152
return createTableOperator(identifier).getSelectedCellValue(textSource).toString();
158153
}
159154

160-
@RobotKeywordOverload
161-
public Object getSelectedTableCellValue(String identifier) {
162-
return getSelectedTableCellValue(identifier, "auto");
163-
}
164-
165155
@RobotKeyword("Sets cell value in a table.\n\n"
166156
+ "Example:\n"
167157
+ "| `Set Table Cell Value` | 1 | 2 | New value |\n")
@@ -334,8 +324,8 @@ private JMenuItemOperator getPopupMenuItem(String identifier, String row, String
334324
+ "| `Click On Table Cell` | myTable | 1 | Header | # Single click on the cell in the second row and column with header 'Header'... |\n"
335325
+ "| ... | 1 | BUTTON1_MASK | CTRL_MASK | SHIFT_MASK | # ... while holding down the CTRL and SHIFT keys |\n")
336326
@ArgumentNames({"identifier", "row", "column", "clickCountString=1", "buttonString=BUTTON1_MASK", "*keyModifierStrings"})
337-
public void clickOnTableCell(final String identifier, final String row, final String column, final String[] optionalArgs) {
338-
OptionalArgsForTableCellAndComponentClicking optArgs = new OptionalArgsForTableCellAndComponentClicking(optionalArgs);
327+
public void clickOnTableCell(final String identifier, final String row, final String column, final String clickCountString, final String buttonString, final String... args) {
328+
OptionalArgsForTableCellAndComponentClicking optArgs = new OptionalArgsForTableCellAndComponentClicking(clickCountString, buttonString, args);
339329
createTableOperator(identifier).clickOnCell(row,
340330
column,
341331
optArgs.clickCount(),

src/main/java/org/robotframework/swing/keyword/utils/OptionalArgsForTableCellAndComponentClicking.java

Lines changed: 11 additions & 28 deletions
Original file line numberDiff line numberDiff line change
@@ -1,7 +1,6 @@
11
package org.robotframework.swing.keyword.utils;
22

3-
import org.robotframework.javalib.util.ArrayUtil;
4-
3+
import java.util.Arrays;
54
import java.util.HashMap;
65
import java.util.Map;
76

@@ -18,38 +17,22 @@ public class OptionalArgsForTableCellAndComponentClicking {
1817
put("META", "META_MASK");
1918
}};
2019

21-
private String[] optionalArgs;
20+
private final String clickCountString;
21+
private final String buttonClick;
22+
private final String[] optionalArgs;
2223

23-
public OptionalArgsForTableCellAndComponentClicking(String[] optionalArgs) {
24+
public OptionalArgsForTableCellAndComponentClicking(String clickCountString, String buttonClick, String[] optionalArgs) {
25+
this.clickCountString = clickCountString;
26+
this.buttonClick = buttonClick;
2427
this.optionalArgs = optionalArgs;
2528
}
2629

2730
public String clickCount() {
28-
if (clickCountSpecified())
29-
return getClickCount();
30-
return "1";
31-
}
32-
33-
private boolean clickCountSpecified() {
34-
return optionalArgs.length > 0;
35-
}
36-
37-
private String getClickCount() {
38-
return optionalArgs[0];
31+
return this.clickCountString;
3932
}
4033

4134
public String button() {
42-
if (buttonSpecified())
43-
return getButton();
44-
return "BUTTON1_MASK";
45-
}
46-
47-
private boolean buttonSpecified() {
48-
return optionalArgs.length > 1;
49-
}
50-
51-
private String getButton() {
52-
return keyMask(optionalArgs[1]);
35+
return keyMask(this.buttonClick);
5336
}
5437

5538
private String keyMask(String arg) {
@@ -67,11 +50,11 @@ public String[] keyModifiers() {
6750
}
6851

6952
private boolean keymodifiersSpecifiedIn() {
70-
return optionalArgs.length > 2;
53+
return optionalArgs.length > 0;
7154
}
7255

7356
private String[] getKeyModifiers() {
74-
return replaceAliasesIn(ArrayUtil.copyOfRange(optionalArgs, 2, optionalArgs.length));
57+
return replaceAliasesIn(Arrays.copyOfRange(optionalArgs, 0, optionalArgs.length));
7558
}
7659

7760
private String[] replaceAliasesIn(String[] keyModifiers) {

src/main/java/org/robotframework/swing/testapp/TestTable.java

Lines changed: 1 addition & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -21,8 +21,6 @@
2121
import javax.swing.table.TableCellRenderer;
2222
import javax.swing.table.TableColumn;
2323

24-
import org.robotframework.javalib.util.ArrayUtil;
25-
2624
@SuppressWarnings("serial")
2725
public class TestTable extends JScrollPane {
2826

@@ -155,7 +153,7 @@ private static class MyTabeModel extends DefaultTableModel {
155153
public MyTabeModel(Object[][] data) {
156154
this.data = data;
157155
for (Object[] datarow : data)
158-
addColumn(datarow[0], ArrayUtil.copyOfRange(datarow, 1, datarow.length));
156+
addColumn(datarow[0], Arrays.copyOfRange(datarow, 1, datarow.length));
159157
}
160158

161159
public Class<?> getColumnClass(int col) {

src/main/java/org/robotframework/swing/testapp/TestTreeResults.java

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -9,6 +9,7 @@ public class TestTreeResults {
99
public static List<String> nodes = new ArrayList<String>();
1010
public static int clickCount;
1111
public static void saveNodes(TreePath[] selectionPaths) {
12+
nodes.clear();
1213
for (TreePath treePath : selectionPaths) {
1314
nodes.add(treePath.getLastPathComponent().toString().toLowerCase());
1415
}

0 commit comments

Comments
 (0)