Exemplo n.º 1
0
    def _java_method_replace(self):
        methods = {}
        compound_type_name = self.java_name()
        all_field_names = [field.java_name() for field in self.fields]
        for field_i, field in enumerate(self.fields):
            field_name = field.java_name()
            field_parameter = field.java_parameter(final=True)
            all_field_names = []
            for other_field_i, other_field in enumerate(self.fields):
                if field_i == other_field_i:
                    all_field_names.append(field.java_name())
                else:
                    all_field_names.append('this.' + other_field.java_name())
            all_field_names = ', '.join(all_field_names)
            method_name = 'replace' + upper_camelize(field.name)
            methods[method_name] = """\
public %(compound_type_name)s %(method_name)s(%(field_parameter)s) {
    return new %(compound_type_name)s(%(all_field_names)s);
}""" % locals()
            if not field.required:
                field_parameter = 'final ' + field.type.java_declaration_name() + ' ' + field.java_name()
                methods[method_name + 'Ex'] = """\
public %(compound_type_name)s %(method_name)s(%(field_parameter)s) {
    return %(method_name)s(com.google.common.base.Optional.fromNullable(%(field_name)s));
}""" % locals()

        return methods
Exemplo n.º 2
0
        def java_definitions(self):
            annotations = lpad("\n", "\n".join(self.java_annotations()))
            name = self.java_name()
            public_parameters = \
                ', '.join(parameter.java_parameter(final=True) for parameter in self.parameters)
            public_parameter_names = ', '.join(
                parameter.java_name() for parameter in self.parameters)
            parameter_validations = []
            request_type_name = self.java_request_type().java_name()
            service_qname = JavaService.java_qname(self.parent)
            for parameter in self.parameters:
                parameter_name = parameter.java_name()
                parameter_validate_method_name = parameter.java_validate_method_name(
                )
                parameter_validations.append(
                    "%(service_qname)s.Messages.%(request_type_name)s.DefaultConstructionValidator.getInstance().%(parameter_validate_method_name)s(%(parameter_name)s);"
                    % locals())
            if len(parameter_validations) > 0:
                parameter_validations = \
                    "\n".join(indent(' ' * 4, parameter_validations))
                validate_method_name = '_validate' + upper_camelize(
                    self.name) + 'Parameters'
                validate_method = lpad(
                    "\n\n", """\
protected void %(validate_method_name)s(%(public_parameters)s) {
%(parameter_validations)s
}""" % locals())
                validate_method_call = lpad(
                    "\n",
                    indent(
                        ' ' * 4, "%s(%s);" %
                        (validate_method_name, public_parameter_names)))
            else:
                validate_method = validate_method_call = ''
            delegation = \
                "delegate.%s(%s)" % (name, ', '.join(parameter.java_name() for parameter in self.parameters))
            if self.return_field is not None:
                response_type_name = self.java_response_type().java_name()
                return_field_validate_method_name = self.return_field.java_validate_method_name(
                )
                delegation = "return %(service_qname)s.Messages.%(response_type_name)s.DefaultConstructionValidator.getInstance().%(return_field_validate_method_name)s(%(delegation)s)" % locals(
                )
                return_type_name = self.return_field.type.java_qname()
            else:
                return_type_name = 'void'
            throws = \
                lpad(
                    ' throws ',
                    ', '.join(field.type.java_qname()
                               for field in self.throws)
                )

            return [
                """\
@Override%(annotations)s
public final %(return_type_name)s %(name)s(%(public_parameters)s)%(throws)s {%(validate_method_call)s
    %(delegation)s;
}%(validate_method)s
""" % locals()
            ] + self._java_delegating_definitions()
Exemplo n.º 3
0
    def _java_method_replace(self):
        methods = {}
        compound_type_name = self.java_name()
        all_field_names = [field.java_name() for field in self.fields]
        for field_i, field in enumerate(self.fields):
            field_name = field.java_name()
            field_parameter = field.java_parameter(final=True)
            all_field_names = []
            for other_field_i, other_field in enumerate(self.fields):
                if field_i == other_field_i:
                    all_field_names.append(field.java_name())
                else:
                    all_field_names.append('this.' + other_field.java_name())
            all_field_names = ', '.join(all_field_names)
            method_name = 'replace' + upper_camelize(field.name)
            methods[method_name] = """\
public %(compound_type_name)s %(method_name)s(%(field_parameter)s) {
    return new %(compound_type_name)s(%(all_field_names)s);
}""" % locals()
            if not field.required:
                field_parameter = 'final ' + field.type.java_declaration_name(
                ) + ' ' + field.java_name()
                methods[method_name + 'Ex'] = """\
public %(compound_type_name)s %(method_name)s(%(field_parameter)s) {
    return %(method_name)s(com.google.common.base.Optional.fromNullable(%(field_name)s));
}""" % locals()

        return methods
Exemplo n.º 4
0
        def cpp_sync_handler(self):
            name = self.cpp_name()
            response_name = upper_camelize(self.__parent_function.cpp_name()) + 'Response'
            if self.__parent_function.return_field is not None:
                call_prefix = "request.respond(%(response_name)s(" % locals()
                call_suffix = "))"
            else:
                call_prefix = ''
                call_suffix = """;
request.respond(%(response_name)s())""" % locals()
            call_parameters = \
                ', '.join("request.%s()" % parameter.cpp_getter_name()
                           for parameter in self.fields)
            call_method_name = self.__parent_function.name
            call = "%(call_prefix)simpl_->%(call_method_name)s(%(call_parameters)s)%(call_suffix)s;" % locals()
            if len(self.__parent_function.throws) > 0:
                catches = []
                for exception in self.__parent_function.throws:
                    exception_name = exception.cpp_name()
                    exception_type_qname = exception.type.cpp_qname()
                    catches.append("""\
} catch (const %(exception_type_qname)s& %(exception_name)s) {
  request.respond(%(exception_name)s);""" % locals())
                catches = "\n".join(catches) + "\n}"
                call = indent(' ' * 2, call)
                call = """\
try {
%(call)s
%(catches)s""" % locals()
            call = indent(' ' * 2, call)
            return """\
virtual void handle(const %(name)s& request) {
%(call)s
}""" % locals()
Exemplo n.º 5
0
    def _java_method_replacers(self):
        methods = {}
        compound_type_name = self.java_name()
        for field_i, field in enumerate(self.fields):
            field_name = field.java_name()
            field_parameter = field.java_parameter(final=True)
            constructor_parameters = []
            for other_field_i, other_field in enumerate(self.fields):
                if field_i == other_field_i:
                    constructor_parameters.append("DefaultConstructionValidator.getInstance().%s(%s)" % (field.java_validate_method_name(), field.java_name()))
                else:
                    constructor_parameters.append('this.' + other_field.java_name())
            constructor_parameters.append('NopConstructionValidator.getInstance()')
            constructor_parameters = ', '.join(constructor_parameters)
            method_name = 'replace' + upper_camelize(field.name)
            methods[method_name] = """\
public %(compound_type_name)s %(method_name)s(%(field_parameter)s) {
    return new %(compound_type_name)s(%(constructor_parameters)s);
}""" % locals()
            if not field.required:
                field_parameter = 'final ' + field.type.java_qname() + ' ' + field.java_name()
                methods[method_name + 'Ex'] = """\
public %(compound_type_name)s %(method_name)s(%(field_parameter)s) {
    return %(method_name)s(com.google.common.base.Optional.fromNullable(%(field_name)s));
}""" % locals()

        return methods
