You are viewing a plain text version of this content. The canonical link for it is here.
Posted to java-dev@axis.apache.org by wh...@apache.org on 2005/06/15 23:25:00 UTC
cvs commit: ws-axis/c/tests/auto_build/testcases/output DynUnrefAttachmentTest.expected
whitlock 2005/06/15 14:25:00
Modified: c/src/soap SoapAttachmentHeaders.cpp SoapSerializer.cpp
c/tests/auto_build/testcases/dynamic/DynUnrefAttachmentTest
DynUnrefAttachmentTest.cpp
c/tests/auto_build/testcases/output
DynUnrefAttachmentTest.expected
Log:
Unreferenced attachments
Better testing and more fixes
Revision Changes Path
1.2 +19 -5 ws-axis/c/src/soap/SoapAttachmentHeaders.cpp
Index: SoapAttachmentHeaders.cpp
===================================================================
RCS file: /home/cvs/ws-axis/c/src/soap/SoapAttachmentHeaders.cpp,v
retrieving revision 1.1
retrieving revision 1.2
diff -u -r1.1 -r1.2
--- SoapAttachmentHeaders.cpp 15 Jun 2005 13:37:31 -0000 1.1
+++ SoapAttachmentHeaders.cpp 15 Jun 2005 21:25:00 -0000 1.2
@@ -48,20 +48,34 @@
void SoapAttachmentHeaders::addHeader(AxisString name, AxisString value)
{
- m_AttachHeaders.push_back (make_pair (name, value));
+ bool found = false;
+ if (name == AXIS_CONTENT_ID)
+ {
+ for (unsigned int i = 0; i < m_AttachHeaders.size (); i++)
+ {
+ if (m_AttachHeaders[i].first == name)
+ {
+ m_AttachHeaders[i] = make_pair(name, value);
+ found = true;
+ break;
+ }
+ }
+ }
+
+ if (!found)
+ m_AttachHeaders.push_back (make_pair (name, value));
}
void SoapAttachmentHeaders::serialize(SoapSerializer &pSZ)
{
-
for (unsigned int i = 0; i < m_AttachHeaders.size (); i++)
{
- if (m_AttachHeaders[i].first == "Content-Id")
+ if (m_AttachHeaders[i].first == AXIS_CONTENT_ID)
{
pSZ.serialize((m_AttachHeaders[i].first).c_str(), ": <", NULL);
pSZ.serialize((m_AttachHeaders[i].second).c_str(), ">\n", NULL);
} else {
- pSZ.serialize((m_AttachHeaders[i].first).c_str(), ":", NULL);
+ pSZ.serialize((m_AttachHeaders[i].first).c_str(), ": ", NULL);
pSZ.serialize((m_AttachHeaders[i].second).c_str(), "\n", NULL);
}
}
@@ -72,7 +86,7 @@
for (unsigned int i = 0; i < m_AttachHeaders.size (); i++)
{
- if (m_AttachHeaders[i].first == "Content-Id")
+ if (m_AttachHeaders[i].first == AXIS_CONTENT_ID)
{
return m_AttachHeaders[i].second;
}
1.125 +16 -9 ws-axis/c/src/soap/SoapSerializer.cpp
Index: SoapSerializer.cpp
===================================================================
RCS file: /home/cvs/ws-axis/c/src/soap/SoapSerializer.cpp,v
retrieving revision 1.124
retrieving revision 1.125
diff -u -r1.124 -r1.125
--- SoapSerializer.cpp 15 Jun 2005 20:24:22 -0000 1.124
+++ SoapSerializer.cpp 15 Jun 2005 21:25:00 -0000 1.125
@@ -326,13 +326,23 @@
}
else
{ // Client code
- pStream->setTransportProperty( AXIS_CONTENT_TYPE,
- "multipart/related; type=\"text/xml\"; boundary=\"" MIMEBOUNDARY "\"");
+ const char *id = m_pContentIdSet->generateId();
+ string ctype = "multipart/related; type=\"text/xml\"; boundary=\"";
+ ctype += MIMEBOUNDARY;
+ ctype += "\"; start=\"<";
+ ctype += id;
+ ctype += ">\"";
+ pStream->setTransportProperty( AXIS_CONTENT_TYPE, ctype.c_str());
+
serialize("\n" MIMEBOUNDARY "\n", NULL);
serialize(AXIS_CONTENT_TYPE ": text/xml; charset=UTF-8\n", NULL);
serialize(AXIS_CONTENT_TRANSFER_ENCODING ": binary\n", NULL);
- serialize(AXIS_CONTENT_ID ": <4E2B3048B540B4C3271D6A6726571E0F>\n", NULL); // TODO: needs changing
- serialize("\n", NULL); // Extra \n terminates headers
+
+ string cid = AXIS_CONTENT_ID;
+ cid += ": <";
+ cid += id;
+ cid += ">\n\n"; // Extra \n terminates headers
+ serialize(cid.c_str(), NULL);
}
}
@@ -1130,17 +1140,14 @@
void SoapSerializer::serializeAttachments( SoapSerializer &pSZ)
{
/*serializing the attachments*/
-
map<AxisXMLString, ISoapAttachment*>::iterator itCurrAttach= m_SoapAttachments.begin();
-
while( itCurrAttach != m_SoapAttachments.end())
{
((SoapAttachment *) ((*itCurrAttach).second))->serialize(pSZ);
-
- pSZ.serialize("\n" MIMEBOUNDARY "\n", NULL);
-
+ pSZ.serialize("\n" MIMEBOUNDARY, NULL);
itCurrAttach++;
}
+ pSZ.serialize("\n", NULL);
}
void SoapSerializer::addAttachment( const AxisChar * achId, ISoapAttachment * pAttach)
1.5 +26 -11 ws-axis/c/tests/auto_build/testcases/dynamic/DynUnrefAttachmentTest/DynUnrefAttachmentTest.cpp
Index: DynUnrefAttachmentTest.cpp
===================================================================
RCS file: /home/cvs/ws-axis/c/tests/auto_build/testcases/dynamic/DynUnrefAttachmentTest/DynUnrefAttachmentTest.cpp,v
retrieving revision 1.4
retrieving revision 1.5
diff -u -r1.4 -r1.5
--- DynUnrefAttachmentTest.cpp 15 Jun 2005 20:24:22 -0000 1.4
+++ DynUnrefAttachmentTest.cpp 15 Jun 2005 21:25:00 -0000 1.5
@@ -29,24 +29,39 @@
Call call;
call.setEndpointURI(argv[1]);
- ISoapAttachment *att = call.createSoapAttachment();
- // att->addHeader(AXIS_CONTENT_ID,"HERES_MY_CONTENT_ID");
- att->addHeader(AXIS_CONTENT_TYPE,"text/plain");
- att->addHeader(AXIS_CONTENT_TRANSFER_ENCODING,"base64");
-
- xsd__base64Binary b64b;
- char *text = "This is the attachment body for the DynUnrefAttachmentTest";
- b64b.__ptr = (xsd__unsignedByte*)text;
- b64b.__size = strlen(text)+1;
- att->addBody(&b64b);
+ ////////////////////////////////////////////////////////////////////////
- call.addAttachment(att);
+ for (int i=0; i<5; i++)
+ {
+ cout << "i=" << i << endl;
+ ISoapAttachment *att = call.createSoapAttachment();
+
+ try {
+ if (!(i%3)) att->addHeader(AXIS_CONTENT_ID,"HERES_MY_CONTENT_ID");
+ } catch (AxisException &ae) {
+ cout << ae.what() << endl;
+ }
+
+ att->addHeader(AXIS_CONTENT_TYPE,"text/plain");
+ att->addHeader(AXIS_CONTENT_TRANSFER_ENCODING,"base64");
+
+ xsd__base64Binary b64b;
+ char *text = "This is the attachment body for the DynUnrefAttachmentTest";
+ b64b.__ptr = (xsd__unsignedByte*)text;
+ b64b.__size = strlen(text)+1;
+ att->addBody(&b64b);
+
+ call.addAttachment(att);
+ }
+
+ ////////////////////////////////////////////////////////////////////////
call.initialize(CPP_DOC_PROVIDER);
call.setSOAPVersion(SOAP_VER_1_1);
call.setTransportProperty(SOAPACTION_HEADER , "Trash");
call.setOperation("put", "http://localhost/axis/DynUnrefAttachment");
+ cout << "Invoking..." << endl;
if (AXIS_SUCCESS != call.invoke())
{
cout << "Invoke failed" << endl;
1.2 +7 -0 ws-axis/c/tests/auto_build/testcases/output/DynUnrefAttachmentTest.expected
Index: DynUnrefAttachmentTest.expected
===================================================================
RCS file: /home/cvs/ws-axis/c/tests/auto_build/testcases/output/DynUnrefAttachmentTest.expected,v
retrieving revision 1.1
retrieving revision 1.2
diff -u -r1.1 -r1.2
--- DynUnrefAttachmentTest.expected 14 Jun 2005 09:31:21 -0000 1.1
+++ DynUnrefAttachmentTest.expected 15 Jun 2005 21:25:00 -0000 1.2
@@ -1 +1,8 @@
+i=0
+i=1
+i=2
+i=3
+AxisSoapException:Content is not unique within the MIME message
+i=4
+Invoking...
----------------------------TEST COMPLETE--------------------------------