public static Document parseDocument(String input) { DocumentBuilderFactory dbf = DocumentBuilderFactory.newInstance(); Document doc; try { DocumentBuilder db = dbf.newDocumentBuilder(); doc = db.parse(new InputSource(new StringReader(input))); } catch (ParserConfigurationException e) { throw new FilterException(e); } catch (SAXException e) { throw new FilterException(e); } catch (IOException e) { throw new FilterException(e); } return doc; }
public static Document parseDocument(String input) { DocumentBuilderFactory dbf = DocumentBuilderFactory.newInstance(); Document doc; try { DocumentBuilder db = dbf.newDocumentBuilder(); doc = db.parse(new InputSource(new StringReader(input))); } catch (ParserConfigurationException e) { throw new FilterException(e); } catch (SAXException e) { throw new FilterException(e); } catch (IOException e) { throw new FilterException(e); } return doc; }
@Override protected String doFilter(String input, Map<String, Object> metaData) { EncryptedMessage message; try { LOGGER.debug("attempting to parse encrypted json message"); message = objectMapper.readValue(input, EncryptedMessage.class); } catch (IOException e) { throw new FilterException(e); } LOGGER.info("Encrypted message parsed sucessfully, passing to next filter {}", next.getClass().getName()); byte[] result = (byte[]) next.filter(message, metaData); return Base64.encodeBase64String(result); }
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; }
@Override protected SecureResponse doFilter(SecureRequest input, Map<String, Object> metaData) { try { verify(input); } catch (MessageVerificationFailedException e) { throw new FilterException(e); } return (SecureResponse) next.filter(input, metaData); }
private Document serializeRequest(MethodCallRequest result) { DOMResult domResult = new DOMResult(); try { @SuppressWarnings("unchecked") List<Class<?>> classes = ClassUtils.convertClassNamesToClasses(result.getMethodCall().getClasses()); if (classes.contains(null)) { throw new FilterException("Could not load all required classes. Require: " + result.getMethodCall().getClasses() + " got: " + classes); } classes.add(MethodCallRequest.class); JAXBContext jaxbContext = JAXBContext.newInstance(classes.toArray(new Class<?>[classes.size()])); Marshaller marshaller = jaxbContext.createMarshaller(); marshaller.marshal(new JAXBElement<MethodCallRequest>(new QName(MethodCallRequest.class.getSimpleName()), MethodCallRequest.class, result), domResult); } catch (JAXBException e) { throw new FilterException(e); } return (Document) domResult.getNode(); }
@Override public String doFilter(String input, Map<String, Object> metadata) throws FilterException { ObjectMapper objectMapper = JsonUtils.createObjectMapperWithIntroSpectors(); MethodCallRequest call; try { call = objectMapper.readValue(input, MethodCallRequest.class); JsonUtils.convertAllArgs(call); MethodResultMessage returnValue = (MethodResultMessage) next.filter(call, metadata); return objectMapper.writeValueAsString(returnValue); } catch (IOException e) { throw new FilterException(e); } }
@Override protected String doFilter(String input, Map<String, Object> metaData) { SecureRequest request; try { LOGGER.trace("attempt to read SecureRequest from inputData"); request = mapper.readValue(input, SecureRequest.class); } catch (IOException e) { throw new FilterException(e); } String callId = request.getMessage().getCallId(); LOGGER.info("extracted callId \"{}\" from message", callId); metaData.put("callId", callId); LOGGER.debug("converting arguments of inputmessage"); JsonUtils.convertAllArgs(request.getMessage()); LOGGER.debug("invoking next filter: {}", next.getClass().getName()); SecureResponse response = (SecureResponse) next.filter(request, metaData); LOGGER.debug("response received for callId {}: {}. serializing to json", callId, response); try { return mapper.writeValueAsString(response); } catch (IOException e) { throw new FilterException(e); } }
@Override protected byte[] doFilter(byte[] input, Map<String, Object> metaData) { SecureRequest request; try { LOGGER.trace("attempt to read SecureRequest from inputData"); request = mapper.readValue(input, SecureRequest.class); } catch (IOException e) { throw new FilterException(e); } String callId = request.getMessage().getCallId(); LOGGER.info("extracted callId \"{}\" from message", callId); metaData.put("callId", callId); LOGGER.debug("converting arguments of inputmessage"); JsonUtils.convertAllArgs(request.getMessage()); LOGGER.debug("invoking next filter: {}", next.getClass().getName()); SecureResponse response = (SecureResponse) next.filter(request, metaData); LOGGER.debug("response received for callId {}: {}. serializing to json", callId, response); try { return mapper.writeValueAsBytes(response); } catch (IOException e) { throw new FilterException(e); } }
private FilterChainElement getInstanceFromListElement(Object next) throws FilterConfigurationException { if (next instanceof String) { try { Class<?> class1 = Class.forName((String) next); return createFromClass(class1); } catch (ClassNotFoundException e) { throw new FilterException(e); } } if (next instanceof Class) { return createFromClass(next); } if (next instanceof FilterChainElementFactory) { return ((FilterChainElementFactory) next).newInstance(); } return null; }
@Override public String doFilter(String input, Map<String, Object> metadata) throws FilterException { Document doc = parseDocument(input); Document result = (Document) next.filter(doc, metadata); try { return writeDocument(result); } catch (TransformerException e) { throw new FilterException(e); } }
@Override public Document doFilter(Document input, Map<String, Object> metadata) throws FilterException { MethodCallRequest call; try { call = parseMethodCall(input); } catch (JAXBException e) { throw new FilterException(e); } MethodResultMessage result = (MethodResultMessage) next.filter(call, metadata); return serializeResult(result); }
@Override protected MethodResultMessage doFilter(MethodCallRequest input, Map<String, Object> metaData) throws FilterException { Document serializeRequest = serializeRequest(input); Document resultDocument = (Document) next.filter(serializeRequest, metaData); try { return parseMethodResult(resultDocument); } catch (JAXBException e) { throw new FilterException(e); } }
@Override public Document doFilter(Document input, Map<String, Object> metadata) throws FilterException { String docString; try { docString = writeDocument(input); } catch (TransformerException e) { throw new FilterException(e); } String result = (String) next.filter(docString, metadata); return parseDocument(result); }
@Override protected byte[] doFilter(EncryptedMessage input, Map<String, Object> metaData) { byte[] encryptedKey = input.getEncryptedKey(); byte[] decryptedMessage; SecretKey sessionKey; LOGGER.debug("decrypting encryptedMessage"); try { LOGGER.trace("decrypting session-key"); byte[] sessionKeyData = CipherUtils.decrypt(encryptedKey, privateKeySource.getPrivateKey()); sessionKey = CipherUtils.deserializeSecretKey(sessionKeyData, secretKeyAlgorithm); LOGGER.trace("decrypting message using session-key"); decryptedMessage = CipherUtils.decrypt(input.getEncryptedContent(), sessionKey); } catch (DecryptionException e) { throw new FilterException(e); } LOGGER.debug("forwarding decrypted message to next filter {}", next); byte[] plainResult = (byte[]) next.filter(decryptedMessage, metaData); try { LOGGER.trace("encrypting result using previously decrypted session-key"); return CipherUtils.encrypt(plainResult, sessionKey); } catch (EncryptionException e) { throw new FilterException(e); } }
@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; }