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/16 16:19:15 UTC

cvs commit: ws-axis/c/src/soap SoapAttachment.cpp SoapAttachment.hpp SoapSerializer.cpp SoapSerializer.h

whitlock    2005/06/16 07:19:15

  Modified:    c/include/axis TypeMapping.hpp
               c/include/axis/client Call.hpp
               c/src/common Param.cpp Param.h
               c/src/engine/client Call.cpp
               c/src/soap SoapAttachment.cpp SoapAttachment.hpp
                        SoapSerializer.cpp SoapSerializer.h
  Log:
  Implement referenced attachments in the dynamic client API
  Add Call::addAttachmentParameter
  Put the attachment in ParamValue
  Add SoapAttachment::serializeReference
  
  Revision  Changes    Path
  1.8       +1 -1      ws-axis/c/include/axis/TypeMapping.hpp
  
  Index: TypeMapping.hpp
  ===================================================================
  RCS file: /home/cvs/ws-axis/c/include/axis/TypeMapping.hpp,v
  retrieving revision 1.7
  retrieving revision 1.8
  diff -u -r1.7 -r1.8
  --- TypeMapping.hpp	3 Jun 2005 10:43:48 -0000	1.7
  +++ TypeMapping.hpp	16 Jun 2005 14:19:15 -0000	1.8
  @@ -45,7 +45,7 @@
                   XSD_POSITIVEINTEGER, XSD_NONPOSITIVEINTEGER, XSD_NEGATIVEINTEGER, \
                   XSD_NORMALIZEDSTRING, XSD_TOKEN, XSD_LANGUAGE, XSD_NAME, \
                   XSD_NCNAME, XSD_ID, XSD_IDREF, XSD_IDREFS, XSD_ENTITY, \
  -                XSD_ENTITIES, XSD_NMTOKENS \
  +                XSD_ENTITIES, XSD_NMTOKENS, ATTACHMENT \
   } XSDTYPE;
   
   /**
  
  
  
  1.32      +4 -0      ws-axis/c/include/axis/client/Call.hpp
  
  Index: Call.hpp
  ===================================================================
  RCS file: /home/cvs/ws-axis/c/include/axis/client/Call.hpp,v
  retrieving revision 1.31
  retrieving revision 1.32
  diff -u -r1.31 -r1.32
  --- Call.hpp	15 Jun 2005 20:24:22 -0000	1.31
  +++ Call.hpp	16 Jun 2005 14:19:15 -0000	1.32
  @@ -96,6 +96,8 @@
       /* Method for adding parameters of basic types */
       virtual void AXISCALL addParameter(void* pValue,const char* pName,
           XSDTYPE nType)=0;
  +	/* Method for adding referenced attachments */
  +	virtual void AXISCALL addAttachmentParameter(ISoapAttachment* att, const char* pName)=0;
   
       /* Methods used by stubs to get a deserialized value of an XML element
        * as basic types
  @@ -376,6 +378,8 @@
       /* Method for adding parameters of basic types */
       void AXISCALL addParameter(void* pValue,const char* pchName,
           XSDTYPE nType);
  +	/* Method for adding referenced attachments */
  +	void AXISCALL addAttachmentParameter(ISoapAttachment* att, const char* pName);
   
       /* Method that set the remote method name */
       void AXISCALL setOperation(const char* pchOperation,
  
  
  
  1.56      +3 -0      ws-axis/c/src/common/Param.cpp
  
  Index: Param.cpp
  ===================================================================
  RCS file: /home/cvs/ws-axis/c/src/common/Param.cpp,v
  retrieving revision 1.55
  retrieving revision 1.56
  diff -u -r1.55 -r1.56
  --- Param.cpp	25 May 2005 16:03:16 -0000	1.55
  +++ Param.cpp	16 Jun 2005 14:19:15 -0000	1.56
  @@ -173,6 +173,9 @@
         case XSD_ANY:
                pSZ.serializeAnyObject(m_Value.pAnyObject);
                break;
  +      case ATTACHMENT:
  +            m_Value.pAttachment->serializeReference(pSZ,m_sName.c_str());
  +            break;
         default:
               pSZ.serializeAsElement((AxisChar*) m_sName.c_str (), (IAnySimpleType*) m_AnySimpleType);
               break;
  
  
  
  1.31      +2 -0      ws-axis/c/src/common/Param.h
  
  Index: Param.h
  ===================================================================
  RCS file: /home/cvs/ws-axis/c/src/common/Param.h,v
  retrieving revision 1.30
  retrieving revision 1.31
  diff -u -r1.30 -r1.31
  --- Param.h	25 May 2005 16:03:16 -0000	1.30
  +++ Param.h	16 Jun 2005 14:19:15 -0000	1.31
  @@ -29,6 +29,7 @@
   AXIS_CPP_NAMESPACE_START
   
   class ArrayBean;
  +class SoapAttachment;
   
   class ParamValue
   {
  @@ -39,6 +40,7 @@
       };
       ComplexObjectHandler* pCplxObj;
       AnyType* pAnyObject; /* used to hold AnyType struct for xsd:any */
  +	SoapAttachment* pAttachment;
   };
   
   /*
  
  
  
  1.118     +9 -1      ws-axis/c/src/engine/client/Call.cpp
  
  Index: Call.cpp
  ===================================================================
  RCS file: /home/cvs/ws-axis/c/src/engine/client/Call.cpp,v
  retrieving revision 1.117
  retrieving revision 1.118
  diff -u -r1.117 -r1.118
  --- Call.cpp	15 Jun 2005 20:24:22 -0000	1.117
  +++ Call.cpp	16 Jun 2005 14:19:15 -0000	1.118
  @@ -1052,10 +1052,18 @@
   
   void Call::addAttachment(ISoapAttachment* att)
   {
  -	m_attachments.push_back(att);
  +	if (NULL==m_pIWSSZ)
  +		m_attachments.push_back(att);
  +	else
  +		m_pIWSSZ->addAttachment(att->getHeader(AXIS_CONTENT_ID),att);
   }
   
   ISoapAttachment* Call::createSoapAttachment()
   {
   	return new SoapAttachment(m_pContentIdSet);
   }
  +
  +void Call::addAttachmentParameter(ISoapAttachment* att, const char* pName)
  +{
  +	m_pIWSSZ->addAttachmentParameter(att,pName);
  +}
  
  
  
  1.12      +10 -0     ws-axis/c/src/soap/SoapAttachment.cpp
  
  Index: SoapAttachment.cpp
  ===================================================================
  RCS file: /home/cvs/ws-axis/c/src/soap/SoapAttachment.cpp,v
  retrieving revision 1.11
  retrieving revision 1.12
  diff -u -r1.11 -r1.12
  --- SoapAttachment.cpp	16 Jun 2005 09:31:04 -0000	1.11
  +++ SoapAttachment.cpp	16 Jun 2005 14:19:15 -0000	1.12
  @@ -134,6 +134,16 @@
      return getHeader(AXIS_CONTENT_ID);
   }
   
  +void SoapAttachment::serializeReference(SoapSerializer& pSZ, const char *name)
  +{
  +	string data = "<";
  +	data += name;
  +	data += " href=\"cid:";
  +	data += m_AttachmentHeaders->getHeader(AXIS_CONTENT_ID);
  +	data += "\" />";
  +	pSZ.serialize(data.c_str());
  +}
  +
   AXIS_CPP_NAMESPACE_END
   
   
  
  
  
  1.10      +1 -0      ws-axis/c/src/soap/SoapAttachment.hpp
  
  Index: SoapAttachment.hpp
  ===================================================================
  RCS file: /home/cvs/ws-axis/c/src/soap/SoapAttachment.hpp,v
  retrieving revision 1.9
  retrieving revision 1.10
  diff -u -r1.9 -r1.10
  --- SoapAttachment.hpp	16 Jun 2005 09:31:04 -0000	1.9
  +++ SoapAttachment.hpp	16 Jun 2005 14:19:15 -0000	1.10
  @@ -73,6 +73,7 @@
   	void addHeader(const char* pchName, const char* pchValue);
   	SoapAttachment(ContentIdSet *pContentIdSet=NULL);
   	virtual ~SoapAttachment();	
  +	void serializeReference(SoapSerializer& pSZ, const char *name);
   };
   
   AXIS_CPP_NAMESPACE_END
  
  
  
  1.126     +16 -0     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.125
  retrieving revision 1.126
  diff -u -r1.125 -r1.126
  --- SoapSerializer.cpp	15 Jun 2005 21:25:00 -0000	1.125
  +++ SoapSerializer.cpp	16 Jun 2005 14:19:15 -0000	1.126
  @@ -1232,6 +1232,22 @@
   	return false;
   }
   
  +void SoapSerializer::addAttachmentParameter(ISoapAttachment* att, const char* pName)
  +{
  +    Param *pParam = new Param();
  +    pParam->m_Value.pAttachment = static_cast<SoapAttachment*>(att);
  +	pParam->m_Type = ATTACHMENT;
  +	
  +    if( m_pSoapEnvelope &&
  +		(m_pSoapEnvelope->m_pSoapBody) &&
  +		(m_pSoapEnvelope->m_pSoapBody->m_pSoapMethod)) 
  +    {
  +        m_pSoapEnvelope->m_pSoapBody->m_pSoapMethod->addOutputParam(pParam);
  +    }
  +    pParam->setName(pName);
  +	m_SoapAttachments[att->getAttachmentId()] = att;
  +}
  +
   IHeaderBlock * SoapSerializer::getCurrentHeaderBlock()
   {
   	return m_pSoapEnvelope->m_pSoapHeader->getCurrentHeaderBlock();
  
  
  
  1.51      +1 -0      ws-axis/c/src/soap/SoapSerializer.h
  
  Index: SoapSerializer.h
  ===================================================================
  RCS file: /home/cvs/ws-axis/c/src/soap/SoapSerializer.h,v
  retrieving revision 1.50
  retrieving revision 1.51
  diff -u -r1.50 -r1.51
  --- SoapSerializer.h	15 Jun 2005 20:24:22 -0000	1.50
  +++ SoapSerializer.h	16 Jun 2005 14:19:15 -0000	1.51
  @@ -183,6 +183,7 @@
   	void addAttachment(const AxisChar* achId, ISoapAttachment* pAttach);
       void addAttachments(ISoapAttachment** pAttach, int iAttchArraySize);
   	void setContentIdSet(ContentIdSet *pContentIdSet);
  +	void addAttachmentParameter(ISoapAttachment* att, const char* pName);
   	IHeaderBlock* getHeaderBlock(const AxisChar* pcName, const AxisChar* pcNamespace);
   	/*
   	* TODO: Have to remove this method. Date logged 13Jan2005