Chinmoy,

The code you added in SOAPMessageImpl to some extent duplicates the
code in Attachments#getSOAPPartContentID. Is there a particular reason
for this?

Andreas

On Wed, Dec 31, 2008 at 14:59, Chinmoy Chakraborty <[email protected]> wrote:
> Hi Andreas,
>
> I walked through the code (org.apache.axis2.saaj.SOAPMessageImpl) and fixed
> the attachment issue. I have added some code from line no. 111 to 149 of
> attached org.apache.axis2.saaj.SOAPMessageImpl class that fixes the
> attachemnt issue while creating SOAP with attachment from inputstream.
>
> I also have added a protected method in org.apache.axis2.saaj.SOAPPartImpl
> class. The code code is:
>
> protected Map getAttachmentMap(){
>         if(attachments != null){
>             return attachments.getMap();
>         }
>         return null;
>     }
>
> I have also declared a private variable in SOAPPartImpl: private Attachments
> attachments = null;
>
> I am attaching these files along with this mail. The modified code works
> fine for me now while creating SOAP with attachments from inputstream.
>
> If you find the changes fine please commit. I can download fresh
> axis-saaj-SNAPSHOT jar. Please give your opinion.
>
> Chinmoy
>
>
>
> On Tue, Dec 23, 2008 at 9:15 PM, Andreas Veithen <[email protected]>
> wrote:
>>
>> On Tue, Dec 23, 2008 at 12:17, Chinmoy Chakraborty <[email protected]>
>> wrote:
>> > Andreas,
>> >
>> > I am stuck with the attachments. I have sent many mails in this forum
>> > mentioning the issue regarding creation of SOAPMessage with attachments
>> > from
>> > Inputstream but no one replied me back.
>> >
>> > Previously you have mentioned that asix saaj api has been moved to
>> > gerenimo.
>> > Could you please send me the url from where I can get the geronimo
>> > SNAPSHOT
>> > jar?
>>
>> The SAAJ API version used by Axis2 can be found at [1]. Note that
>> there are currently no snapshots, because as an API it is not under
>> active development (it is just the translation into Java code of a
>> specification, so it's fairly static).
>>
>> [1]
>> http://repo1.maven.org/maven2/org/apache/geronimo/specs/geronimo-saaj_1.3_spec/1.0.1/
>>
>> > Could you send me the email-id of the developer who is working on
>> > axis-saaj
>> > implementation by which I can contact him directly. I am really really
>> > stuck
>> > here with my latest project. This is urgent for me. Please help.
>>
>> I think that the SAAJ implementation is the work of several people. It
>> has been around for some time, so I don't know exactly who is the most
>> familiar with the code. You may have a look at [2] to see who worked
>> on it. The corresponding email addresses can be found at [3].
>>
>> [2]
>> http://svnsearch.org/svnsearch/repos/ASF/search?path=%2Fwebservices%2Faxis2%2Ftrunk%2Fjava%2Fmodules%2Fsaaj
>> [3] http://ws.apache.org/axis2/team-list.html
>>
>> >
>> > Chinmoy
>> >
>> >
>> >
>> > On Thu, Dec 18, 2008 at 8:54 PM, Andreas Veithen
>> > <[email protected]>
>> > wrote:
>> >>
>> >> Chinmoy,
>> >>
>> >> I walked through the axis2-saaj code and indeed when creating a
>> >> message from an input stream using MessageFactory, axis2-saaj doesn't
>> >> even request the attachments from Axiom. However, I'm not familiar
>> >> enough with the code to be able to fix this myself.
>> >>
>> >> Maybe somebody else can help here?
>> >>
>> >> Andreas
>> >>
>> >> On Thu, Dec 18, 2008 at 13:05, Chinmoy Chakraborty <[email protected]>
>> >> wrote:
>> >> > Andreas,
>> >> >
>> >> > Please find attached attachment.xml which I am using as inputstream
>> >> > to
>> >> > create SOAPMessage. The MIME boundary in my previous code snippet may
>> >> > differ
>> >> > since it is generated at runtime but this is the file generated by
>> >> > another
>> >> > system. I am also sending you the code that generates the attached
>> >> > file.
>> >> >
>> >> > SOAPMessage soapMsg = MessageFactory.newInstance().createMessage();
>> >> >           //setting the namespace declaration.
>> >> >           SOAPPart sp = soapMsg.getSOAPPart();
>> >> >           SOAPEnvelope se = sp.getEnvelope();
>> >> >           se.addNamespaceDeclaration("lw",
>> >> > "http://www.abc.com/xml/soap/";);
>> >> >           soapMsg.setProperty(soapMsg.CHARACTER_SET_ENCODING,
>> >> > "UTF-8");
>> >> >           soapMsg.setProperty(soapMsg.WRITE_XML_DECLARATION, "true");
>> >> >           //setting the soap header.
>> >> >           SOAPHeader soapHeader = soapMsg.getSOAPHeader();
>> >> >           //setting the session id
>> >> >           SOAPElement soapHeaderElement1 =
>> >> > soapHeader.addChildElement("session", "lw",
>> >> > "http://www.abc.com/xml/soap/";);
>> >> >
>> >> > soapHeaderElement1.addTextNode("8e0b383911e3942c87fda0be8ae1879b");
>> >> >           //setting the transactionId
>> >> >           SOAPElement soapHeaderElement2 =
>> >> > soapHeader.addChildElement("transactionId", "lw",
>> >> > "http://www.abc.com/xml/soap/";);
>> >> >           soapHeaderElement2.addTextNode(String.valueOf("2"));
>> >> >           //setting the serverId
>> >> >           SOAPElement soapHeaderElement3 =
>> >> > soapHeader.addChildElement("serverId", "lw",
>> >> > "http://www.abc.com/xml/soap/";);
>> >> >
>> >> >
>> >> >
>> >> > soapHeaderElement3.addTextNode(String.valueOf("192.168.1.66_d7618e5711e394247a7da0be8ae08921"));
>> >> >           SOAPBody soapBody = soapMsg.getSOAPBody();
>> >> >           SOAPElement callElement = soapBody.addChildElement("call",
>> >> > "lw",
>> >> > "http://www.abc.com/xml/soap/";);
>> >> >           SOAPElement msgObjectId =
>> >> > callElement.addChildElement("objectId");
>> >> >           msgObjectId.addTextNode("system");
>> >> >           SOAPElement msgMethod =
>> >> > callElement.addChildElement("method");
>> >> >           msgMethod.addTextNode("setRetVal");
>> >> >           SOAPElement paramElement =
>> >> > callElement.addChildElement("param");
>> >> >           SOAPElement valueElement =
>> >> > paramElement.addChildElement("value");
>> >> >           valueElement.addTextNode("attachment.txt");
>> >> >           DataHandler dh = new DataHandler(new
>> >> > FileDataSource("C:\\Documents
>> >> > and Settings\\lab\\Desktop\\car.txt"));
>> >> >           AttachmentPart ap = soapMsg.createAttachmentPart();
>> >> >           ap.setContentId("attachment.txt");
>> >> >           ap.setContent(dh.getContent(), dh.getContentType());
>> >> >           soapMsg.addAttachmentPart(ap);
>> >> >
>> >> >          OutputStream out = null;
>> >> >     try {
>> >> >       out = socket.getOutputStream();
>> >> >       out.write(0x02);
>> >> >       soapMsg.writeTo(out);
>> >> >       out.write(0x03);
>> >> >       out.flush();
>> >> >     } catch (Exception e) {
>> >> >       getLog().error("Exception sending the soap " + e, e);
>> >> >     } finally {
>> >> >       //   if (out == null) out.close();
>> >> >     }
>> >> >
>> >> >
>> >> > Chinmoy
>> >> >
>> >> > On Thu, Dec 18, 2008 at 5:21 PM, Andreas Veithen
>> >> > <[email protected]>
>> >> > wrote:
>> >> >>
>> >> >> Chinmoy,
>> >> >>
>> >> >> Can you also attach a sample message that you try to read with this
>> >> >> code?
>> >> >>
>> >> >> Andreas
>> >> >>
>> >> >> On Thu, Dec 18, 2008 at 06:23, Chinmoy Chakraborty
>> >> >> <[email protected]>
>> >> >> wrote:
>> >> >> > Andreas,
>> >> >> >
>> >> >> > Here is my code snippet.
>> >> >> >
>> >> >> > String contentType = multipart/related;
>> >> >> >  boundary=MIMEBoundaryurn_uuid_D988AB74BC9802BDC21229577126047;
>> >> >> >  type="text/xml";
>> >> >> >  start="<0.urn:uuid:[email protected]>"
>> >> >> >
>> >> >> > MimeHeaders mimeHeaders = new MimeHeaders();
>> >> >> > mimeHeaders.addHeader("Content-Type", contentType);
>> >> >> > // Create the SOAP Message using mimeHeader and inputStream
>> >> >> > MessageFactory mf = MessageFactory.newInstance();
>> >> >> > SOAPMessage soapMsg = mf.createMessage(mimeHeaders, in);
>> >> >> >
>> >> >> > The inputstream is a SOAPMessage with attachments. Now the newly
>> >> >> > created
>> >> >> > soapMsg in above code snippet does not contain any attachment
>> >> >> > parts.
>> >> >> >
>> >> >> > I am trying to get attachment parts in the following code snippet:
>> >> >> >
>> >> >> > List attachments = new ArrayList()
>> >> >> > if (soapMsg.countAttachments() > 0) {
>> >> >> >         Iterator itr = soapMsg.getAttachments();
>> >> >> >         while (itr.hasNext()) {
>> >> >> >           AttachmentPart att = (AttachmentPart) itr.next();
>> >> >> >           DataHandler dh = att.getDataHandler();
>> >> >> >           attachments.add(dh);
>> >> >> >         }
>> >> >> >       }
>> >> >> >
>> >> >> > The attachment list is always empty. I am using following jars:
>> >> >> >
>> >> >> > axiom-api-SNAPSHOT.jar (modified on 16th Dec, 2008)
>> >> >> > axiom-dom-SNAPSHOT.jar (modified on 16th Dec, 2008)
>> >> >> > axiom-impl-SNAPSHOT.jar (modified on 16th Dec, 2008)
>> >> >> > axis2-saaj-SNAPSHOT.jar (modified on 12th Dec, 2008)
>> >> >> > axis2-saaj-api-1.4.jar (modified on 4th April, 2008)
>> >> >> >
>> >> >> > Chinmoy
>> >> >> >
>> >> >> >
>> >> >> >
>> >> >> > On Thu, Dec 18, 2008 at 6:49 AM, Andreas Veithen
>> >> >> > <[email protected]>
>> >> >> > wrote:
>> >> >> >>
>> >> >> >> Chinmoy,
>> >> >> >>
>> >> >> >> Can you post the code that demonstrates the problem?
>> >> >> >>
>> >> >> >> Andreas
>> >> >> >>
>> >> >> >> On Wed, Dec 17, 2008 at 13:40, Chinmoy Chakraborty
>> >> >> >> <[email protected]>
>> >> >> >> wrote:
>> >> >> >> > Hi All,
>> >> >> >> >
>> >> >> >> > I am creating SOAPMessage from inputstream. The inputstream is
>> >> >> >> > SOAP
>> >> >> >> > with
>> >> >> >> > attachments. But the attachmentParts becomes zero in the newly
>> >> >> >> > created
>> >> >> >> > SOAPMessage though the content type is "multipart/related".
>> >> >> >> >
>> >> >> >> > Why it is not created attachments when I am creating SOAP from
>> >> >> >> > inputstream
>> >> >> >> > (with attachments)? I am using axiom-api-SNAPSHOT.jar,
>> >> >> >> > axiom-dom-SNAPSHOT.jar, axiom-impl-SNAPSHOT.jar.(Axis2 1.4.1)
>> >> >> >> >
>> >> >> >> > Chinmoy
>> >> >> >
>> >> >> >
>> >> >
>> >> >
>> >
>> >
>
>

Reply via email to