Exemplo n.º 6
0
    def _java_method_replacers(self):
        methods = {}
        compound_type_name = self.java_name()
        for field_i, field in enumerate(self.fields):
            field_name = field.java_name()
            field_parameter = field.java_parameter(final=True)
            constructor_parameters = []
            for other_field_i, other_field in enumerate(self.fields):
                if field_i == other_field_i:
                    constructor_parameters.append(
                        "DefaultConstructionValidator.getInstance().%s(%s)" %
                        (field.java_validate_method_name(), field.java_name()))
                else:
                    constructor_parameters.append('this.' +
                                                  other_field.java_name())
            constructor_parameters.append(
                'NopConstructionValidator.getInstance()')
            constructor_parameters = ', '.join(constructor_parameters)
            method_name = 'replace' + upper_camelize(field.name)
            methods[method_name] = """\
public %(compound_type_name)s %(method_name)s(%(field_parameter)s) {
    return new %(compound_type_name)s(%(constructor_parameters)s);
}""" % locals()
            if not field.required:
                field_parameter = 'final ' + field.type.java_qname(
                ) + ' ' + field.java_name()
                methods[method_name + 'Ex'] = """\
public %(compound_type_name)s %(method_name)s(%(field_parameter)s) {
    return %(method_name)s(com.google.common.base.Optional.fromNullable(%(field_name)s));
}""" % locals()

        return methods
Exemplo n.º 7
0
 def __init__(self, parent_function):
     PyFunction._PyMessageType.__init__(
         self,
         name=upper_camelize(parent_function.name) + 'Response',
         parent=parent_function.parent
     )
     if parent_function.return_field is not None:
         self.fields.append(parent_function.return_field)
Exemplo n.º 8
0
 def __init__(self, parent_function):
     DartStructType.__init__(
         self,
         name=upper_camelize(parent_function.name) + 'Response',
         parent=parent_function.parent
     )
     if parent_function.return_field is not None:
         self.fields.append(parent_function.return_field)
Exemplo n.º 9
0
 def __init__(self, parent_function, java_suppress_warnings=None):
     JavaFunction._JavaMessageType.__init__(
         self,
         java_class_modifiers='public final static',
         java_suppress_warnings=java_suppress_warnings,
         name=upper_camelize(parent_function.name) + 'Response',
         parent=parent_function.parent)
     if parent_function.return_field is not None:
         self.fields.append(parent_function.return_field)
Exemplo n.º 10
0
 def java_getter_name(self):
     getter_name = upper_camelize(self.name)
     if isinstance(self.type, JavaBoolType) and self.required:
         if getter_name.startswith('Is'):
             return 'is' + getter_name[2:]
         else:
             return 'is' + getter_name
     else:
         return 'get' + getter_name
Exemplo n.º 11
0
 def java_getter_name(self):
     getter_name = upper_camelize(self.name)
     if isinstance(self.type, JavaBoolType) and self.required:
         if getter_name.startswith('Is'):
             return 'is' + getter_name[2:]
         else:
             return 'is' + getter_name
     else:
         return 'get' + getter_name
Exemplo n.º 12
0
 def __init__(self, parent_function, java_suppress_warnings=None):
     JavaFunction._JavaMessageType.__init__(
         self,
         java_class_modifiers='public final static',
         java_suppress_warnings=java_suppress_warnings,
         name=upper_camelize(parent_function.name) + 'Response',
         parent=parent_function.parent
     )
     if parent_function.return_field is not None:
         self.fields.append(parent_function.return_field)
