axis-java-user mailing list archives

Site index · List index
Message view « Date » · « Thread »
Top « Date » · « Thread »
From "Chinmoy Chakraborty" <cch...@gmail.com>
Subject Re: Error getting attachments from SOAPMessage
Date Fri, 02 Jan 2009 06:15:42 GMT
Hi Andreas,

Now I removed the duplicate code from SOAPMessageImpl. I also added one line
(line no. 147) to set the content id of SOAPPart. Please find attached two
modified java file.

Chinmoy




On Fri, Jan 2, 2009 at 9:48 AM, Chinmoy Chakraborty <cchinu@gmail.com>wrote:

> Hi Andreas,
>
> Yes, the code for extracting rootcontent-id is duplicate code. The code can
> be put in a protected method in SOAPPartImpl.I had to do that because, in
> Attachments SOAPPart comes also as attachment. It requires to discard
> SOAPPart attachment from the attachment map while adding the attachments in
> SOAPMessage..
>
> In the attachment map, the content-ids are stored as key and datahandler as
> the value. I am adding the attachments in SOAPMessage if it is not SOAPPart.
> For that I needed the rootcontentid i.e. the id for the SOAPPart. I am
> extrracting that id from "Content-Type" string. So it can include '<', '>',
> and "cid:".
>
>
> Chinmoy
>
>
>
> On Thu, Jan 1, 2009 at 8:42 PM, Andreas Veithen <andreas.veithen@gmail.com
> > wrote:
>
>> 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 <cchinu@gmail.com>
>> 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 <
>> andreas.veithen@gmail.com>
>> > wrote:
>> >>
>> >> On Tue, Dec 23, 2008 at 12:17, Chinmoy Chakraborty <cchinu@gmail.com>
>> >> 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
>> >> > <andreas.veithen@gmail.com>
>> >> > 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 <
>> cchinu@gmail.com>
>> >> >> 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
>> >> >> > <andreas.veithen@gmail.com>
>> >> >> > 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
>> >> >> >> <cchinu@gmail.com>
>> >> >> >> wrote:
>> >> >> >> > Andreas,
>> >> >> >> >
>> >> >> >> > Here is my code snippet.
>> >> >> >> >
>> >> >> >> > String contentType = multipart/related;
>> >> >> >> >  boundary=MIMEBoundaryurn_uuid_D988AB74BC9802BDC21229577126047;
>> >> >> >> >  type="text/xml";
>> >> >> >> >  start="<0.urn:uuid:D988AB74BC9802BDC21229577126064@apache.org<0.urn%3Auuid%3AD988AB74BC9802BDC21229577126064@apache.org>
>> >"
>> >> >> >> >
>> >> >> >> > 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
>> >> >> >> > <andreas.veithen@gmail.com>
>> >> >> >> > wrote:
>> >> >> >> >>
>> >> >> >> >> Chinmoy,
>> >> >> >> >>
>> >> >> >> >> Can you post the code that demonstrates the problem?
>> >> >> >> >>
>> >> >> >> >> Andreas
>> >> >> >> >>
>> >> >> >> >> On Wed, Dec 17, 2008 at 13:40, Chinmoy Chakraborty
>> >> >> >> >> <cchinu@gmail.com>
>> >> >> >> >> 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
>> >> >> >> >
>> >> >> >> >
>> >> >> >
>> >> >> >
>> >> >
>> >> >
>> >
>> >
>>
>
>

Mime
View raw message