diff -r 7aa6007702af -r 61b27eec6533 languageinterworkingfw/servicehandler/src/liwxmlhandler.cpp --- a/languageinterworkingfw/servicehandler/src/liwxmlhandler.cpp Fri Apr 16 15:54:49 2010 +0300 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 @@ -1,273 +0,0 @@ -/* -* Copyright (c) 2003-2005 Nokia Corporation and/or its subsidiary(-ies). -* All rights reserved. -* This component and the accompanying materials are made available -* under the terms of the License "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: Wrapper to XML parser interface. Loads the inline and external XML metadata -* and populates the service provider metadata information. This class -* uses Symbian SAX parser to load the metadata information. -* -*/ - - - - - - - -#include "liwxmlhandler.h" -#include -#include "data_caging_path_literals.hrh" -#include - -#include "liwservicedata.h" -#include - -_LIT8(KMetaDataName, "meta"); - - -/* - * Creates and returns an instance of \c CLiwXmlHandler - */ -CLiwXmlHandler* CLiwXmlHandler::NewL() -{ - CLiwXmlHandler* ptrToThis = CLiwXmlHandler::NewLC(); - CleanupStack::Pop(ptrToThis); - - return ptrToThis; -} - -/* - * Creates and returns an instance of \c CLiwXmlHandler - * Leaves the created instance in the cleanupstack. - * - * @return an instance of \c CLiwXmlHandler - */ -CLiwXmlHandler* CLiwXmlHandler::NewLC() -{ - CLiwXmlHandler* ptrToThis = new (ELeave) CLiwXmlHandler(); - CleanupStack::PushL(ptrToThis); - - ptrToThis->ConstructL(); - - return ptrToThis; -} - - -/* - * Destructor. Deletes the handler to XML parser - */ -CLiwXmlHandler::~CLiwXmlHandler() -{ - if(iXmlHandler) - delete iXmlHandler; - - if(iBuffer) - delete iBuffer; -} - -/* - * Default constructor. - */ -CLiwXmlHandler::CLiwXmlHandler() -{ - -} - -/* - * Instantiates the SAX parser instance and registers itself - * as the callback to handle SAX events. - */ -void CLiwXmlHandler::ConstructL() -{ - TInt parserFeature = EErrorOnUnrecognisedTags | EXmlVersion_1_1; - iXmlHandler = CSenXmlReader::NewL(parserFeature); - iXmlHandler->SetContentHandler(*this); -} - -/* - * Parses the inline XML content passed in the buffer. The parser - * is kick started to recevie SAX events. This method also accepts the - * reference to \c CLiwServiceData to store the parsed metadata name-value - * pairs. - */ -TInt CLiwXmlHandler::LoadServiceData(const TDesC8& aXmlBuffer,CLiwServiceData* aServiceData) -{ - iServiceData = aServiceData; - - TRAPD(err,iXmlHandler->ParseL(aXmlBuffer)); - - TInt retVal = ESrvDataLoadFailed; - - if(!err) - { - retVal = ESrvDataLoadSuccess; - } - - return retVal; -} - -/* - * Parses the XML content present in an external file. The parser - * is kick started to recevie SAX events. This method also accepts the - * reference to \c CLiwServiceData to store the parsed metadata name-value - * pairs. - */ - #include -TInt CLiwXmlHandler::LoadServiceData(const TDesC& aFileToParse,CLiwServiceData* aServiceData) -{ - TInt retVal = ESrvDataLoadFailed; - - iServiceData = aServiceData; - - RFs fsSession; - User::LeaveIfError( fsSession.Connect() ); - - TFileName resFile; - resFile.Append(aFileToParse); - - if(!BaflUtils::FileExists(fsSession,resFile)) - { - fsSession.Close(); - return ESrvDataFileNotFnd; - } - - - TRAPD(err,iXmlHandler->ParseL(fsSession,resFile)); - - fsSession.Close(); - if(!err) - { - retVal = ESrvDataLoadSuccess; - } - - return retVal; -} - -/** -* Receive notification of the beginning of a document. -* @return KErrNone or some of the system-wide Symbian error codes. -*/ -TInt CLiwXmlHandler::StartDocument() -{ - return KErrNone; -} - -/** -* Receive notification of the end of a document. -* @return KErrNone or some of the system-wide Symbian error codes. -*/ -TInt CLiwXmlHandler::EndDocument() -{ - return KErrNone; -} - -/** -* The important parsed elements are and its sub-element -* . -* The other sub-elements (other than ) are considered -* as service provider specific metadata name-value pairs. -* -* @return KErrNone or some of the system-wide Symbian error codes. -*/ -TInt CLiwXmlHandler::StartElement( const TDesC8& /*aURI*/, - const TDesC8& aLocalName, - const TDesC8& /*aName*/, - const RAttributeArray& /* apAttrs */) -{ - if(iBuffer) - { - delete iBuffer; - iBuffer=NULL; - } - - startBuf = aLocalName; - return KErrNone; -} - - -/** -* The end of the elements such as and its sub-element -* are processed. The flags set for the processing of -* and it sub-elements like are toggled off. -* -* @return KErrNone or some of the system-wide Symbian error codes. -*/ -TInt CLiwXmlHandler::EndElement( const TDesC8& /*aURI*/, - const TDesC8& aLocalName, - const TDesC8& /*aName*/) -{ - if(0!=aLocalName.CompareF(KMetaDataName) && 0==aLocalName.CompareF(startBuf)) - iServiceData->AddMetaDataL(aLocalName,*iBuffer); - - delete iBuffer; - iBuffer = NULL; - - return KErrNone; -} - -/** -* The metadata can be defined in the following XML format: -* -* -* -* metadata_keyvalue1 -* metadata_keyvalue2 -* -* -* A realistic example below -* -* -* -* CapabilityReadDeviceData -* CapabilityWriteDeviceData -* CapabilityLocation -* -* -* This function obtains the character data defined within the -* child elements of . The child element name under -* is taken as metadata key and the character data under it as metadata -* value and added to the internal metadata key-value pair entries. -* -* There could be multiple metadata keys having different values as -* shown above -* -* Right now it supports only capability metadata information -* -*/ -TInt CLiwXmlHandler::Characters(const TDesC8& aBuf, - const TInt /* aStart */, - const TInt /* aLength */) -{ - if(iBuffer) - { - delete iBuffer; - iBuffer=NULL; - } - - - iBuffer = aBuf.Alloc(); - - return KErrNone; -} - -/** -* In case of parsing errors due to non-well formed XML content, -* file not being present etc are handled here. In case of XML content -* error, the metadata stored so far will be cleaned up. -* -* @return KErrNone or some of the system-wide Symbian error codes. -*/ - -TInt CLiwXmlHandler::Error(TInt /*aErrorCode*/) -{ - return ESrvDataLoadFailed; -}