--- /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_
+