Exemplo n.º 13
0
        def __repr__(self):
            annotations = lpad("\n", "\n".join(self.java_annotations()))
            name = self.java_name()
            public_parameters = \
                ', '.join(parameter.java_parameter(final=True) for parameter in self.parameters)
            public_parameter_names = ', '.join(parameter.java_name() for parameter in self.parameters)
            parameter_validations = []
            for parameter in self.parameters:
                parameter_validation = parameter.java_validation()
                if parameter_validation != parameter.java_name():
                    parameter_validations.append(parameter_validation + ';')
            if len(parameter_validations) > 0:
                parameter_validations = \
                    "\n".join(indent(' ' * 4, parameter_validations))
                validate_method_name = '_validate' + upper_camelize(self.name) + 'Parameters'
                validate_method = lpad("\n\n", """\
protected void %(validate_method_name)s(%(public_parameters)s) {
%(parameter_validations)s
}""" % locals())
                validate_method_call = lpad("\n", indent(' ' * 4, "%s(%s);" % (validate_method_name, public_parameter_names)))
            else:
                validate_method = validate_method_call = ''
            protected_parameters = [parameter.java_parameter(final=True)
                                    for parameter in self.parameters]
            protected_parameter_names = [parameter.java_name()
                                         for parameter in self.parameters]
            if self.parent.parent.parent._include_current_user:
                protected_parameters.insert(0, 'org.apache.shiro.subject.Subject currentUser')
                protected_parameter_names.insert(0, 'org.apache.shiro.SecurityUtils.getSubject()')
            protected_delegation = \
                "_%s(%s)" % (name, ', '.join(protected_parameter_names))
            protected_parameters = ', '.join(protected_parameters)
            if self.return_field is not None:
                protected_delegation = 'return ' + self.return_field.java_validation(value=protected_delegation)
                return_type_name = self.return_field.type.java_declaration_name()
            else:
                return_type_name = 'void'
            throws = \
                lpad(
                    ' throws ',
                    ', '.join(field.type.java_declaration_name()
                               for field in self.throws)
                )

            return """\
@Override%(annotations)s
public %(return_type_name)s %(name)s(%(public_parameters)s)%(throws)s {%(validate_method_call)s
    %(protected_delegation)s;
}%(validate_method)s

protected abstract %(return_type_name)s _%(name)s(%(protected_parameters)s)%(throws)s;
""" % locals()
Exemplo n.º 14
0
        def _java_method_do_post(self):
            read_http_servlet_request_body = indent(
                ' ' * 4, self._java_read_http_servlet_request_body())
            function_dispatches = []
            if len(self.functions) == 0:
                function_dispatches = """\
__doPostError(httpServletRequest, httpServletResponse, new org.thryft.protocol.JsonRpcErrorResponse(-32601, String.format("the method '%s' does not exist / is not available", messageBegin.getName())), messageBegin.getId());
return;
"""
            else:
                function_dispatches = \
                    indent(' ' * 8, ' else '.join(
                        ["""\
if (messageBegin.getName().equals("%s")) {
    __doPost%s(httpServletRequest, httpServletResponse, iprot, messageBegin.getId());
}""" % (function.name, upper_camelize(function.name))
                                   for function in self.functions
                        ] + ['''\
{
    __doPostError(httpServletRequest, httpServletResponse, new org.thryft.protocol.JsonRpcErrorResponse(-32601, String.format("the method '%s' does not exist / is not available", messageBegin.getName())), messageBegin.getId());
    return;
}''']
                    ))
            return """\
@Override
protected void doPost(final javax.servlet.http.HttpServletRequest httpServletRequest, final javax.servlet.http.HttpServletResponse httpServletResponse) throws java.io.IOException, javax.servlet.ServletException {
%(read_http_servlet_request_body)s

    org.thryft.protocol.MessageBegin messageBegin = null;
    try {
        final org.thryft.protocol.JsonRpcInputProtocol iprot;
        try {
            iprot = new org.thryft.protocol.JsonRpcInputProtocol(new org.thryft.protocol.JacksonJsonInputProtocol(httpServletRequestBody));
            messageBegin = iprot.readMessageBegin();
        } catch (final org.thryft.protocol.JsonRpcInputProtocolException e) {
            throw e;
        } catch (final org.thryft.protocol.InputProtocolException e) {
            throw new org.thryft.protocol.JsonRpcInputProtocolException(e, -32600);
        }
        if (messageBegin.getType() != org.thryft.protocol.MessageType.CALL) {
            throw new org.thryft.protocol.JsonRpcInputProtocolException(-32600, "expected request");
        }
%(function_dispatches)s
    } catch (final org.thryft.protocol.JsonRpcInputProtocolException e) {
        __doPostError(httpServletRequest, httpServletResponse, new org.thryft.protocol.JsonRpcErrorResponse(e), messageBegin != null ? messageBegin.getId() : null);
        return;
    }

}
""" % locals()
Exemplo n.º 15
0
        def __repr__(self):
            annotations = rpad("\n".join(self.java_annotations()), "\n")
            name = self.java_name()
            request_type_name = self.java_request_type().java_name()
            service_qname = self.parent.java_qname()
            upper_camelized_name = upper_camelize(self.name)

            if len(self.parameters) > 0:
                read_request = """
    final %(service_qname)s.Messages.%(request_type_name)s serviceRequest;
    try {
        serviceRequest = new %(service_qname)s.Messages.%(request_type_name)s(iprot, iprot.getCurrentFieldType());
    } catch (final IllegalArgumentException | org.thryft.protocol.InputProtocolException | NullPointerException e) {
        logger.debug("error deserializing service request: ", e);
        __doPostError(httpServletRequest, httpServletResponse, new org.thryft.protocol.JsonRpcErrorResponse(e, -32602, "invalid JSON-RPC request method parameters: " + String.valueOf(e.getMessage())), jsonRpcRequestId);
        return;
    }
""" % locals()
            else:
                read_request = ''
            parameters = ', '.join([
                'serviceRequest.' + parameter.java_getter_name() + '()'
                for parameter in self.parameters
            ])
            service_call = "service.%(name)s(%(parameters)s);" % locals()
            if self.return_field is not None:
                service_call = 'result = ' + service_call
            if len(self.throws) > 0:
                catches = ' '.join([
                    """\
catch (final %s e) {
    __doPostError(httpServletRequest, httpServletResponse, new org.thryft.protocol.JsonRpcErrorResponse(e, 1, e.getClass().getCanonicalName() + ": " + String.valueOf(e.getMessage())), jsonRpcRequestId);
    return;
}""" % throw.type.java_qname() for throw in self.throws
                ])
                service_call = """\
try {
    %(service_call)s
} %(catches)s
""" % locals()
            service_call = indent(' ' * 4, service_call)

            return """\
%(annotations)sprivate void __doPost%(upper_camelized_name)s(final javax.servlet.http.HttpServletRequest httpServletRequest, final javax.servlet.http.HttpServletResponse httpServletResponse, final org.thryft.protocol.JsonRpcInputProtocol iprot, final Object jsonRpcRequestId) throws java.io.IOException {%(read_request)s
    Object result = null;
%(service_call)s

    __doPostResponse(httpServletRequest, httpServletResponse, jsonRpcRequestId, result);
}
""" % locals()
Exemplo n.º 16
0
 def __init__(self, *args, **kwds):
     Include.__init__(self, *args, **kwds)
     py_module_qname = self.path.replace('/', '.')
     py_module_qname_split = py_module_qname.rsplit('.', 1)
     if len(py_module_qname_split) == 2:
         py_module_qname, py_module_name = py_module_qname_split
     else:
         py_module_qname = py_module_name = py_module_qname_split[0]
     self.__py_class_name = upper_camelize(py_module_name)
     try:
         py_module_qname = self.document.namespace_by_scope('py').name + '.' + py_module_name
     except KeyError:
         pass
     self.__py_module_qname = py_module_qname
        def _java_method_do_post(self):
            read_http_servlet_request_body = indent(' ' * 4, self._java_read_http_servlet_request_body())
            function_dispatches = []
            if len(self.functions) == 0:
                function_dispatches = """\
__doPostError(httpServletRequest, httpServletResponse, new org.thryft.protocol.JsonRpcErrorResponse(-32601, String.format("the method '%s' does not exist / is not available", messageBegin.getName())), messageBegin.getId());
return;
"""
            else:
                function_dispatches = \
                    indent(' ' * 8, ' else '.join(
                        ["""\
if (messageBegin.getName().equals("%s")) {
    __doPost%s(httpServletRequest, httpServletResponse, iprot, messageBegin.getId());
}""" % (function.name, upper_camelize(function.name))
                                   for function in self.functions
                        ] + ['''\
{
    __doPostError(httpServletRequest, httpServletResponse, new org.thryft.protocol.JsonRpcErrorResponse(-32601, String.format("the method '%s' does not exist / is not available", messageBegin.getName())), messageBegin.getId());
    return;
}''']
                    ))
            return """\
@Override
protected void doPost(final javax.servlet.http.HttpServletRequest httpServletRequest, final javax.servlet.http.HttpServletResponse httpServletResponse) throws java.io.IOException, javax.servlet.ServletException {
%(read_http_servlet_request_body)s

    org.thryft.protocol.MessageBegin messageBegin = null;
    try {
        final org.thryft.protocol.JsonRpcInputProtocol iprot;
        try {
            iprot = new org.thryft.protocol.JsonRpcInputProtocol(new org.thryft.protocol.JacksonJsonInputProtocol(httpServletRequestBody));
            messageBegin = iprot.readMessageBegin();
        } catch (final org.thryft.protocol.JsonRpcInputProtocolException e) {
            throw e;
        } catch (final org.thryft.protocol.InputProtocolException e) {
            throw new org.thryft.protocol.JsonRpcInputProtocolException(e, -32600);
        }
        if (messageBegin.getType() != org.thryft.protocol.MessageType.CALL) {
            throw new org.thryft.protocol.JsonRpcInputProtocolException(-32600, "expected request");
        }
%(function_dispatches)s
    } catch (final org.thryft.protocol.JsonRpcInputProtocolException e) {
        __doPostError(httpServletRequest, httpServletResponse, new org.thryft.protocol.JsonRpcErrorResponse(e), messageBegin != null ? messageBegin.getId() : null);
        return;
    }

}
""" % locals()
Exemplo n.º 18
0
 def __init__(self, parent_function, cpp_suppress_warnings=None):
     CppStructType.__init__(self,
                            name=upper_camelize(parent_function.name) +
                            'Response',
                            parent=parent_function.parent)
     if parent_function.return_field is not None:
         return_field = parent_function.return_field
         self.fields.append(
             return_field.__class__(
                 annotations=return_field.annotations,
                 doc=return_field.doc,
                 name=return_field.name,
                 type=return_field.type,
                 parent=self,
                 required=True))
Exemplo n.º 19
0
 def __init__(self, *args, **kwds):
     Include.__init__(self, *args, **kwds)
     py_module_qname = self.path.replace('/', '.')
     py_module_qname_split = py_module_qname.rsplit('.', 1)
     if len(py_module_qname_split) == 2:
         py_module_qname, py_module_name = py_module_qname_split
     else:
         py_module_qname = py_module_name = py_module_qname_split[0]
     self.__py_class_name = upper_camelize(py_module_name)
     try:
         py_module_qname = self.document.namespace_by_scope(
             'py').name + '.' + py_module_name
     except KeyError:
         pass
     self.__py_module_qname = py_module_qname
