You are viewing a plain text version of this content. The canonical link for it is here.
Posted to java-user@axis.apache.org by Ma...@t-systems.com on 2009/05/13 16:45:57 UTC

Receiving swa attachments

Hi group,

 

I am getting a bit frustrated with swa attachments. For reason of
compatibility I have to support them. I am trying to upload a file with
swa to a service. I can see via tcpmon that my file is being sent, but
on the server side I can't see the file in the attachments map. It is
just not there. I have compared my coe with the swa example and also
changed the swa example with my code, but I had no success.

 

The code on the server side looks like this:

MessageContext mctx = MessageContext.getCurrentMessageContext();

Attachments attachs = mctx.getAttachmentMap();

List<String> cids = attachs.getContentIDList();

String soapCid = attachs.getSOAPPartContentID();

 

String url = "not stored";

for (String cid : cids) {

    if (!cid.equals(soapCid)) {

        url = writeAttachmentToDisk(mctx.getAttachment(cid), cid);

    }

}

 

I filter out the soap part which is also listed in the attachments, but
the list cids always only contains the soapPartContentID.

 

In the articles on ws02 they always mention that you don't have to
specify a special option to receive swa attachments. I am probably
missing sth. out. Can anybody help me here?

 

Thanks in advance,

Matthias.


AW: AW: Receiving swa attachments

Posted by Ma...@t-systems.com.
Martin,

 

Bitteschön, I'm happy that I can contribute a little bit back to Axis since it helped me so much in implementing web services.

Thanks also for clarifying once more that DIME is not supported by Axis2. I had this already in mind somewhere and a search in the mailing list convinced me to better try another way for my old clients with DIME attachments.

I only found one older post by you, Martin, where you mentioned that DIME attachments could be supported somehow. Did you realize it with that?

you have to set chunkedEncoding here is a quick example import org.globus.axis.transport.HTTPUtils;//assume your service is called 
'MyService' URL url = new URL("local:///localhost:8080/axis/services/MyService"); MyServiceAddressingLocator locator = new MyServiceAddressingLocator(); MyService port = locator.getMyServicePort(url); 

// force HTTP 1.1 (why dont we have a method which setHTTP11Version(port,true) ? HTTPUtils.setHTTP10Version((Stub)port, false); //set chunkedEncodingHTTPUtils.setChunkedEncoding((Stub)port, true); //Call the hello method from the discovered service port.hello();for more info please look at 
http://www.globus.org/toolkit/docs/development/4.1.0/common/javawscore/developer/index.html <http://www.globus.org/toolkit/docs/development/4.1.0/common/javawscore/developer/index.html>  

M-

Thanks,

Matthias.

 

Von: Martin Gainty [mailto:mgainty@hotmail.com] 
Gesendet: Freitag, 15. Mai 2009 02:57
An: axis-user@ws.apache.org
Betreff: RE: AW: Receiving swa attachments

 

frist heard of DIME in 02 but havent seen any implementation since that 02
thanks for the code matthias!
Vielen Danke,
Martin  
______________________________________________ 
Verzicht und Vertraulichkeitanmerkung/Note de déni et de confidentialité

Diese Nachricht ist vertraulich. Sollten Sie nicht der vorgesehene Empfaenger sein, so bitten wir hoeflich um eine Mitteilung. Jede unbefugte Weiterleitung oder Fertigung einer Kopie ist unzulaessig. Diese Nachricht dient lediglich dem Austausch von Informationen und entfaltet keine rechtliche Bindungswirkung. Aufgrund der leichten Manipulierbarkeit von E-Mails koennen wir keine Haftung fuer den Inhalt uebernehmen.

Ce message est confidentiel et peut être privilégié. Si vous n'êtes pas le destinataire prévu, nous te demandons avec bonté que pour satisfaire informez l'expéditeur. N'importe quelle diffusion non autorisée ou la copie de ceci est interdite. Ce message sert à l'information seulement et n'aura pas n'importe quel effet légalement obligatoire. Étant donné que les email peuvent facilement être sujets à la manipulation, nous ne pouvons accepter aucune responsabilité pour le contenu fourni.






