(
&mut self,
default_namespace: &str,
value: &Value,
)
| 986 | } |
| 987 | |
| 988 | fn parse_inner_impl( |
| 989 | &mut self, |
| 990 | default_namespace: &str, |
| 991 | value: &Value, |
| 992 | ) -> Result<SchemaPieceOrNamed, AvroError> { |
| 993 | match *value { |
| 994 | Value::String(ref t) => { |
| 995 | let name = FullName::from_parts(t.as_str(), None, default_namespace); |
| 996 | if let Some(idx) = self.indices.get(&name) { |
| 997 | Ok(SchemaPieceOrNamed::Named(*idx)) |
| 998 | } else { |
| 999 | Ok(SchemaPieceOrNamed::Piece(Schema::parse_primitive( |
| 1000 | t.as_str(), |
| 1001 | )?)) |
| 1002 | } |
| 1003 | } |
| 1004 | Value::Object(ref data) => self.parse_complex(default_namespace, data), |
| 1005 | Value::Array(ref data) => Ok(SchemaPieceOrNamed::Piece( |
| 1006 | self.parse_union(default_namespace, data)?, |
| 1007 | )), |
| 1008 | _ => Err(ParseSchemaError::new("Must be a JSON string, object or array").into()), |
| 1009 | } |
| 1010 | } |
| 1011 | |
| 1012 | fn alloc_name(&mut self, fullname: FullName) -> Result<usize, AvroError> { |
| 1013 | let idx = match self.indices.entry(fullname) { |
no test coverage detected