dims 2005/06/21 19:53:53
Modified: wss4j/src/org/apache/ws/security/handler WSS4JHandler.java
Log:
- Set form optimization explicitly
- Allow different set of actions for send/receive
- Fix messageToDocument to work in presence of attachments.
Revision Changes Path
1.8 +17 -13
ws-fx/wss4j/src/org/apache/ws/security/handler/WSS4JHandler.java
Index: WSS4JHandler.java
===================================================================
RCS file:
/home/cvs/ws-fx/wss4j/src/org/apache/ws/security/handler/WSS4JHandler.java,v
retrieving revision 1.7
retrieving revision 1.8
diff -u -r1.7 -r1.8
--- WSS4JHandler.java 5 Jun 2005 19:00:36 -0000 1.7
+++ WSS4JHandler.java 22 Jun 2005 02:53:53 -0000 1.8
@@ -63,6 +63,7 @@
import javax.xml.transform.Transformer;
import javax.xml.transform.TransformerException;
import javax.xml.transform.TransformerFactory;
+import javax.xml.transform.Source;
import javax.xml.transform.dom.DOMSource;
import javax.xml.transform.stream.StreamResult;
import javax.xml.transform.stream.StreamSource;
@@ -149,10 +150,14 @@
}
public boolean handleRequest(MessageContext mc) {
+ mc.setProperty(org.apache.axis.SOAPPart.ALLOW_FORM_OPTIMIZATION,
+ Boolean.TRUE);
return processMessage(mc, true);
}
public boolean handleResponse(MessageContext mc) {
+ mc.setProperty(org.apache.axis.SOAPPart.ALLOW_FORM_OPTIMIZATION,
+ Boolean.TRUE);
return processMessage(mc, false);
}
@@ -193,9 +198,11 @@
* Get the action first.
*/
Vector actions = new Vector();
- String action = null;
- if ((action = (String)
handlerInfo.getHandlerConfig().get(WSHandlerConstants.ACTION)) == null) {
- action = (String)
msgContext.getProperty(WSHandlerConstants.ACTION);
+ String action = (String)
handlerInfo.getHandlerConfig().get(WSHandlerConstants.SEND + '.' +
WSHandlerConstants.ACTION);
+ if (action == null) {
+ if ((action = (String)
handlerInfo.getHandlerConfig().get(WSHandlerConstants.ACTION)) == null) {
+ action = (String)
msgContext.getProperty(WSHandlerConstants.ACTION);
+ }
}
if (action == null) {
throw new JAXRPCException("WSS4JHandler: No action defined");
@@ -411,9 +418,11 @@
msgContext = (SOAPMessageContext) mc;
Vector actions = new Vector();
- String action = null;
- if ((action = (String)
handlerInfo.getHandlerConfig().get(WSHandlerConstants.ACTION)) == null) {
- action = (String)
msgContext.getProperty(WSHandlerConstants.ACTION);
+ String action = (String)
handlerInfo.getHandlerConfig().get(WSHandlerConstants.RECEIVE + '.' +
WSHandlerConstants.ACTION);
+ if (action == null) {
+ if ((action = (String)
handlerInfo.getHandlerConfig().get(WSHandlerConstants.ACTION)) == null) {
+ action = (String)
msgContext.getProperty(WSHandlerConstants.ACTION);
+ }
}
if (action == null) {
throw new JAXRPCException("WSS4JHandler: No action defined");
@@ -1608,16 +1617,11 @@
Document doc = null;
try {
- ByteArrayOutputStream baos = new ByteArrayOutputStream();
- message.writeTo(baos);
- ByteArrayInputStream bais = new
ByteArrayInputStream(baos.toByteArray());
-
+ Source content = message.getSOAPPart().getContent();
DocumentBuilderFactory dbf =
DocumentBuilderFactory.newInstance();
dbf.setNamespaceAware(true);
DocumentBuilder builder = dbf.newDocumentBuilder();
-
- doc = builder.parse(bais);
-
+ doc =
builder.parse(org.apache.axis.utils.XMLUtils.sourceToInputSource(content));
} catch (Exception ex) {
throw new JAXRPCException("messageToDocument: cannot convert
SOAPMessage into Document", ex);
}