private MethodResultMessage parseMethodResult(Document input) throws JAXBException { MethodResultMessage request = unmarshaller.unmarshal(input, MethodResultMessage.class).getValue(); MethodResult result = request.getResult(); Class<?> resultClass; try { resultClass = Class.forName(result.getClassName()); } catch (ClassNotFoundException e) { throw new FilterException(e); } JAXBContext jaxbContext = JAXBContext.newInstance(MethodResult.class, resultClass); Unmarshaller unmarshaller = jaxbContext.createUnmarshaller(); Object parsedArg = unmarshaller.unmarshal((Node) result.getArg(), resultClass).getValue(); result.setArg(parsedArg); return request; }
private MethodResult invokeMethod(Object service, Method method, Object[] args) { MethodResult returnTemplate = new MethodResult(); try { Object result = method.invoke(service, args); if (method.getReturnType().getName().equals("void")) { returnTemplate.setType(ReturnType.Void); } else { returnTemplate.setType(ReturnType.Object); returnTemplate.setArg(result); returnTemplate.setClassName(result.getClass().getName()); } } catch (InvocationTargetException e) { returnTemplate.setType(ReturnType.Exception); returnTemplate.setArg(e.getCause()); returnTemplate.setClassName(e.getClass().getName()); } catch (IllegalAccessException e) { returnTemplate.setType(ReturnType.Exception); returnTemplate.setArg(e); returnTemplate.setClassName(e.getClass().getName()); } return returnTemplate; }
public static void convertResult(MethodResult result) { Object convertArgument = convertArgument(result.getClassName(), result.getArg()); result.setArg(convertArgument); }
public static void convertResult(MethodResult result) { Object convertArgument = convertArgument(result.getClassName(), result.getArg()); result.setArg(convertArgument); }
Object modelObject = ModelUtils.generateModelOutOfWrapper(wrapper); LOGGER.debug("successfully generated model"); message.getResult().setArg(modelObject); message.getResult().setClassName(wrapper.getModelClass()); } else if (message.getResult().getArg() != null arg.add(model); message.getResult().setArg(arg);
@Override public MethodResultMessage doFilter(MethodCallRequest input, Map<String, Object> metadata) throws FilterException { ObjectMapper objectMapper = JsonUtils.createObjectMapperWithIntroSpectors(); MethodResultMessage resultMessage; try { String jsonString = objectMapper.writeValueAsString(input); String resultString = (String) next.filter(jsonString, metadata); if (resultString == null) { return null; } resultMessage = objectMapper.readValue(resultString, MethodResultMessage.class); } catch (IOException e) { throw new FilterException(e); } MethodResult result = resultMessage.getResult(); if (result.getType().equals(ReturnType.Void)) { result.setArg(null); } else { Class<?> className; try { className = Class.forName(result.getClassName()); } catch (ClassNotFoundException e) { throw new FilterException(e); } Object convertedValue = objectMapper.convertValue(result.getArg(), className); result.setArg(convertedValue); } return resultMessage; }
@Override public SecureResponse doFilter(SecureRequest input, Map<String, Object> metadata) throws FilterException { ObjectMapper objectMapper = createObjectMapper(); SecureResponse resultMessage; try { String jsonString = objectMapper.writeValueAsString(input); String resultString = (String) next.filter(jsonString, metadata); if (resultString == null) { return null; } resultMessage = objectMapper.readValue(resultString, SecureResponse.class); } catch (IOException e) { throw new FilterException(e); } MethodResult result = resultMessage.getMessage().getResult(); if (result.getType().equals(ReturnType.Void)) { result.setArg(null); } else { JsonUtils.convertResult(result); } return resultMessage; }