Exemplo n.º 20
0
        def java_definitions(self):
            annotations = lpad("\n", "\n".join(self.java_annotations()))
            name = self.java_name()
            public_parameters = \
                ', '.join(parameter.java_parameter(final=True) for parameter in self.parameters)
            public_parameter_names = ', '.join(parameter.java_name() for parameter in self.parameters)
            parameter_validations = []
            request_type_name = self.java_request_type().java_name()
            service_qname = JavaService.java_qname(self.parent)
            for parameter in self.parameters:
                parameter_name = parameter.java_name()
                parameter_validate_method_name = parameter.java_validate_method_name()
                parameter_validations.append("%(service_qname)s.Messages.%(request_type_name)s.DefaultConstructionValidator.getInstance().%(parameter_validate_method_name)s(%(parameter_name)s);" % locals())
            if len(parameter_validations) > 0:
                parameter_validations = \
                    "\n".join(indent(' ' * 4, parameter_validations))
                validate_method_name = '_validate' + upper_camelize(self.name) + 'Parameters'
                validate_method = lpad("\n\n", """\
protected void %(validate_method_name)s(%(public_parameters)s) {
%(parameter_validations)s
}""" % locals())
                validate_method_call = lpad("\n", indent(' ' * 4, "%s(%s);" % (validate_method_name, public_parameter_names)))
            else:
                validate_method = validate_method_call = ''
            delegation = \
                "delegate.%s(%s)" % (name, ', '.join(parameter.java_name() for parameter in self.parameters))
            if self.return_field is not None:
                response_type_name = self.java_response_type().java_name()
                return_field_validate_method_name = self.return_field.java_validate_method_name()
                delegation = "return %(service_qname)s.Messages.%(response_type_name)s.DefaultConstructionValidator.getInstance().%(return_field_validate_method_name)s(%(delegation)s)" % locals()
                return_type_name = self.return_field.type.java_qname()
            else:
                return_type_name = 'void'
            throws = \
                lpad(
                    ' throws ',
                    ', '.join(field.type.java_qname()
                               for field in self.throws)
                )

            return ["""\
@Override%(annotations)s
public final %(return_type_name)s %(name)s(%(public_parameters)s)%(throws)s {%(validate_method_call)s
    %(delegation)s;
}%(validate_method)s
""" % locals()] + self._java_delegating_definitions()
        def __repr__(self):
            annotations = rpad("\n".join(self.java_annotations()), "\n")
            name = self.java_name()
            request_type_name = self.java_request_type().java_name()
            service_qname = self.parent.java_qname()
            upper_camelized_name = upper_camelize(self.name)

            if len(self.parameters) > 0:
                read_request = """
    final %(service_qname)s.Messages.%(request_type_name)s serviceRequest;
    try {
        serviceRequest = new %(service_qname)s.Messages.%(request_type_name)s(iprot, iprot.getCurrentFieldType());
    } catch (final IllegalArgumentException | org.thryft.protocol.InputProtocolException | NullPointerException e) {
        logger.debug("error deserializing service request: ", e);
        __doPostError(httpServletRequest, httpServletResponse, new org.thryft.protocol.JsonRpcErrorResponse(e, -32602, "invalid JSON-RPC request method parameters: " + String.valueOf(e.getMessage())), jsonRpcRequestId);
        return;
    }
""" % locals()
            else:
                read_request = ''
            parameters = ', '.join(['serviceRequest.' + parameter.java_getter_name() + '()'
                                    for parameter in self.parameters])
            service_call = "service.%(name)s(%(parameters)s);" % locals()
            if self.return_field is not None:
                service_call = 'result = ' + service_call
            if len(self.throws) > 0:
                catches = ' '.join(["""\
catch (final %s e) {
    __doPostError(httpServletRequest, httpServletResponse, new org.thryft.protocol.JsonRpcErrorResponse(e, 1, e.getClass().getCanonicalName() + ": " + String.valueOf(e.getMessage())), jsonRpcRequestId);
    return;
}""" % throw.type.java_qname() for throw in self.throws])
                service_call = """\
try {
    %(service_call)s
} %(catches)s
""" % locals()
            service_call = indent(' ' * 4, service_call)

            return """\
%(annotations)sprivate void __doPost%(upper_camelized_name)s(final javax.servlet.http.HttpServletRequest httpServletRequest, final javax.servlet.http.HttpServletResponse httpServletResponse, final org.thryft.protocol.JsonRpcInputProtocol iprot, final Object jsonRpcRequestId) throws java.io.IOException {%(read_request)s
    Object result = null;
%(service_call)s

    __doPostResponse(httpServletRequest, httpServletResponse, jsonRpcRequestId, result);
}
""" % locals()
Exemplo n.º 22
0
 def __init__(self, parent_function):
     PyFunction._PyMessageType.__init__(
         self,
         name=upper_camelize(parent_function.name) + 'Request',
         parent=parent_function.parent
     )
     for parameter in parent_function.parameters:
         self.fields.append(
             parameter.__class__(
                 annotations=parameter.annotations,
                 doc=parameter.doc,
                 name=parameter.name,
                 type=parameter.type,
                 parent=self,
                 required=parameter.required,
             )
         )
Exemplo n.º 23
0
    def __init__(self, *args, **kwds):
        Include.__init__(self, *args, **kwds)

        java_class_qname = self.relpath.rsplit('.', 1)[0].replace('/', '.')
        java_class_qname_split = java_class_qname.rsplit('.', 1)

        java_class_name = upper_camelize(java_class_qname_split.pop(-1))

        java_package = self.document.java_package()
        if java_package is None:
            if len(java_class_qname_split) > 0:
                java_package = java_class_qname_split[0]
            else:
                java_package = ''

        self.__java_class_name = java_class_name
        self.__java_package = java_package
Exemplo n.º 24
0
        def _java_method_unset(self):
            if len(self.fields) == 0:
                return {
                    'unset':
                    """\
public Builder unset(final String fieldThriftName) {
    throw new IllegalArgumentException();
}

public Builder unset(final org.thryft.Struct.FieldMetadata fieldMetadata) {
    throw new IllegalArgumentException();
}"""
                }

            cases = []
            for field in self.fields:
                field_name_upper = field.name.upper()
                field_name_upper_camelized = upper_camelize(field.name)
                cases.append(
                    'case %(field_name_upper)s: return unset%(field_name_upper_camelized)s();'
                    % locals())
            cases = lpad("\n", "\n".join(indent(' ' * 4, cases)))
            return {
                'unset':
                """\
public Builder unset(final String fieldThriftName) {
    return unset(FieldMetadata.valueOfThriftName(fieldThriftName));
}

public Builder unset(final org.thryft.Struct.FieldMetadata fieldMetadata) {
    if (!(fieldMetadata instanceof FieldMetadata)) {
        throw new IllegalArgumentException();
    }
    return unset((FieldMetadata)fieldMetadata);
}

public Builder unset(final FieldMetadata fieldMetadata) {
    com.google.common.base.Preconditions.checkNotNull(fieldMetadata);

    switch (fieldMetadata) {%(cases)s
    default:
        throw new IllegalStateException();
    }
}""" % locals()
            }
Exemplo n.º 25
0
 def __init__(self, parent_function, cpp_suppress_warnings=None):
     CppStructType.__init__(
         self,
         name=upper_camelize(parent_function.name) + 'Response',
         parent=parent_function.parent
     )
     if parent_function.return_field is not None:
         return_field = parent_function.return_field
         self.fields.append(
             return_field.__class__(
                 annotations=return_field.annotations,
                 doc=return_field.doc,
                 name=return_field.name,
                 type=return_field.type,
                 parent=self,
                 required=True
             )
         )
Exemplo n.º 26
0
        def __init__(self, parent_function, cpp_suppress_warnings=None, parameters=None):
            CppStructType.__init__(
                self,
                name=upper_camelize(parent_function.name) + 'Request',
                parent=parent_function.parent
            )
            self.__parent_function = parent_function

            if parameters is None:
                parameters = parent_function.parameters
            for parameter in parameters:
                self.fields.append(
                    parameter.__class__(
                        annotations=parameter.annotations,
                        doc=parameter.doc,
                        name=parameter.name,
                        type=parameter.type,
                        parent=self,
                        required=parameter.required,
                    )
                )
