diff -r 000000000000 -r dfb7c4ff071f datacommsserver/esockserver/test/TE_EsockTestSteps/inc/XmlParsing.h --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/datacommsserver/esockserver/test/TE_EsockTestSteps/inc/XmlParsing.h Thu Dec 17 09:22:25 2009 +0200 @@ -0,0 +1,140 @@ +/** +* Copyright (c) 2006-2009 Nokia Corporation and/or its subsidiary(-ies). +* All rights reserved. +* This component and the accompanying materials are made available +* under the terms of "Eclipse Public License v1.0" +* which accompanies this distribution, and is available +* at the URL "http://www.eclipse.org/legal/epl-v10.html". +* +* Initial Contributors: +* Nokia Corporation - initial contribution. +* +* Contributors: +* +* Description: +* +*/ + + + +/** + @file XmlParsing.h +*/ + +#ifndef _XMLPARSING_H_ +#define _XMLPARSING_H_ + +#include +#include +#include +#include + +#include + + + +static const TUint KXmlParsingBufferMaxLength = 128; +typedef TBuf8 TXmlTempBuf8; +_LIT8(KXmlMimeType, "text/xml"); + +class TLookupTableEntry8 + { +public: + TPtrC8 iIdentifier; + TUint iValue; + }; + +class CExpressionXmlHandler : public Xml::MContentHandler + { + // MContentHandler +protected: + void OnStartDocumentL(const Xml::RDocumentParameters& /*aDocParam*/, TInt /*aErrorCode*/) {} + void OnEndDocumentL(TInt /*aErrorCode*/) {} + void OnStartElementL(const Xml::RTagInfo& /*aElement*/, const Xml::RAttributeArray& /*aAttributes*/, TInt /*aErrorCode*/) {} + void OnEndElementL(const Xml::RTagInfo& /*aElement*/, TInt /*aErrorCode*/) {} + void OnContentL(const TDesC8& /*aBytes*/, TInt /*aErrorCode*/){} + void OnStartPrefixMappingL(const RString& /*aPrefix*/, const RString& /*aUri*/, TInt /*aErrorCode*/){} + void OnEndPrefixMappingL(const RString& /*aPrefix*/, TInt /*aErrorCode*/){} + void OnIgnorableWhiteSpaceL(const TDesC8& /*aBytes*/, TInt /*aErrorCode*/){} + void OnSkippedEntityL(const RString& /*aName*/, TInt /*aErrorCode*/) {} + void OnProcessingInstructionL(const TDesC8& /*aTarget*/, const TDesC8& /*aData*/, TInt /*aErrorCode*/){} + void OnExtensionL(const RString& /*aData*/, TInt /*aToken*/, TInt /*aErrorCode*/){} + void OnError(TInt /*aErrorCode*/){} + TAny* GetExtendedInterface(const TInt32 /*aUid*/){return NULL;} + void FetchAttributeValueByNameL( + const Xml::RAttributeArray& aAttributes, + const TDesC8& aAttributeTag, + TDes8& aAttributeValue); + + enum TLookupTableType {EUidTable, EMessageIdTable, ETierIdTable, EAccessPointIdTable, EErrorCodeTable, EActionTypeTable, ERealmIdTable}; + + void ParseIdentifierValueL(const TDesC8& aBuffer, TDes8& aIdentifier); + void ParseHexValueL(const TDesC8& aBuffer, TUint& aHexValue); + void LookupValueByNameL(TLookupTableType aLookupType, const TDesC8& aName, TUint& aValue); + void FetchValueOrNamedValueL(TLookupTableType aType, const TDesC8& aBuffer, TUint& aValue); + }; + +class CActionXmlHandler : public CExpressionXmlHandler + { + public: + CActionXmlHandler(); + CActionXmlHandler(Den::TAction& aParsedAction) : iAction(aParsedAction) {} + virtual ~CActionXmlHandler() {} + + private: + // From MContentHandler + void OnStartElementL(const Xml::RTagInfo& aElement, const Xml::RAttributeArray& aAttributes, TInt aErrorCode); + + void ParseActionTypeAttributeL(const Xml::RAttributeArray& aAttributes, Den::TAction::TActionType& aActionType); + void ParseActionErrorCodeAttributeL(const Xml::RAttributeArray& aAttributes, TInt& aError); + + Den::TAction& iAction; + }; + +class CEventExpressionXmlHandler : public CExpressionXmlHandler + { + + public: + CEventExpressionXmlHandler(); + CEventExpressionXmlHandler(Den::TEventExpression& aEventExpression) : + iEventExpression(aEventExpression), + iParseState(EEventElement) {} + virtual ~CEventExpressionXmlHandler() {} + + private: + // From MContentHandler + void OnStartElementL(const Xml::RTagInfo& aElement, const Xml::RAttributeArray& aAttributes, TInt aErrorCode); + void OnEndElementL(const Xml::RTagInfo& /*aElement*/, TInt /*aErrorCode*/); + + void ParseProviderInfoAttributeL(const Xml::RAttributeArray& aAttributes, TUid& aTierId, TUint& aAPId); + void ParseUidAttributeL(const Xml::RAttributeArray& aAttributes, TUid& aUid); + void ParseNodeTagAttributeL(const Xml::RAttributeArray& aAttributes, TDes8& aTagToApply); + void ParseNodeTagToApplyAttributeL(const Xml::RAttributeArray& aAttributes, TDes8& aTagToApply); + + void ParseNodeExpressionElementL( + const Xml::RTagInfo& aElementName, + const Xml::RAttributeArray& aAttributes, + Den::TNodeExpression& aNodeExpression); + + void ParseMessageElementL( + const Xml::RTagInfo& aElementName, + const Xml::RAttributeArray& aAttributes, + Den::TMsgExpression& aMessage); + + void ParseNamedNumericAttributeL( + const TDesC8& aAttribName, + const Xml::RAttributeArray& aAttributes, + TLookupTableType aTableId, + TUint& aParsedValue); + + Den::TNodeExpression iSender; + Den::TMsgExpression iMessage; + Den::TNodeExpression iReceiver; + Den::TEventExpression& iEventExpression; + + enum TParseState {EEventElement, ESenderNodeElement, EMsgElement, EReceiverNodeElement, EDone}; + TParseState iParseState; + }; + +#endif // _XMLPARSING_H_ +