use of javax.xml.transform.stream.StreamResult in project openhab1-addons by openhab.
the class Helper method nodeToString.
/***
* Converts a xml Node into String
*
* @param node to convert
* @return converted string
*/
public static String nodeToString(Node node) {
StringWriter sw = new StringWriter();
try {
Transformer t = TransformerFactory.newInstance().newTransformer();
t.setOutputProperty(OutputKeys.OMIT_XML_DECLARATION, "yes");
t.transform(new DOMSource(node), new StreamResult(sw));
} catch (TransformerException te) {
logger.warn("nodeToString Transformer Exception", te);
}
return sw.toString();
}
use of javax.xml.transform.stream.StreamResult in project OpenAM by OpenRock.
the class ValidationErrorHandler method print.
/**
* Prints a Node tree recursively.
* @param node A DOM tree Node
* @param encoding character encoding
* @return An xml String representation of the DOM tree.
*/
public static String print(Node node, String encoding) {
if (node == null) {
return null;
}
try {
TransformerFactory tFactory = TransformerFactory.newInstance();
Transformer transformer = tFactory.newTransformer();
transformer.setOutputProperty("omit-xml-declaration", "yes");
transformer.setOutputProperty("encoding", encoding);
DOMSource source = new DOMSource(node);
ByteArrayOutputStream os = new ByteArrayOutputStream(2000);
StreamResult result = new StreamResult(os);
transformer.transform(source, result);
return os.toString(encoding);
} catch (Exception e) {
return null;
}
}
use of javax.xml.transform.stream.StreamResult in project OpenAM by OpenRock.
the class Client method sendRequest.
/**
* Sends a request to a SOAP endpoint and returns the response. The server
* only contains one servlet for different web services. So the SOAP
* endpoint URL has format 'servlet_URL/key'.
*
* @param req the request message.
* @param connectTo the SOAP endpoint URL
* @param certAlias the cert alias of a client certificate
* @param soapAction the SOAPAction header
* @return a response from the SOAP endpoint
* @throws SOAPFaultException if a SOAP Fault occurs
* @throws SOAPBindingException if a error occurs while processing,
* sending or receiving Message
*/
public static Message sendRequest(Message req, String connectTo, String certAlias, String soapAction) throws SOAPBindingException, SOAPFaultException {
URLConnection con = null;
try {
con = getConnection(connectTo, certAlias);
} catch (Exception e) {
Utils.debug.error("Client:sendRequest", e);
throw new SOAPBindingException(e.getMessage());
}
if (soapAction == null || soapAction.length() == 0) {
soapAction = "";
}
con.setRequestProperty(SOAPBindingConstants.SOAP_ACTION_HEADER, soapAction);
Document doc = null;
int securityProfileType = req.getSecurityProfileType();
if (securityProfileType == Message.ANONYMOUS || securityProfileType == Message.BEARER_TOKEN) {
doc = req.toDocument(true);
} else {
Element sigElem = SecurityUtils.signMessage(req);
if (sigElem == null) {
String msg = Utils.bundle.getString("cannotSignRequest");
Utils.debug.error("Client.sendRequest: " + msg);
throw new SOAPBindingException(msg);
}
doc = sigElem.getOwnerDocument();
}
if (Utils.debug.messageEnabled()) {
Utils.debug.message("Client.sendRequest: signed request\n" + req);
}
OutputStream os = null;
try {
os = con.getOutputStream();
Transformer transformer = XMLUtils.getTransformerFactory().newTransformer();
transformer.setOutputProperty("omit-xml-declaration", "yes");
transformer.transform(new DOMSource(doc.getDocumentElement()), new StreamResult(os));
} catch (Exception e) {
Utils.debug.error("Client:sendRequest", e);
throw new SOAPBindingException(e.getMessage());
} finally {
if (os != null) {
try {
os.close();
} catch (Exception e) {
Utils.debug.error("Client:sendRequest", e);
}
}
}
Message resp = null;
InputStream is = null;
try {
is = con.getInputStream();
resp = new Message(is);
if (resp.getSOAPFault() != null) {
throw new SOAPFaultException(resp);
}
Utils.enforceProcessingRules(resp, req.getCorrelationHeader().getMessageID(), false);
} catch (IOException e) {
Utils.debug.error("Client:sendRequest", e);
throw new SOAPBindingException(e.getMessage());
} finally {
if (is != null) {
try {
is.close();
} catch (Exception e) {
Utils.debug.error("Client:sendRequest", e);
}
}
}
resp.setProtocol(con.getURL().getProtocol());
if (resp.getSecurityProfileType() != Message.ANONYMOUS && !SecurityUtils.verifyMessage(resp)) {
String msg = Utils.bundle.getString("cannotVerifySignature");
Utils.debug.error("Client.sendRequest: " + msg);
throw new SOAPBindingException(msg);
}
return resp;
}
use of javax.xml.transform.stream.StreamResult in project OpenAM by OpenRock.
the class XMLResourceExceptionHandler method write.
@Override
public void write(MessageContext context, AuthenticationException exception) {
Reject.ifNull(exception);
try {
ResourceException jre;
if (exception instanceof AuthenticationFailedException) {
jre = new PermanentException(Status.UNAUTHORIZED.getCode(), exception.getMessage(), null);
} else if (exception.getCause() instanceof ResourceException) {
jre = (ResourceException) exception.getCause();
} else {
LOGGER.error(exception.getMessage(), exception);
jre = new InternalServerErrorException("Authentication Failed", exception);
}
AuditTrail auditTrail = context.getAuditTrail();
List<Map<String, Object>> failureReasonList = auditTrail.getFailureReasons();
if (failureReasonList != null && !failureReasonList.isEmpty()) {
jre.setDetail(json(object(field("failureReasons", failureReasonList))));
}
Response response = context.getResponse();
response.setStatus(Status.valueOf(jre.getCode()));
context.<Response>getResponse().getHeaders().put(ContentTypeHeader.valueOf(MediaType.XML_UTF_8.toString()));
ByteArrayOutputStream outputStream = new ByteArrayOutputStream();
Transformer transformer = XMLUtils.getTransformerFactory().newTransformer();
transformer.transform(new DOMSource(asXMLDOM(jre.includeCauseInJsonValue().toJsonValue().asMap())), new StreamResult(outputStream));
response.getEntity().setBytes(outputStream.toByteArray());
} catch (TransformerException e1) {
throw new IllegalStateException("Could not write XML to response", e1);
}
}
use of javax.xml.transform.stream.StreamResult in project OpenAM by OpenRock.
the class MarshallerImpl method marshal.
public void marshal(Object obj, Result result) throws JAXBException {
//XMLSerializable so = Util.toXMLSerializable(obj);
XMLSerializable so = context.getGrammarInfo().castToXMLSerializable(obj);
if (so == null)
throw new MarshalException(Messages.format(Messages.NOT_MARSHALLABLE));
if (result instanceof SAXResult) {
write(so, ((SAXResult) result).getHandler());
return;
}
if (result instanceof DOMResult) {
Node node = ((DOMResult) result).getNode();
if (node == null) {
try {
DocumentBuilder db = XMLUtils.getSafeDocumentBuilder(false);
Document doc = db.newDocument();
((DOMResult) result).setNode(doc);
write(so, new SAX2DOMEx(doc));
} catch (ParserConfigurationException pce) {
throw new JAXBAssertionError(pce);
}
} else {
write(so, new SAX2DOMEx(node));
}
return;
}
if (result instanceof StreamResult) {
StreamResult sr = (StreamResult) result;
XMLWriter w = null;
if (sr.getWriter() != null)
w = createWriter(sr.getWriter());
else if (sr.getOutputStream() != null)
w = createWriter(sr.getOutputStream());
else if (sr.getSystemId() != null) {
String fileURL = sr.getSystemId();
if (fileURL.startsWith("file:///")) {
if (fileURL.substring(8).indexOf(":") > 0)
fileURL = fileURL.substring(8);
else
fileURL = fileURL.substring(7);
}
try {
w = createWriter(new FileOutputStream(fileURL));
} catch (IOException e) {
throw new MarshalException(e);
}
}
if (w == null)
throw new IllegalArgumentException();
write(so, w);
return;
}
// unsupported parameter type
throw new MarshalException(Messages.format(Messages.UNSUPPORTED_RESULT));
}
Aggregations