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);
           }
  
  
  

Reply via email to