datacommsserver/esockserver/test/TE_EsockTestSteps/inc/XmlParsing.h
changeset 0 dfb7c4ff071f
--- /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 <xml/contenthandler.h>
+#include <xml/documentparameters.h>
+#include <xml/taginfo.h>
+#include <xml/attribute.h>
+
+#include <elements/sd_mintercept.h>
+
+
+
+static const TUint KXmlParsingBufferMaxLength = 128;
+typedef TBuf8<KXmlParsingBufferMaxLength> 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_
+