| Index: tools/json_schema_compiler/schema_loader.py
|
| diff --git a/tools/json_schema_compiler/schema_loader.py b/tools/json_schema_compiler/schema_loader.py
|
| index a42f4c4c5673fd1f2c09d6a45356f1a32f53d2c3..3054560eb25ad1c84425ea39a512a9798f50315a 100644
|
| --- a/tools/json_schema_compiler/schema_loader.py
|
| +++ b/tools/json_schema_compiler/schema_loader.py
|
| @@ -50,13 +50,7 @@ class SchemaLoader(object):
|
| self._include_rules = [(real_path, cpp_namespace_pattern)]
|
| self._include_rules.extend(include_rules)
|
|
|
| - def ResolveType(self, full_name, default_namespace):
|
| - name_parts = full_name.rsplit('.', 1)
|
| - if len(name_parts) == 1:
|
| - if full_name not in default_namespace.types:
|
| - return None
|
| - return default_namespace
|
| - full_namespace, type_name = full_name.rsplit('.', 1)
|
| + def ResolveNamespace(self, full_namespace):
|
| filenames = GenerateFilenames(full_namespace)
|
| for path, namespace in self._include_rules:
|
| for filename in reversed(filenames):
|
| @@ -66,21 +60,30 @@ class SchemaLoader(object):
|
| self.LoadSchema(filepath)[0],
|
| os.path.join(self._display_path, filepath),
|
| environment=CppNamespaceEnvironment(namespace))
|
| - if type_name in namespace.types:
|
| - return namespace
|
| + return namespace
|
| + return None
|
| +
|
| + def ResolveType(self, full_name, default_namespace):
|
| + name_parts = full_name.rsplit('.', 1)
|
| + if len(name_parts) == 1:
|
| + if full_name not in default_namespace.types:
|
| + return None
|
| + return default_namespace
|
| + full_namespace, type_name = full_name.rsplit('.', 1)
|
| + namespace = self.ResolveNamespace(full_namespace)
|
| + if namespace and type_name in namespace.types:
|
| + return namespace
|
| return None
|
|
|
| def LoadSchema(self, schema):
|
| '''Load a schema definition. The schema parameter must be a file name
|
| - without any path component - the file is loaded from the path defined by
|
| - the real_path argument passed to the constructor.'''
|
| + with the full path.'''
|
| schema_filename, schema_extension = os.path.splitext(schema)
|
|
|
| - schema_path = os.path.join(self._real_path, schema);
|
| if schema_extension == '.json':
|
| - api_defs = json_schema.Load(schema_path)
|
| + api_defs = json_schema.Load(schema)
|
| elif schema_extension == '.idl':
|
| - api_defs = idl_schema.Load(schema_path)
|
| + api_defs = idl_schema.Load(schema)
|
| else:
|
| sys.exit('Did not recognize file extension %s for schema %s' %
|
| (schema_extension, schema))
|
|
|