--- a/voipplugins/accountcreationplugin/engine/src/acpxmlhandler.cpp Thu Aug 19 09:45:22 2010 +0300
+++ /dev/null Thu Jan 01 00:00:00 1970 +0000
@@ -1,509 +0,0 @@
-/*
-* Copyright (c) 2007-2008 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: Implements CAcpXmlHandler methods
-*
-*/
-
-
-#include <escapeutils.h>
-#include "acpprovider.h"
-#include "acpxmlhandler.h"
-#include "accountcreationpluginlogger.h"
-#include "macpxmlhandlerobserver.h"
-#include "accountcreationengineconstants.h"
-
-
-// ---------------------------------------------------------------------------
-// CAcpXmlHandler::CAcpXmlHandler
-// ---------------------------------------------------------------------------
-//
-CAcpXmlHandler::CAcpXmlHandler( MAcpXmlHandlerObserver& aObserver )
- : CActive( EPriorityStandard ),
- iObserver( aObserver )
- {
- // Add active scheduler.
- CActiveScheduler::Add( this );
- }
-
-// ---------------------------------------------------------------------------
-// CAcpXmlHandler::ConstructL
-// ---------------------------------------------------------------------------
-//
-void CAcpXmlHandler::ConstructL()
- {
- ACPLOG( "CAcpXmlHandler::ConstructL begin" );
- // Create XML parser
- iParser = CParser::NewL( KXmlMimeType, *this );
- ACPLOG( "CAcpXmlHandler::ConstructL end" );
- }
-
-// ---------------------------------------------------------------------------
-// CAcpXmlHandler::NewL
-// ---------------------------------------------------------------------------
-//
-CAcpXmlHandler* CAcpXmlHandler::NewL( MAcpXmlHandlerObserver& aObserver )
- {
- CAcpXmlHandler* self = CAcpXmlHandler::NewLC( aObserver );
- CleanupStack::Pop( self );
- return self;
- }
-
-// ---------------------------------------------------------------------------
-// CAcpXmlHandler::NewLC
-// ---------------------------------------------------------------------------
-//
-CAcpXmlHandler* CAcpXmlHandler::NewLC( MAcpXmlHandlerObserver& aObserver )
- {
- CAcpXmlHandler* self = new ( ELeave ) CAcpXmlHandler( aObserver );
- CleanupStack::PushL( self );
- self->ConstructL();
- return self;
- }
-
-// ---------------------------------------------------------------------------
-// CAcpXmlHandler::~CAcpXmlHandler
-// ---------------------------------------------------------------------------
-//
-CAcpXmlHandler::~CAcpXmlHandler()
- {
- ACPLOG( "CAcpXmlHandler::~CAcpXmlHandler begin" );
-
- Cancel(); // Ensures that the parsing is stopped
- delete iParser;
- delete iBuffer;
- delete iOngoingAttr;
- delete iProvider;
-
- ACPLOG( "CAcpXmlHandler::~CAcpXmlHandler end" );
- }
-
-// ---------------------------------------------------------------------------
-// CAcpXmlHandler::StartParsingL
-// Starts parsing xml with given filename.
-// ---------------------------------------------------------------------------
-//
-void CAcpXmlHandler::StartParsingL( const TFileName& aFilename )
- {
- ACPLOG( "CAcpXmlHandler::StartParsingL begin" );
-
- // Save the filename because of deleting file later on.
- iFilename.Append( aFilename );
-
- // Leave if parsing is active.
- if ( IsActive() )
- {
- User::Leave( KErrInUse );
- }
-
- // Connect to fileserver and open xml file to be parsed.
- User::LeaveIfError( iFileServer.Connect() );
- User::LeaveIfError( iFile.Open( iFileServer, aFilename, EFileRead ) );
-
- delete iBuffer;
- iBuffer = NULL;
-
- TEntry entry;
-
- // Get size of file.
- User::LeaveIfError( iFileServer.Entry( aFilename, entry ) );
-
- TInt fileSize = entry.iSize;
-
- // Create buffer for file reading and start process.
- iBuffer = HBufC8::NewL( fileSize );
-
- TPtr8 ptr( iBuffer->Des() );
- ptr.Zero();
-
- iFile.Read( ptr, fileSize, iStatus );
- SetActive();
-
- iParser->ParseBeginL();
-
- ACPLOG( "CAcpXmlHandler::StartParsingL end" );
- }
-
-// ---------------------------------------------------------------------------
-// CAcpXmlHandler::HandleFinishedProviderL
-// Handles finished provider and notifies observer.
-// ---------------------------------------------------------------------------
-//
-void CAcpXmlHandler::HandleFinishedProviderL()
- {
- ACPLOG( "CAcpXmlHandler::HandleFinishedProviderL" );
-
- // Provider exists, save it by calling observer.
- if ( iProvider )
- {
- iObserver.NotifyParsedProviderL( *iProvider );
- delete iProvider;
- iProvider = NULL;
- }
-
- // Start new provider by creating instance from CAcpProvider.
- iProvider = CAcpProvider::NewL();
- }
-
-// ---------------------------------------------------------------------------
-// CAcpXmlHandler::DoCancel
-// From CActive.
-// ---------------------------------------------------------------------------
-//
-void CAcpXmlHandler::DoCancel()
- {
- ACPLOG( "CAcpXmlHandler::DoCancel begin" );
-
- ACPLOG( "CAcpXmlHandler::DoCancel - ReadCancel" );
- iFile.ReadCancel();
-
- TRAP_IGNORE( iParser->ParseEndL() );
-
- iFileServer.Delete( iFilename ); // Delete old file
-
- iFile.Close();
- iFileServer.Close();
-
- delete iBuffer;
- iBuffer = NULL;
-
- delete iOngoingAttr;
- iOngoingAttr = NULL;
-
- ACPLOG( "CAcpXmlHandler::DoCancel end" );
- }
-
-// ---------------------------------------------------------------------------
-// CAcpXmlHandler::RunL
-// From CActive.
-// ---------------------------------------------------------------------------
-//
-void CAcpXmlHandler::RunL()
- {
- ACPLOG( "CAcpXmlHandler::RunL begin" );
-
- if ( KErrNone == iStatus.Int() )
- {
- // When buffer length is zero, we have reached end of the document.
- if ( !iBuffer->Length() )
- {
- ACPLOG( " - end of XML document reached" );
- DoCancel();
- }
- // Otherwise continue reading of Xml file.
- else
- {
- iParser->ParseL( *iBuffer );
- TPtr8 ptr( iBuffer->Des() );
- iFile.Read( ptr, iStatus );
- SetActive();
- ACPLOG( " - continuing reading XML document" );
- }
- }
- else
- {
- iObserver.NotifyParsingCompleted( iStatus.Int() );
- }
-
- ACPLOG( "CAcpXmlHandler::RunL end" );
- }
-
-
-// ---------------------------------------------------------------------------
-// CAcpXmlHandler::OnStartDocumentL
-// From MContentHandler.
-// ---------------------------------------------------------------------------
-//
-void CAcpXmlHandler::OnStartDocumentL(
- const RDocumentParameters& /*aDocParam*/,
- TInt aErrorCode )
- {
- if ( KErrNone != aErrorCode )
- {
- ACPLOG2( "CAcpXmlHandler::OnStartDocumentL: error=%d", aErrorCode );
- iObserver.NotifyParsingCompleted( aErrorCode );
- }
- }
-
-// ---------------------------------------------------------------------------
-// CAcpXmlHandler::OnEndDocumentL
-// From MContentHandler.
-// ---------------------------------------------------------------------------
-//
-void CAcpXmlHandler::OnEndDocumentL( TInt aErrorCode )
- {
- ACPLOG2( "CAcpXmlHandler::OnEndDocumentL begin: error=%d", aErrorCode );
-
- if ( KErrNone == aErrorCode )
- {
- // Save last one.
- HandleFinishedProviderL();
- delete iProvider;
- iProvider = NULL;
- }
-
- iObserver.NotifyParsingCompleted( aErrorCode );
-
- ACPLOG( "CAcpXmlHandler::OnEndDocumentL end" );
- }
-
-// ---------------------------------------------------------------------------
-// CAcpXmlHandler::OnStartElementL
-// From MContentHandler.
-// ---------------------------------------------------------------------------
-//
-void CAcpXmlHandler::OnStartElementL(
- const RTagInfo& aElement,
- const RAttributeArray& ,
- TInt aErrorCode )
- {
- TBuf<KMaxElementLength>element;
- element.Copy(aElement.LocalName().DesC());
-
- ACPLOG2( "CAcpXmlHandler::OnStartElementL: element=%S", &element );
- ACPLOG2( "CAcpXmlHandler::OnStartElementL: error=%d", aErrorCode );
-
- if ( KErrNone == aErrorCode )
- {
- // No need to go through attributes since they're not used.
- // Parsing has reached to some of supported elements.
- // Save element value to member data for further actions.
- TPtrC8 ptr = aElement.LocalName().DesC();
-
- if ( !ptr.Compare( KServiceProvider ) ||
- !ptr.Compare( KProviderName ) ||
- !ptr.Compare( KIconUrl ) ||
- !ptr.Compare( KSisUrl ) ||
- !ptr.Compare( KCreateUrl ) ||
- !ptr.Compare( KActivateUrl ) ||
- !ptr.Compare( KProviderDescription ) ||
- !ptr.Compare( KProviderType ) ||
- !ptr.Compare( KReportUrl ) )
- {
- iOngoingAttr = HBufC8::NewL( ptr.Length() );
- iOngoingAttr->Des().Copy( ptr );
- iGetContentNow = ETrue;
- // just for creating provider
- if ( !ptr.Compare( KServiceProvider ) )
- {
- iGetContentNow = EFalse;
- }
- }
-
- if ( iOngoingAttr )
- {
- // Parsing of provider has been started.
- // This means that old provider is ready for saving
- // if it's not first one. In that case, new provider is started.
- if ( !iOngoingAttr->Compare( KServiceProvider ) )
- {
- HandleFinishedProviderL();
- delete iOngoingAttr;
- iOngoingAttr = NULL;
- }
- }
- }
- else
- {
- ACPLOG2( "CAcpXmlHandler::OnStartElementL: error=%d", aErrorCode );
- iObserver.NotifyParsingCompleted( aErrorCode );
- }
- }
-
-// ---------------------------------------------------------------------------
-// CAcpXmlHandler::OnEndElementL
-// From MContentHandler.
-// ---------------------------------------------------------------------------
-//
-void CAcpXmlHandler::OnEndElementL( const RTagInfo& /*aElement*/,
- TInt aErrorCode )
- {
- if ( KErrNone == aErrorCode )
- {
- // Reset member variables.
- iGetContentNow = EFalse;
-
- delete iOngoingAttr;
- iOngoingAttr = NULL;
- }
- else
- {
- ACPLOG2( "CAcpXmlHandler::OnEndElementL: error=%d", aErrorCode );
- iObserver.NotifyParsingCompleted( aErrorCode );
- }
- }
-
-// ---------------------------------------------------------------------------
-// CAcpXmlHandler::OnContentL
-// From MContentHandler.
-// ---------------------------------------------------------------------------
-//
-void CAcpXmlHandler::OnContentL( const TDesC8& aBytes, TInt aErrorCode )
- {
- if ( KErrNone == aErrorCode )
- {
- ACPLOG( "CAcpXmlHandler::OnContentL" );
- // We need to save content data if iGetContentNow is set.
- if ( iGetContentNow )
- {
- // Convert unicode data to 16-bit descriptor.
- HBufC* bytes = EscapeUtils::ConvertToUnicodeFromUtf8L( aBytes );
-
- // On the cleanup stack
- CleanupStack::PushL( bytes );
-
- ACPLOG2( "CAcpXmlHandler::OnContentL: aBytes=%S", bytes );
-
- // Provider name.
- if ( !iOngoingAttr->Compare( KProviderName ) )
- {
- ACPLOG( "CAcpXmlHandler::SetProviderNameL" );
- iProvider->SetProviderNameL( *bytes );
- }
- // Location of icons package.
- else if ( !iOngoingAttr->Compare( KIconUrl ) )
- {
- ACPLOG( "CAcpXmlHandler::SetIconUrlL" );
- iProvider->SetIconUrlL( aBytes );
- }
- // Location of sis package.
- else if ( !iOngoingAttr->Compare( KSisUrl ) )
- {
- ACPLOG( "CAcpXmlHandler::SetSisUrlL" );
- iProvider->SetSisUrlL( aBytes );
- }
- // Location to create settings.
- else if ( !iOngoingAttr->Compare( KCreateUrl ) )
- {
- ACPLOG( "CAcpXmlHandler::SetCreationUrlL" );
- iProvider->SetCreationUrlL( aBytes );
- }
- // Location to activate settings.
- else if ( !iOngoingAttr->Compare( KActivateUrl ) )
- {
- ACPLOG( "CAcpXmlHandler::SetActivationUrlL" );
- iProvider->SetActivationUrlL( aBytes );
- }
- // Provider description.
- else if ( !iOngoingAttr->Compare( KProviderDescription ) )
- {
- ACPLOG( "CAcpXmlHandler::SetProviderDescription" );
- iProvider->SetProviderDescriptionL( *bytes );
- }
- // Provider type.
- else if ( !iOngoingAttr->Compare( KProviderType ) )
- {
- ACPLOG( "CAcpXmlHandler::SetProviderType" );
- iProvider->SetProviderTypeL( *bytes );
- }
- // Location to activate settings.
- else if ( !iOngoingAttr->Compare( KReportUrl ) )
- {
- ACPLOG( " - Provider report url ignored" );
- }
- // Should never happen.
- else
- {
- User::Leave( KErrNotSupported );
- }
- CleanupStack::PopAndDestroy( bytes );
- }
- }
- else
- {
- ACPLOG2( "CAcpXmlHandler::OnContentL: error=%d", aErrorCode );
- iObserver.NotifyParsingCompleted( aErrorCode );
- }
- }
-
-// ---------------------------------------------------------------------------
-// CAcpXmlHandler::OnStartPrefixMappingL
-// From MContentHandler.
-// ---------------------------------------------------------------------------
-//
-void CAcpXmlHandler::OnStartPrefixMappingL(
- const RString& /*aPrefix*/,
- const RString& /*aUri*/,
- TInt /*aErrorCode*/ )
- {
- }
-
-// ---------------------------------------------------------------------------
-// CAcpXmlHandler::OnEndPrefixMappingL
-// From MContentHandler.
-// ---------------------------------------------------------------------------
-//
-void CAcpXmlHandler::OnEndPrefixMappingL(
- const RString& /*aPrefix*/,
- TInt /*aErrorCode*/ )
- {
- }
-
-// ---------------------------------------------------------------------------
-// CAcpXmlHandler::OnIgnorableWhiteSpaceL
-// From MContentHandler.
-// ---------------------------------------------------------------------------
-//
-void CAcpXmlHandler::OnIgnorableWhiteSpaceL(
- const TDesC8& /*aBytes*/,
- TInt /*aErrorCode*/ )
- {
- }
-
-// ---------------------------------------------------------------------------
-// CAcpXmlHandler::OnSkippedEntityL
-// From MContentHandler.
-// ---------------------------------------------------------------------------
-//
-void CAcpXmlHandler::OnSkippedEntityL(
- const RString& /*aName*/,
- TInt /*aErrorCode*/ )
- {
- }
-
-// ---------------------------------------------------------------------------
-// CAcpXmlHandler::OnProcessingInstructionL
-// From MContentHandler.
-// ---------------------------------------------------------------------------
-//
-void CAcpXmlHandler::OnProcessingInstructionL(
- const TDesC8& /*aTarget*/,
- const TDesC8& /*aData*/,
- TInt /*aErrorCode*/ )
- {
- }
-
-// ---------------------------------------------------------------------------
-// CAcpXmlHandler::OnError
-// From MContentHandler.
-// ---------------------------------------------------------------------------
-//
-void CAcpXmlHandler::OnError( TInt aErrorCode )
- {
- ACPLOG2( "CAcpXmlHandler::OnError: error=%d", aErrorCode );
-
- // Send a notification that the parsing stopped because of error.
- iObserver.NotifyParsingCompleted( aErrorCode );
- }
-
-// ---------------------------------------------------------------------------
-// CAcpXmlHandler::GetExtendedInterface
-// From MContentHandler.
-// ---------------------------------------------------------------------------
-//
-TAny* CAcpXmlHandler::GetExtendedInterface( const TInt32 /*aUid*/ )
- {
- return NULL;
- }
-
-// End of file.