Beispiel #1
0
    def __parse_msg(self, msgname, obj):
        req = obj.get("request")
        res = obj.get("response")
        if req is None:
            raise SchemaParseException("No request specified: " +
                                       obj.__str__())
        if res is None:
            raise SchemaParseException("No response specified: " +
                                       obj.__str__())
        fields = dict()
        for field in req:
            fieldname = field.get("name")
            if fieldname is None:
                raise SchemaParseException("No param name: " + field.__str__())
            fieldtype = field.get("type")
            if fieldtype is None:
                raise SchemaParseException("No param type: " + field.__str__())
            fields[fieldname] = schema.Field(
                fieldname, schema._parse(fieldtype, self.__types))
        request = schema._RecordSchema(fields)
        response = schema._parse(res, self.__types)

        erorrs = list()
        erorrs.append(_SYSTEM_ERROR)
        errs = obj.get("errors")
        if errs is not None:
            if not isinstance(errs, list):
                raise SchemaParseException("Errors not an array: " +
                                           errs.__str__())
            for err in errs:
                name = err.__str__()
                sch = self.__types.get(name)
                if sch is None:
                    raise SchemaParseException("Undefined error: " +
                                               name.__str__())
                if sch.iserror is False:
                    raise SchemaParseException("Not an error: " +
                                               name.__str__())
                erorrs.append(sch)

        return self.Message(self, msgname, request, response,
                            schema._UnionSchema(erorrs))
Beispiel #2
0
  def _parse(self, obj):
    if obj.get("namespace") is not None:
      self.__namespace = obj.get("namespace")

    if obj.get("protocol") is None:
      raise SchemaParseException("No protocol name specified: "+obj.__str__())
    self.__name = obj.get("protocol")

    defs = obj.get("types")
    if defs is not None:
      if not isinstance(defs, list):
        raise SchemaParseException("Types not an array: "+defs.__str__())
      for type in defs:
        if not isinstance(type, object):
          raise SchemaParseException("Types not an object: "+type.__str__())
        schema._parse(type, self.__types)

    msgs = obj.get("messages")
    if msgs is not None:
      for k,v in msgs.items():
        self.__messages[k] = self.__parse_msg(k,v)
Beispiel #3
0
  def __parse_msg(self, msgname, obj):
    req = obj.get("request")
    res = obj.get("response")
    if req is None:
      raise SchemaParseException("No request specified: "+obj.__str__())
    if res is None:
      raise SchemaParseException("No response specified: "+obj.__str__())
    fields = dict()
    for field in req:
      fieldname = field.get("name")
      if fieldname is None:
        raise SchemaParseException("No param name: "+field.__str__())
      fieldtype = field.get("type")
      if fieldtype is None:
        raise SchemaParseException("No param type: "+field.__str__())
      fields[fieldname] = schema.Field(fieldname, 
                                       schema._parse(fieldtype, self.__types))
    request = schema._RecordSchema(fields)
    response = schema._parse(res, self.__types)

    erorrs = list()
    erorrs.append(_SYSTEM_ERROR)
    errs = obj.get("errors")
    if errs is not None:
      if not isinstance(errs, list):
        raise SchemaParseException("Errors not an array: "+errs.__str__())
      for err in errs:
        name = err.__str__()
        sch = self.__types.get(name)
        if sch is None:
          raise SchemaParseException("Undefined error: "+name.__str__())
        if sch.iserror is False:
          raise SchemaParseException("Not an error: "+name.__str__())
        erorrs.append(sch)

    return self.Message(self, msgname, request, response, 
              schema._UnionSchema(erorrs))
Beispiel #4
0
    def _parse(self, obj):
        if obj.get("namespace") is not None:
            self.__namespace = obj.get("namespace")

        if obj.get("protocol") is None:
            raise SchemaParseException("No protocol name specified: " +
                                       obj.__str__())
        self.__name = obj.get("protocol")

        defs = obj.get("types")
        if defs is not None:
            if not isinstance(defs, list):
                raise SchemaParseException("Types not an array: " +
                                           defs.__str__())
            for type in defs:
                if not isinstance(type, object):
                    raise SchemaParseException("Types not an object: " +
                                               type.__str__())
                schema._parse(type, self.__types)

        msgs = obj.get("messages")
        if msgs is not None:
            for k, v in msgs.items():
                self.__messages[k] = self.__parse_msg(k, v)