Search in sources :

Example 11 with Doc

use of com.predic8.membrane.annot.model.doc.Doc in project service-proxy by membrane.

the class AuthHead2BodyInterceptor method getUsername.

private Node getUsername(Document doc, Element header) {
    Element e = doc.createElement("username");
    e.appendChild(doc.createTextNode(((Element) doc.getElementsByTagNameNS(COM_NS, "userName").item(0)).getTextContent()));
    e.setAttributeNS(XSI_NS, "xsi:type", "xsd:string");
    return e;
}
Also used : Element(org.w3c.dom.Element) MCElement(com.predic8.membrane.annot.MCElement)

Example 12 with Doc

use of com.predic8.membrane.annot.model.doc.Doc in project service-proxy by membrane.

the class AbstractHttpHandler method generateErrorResponse.

private Response generateErrorResponse(Exception e) {
    String msg;
    boolean printStackTrace = transport.isPrintStackTrace();
    if (printStackTrace) {
        StringWriter sw = new StringWriter();
        e.printStackTrace(new PrintWriter(sw));
        msg = sw.toString();
    } else {
        msg = e.toString();
    }
    String comment = "Stack traces can be " + (printStackTrace ? "dis" : "en") + "abled by setting the " + "@printStackTrace attribute on <a href=\"https://membrane-soa.org/service-proxy-doc/current/configuration/reference/transport.htm\">transport</a>. " + "More details might be found in the log.";
    Response error = null;
    ResponseBuilder b = null;
    if (e instanceof URISyntaxException)
        b = Response.badRequest();
    if (b == null)
        b = Response.internalServerError();
    switch(ContentTypeDetector.detect(exchange.getRequest()).getEffectiveContentType()) {
        case XML:
            error = b.header(HttpUtil.createHeaders(MimeType.TEXT_XML_UTF8)).body(("<error><message>" + StringEscapeUtils.escapeXml(msg) + "</message><comment>" + StringEscapeUtils.escapeXml(comment) + "</comment></error>").getBytes(Constants.UTF_8_CHARSET)).build();
            break;
        case JSON:
            ByteArrayOutputStream baos = new ByteArrayOutputStream();
            try {
                JsonGenerator jg = new JsonFactory().createGenerator(baos);
                jg.writeStartObject();
                jg.writeFieldName("error");
                jg.writeString(msg);
                jg.writeFieldName("comment");
                jg.writeString(comment);
                jg.close();
            } catch (Exception f) {
                log.error("Error generating JSON error response", f);
            }
            error = b.header(HttpUtil.createHeaders(MimeType.APPLICATION_JSON_UTF8)).body(baos.toByteArray()).build();
            break;
        case SOAP:
            error = b.header(HttpUtil.createHeaders(MimeType.TEXT_XML_UTF8)).body(HttpUtil.getFaultSOAPBody("Internal Server Error", msg + " " + comment).getBytes(Constants.UTF_8_CHARSET)).build();
            break;
        case UNKNOWN:
            error = HttpUtil.setHTMLErrorResponse(b, msg, comment);
            break;
    }
    return error;
}
Also used : Response(com.predic8.membrane.core.http.Response) StringWriter(java.io.StringWriter) JsonFactory(com.fasterxml.jackson.core.JsonFactory) JsonGenerator(com.fasterxml.jackson.core.JsonGenerator) URISyntaxException(java.net.URISyntaxException) ByteArrayOutputStream(java.io.ByteArrayOutputStream) ResponseBuilder(com.predic8.membrane.core.http.Response.ResponseBuilder) URISyntaxException(java.net.URISyntaxException) IOException(java.io.IOException) EndOfStreamException(com.predic8.membrane.core.util.EndOfStreamException) PrintWriter(java.io.PrintWriter)

Aggregations

MCElement (com.predic8.membrane.annot.MCElement)3 Doc (com.predic8.membrane.annot.model.doc.Doc)3 Response (com.predic8.membrane.core.http.Response)3 Element (org.w3c.dom.Element)3 ByteArrayOutputStream (java.io.ByteArrayOutputStream)2 IOException (java.io.IOException)2 JsonFactory (com.fasterxml.jackson.core.JsonFactory)1 JsonGenerator (com.fasterxml.jackson.core.JsonGenerator)1 Entry (com.predic8.membrane.annot.model.doc.Doc.Entry)1 Body (com.predic8.membrane.core.http.Body)1 Request (com.predic8.membrane.core.http.Request)1 ResponseBuilder (com.predic8.membrane.core.http.Response.ResponseBuilder)1 Interceptor (com.predic8.membrane.core.interceptor.Interceptor)1 WSDLInterceptor (com.predic8.membrane.core.interceptor.WSDLInterceptor)1 ContainerNode (com.predic8.membrane.core.interceptor.xmlcontentfilter.SimpleXPathParser.ContainerNode)1 ResourceRetrievalException (com.predic8.membrane.core.resolver.ResourceRetrievalException)1 HttpClient (com.predic8.membrane.core.transport.http.HttpClient)1 EndOfStreamException (com.predic8.membrane.core.util.EndOfStreamException)1 URLParamUtil.createQueryString (com.predic8.membrane.core.util.URLParamUtil.createQueryString)1 PrintWriter (java.io.PrintWriter)1