public ResponseMeta findResponseMeta(int statusCode) { return responsesMeta.findResponseMeta(statusCode); }
protected void initSuccessResponse(Type returnType) { ResponseMeta successResponse = new ResponseMeta(); successResponse.setJavaType(TypeFactory.defaultInstance().constructType(returnType)); responseMap.put(Status.OK.getStatusCode(), successResponse); }
public void init(ClassLoader classLoader, String packageName, Swagger swagger, Operation operation, Type returnType) { initSuccessResponse(returnType); for (Entry<String, Response> entry : operation.getResponses().entrySet()) { if ("default".equals(entry.getKey())) { defaultResponse = new ResponseMeta(); defaultResponse.init(classLoader, packageName, swagger, entry.getValue()); continue; } Integer statusCode = Integer.parseInt(entry.getKey()); ResponseMeta responseMeta = responseMap.get(statusCode); if (responseMeta == null) { responseMeta = new ResponseMeta(); responseMap.put(statusCode, responseMeta); } responseMeta.init(classLoader, packageName, swagger, entry.getValue()); } if (defaultResponse == null) { // swagger中没有定义default,加上default专用于处理exception ResponseMeta responseMeta = new ResponseMeta(); responseMeta.setJavaType(COMMON_EXCEPTION_JAVATYPE); defaultResponse = responseMeta; } }
@Override public HttpHeaders getHeaders() { if (httpHeaders == null) { HttpHeaders tmpHeaders = new HttpHeaders(); Headers headers = response.getHeaders(); if (headers.getHeaderMap() != null) { for (Entry<String, List<Object>> entry : headers.getHeaderMap().entrySet()) { for (Object value : entry.getValue()) { tmpHeaders.add(entry.getKey(), String.valueOf(value)); } } } httpHeaders = tmpHeaders; } return httpHeaders; }
result = produceProcessor.decodeResponse(responseEx.getBodyBuffer(), responseMeta.getJavaType()); } catch (Exception e) { return Response.consumerFailResp(e); Collection<String> headerValues = responseEx.getHeaders(headerName); for (String headerValue : headerValues) { response.getHeaders().addHeader(headerName, headerValue);
for (String headerName : responseMeta.getHeaders().keySet()) { for (String value : httpResponse.headers().getAll(headerName)) { response.getHeaders().addHeader(headerName, value);
@ApiResponse(code = 200, response = User.class, message = "") @ResponseHeaders({@ResponseHeader(name = "h1", response = String.class), @ResponseHeader(name = "h2", response = String.class)}) @RequestMapping(path = "/cseResponse", method = RequestMethod.GET) public Response cseResponse(InvocationContext c1) { Response response = Response.createSuccess(Status.ACCEPTED, new User()); Headers headers = response.getHeaders(); headers.addHeader("h1", "h1v " + c1.getContext().toString()); InvocationContext c2 = ContextUtils.getInvocationContext(); headers.addHeader("h2", "h2v " + c2.getContext().toString()); return response; }
public MAPPER createResponseMapper(Type src, Type target) { Type type = choose(src, target); if (ParameterizedType.class.isAssignableFrom(type.getClass())) { type = ((ParameterizedType) type).getRawType(); } MAPPER mapper = mappers.get(type); if (mapper != null) { return mapper; } Converter converter = converterMgr.findConverter(src, target); return doCreateResponseMapper(converter); }
public WrapSchema findResponseSchema(int statusCode) { if (Family.SUCCESSFUL.equals(Family.familyOf(statusCode))) { return responseSchema; } ResponseMeta responseMeta = operationMeta.findResponseMeta(statusCode); return ProtobufSchemaUtils.getOrCreateSchema(responseMeta.getJavaType()); } }
public void init(SchemaMeta schemaMeta, Method method, String operationPath, String httpMethod, Operation swaggerOperation) { this.schemaMeta = schemaMeta; schemaQualifiedName = schemaMeta.getSchemaId() + "." + method.getName(); microserviceQualifiedName = schemaMeta.getMicroserviceName() + "." + schemaQualifiedName; this.operationPath = operationPath; this.method = method; this.httpMethod = httpMethod.toUpperCase(Locale.US); this.swaggerOperation = swaggerOperation; executor = ExecutorManager.findExecutor(this); collectMethodType(); responsesMeta.init(schemaMeta.getMicroserviceMeta().getClassLoader(), schemaMeta.getPackageName(), schemaMeta.getSwagger(), swaggerOperation, method.getGenericReturnType()); }
@Override public Object mapResponse(Response response) { ResponseBuilder responseBuilder = javax.ws.rs.core.Response.status(response.getStatus()).entity(response.getResult()); Map<String, List<Object>> headers = response.getHeaders().getHeaderMap(); if (headers != null) { for (Entry<String, List<Object>> entry : headers.entrySet()) { responseBuilder.header(entry.getKey(), entry.getValue()); } } return responseBuilder.build(); } }
@Override public Response mapResponse(StatusType status, Object response) { javax.ws.rs.core.Response jaxrsResponse = (javax.ws.rs.core.Response) response; Response cseResponse = Response.status(jaxrsResponse.getStatusInfo()).entity(jaxrsResponse.getEntity()); MultivaluedMap<String, Object> headers = jaxrsResponse.getHeaders(); for (Entry<String, List<Object>> entry : headers.entrySet()) { if (entry.getValue() == null || entry.getValue().isEmpty()) { continue; } cseResponse.getHeaders().getHeaderMap().put(entry.getKey(), entry.getValue()); } return cseResponse; } }
private void onProviderResponse(Invocation invocation, Response response) { routingContext.response().putHeader("content-type", "application/grpc"); if (response.getHeaders().getHeaderMap() != null) { for (Entry<String, List<Object>> entry : response.getHeaders().getHeaderMap().entrySet()) { for (Object value : entry.getValue()) { routingContext.response().putHeader(entry.getKey(), String.valueOf(value)); } } } if (response.isSuccessed()) { sendSuccessResponse(invocation, response); return; } sendFailResponse(response.getResult()); }
@SuppressWarnings("deprecation") protected void sendResponse(Response response) throws Exception { if (response.getHeaders().getHeaderMap() != null) { for (Entry<String, List<Object>> entry : response.getHeaders().getHeaderMap().entrySet()) { for (Object value : entry.getValue()) { if (!entry.getKey().equalsIgnoreCase(HttpHeaders.CONTENT_LENGTH)) { responseEx.addHeader(entry.getKey(), String.valueOf(value)); } } } } responseEx.setStatus(response.getStatusCode(), response.getReasonPhrase()); responseEx.setContentType(produceProcessor.getName()); Object body = response.getResult(); if (response.isFailed()) { body = ((InvocationException) body).getErrorData(); } try (BufferOutputStream output = new BufferOutputStream(Unpooled.compositeBuffer())) { produceProcessor.encodeResponse(output, body); responseEx.setBodyBuffer(output.getBuffer()); for (HttpServerFilter filter : httpServerFilters) { filter.beforeSendResponse(invocation, responseEx); } responseEx.flushBuffer(); } }