Exemplo n.º 27
0
        def __init__(self, parent_function, java_suppress_warnings=None, parameters=None):
            JavaFunction._JavaMessageType.__init__(
                self,
                java_class_modifiers='public final static',
                java_suppress_warnings=java_suppress_warnings,
                name=upper_camelize(parent_function.name) + 'Request',
                parent=parent_function.parent
            )

            if parameters is None:
                parameters = parent_function.parameters
            for parameter in parameters:
                self.fields.append(
                    parameter.__class__(
                        annotations=parameter.annotations,
                        doc=parameter.doc,
                        name=parameter.name,
                        type=parameter.type,
                        parent=self,
                        required=parameter.required,
                    )
                )
Exemplo n.º 28
0
        def __init__(self,
                     parent_function,
                     cpp_suppress_warnings=None,
                     parameters=None):
            CppStructType.__init__(self,
                                   name=upper_camelize(parent_function.name) +
                                   'Request',
                                   parent=parent_function.parent)
            self.__parent_function = parent_function

            if parameters is None:
                parameters = parent_function.parameters
            for parameter in parameters:
                self.fields.append(
                    parameter.__class__(
                        annotations=parameter.annotations,
                        doc=parameter.doc,
                        name=parameter.name,
                        type=parameter.type,
                        parent=self,
                        required=parameter.required,
                    ))
Exemplo n.º 29
0
        def __init__(self, parent_function, java_suppress_warnings=None, parameters=None):
            JavaStructType.__init__(
                self,
                java_class_modifiers='public final static',
                java_suppress_warnings=java_suppress_warnings,
                name=upper_camelize(parent_function.name) + 'Request',
                parent=parent_function.parent
            )

            if parameters is None:
                parameters = parent_function.parameters
            for parameter in parameters:
                self.fields.append(
                    parameter.__class__(
                        annotations=parameter.annotations,
                        doc=parameter.doc,
                        name=parameter.name,
                        type=parameter.type,
                        parent=self,
                        required=parameter.required,
                    )
                )
Exemplo n.º 30
0
 def __construct(self, class_name, annotation_nodes=None, **kwds):
     if len(self.__scope_stack) > 0:
         parent = self.__scope_stack[-1]
     else:
         parent = self.__generator
     kwds['parent'] = parent
     construct_class = getattr(self.__generator, class_name)
     if annotation_nodes is not None and len(annotation_nodes) > 0:
         annotations = []
         for annotation_node in annotation_nodes:
             try:
                 annotation_class_name = upper_camelize(annotation_node.name) + 'Annotation'
                 annotation_class = getattr(construct_class, annotation_class_name)
             except AttributeError:
                 annotation_class = getattr(construct_class, 'Annotation')
             annotations.append(
                 annotation_class(
                     name=annotation_node.name,
                     value=annotation_node.value
                 )
             )
         kwds['annotations'] = tuple(annotations)
     return construct_class(**kwds)
Exemplo n.º 31
0
        def cpp_sync_handler(self):
            name = self.cpp_name()
            response_name = upper_camelize(
                self.__parent_function.cpp_name()) + 'Response'
            if self.__parent_function.return_field is not None:
                call_prefix = "request.respond(%(response_name)s(" % locals()
                call_suffix = "))"
            else:
                call_prefix = ''
                call_suffix = """;
request.respond(*new %(response_name)s())""" % locals()
            call_parameters = \
                ', '.join("request.%s()" % parameter.cpp_getter_name()
                           for parameter in self.fields)
            call_method_name = self.__parent_function.name
            call = "%(call_prefix)simpl_.%(call_method_name)s(%(call_parameters)s)%(call_suffix)s;" % locals(
            )
            if len(self.__parent_function.throws) > 0:
                catches = []
                for exception in self.__parent_function.throws:
                    exception_name = exception.cpp_name()
                    exception_type_qname = exception.type.cpp_qname()
                    catches.append("""\
} catch (const %(exception_type_qname)s<ExceptionT>& %(exception_name)s) {
  request.respond(%(exception_name)s);
}""" % locals())
                catches = "\n".join(catches)
                call = indent(' ' * 2, call)
                call = """\
try {
%(call)s
%(catches)s""" % locals()
            call = indent(' ' * 2, call)
            return """\
virtual void handle(const %(name)s& request) {
%(call)s
}""" % locals()
Exemplo n.º 32
0
        def _java_method_unset(self):
            if len(self.fields) == 0:
                return {'unset': """\
public Builder unset(final String fieldThriftName) {
    throw new IllegalArgumentException();
}

public Builder unset(final org.thryft.Struct.FieldMetadata fieldMetadata) {
    throw new IllegalArgumentException();
}"""}

            cases = []
            for field in self.fields:
                field_name_upper = field.name.upper()
                field_name_upper_camelized = upper_camelize(field.name)
                cases.append('case %(field_name_upper)s: return unset%(field_name_upper_camelized)s();' % locals())
            cases = lpad("\n", "\n".join(indent(' ' * 4, cases)))
            return {'unset': """\
public Builder unset(final String fieldThriftName) {
    return unset(FieldMetadata.valueOfThriftName(fieldThriftName));
}

public Builder unset(final org.thryft.Struct.FieldMetadata fieldMetadata) {
    if (!(fieldMetadata instanceof FieldMetadata)) {
        throw new IllegalArgumentException();
    }
    return unset((FieldMetadata)fieldMetadata);
}

public Builder unset(final FieldMetadata fieldMetadata) {
    com.google.common.base.Preconditions.checkNotNull(fieldMetadata);

    switch (fieldMetadata) {%(cases)s
    default:
        throw new IllegalStateException();
    }
}""" % locals()}
Exemplo n.º 33
0
 def dart_name(self):
     return upper_camelize(self.name)
Exemplo n.º 34
0
 def java_validate_method_name(self):
     return 'validate' + upper_camelize(self.name)
Exemplo n.º 35
0
 def java_setter_name(self):
     return 'set' + upper_camelize(self.name)
Exemplo n.º 36
0
 def java_name(self):
     return 'test' + upper_camelize(self.name)
