Skip to content

Commit 927e317

Browse files
committed
Use thread to get the context tree
1 parent 328615e commit 927e317

3 files changed

Lines changed: 34 additions & 4 deletions

File tree

Lines changed: 23 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,23 @@
1+
import queue
2+
import threading
3+
4+
from JABWrapper.context_tree import ContextTree
5+
from JABWrapper.jab_wrapper import JavaAccessBridgeWrapper
6+
7+
8+
class ContextTreeThread(threading.Thread):
9+
"""
10+
Building the ContextTree in a big java application may take several minutes.
11+
"""
12+
13+
def __init__(self, jab_wrapper: JavaAccessBridgeWrapper):
14+
super().__init__()
15+
self._queue = queue.Queue()
16+
self._jab_wrapper = jab_wrapper
17+
18+
def run(self) -> None:
19+
context_tree = ContextTree(self._jab_wrapper)
20+
self._queue.put(context_tree)
21+
22+
def get_context_tree(self) -> ContextTree:
23+
return self._queue.get()

robocorp-code/src/robocorp_code/inspector/java/robocorp_java/_event_pump.py

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -17,7 +17,7 @@
1717
REMOVE_FROM_QUEUE = 0x0001
1818

1919

20-
class _EventPumpThread(threading.Thread):
20+
class EventPumpThread(threading.Thread):
2121
def __init__(
2222
self,
2323
) -> None:

robocorp-code/src/robocorp_code/inspector/java/robocorp_java/_inspector.py

Lines changed: 10 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -7,9 +7,9 @@
77
class ElementInspector:
88
def _start_event_pump(func, *args, **kwargs):
99
def wrapper(self: "ElementInspector", *args, **kwargs):
10-
from ._event_pump import _EventPumpThread
10+
from ._event_pump import EventPumpThread
1111

12-
event_pump_thread = _EventPumpThread()
12+
event_pump_thread = EventPumpThread()
1313
event_pump_thread.start()
1414
jab_wrapper = event_pump_thread.get_wrapper()
1515
ret = func(self, jab_wrapper, *args, **kwargs)
@@ -30,7 +30,14 @@ def collect_tree(
3030
locator: Optional[str] = None,
3131
) -> Union[ContextNode, List[ContextNode]]:
3232
jab_wrapper.switch_window_by_title(window)
33-
context_tree = ContextTree(jab_wrapper)
33+
34+
from ._context_tree import ContextTreeThread
35+
36+
context_tree_thread = ContextTreeThread(jab_wrapper)
37+
context_tree_thread.start()
38+
context_tree = context_tree_thread.get_context_tree()
39+
context_tree_thread.join()
40+
3441
if locator:
3542
from ._locators import find_elements_from_tree
3643

0 commit comments

Comments
 (0)