class JavaRemoteClient(object): def __init__(self, url, keyword_class): self.keyword_class = keyword_class self._robot_remote = Remote(url) self._keyword_names = None self._keyword_arguments = {} self._keyword_documentation = {} def get_keyword_names(self): """Returns a list of available keywords.""" if self._keyword_names is None: self._keyword_names = self._robot_remote.get_keyword_names() if 'stop_remote_server' in self._keyword_names: self._keyword_names.remove('stop_remote_server') return self._keyword_names def run_keyword(self, name, args, kwargs): """Runs given keyword.""" result = self._robot_remote.run_keyword(name, args, kwargs) return self._wrap_if_dict(result) def _wrap_if_dict(self, value): return object_dict(value) if isinstance(value, dict) else value def get_keyword_arguments(self, name): """Returns a list of argument names for given keyword.""" if name not in self._keyword_arguments: self._keyword_arguments[name] = self._robot_remote.get_keyword_arguments(name) return self._keyword_arguments[name] def get_keyword_documentation(self, name): """Returns the documentation for given keyword.""" if name not in self._keyword_documentation: self._keyword_documentation[name] = self._robot_remote.get_keyword_documentation(name) return self._keyword_documentation[name]