> Date: Fri, 15 May 2009 00:45:43 +0200
> Subject: Re: AW: Receiving swa attachments
> From: andreas.veithen@gmail.com
> To: axis-user@ws.apache.org
> 
> Matthias,
> 
> I'm pretty sure DIME is not supported by Axiom.
> 
> Andreas
> 
> On Thu, May 14, 2009 at 17:16, <Ma...@t-systems.com> wrote:
> > Hi Martin,
> >
> >
> >
> > I have now this code which works fine for me for receiving SwA attachments.
> > Feel free to include this code into the mtom-user-guide (which should maybe
> > named attachment-user-guide).
> >
> > List<File> attList = new ArrayList<File>();
> >
> > MessageContext mctx = MessageContext.getCurrentMessageContext();
> >
> > Attachments attachs = mctx.getAttachmentMap();
> >
> > Set<String> cids = attachs.getContentIDSet();
> >
> > if (cids != null && cids.size() > 1) {
> >
> >    String attType = attachs.getAttachmentSpecType();
> >
> >    if (attType.equals(MTOMConstants.SWA_TYPE) ||
> > attType.equals(MTOMConstants.SWA_TYPE_12)) {
> >
> >       String soapCid = attachs.getSOAPPartContentID();
> >
> >       File file;
> >
> >       for (String cid : cids) {
> >
> >          if (!cid.equals(soapCid)) {
> >
> >             file = new File(UUID.randomUUID().toString()); //the cid might
> > not be a good name to save the file.
> >
> >             FileOutputStream fileOutputStream = new FileOutputStream(file);
> >
> >             mctx.getAttachment(cid).writeTo(fileOutputStream);
> >
> >             fileOutputStream.flush();
> >
> >             fileOutputStream.close();
> >
> >             attList.add(file);
> >
> >          }
> >
> >       }
> >
> >    }
> >
> > }
> >
> >
> >
> > I assume Axis2 sends the attachments as mime attachments, if they are sent
> > via SwA. This code also worked for me for an Axis1 1.4 client uploading a
> > file as a MIME attachment to my Axis2 Service. DIME Attachments can not be
> > received so far. I'll have a look what I still have to do.
> >
> >
> >
> > Matthias.
> >
> >
> >
> >
> >
> > Von: Martin Gainty [mailto:mgainty@hotmail.com]
> > Gesendet: Donnerstag, 14. Mai 2009 15:35
> > An: axis-user@ws.apache.org
> > Betreff: RE: AW: Receiving swa attachments
> >
> >
> >
> > Matthias
> > i would suggest editting mtom-user-guide to demonstrate actual usage for
> > axis2-1.4.1 specifically
> >
> > public class SwA {
> >
> >     private OperationContext operationContext;
> >
> >
> >
> >     public SwA() {
> >
> >     }
> >
> >
> >
> >     public void setOperationContext(OperationContext oc) throws AxisFault {
> >
> >         operationContext = oc;
> >
> >     }
> >
> >
> >
> >     public void uploadAttachment(OMElement omEle) throws AxisFault {
> >
> >         OMElement child = (OMElement) omEle.getFirstOMChild();
> >
> >         OMAttribute attr = child.getAttribute(new QName("href"));
> >
> >
> >
> >         //Content ID processing
> >
> >         String contentID = attr.getAttributeValue();
> >
> >         contentID = contentID.trim();
> >
> >         if (contentID.substring(0, 3).equalsIgnoreCase("cid")) {
> >
> >             contentID = contentID.substring(4);
> >
> >         }
> >
> >   //contentId of cid is assumed
> >
> >         Attachments attachment = (Attachments)
> > (operationContext.getMessageContext(WSDLConstants.MESSAGE_LABEL_IN_VALUE)).getAttachmentMap();
> >
> > //        DataHandler dataHandler = attachment.getDataHandler(contentID);
> >
> >         java.util.Iterator iter;
> >
> >         try
> >
> >         {
> >
> >          iter=attachment.getAttachments().iterator();
> >
> >         }
> >
> >         catch(AxisFault axis_fault)
> >
> >         {
> >
> >           log.debug("AxisFault produced for
> > attachment.getAttachments().iterator()");
> >
> >         }
> >
> >         String[] attachmentIDs;
> >
> >         int attachementCtr=0;
> >
> >         while(iter.hasNext()
> >
> >         {
> >
> >          attachmentIDs[attachmentCtr++]= iter.next();
> >
> >         }
> >
> >     }
> >
> > }
> >
> > public static final java.lang.String
> >
> > ATTACHMENT_ENCAPSULATION_FORMAT_DIME
> >
> > "axis.attachment.style.dime"
> >
> > public static final java.lang.String
> >
> > ATTACHMENT_ENCAPSULATION_FORMAT_MIME
> >
> > "axis.attachment.style.mime"
> >
> > public static final java.lang.String
> >
> > ATTACHMENT_ENCAPSULATION_FORMAT_MTOM
> >
> > "axis.attachment.style.mtom"
> >
> > this only covers attachment style of 'mtom'
> > would need to refactor for both mime and dime attachment styles
> >
> > suggestions?
> > Martin Gainty
> > ______________________________________________
> > Disclaimer and Confidentiality/Verzicht und Vertraulichkeitanmerkung/Note de
> > déni et de confidentialité
> >
> > This message is confidential. If you should not be the intended receiver,
> > then we ask politely to report. Each unauthorized forwarding or
> > manufacturing of a copy is inadmissible. This message serves only for the
> > exchange of information and has no legal binding effect. Due to the easy
> > manipulation of emails we cannot take responsibility over the the contents.
> >
> > Diese Nachricht ist vertraulich. Sollten Sie nicht der vorgesehene
> > Empfaenger sein, so bitten wir hoeflich um eine Mitteilung. Jede unbefugte
> > Weiterleitung oder Fertigung einer Kopie ist unzulaessig. Diese Nachricht
> > dient lediglich dem Austausch von Informationen und entfaltet keine
> > rechtliche Bindungswirkung. Aufgrund der leichten Manipulierbarkeit von
> > E-Mails koennen wir keine Haftung fuer den Inhalt uebernehmen.
> >
> > Ce message est confidentiel et peut être privilégié. Si vous n'êtes pas le
> > destinataire prévu, nous te demandons avec bonté que pour satisfaire
> > informez l'expéditeur. N'importe quelle diffusion non autorisée ou la copie
> > de ceci est interdite. Ce message sert à l'information seulement et n'aura
> > pas n'importe quel effet légalement obligatoire. Étant donné que les email
> > peuvent facilement être sujets à la manipulation, nous ne pouvons accepter
> > aucune responsabilité pour le contenu fourni.
> >
> >
> >
> > ________________________________
> >
> > Subject: AW: Receiving swa attachments
> > Date: Thu, 14 May 2009 09:24:31 +0200
> > From: Matthias.Gaiser@t-systems.com
> > To: axis-user@ws.apache.org
> >
> > Hi Chinmoy,
> >
> >
> >
> > thanks for your answer. It gave me a hint into the right direction. Now it
> > is working.
> >
> >
> >
> > Yes, I did enable the SwA property, but it is only necessary to enable it on
> > the client side, not on the server side as other tutorials mention as well.
> >
> > My problem was that I tried to get the content ids via the
> > getContentIDList() method. This method only returns the content ids which
> > have been parsed already. If I take the method you mention
> > getAllContentIDs() or getContentIDSet(), then Axis parses the other
> > attachments and returns a complete list of the content ids.
> >
> >
> >
> > @Axis2-Team: Please reflect this behavior in the javadoc that only the
> > parsed content ids are returned by the getContentIDList().
> >
> >
> >
> > Maybe I can help some other people with the same problem. J
> >
> >
> >
> > Matthias.
> >
> >
> >
> > Von: Chinmoy Chakraborty [mailto:cchinu@gmail.com]
> > Gesendet: Mittwoch, 13. Mai 2009 17:43
> > An: axis-user@ws.apache.org
> > Betreff: Re: Receiving swa attachments
> >
> >
> >
> > Hi Matthias,
> >
> >
> >
> > You need to set 'enableSwA' property to true in client and server side in
> > order to work with SwA. I am assuming that you have done this. I tried with
> > Axis2 1.4 and it works fine. You can try following code sample while
> > receving the SwA attachment in the client side:
> >
> >
> >
> >       ...............................
> >
> >       mepClient.execute(true);
> >
> >       MessageContext response =
> > mepClient.getMessageContext(WSDLConstants.MESSAGE_LABEL_IN_VALUE);
> >       Attachments attachments = response.getAttachmentMap();
> >       if (attachments == null) {
> >           return "No attachment";
> >       }
> >       String[] attachmentIDs = attachments.getAllContentIDs();
> >       for(int i = 0; i < attachmentIDs.length; i++){
> >           if(!attachments.getSOAPPartContentID().equals(attachmentIDs[i])){
> >               return attachments.getDataHandler(attachmentIDs[i]);
> >           }
> >       }
> >
> >
> >
> >
> >
> > Chinmoy
> >
> > On Wed, May 13, 2009 at 8:15 PM, <Ma...@t-systems.com> wrote:
> >
> > Hi group,
> >
> >
> >
> > I am getting a bit frustrated with swa attachments. For reason of
> > compatibility I have to support them. I am trying to upload a file with swa
> > to a service. I can see via tcpmon that my file is being sent, but on the
> > server side I can't see the file in the attachments map. It is just not
> > there. I have compared my coe with the swa example and also changed the swa
> > example with my code, but I had no success.
> >
> >
> >
> > The code on the server side looks like this:
> >
> > MessageContext mctx = MessageContext.getCurrentMessageContext();
> >
> > Attachments attachs = mctx.getAttachmentMap();
> >
> > List<String> cids = attachs.getContentIDList();
> >
> > String soapCid = attachs.getSOAPPartContentID();
> >
> >
> >
> > String url = "not stored";
> >
> > for (String cid : cids) {
> >
> >     if (!cid.equals(soapCid)) {
> >
> >         url = writeAttachmentToDisk(mctx.getAttachment(cid), cid);
> >
> >     }
> >
> > }
> >
> >
> >
> > I filter out the soap part which is also listed in the attachments, but the
> > list cids always only contains the soapPartContentID.
> >
> >
> >
> > In the articles on ws02 they always mention that you don't have to specify a
> > special option to receive swa attachments. I am probably missing sth. out.
> > Can anybody help me here?
> >
> >
> >
> > Thanks in advance,
> >
> > Matthias.
> >
> >
> >
> >
> >
> > ________________________________
> >
> > Hotmail® goes with you. Get it on your BlackBerry or iPhone.

________________________________

Insert movie times and more without leaving Hotmail®. See how. <http://windowslive.com/Tutorial/Hotmail/QuickAdd?ocid=TXT_TAGLM_WL_HM_Tutorial_QuickAdd1_052009> 


RE: AW: Receiving swa attachments

Posted by Martin Gainty <mg...@hotmail.com>.
frist heard of DIME in 02 but havent seen any implementation since that 02
thanks for the code matthias!
Vielen Danke,
Martin  
______________________________________________ 
Verzicht und Vertraulichkeitanmerkung/Note de déni et de confidentialité
Diese Nachricht ist vertraulich. Sollten Sie nicht der vorgesehene Empfaenger sein, so bitten wir hoeflich um eine Mitteilung. Jede unbefugte Weiterleitung oder Fertigung einer Kopie ist unzulaessig. Diese Nachricht dient lediglich dem Austausch von Informationen und entfaltet keine rechtliche Bindungswirkung. Aufgrund der leichten Manipulierbarkeit von E-Mails koennen wir keine Haftung fuer den Inhalt uebernehmen.
Ce message est confidentiel et peut être privilégié. Si vous n'êtes pas le destinataire prévu, nous te demandons avec bonté que pour satisfaire informez l'expéditeur. N'importe quelle diffusion non autorisée ou la copie de ceci est interdite. Ce message sert à l'information seulement et n'aura pas n'importe quel effet légalement obligatoire. Étant donné que les email peuvent facilement être sujets à la manipulation, nous ne pouvons accepter aucune responsabilité pour le contenu fourni.




> Date: Fri, 15 May 2009 00:45:43 +0200
> Subject: Re: AW: Receiving swa attachments
> From: andreas.veithen@gmail.com
> To: axis-user@ws.apache.org
> 
> Matthias,
> 
> I'm pretty sure DIME is not supported by Axiom.
> 
> Andreas
> 
> On Thu, May 14, 2009 at 17:16,  <Ma...@t-systems.com> wrote:
> > Hi Martin,
> >
> >
> >
> > I have now this code which works fine for me for receiving SwA attachments.
> > Feel free to include this code into the mtom-user-guide (which should maybe
> > named attachment-user-guide).
> >
> > List<File> attList = new ArrayList<File>();
> >
> > MessageContext mctx = MessageContext.getCurrentMessageContext();
> >
> > Attachments attachs = mctx.getAttachmentMap();
> >
> > Set<String> cids = attachs.getContentIDSet();
> >
> > if (cids != null && cids.size() > 1) {
> >
> >    String attType = attachs.getAttachmentSpecType();
> >
> >    if (attType.equals(MTOMConstants.SWA_TYPE) ||
> > attType.equals(MTOMConstants.SWA_TYPE_12)) {
> >
> >       String soapCid = attachs.getSOAPPartContentID();
> >
> >       File file;
> >
> >       for (String cid : cids) {
> >
> >          if (!cid.equals(soapCid)) {
> >
> >             file = new File(UUID.randomUUID().toString()); //the cid might
> > not be a good name to save the file.
> >
> >             FileOutputStream fileOutputStream = new FileOutputStream(file);
> >
> >             mctx.getAttachment(cid).writeTo(fileOutputStream);
> >
> >             fileOutputStream.flush();
> >
> >             fileOutputStream.close();
> >
> >             attList.add(file);
> >
> >          }
> >
> >       }
> >
> >    }
> >
> > }
> >
> >
> >
> > I assume Axis2 sends the attachments as mime attachments, if they are sent
> > via SwA. This code also worked for me for an Axis1 1.4 client uploading a
> > file as a MIME attachment to my Axis2 Service. DIME Attachments can not be
> > received so far. I’ll have a look what I still have to do.
> >
> >
> >
> > Matthias.
> >
> >
> >
> >
> >
> > Von: Martin Gainty [mailto:mgainty@hotmail.com]
> > Gesendet: Donnerstag, 14. Mai 2009 15:35
> > An: axis-user@ws.apache.org
> > Betreff: RE: AW: Receiving swa attachments
> >
> >
> >
> > Matthias
> > i would suggest editting mtom-user-guide to demonstrate actual usage for
> > axis2-1.4.1 specifically
> >
> > public class SwA {
> >
> >     private OperationContext operationContext;
> >
> >
> >
> >     public SwA() {
> >
> >     }
> >
> >
> >
> >     public void setOperationContext(OperationContext oc) throws AxisFault {
> >
> >         operationContext = oc;
> >
> >     }
> >
> >
> >
> >     public void uploadAttachment(OMElement omEle) throws AxisFault {
> >
> >         OMElement child = (OMElement) omEle.getFirstOMChild();
> >
> >         OMAttribute attr = child.getAttribute(new QName("href"));
> >
> >
> >
> >         //Content ID processing
> >
> >         String contentID = attr.getAttributeValue();
> >
> >         contentID = contentID.trim();
> >
> >         if (contentID.substring(0, 3).equalsIgnoreCase("cid")) {
> >
> >             contentID = contentID.substring(4);
> >
> >         }
> >
> >   //contentId of cid is assumed
> >
> >         Attachments attachment = (Attachments)
> > (operationContext.getMessageContext(WSDLConstants.MESSAGE_LABEL_IN_VALUE)).getAttachmentMap();
> >
> > //        DataHandler dataHandler = attachment.getDataHandler(contentID);
> >
> >         java.util.Iterator iter;
> >
> >         try
> >
> >         {
> >
> >          iter=attachment.getAttachments().iterator();
> >
> >         }
> >
> >         catch(AxisFault axis_fault)
> >
> >         {
> >
> >           log.debug("AxisFault produced for
> > attachment.getAttachments().iterator()");
> >
> >         }
> >
> >         String[] attachmentIDs;
> >
> >         int attachementCtr=0;
> >
> >         while(iter.hasNext()
> >
> >         {
> >
> >          attachmentIDs[attachmentCtr++]= iter.next();
> >
> >         }
> >
> >     }
> >
> > }
> >
> > public static final java.lang.String
> >
> > ATTACHMENT_ENCAPSULATION_FORMAT_DIME
> >
> > "axis.attachment.style.dime"
> >
> > public static final java.lang.String
> >
> > ATTACHMENT_ENCAPSULATION_FORMAT_MIME
> >
> > "axis.attachment.style.mime"
> >
> > public static final java.lang.String
> >
> > ATTACHMENT_ENCAPSULATION_FORMAT_MTOM
> >
> > "axis.attachment.style.mtom"
> >
> > this only covers attachment style of 'mtom'
> > would need to refactor for both mime and dime attachment styles
> >
> > suggestions?
> > Martin Gainty
> > ______________________________________________
> > Disclaimer and Confidentiality/Verzicht und Vertraulichkeitanmerkung/Note de
> > déni et de confidentialité
> >
> > This message is confidential. If you should not be the intended receiver,
> > then we ask politely to report. Each unauthorized forwarding or
> > manufacturing of a copy is inadmissible. This message serves only for the
> > exchange of information and has no legal binding effect. Due to the easy
> > manipulation of emails we cannot take responsibility over the the contents.
> >
> > Diese Nachricht ist vertraulich. Sollten Sie nicht der vorgesehene
> > Empfaenger sein, so bitten wir hoeflich um eine Mitteilung. Jede unbefugte
> > Weiterleitung oder Fertigung einer Kopie ist unzulaessig. Diese Nachricht
> > dient lediglich dem Austausch von Informationen und entfaltet keine
> > rechtliche Bindungswirkung. Aufgrund der leichten Manipulierbarkeit von
> > E-Mails koennen wir keine Haftung fuer den Inhalt uebernehmen.
> >
> > Ce message est confidentiel et peut être privilégié. Si vous n'êtes pas le
> > destinataire prévu, nous te demandons avec bonté que pour satisfaire
> > informez l'expéditeur. N'importe quelle diffusion non autorisée ou la copie
> > de ceci est interdite. Ce message sert à l'information seulement et n'aura
> > pas n'importe quel effet légalement obligatoire. Étant donné que les email
> > peuvent facilement être sujets à la manipulation, nous ne pouvons accepter
> > aucune responsabilité pour le contenu fourni.
> >
> >
> >
> > ________________________________
> >
> > Subject: AW: Receiving swa attachments
> > Date: Thu, 14 May 2009 09:24:31 +0200
> > From: Matthias.Gaiser@t-systems.com
> > To: axis-user@ws.apache.org
> >
> > Hi Chinmoy,
> >
> >
> >
> > thanks for your answer. It gave me a hint into the right direction. Now it
> > is working.
> >
> >
> >
> > Yes, I did enable the SwA property, but it is only necessary to enable it on
> > the client side, not on the server side as other tutorials mention as well.
> >
> > My problem was that I tried to get the content ids via the
> > getContentIDList() method. This method only returns the content ids which
> > have been parsed already. If I take the method you mention
> > getAllContentIDs() or getContentIDSet(), then Axis parses the other
> > attachments and returns a complete list of the content ids.
> >
> >
> >
> > @Axis2-Team: Please reflect this behavior in the javadoc that only the
> > parsed content ids are returned by the getContentIDList().
> >
> >
> >
> > Maybe I can help some other people with the same problem. J
> >
> >
> >
> > Matthias.
> >
> >
> >
> > Von: Chinmoy Chakraborty [mailto:cchinu@gmail.com]
> > Gesendet: Mittwoch, 13. Mai 2009 17:43
> > An: axis-user@ws.apache.org
> > Betreff: Re: Receiving swa attachments
> >
> >
> >
> > Hi Matthias,
> >
> >
> >
> > You need to set 'enableSwA' property to true in client and server side in
> > order to work with SwA. I am assuming that you have done this. I tried with
> > Axis2 1.4 and it works fine. You can try following code sample while
> > receving the SwA attachment in the client side:
> >
> >
> >
> >       ...............................
> >
> >       mepClient.execute(true);
> >
> >       MessageContext response =
> > mepClient.getMessageContext(WSDLConstants.MESSAGE_LABEL_IN_VALUE);
> >       Attachments attachments = response.getAttachmentMap();
> >       if (attachments == null) {
> >           return "No attachment";
> >       }
> >       String[] attachmentIDs = attachments.getAllContentIDs();
> >       for(int i = 0; i < attachmentIDs.length; i++){
> >           if(!attachments.getSOAPPartContentID().equals(attachmentIDs[i])){
> >               return attachments.getDataHandler(attachmentIDs[i]);
> >           }
> >       }
> >
> >
> >
> >
> >
> > Chinmoy
> >
> > On Wed, May 13, 2009 at 8:15 PM, <Ma...@t-systems.com> wrote:
> >
> > Hi group,
> >
> >
> >
> > I am getting a bit frustrated with swa attachments. For reason of
> > compatibility I have to support them. I am trying to upload a file with swa
> > to a service. I can see via tcpmon that my file is being sent, but on the
> > server side I can’t see the file in the attachments map. It is just not
> > there. I have compared my coe with the swa example and also changed the swa
> > example with my code, but I had no success.
> >
> >
> >
> > The code on the server side looks like this:
> >
> > MessageContext mctx = MessageContext.getCurrentMessageContext();
> >
> > Attachments attachs = mctx.getAttachmentMap();
> >
> > List<String> cids = attachs.getContentIDList();
> >
> > String soapCid = attachs.getSOAPPartContentID();
> >
> >
> >
> > String url = "not stored";
> >
> > for (String cid : cids) {
> >
> >     if (!cid.equals(soapCid)) {
> >
> >         url = writeAttachmentToDisk(mctx.getAttachment(cid), cid);
> >
> >     }
> >
> > }
> >
> >
> >
> > I filter out the soap part which is also listed in the attachments, but the
> > list cids always only contains the soapPartContentID.
> >
> >
> >
> > In the articles on ws02 they always mention that you don’t have to specify a
> > special option to receive swa attachments. I am probably missing sth. out.
> > Can anybody help me here?
> >
> >
> >
> > Thanks in advance,
> >
> > Matthias.
> >
> >
> >
> >
> >
> > ________________________________
> >
> > Hotmail® goes with you. Get it on your BlackBerry or iPhone.

_________________________________________________________________
Insert movie times and more without leaving Hotmail®.
http://windowslive.com/Tutorial/Hotmail/QuickAdd?ocid=TXT_TAGLM_WL_HM_Tutorial_QuickAdd1_052009

Re: AW: Receiving swa attachments

Posted by Andreas Veithen <an...@gmail.com>.
Matthias,

I'm pretty sure DIME is not supported by Axiom.

Andreas

On Thu, May 14, 2009 at 17:16,  <Ma...@t-systems.com> wrote:
> Hi Martin,
>
>
>
> I have now this code which works fine for me for receiving SwA attachments.
> Feel free to include this code into the mtom-user-guide (which should maybe
> named attachment-user-guide).
>
> List<File> attList = new ArrayList<File>();
>
> MessageContext mctx = MessageContext.getCurrentMessageContext();
>
> Attachments attachs = mctx.getAttachmentMap();
>
> Set<String> cids = attachs.getContentIDSet();
>
> if (cids != null && cids.size() > 1) {
>
>    String attType = attachs.getAttachmentSpecType();
>
>    if (attType.equals(MTOMConstants.SWA_TYPE) ||
> attType.equals(MTOMConstants.SWA_TYPE_12)) {
>
>       String soapCid = attachs.getSOAPPartContentID();
>
>       File file;
>
>       for (String cid : cids) {
>
>          if (!cid.equals(soapCid)) {
>
>             file = new File(UUID.randomUUID().toString()); //the cid might
> not be a good name to save the file.
>
>             FileOutputStream fileOutputStream = new FileOutputStream(file);
>
>             mctx.getAttachment(cid).writeTo(fileOutputStream);
>
>             fileOutputStream.flush();
>
>             fileOutputStream.close();
>
>             attList.add(file);
>
>          }
>
>       }
>
>    }
>
> }
>
>
>
> I assume Axis2 sends the attachments as mime attachments, if they are sent
> via SwA. This code also worked for me for an Axis1 1.4 client uploading a
> file as a MIME attachment to my Axis2 Service. DIME Attachments can not be
> received so far. I’ll have a look what I still have to do.
>
>
>
> Matthias.
>
>
>
>
>
> Von: Martin Gainty [mailto:mgainty@hotmail.com]
> Gesendet: Donnerstag, 14. Mai 2009 15:35
> An: axis-user@ws.apache.org
> Betreff: RE: AW: Receiving swa attachments
>
>
>
> Matthias
> i would suggest editting mtom-user-guide to demonstrate actual usage for
> axis2-1.4.1 specifically
>
> public class SwA {
>
>     private OperationContext operationContext;
>
>
>
>     public SwA() {
>
>     }
>
>
>
>     public void setOperationContext(OperationContext oc) throws AxisFault {
>
>         operationContext = oc;
>
>     }
>
>
>
>     public void uploadAttachment(OMElement omEle) throws AxisFault {
>
>         OMElement child = (OMElement) omEle.getFirstOMChild();
>
>         OMAttribute attr = child.getAttribute(new QName("href"));
>
>
>
>         //Content ID processing
>
>         String contentID = attr.getAttributeValue();
>
>         contentID = contentID.trim();
>
>         if (contentID.substring(0, 3).equalsIgnoreCase("cid")) {
>
>             contentID = contentID.substring(4);
>
>         }
>
>   //contentId of cid is assumed
>
>         Attachments attachment = (Attachments)
> (operationContext.getMessageContext(WSDLConstants.MESSAGE_LABEL_IN_VALUE)).getAttachmentMap();
>
> //        DataHandler dataHandler = attachment.getDataHandler(contentID);
>
>         java.util.Iterator iter;
>
>         try
>
>         {
>
>          iter=attachment.getAttachments().iterator();
>
>         }
>
>         catch(AxisFault axis_fault)
>
>         {
>
>           log.debug("AxisFault produced for
> attachment.getAttachments().iterator()");
>
>         }
>
>         String[] attachmentIDs;
>
>         int attachementCtr=0;
>
>         while(iter.hasNext()
>
>         {
>
>          attachmentIDs[attachmentCtr++]= iter.next();
>
>         }
>
>     }
>
> }
>
> public static final java.lang.String
>
> ATTACHMENT_ENCAPSULATION_FORMAT_DIME
>
> "axis.attachment.style.dime"
>
> public static final java.lang.String
>
> ATTACHMENT_ENCAPSULATION_FORMAT_MIME
>
> "axis.attachment.style.mime"
>
> public static final java.lang.String
>
> ATTACHMENT_ENCAPSULATION_FORMAT_MTOM
>
> "axis.attachment.style.mtom"
>
> this only covers attachment style of 'mtom'
> would need to refactor for both mime and dime attachment styles
>
> suggestions?
> Martin Gainty
> ______________________________________________
> Disclaimer and Confidentiality/Verzicht und Vertraulichkeitanmerkung/Note de
> déni et de confidentialité
>
> This message is confidential. If you should not be the intended receiver,
> then we ask politely to report. Each unauthorized forwarding or
> manufacturing of a copy is inadmissible. This message serves only for the
> exchange of information and has no legal binding effect. Due to the easy
> manipulation of emails we cannot take responsibility over the the contents.
>
> Diese Nachricht ist vertraulich. Sollten Sie nicht der vorgesehene
> Empfaenger sein, so bitten wir hoeflich um eine Mitteilung. Jede unbefugte
> Weiterleitung oder Fertigung einer Kopie ist unzulaessig. Diese Nachricht
> dient lediglich dem Austausch von Informationen und entfaltet keine
> rechtliche Bindungswirkung. Aufgrund der leichten Manipulierbarkeit von
> E-Mails koennen wir keine Haftung fuer den Inhalt uebernehmen.
>
> Ce message est confidentiel et peut être privilégié. Si vous n'êtes pas le
> destinataire prévu, nous te demandons avec bonté que pour satisfaire
> informez l'expéditeur. N'importe quelle diffusion non autorisée ou la copie
> de ceci est interdite. Ce message sert à l'information seulement et n'aura
> pas n'importe quel effet légalement obligatoire. Étant donné que les email
> peuvent facilement être sujets à la manipulation, nous ne pouvons accepter
> aucune responsabilité pour le contenu fourni.
>
>
>
> ________________________________
>
> Subject: AW: Receiving swa attachments
> Date: Thu, 14 May 2009 09:24:31 +0200
> From: Matthias.Gaiser@t-systems.com
> To: axis-user@ws.apache.org
>
> Hi Chinmoy,
>
>
>
> thanks for your answer. It gave me a hint into the right direction. Now it
> is working.
>
>
>
> Yes, I did enable the SwA property, but it is only necessary to enable it on
> the client side, not on the server side as other tutorials mention as well.
>
> My problem was that I tried to get the content ids via the
> getContentIDList() method. This method only returns the content ids which
> have been parsed already. If I take the method you mention
> getAllContentIDs() or getContentIDSet(), then Axis parses the other
> attachments and returns a complete list of the content ids.
>
>
>
> @Axis2-Team: Please reflect this behavior in the javadoc that only the
> parsed content ids are returned by the getContentIDList().
>
>
>
> Maybe I can help some other people with the same problem. J
>
>
>
> Matthias.
>
>
>
> Von: Chinmoy Chakraborty [mailto:cchinu@gmail.com]
> Gesendet: Mittwoch, 13. Mai 2009 17:43
> An: axis-user@ws.apache.org
> Betreff: Re: Receiving swa attachments
>
>
>
> Hi Matthias,
>
>
>
> You need to set 'enableSwA' property to true in client and server side in
> order to work with SwA. I am assuming that you have done this. I tried with
> Axis2 1.4 and it works fine. You can try following code sample while
> receving the SwA attachment in the client side:
>
>
>
>       ...............................
>
>       mepClient.execute(true);
>
>       MessageContext response =
> mepClient.getMessageContext(WSDLConstants.MESSAGE_LABEL_IN_VALUE);
>       Attachments attachments = response.getAttachmentMap();
>       if (attachments == null) {
>           return "No attachment";
>       }
>       String[] attachmentIDs = attachments.getAllContentIDs();
>       for(int i = 0; i < attachmentIDs.length; i++){
>           if(!attachments.getSOAPPartContentID().equals(attachmentIDs[i])){
>               return attachments.getDataHandler(attachmentIDs[i]);
>           }
>       }
>
>
>
>
>
> Chinmoy
>
> On Wed, May 13, 2009 at 8:15 PM, <Ma...@t-systems.com> wrote:
>
> Hi group,
>
>
>
> I am getting a bit frustrated with swa attachments. For reason of
> compatibility I have to support them. I am trying to upload a file with swa
> to a service. I can see via tcpmon that my file is being sent, but on the
> server side I can’t see the file in the attachments map. It is just not
> there. I have compared my coe with the swa example and also changed the swa
> example with my code, but I had no success.
>
>
>
> The code on the server side looks like this:
>
> MessageContext mctx = MessageContext.getCurrentMessageContext();
>
> Attachments attachs = mctx.getAttachmentMap();
>
> List<String> cids = attachs.getContentIDList();
>
> String soapCid = attachs.getSOAPPartContentID();
>
>
>
> String url = "not stored";
>
> for (String cid : cids) {
>
>     if (!cid.equals(soapCid)) {
>
>         url = writeAttachmentToDisk(mctx.getAttachment(cid), cid);
>
>     }
>
> }
>
>
>
> I filter out the soap part which is also listed in the attachments, but the
> list cids always only contains the soapPartContentID.
>
>
>
> In the articles on ws02 they always mention that you don’t have to specify a
> special option to receive swa attachments. I am probably missing sth. out.
> Can anybody help me here?
>
>
>
> Thanks in advance,
>
> Matthias.
>
>
>
>
>
> ________________________________
>
> Hotmail® goes with you. Get it on your BlackBerry or iPhone.

AW: AW: Receiving swa attachments

Posted by Ma...@t-systems.com.
Hi Martin,

 

I have now this code which works fine for me for receiving SwA attachments. Feel free to include this code into the mtom-user-guide (which should maybe named attachment-user-guide).

List<File> attList = new ArrayList<File>();

MessageContext mctx = MessageContext.getCurrentMessageContext();

Attachments attachs = mctx.getAttachmentMap();

Set<String> cids = attachs.getContentIDSet();

if (cids != null && cids.size() > 1) {

   String attType = attachs.getAttachmentSpecType();

   if (attType.equals(MTOMConstants.SWA_TYPE) || attType.equals(MTOMConstants.SWA_TYPE_12)) {

      String soapCid = attachs.getSOAPPartContentID();

      File file;

      for (String cid : cids) {

         if (!cid.equals(soapCid)) {

            file = new File(UUID.randomUUID().toString()); //the cid might not be a good name to save the file.

            FileOutputStream fileOutputStream = new FileOutputStream(file);

            mctx.getAttachment(cid).writeTo(fileOutputStream);

            fileOutputStream.flush();

            fileOutputStream.close();

            attList.add(file);

         }

      }

   }

}

 

I assume Axis2 sends the attachments as mime attachments, if they are sent via SwA. This code also worked for me for an Axis1 1.4 client uploading a file as a MIME attachment to my Axis2 Service. DIME Attachments can not be received so far. I'll have a look what I still have to do.

 

Matthias.

 

 

Von: Martin Gainty [mailto:mgainty@hotmail.com] 
Gesendet: Donnerstag, 14. Mai 2009 15:35
An: axis-user@ws.apache.org
Betreff: RE: AW: Receiving swa attachments

 

Matthias
i would suggest editting mtom-user-guide to demonstrate actual usage for axis2-1.4.1 specifically

public class SwA {

    private OperationContext operationContext;



    public SwA() {

    }



    public void setOperationContext(OperationContext oc) throws AxisFault {

        operationContext = oc;

    }



    public void uploadAttachment(OMElement omEle) throws AxisFault {

        OMElement child = (OMElement) omEle.getFirstOMChild();

        OMAttribute attr = child.getAttribute(new QName("href"));

        

        //Content ID processing

        String contentID = attr.getAttributeValue();

        contentID = contentID.trim();

        if (contentID.substring(0, 3).equalsIgnoreCase("cid")) {

            contentID = contentID.substring(4);

        }

  //contentId of cid is assumed       

        Attachments attachment = (Attachments) (operationContext.getMessageContext(WSDLConstants.MESSAGE_LABEL_IN_VALUE)).getAttachmentMap();

//        DataHandler dataHandler = attachment.getDataHandler(contentID);

        java.util.Iterator iter;

        try

        {

         iter=attachment.getAttachments().iterator();

        }

        catch(AxisFault axis_fault)

        {

          log.debug("AxisFault produced for attachment.getAttachments().iterator()");

        }

        String[] attachmentIDs;

        int attachementCtr=0;

        while(iter.hasNext()

        {

         attachmentIDs[attachmentCtr++]= iter.next();

        }

    }

}
public static final java.lang.String

ATTACHMENT_ENCAPSULATION_FORMAT_DIME <file:///F:\AXIS\axis-1_3\docs\apiDocs\org\apache\axis\client\Call.html#ATTACHMENT_ENCAPSULATION_FORMAT_DIME> 

"axis.attachment.style.dime"

public static final java.lang.String

ATTACHMENT_ENCAPSULATION_FORMAT_MIME <file:///F:\AXIS\axis-1_3\docs\apiDocs\org\apache\axis\client\Call.html#ATTACHMENT_ENCAPSULATION_FORMAT_MIME> 

"axis.attachment.style.mime"

public static final java.lang.String

ATTACHMENT_ENCAPSULATION_FORMAT_MTOM <file:///F:\AXIS\axis-1_3\docs\apiDocs\org\apache\axis\client\Call.html#ATTACHMENT_ENCAPSULATION_FORMAT_MTOM> 

"axis.attachment.style.mtom"


this only covers attachment style of 'mtom'
would need to refactor for both mime and dime attachment styles

suggestions?
Martin Gainty 
______________________________________________ 
Disclaimer and Confidentiality/Verzicht und Vertraulichkeitanmerkung/Note de déni et de confidentialité

This message is confidential. If you should not be the intended receiver, then we ask politely to report. Each unauthorized forwarding or manufacturing of a copy is inadmissible. This message serves only for the exchange of information and has no legal binding effect. Due to the easy manipulation of emails we cannot take responsibility over the the contents.

Diese Nachricht ist vertraulich. Sollten Sie nicht der vorgesehene Empfaenger sein, so bitten wir hoeflich um eine Mitteilung. Jede unbefugte Weiterleitung oder Fertigung einer Kopie ist unzulaessig. Diese Nachricht dient lediglich dem Austausch von Informationen und entfaltet keine rechtliche Bindungswirkung. Aufgrund der leichten Manipulierbarkeit von E-Mails koennen wir keine Haftung fuer den Inhalt uebernehmen.

Ce message est confidentiel et peut être privilégié. Si vous n'êtes pas le destinataire prévu, nous te demandons avec bonté que pour satisfaire informez l'expéditeur. N'importe quelle diffusion non autorisée ou la copie de ceci est interdite. Ce message sert à l'information seulement et n'aura pas n'importe quel effet légalement obligatoire. Étant donné que les email peuvent facilement être sujets à la manipulation, nous ne pouvons accepter aucune responsabilité pour le contenu fourni.







________________________________

Subject: AW: Receiving swa attachments
Date: Thu, 14 May 2009 09:24:31 +0200
From: Matthias.Gaiser@t-systems.com
To: axis-user@ws.apache.org

Hi Chinmoy,

 

thanks for your answer. It gave me a hint into the right direction. Now it is working.

 

Yes, I did enable the SwA property, but it is only necessary to enable it on the client side, not on the server side as other tutorials mention as well.

My problem was that I tried to get the content ids via the getContentIDList() method. This method only returns the content ids which have been parsed already. If I take the method you mention getAllContentIDs() or getContentIDSet(), then Axis parses the other attachments and returns a complete list of the content ids.

 

@Axis2-Team: Please reflect this behavior in the javadoc that only the parsed content ids are returned by the getContentIDList().

 

Maybe I can help some other people with the same problem. J

 

Matthias.

 

Von: Chinmoy Chakraborty [mailto:cchinu@gmail.com] 
Gesendet: Mittwoch, 13. Mai 2009 17:43
An: axis-user@ws.apache.org
Betreff: Re: Receiving swa attachments

 

Hi Matthias,

 

You need to set 'enableSwA' property to true in client and server side in order to work with SwA. I am assuming that you have done this. I tried with Axis2 1.4 and it works fine. You can try following code sample while receving the SwA attachment in the client side:

 

      ...............................

      mepClient.execute(true);


      MessageContext response = mepClient.getMessageContext(WSDLConstants.MESSAGE_LABEL_IN_VALUE);
      Attachments attachments = response.getAttachmentMap();
      if (attachments == null) {
          return "No attachment";
      }
      String[] attachmentIDs = attachments.getAllContentIDs();
      for(int i = 0; i < attachmentIDs.length; i++){
          if(!attachments.getSOAPPartContentID().equals(attachmentIDs[i])){
              return attachments.getDataHandler(attachmentIDs[i]);
          }
      }

 

 

Chinmoy

On Wed, May 13, 2009 at 8:15 PM, <Ma...@t-systems.com> wrote:

Hi group,

 

I am getting a bit frustrated with swa attachments. For reason of compatibility I have to support them. I am trying to upload a file with swa to a service. I can see via tcpmon that my file is being sent, but on the server side I can't see the file in the attachments map. It is just not there. I have compared my coe with the swa example and also changed the swa example with my code, but I had no success.

 

The code on the server side looks like this:

MessageContext mctx = MessageContext.getCurrentMessageContext();

Attachments attachs = mctx.getAttachmentMap();

List<String> cids = attachs.getContentIDList();

String soapCid = attachs.getSOAPPartContentID();

 

String url = "not stored";

for (String cid : cids) {

    if (!cid.equals(soapCid)) {

        url = writeAttachmentToDisk(mctx.getAttachment(cid), cid);

    }

}

 

I filter out the soap part which is also listed in the attachments, but the list cids always only contains the soapPartContentID.

 

In the articles on ws02 they always mention that you don't have to specify a special option to receive swa attachments. I am probably missing sth. out. Can anybody help me here?

 

Thanks in advance,

Matthias.

 

 

________________________________

Hotmail® goes with you. Get it on your BlackBerry or iPhone. <http://windowslive.com/Tutorial/Hotmail/Mobile?ocid=TXT_TAGLM_WL_HM_Tutorial_Mobile1_052009> 


RE: AW: Receiving swa attachments

Posted by Martin Gainty <mg...@hotmail.com>.
Matthias
i would suggest editting mtom-user-guide to demonstrate actual usage for axis2-1.4.1 specifically
public class SwA {
    private OperationContext operationContext;

    public SwA() {
    }

    public void setOperationContext(OperationContext oc) throws AxisFault {
        operationContext = oc;
    }

    public void uploadAttachment(OMElement omEle) throws AxisFault {
        OMElement child = (OMElement) omEle.getFirstOMChild();
        OMAttribute attr = child.getAttribute(new QName("href"));
        
        //Content ID processing
        String contentID = attr.getAttributeValue();
        contentID = contentID.trim();
        if (contentID.substring(0, 3).equalsIgnoreCase("cid")) {
            contentID = contentID.substring(4);
        }
  //contentId of cid is assumed       
        Attachments attachment = (Attachments) (operationContext.getMessageContext(WSDLConstants.MESSAGE_LABEL_IN_VALUE)).getAttachmentMap();
//        DataHandler dataHandler = attachment.getDataHandler(contentID);
        java.util.Iterator iter;
        try
        {
         iter=attachment.getAttachments().iterator();
        }
        catch(AxisFault axis_fault)
        {
          log.debug("AxisFault produced for attachment.getAttachments().iterator()");
        }
        String[] attachmentIDs;
        int attachementCtr=0;
        while(iter.hasNext()
        {
         attachmentIDs[attachmentCtr++]= iter.next();
        }
    }
}
public static final java.lang.String
ATTACHMENT_ENCAPSULATION_FORMAT_DIME
"axis.attachment.style.dime"



public static final java.lang.String
ATTACHMENT_ENCAPSULATION_FORMAT_MIME
"axis.attachment.style.mime"



public static final java.lang.String
ATTACHMENT_ENCAPSULATION_FORMAT_MTOM
"axis.attachment.style.mtom"
this only covers attachment style of 'mtom'
would need to refactor for both mime and dime attachment styles

suggestions?
Martin Gainty 
______________________________________________ 
Disclaimer and Confidentiality/Verzicht und Vertraulichkeitanmerkung/Note de déni et de confidentialité
This message is confidential. If you should not be the intended receiver, then we ask politely to report. Each unauthorized forwarding or manufacturing of a copy is inadmissible. This message serves only for the exchange of information and has no legal binding effect. Due to the easy manipulation of emails we cannot take responsibility over the the contents.
Diese Nachricht ist vertraulich. Sollten Sie nicht der vorgesehene Empfaenger sein, so bitten wir hoeflich um eine Mitteilung. Jede unbefugte Weiterleitung oder Fertigung einer Kopie ist unzulaessig. Diese Nachricht dient lediglich dem Austausch von Informationen und entfaltet keine rechtliche Bindungswirkung. Aufgrund der leichten Manipulierbarkeit von E-Mails koennen wir keine Haftung fuer den Inhalt uebernehmen.
Ce message est confidentiel et peut être privilégié. Si vous n'êtes pas le destinataire prévu, nous te demandons avec bonté que pour satisfaire informez l'expéditeur. N'importe quelle diffusion non autorisée ou la copie de ceci est interdite. Ce message sert à l'information seulement et n'aura pas n'importe quel effet légalement obligatoire. Étant donné que les email peuvent facilement être sujets à la manipulation, nous ne pouvons accepter aucune responsabilité pour le contenu fourni.




Subject: AW: Receiving swa attachments
Date: Thu, 14 May 2009 09:24:31 +0200
From: Matthias.Gaiser@t-systems.com
To: axis-user@ws.apache.org
















Hi Chinmoy,

 

thanks for your answer. It gave me a hint into the right
direction. Now it is working.

 

Yes, I did enable the SwA property, but it is only necessary to enable
it on the client side, not on the server side as other tutorials mention as
well.

My problem was that I tried to get the content ids via the
getContentIDList() method. This method only returns the content ids which have
been parsed already. If I take the method you mention getAllContentIDs() or
getContentIDSet(), then Axis parses the other attachments and returns a
complete list of the content ids.

 

@Axis2-Team: Please reflect this behavior in the javadoc that only
the parsed content ids are returned by the getContentIDList().

 

Maybe I can help some other people with the same problem. J

 

Matthias.

 



Von: Chinmoy
Chakraborty [mailto:cchinu@gmail.com] 

Gesendet: Mittwoch, 13. Mai 2009 17:43

An: axis-user@ws.apache.org

Betreff: Re: Receiving swa
attachments



 



Hi Matthias,





 





You need to set 'enableSwA'
property to true in client and server side in order to work with SwA. I am
assuming that you have done this. I tried with Axis2 1.4 and it works fine. You
can try following code sample while receving the SwA attachment in the client
side:





 





     
...............................





     
mepClient.execute(true);







      MessageContext response =
mepClient.getMessageContext(WSDLConstants.MESSAGE_LABEL_IN_VALUE);

      Attachments attachments =
response.getAttachmentMap();

      if (attachments == null) {

          return "No
attachment";

      }

      String[] attachmentIDs = attachments.getAllContentIDs();

      for(int i = 0; i < attachmentIDs.length;
i++){

         
if(!attachments.getSOAPPartContentID().equals(attachmentIDs[i])){

             
return attachments.getDataHandler(attachmentIDs[i]);

          }

      }





 





 





Chinmoy





On Wed, May 13, 2009 at 8:15 PM,
<Ma...@t-systems.com>
wrote:





Hi group,

 

I am getting a bit frustrated
with swa attachments. For reason of compatibility I have to support them. I am
trying to upload a file with swa to a service. I can see via tcpmon that my
file is being sent, but on the server side I can’t see the file in the
attachments map. It is just not there. I have compared my coe with the swa
example and also changed the swa example with my code, but I had no success.

 

The code on the server side
looks like this:

MessageContext mctx = MessageContext.getCurrentMessageContext();

Attachments attachs =
mctx.getAttachmentMap();

List<String> cids =
attachs.getContentIDList();

String soapCid =
attachs.getSOAPPartContentID();

 

String url = "not
stored";

for (String cid :
cids) {

    if
(!cid.equals(soapCid)) {

       
url = writeAttachmentToDisk(mctx.getAttachment(cid), cid);

    }

}

 

I filter out the soap part which
is also listed in the attachments, but the list cids always only contains the
soapPartContentID.

 

In the articles on ws02 they
always mention that you don’t have to specify a special option to receive
swa attachments. I am probably missing sth. out. Can anybody help me here?

 

Thanks in advance,

Matthias.







 


_________________________________________________________________
Hotmail® goes with you. 
http://windowslive.com/Tutorial/Hotmail/Mobile?ocid=TXT_TAGLM_WL_HM_Tutorial_Mobile1_052009

Re: Receiving swa attachments

Posted by Andreas Veithen <an...@gmail.com>.
> @Axis2-Team: Please reflect this behavior in the javadoc that only the
> parsed content ids are returned by the getContentIDList().

Done [1]. Thanks for pointing this out!

Andreas

[1] http://svn.apache.org/viewvc?view=rev&revision=775659

AW: Receiving swa attachments

Posted by Ma...@t-systems.com.
Hi Chinmoy,

 

thanks for your answer. It gave me a hint into the right direction. Now
it is working.

 

Yes, I did enable the SwA property, but it is only necessary to enable
it on the client side, not on the server side as other tutorials mention
as well.

My problem was that I tried to get the content ids via the
getContentIDList() method. This method only returns the content ids
which have been parsed already. If I take the method you mention
getAllContentIDs() or getContentIDSet(), then Axis parses the other
attachments and returns a complete list of the content ids.

 

@Axis2-Team: Please reflect this behavior in the javadoc that only the
parsed content ids are returned by the getContentIDList().

 

Maybe I can help some other people with the same problem. J

 

Matthias.

 

Von: Chinmoy Chakraborty [mailto:cchinu@gmail.com] 
Gesendet: Mittwoch, 13. Mai 2009 17:43
An: axis-user@ws.apache.org
Betreff: Re: Receiving swa attachments

 

Hi Matthias,

 

You need to set 'enableSwA' property to true in client and server side
in order to work with SwA. I am assuming that you have done this. I
tried with Axis2 1.4 and it works fine. You can try following code
sample while receving the SwA attachment in the client side:

 

      ...............................

      mepClient.execute(true);


      MessageContext response =
mepClient.getMessageContext(WSDLConstants.MESSAGE_LABEL_IN_VALUE);
      Attachments attachments = response.getAttachmentMap();
      if (attachments == null) {
          return "No attachment";
      }
      String[] attachmentIDs = attachments.getAllContentIDs();
      for(int i = 0; i < attachmentIDs.length; i++){
 
if(!attachments.getSOAPPartContentID().equals(attachmentIDs[i])){
              return attachments.getDataHandler(attachmentIDs[i]);
          }
      }

 

 

Chinmoy

On Wed, May 13, 2009 at 8:15 PM, <Ma...@t-systems.com> wrote:

Hi group,

 

I am getting a bit frustrated with swa attachments. For reason of
compatibility I have to support them. I am trying to upload a file with
swa to a service. I can see via tcpmon that my file is being sent, but
on the server side I can't see the file in the attachments map. It is
just not there. I have compared my coe with the swa example and also
changed the swa example with my code, but I had no success.

 

The code on the server side looks like this:

MessageContext mctx = MessageContext.getCurrentMessageContext();

Attachments attachs = mctx.getAttachmentMap();

List<String> cids = attachs.getContentIDList();

String soapCid = attachs.getSOAPPartContentID();

 

String url = "not stored";

for (String cid : cids) {

    if (!cid.equals(soapCid)) {

        url = writeAttachmentToDisk(mctx.getAttachment(cid), cid);

    }

}

 

I filter out the soap part which is also listed in the attachments, but
the list cids always only contains the soapPartContentID.

 

In the articles on ws02 they always mention that you don't have to
specify a special option to receive swa attachments. I am probably
missing sth. out. Can anybody help me here?

 

Thanks in advance,

Matthias.

 


Re: Receiving swa attachments

Posted by Chinmoy Chakraborty <cc...@gmail.com>.
Hi Matthias,

You need to set 'enableSwA' property to true in client and server side in
order to work with SwA. I am assuming that you have done this. I tried with
Axis2 1.4 and it works fine. You can try following code sample while
receving the SwA attachment in the client side:

      ...............................
      mepClient.execute(true);

      MessageContext response =
mepClient.getMessageContext(WSDLConstants.MESSAGE_LABEL_IN_VALUE);
      Attachments attachments = response.getAttachmentMap();
      if (attachments == null) {
          return "No attachment";
      }
      String[] attachmentIDs = attachments.getAllContentIDs();
      for(int i = 0; i < attachmentIDs.length; i++){
          if(!attachments.getSOAPPartContentID().equals(attachmentIDs[i])){
              return attachments.getDataHandler(attachmentIDs[i]);
          }
      }


Chinmoy

On Wed, May 13, 2009 at 8:15 PM, <Ma...@t-systems.com> wrote:

>  Hi group,
>
>
>
> I am getting a bit frustrated with swa attachments. For reason of
> compatibility I have to support them. I am trying to upload a file with swa
> to a service. I can see via tcpmon that my file is being sent, but on the
> server side I can’t see the file in the attachments map. It is just not
> there. I have compared my coe with the swa example and also changed the swa
> example with my code, but I had no success.
>
>
>
> The code on the server side looks like this:
>
> MessageContext mctx = MessageContext.*getCurrentMessageContext*();
>
> Attachments attachs = mctx.getAttachmentMap();
>
> List<String> cids = attachs.getContentIDList();
>
> String soapCid = attachs.getSOAPPartContentID();
>
>
>
> String url = "not stored";
>
> *for* (String cid : cids) {
>
>     *if* (!cid.equals(soapCid)) {
>
>         url = writeAttachmentToDisk(mctx.getAttachment(cid), cid);
>
>     }
>
> }
>
>
>
> I filter out the soap part which is also listed in the attachments, but the
> list cids always only contains the soapPartContentID.
>
>
>
> In the articles on ws02 they always mention that you don’t have to specify
> a special option to receive swa attachments. I am probably missing sth. out.
> Can anybody help me here?
>
>
>
> Thanks in advance,
>
> Matthias.
>