Exemplo n.º 37
0
        def java_definition(self):
            annotations = rpad("\n".join(self.java_annotations()), "\n")
            name = self.java_name()
            request_type_name = self.java_request_type().java_name()
            service_qname = self.parent.java_qname()
            upper_camelized_name = upper_camelize(self.name)

            if len(self.parameters) > 0:
                read_request = """
    final %(service_qname)s.Messages.%(request_type_name)s serviceRequest;
    try {
        serviceRequest = %(service_qname)s.Messages.%(request_type_name)s.readAs(iprot, iprot.getCurrentFieldType(), unknownFieldCallback);
    } catch (final IllegalArgumentException | org.thryft.protocol.InputProtocolException | NullPointerException e) {
        logger.debug("error deserializing service request: ", e);
        __doPostError(httpServletRequest, httpServletResponse, new org.thryft.protocol.JsonRpcErrorResponse(e, -32602, "invalid JSON-RPC request method parameters: " + String.valueOf(e.getMessage())), jsonRpcRequestId);
        return;
    }
""" % locals()
            else:
                read_request = ''
            parameters = ', '.join([
                'serviceRequest.' + parameter.java_getter_name() + '()'
                for parameter in self.parameters
            ])
            service_call = "service.%(name)s(%(parameters)s);" % locals()
            if self.return_field is not None:
                result_declaration = "    final %s result;\n" % self.return_field.type.java_qname(
                )
                service_call = 'result = ' + service_call
                write_result = self.return_field.type.java_write_protocol(
                    value='result')
            else:
                result_declaration = ''
                write_result = '''\
oprot.writeStructBegin("response");
oprot.writeStructEnd();
'''
            write_result = indent(' ' * 12, write_result)
            if len(self.throws) > 0:
                catches = ' '.join([
                    """\
catch (final %s e) {
    __doPostError(httpServletRequest, httpServletResponse, new org.thryft.protocol.JsonRpcErrorResponse(e, 1, e.getClass().getCanonicalName() + ": " + String.valueOf(e.getMessage())), jsonRpcRequestId);
    return;
}""" % throw.type.java_qname() for throw in self.throws
                ])
                service_call = """\
try {
    %(service_call)s
} %(catches)s
""" % locals()
            service_call = indent(' ' * 4, service_call)

            return """\
%(annotations)spublic void doPost%(upper_camelized_name)s(final javax.servlet.http.HttpServletRequest httpServletRequest, final javax.servlet.http.HttpServletResponse httpServletResponse, final org.thryft.protocol.JsonRpcInputProtocol iprot, final Object jsonRpcRequestId) throws java.io.IOException {%(read_request)s
%(result_declaration)s%(service_call)s

    final String httpServletResponseBody;
    {
        final java.io.StringWriter httpServletResponseBodyWriter = new java.io.StringWriter();
        try {
            final org.thryft.protocol.JsonRpcOutputProtocol oprot = new org.thryft.protocol.JsonRpcOutputProtocol(new org.thryft.protocol.JacksonJsonOutputProtocol(httpServletResponseBodyWriter));
            oprot.writeMessageBegin("", org.thryft.protocol.MessageType.REPLY, jsonRpcRequestId);
%(write_result)s
            oprot.writeMessageEnd();
            oprot.flush();
        } catch (final org.thryft.protocol.OutputProtocolException e) {
            logger.error("error serializing service error response: ", e);
            throw new IllegalStateException(e);
        }
        httpServletResponseBody = httpServletResponseBodyWriter.toString();
    }
    __doPostResponse(httpServletRequest, httpServletResponse, httpServletResponseBody);
}
""" % locals()
Exemplo n.º 38
0
        def java_definition(self):
            annotations = rpad("\n".join(self.java_annotations()), "\n")
            name = self.java_name()
            request_type_name = self.java_request_type().java_name()
            service_qname = self.parent.java_qname()
            upper_camelized_name = upper_camelize(self.name)

            if len(self.parameters) > 0:
                read_request = """
    final %(service_qname)s.Messages.%(request_type_name)s serviceRequest;
    try {
        serviceRequest = %(service_qname)s.Messages.%(request_type_name)s.readAs(iprot, iprot.getCurrentFieldType(), unknownFieldCallback);
    } catch (final IllegalArgumentException | org.thryft.protocol.InputProtocolException | NullPointerException e) {
        logger.debug("error deserializing service request: ", e);
        __doPostError(httpServletRequest, httpServletResponse, new org.thryft.protocol.JsonRpcErrorResponse(e, -32602, "invalid JSON-RPC request method parameters: " + String.valueOf(e.getMessage())), jsonRpcRequestId);
        return;
    }
""" % locals()
            else:
                read_request = ''
            parameters = ', '.join(['serviceRequest.' + parameter.java_getter_name() + '()'
                                    for parameter in self.parameters])
            service_call = "service.%(name)s(%(parameters)s);" % locals()
            if self.return_field is not None:
                result_declaration = "    final %s result;\n" % self.return_field.type.java_qname()
                service_call = 'result = ' + service_call
                write_result = self.return_field.type.java_write_protocol(value='result')
            else:
                result_declaration = ''
                write_result = '''\
oprot.writeStructBegin("response");
oprot.writeStructEnd();
'''
            write_result = indent(' ' * 12, write_result)
            if len(self.throws) > 0:
                catches = ' '.join(["""\
catch (final %s e) {
    __doPostError(httpServletRequest, httpServletResponse, new org.thryft.protocol.JsonRpcErrorResponse(e, 1, e.getClass().getCanonicalName() + ": " + String.valueOf(e.getMessage())), jsonRpcRequestId);
    return;
}""" % throw.type.java_qname() for throw in self.throws])
                service_call = """\
try {
    %(service_call)s
} %(catches)s
""" % locals()
            service_call = indent(' ' * 4, service_call)

            return """\
%(annotations)spublic void doPost%(upper_camelized_name)s(final javax.servlet.http.HttpServletRequest httpServletRequest, final javax.servlet.http.HttpServletResponse httpServletResponse, final org.thryft.protocol.JsonRpcInputProtocol iprot, final Object jsonRpcRequestId) throws java.io.IOException {%(read_request)s
%(result_declaration)s%(service_call)s

    final String httpServletResponseBody;
    {
        final java.io.StringWriter httpServletResponseBodyWriter = new java.io.StringWriter();
        try {
            final org.thryft.protocol.JsonRpcOutputProtocol oprot = new org.thryft.protocol.JsonRpcOutputProtocol(new org.thryft.protocol.JacksonJsonOutputProtocol(httpServletResponseBodyWriter));
            oprot.writeMessageBegin("", org.thryft.protocol.MessageType.REPLY, jsonRpcRequestId);
%(write_result)s
            oprot.writeMessageEnd();
            oprot.flush();
        } catch (final org.thryft.protocol.OutputProtocolException e) {
            logger.error("error serializing service error response: ", e);
            throw new IllegalStateException(e);
        }
        httpServletResponseBody = httpServletResponseBodyWriter.toString();
    }
    __doPostResponse(httpServletRequest, httpServletResponse, httpServletResponseBody);
}
""" % locals()
Exemplo n.º 39
0
 def dart_name(self):
     return upper_camelize(self.name)
Exemplo n.º 40
0
 def js_write_protocol(self, value, depth=0):
     name = upper_camelize(getattr(self, 'name'))
     return "oprot.write%(name)s(%(value)s);" % locals()
Exemplo n.º 41
0
 def js_read_protocol(self):
     name = upper_camelize(getattr(self, 'name'))
     return "iprot.read%(name)s()" % locals()
Exemplo n.º 42
0
try:
    import yutil
except ImportError:
    sys.path.append(os.path.abspath(os.path.join(MY_DIR_PATH, '..', 'src')))
from yutil import upper_camelize


argument_parser = argparse.ArgumentParser()
argument_parser.add_argument('--overwrite', action='store_true')
argument_parser.add_argument("language", nargs=1)
args = argument_parser.parse_args()


language = args.language[0]
language_upper_camelized = upper_camelize(language)


files = {}


files['__init__.py'] = ''


files["_%(language)s_base_type.py" % locals()] = """\
from thryft.generators.%(language)s._%(language)s_type import _%(language_upper_camelized)sType


class _%(language_upper_camelized)sBaseType(_%(language_upper_camelized)sType):
    pass
""" % locals()
Exemplo n.º 43
0
 def java_name(self):
     return 'test' + upper_camelize(self.name)
Exemplo n.º 44
0
 def java_getter_name_static(field):
     return 'get' + upper_camelize(field.name)
Exemplo n.º 45
0
MY_DIR_PATH = os.path.abspath(os.path.dirname(__file__))

try:
    import yutil
except ImportError:
    sys.path.append(os.path.abspath(os.path.join(MY_DIR_PATH, '..', 'src')))
from yutil import upper_camelize

argument_parser = argparse.ArgumentParser()
argument_parser.add_argument('--overwrite', action='store_true')
argument_parser.add_argument("language", nargs=1)
args = argument_parser.parse_args()

language = args.language[0]
language_upper_camelized = upper_camelize(language)

files = {}

files['__init__.py'] = ''

