use of javax.xml.soap.MessageFactory in project jbossws-cxf by jbossws.
the class JBWS3945TestCase method testSOAP12SoapFaultExceptionOnHTTP400UsingSAAJ.
@Test
@RunAsClient
public void testSOAP12SoapFaultExceptionOnHTTP400UsingSAAJ() throws Exception {
try {
// <soap:Envelope xmlns:soap="http://www.w3.org/2003/05/soap-envelope"><soap:Body><ns2:throwSoapFaultException xmlns:ns2="http://server.exception.samples.jaxws.ws.test.jboss.org/"/></soap:Body></soap:Envelope>
SOAPConnectionFactory conFac = SOAPConnectionFactory.newInstance();
SOAPConnection con = conFac.createConnection();
MessageFactory msgFactory = MessageFactory.newInstance();
SOAPMessage msg = msgFactory.createMessage();
msg.getSOAPBody().addBodyElement(new QName(targetNS, "throwSoapFaultException"));
SOAPMessage response = con.call(msg, new URL(targetEndpoint + "Servlet"));
Element el = (Element) response.getSOAPBody().getChildElements().next();
assertEquals("Fault", el.getLocalName());
} catch (Exception e) {
fail(e);
}
}
use of javax.xml.soap.MessageFactory in project iaf by ibissource.
the class SoapProviderTest method createMessage.
private SOAPMessage createMessage(String filename, boolean addAttachment, boolean isSoap1_1) throws IOException, SOAPException {
MessageFactory factory = MessageFactory.newInstance(isSoap1_1 ? SOAPConstants.SOAP_1_1_PROTOCOL : SOAPConstants.SOAP_1_2_PROTOCOL);
SOAPMessage soapMessage = factory.createMessage();
StreamSource streamSource = new StreamSource(getFile(filename));
soapMessage.getSOAPPart().setContent(streamSource);
if (addAttachment) {
InputStream fis = new ByteArrayInputStream(ATTACHMENT_CONTENT.getBytes());
DataHandler dataHander = new DataHandler(new ByteArrayDataSource(fis, ATTACHMENT_MIMETYPE));
AttachmentPart part = soapMessage.createAttachmentPart(dataHander);
soapMessage.addAttachmentPart(part);
}
return soapMessage;
}
use of javax.xml.soap.MessageFactory in project iaf by ibissource.
the class SoapWrapper method signMessage.
public Message signMessage(Message soapMessage, String user, String password, boolean passwordDigest) {
try {
// We only support signing for soap1_1 ?
// Create an empty message and populate it later. createMessage(MimeHeaders, InputStream) requires proper headers to be set which we do not have...
MessageFactory factory = MessageFactory.newInstance(SOAPConstants.SOAP_1_1_PROTOCOL);
SOAPMessage msg = factory.createMessage();
SOAPPart part = msg.getSOAPPart();
part.setContent(new StreamSource(soapMessage.asInputStream()));
// create unsigned envelope
SOAPEnvelope unsignedEnvelope = part.getEnvelope();
Document doc = unsignedEnvelope.getOwnerDocument();
// create security header and insert it into unsigned envelope
WSSecHeader secHeader = new WSSecHeader(doc);
secHeader.insertSecurityHeader();
// add a UsernameToken
WSSecUsernameToken tokenBuilder = new WSSecUsernameToken(secHeader);
tokenBuilder.setIdAllocator(idAllocator);
if (passwordDigest) {
tokenBuilder.setPasswordType(WSConstants.PASSWORD_DIGEST);
} else {
tokenBuilder.setPasswordType(WSConstants.PASSWORD_TEXT);
}
tokenBuilder.setPrecisionInMilliSeconds(false);
tokenBuilder.setUserInfo(user, password);
WSTimeSource timesource = tokenBuilder.getWsTimeSource();
tokenBuilder.addNonce();
tokenBuilder.addCreated();
tokenBuilder.prepare(null);
Element element = tokenBuilder.getUsernameTokenElement();
String nonce = XmlUtils.getChildTagAsString(element, "wsse:Nonce");
byte[] decodedNonce = org.apache.xml.security.utils.XMLUtils.decode(nonce);
String created = XmlUtils.getChildTagAsString(element, "wsu:Created");
WSSecSignature sign = new WSSecSignature(secHeader);
sign.setIdAllocator(idAllocator);
sign.setCustomTokenValueType(WSConstants.WSS_USERNAME_TOKEN_VALUE_TYPE);
sign.setCustomTokenId(tokenBuilder.getId());
sign.setSigCanonicalization(WSConstants.C14N_EXCL_OMIT_COMMENTS);
sign.setAddInclusivePrefixes(false);
// conform WS-Trust spec
String signatureValue = UsernameTokenUtil.doPasswordDigest(decodedNonce, created, password);
sign.setSecretKey(signatureValue.getBytes(StreamUtil.DEFAULT_CHARSET));
// UT_SIGNING no longer exists since v1.5.11
sign.setKeyIdentifierType(WSConstants.CUSTOM_SYMM_SIGNING);
sign.setSignatureAlgorithm(WSConstants.HMAC_SHA1);
sign.build(null);
tokenBuilder.prependToHeader();
// add a Timestamp
WSSecTimestamp timestampBuilder = new WSSecTimestamp(secHeader);
timestampBuilder.setWsTimeSource(timesource);
timestampBuilder.setTimeToLive(300);
timestampBuilder.setIdAllocator(idAllocator);
timestampBuilder.build();
return new Message(doc);
} catch (Exception e) {
throw new RuntimeException("Could not sign message", e);
}
}
use of javax.xml.soap.MessageFactory in project iaf by ibissource.
the class SoapWrapperTest method toSoapMessage.
private Message toSoapMessage(URL url) throws Exception {
MessageFactory factory = MessageFactory.newInstance(SOAPConstants.SOAP_1_1_PROTOCOL);
SOAPMessage msg = factory.createMessage();
SOAPPart part = msg.getSOAPPart();
part.setContent(new StreamSource(url.openStream()));
// create unsigned envelope
SOAPEnvelope unsignedEnvelope = part.getEnvelope();
Document doc = unsignedEnvelope.getOwnerDocument();
return new Message(doc);
}
use of javax.xml.soap.MessageFactory in project iaf by ibissource.
the class XmlUtils method getVersionInfo.
public static Map<String, String> getVersionInfo() {
Map<String, String> map = new LinkedHashMap<>();
SAXParserFactory spFactory = getSAXParserFactory();
map.put("SAXParserFactory-class", spFactory.getClass().getName());
DocumentBuilderFactory domFactory1 = getDocumentBuilderFactory(false);
map.put("DocumentBuilderFactory1-class", domFactory1.getClass().getName());
DocumentBuilderFactory domFactory2 = getDocumentBuilderFactory(true);
map.put("DocumentBuilderFactory2-class", domFactory2.getClass().getName());
TransformerFactory tFactory1 = getTransformerFactory(1);
map.put("TransformerFactory1-class", tFactory1.getClass().getName());
TransformerFactory tFactory2 = getTransformerFactory(2);
map.put("TransformerFactory2-class", tFactory2.getClass().getName());
XMLEventFactory xmlEventFactory = XMLEventFactory.newInstance();
map.put("XMLEventFactory-class", xmlEventFactory.getClass().getName());
XMLInputFactory xmlInputFactory = XMLInputFactory.newInstance();
map.put("XMLInputFactory-class", xmlInputFactory.getClass().getName());
XMLOutputFactory xmlOutputFactory = XMLOutputFactory.newInstance();
map.put("XMLOutputFactory-class", xmlOutputFactory.getClass().getName());
try {
MessageFactory messageFactory = MessageFactory.newInstance();
map.put("MessageFactory-class", messageFactory.getClass().getName());
} catch (SOAPException e) {
log.warn("unable to create MessageFactory", e);
map.put("MessageFactory-class", "unable to create MessageFactory (" + e.getClass().getName() + "): " + e.getMessage() + ")");
}
try {
map.put("Xerces-Version", org.apache.xerces.impl.Version.getVersion());
} catch (Throwable t) {
log.warn("could not get Xerces version", t);
map.put("Xerces-Version", "not found (" + t.getClass().getName() + "): " + t.getMessage() + ")");
}
try {
String xalanVersion = org.apache.xalan.Version.getVersion();
map.put("Xalan-Version", xalanVersion);
} catch (Throwable t) {
log.warn("could not get Xalan version", t);
map.put("Xalan-Version", "not found (" + t.getClass().getName() + "): " + t.getMessage() + ")");
}
try {
String saxonVersion = net.sf.saxon.Version.getProductTitle();
map.put("Saxon-Version", saxonVersion);
} catch (Throwable t) {
log.warn("could not get Saxon version", t);
map.put("Saxon-Version", "not found (" + t.getClass().getName() + "): " + t.getMessage() + ")");
}
try {
if (xmlInputFactory instanceof WstxInputFactory) {
ReaderConfig woodstoxConfig = ((WstxInputFactory) xmlInputFactory).createPrivateConfig();
String woodstoxVersion = ReaderConfig.getImplName() + " " + ReaderConfig.getImplVersion() + "; xml1.1 " + (woodstoxConfig.isXml11() ? "" : "not ") + "enabled";
map.put("Woodstox-Version", woodstoxVersion);
}
} catch (Throwable t) {
log.warn("could not get Woodstox version", t);
map.put("Woodstox-Version", "not found (" + t.getClass().getName() + "): " + t.getMessage() + ")");
}
return map;
}
Aggregations