public static void convertResult(MethodResultMessage message) { convertResult(message.getResult()); }
public static void convertResult(MethodResultMessage message) { convertResult(message.getResult()); }
private Document serializeResult(MethodResultMessage result) { DOMResult domResult = new DOMResult(); try { JAXBContext jaxbContext = JAXBContext.newInstance(MethodResultMessage.class, Class.forName(result.getResult().getClassName())); Marshaller marshaller = jaxbContext.createMarshaller(); marshaller.marshal(new JAXBElement<MethodResultMessage>( new QName(MethodResultMessage.class.getSimpleName()), MethodResultMessage.class, result), domResult); } catch (JAXBException e) { throw new FilterException(e); } catch (ClassNotFoundException e) { throw new FilterException(e); } return (Document) domResult.getNode(); }
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; }
if (message.getResult().getArg() != null && OpenEngSBModel.class.isAssignableFrom(message.getResult().getArg().getClass())) { LOGGER.debug("try to generate wrapper from model"); OpenEngSBModel model = (OpenEngSBModel) message.getResult().getArg(); OpenEngSBModelWrapper wrapper = ModelUtils.generateWrapperOutOfModel(model); message.getResult().setArg(wrapper); message.getResult().setClassName(OpenEngSBModelWrapper.class.getName()); LOGGER.debug("successfully generated wrapper"); } else if (message.getResult().getArg() != null && List.class.isAssignableFrom(message.getResult().getArg().getClass())) { List<?> list = (List<?>) message.getResult().getArg(); List<Object> arg = new ArrayList<Object>(); if (list.size() > 0 && OpenEngSBModel.class.isAssignableFrom(list.get(0).getClass())) { arg.add(wrapper); message.getResult().setArg(arg);
if (message.getResult().getArg() != null && message.getResult().getArg().getClass().equals(OpenEngSBModelWrapper.class)) { LOGGER.debug("try to generate model out of wrapper"); OpenEngSBModelWrapper wrapper = (OpenEngSBModelWrapper) message.getResult().getArg(); 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 && List.class.isAssignableFrom(message.getResult().getArg().getClass())) { List<?> list = (List<?>) message.getResult().getArg(); List<Object> arg = new ArrayList<Object>(); if (list.size() > 0 && OpenEngSBModel.class.isAssignableFrom(list.get(0).getClass())) { arg.add(model); message.getResult().setArg(arg);
@Override public MethodResult sendMethodCallWithResult(String portId, String destination, MethodCall call) { OutgoingPort port = getPort(portId); MethodCallRequest request = new MethodCallRequest(call, true); request.setDestination(destination); MethodResultMessage requestResult = port.sendSync(request); return requestResult.getResult(); }
@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; }
@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; }