files["_%(language)s_base_type.py" % locals()] = """\
from thryft.generators.%(language)s._%(language)s_type import _%(language_upper_camelized)sType


class _%(language_upper_camelized)sBaseType(_%(language_upper_camelized)sType):
    pass
""" % locals()

files["_%(language)s_compound_type.py" % locals()] = """\
from thryft.generators.%(language)s._%(language)s_type import _%(language_upper_camelized)sType
Exemplo n.º 46
0
 def java_getter_name_static(field):
     return 'get' + upper_camelize(field.name)
Exemplo n.º 47
0
 def java_unsetter_name(self):
     return 'unset' + upper_camelize(self.name)
        def __repr__(self):
            annotations = self.java_annotations()
            name = '__do' + self.java_name()[0].upper() + self.java_name()[1:]

            sections = []

            variable_declarations = []
            for parameter in self.parameters:
                variable_declarations.append(
                    parameter.java_local_declaration(final=False))
            if self.return_field is not None:
                variable_declarations.append(
                    self.return_field.type.java_declaration_name() +
                    " __return_value;")
            if len(variable_declarations) > 0:
                sections.append("\n".join(
                    indent(' ' * 4, variable_declarations)))

            read_request = []
            if len(self.parameters) > 0:
                path_parameter = self.java_rest_path_parameter()
                if path_parameter is None or len(self.parameters) > 1:
                    request_type_name = 'Messages.' + upper_camelize(
                        self.name) + 'Request'
                else:
                    request_type_name = None
                if self.java_rest_request_method() in ('POST', 'PUT'):
                    read_http_servlet_request_body = self._java_read_http_servlet_request_body(
                        variable_name_prefix='__')
                    read_request.append("""\
%(read_http_servlet_request_body)s
final org.thryft.protocol.InputProtocol __restRequestProtocol = new org.thryft.protocol.JacksonJsonInputProtocol(new java.io.StringReader(__httpServletRequestBody));
""" % locals())
                else:
                    if path_parameter is not None:
                        path_info_prefix = self.java_rest_path_prefix()
                        path_info_prefix_len = len(path_info_prefix)
                        path_parameter_name = path_parameter.java_name()
                        path_parameter_from_string = path_parameter.type.java_from_string(
                            "java.net.URLDecoder.decode(__httpServletRequest.getPathInfo().substring(%(path_info_prefix_len)u), \"UTF-8\")"
                            % locals())
                        read_request.append("""\
if (__httpServletRequest.getPathInfo().length() > %(path_info_prefix_len)u) {
    %(path_parameter_name)s = %(path_parameter_from_string)s;
} else {
    __httpServletResponse.sendError(404);
    return;
}
""" % locals())
                    if path_parameter is None or len(self.parameters) > 1:
                        annotations.append('@SuppressWarnings("unchecked")')
                        read_request.append("""\
java.util.Map<String, String> __restRequestParameterStringMap = new java.util.LinkedHashMap<String, String>();
for (final java.util.Map.Entry<String, String[]> __httpServletRequestParameter : ((java.util.Map<String, String[]>)__httpServletRequest.getParameterMap()).entrySet()) {
    __restRequestParameterStringMap.put(__httpServletRequestParameter.getKey(), __httpServletRequestParameter.getValue()[0]);
}
final org.thryft.protocol.InputProtocol __restRequestProtocol = new org.thryft.protocol.StringMapInputProtocol(__restRequestParameterStringMap);
""" % locals())
                if request_type_name is not None:
                    variable_assignments = []
                    for parameter in self.parameters:
                        if parameter is path_parameter:
                            continue
                        variable_assignments.append(
                            parameter.java_name() + ' = __serviceRequest.' +
                            parameter.java_getter_name() + '();')
                    variable_assignments = "\n".join(
                        indent(' ' * 4, variable_assignments))
                    read_request.append("""\
try {
    final %(request_type_name)s __serviceRequest = new %(request_type_name)s(__restRequestProtocol);
%(variable_assignments)s
} catch (final IllegalArgumentException e) {
    logger.debug("error deserializing service request: ", e);
    __httpServletResponse.sendError(400);
    return;
} catch (final NullPointerException e) {
    logger.debug("error deserializing service request: ", e);
    __httpServletResponse.sendError(400);
    return;
} catch (final org.thryft.protocol.InputProtocolException e) {
    logger.debug("error deserializing service request: ", e);
    __httpServletResponse.sendError(400);
    return;
}
""" % locals())

            if len(read_request) > 0:
                sections.append("\n".join(indent(' ' * 4, read_request)))

            service_call = \
                "service.%s(%s);" % (
                    _servlet_java_generator._ServletJavaGenerator._Function.java_name(self),
                    ', '.join([parameter.java_name() for parameter in self.parameters])
                )
            if self.return_field is not None:
                service_call = '__return_value = ' + service_call
            if len(self.throws) > 0:
                catches = ' '.join([
                    """\
catch (final %s e) {
    final java.io.StringWriter __httpServletResponseBodyWriter = new java.io.StringWriter();
    final org.thryft.protocol.OutputProtocol __oprot = new org.thryft.protocol.JacksonJsonOutputProtocol(__httpServletResponseBodyWriter);
    try {
        e.write(__oprot);
        __oprot.flush();
    } catch (final org.thryft.protocol.OutputProtocolException e1) {
        logger.error("error serializing service error response: ", e1);
        __httpServletResponse.sendError(500);
        return;
    }
    final String __httpServletResponseBody = __httpServletResponseBodyWriter.toString();
    __httpServletResponse.getWriter().write(__httpServletResponseBody);
    __httpServletResponse.setHeader("Content-Type", "application/json");
    __httpServletResponse.setHeader("Warning", e.getClass().getName());
    __httpServletResponse.setStatus(404);
    return;
}""" % throw.type.java_qname() for throw in self.throws
                ])
                service_call = """\
try {
    %(service_call)s
} %(catches)s
""" % locals()
            sections.append(indent(' ' * 4, service_call))

            if self.return_field is None:
                write_response = """\
    __httpServletResponse.setStatus(204);"""
            elif isinstance(self.return_field.type, JavaBoolType):
                # assert self.java_rest_request_method() in ('DELETE', 'HEAD'), self.java_rest_request_method()
                write_response = """\
    if (__return_value) {
        __httpServletResponse.setStatus(204);
    } else {
        __httpServletResponse.setStatus(404);
    }""" % locals()
            else:
                return_write = \
                    indent(' ' * 8, self.return_field.type.java_write_protocol('__return_value'))
                if isinstance(self.return_field.type, _JavaBaseType):
                    return_ttype_id = self.return_field.type.thrift_ttype_id()
                    return_write = """\
        oprot.writeListBegin(new org.thryft.protocol.TList((byte)%(return_ttype_id)u, 1));
%(return_write)s
        oprot.writeListEnd();""" % locals()
                write_http_servlet_response_body = indent(
                    ' ' * 4,
                    self._java_write_http_servlet_response_body(
                        variable_name_prefix='__'))
                write_response = """\
    final java.io.StringWriter __httpServletResponseBodyWriter = new java.io.StringWriter();
    final org.thryft.protocol.OutputProtocol oprot = new org.thryft.protocol.JacksonJsonOutputProtocol(__httpServletResponseBodyWriter);
    try {
%(return_write)s
        oprot.flush();
    } catch (final org.thryft.protocol.OutputProtocolException e) {
        logger.error("error serializing service response: ", e);
        __httpServletResponse.sendError(500);
        return;
    }
    String __httpServletResponseBody = __httpServletResponseBodyWriter.toString();

    __httpServletResponse.setStatus(200);

%(write_http_servlet_response_body)s
""" % locals()
            sections.append(write_response)

            annotations = rpad("\n".join(annotations), "\n")
            sections = "\n\n".join(sections)

            return """\
