def _parse_from_stream(self, stream, directory, file_path, address): level_dom = self._parse_dom(stream, file_path) # Check schema schema_checker = SchemaChecker.SchemaChecker() schema_checker.check_schema(file_path, self.XSD_FILE_PATH) level_node = LoaderUtilities.find_node(file_path, level_dom, self.SUB_LEVEL + 's') # Load important nodes configuration_nodes = LoaderUtilities.find_nodes(file_path, level_node, 'configuration') user_nodes = LoaderUtilities.find_nodes(file_path, level_node, 'user') runner_nodes = LoaderUtilities.find_nodes(file_path, level_node, 'runner') sub_level_nodes = LoaderUtilities.find_nodes(file_path, level_node, self.SUB_LEVEL) # Parse nodes configurations = self._parse_configurations(directory, configuration_nodes) runner = self._parse_runner(directory, runner_nodes) sub_levels = self._parse_level(address, directory, sub_level_nodes) # Return structure level_configuration = self.CONFIG_CLASS( None, configurations, sub_levels, runner = runner, ) # We know there can be 0 or 1 node... if len(user_nodes) > 0: level_configuration.user = LoaderUtilities.obtain_text_safe(user_nodes[0]) return level_configuration
def test_find_nodes_zero_nodes(self): sample = """<?xml version="1.0" encoding="utf-8"?> <server></server> """ root_node = minidom.parse(StringIO.StringIO(sample)) nodes = LoaderUtilities.find_nodes('file_name', root_node, 'server2') self.assertEquals(0, len(nodes))
def test_find_nodes_zero_nodes(self): sample = """<?xml version="1.0" encoding="utf-8"?> <server></server> """ root_node = minidom.parse(StringIO.StringIO(sample)) nodes = LoaderUtilities.find_nodes( 'file_name',root_node,'server2' ) self.assertEquals(0, len(nodes))
def _parse_parameters(self, file_path, parameterized_node): parameter_nodes = LoaderUtilities.find_nodes(file_path, parameterized_node, 'parameter') parameters = [] for parameter_node in parameter_nodes: name = parameter_node.getAttribute('name') value = parameter_node.getAttribute('value') parameter = ConfigurationData.ParameterConfiguration(name, value) parameters.append(parameter) return parameters
def _parse_from_stream(self, stream, directory, file_path, address): server_dom = self._parse_dom(stream, file_path) # Check schema schema_checker = SchemaChecker.SchemaChecker() schema_checker.check_schema(file_path, SERVER_XSD_FILE_PATH) server_node = LoaderUtilities.find_node(file_path, server_dom, 'server') # Load important nodes configuration_nodes = LoaderUtilities.find_nodes(file_path, server_node, 'configuration') server_type_node = LoaderUtilities.find_node(file_path, server_node, 'type') methods_node = LoaderUtilities.find_node(file_path, server_node, 'methods') implementation_node = LoaderUtilities.find_node(file_path, server_node, 'implementation') restrictions_nodes = LoaderUtilities.find_nodes(file_path, server_node, 'restriction') protocols_nodes = LoaderUtilities.find_node(file_path, server_node, 'protocols') # Parse nodes configurations = self._parse_configurations(directory, configuration_nodes) server_type = self._parse_server_type(server_type_node) server_type_module = self._parse_server_type_module(server_type_node) methods = self._parse_methods(methods_node) implementation = self._parse_implementation(implementation_node) restrictions = self._parse_restrictions(directory, restrictions_nodes) protocols = self._parse_protocols(file_path, protocols_nodes, address) # Return structure server_configuration = ConfigurationData.ServerConfiguration( None, configurations, server_type, server_type_module, methods, implementation, restrictions, protocols ) return server_configuration
def _parse_coordinations(self, file_path, protocol_node): coordinations_node = LoaderUtilities.find_node(file_path, protocol_node, 'coordinations') coordinations = [] coordination_nodes = LoaderUtilities.find_nodes(file_path, coordinations_node, 'coordination') for coordination_node in coordination_nodes: parameters = self._parse_parameters(file_path, coordination_node) coordination = ConfigurationData.CoordinationConfiguration(parameters) coordinations.append(coordination) coordinations_configuration = ConfigurationData.CoordinationsConfiguration( coordinations ) return coordinations_configuration