You are viewing a plain text version of this content. The canonical link for it is here.
Posted to axis-cvs@ws.apache.org by su...@apache.org on 2004/05/18 13:09:12 UTC
cvs commit: ws-axis/c/vc/wsdd WSDDLibrary.dsp
susantha 2004/05/18 04:09:12
Modified: c/include/axis SOAPTransport.h
c/include/axis/server SoapDeSerializer.h XMLParser.h
c/src/common AxisTime.cpp
c/src/engine Axis.cpp
c/src/engine/client Call.cpp
c/src/soap SoapDeSerializer.cpp SoapFault.cpp
c/src/wsdd WSDDDeployment.cpp WSDDDeployment.h
WSDDDocument.h
c/vc AxisClientDLL.dsp AxisServerDLL.dsp
Distribution.dsw
c/vc/server/apache1_3 Apache1_3Module.dsp
c/vc/server/apache2_0 Apache2_0Module.dsp
c/vc/server/simple_axis_server SimpleAxisServer.dsp
c/vc/soap SoapLibrary.dsp
c/vc/transport/axis AxisTransport.dsp
c/vc/wsdd WSDDLibrary.dsp
Added: c/src/engine SOAPTransportFactory.cpp SOAPTransportFactory.h
XMLParserFactory.cpp XMLParserFactory.h
c/src/wsdd WSDDDocument.cpp
c/src/xml/expat SoapParserExpat.cpp SoapParserExpat.h
c/src/xml/xerces SoapBinInputStream.cpp SoapBinInputStream.h
SoapInputSource.cpp SoapInputSource.h
SoapParserXerces.cpp SoapParserXerces.h
XercesHandler.cpp XercesHandler.h
Removed: c/src/soap SoapBinInputStream.cpp SoapBinInputStream.h
SoapInputSource.cpp SoapInputSource.h
SoapParserExpat.cpp SoapParserExpat.h
SoapParserXerces.cpp SoapParserXerces.h
XercesHandler.cpp XercesHandler.h
c/src/wsdd WSDDDocumentExpat.cpp WSDDDocumentExpat.h
WSDDDocumentXerces.cpp WSDDDocumentXerces.h
Log:
Parser abstraction
1. Added new files
SOAPTransportFactory and XMLParserFactory classes
2. Moved xerces and expat specific files from /src/soap /src/wsdd etc to /src/xml/xerces and /src/xml/expat respectively.
3. Changes to the Axis codebase to make parser layer abstraction
4. Added vc++ project files for making xerces and expat parser dynamic libraries.
Revision Changes Path
1.2 +13 -8 ws-axis/c/include/axis/SOAPTransport.h
Index: SOAPTransport.h
===================================================================
RCS file: /home/cvs/ws-axis/c/include/axis/SOAPTransport.h,v
retrieving revision 1.1
retrieving revision 1.2
diff -u -r1.1 -r1.2
--- SOAPTransport.h 12 May 2004 07:36:45 -0000 1.1
+++ SOAPTransport.h 18 May 2004 11:09:08 -0000 1.2
@@ -34,12 +34,9 @@
#ifdef __cplusplus
-class SOAPTransport
+class AxisIOStream
{
public:
- virtual ~SOAPTransport(){};
- virtual int openConnection()=0;
- virtual void closeConnection()=0;
/**
* Used to send buffers to the transport layer. Axis Engine may call this method multiple
* times. Its upto the transport to decide how they are sent (chunked/unchunked etc). This
@@ -53,15 +50,23 @@
*/
virtual AXIS_TRANSPORT_STATUS sendBytes(const char* pcSendBuffer, const void* pBufferid)=0;
/**
+ * Used to get part of or all SOAP message.
+ */
+ virtual AXIS_TRANSPORT_STATUS getBytes(char* pcBuffer, int* piRetSize)=0;
+};
+
+class SOAPTransport : public AxisIOStream
+{
+public:
+ virtual ~SOAPTransport(){};
+ virtual int openConnection()=0;
+ virtual void closeConnection()=0;
+ /**
* Method used to register the callback function which is called by transport layer to inform
* Axis Engine that a buffer given to it is sent and it can be re-used by Axis Engine.
*
*/
virtual void registerReleaseBufferCallback(AXIS_ENGINE_CALLBACK_RELEASE_SEND_BUFFER pFunct)=0;
- /**
- * Used to get part of or all SOAP message.
- */
- virtual AXIS_TRANSPORT_STATUS getBytes(char* pcBuffer, int* piRetSize)=0;
virtual void setTransportProperty(AXIS_TRANSPORT_INFORMATION_TYPE eType, const char* pcValue)=0;
virtual const char* getTransportProperty(AXIS_TRANSPORT_INFORMATION_TYPE eType)=0;
virtual void setTransportProperty(const char* pcKey, const char* pcValue)=0;
1.17 +1 -0 ws-axis/c/include/axis/server/SoapDeSerializer.h
Index: SoapDeSerializer.h
===================================================================
RCS file: /home/cvs/ws-axis/c/include/axis/server/SoapDeSerializer.h,v
retrieving revision 1.16
retrieving revision 1.17
diff -u -r1.16 -r1.17
--- SoapDeSerializer.h 18 May 2004 04:32:30 -0000 1.16
+++ SoapDeSerializer.h 18 May 2004 11:09:08 -0000 1.17
@@ -56,6 +56,7 @@
/* Provider type of current service that uses this DeSerializer object */
PROVIDERTYPE m_ProviderType;
char* m_pcFaultDetail;
+ SOAPTransport* m_pInputStream;
private:
int AXISCALL getArraySize(const AnyElement* pElement);
1.12 +40 -8 ws-axis/c/include/axis/server/XMLParser.h
Index: XMLParser.h
===================================================================
RCS file: /home/cvs/ws-axis/c/include/axis/server/XMLParser.h,v
retrieving revision 1.11
retrieving revision 1.12
diff -u -r1.11 -r1.12
--- XMLParser.h 12 May 2004 07:36:46 -0000 1.11
+++ XMLParser.h 18 May 2004 11:09:08 -0000 1.12
@@ -24,21 +24,53 @@
/**
* @class XMLParser
* @brief Interface that any parser wrapper should implement in order to be use
- * in Axis as a SOAP parser.
+ * in Axis as a XML PULL parser. Its the responsibility of the implementation
+ * class to free and memory allocated inside the class. The class should not
+ * deallocate either the given input stream or any memory buffers that it gets
+ * from the stream.
* @author Susantha Kumara (susantha@opensource.lk, skumara@virtusa.com)
*/
class XMLParser
{
public:
virtual ~XMLParser(){};
- virtual int setInputStream(SOAPTransport* pInputStream)=0;
- virtual SOAPTransport* getInputStream()=0;
- virtual int init()=0;
- virtual const XML_Ch* getNS4Prefix(const XML_Ch* prefix)=0;
+ /**
+ * Sets the input stream. Here the parser object should also be initialized
+ * to its initial state. Axis will call this function first for each input
+ * stream to be parsed.
+ *
+ * @param pInputStream Input stream from which the data to be parsed taken
+ * by calling its getBytes function. Function should not deallocate
+ * either pInputStream or any memory buffers that it gets.
+ */
+ virtual int setInputStream(AxisIOStream* pInputStream)=0;
+ /**
+ * Used to get the corresponding namespace string for a given prefix.
+ *
+ * @param pcPrefix Prefix for which the namespace string is requested
+ */
+ virtual const XML_Ch* getNS4Prefix(const XML_Ch* pcPrefix)=0;
+ /**
+ * Used to get the parser status. Should return AXIS_SUCCESS if nothing
+ * has gone wrong.
+ */
virtual int getStatus()=0;
- virtual const AnyElement* next(bool isCharData=false)=0;
- virtual AXIS_TRANSPORT_STATUS getTransportStatus()=0;
- virtual void setTransportStatus(AXIS_TRANSPORT_STATUS nStatus)=0;
+ /**
+ * Used to get the next XML event. The valid events are start element, end
+ * element and character data. If we think of SAX events the processing
+ * instruction events, namespace prefix mapping events are not considered
+ * valid. If the implementation of this interface is wrapping up a SAX
+ * parser it should follow the above rules.
+ *
+ * @param bIsCharData Indicates whether Axis is expecting a character data
+ * event or not. If Axis is not expecting a character data event
+ * (bIsCharData is false) the parser should not return a character
+ * data event. Instead it should skip all character data events
+ * until it finds a non-character data event and return it.
+ */
+ virtual const AnyElement* next(bool bIsCharData=false)=0;
+protected:
+ AxisIOStream* m_pInputStream;
};
1.21 +2 -1 ws-axis/c/src/common/AxisTime.cpp
Index: AxisTime.cpp
===================================================================
RCS file: /home/cvs/ws-axis/c/src/common/AxisTime.cpp,v
retrieving revision 1.20
retrieving revision 1.21
diff -u -r1.20 -r1.21
--- AxisTime.cpp 26 Apr 2004 04:04:36 -0000 1.20
+++ AxisTime.cpp 18 May 2004 11:09:09 -0000 1.21
@@ -175,7 +175,7 @@
int intHours = 0;
int intMins = 0;
int intSecs = 0;
- unsigned int intPos, intPos1, intPos2, intPos3, intPos4, intPos5, intPos6;
+ unsigned int intPos1, intPos2, intPos3, intPos4, intPos5, intPos6;
time_t now;
struct tm result1, result2;
struct tm *pTm;
@@ -472,6 +472,7 @@
default:;
}
+ return AXIS_SUCCESS;
}
long AxisTime::getDuration ()
1.53 +3 -14 ws-axis/c/src/engine/Axis.cpp
Index: Axis.cpp
===================================================================
RCS file: /home/cvs/ws-axis/c/src/engine/Axis.cpp,v
retrieving revision 1.52
retrieving revision 1.53
diff -u -r1.52 -r1.53
--- Axis.cpp 18 May 2004 04:32:30 -0000 1.52
+++ Axis.cpp 18 May 2004 11:09:09 -0000 1.53
@@ -56,11 +56,8 @@
#include <axis/server/AxisConfig.h>
#include "../wsdd/WSDDKeywords.h"
#include <axis/server/AxisTrace.h>
-#include "../transport/SOAPTransportFactory.h"
-
-#ifdef USE_XERCES_PARSER
-#include <xercesc/util/PlatformUtils.hpp>
-#endif
+#include "SOAPTransportFactory.h"
+#include "XMLParserFactory.h"
#define BYTESTOREAD 64
// The relative location of the wsdl files hardcoded
@@ -71,9 +68,6 @@
unsigned char chEBuf[1024];
#endif
-#ifdef USE_XERCES_PARSER
-XERCES_CPP_NAMESPACE_USE
-#endif
// Synchronized global variables.
HandlerLoader* g_pHandlerLoader;
AppScopeHandlerPool* g_pAppScopeHandlerPool;
@@ -238,9 +232,6 @@
{
int status = 0;
// order of these initialization method invocation should not be changed
-#ifdef USE_XERCES_PARSER
- XMLPlatformUtils::Initialize ();
-#endif
AxisEngine::m_bServer = bServer;
AxisUtils::initialize ();
WSDDKeywords::initialize ();
@@ -249,6 +240,7 @@
URIMapping::initialize ();
SoapFault::initialize ();
SOAPTransportFactory::initialize();
+ XMLParserFactory::initialize();
#ifdef AXIS_CLIENT_LIB
CallBase::s_Initialize ();
#endif
@@ -320,9 +312,6 @@
extern "C" int uninitialize_module ()
{
SOAPTransportFactory::uninitialize();
-#ifdef USE_XERCES_PARSER
- XMLPlatformUtils::Terminate ();
-#endif
ModuleUnInitialize ();
SoapKeywordMapping::uninitialize ();
return AXIS_SUCCESS;
1.1 ws-axis/c/src/engine/SOAPTransportFactory.cpp
Index: SOAPTransportFactory.cpp
===================================================================
/*
* Copyright 2003-2004 The Apache Software Foundation.
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
* You may obtain a copy of the License at
*
* http://www.apache.org/licenses/LICENSE-2.0
*
* Unless required by applicable law or agreed to in writing, software
* distributed under the License is distributed on an "AS IS" BASIS,
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
* See the License for the specific language governing permissions and
* limitations under the License.
*/
/**
* This class
*
* @author Susantha Kumara (skumara@virtusa.com, susantha@opensource.lk)
*
*/
#include "SOAPTransportFactory.h"
#include <axis/SOAPTransport.h>
#include <stdio.h>
const char* SOAPTransportFactory::m_pcLibraryPath = 0;
DLHandler SOAPTransportFactory::m_LibHandler = 0;
CREATE_OBJECT1 SOAPTransportFactory::m_Create = 0;
DELETE_OBJECT1 SOAPTransportFactory::m_Delete = 0;
SOAPTransportFactory::SOAPTransportFactory()
{
m_LibHandler = 0;
}
SOAPTransportFactory::~SOAPTransportFactory()
{
}
int SOAPTransportFactory::initialize()
{
#ifdef WIN32
#ifdef _DEBUG
m_pcLibraryPath = "AxisTransport_D.dll"; //this will be taken from configuration file
#else
m_pcLibraryPath = "AxisTransport.dll"; //this will be taken from configuration file
#endif
#else
m_pcLibraryPath = "libAxisTransport.so"; //this will be taken from configuration file
#endif
if (!loadLib())
{
#if defined(USE_LTDL)
m_Create = (CREATE_OBJECT1) lt_dlsym(m_LibHandler, CREATE_FUNCTION1);
m_Delete = (DELETE_OBJECT1) lt_dlsym(m_LibHandler, DELETE_FUNCTION1);
#elif defined(WIN32)
m_Create = (CREATE_OBJECT1) GetProcAddress(m_LibHandler, CREATE_FUNCTION1);
m_Delete = (DELETE_OBJECT1) GetProcAddress(m_LibHandler, DELETE_FUNCTION1);
#else
m_Create = (CREATE_OBJECT1) dlsym(m_LibHandler, CREATE_FUNCTION1);
m_Delete = (DELETE_OBJECT1) dlsym(m_LibHandler, DELETE_FUNCTION1);
#endif
if (!m_Create || !m_Delete)
{
unloadLib();
printf("Transport library loading failed");
}
else
{
return AXIS_SUCCESS;
}
}
return AXIS_FAIL;
}
int SOAPTransportFactory::uninitialize()
{
return unloadLib();
}
/**
* Should create an instance of transport of type given by eProtocol
*/
SOAPTransport* SOAPTransportFactory::getTransportObject(AXIS_PROTOCOL_TYPE eProtocol)
{
SOAPTransport* pTpt;
m_Create(&pTpt);
return pTpt;
}
void SOAPTransportFactory::destroyTransportObject(SOAPTransport* pObject)
{
m_Delete(pObject);
}
int SOAPTransportFactory::loadLib()
{
#if defined(USE_LTDL)
m_LibHandler = lt_dlopen(m_pcLibraryPath);
if (!m_LibHandler)
{
printf("DLOPEN FAILED in loading transport library: %s\n", lt_dlerror ());
}
#elif defined(WIN32)
m_LibHandler = LoadLibrary(m_pcLibraryPath);
#else
m_LibHandler = dlopen(m_pcLibraryPath, RTLD_LAZY);
if (!m_LibHandler)
{
printf("DLOPEN FAILED in loading transport library: %s\n", dlerror());
}
#endif
return (m_LibHandler != 0) ? AXIS_SUCCESS : AXIS_FAIL;
}
int SOAPTransportFactory::unloadLib()
{
#if defined(USE_LTDL)
lt_dlclose(m_LibHandler);
#elif defined(WIN32)
FreeLibrary(m_LibHandler);
#else
dlclose(m_LibHandler);
#endif
return AXIS_SUCCESS;
}
1.1 ws-axis/c/src/engine/SOAPTransportFactory.h
Index: SOAPTransportFactory.h
===================================================================
/*
* Copyright 2003-2004 The Apache Software Foundation.
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
* You may obtain a copy of the License at
*
* http://www.apache.org/licenses/LICENSE-2.0
*
* Unless required by applicable law or agreed to in writing, software
* distributed under the License is distributed on an "AS IS" BASIS,
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
* See the License for the specific language governing permissions and
* limitations under the License.
*/
/**
* This class
*
* @author Susantha Kumara (skumara@virtusa.com, susantha@opensource.lk)
*
*/
#if !defined(AXIS_SOAPTRANSPORTFACTORY_H__OF_AXIS_INCLUDED_)
#define AXIS_SOAPTRANSPORTFACTORY_H__OF_AXIS_INCLUDED_
#include <axis/server/GDefine.h>
#define CREATE_FUNCTION1 "CreateInstance"
#define DELETE_FUNCTION1 "DestroyInstance"
#if defined(USE_LTDL)
#include <ltdl.h>
#define DLHandler lt_dlhandle
#elif defined(WIN32)
#include <windows.h>
#define DLHandler HINSTANCE
#define RTLD_LAZY 0
#else /* Linux */
#include <dlfcn.h>
#define DLHandler void*
#endif
class SOAPTransport;
typedef int (* CREATE_OBJECT1) (SOAPTransport** inst);
typedef int (* DELETE_OBJECT1) (SOAPTransport* inst);
class SOAPTransportFactory
{
public:
SOAPTransportFactory();
virtual ~SOAPTransportFactory();
/**
* Used to initialize the global object. Following tasks are done
* 1. Get the transport library name(s) from the configuration file.
* 2. Load those dynamic transport libraries.
* 3. Get the function pointers of the exported functions
* 4. Get any other information about the library. (ex: what protocols
* are supported etc)
*/
static int initialize();
/**
* Used to uninitialize the global object.
* 1. Unloads all dynamic transport libraries.
*/
static int uninitialize();
/**
* Used to create a transport object of given protocol
*/
static SOAPTransport* getTransportObject(AXIS_PROTOCOL_TYPE eProtocol);
static void destroyTransportObject(SOAPTransport* pObject);
static int loadLib();
static int unloadLib();
private:
static const char* m_pcLibraryPath; /* later this should be a list with libraries with thier other information */
static DLHandler m_LibHandler;
static CREATE_OBJECT1 m_Create;
static DELETE_OBJECT1 m_Delete;
};
#endif
1.1 ws-axis/c/src/engine/XMLParserFactory.cpp
Index: XMLParserFactory.cpp
===================================================================
/*
* Copyright 2003-2004 The Apache Software Foundation.
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
* You may obtain a copy of the License at
*
* http://www.apache.org/licenses/LICENSE-2.0
*
* Unless required by applicable law or agreed to in writing, software
* distributed under the License is distributed on an "AS IS" BASIS,
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
* See the License for the specific language governing permissions and
* limitations under the License.
*/
/**
* This class
*
* @author Susantha Kumara (skumara@virtusa.com, susantha@opensource.lk)
*
*/
#include "XMLParserFactory.h"
#include <axis/server/XMLParser.h>
#include <stdio.h>
const char* XMLParserFactory::m_pcLibraryPath = 0;
DLHandler XMLParserFactory::m_LibHandler = 0;
CREATE_OBJECT2 XMLParserFactory::m_Create = 0;
DELETE_OBJECT2 XMLParserFactory::m_Delete = 0;
XMLParserFactory::XMLParserFactory()
{
m_LibHandler = 0;
}
XMLParserFactory::~XMLParserFactory()
{
}
int XMLParserFactory::initialize()
{
#ifdef WIN32
#ifdef _DEBUG
m_pcLibraryPath = "AxisXMLParser_D.dll"; //this will be taken from configuration file
#else
m_pcLibraryPath = "AxisXMLParser.dll"; //this will be taken from configuration file
#endif
#else
m_pcLibraryPath = "libAxisXMLParser.so"; //this will be taken from configuration file
#endif
if (!loadLib())
{
#if defined(USE_LTDL)
m_Create = (CREATE_OBJECT2) lt_dlsym(m_LibHandler, CREATE_FUNCTION2);
m_Delete = (DELETE_OBJECT2) lt_dlsym(m_LibHandler, DELETE_FUNCTION2);
#elif defined(WIN32)
m_Create = (CREATE_OBJECT2) GetProcAddress(m_LibHandler, CREATE_FUNCTION2);
m_Delete = (DELETE_OBJECT2) GetProcAddress(m_LibHandler, DELETE_FUNCTION2);
#else
m_Create = (CREATE_OBJECT2) dlsym(m_LibHandler, CREATE_FUNCTION2);
m_Delete = (DELETE_OBJECT2) dlsym(m_LibHandler, DELETE_FUNCTION2);
#endif
if (!m_Create || !m_Delete)
{
unloadLib();
printf("Transport library loading failed");
}
else
{
return AXIS_SUCCESS;
}
}
return AXIS_FAIL;
}
int XMLParserFactory::uninitialize()
{
return unloadLib();
}
/**
* Should create an instance of transport of type given by eProtocol
*/
XMLParser* XMLParserFactory::getParserObject()
{
XMLParser* pTpt = 0;
if (m_Create) m_Create(&pTpt);
return pTpt;
}
void XMLParserFactory::destroyParserObject(XMLParser* pObject)
{
m_Delete(pObject);
}
int XMLParserFactory::loadLib()
{
#if defined(USE_LTDL)
m_LibHandler = lt_dlopen(m_pcLibraryPath);
if (!m_LibHandler)
{
printf("DLOPEN FAILED in loading transport library: %s\n", lt_dlerror ());
}
#elif defined(WIN32)
m_LibHandler = LoadLibrary(m_pcLibraryPath);
#else
m_LibHandler = dlopen(m_pcLibraryPath, RTLD_LAZY);
if (!m_LibHandler)
{
printf("DLOPEN FAILED in loading transport library: %s\n", dlerror());
}
#endif
return (m_LibHandler != 0) ? AXIS_SUCCESS : AXIS_FAIL;
}
int XMLParserFactory::unloadLib()
{
#if defined(USE_LTDL)
lt_dlclose(m_LibHandler);
#elif defined(WIN32)
FreeLibrary(m_LibHandler);
#else
dlclose(m_LibHandler);
#endif
return AXIS_SUCCESS;
}
1.1 ws-axis/c/src/engine/XMLParserFactory.h
Index: XMLParserFactory.h
===================================================================
/*
* Copyright 2003-2004 The Apache Software Foundation.
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
* You may obtain a copy of the License at
*
* http://www.apache.org/licenses/LICENSE-2.0
*
* Unless required by applicable law or agreed to in writing, software
* distributed under the License is distributed on an "AS IS" BASIS,
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
* See the License for the specific language governing permissions and
* limitations under the License.
*/
/**
* This class
*
* @author Susantha Kumara (skumara@virtusa.com, susantha@opensource.lk)
*
*/
#if !defined(AXIS_XMLPARSERFACTORY_H__OF_AXIS_INCLUDED_)
#define AXIS_XMLPARSERFACTORY_H__OF_AXIS_INCLUDED_
#include <axis/server/GDefine.h>
#include <axis/server/XMLParser.h>
#define CREATE_FUNCTION2 "CreateInstance"
#define DELETE_FUNCTION2 "DestroyInstance"
#if defined(USE_LTDL)
#include <ltdl.h>
#define DLHandler lt_dlhandle
#elif defined(WIN32)
#include <windows.h>
#define DLHandler HINSTANCE
#define RTLD_LAZY 0
#else /* Linux */
#include <dlfcn.h>
#define DLHandler void*
#endif
typedef int (* CREATE_OBJECT2) (XMLParser** inst);
typedef int (* DELETE_OBJECT2) (XMLParser* inst);
class XMLParserFactory
{
public:
XMLParserFactory();
virtual ~XMLParserFactory();
/**
* Used to initialize the global object. Following tasks are done
* 1. Get the parser library name from the configuration file.
* 2. Load that dynamic parser library.
* 3. Get the function pointers of the exported functions
* 4. Get any other information about the library.
*/
static int initialize();
/**
* Used to uninitialize the global object.
* 1. Unloads dynamic parser library.
*/
static int uninitialize();
/**
* Used to create a parser object
*/
static XMLParser* getParserObject();
/**
* Destroys the parser object
*/
static void destroyParserObject(XMLParser* pObject);
static int loadLib();
static int unloadLib();
private:
static const char* m_pcLibraryPath;
static DLHandler m_LibHandler;
static CREATE_OBJECT2 m_Create;
static DELETE_OBJECT2 m_Delete;
};
#endif
1.41 +1 -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.40
retrieving revision 1.41
diff -u -r1.40 -r1.41
--- Call.cpp 12 May 2004 07:36:46 -0000 1.40
+++ Call.cpp 18 May 2004 11:09:09 -0000 1.41
@@ -26,7 +26,7 @@
#include "../../transport/axis/AxisTransport.h"
#include "../../transport/axis/Channel.hpp"
#include "ClientAxisEngine.h"
-#include "../../transport/SOAPTransportFactory.h"
+#include "../SOAPTransportFactory.h"
#include <axis/SOAPTransport.h>
extern "C" int initialize_module (int bServer);
1.46 +41 -57 ws-axis/c/src/soap/SoapDeSerializer.cpp
Index: SoapDeSerializer.cpp
===================================================================
RCS file: /home/cvs/ws-axis/c/src/soap/SoapDeSerializer.cpp,v
retrieving revision 1.45
retrieving revision 1.46
diff -u -r1.45 -r1.46
--- SoapDeSerializer.cpp 18 May 2004 04:32:31 -0000 1.45
+++ SoapDeSerializer.cpp 18 May 2004 11:09:09 -0000 1.46
@@ -37,15 +37,9 @@
#include <axis/server/AxisTrace.h>
#include "apr_base64.h"
#include "HexCoder.h"
-
-
-#ifdef USE_EXPAT_PARSER
-#include "SoapParserExpat.h"
-#elif USE_XERCES_PARSER
-#include "SoapParserXerces.h"
-#else
-#include <axis/xml/SoapParser.h>
-#endif
+#include "../engine/XMLParserFactory.h"
+#include <axis/server/XMLParser.h>
+#include "../xml/QName.h"
extern AxisTrace* g_pAT;
@@ -55,21 +49,15 @@
SoapDeSerializer::SoapDeSerializer()
{
- #ifdef USE_EXPAT_PARSER
- m_pParser = new SoapParserExpat();
- #elif USE_XERCES_PARSER
- m_pParser = new SoapParserXerces();
- #else
- m_pParser = new SoapParser();
- #endif
+ m_pParser = XMLParserFactory::getParserObject();
m_pEnv = NULL;
m_pHeader = NULL;
m_pcFaultDetail = (char*) malloc(sizeof(char) * 100);
+ m_pInputStream = 0;
}
SoapDeSerializer::~SoapDeSerializer()
{
- m_pParser->init();
if (m_pEnv)
delete m_pEnv;
if(m_pHeader)
@@ -82,6 +70,7 @@
{
if (NULL == pInputStream)
return AXIS_FAIL;
+ m_pInputStream = pInputStream;
return m_pParser->setInputStream(pInputStream);
}
@@ -347,7 +336,6 @@
int SoapDeSerializer::init()
{
m_pNode = 0;
- m_nStatus = m_pParser->init();
if (m_pEnv)
{
delete m_pEnv;
@@ -571,7 +559,7 @@
(0 == strcmp(pElement->m_pchAttributes[i],
SoapKeywordMapping::map(m_nSoapVersion).pchWords[SKW_ARRAYTYPE])))
{
- ::QName qn;
+ QName qn;
qn.splitQNameString(pElement->m_pchAttributes[i+2], '[');
nSize = strtol(qn.localname, &m_pEndptr, 10);
qn.mergeQNameString('[');
@@ -606,6 +594,10 @@
#define CONV_STRTOBASE64BINARY(str) decodeFromBase64Binary(str)
#define CONV_STRTOHEXBINARY(str) decodeFromHexBinary(str)
+#define INIT_VALUE_DATETIME {0,0,0,0,0,0,0,0,0}
+#define INIT_VALUE_NUMBER 0
+#define INIT_VALUE_XSDBINARY {0,0}
+
#define DESERIALIZE_ENCODED_ARRAY_BLOCK(cpp_type, conv_func) \
Array.m_Array = malloc(sizeof(cpp_type)*Array.m_Size);\
if (!Array.m_Array)\
@@ -1061,8 +1053,8 @@
return m_nStatus;
}
-#define DESERIALIZE_GET_ATTRIBUTE_AS(cpp_type, conv_func) \
- cpp_type ret;\
+#define DESERIALIZE_GET_ATTRIBUTE_AS(cpp_type, conv_func, init_value) \
+ cpp_type ret = init_value;\
if(!m_pCurrNode) \
{\
/**\
@@ -1154,113 +1146,113 @@
const AxisChar*
pNamespace)
{
- DESERIALIZE_GET_ATTRIBUTE_AS(unsigned int,CONV_STRTOUL)
+ DESERIALIZE_GET_ATTRIBUTE_AS(unsigned int,CONV_STRTOUL,INIT_VALUE_NUMBER)
}
short SoapDeSerializer::getAttributeAsShort(const AxisChar* pName,
const AxisChar* pNamespace)
{
- DESERIALIZE_GET_ATTRIBUTE_AS(short,CONV_STRTOL)
+ DESERIALIZE_GET_ATTRIBUTE_AS(short,CONV_STRTOL,INIT_VALUE_NUMBER)
}
unsigned short SoapDeSerializer::getAttributeAsUnsignedShort(const AxisChar*
pName,
const AxisChar*
pNamespace)
{
- DESERIALIZE_GET_ATTRIBUTE_AS(unsigned short,CONV_STRTOUL)
+ DESERIALIZE_GET_ATTRIBUTE_AS(unsigned short,CONV_STRTOUL,INIT_VALUE_NUMBER)
}
char SoapDeSerializer::getAttributeAsByte(const AxisChar* pName, const
AxisChar* pNamespace)
{
- DESERIALIZE_GET_ATTRIBUTE_AS(char,CONV_STRTOL)
+ DESERIALIZE_GET_ATTRIBUTE_AS(char,CONV_STRTOL,INIT_VALUE_NUMBER)
}
unsigned char SoapDeSerializer::getAttributeAsUnsignedByte(const AxisChar*
pName, const
AxisChar* pNamespace)
{
- DESERIALIZE_GET_ATTRIBUTE_AS(unsigned char,CONV_STRTOUL)
+ DESERIALIZE_GET_ATTRIBUTE_AS(unsigned char,CONV_STRTOUL,INIT_VALUE_NUMBER)
}
long SoapDeSerializer::getAttributeAsLong(const AxisChar* pName, const
AxisChar* pNamespace)
{
- DESERIALIZE_GET_ATTRIBUTE_AS(long,CONV_STRTOL)
+ DESERIALIZE_GET_ATTRIBUTE_AS(long,CONV_STRTOL,INIT_VALUE_NUMBER)
}
long SoapDeSerializer::getAttributeAsInteger(const AxisChar* pName, const
AxisChar* pNamespace)
{
- DESERIALIZE_GET_ATTRIBUTE_AS(long,CONV_STRTOL)
+ DESERIALIZE_GET_ATTRIBUTE_AS(long,CONV_STRTOL,INIT_VALUE_NUMBER)
}
unsigned long SoapDeSerializer::getAttributeAsUnsignedLong(const AxisChar*
pName, const
AxisChar* pNamespace)
{
- DESERIALIZE_GET_ATTRIBUTE_AS(unsigned long,CONV_STRTOUL)
+ DESERIALIZE_GET_ATTRIBUTE_AS(unsigned long,CONV_STRTOUL,INIT_VALUE_NUMBER)
}
float SoapDeSerializer::getAttributeAsFloat(const AxisChar* pName, const
AxisChar* pNamespace)
{
- DESERIALIZE_GET_ATTRIBUTE_AS(float,CONV_STRTOD)
+ DESERIALIZE_GET_ATTRIBUTE_AS(float,CONV_STRTOD,INIT_VALUE_NUMBER)
}
double SoapDeSerializer::getAttributeAsDouble(const AxisChar* pName, const
AxisChar* pNamespace)
{
- DESERIALIZE_GET_ATTRIBUTE_AS(double,CONV_STRTOD)
+ DESERIALIZE_GET_ATTRIBUTE_AS(double,CONV_STRTOD,INIT_VALUE_NUMBER)
}
double SoapDeSerializer::getAttributeAsDecimal(const AxisChar* pName, const
AxisChar* pNamespace)
{
- DESERIALIZE_GET_ATTRIBUTE_AS(double,CONV_STRTOD)
+ DESERIALIZE_GET_ATTRIBUTE_AS(double,CONV_STRTOD,INIT_VALUE_NUMBER)
}
AxisChar* SoapDeSerializer::getAttributeAsString(const AxisChar* pName, const
AxisChar* pNamespace)
{
- DESERIALIZE_GET_ATTRIBUTE_AS(AxisChar*,CONV_STRDUP)
+ DESERIALIZE_GET_ATTRIBUTE_AS(AxisChar*,CONV_STRDUP,INIT_VALUE_NUMBER)
}
AxisChar* SoapDeSerializer::getAttributeAsAnyURI(const AxisChar* pName, const
AxisChar* pNamespace)
{
- DESERIALIZE_GET_ATTRIBUTE_AS(AxisChar*,CONV_STRDUP)
+ DESERIALIZE_GET_ATTRIBUTE_AS(AxisChar*,CONV_STRDUP,INIT_VALUE_NUMBER)
}
AxisChar* SoapDeSerializer::getAttributeAsQName(const AxisChar* pName, const
AxisChar* pNamespace)
{
- DESERIALIZE_GET_ATTRIBUTE_AS(AxisChar*,CONV_STRDUP)
+ DESERIALIZE_GET_ATTRIBUTE_AS(AxisChar*,CONV_STRDUP,INIT_VALUE_NUMBER)
}
xsd__hexBinary SoapDeSerializer::getAttributeAsHexBinary(const AxisChar* pName,
const AxisChar*
pNamespace)
{
- DESERIALIZE_GET_ATTRIBUTE_AS(xsd__hexBinary,CONV_STRTOHEXBINARY)
+ DESERIALIZE_GET_ATTRIBUTE_AS(xsd__hexBinary,CONV_STRTOHEXBINARY, INIT_VALUE_XSDBINARY)
}
xsd__base64Binary SoapDeSerializer::getAttributeAsBase64Binary(const AxisChar*
pName, const
AxisChar*
pNamespace)
{
- DESERIALIZE_GET_ATTRIBUTE_AS(xsd__base64Binary,CONV_STRTOBASE64BINARY)
+ DESERIALIZE_GET_ATTRIBUTE_AS(xsd__base64Binary,CONV_STRTOBASE64BINARY, INIT_VALUE_XSDBINARY)
}
struct tm SoapDeSerializer::getAttributeAsDateTime(const AxisChar* pName,
const AxisChar* pNamespace)
{
XSDTYPE nType = XSD_DATETIME;
- DESERIALIZE_GET_ATTRIBUTE_AS(struct tm, CONV_STRTODATETIME)
+ DESERIALIZE_GET_ATTRIBUTE_AS(struct tm, CONV_STRTODATETIME, INIT_VALUE_DATETIME)
}
struct tm SoapDeSerializer::getAttributeAsDate(const AxisChar* pName, const
AxisChar* pNamespace)
{
XSDTYPE nType = XSD_DATE;
- DESERIALIZE_GET_ATTRIBUTE_AS(struct tm, CONV_STRTODATETIME)
+ DESERIALIZE_GET_ATTRIBUTE_AS(struct tm, CONV_STRTODATETIME, INIT_VALUE_DATETIME)
}
struct tm SoapDeSerializer::getAttributeAsTime(const AxisChar* pName, const
AxisChar* pNamespace)
{
XSDTYPE nType = XSD_DATE;
- DESERIALIZE_GET_ATTRIBUTE_AS(struct tm, CONV_STRTODATETIME)
+ DESERIALIZE_GET_ATTRIBUTE_AS(struct tm, CONV_STRTODATETIME, INIT_VALUE_DATETIME)
}
long SoapDeSerializer::getAttributeAsDuration(const AxisChar* pName, const
AxisChar* pNamespace)
{
XSDTYPE nType = XSD_DURATION;
- DESERIALIZE_GET_ATTRIBUTE_AS(long, CONV_STRTODURATION)
+ DESERIALIZE_GET_ATTRIBUTE_AS(long, CONV_STRTODURATION,INIT_VALUE_NUMBER)
}
/*
@@ -2489,7 +2481,7 @@
struct tm SoapDeSerializer::getElementAsDateTime(const AxisChar* pName,
const AxisChar* pNamespace)
{
- struct tm ret;
+ struct tm ret = INIT_VALUE_DATETIME;
if (AXIS_SUCCESS != m_nStatus) return ret;
if (RPC_ENCODED == m_nStyle)
{
@@ -2561,7 +2553,7 @@
struct tm SoapDeSerializer::getElementAsDate(const AxisChar* pName,
const AxisChar* pNamespace)
{
- struct tm ret;
+ struct tm ret = INIT_VALUE_DATETIME;
if (AXIS_SUCCESS != m_nStatus) return ret;
if (RPC_ENCODED == m_nStyle)
{
@@ -2634,7 +2626,7 @@
struct tm SoapDeSerializer::getElementAsTime(const AxisChar* pName,
const AxisChar* pNamespace)
{
- struct tm ret;
+ struct tm ret = INIT_VALUE_DATETIME;
if (AXIS_SUCCESS != m_nStatus) return ret;
if (RPC_ENCODED == m_nStyle)
{
@@ -2914,14 +2906,14 @@
xsd__hexBinary SoapDeSerializer::getBodyAsHexBinary()
{
/* TODO */
- xsd__hexBinary hb;
+ xsd__hexBinary hb = {0,0};
return hb;
}
xsd__base64Binary SoapDeSerializer::getBodyAsBase64Binary()
{
/* TODO */
- xsd__base64Binary bb;
+ xsd__base64Binary bb = {0,0};
return bb;
}
@@ -2941,15 +2933,7 @@
{
int nChars = 0;
char pBuffer[100];
- if (TRANSPORT_IN_PROGRESS == m_pParser->getTransportStatus())
- {
- do
- {
- m_pParser->setTransportStatus(m_pParser->getInputStream()->getBytes
- (pBuffer, &nChars));
- }
- while (TRANSPORT_IN_PROGRESS == m_pParser->getTransportStatus());
- }
- return (TRANSPORT_FINISHED == m_pParser->
- getTransportStatus())? AXIS_SUCCESS : AXIS_FAIL;
+ if (!m_pInputStream) return AXIS_FAIL;
+ while (TRANSPORT_IN_PROGRESS == m_pInputStream->getBytes(pBuffer, &nChars));
+ return AXIS_SUCCESS;
}
1.20 +0 -1 ws-axis/c/src/soap/SoapFault.cpp
Index: SoapFault.cpp
===================================================================
RCS file: /home/cvs/ws-axis/c/src/soap/SoapFault.cpp,v
retrieving revision 1.19
retrieving revision 1.20
diff -u -r1.19 -r1.20
--- SoapFault.cpp 18 May 2004 04:32:31 -0000 1.19
+++ SoapFault.cpp 18 May 2004 11:09:09 -0000 1.20
@@ -125,7 +125,6 @@
*/
SoapFault* SoapFault::getSoapFault(int iFaultCode)
{
- const char* temp;
SoapFault* pSoapFault= NULL;
/* fill the soap fault object */
1.35 +3 -13 ws-axis/c/src/wsdd/WSDDDeployment.cpp
Index: WSDDDeployment.cpp
===================================================================
RCS file: /home/cvs/ws-axis/c/src/wsdd/WSDDDeployment.cpp,v
retrieving revision 1.34
retrieving revision 1.35
diff -u -r1.34 -r1.35
--- WSDDDeployment.cpp 10 May 2004 12:02:59 -0000 1.34
+++ WSDDDeployment.cpp 18 May 2004 11:09:10 -0000 1.35
@@ -20,17 +20,7 @@
*/
#include "WSDDDeployment.h"
-
-#ifdef USE_EXPAT_PARSER
-#include "WSDDDocumentExpat.h"
-#define WSDDDOCUMENTPARSER WSDDDocumentExpat
-#elif USE_XERCES_PARSER
-#include "WSDDDocumentXerces.h"
-#define WSDDDOCUMENTPARSER WSDDDocumentXerces
-#else
-#include "WSDDDocumentTXPP.h"
-#define WSDDDOCUMENTPARSER WSDDDocumentTXPP
-#endif
+#include "WSDDDocument.h"
#include <axis/server/GDefine.h>
#include <axis/server/AxisConfig.h>
@@ -99,7 +89,7 @@
int WSDDDeployment::updateWSDD(const AxisChar* sWSDD)
{
- WSDDDocument* doc = new WSDDDOCUMENTPARSER(m_pLibNameIdMap);
+ WSDDDocument* doc = new WSDDDocument(m_pLibNameIdMap);
if (AXIS_SUCCESS != doc->updateDeployment(sWSDD, this))
{
delete doc;
@@ -113,7 +103,7 @@
int WSDDDeployment::loadWSDD(const AxisChar* sWSDD)
{
m_sWSDDPath = string(sWSDD);
- WSDDDocument* doc = new WSDDDOCUMENTPARSER(m_pLibNameIdMap);
+ WSDDDocument* doc = new WSDDDocument(m_pLibNameIdMap);
if (AXIS_SUCCESS != doc->getDeployment(sWSDD, this))
{
printf("wsdd loading failed\n");
1.18 +1 -2 ws-axis/c/src/wsdd/WSDDDeployment.h
Index: WSDDDeployment.h
===================================================================
RCS file: /home/cvs/ws-axis/c/src/wsdd/WSDDDeployment.h,v
retrieving revision 1.17
retrieving revision 1.18
diff -u -r1.17 -r1.18
--- WSDDDeployment.h 26 Apr 2004 04:04:39 -0000 1.17
+++ WSDDDeployment.h 18 May 2004 11:09:10 -0000 1.18
@@ -37,8 +37,7 @@
*/
class WSDDDeployment
{
- friend class WSDDDocumentExpat;
- friend class WSDDDocumentXerces;
+ friend class WSDDDocument;
public:
int loadWSDD(const AxisChar* sWSDD);
int updateWSDD(const AxisChar* sWSDD);
1.17 +59 -12 ws-axis/c/src/wsdd/WSDDDocument.h
Index: WSDDDocument.h
===================================================================
RCS file: /home/cvs/ws-axis/c/src/wsdd/WSDDDocument.h,v
retrieving revision 1.16
retrieving revision 1.17
diff -u -r1.16 -r1.17
--- WSDDDocument.h 26 Apr 2004 04:04:39 -0000 1.16
+++ WSDDDocument.h 18 May 2004 11:09:10 -0000 1.17
@@ -14,28 +14,81 @@
* limitations under the License.
*/
+#ifdef WIN32
+#pragma warning(disable : 4786)
+#endif
+
#if !defined(__WSDDDOCUMENT_H_OF_AXIS_INCLUDED__)
#define __WSDDDOCUMENT_H_OF_AXIS_INCLUDED__
+#include "WSDDDocument.h"
+#include <axis/SOAPTransport.h>
+#include <axis/server/AnyElement.h>
#include "WSDDDeployment.h"
#include <axis/server/WSDDService.h>
#include "../xml/QName.h"
+#include <string>
+#include <map>
+
+using namespace std;
+
enum WSDDLevels {WSDD_UNKNOWN=1, WSDD_DEPLOYMENT, WSDD_UNDEPLOYMENT,
WSDD_GLOBCONF, WSDD_SERVICE, WSDD_HANDLER, WSDD_CHAIN,
WSDD_TRANSPORT, WSDD_REQFLOW, WSDD_RESFLOW, WSDD_PARAM };
-/* wsdd file related defines */
#define METHODNAME_SEPARATOR ' '
#define ROLENAME_SEPARATOR ','
#define TRANSCODE_BUFFER_SIZE 1024
+
/*
- * @class WSDDDocument
- * @brief Interface for WSDD processor
- * @author Suasntha Kumara (skumara@virtusa.com, susantha@opensource.lk)
+ * @class WSDDDocument
+ * @brief
+ * @author Sanjaya Sinharage(sanjaya@opensource.lk)
+ * @author Suasntha Kumara (skumara@virtusa.com, susantha@opensource.lk)
*/
class WSDDDocument
{
+
+public:
+ WSDDDocument(map<AxisString, int>* pLibNameIdMap);
+ ~WSDDDocument();
+ int getDeployment(const AxisChar* pcWSDDFileName, WSDDDeployment* pDeployment);
+ int updateDeployment(const AxisChar* pcWSDDMemBuffer, WSDDDeployment* pDeployment);
+ void startElement(const AnyElement* pEvent);
+ void endElement(const AnyElement* pEvent);
+
+ /* inner class */
+ class WSDDFileInputStream : public AxisIOStream
+ {
+ private:
+ const char* m_pcWSDDFileName;
+ FILE *m_pFile;
+ public:
+ WSDDFileInputStream(const char* pcWSDDFileName)
+ {m_pcWSDDFileName = pcWSDDFileName; m_pFile = 0;};
+ virtual ~WSDDFileInputStream(){};
+ AXIS_TRANSPORT_STATUS sendBytes(const char* pcSendBuffer, const void* pBufferid);
+ AXIS_TRANSPORT_STATUS getBytes(char* pcBuffer, int* piRetSize);
+ };
+
+ class WSDDMemBufInputStream : public AxisIOStream
+ {
+ private:
+ const char* m_pcWSDDMemBuffer;
+ public:
+ WSDDMemBufInputStream(const char* pcWSDDMemBuffer)
+ {m_pcWSDDMemBuffer = pcWSDDMemBuffer;};
+ virtual ~WSDDMemBufInputStream(){};
+ AXIS_TRANSPORT_STATUS sendBytes(const char* pcSendBuffer, const void* pBufferid);
+ AXIS_TRANSPORT_STATUS getBytes(char* pcBuffer, int* piRetSize);
+ };
+private:
+ void processAttributes(WSDDLevels eElementType, const AnyElement* pEvent);
+ void getParameters(WSDDLevels eElementType, const AnyElement* pEvent);
+ void addAllowedRolesToService(const AxisXMLCh* pcValue);
+ void addAllowedMethodsToService(const AxisXMLCh* pcValue);
+ int parseDocument(const AxisChar* pcWSDDFileName);
protected:
bool m_bFatalError;
bool m_bError;
@@ -54,13 +107,7 @@
/* Current transport type of transport handlers */
AxisChar m_Buffer[TRANSCODE_BUFFER_SIZE];
/* used to transcode 'XMLCh' to AxisChar */
-public:
- virtual ~WSDDDocument(){};
- virtual int getDeployment(const AxisChar* sWSDD,
- WSDDDeployment* pDeployment)=0;
- virtual int updateDeployment(const AxisChar* sWSDD,
- WSDDDeployment* pDeployment)=0;
};
-#endif
-
+#endif
+
\ No newline at end of file
1.31 +609 -515 ws-axis/c/src/wsdd/WSDDDocument.cpp
1.1 ws-axis/c/src/xml/expat/SoapParserExpat.cpp
Index: SoapParserExpat.cpp
===================================================================
/*
* Copyright 2003-2004 The Apache Software Foundation.
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
* You may obtain a copy of the License at
*
* http://www.apache.org/licenses/LICENSE-2.0
*
* Unless required by applicable law or agreed to in writing, software
* distributed under the License is distributed on an "AS IS" BASIS,
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
* See the License for the specific language governing permissions and
* limitations under the License.
*/
/*
* @author Susantha Kumara (skumara@virtusa.com)
*
*/
#ifdef WIN32
#pragma warning (disable : 4786)
#endif
#include "../Event.h"
#include "../SimpleAttribute.h"
#include "../StartElement.h"
#include "SoapParserExpat.h"
#define EXPAT_BUFFER_SIZE 1024
SoapParserExpat::SoapParserExpat()
{
m_pLastEvent = NULL;
m_Parser = XML_ParserCreateNS(NULL, NAMESPACESEPARATOR);
m_pCurrentBuffer = 0;
}
SoapParserExpat::~SoapParserExpat()
{
if (m_pLastEvent) delete m_pLastEvent;
while (!m_Events.empty())
{
m_pLastEvent = m_Events.front();
m_Events.pop();
delete m_pLastEvent;
}
XML_ParserFree(m_Parser);
}
void SoapParserExpat::startElement(const XML_Ch *qname,const XML_Ch **attrs)
{
QName qn;
qn.splitQNameString(qname, NAMESPACESEPARATOR);
StartElement *pSE = new StartElement();
pSE->m_NameOrValue = qn.localname;
pSE->m_Namespace = qn.uri ? qn.uri : "";
qn.mergeQNameString(NAMESPACESEPARATOR);
SimpleAttribute *pAt = NULL;
for (int i = 0; attrs[i]; i += 2)
{
qn.splitQNameString(attrs[i], NAMESPACESEPARATOR);
pAt = new SimpleAttribute();
pAt->m_Name = qn.localname;
pAt->m_Namespace = qn.uri ? qn.uri : "";
qn.mergeQNameString(NAMESPACESEPARATOR);
pAt->m_Value = attrs[i+1];
pSE->m_Attributes.push_back(pAt);
}
m_Events.push(pSE);
}
void SoapParserExpat::endElement(const XML_Ch *qname)
{
QName qn;
qn.splitQNameString(qname, NAMESPACESEPARATOR);
EndElement *pEE = new EndElement();
pEE->m_NameOrValue = qn.localname;
pEE->m_Namespace = qn.uri ? qn.uri : "";
m_Events.push(pEE);
qn.mergeQNameString(NAMESPACESEPARATOR);
}
void SoapParserExpat::characters(const XML_Ch *chars, int length)
{
XML_Ch* pTemp = const_cast<XML_Ch*>(chars);
XML_Ch replacedchar = pTemp[length];
/* copy and keep existing char at length position */
pTemp[length] = '\0';
/* putting nul charactor so that chars can be used safely */
Event* pLastEvent;
if (!m_Events.empty())
{
pLastEvent = m_Events.back();
if (CHARACTER_ELEMENT == pLastEvent->getType())
/* continuing same character node */
{
pLastEvent->m_NameOrValue += pTemp;
pTemp[length] = replacedchar;
/* put back the character that was there before putting nul
* charactor
*/
return;
}
}
pLastEvent = new CharElement();
pLastEvent->m_NameOrValue = pTemp;
m_Events.push(pLastEvent);
pTemp[length] = replacedchar;
/* put back the character that was there before putting nul charactor */
}
void SoapParserExpat::startPrefixMapping(const XML_Ch *prefix,
const XML_Ch *uri)
{
if (prefix && uri)
{
StartPrefix* pEvent = new StartPrefix();
pEvent->m_NameOrValue = prefix;
pEvent->m_Namespace = uri;
m_Events.push(pEvent);
}
}
void SoapParserExpat::endPrefixMapping(const XML_Ch *prefix)
{
if (!prefix) return;
EndPrefix* pEvent = new EndPrefix();
pEvent->m_NameOrValue = prefix;
m_Events.push(pEvent);
}
const XML_Ch* SoapParserExpat::getNS4Prefix(const XML_Ch* prefix)
{
if (m_NsStack.find(prefix) != m_NsStack.end())
{
return m_NsStack[prefix].c_str();
}
return NULL;
}
/**
* This method returning NULL means that there is something wrong with the
* stream and hence parsing should be finished or aborted.
* @param isCharData - say that Deserializer is expecting a character data event.
*/
const AnyElement* SoapParserExpat::next(bool isCharData)
{
int nStatus = TRANSPORT_IN_PROGRESS;
if (m_pLastEvent)
{
delete m_pLastEvent;
m_pLastEvent = NULL;
}
do
{
if (m_Events.empty())
{
nStatus = parseNext();
if (TRANSPORT_FAILED == nStatus) return NULL;
if ((TRANSPORT_FINISHED == nStatus) && m_Events.empty())
return NULL;
if (AXIS_FAIL == m_nStatus) return NULL;
}
if (!m_Events.empty())
{
m_pLastEvent = m_Events.front();
XML_NODE_TYPE type = m_pLastEvent->getType();
m_Events.pop();
if ((CHARACTER_ELEMENT == type) && m_Events.empty())
/* current character element may not be parsed completly */
{
m_Events.push(m_pLastEvent);
nStatus = parseNext();
if (TRANSPORT_FAILED == nStatus) return NULL;
if ((TRANSPORT_FINISHED == nStatus) && m_Events.empty())
return NULL;
}
else
{
int i = 0;
switch(type)
{
case START_ELEMENT:
{
for (list<SimpleAttribute*>::iterator it =
((StartElement*)m_pLastEvent)->m_Attributes.begin()
; it != ((StartElement*)m_pLastEvent)->
m_Attributes.end(); it++)
{
m_Element.m_pchAttributes[i+0] =
(*it)->m_Name.c_str();
m_Element.m_pchAttributes[i+1] =
(*it)->m_Namespace.c_str();
m_Element.m_pchAttributes[i+2] =
(*it)->m_Value.c_str();
i+=3;
}
m_Element.m_pchAttributes[i+0] = NULL;
m_Element.m_pchAttributes[i+1] = NULL;
m_Element.m_pchAttributes[i+2] = NULL;
}
/* no break */
case END_ELEMENT:
m_Element.m_pchNamespace = ((StartElement*)m_pLastEvent)->
m_Namespace.c_str();
/* no break */
case CHARACTER_ELEMENT:
m_Element.m_pchNameOrValue = m_pLastEvent->
m_NameOrValue.c_str();
m_Element.m_type = type;
if (!isCharData && (CHARACTER_ELEMENT == type))
{ /* ignorable white space */
delete m_pLastEvent;
m_pLastEvent = NULL;
break;
}
return &m_Element;
case START_PREFIX:
m_NsStack[m_pLastEvent->m_NameOrValue] =
((StartPrefix*)m_pLastEvent)->m_Namespace;
/* I think the same prifix cannot repeat ??? */
delete m_pLastEvent;
m_pLastEvent = NULL;
break;
case END_PREFIX:
m_NsStack.erase(m_pLastEvent->m_NameOrValue);
/* I think the same prifix cannot repeat ??? */
delete m_pLastEvent;
m_pLastEvent = NULL;
break;
}
}
}
} while (TRANSPORT_FAILED != nStatus);
return NULL;
}
int SoapParserExpat::parseNext()
{
int nChars = EXPAT_BUFFER_SIZE;
AXIS_TRANSPORT_STATUS iTransportStatus;
m_pCurrentBuffer = (char*) XML_GetBuffer(m_Parser, EXPAT_BUFFER_SIZE);
if (m_pCurrentBuffer)
{
iTransportStatus = m_pInputStream->getBytes(m_pCurrentBuffer, &nChars);
if (nChars > 0)
{
if (XML_STATUS_ERROR == XML_ParseBuffer(m_Parser, nChars, false))
m_nStatus = AXIS_FAIL;
}
if (TRANSPORT_FAILED == iTransportStatus) XML_ParseBuffer(m_Parser, 0, true);
}
/* end of parsing */
return iTransportStatus;
}
int SoapParserExpat::getStatus()
{
return m_nStatus;
}
/**
* Sets the new input stream and resets SoapParserExpat object state to
* initial state
*/
int SoapParserExpat::setInputStream(AxisIOStream* pInputStream)
{
m_pInputStream = pInputStream;
XML_ParserReset(m_Parser, NULL);
XML_SetUserData(m_Parser, this);
XML_SetNamespaceDeclHandler(m_Parser, s_startPrefixMapping,
s_endPrefixMapping);
XML_SetElementHandler(m_Parser, s_startElement, s_endElement);
XML_SetCharacterDataHandler(m_Parser, s_characters);
m_nStatus = AXIS_SUCCESS; /*TODO:Check if an error occured in expat */
m_NsStack.clear(); /* this will also delete any strings there */
if (m_pLastEvent) delete m_pLastEvent;
while (!m_Events.empty())
{
m_pLastEvent = m_Events.front();
m_Events.pop();
delete m_pLastEvent;
}
m_pLastEvent = NULL;
return m_nStatus;
}
#ifdef WIN32
#define STORAGE_CLASS_INFO __declspec(dllexport)
#else
#define STORAGE_CLASS_INFO
#endif
extern "C" {
STORAGE_CLASS_INFO
int CreateInstance(XMLParser **inst)
{
*inst = new SoapParserExpat();
if (*inst)
{
return AXIS_SUCCESS;
}
return AXIS_FAIL;
}
STORAGE_CLASS_INFO
int DestroyInstance(XMLParser *inst)
{
if (inst)
{
delete inst;
return AXIS_SUCCESS;
}
return AXIS_FAIL;
}
}
1.1 ws-axis/c/src/xml/expat/SoapParserExpat.h
Index: SoapParserExpat.h
===================================================================
/*
* Copyright 2003-2004 The Apache Software Foundation.
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
* You may obtain a copy of the License at
*
* http://www.apache.org/licenses/LICENSE-2.0
*
* Unless required by applicable law or agreed to in writing, software
* distributed under the License is distributed on an "AS IS" BASIS,
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
* See the License for the specific language governing permissions and
* limitations under the License.
*/
/*
* @author Susantha Kumara (skumara@virtusa.com)
*
*/
#ifdef WIN32
#pragma warning (disable : 4786)
#endif
#if !defined(__SoapParserExpat_H_OF_AXIS_INCLUDED__)
#define __SoapParserExpat_H_OF_AXIS_INCLUDED__
#include <expat/expat.h>
#include <axis/server/Packet.h>
#include "../QName.h"
#include <axis/server/AnyElement.h>
#include "../Event.h"
#include <axis/server/XMLParser.h>
#include <queue>
#include <map>
#include <string>
using namespace std;
class SoapParserExpat: public XMLParser
{
public:
SoapParserExpat();
~SoapParserExpat();
int setInputStream(AxisIOStream* pInputStream);
const XML_Ch* getNS4Prefix(const XML_Ch* prefix);
int getStatus();
const AnyElement* next(bool isCharData=false);
private:
XML_Parser m_Parser;
char* m_pCurrentBuffer;
Event* m_pLastEvent;
AnyElement m_Element;
queue<Event*> m_Events;
map<AxisXMLString, AxisXMLString> m_NsStack;
int m_nStatus;
void startElement(const XML_Ch *qname,const XML_Ch **attrs);
void endElement(const XML_Ch *qname);
void characters(const XML_Ch *chars,int length);
void startPrefixMapping(const XML_Ch *prefix, const XML_Ch *uri);
void endPrefixMapping(const XML_Ch *prefix);
int parseNext();
inline static void XMLCALL s_startElement(void* p, const XML_Ch *qname,
const XML_Ch **attrs)
{((SoapParserExpat*)p)->startElement(qname,attrs);};
inline static void XMLCALL s_endElement(void* p, const XML_Ch *qname)
{((SoapParserExpat*)p)->endElement(qname);};
inline static void XMLCALL s_characters(void* p, const XML_Ch *chars,
int length)
{((SoapParserExpat*)p)->characters(chars,length);};
inline static void XMLCALL s_startPrefixMapping(void* p,
const XML_Ch *prefix, const XML_Ch *uri)
{((SoapParserExpat*)p)->startPrefixMapping(prefix, uri);};
inline static void XMLCALL s_endPrefixMapping(void* p,
const XML_Ch *prefix)
{((SoapParserExpat*)p)->endPrefixMapping(prefix);};
};
#endif
1.1 ws-axis/c/src/xml/xerces/SoapBinInputStream.cpp
Index: SoapBinInputStream.cpp
===================================================================
/*
* Copyright 2003-2004 The Apache Software Foundation.
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
* You may obtain a copy of the License at
*
* http://www.apache.org/licenses/LICENSE-2.0
*
* Unless required by applicable law or agreed to in writing, software
* distributed under the License is distributed on an "AS IS" BASIS,
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
* See the License for the specific language governing permissions and
* limitations under the License.
*/
/* SoapBinInputStream.cpp: implementation of the SoapBinInputStream class. */
#include "SoapBinInputStream.h"
SoapBinInputStream::SoapBinInputStream(AxisIOStream* pInputStream)
{
m_pInputStream = pInputStream;
m_nByteCount = 0;
}
SoapBinInputStream::~SoapBinInputStream()
{
}
/*
* I dont really understand the use of this function
*/
unsigned int SoapBinInputStream::curPos() const
{
return m_nByteCount;
}
unsigned int SoapBinInputStream::readBytes(XMLByte* const pcToFill,
const unsigned int iMaxToRead)
{
int iRead = iMaxToRead;
m_pInputStream->getBytes((char*)pcToFill, &iRead);
return iRead;
}
1.1 ws-axis/c/src/xml/xerces/SoapBinInputStream.h
Index: SoapBinInputStream.h
===================================================================
/*
* Copyright 2003-2004 The Apache Software Foundation.
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
* You may obtain a copy of the License at
*
* http://www.apache.org/licenses/LICENSE-2.0
*
* Unless required by applicable law or agreed to in writing, software
* distributed under the License is distributed on an "AS IS" BASIS,
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
* See the License for the specific language governing permissions and
* limitations under the License.
*/
/* SoapBinInputStream.h: interface for the SoapBinInputStream class. */
#if !defined(AXIS_SOAPBININPUTSTREAM_H__OF_AXIS_INCLUDED_)
#define AXIS_SOAPBININPUTSTREAM_H__OF_AXIS_INCLUDED_
#include <xercesc/util/BinInputStream.hpp>
#include <axis/server/Packet.h>
#include <axis/SOAPTransport.h>
XERCES_CPP_NAMESPACE_USE
class SoapBinInputStream : public BinInputStream
{
public:
SoapBinInputStream(AxisIOStream* pInputStream);
virtual ~SoapBinInputStream();
unsigned int curPos() const;
unsigned int readBytes(XMLByte* const pcToFill, const unsigned int iMaxToRead);
private:
unsigned int m_nByteCount;
AxisIOStream* m_pInputStream;
};
#endif
1.1 ws-axis/c/src/xml/xerces/SoapInputSource.cpp
Index: SoapInputSource.cpp
===================================================================
/*
* Copyright 2003-2004 The Apache Software Foundation.
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
* You may obtain a copy of the License at
*
* http://www.apache.org/licenses/LICENSE-2.0
*
* Unless required by applicable law or agreed to in writing, software
* distributed under the License is distributed on an "AS IS" BASIS,
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
* See the License for the specific language governing permissions and
* limitations under the License.
*/
/* SoapInputSource.cpp: implementation of the SoapInputSource class. */
#include "SoapInputSource.h"
SoapInputSource::SoapInputSource(AxisIOStream* pInputStream)
{
m_pInputStream = new SoapBinInputStream(pInputStream);
}
SoapInputSource::~SoapInputSource()
{
}
BinInputStream* SoapInputSource::makeStream() const
{
return m_pInputStream;
}
1.1 ws-axis/c/src/xml/xerces/SoapInputSource.h
Index: SoapInputSource.h
===================================================================
/*
* Copyright 2003-2004 The Apache Software Foundation.
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
* You may obtain a copy of the License at
*
* http://www.apache.org/licenses/LICENSE-2.0
*
* Unless required by applicable law or agreed to in writing, software
* distributed under the License is distributed on an "AS IS" BASIS,
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
* See the License for the specific language governing permissions and
* limitations under the License.
*/
/*
* @author sanjaya singharage (sanjayas@opensource.lk)
*/
#if !defined(AXIS_SOAPINPUTSOURCE_H__OF_AXIS_INCLUDED_)
#define AXIS_SOAPINPUTSOURCE_H__OF_AXIS_INCLUDED_
#include <xercesc/sax/InputSource.hpp>
#include "SoapBinInputStream.h"
XERCES_CPP_NAMESPACE_USE
class SoapInputSource : public InputSource
{
private:
SoapBinInputStream* m_pInputStream;
public:
SoapInputSource(AxisIOStream* pInputStream);
virtual ~SoapInputSource();
BinInputStream* makeStream() const;
};
#endif
1.1 ws-axis/c/src/xml/xerces/SoapParserXerces.cpp
Index: SoapParserXerces.cpp
===================================================================
/*
* Copyright 2003-2004 The Apache Software Foundation.
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
* You may obtain a copy of the License at
*
* http://www.apache.org/licenses/LICENSE-2.0
*
* Unless required by applicable law or agreed to in writing, software
* distributed under the License is distributed on an "AS IS" BASIS,
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
* See the License for the specific language governing permissions and
* limitations under the License.
*/
/*
* @author sanjaya singharage (sanjayas@opensource.lk)
*/
#ifdef WIN32
#pragma warning (disable : 4786)
#endif
#include "SoapParserXerces.h"
#include <xercesc/sax2/XMLReaderFactory.hpp>
#include <xercesc/util/PlatformUtils.hpp>
XERCES_CPP_NAMESPACE_USE
SoapParserXerces::SoapParserXerces()
{
m_bFirstParsed = false;
m_pParser = XMLReaderFactory::createXMLReader();
m_pInputSource = NULL;
}
SoapParserXerces::~SoapParserXerces()
{
if(m_pInputSource)
delete m_pInputSource;
delete m_pParser;
}
int SoapParserXerces::setInputStream(AxisIOStream* pInputStream)
{
m_pInputStream = pInputStream;
//check if memeory is already allocated for is
if(m_pInputSource)
delete m_pInputSource;
m_pInputSource = new SoapInputSource(pInputStream);
/* SoapInputSource is(m_pInputStream->transport.pGetFunct,
m_pInputStream->str.ip_stream); */
m_pParser->setContentHandler(&m_Xhandler);
if (m_bFirstParsed)
{
m_pParser->parseReset(m_ScanToken);
m_bFirstParsed = false;
}
/* return m_pHandler->Success(); */
return AXIS_SUCCESS;
}
const XML_Ch* SoapParserXerces::getNS4Prefix(const XML_Ch* prefix)
{
return m_Xhandler.ns4Prefix(prefix);
}
int SoapParserXerces::getStatus()
{
return m_Xhandler.getStatus();
}
const AnyElement* SoapParserXerces::next(bool isCharData)
{
bool bCanParseMore = false;
if(!m_bFirstParsed)
{
m_pParser->parseFirst(*m_pInputSource, m_ScanToken);
m_bFirstParsed = true;
}
m_Xhandler.freeElement();
while (true)
{
bCanParseMore = m_pParser->parseNext(m_ScanToken);
AnyElement* elem = m_Xhandler.getAnyElement();
if (elem)
{
if (!isCharData && (CHARACTER_ELEMENT == elem->m_type))
{ /* ignorable white space */
m_Xhandler.freeElement();
continue;
}
return elem;
}
else if (AXIS_FAIL == m_Xhandler.getStatus()) return NULL;
else if (!bCanParseMore) return NULL;
}
}
#ifdef WIN32
#define STORAGE_CLASS_INFO __declspec(dllexport)
#else
#define STORAGE_CLASS_INFO
#endif
extern "C" {
STORAGE_CLASS_INFO
int CreateInstance(XMLParser **inst)
{
/* TODO : Following initialization should be done within a function
called by the library loader at loading time */
XMLPlatformUtils::Initialize();
*inst = new SoapParserXerces();
if (*inst)
{
return AXIS_SUCCESS;
}
return AXIS_FAIL;
}
STORAGE_CLASS_INFO
int DestroyInstance(XMLParser *inst)
{
if (inst)
{
delete inst;
/* TODO : Following uninitialization should be done within a function
called by the library loader at unloading time */
XMLPlatformUtils::Terminate ();
return AXIS_SUCCESS;
}
return AXIS_FAIL;
}
}
1.1 ws-axis/c/src/xml/xerces/SoapParserXerces.h
Index: SoapParserXerces.h
===================================================================
/*
* Copyright 2003-2004 The Apache Software Foundation.
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
* You may obtain a copy of the License at
*
* http://www.apache.org/licenses/LICENSE-2.0
*
* Unless required by applicable law or agreed to in writing, software
* distributed under the License is distributed on an "AS IS" BASIS,
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
* See the License for the specific language governing permissions and
* limitations under the License.
*/
/*
* @author sanjaya singharage (sanjayas@opensource.lk)
*/
#ifdef WIN32
#pragma warning (disable : 4786)
#endif
#if !defined(__SOAPPARSERXERCES_H_OF_AXIS_INCLUDED__)
#define __SOAPPARSERXERCES_H_OF_AXIS_INCLUDED__
#include <axis/server/Packet.h>
#include "../QName.h"
#include "../Event.h"
#include <axis/server/AnyElement.h>
#include <axis/server/XMLParser.h>
#include "XercesHandler.h"
#include <xercesc/sax2/SAX2XMLReader.hpp>
#include <xercesc/parsers/SAXParser.hpp>
#include <xercesc/framework/XMLPScanToken.hpp>
#include "SoapInputSource.h"
XERCES_CPP_NAMESPACE_USE
class SoapParserXerces: public XMLParser
{
public:
SoapParserXerces();
~SoapParserXerces();
int setInputStream(AxisIOStream* pInputStream);
const XML_Ch* getNS4Prefix(const XML_Ch* pcPrefix);
int getStatus();
const AnyElement* next(bool bIsCharData=false);
private:
SAX2XMLReader* m_pParser;
XMLPScanToken m_ScanToken;
XercesHandler m_Xhandler;
bool m_bFirstParsed;
SoapInputSource* m_pInputSource;
};
#endif
1.1 ws-axis/c/src/xml/xerces/XercesHandler.cpp
Index: XercesHandler.cpp
===================================================================
/*
* Copyright 2003-2004 The Apache Software Foundation.
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
* You may obtain a copy of the License at
*
* http://www.apache.org/licenses/LICENSE-2.0
*
* Unless required by applicable law or agreed to in writing, software
* distributed under the License is distributed on an "AS IS" BASIS,
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
* See the License for the specific language governing permissions and
* limitations under the License.
*/
/*
* @author sanjaya singharage (sanjayas@opensource.lk)
*/
#ifdef WIN32
#pragma warning (disable : 4786)
#endif
#include "XercesHandler.h"
#include <xercesc/sax2/Attributes.hpp>
#include <stdio.h>
XercesHandler::XercesHandler()
{
m_nStatus = AXIS_SUCCESS;
Nelement = (AnyElement*)malloc(sizeof (AnyElement));
}
XercesHandler::~XercesHandler()
{
}
void XercesHandler::startElement(const XMLCh *const uri,const XMLCh *const
localname,const XMLCh *const qname,
const Attributes &attrs)
{
m_pCurrElement = Nelement;
Nelement->m_type = START_ELEMENT;
Nelement->m_pchNameOrValue = XMLString::transcode(localname);
Nelement->m_pchNamespace = XMLString::transcode(uri);
unsigned int len = attrs.getLength();
unsigned int index;
unsigned int i = 0;
for (index = 0; index < len*3; index+=3)
{
Nelement->m_pchAttributes[index] =
XMLString::transcode(attrs.getLocalName(i));
Nelement->m_pchAttributes[index+1] =
XMLString::transcode(attrs.getURI(i));
Nelement->m_pchAttributes[index+2] =
XMLString::transcode(attrs.getValue(i));
i++;
}
Nelement->m_pchAttributes[len*3]=NULL;
}
const XML_Ch* XercesHandler::ns4Prefix(const XML_Ch* prefix)
{
if (m_NsStack.find(prefix) != m_NsStack.end())
{
return m_NsStack[prefix].c_str();
}
return NULL;
}
void XercesHandler::characters(const XMLCh* const chars,
const unsigned int length)
{
m_pCurrElement = Nelement;
Nelement->m_type = CHARACTER_ELEMENT;
Nelement->m_pchNameOrValue = XMLString::transcode(chars);
}
void XercesHandler::ignorableWhitespace(const XMLCh* const chars,
const unsigned int length)
{}
void XercesHandler::resetDocument()
{}
void XercesHandler::warning(const SAXParseException& exception)
{}
void XercesHandler::error(const SAXParseException& exception)
{
m_nStatus = AXIS_FAIL;
}
void XercesHandler::fatalError(const SAXParseException& exception)
{
m_nStatus = AXIS_FAIL;
}
void XercesHandler::endElement (const XMLCh *const uri,
const XMLCh *const localname,
const XMLCh *const qname)
{
m_pCurrElement = Nelement;
Nelement->m_type = END_ELEMENT;
Nelement->m_pchNameOrValue = XMLString::transcode(localname);
Nelement->m_pchNamespace = XMLString::transcode(uri);
Nelement->m_pchAttributes[0] = NULL;
}
void XercesHandler::startPrefixMapping(const XMLCh* const prefix,
const XMLCh* const uri)
{
Nelement->m_type = START_PREFIX;
Nelement->m_pchNameOrValue = XMLString::transcode(prefix);
Nelement->m_pchNamespace = XMLString::transcode(uri);
m_NsStack[XMLString::transcode(prefix)] = XMLString::transcode(uri);
}
void XercesHandler::endPrefixMapping(const XMLCh* const prefix)
{
Nelement->m_type = END_PREFIX;
Nelement->m_pchNameOrValue = XMLString::transcode(prefix);
m_NsStack.erase(XMLString::transcode(prefix));
}
void XercesHandler::freeElement()
{
if (m_pCurrElement)
{
/* free inner variables */
m_pCurrElement = 0;
}
}
1.1 ws-axis/c/src/xml/xerces/XercesHandler.h
Index: XercesHandler.h
===================================================================
/*
* Copyright 2003-2004 The Apache Software Foundation.
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
* You may obtain a copy of the License at
*
* http://www.apache.org/licenses/LICENSE-2.0
*
* Unless required by applicable law or agreed to in writing, software
* distributed under the License is distributed on an "AS IS" BASIS,
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
* See the License for the specific language governing permissions and
* limitations under the License.
*/
/*
* @author sanjaya singharage (sanjayas@opensource.lk)
*/
#include <xercesc/sax/HandlerBase.hpp>
#include <xercesc/sax2/DefaultHandler.hpp>
#include <axis/server/AnyElement.h>
#include <stdlib.h>
#include <map>
#include <string>
#include <axis/server/GDefine.h>
XERCES_CPP_NAMESPACE_USE
using namespace std;
class XercesHandler : public XERCES_CPP_NAMESPACE::DefaultHandler
{
public :
void freeElement();
int getStatus(){return m_nStatus;};
/* -----------------------------------------------------------------------
* Constructors
* -----------------------------------------------------------------------
*/
XercesHandler();
~XercesHandler();
const XML_Ch* XercesHandler::ns4Prefix(const XML_Ch* prefix);
AnyElement* getAnyElement()
{
return m_pCurrElement;
}
private:
/* -----------------------------------------------------------------------
* Handlers for the SAX DocumentHandler interface
* -----------------------------------------------------------------------
*/
void startElement(const XMLCh *const uri,const XMLCh *const localname,
const XMLCh *const qname,const Attributes &attrs);
void endElement (const XMLCh *const uri,const XMLCh *const localname,
const XMLCh *const qname);
void characters(const XMLCh* const chars, const unsigned int length);
void startPrefixMapping(const XMLCh* const prefix, const XMLCh* const uri);
void endPrefixMapping(const XMLCh* const prefix);
void ignorableWhitespace(const XMLCh* const chars,
const unsigned int length);
void resetDocument();
/* -----------------------------------------------------------------------
* Implementations of the SAX ErrorHandler interface
* -----------------------------------------------------------------------
*/
void warning(const SAXParseException& exception);
void error(const SAXParseException& exception);
void fatalError(const SAXParseException& exception);
int m_nStatus;
AnyElement * Nelement;
AnyElement * m_pCurrElement;
map<AxisXMLString, AxisXMLString> m_NsStack;
void initAnyElement()
{
Nelement->m_pchNameOrValue = NULL;
Nelement->m_pchNamespace = NULL;
}
};
1.10 +7 -7 ws-axis/c/vc/AxisClientDLL.dsp
Index: AxisClientDLL.dsp
===================================================================
RCS file: /home/cvs/ws-axis/c/vc/AxisClientDLL.dsp,v
retrieving revision 1.9
retrieving revision 1.10
diff -u -r1.9 -r1.10
--- AxisClientDLL.dsp 12 May 2004 07:36:47 -0000 1.9
+++ AxisClientDLL.dsp 18 May 2004 11:09:11 -0000 1.10
@@ -43,7 +43,7 @@
# PROP Ignore_Export_Lib 0
# PROP Target_Dir ""
# ADD BASE CPP /nologo /MT /W3 /GX /O2 /D "WIN32" /D "NDEBUG" /D "_WINDOWS" /D "_MBCS" /D "_USRDLL" /D "AXISCLIENTDLL_EXPORTS" /YX /FD /c
-# ADD CPP /nologo /MD /W3 /GX /Od /I "../include" /D "WIN32" /D "NDEBUG" /D "_WINDOWS" /D "_MBCS" /D "_USRDLL" /D "AXISCLIENTDLL_EXPORTS" /D "USE_EXPAT_PARSER" /D "AXIS_CLIENT_LIB" /FD /c
+# ADD CPP /nologo /MD /W3 /GX /Od /I "../include" /D "WIN32" /D "NDEBUG" /D "_WINDOWS" /D "_MBCS" /D "_USRDLL" /D "AXISCLIENTDLL_EXPORTS" /D "AXIS_CLIENT_LIB" /D "ENABLE_AXIS_EXCEPTION" /FD /c
# SUBTRACT CPP /YX
# ADD BASE MTL /nologo /D "NDEBUG" /mktyplib203 /win32
# ADD MTL /nologo /D "NDEBUG" /mktyplib203 /win32
@@ -70,7 +70,7 @@
# PROP Ignore_Export_Lib 0
# PROP Target_Dir ""
# ADD BASE CPP /nologo /MTd /W3 /Gm /GX /ZI /Od /D "WIN32" /D "_DEBUG" /D "_WINDOWS" /D "_MBCS" /D "_USRDLL" /D "AXISCLIENTDLL_EXPORTS" /YX /FD /GZ /c
-# ADD CPP /nologo /MDd /W3 /Gm /GX /ZI /Od /I "../include" /D "WIN32" /D "_DEBUG" /D "_WINDOWS" /D "_MBCS" /D "_USRDLL" /D "AXISCLIENTDLL_EXPORTS" /D "USE_EXPAT_PARSER" /D "AXIS_CLIENT_LIB" /FD /GZ /c
+# ADD CPP /nologo /MDd /W3 /Gm /GX /ZI /Od /I "../include" /D "WIN32" /D "_DEBUG" /D "_WINDOWS" /D "_MBCS" /D "_USRDLL" /D "AXISCLIENTDLL_EXPORTS" /D "AXIS_CLIENT_LIB" /D "ENABLE_AXIS_EXCEPTION" /FD /GZ /c
# SUBTRACT CPP /YX
# ADD BASE MTL /nologo /D "_DEBUG" /mktyplib203 /win32
# ADD MTL /nologo /D "_DEBUG" /mktyplib203 /win32
@@ -262,10 +262,6 @@
# End Source File
# Begin Source File
-SOURCE=..\src\soap\SoapParserExpat.cpp
-# End Source File
-# Begin Source File
-
SOURCE=..\src\soap\SoapSerializer.cpp
# End Source File
# Begin Source File
@@ -290,7 +286,7 @@
# End Source File
# Begin Source File
-SOURCE=..\src\wsdd\WSDDDocumentExpat.cpp
+SOURCE=..\src\wsdd\WSDDDocument.cpp
# End Source File
# Begin Source File
@@ -307,6 +303,10 @@
# Begin Source File
SOURCE=..\src\wsdd\WSDDTransport.cpp
+# End Source File
+# Begin Source File
+
+SOURCE=..\src\engine\XMLParserFactory.cpp
# End Source File
# End Group
# Begin Group "Header Files"
1.10 +8 -8 ws-axis/c/vc/AxisServerDLL.dsp
Index: AxisServerDLL.dsp
===================================================================
RCS file: /home/cvs/ws-axis/c/vc/AxisServerDLL.dsp,v
retrieving revision 1.9
retrieving revision 1.10
diff -u -r1.9 -r1.10
--- AxisServerDLL.dsp 12 May 2004 07:36:47 -0000 1.9
+++ AxisServerDLL.dsp 18 May 2004 11:09:11 -0000 1.10
@@ -43,7 +43,7 @@
# PROP Ignore_Export_Lib 0
# PROP Target_Dir ""
# ADD BASE CPP /nologo /MT /W3 /GX /O2 /D "WIN32" /D "NDEBUG" /D "_WINDOWS" /D "_MBCS" /D "_USRDLL" /D "DYNALIB_EXPORTS" /YX /FD /c
-# ADD CPP /nologo /MD /W3 /GX /Od /I "../include" /D "WIN32" /D "NDEBUG" /D "_WINDOWS" /D "_MBCS" /D "_USRDLL" /D "DYNALIB_EXPORTS" /D "USE_EXPAT_PARSER" /FD /c
+# ADD CPP /nologo /MD /W3 /GX /Od /I "../include" /D "WIN32" /D "NDEBUG" /D "_WINDOWS" /D "_MBCS" /D "_USRDLL" /D "DYNALIB_EXPORTS" /D "ENABLE_AXIS_EXCEPTION" /FD /c
# SUBTRACT CPP /YX
# ADD BASE MTL /nologo /D "NDEBUG" /mktyplib203 /win32
# ADD MTL /nologo /D "NDEBUG" /mktyplib203 /win32
@@ -74,7 +74,7 @@
# PROP Ignore_Export_Lib 0
# PROP Target_Dir ""
# ADD BASE CPP /nologo /MTd /W3 /Gm /GX /ZI /Od /D "WIN32" /D "_DEBUG" /D "_WINDOWS" /D "_MBCS" /D "_USRDLL" /D "DYNALIB_EXPORTS" /YX /FD /GZ /c
-# ADD CPP /nologo /MDd /W3 /Gm /GX /ZI /Od /I "../include" /D "WIN32" /D "_DEBUG" /D "_WINDOWS" /D "_MBCS" /D "_USRDLL" /D "DYNALIB_EXPORTS" /D "USE_EXPAT_PARSER" /FD /GZ /c
+# ADD CPP /nologo /MDd /W3 /Gm /GX /ZI /Od /I "../include" /D "WIN32" /D "_DEBUG" /D "_WINDOWS" /D "_MBCS" /D "_USRDLL" /D "DYNALIB_EXPORTS" /D "ENABLE_AXIS_EXCEPTION" /FD /GZ /c
# SUBTRACT CPP /YX
# ADD BASE MTL /nologo /D "_DEBUG" /mktyplib203 /win32
# ADD MTL /nologo /D "_DEBUG" /mktyplib203 /win32
@@ -85,7 +85,7 @@
# ADD BSC32 /nologo
LINK32=link.exe
# ADD BASE LINK32 kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib /nologo /dll /debug /machine:I386 /pdbtype:sept
-# ADD LINK32 libexpat.lib /nologo /dll /pdb:none /debug /machine:I386 /out:"../bin/AxisServer_D.dll" /libpath:"../lib/expat"
+# ADD LINK32 /nologo /dll /pdb:none /debug /machine:I386 /out:"../bin/AxisServer_D.dll"
# Begin Special Build Tool
SOURCE="$(InputPath)"
PostBuild_Cmds=copy ..\bin\AxisServer_D.dll "%AXIS_HOME%\libs\."
@@ -266,10 +266,6 @@
# End Source File
# Begin Source File
-SOURCE=..\src\soap\SoapParserExpat.cpp
-# End Source File
-# Begin Source File
-
SOURCE=..\src\soap\SoapSerializer.cpp
# End Source File
# Begin Source File
@@ -294,7 +290,7 @@
# End Source File
# Begin Source File
-SOURCE=..\src\wsdd\WSDDDocumentExpat.cpp
+SOURCE=..\src\wsdd\WSDDDocument.cpp
# End Source File
# Begin Source File
@@ -311,6 +307,10 @@
# Begin Source File
SOURCE=..\src\wsdd\WSDDTransport.cpp
+# End Source File
+# Begin Source File
+
+SOURCE=..\src\engine\XMLParserFactory.cpp
# End Source File
# End Group
# Begin Group "Header Files"
1.5 +24 -0 ws-axis/c/vc/Distribution.dsw
Index: Distribution.dsw
===================================================================
RCS file: /home/cvs/ws-axis/c/vc/Distribution.dsw,v
retrieving revision 1.4
retrieving revision 1.5
diff -u -r1.4 -r1.5
--- Distribution.dsw 12 May 2004 07:36:47 -0000 1.4
+++ Distribution.dsw 18 May 2004 11:09:11 -0000 1.5
@@ -75,6 +75,30 @@
###############################################################################
+Project: "AxisXMLParserExpat"=".\xml\expat\AxisXMLParserExpat.dsp" - Package Owner=<4>
+
+Package=<5>
+{{{
+}}}
+
+Package=<4>
+{{{
+}}}
+
+###############################################################################
+
+Project: "AxisXMLParserXerces"=".\xml\xerces\AxisXMLParserXerces.dsp" - Package Owner=<4>
+
+Package=<5>
+{{{
+}}}
+
+Package=<4>
+{{{
+}}}
+
+###############################################################################
+
Project: "SimpleAxisServer"=".\server\simple_axis_server\SimpleAxisServer.dsp" - Package Owner=<4>
Package=<5>
1.7 +2 -2 ws-axis/c/vc/server/apache1_3/Apache1_3Module.dsp
Index: Apache1_3Module.dsp
===================================================================
RCS file: /home/cvs/ws-axis/c/vc/server/apache1_3/Apache1_3Module.dsp,v
retrieving revision 1.6
retrieving revision 1.7
diff -u -r1.6 -r1.7
--- Apache1_3Module.dsp 12 May 2004 07:36:48 -0000 1.6
+++ Apache1_3Module.dsp 18 May 2004 11:09:11 -0000 1.7
@@ -43,7 +43,7 @@
# PROP Ignore_Export_Lib 0
# PROP Target_Dir ""
# ADD BASE CPP /nologo /MT /W3 /GX /O2 /D "WIN32" /D "NDEBUG" /D "_WINDOWS" /D "_MBCS" /D "_USRDLL" /D "APACHE1_3_EXPORTS" /YX /FD /c
-# ADD CPP /nologo /MD /W3 /Od /I "../../../include" /D "WIN32" /D "NDEBUG" /D "_WINDOWS" /D "_MBCS" /D "_USRDLL" /D "APACHE1_3_EXPORTS" /D "AXIS_APACHE1_3" /D "USE_EXPAT_PARSER" /FD /c
+# ADD CPP /nologo /MD /W3 /Od /I "../../../include" /D "WIN32" /D "NDEBUG" /D "_WINDOWS" /D "_MBCS" /D "_USRDLL" /D "APACHE1_3_EXPORTS" /D "AXIS_APACHE1_3" /D "ENABLE_AXIS_EXCEPTION" /FD /c
# SUBTRACT CPP /YX /Yc /Yu
# ADD BASE MTL /nologo /D "NDEBUG" /mktyplib203 /win32
# ADD MTL /nologo /D "NDEBUG" /mktyplib203 /win32
@@ -75,7 +75,7 @@
# PROP Ignore_Export_Lib 0
# PROP Target_Dir ""
# ADD BASE CPP /nologo /MTd /W3 /Gm /GX /ZI /Od /D "WIN32" /D "_DEBUG" /D "_WINDOWS" /D "_MBCS" /D "_USRDLL" /D "APACHE1_3_EXPORTS" /YX /FD /GZ /c
-# ADD CPP /nologo /MDd /W3 /Gm /GX /ZI /Od /I "../../../include" /D "WIN32" /D "_DEBUG" /D "_WINDOWS" /D "_MBCS" /D "_USRDLL" /D "APACHE1_3_EXPORTS" /D "AXIS_APACHE1_3" /D "USE_EXPAT_PARSER" /FR /YX /FD /I /GZ "../../../include" /c
+# ADD CPP /nologo /MDd /W3 /Gm /GX /ZI /Od /I "../../../include" /D "WIN32" /D "_DEBUG" /D "_WINDOWS" /D "_MBCS" /D "_USRDLL" /D "APACHE1_3_EXPORTS" /D "AXIS_APACHE1_3" /D "ENABLE_AXIS_EXCEPTION" /FR /YX /FD /I /GZ "../../../include" /c
# ADD BASE MTL /nologo /D "_DEBUG" /mktyplib203 /win32
# ADD MTL /nologo /D "_DEBUG" /mktyplib203 /win32
# ADD BASE RSC /l 0x409 /d "_DEBUG"
1.7 +2 -2 ws-axis/c/vc/server/apache2_0/Apache2_0Module.dsp
Index: Apache2_0Module.dsp
===================================================================
RCS file: /home/cvs/ws-axis/c/vc/server/apache2_0/Apache2_0Module.dsp,v
retrieving revision 1.6
retrieving revision 1.7
diff -u -r1.6 -r1.7
--- Apache2_0Module.dsp 29 Mar 2004 06:22:25 -0000 1.6
+++ Apache2_0Module.dsp 18 May 2004 11:09:11 -0000 1.7
@@ -43,7 +43,7 @@
# PROP Ignore_Export_Lib 0
# PROP Target_Dir ""
# ADD BASE CPP /nologo /MT /W3 /GX /O2 /D "WIN32" /D "NDEBUG" /D "_WINDOWS" /D "_MBCS" /D "_USRDLL" /D "APACHE2_0_EXPORTS" /YX /FD /c
-# ADD CPP /nologo /MD /W3 /Od /I "../../../include" /D "WIN32" /D "NDEBUG" /D "_WINDOWS" /D "_MBCS" /D "_USRDLL" /D "APACHE2_0_EXPORTS" /D "AXIS_APACHE1_3" /D "USE_EXPAT_PARSER" /YX /FD /c
+# ADD CPP /nologo /MD /W3 /Od /I "../../../include" /D "WIN32" /D "NDEBUG" /D "_WINDOWS" /D "_MBCS" /D "_USRDLL" /D "APACHE2_0_EXPORTS" /D "AXIS_APACHE1_3" /D "ENABLE_AXIS_EXCEPTION" /YX /FD /c
# ADD BASE MTL /nologo /D "NDEBUG" /mktyplib203 /win32
# ADD MTL /nologo /D "NDEBUG" /mktyplib203 /win32
# ADD BASE RSC /l 0x409 /d "NDEBUG"
@@ -69,7 +69,7 @@
# PROP Ignore_Export_Lib 0
# PROP Target_Dir ""
# ADD BASE CPP /nologo /MTd /W3 /Gm /GX /ZI /Od /D "WIN32" /D "_DEBUG" /D "_WINDOWS" /D "_MBCS" /D "_USRDLL" /D "APACHE2_0_EXPORTS" /YX /FD /GZ /c
-# ADD CPP /nologo /MDd /W3 /Gm /GX /ZI /Od /I "../../../include" /D "WIN32" /D "_DEBUG" /D "_WINDOWS" /D "_MBCS" /D "_USRDLL" /FR /YX /FD /I /GZ "../../../include" /c
+# ADD CPP /nologo /MDd /W3 /Gm /GX /ZI /Od /I "../../../include" /D "WIN32" /D "_DEBUG" /D "_WINDOWS" /D "_MBCS" /D "_USRDLL" /D "ENABLE_AXIS_EXCEPTION" /FR /YX /FD /I /GZ "../../../include" /c
# ADD BASE MTL /nologo /D "_DEBUG" /mktyplib203 /win32
# ADD MTL /nologo /D "_DEBUG" /mktyplib203 /win32
# ADD BASE RSC /l 0x409 /d "_DEBUG"
1.21 +2 -2 ws-axis/c/vc/server/simple_axis_server/SimpleAxisServer.dsp
Index: SimpleAxisServer.dsp
===================================================================
RCS file: /home/cvs/ws-axis/c/vc/server/simple_axis_server/SimpleAxisServer.dsp,v
retrieving revision 1.20
retrieving revision 1.21
diff -u -r1.20 -r1.21
--- SimpleAxisServer.dsp 9 Apr 2004 13:45:31 -0000 1.20
+++ SimpleAxisServer.dsp 18 May 2004 11:09:11 -0000 1.21
@@ -42,7 +42,7 @@
# PROP Ignore_Export_Lib 0
# PROP Target_Dir ""
# ADD BASE CPP /nologo /W3 /GX /O2 /D "WIN32" /D "NDEBUG" /D "_CONSOLE" /D "_MBCS" /YX /FD /c
-# ADD CPP /nologo /MT /W3 /O2 /I "../../../include" /D "WIN32" /D "NDEBUG" /D "_CONSOLE" /D "_MBCS" /D "USE_EXPAT_PARSER" /FR /FD /c
+# ADD CPP /nologo /MT /W3 /O2 /I "../../../include" /D "WIN32" /D "NDEBUG" /D "_CONSOLE" /D "_MBCS" /D "ENABLE_AXIS_EXCEPTION" /FR /FD /c
# SUBTRACT CPP /YX
# ADD BASE RSC /l 0x409 /d "NDEBUG"
# ADD RSC /l 0x409 /d "NDEBUG"
@@ -68,7 +68,7 @@
# PROP Ignore_Export_Lib 0
# PROP Target_Dir ""
# ADD BASE CPP /nologo /W3 /Gm /GX /ZI /Od /D "WIN32" /D "_DEBUG" /D "_CONSOLE" /D "_MBCS" /YX /FD /GZ /c
-# ADD CPP /nologo /MTd /W3 /Gm /GX /ZI /Od /I "../../../include" /D "WIN32" /D "_DEBUG" /D "_CONSOLE" /D "_MBCS" /D "USE_EXPAT_PARSER" /FR /YX /FD /GZ /c
+# ADD CPP /nologo /MTd /W3 /Gm /GX /ZI /Od /I "../../../include" /D "WIN32" /D "_DEBUG" /D "_CONSOLE" /D "_MBCS" /D "ENABLE_AXIS_EXCEPTION" /FR /YX /FD /GZ /c
# ADD BASE RSC /l 0x409 /d "_DEBUG"
# ADD RSC /l 0x409 /d "_DEBUG"
BSC32=bscmake.exe
1.5 +23 -3 ws-axis/c/vc/soap/SoapLibrary.dsp
Index: SoapLibrary.dsp
===================================================================
RCS file: /home/cvs/ws-axis/c/vc/soap/SoapLibrary.dsp,v
retrieving revision 1.4
retrieving revision 1.5
diff -u -r1.4 -r1.5
--- SoapLibrary.dsp 31 Mar 2004 14:25:28 -0000 1.4
+++ SoapLibrary.dsp 18 May 2004 11:09:12 -0000 1.5
@@ -114,7 +114,7 @@
# End Source File
# Begin Source File
-SOURCE=..\..\src\soap\SoapBinInputStream.cpp
+SOURCE=..\..\src\xml\xerces\SoapBinInputStream.cpp
# End Source File
# Begin Source File
@@ -142,6 +142,10 @@
# End Source File
# Begin Source File
+SOURCE=..\..\src\xml\xerces\SoapInputSource.cpp
+# End Source File
+# Begin Source File
+
SOURCE=..\..\src\soap\SoapKeywordMapping.cpp
# End Source File
# Begin Source File
@@ -158,6 +162,10 @@
# End Source File
# Begin Source File
+SOURCE=..\..\src\xml\xerces\SoapParserXerces.cpp
+# End Source File
+# Begin Source File
+
SOURCE=..\..\src\soap\SoapSerializer.cpp
# End Source File
# Begin Source File
@@ -168,6 +176,10 @@
SOURCE=..\..\src\soap\XercesHandler.cpp
# End Source File
+# Begin Source File
+
+SOURCE=..\..\src\xml\xerces\XercesHandler.cpp
+# End Source File
# End Group
# Begin Group "Header Files"
@@ -202,7 +214,7 @@
# End Source File
# Begin Source File
-SOURCE=..\..\src\soap\SoapBinInputStream.h
+SOURCE=..\..\src\xml\xerces\SoapBinInputStream.h
# End Source File
# Begin Source File
@@ -226,7 +238,7 @@
# End Source File
# Begin Source File
-SOURCE=..\..\src\soap\SoapInputSource.h
+SOURCE=..\..\src\xml\xerces\SoapInputSource.h
# End Source File
# Begin Source File
@@ -246,6 +258,10 @@
# End Source File
# Begin Source File
+SOURCE=..\..\src\xml\xerces\SoapParserXerces.h
+# End Source File
+# Begin Source File
+
SOURCE=..\..\include\axis\server\SoapSerializer.h
# End Source File
# Begin Source File
@@ -255,6 +271,10 @@
# Begin Source File
SOURCE=..\..\src\soap\XercesHandler.h
+# End Source File
+# Begin Source File
+
+SOURCE=..\..\src\xml\xerces\XercesHandler.h
# End Source File
# End Group
# End Target
1.3 +2 -2 ws-axis/c/vc/transport/axis/AxisTransport.dsp
Index: AxisTransport.dsp
===================================================================
RCS file: /home/cvs/ws-axis/c/vc/transport/axis/AxisTransport.dsp,v
retrieving revision 1.2
retrieving revision 1.3
diff -u -r1.2 -r1.3
--- AxisTransport.dsp 12 May 2004 10:46:07 -0000 1.2
+++ AxisTransport.dsp 18 May 2004 11:09:12 -0000 1.3
@@ -43,7 +43,7 @@
# PROP Ignore_Export_Lib 0
# PROP Target_Dir ""
# ADD BASE CPP /nologo /MT /W3 /GX /O2 /D "WIN32" /D "NDEBUG" /D "_WINDOWS" /D "_MBCS" /D "_USRDLL" /D "AXISTRANSPORT_EXPORTS" /YX /FD /c
-# ADD CPP /nologo /MT /W3 /GX /O2 /I "../../../include" /D "WIN32" /D "NDEBUG" /D "_WINDOWS" /D "_MBCS" /D "_USRDLL" /D "AXISTRANSPORT_EXPORTS" /YX /FD /c
+# ADD CPP /nologo /MT /W3 /GX /O2 /I "../../../include" /D "WIN32" /D "NDEBUG" /D "_WINDOWS" /D "_MBCS" /D "_USRDLL" /D "AXISTRANSPORT_EXPORTS" /D "ENABLE_AXIS_EXCEPTION" /YX /FD /c
# ADD BASE MTL /nologo /D "NDEBUG" /mktyplib203 /win32
# ADD MTL /nologo /D "NDEBUG" /mktyplib203 /win32
# ADD BASE RSC /l 0x409 /d "NDEBUG"
@@ -69,7 +69,7 @@
# PROP Ignore_Export_Lib 0
# PROP Target_Dir ""
# ADD BASE CPP /nologo /MTd /W3 /Gm /GX /ZI /Od /D "WIN32" /D "_DEBUG" /D "_WINDOWS" /D "_MBCS" /D "_USRDLL" /D "AXISTRANSPORT_EXPORTS" /YX /FD /GZ /c
-# ADD CPP /nologo /MTd /W3 /Gm /GX /ZI /Od /I "../../../include" /D "WIN32" /D "_DEBUG" /D "_WINDOWS" /D "_MBCS" /D "_USRDLL" /D "AXISTRANSPORT_EXPORTS" /YX /FD /GZ /c
+# ADD CPP /nologo /MTd /W3 /Gm /GX /ZI /Od /I "../../../include" /D "WIN32" /D "_DEBUG" /D "_WINDOWS" /D "_MBCS" /D "_USRDLL" /D "AXISTRANSPORT_EXPORTS" /D "ENABLE_AXIS_EXCEPTION" /YX /FD /GZ /c
# ADD BASE MTL /nologo /D "_DEBUG" /mktyplib203 /win32
# ADD MTL /nologo /D "_DEBUG" /mktyplib203 /win32
# ADD BASE RSC /l 0x409 /d "_DEBUG"
1.3 +2 -14 ws-axis/c/vc/wsdd/WSDDLibrary.dsp
Index: WSDDLibrary.dsp
===================================================================
RCS file: /home/cvs/ws-axis/c/vc/wsdd/WSDDLibrary.dsp,v
retrieving revision 1.2
retrieving revision 1.3
diff -u -r1.2 -r1.3
--- WSDDLibrary.dsp 30 Mar 2004 10:47:49 -0000 1.2
+++ WSDDLibrary.dsp 18 May 2004 11:09:12 -0000 1.3
@@ -90,11 +90,11 @@
# End Source File
# Begin Source File
-SOURCE=..\..\src\wsdd\WSDDDocumentExpat.cpp
+SOURCE=..\..\src\wsdd\WSDDDocument.cpp
# End Source File
# Begin Source File
-SOURCE=..\..\src\wsdd\WSDDDocumentXerces.cpp
+SOURCE=..\..\src\wsdd\WSDDDocument.h
# End Source File
# Begin Source File
@@ -123,18 +123,6 @@
# Begin Source File
SOURCE=..\..\src\wsdd\WSDDDeployment.h
-# End Source File
-# Begin Source File
-
-SOURCE=..\..\src\wsdd\WSDDDocument.h
-# End Source File
-# Begin Source File
-
-SOURCE=..\..\src\wsdd\WSDDDocumentExpat.h
-# End Source File
-# Begin Source File
-
-SOURCE=..\..\src\wsdd\WSDDDocumentXerces.h
# End Source File
# Begin Source File