%(annotations)sprivate void %(name)s(final javax.servlet.http.HttpServletRequest __httpServletRequest, final javax.servlet.http.HttpServletResponse __httpServletResponse) throws java.io.IOException, javax.servlet.ServletException {
%(sections)s
}
""" % locals()
Exemplo n.º 49
0
 def java_validate_method_name(self):
     return 'validate' + upper_camelize(self.name)
        def __repr__(self):
            annotations = self.java_annotations()
            name = '__do' + self.java_name()[0].upper() + self.java_name()[1:]

            sections = []

            variable_declarations = []
            for parameter in self.parameters:
                variable_declarations.append(parameter.java_local_declaration(final=False))
            if self.return_field is not None:
                variable_declarations.append(self.return_field.type.java_declaration_name() + " __return_value;")
            if len(variable_declarations) > 0:
                sections.append("\n".join(indent(' ' * 4, variable_declarations)))

            read_request = []
            if len(self.parameters) > 0:
                path_parameter = self.java_rest_path_parameter()
                if path_parameter is None or len(self.parameters) > 1:
                    request_type_name = 'Messages.' + upper_camelize(self.name) + 'Request'
                else:
                    request_type_name = None
                if self.java_rest_request_method() in ('POST', 'PUT'):
                    read_http_servlet_request_body = self._java_read_http_servlet_request_body(variable_name_prefix='__')
                    read_request.append("""\
%(read_http_servlet_request_body)s
final org.thryft.protocol.InputProtocol __restRequestProtocol = new org.thryft.protocol.JacksonJsonInputProtocol(new java.io.StringReader(__httpServletRequestBody));
""" % locals())
                else:
                    if path_parameter is not None:
                        path_info_prefix = self.java_rest_path_prefix()
                        path_info_prefix_len = len(path_info_prefix)
                        path_parameter_name = path_parameter.java_name()
                        path_parameter_from_string = path_parameter.type.java_from_string("java.net.URLDecoder.decode(__httpServletRequest.getPathInfo().substring(%(path_info_prefix_len)u), \"UTF-8\")" % locals())
                        read_request.append("""\
if (__httpServletRequest.getPathInfo().length() > %(path_info_prefix_len)u) {
    %(path_parameter_name)s = %(path_parameter_from_string)s;
} else {
    __httpServletResponse.sendError(404);
    return;
}
""" % locals())
                    if path_parameter is None or len(self.parameters) > 1:
                        annotations.append('@SuppressWarnings("unchecked")')
                        read_request.append("""\
java.util.Map<String, String> __restRequestParameterStringMap = new java.util.LinkedHashMap<String, String>();
for (final java.util.Map.Entry<String, String[]> __httpServletRequestParameter : ((java.util.Map<String, String[]>)__httpServletRequest.getParameterMap()).entrySet()) {
    __restRequestParameterStringMap.put(__httpServletRequestParameter.getKey(), __httpServletRequestParameter.getValue()[0]);
}
final org.thryft.protocol.InputProtocol __restRequestProtocol = new org.thryft.protocol.StringMapInputProtocol(__restRequestParameterStringMap);
""" % locals())
                if request_type_name is not None:
                    variable_assignments = []
                    for parameter in self.parameters:
                        if parameter is path_parameter:
                            continue
                        variable_assignments.append(parameter.java_name() + ' = __serviceRequest.' + parameter.java_getter_name() + '();')
                    variable_assignments = "\n".join(indent(' ' * 4, variable_assignments))
                    read_request.append("""\
try {
    final %(request_type_name)s __serviceRequest = new %(request_type_name)s(__restRequestProtocol);
%(variable_assignments)s
} catch (final IllegalArgumentException e) {
    logger.debug("error deserializing service request: ", e);
    __httpServletResponse.sendError(400);
    return;
} catch (final NullPointerException e) {
    logger.debug("error deserializing service request: ", e);
    __httpServletResponse.sendError(400);
    return;
} catch (final org.thryft.protocol.InputProtocolException e) {
    logger.debug("error deserializing service request: ", e);
    __httpServletResponse.sendError(400);
    return;
}
""" % locals())

            if len(read_request) > 0:
                sections.append("\n".join(indent(' ' * 4, read_request)))

            service_call = \
                "service.%s(%s);" % (
                    _servlet_java_generator._ServletJavaGenerator._Function.java_name(self),
                    ', '.join([parameter.java_name() for parameter in self.parameters])
                )
            if self.return_field is not None:
                service_call = '__return_value = ' + service_call
            if len(self.throws) > 0:
                catches = ' '.join(["""\
catch (final %s e) {
    final java.io.StringWriter __httpServletResponseBodyWriter = new java.io.StringWriter();
    final org.thryft.protocol.OutputProtocol __oprot = new org.thryft.protocol.JacksonJsonOutputProtocol(__httpServletResponseBodyWriter);
    try {
        e.write(__oprot);
        __oprot.flush();
    } catch (final org.thryft.protocol.OutputProtocolException e1) {
        logger.error("error serializing service error response: ", e1);
        __httpServletResponse.sendError(500);
        return;
    }
    final String __httpServletResponseBody = __httpServletResponseBodyWriter.toString();
    __httpServletResponse.getWriter().write(__httpServletResponseBody);
    __httpServletResponse.setHeader("Content-Type", "application/json");
    __httpServletResponse.setHeader("Warning", e.getClass().getName());
    __httpServletResponse.setStatus(404);
    return;
}""" % throw.type.java_qname() for throw in self.throws])
                service_call = """\
try {
    %(service_call)s
} %(catches)s
""" % locals()
            sections.append(indent(' ' * 4, service_call))

            if self.return_field is None:
                write_response = """\
    __httpServletResponse.setStatus(204);"""
            elif isinstance(self.return_field.type, JavaBoolType):
                # assert self.java_rest_request_method() in ('DELETE', 'HEAD'), self.java_rest_request_method()
                write_response = """\
    if (__return_value) {
        __httpServletResponse.setStatus(204);
    } else {
        __httpServletResponse.setStatus(404);
    }""" % locals()
            else:
                return_write = \
                    indent(' ' * 8, self.return_field.type.java_write_protocol('__return_value'))
                if isinstance(self.return_field.type, _JavaBaseType):
                    return_ttype_id = self.return_field.type.thrift_ttype_id()
                    return_write = """\
        oprot.writeListBegin(new org.thryft.protocol.TList((byte)%(return_ttype_id)u, 1));
%(return_write)s
        oprot.writeListEnd();""" % locals()
                write_http_servlet_response_body = indent(' ' * 4, self._java_write_http_servlet_response_body(variable_name_prefix='__'))
                write_response = """\
    final java.io.StringWriter __httpServletResponseBodyWriter = new java.io.StringWriter();
    final org.thryft.protocol.OutputProtocol oprot = new org.thryft.protocol.JacksonJsonOutputProtocol(__httpServletResponseBodyWriter);
    try {
%(return_write)s
        oprot.flush();
    } catch (final org.thryft.protocol.OutputProtocolException e) {
        logger.error("error serializing service response: ", e);
        __httpServletResponse.sendError(500);
        return;
    }
    String __httpServletResponseBody = __httpServletResponseBodyWriter.toString();

    __httpServletResponse.setStatus(200);

%(write_http_servlet_response_body)s
""" % locals()
            sections.append(write_response)

            annotations = rpad("\n".join(annotations), "\n")
            sections = "\n\n".join(sections)

            return """\
%(annotations)sprivate void %(name)s(final javax.servlet.http.HttpServletRequest __httpServletRequest, final javax.servlet.http.HttpServletResponse __httpServletResponse) throws java.io.IOException, javax.servlet.ServletException {
%(sections)s
}
""" % locals()