--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/syncmlfw/common/sosserver_clientapi/src/NSmlErrorCodeConversion.cpp Thu Dec 17 09:07:52 2009 +0200
@@ -0,0 +1,197 @@
+/*
+* Copyright (c) 2005 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: Conversion for private error codes to public syncML errors.
+*
+*/
+
+
+
+// INCLUDE FILES
+#include "NSmlErrorCodeConversion.h"
+#include "nsmlerror.h"
+#include "nsmldserror.h"
+#include "nsmldmerror.h"
+#include "nsmlhttp.h"
+#include <SyncMLErr.h>
+
+using namespace SyncMLError;
+
+// CONSTANTS
+const TNSmlErrorConversion::TNSmlErrorMapping TNSmlErrorConversion::KErrors[] =
+ {
+ /* Transport related */
+ { TNSmlHTTPErrCode::ENSmlHTTPErr_BadRequest, KErrTransportRequest },
+ { TNSmlHTTPErrCode::ENSmlHTTPErr_MethodNotAllowed, KErrTransportRequest },
+ { TNSmlHTTPErrCode::ENSmlHTTPErr_Forbidden, KErrTransportRequest },
+ { TNSmlHTTPErrCode::ENSmlHTTPErr_Conflict, KErrTransportRequest },
+ { TNSmlHTTPErrCode::ENSmlHTTPErr_Gone, KErrTransportRequest },
+ { TNSmlHTTPErrCode::ENSmlHTTPErr_RequestEntityTooLarge, KErrTransportRequest },
+ { TNSmlHTTPErrCode::ENSmlHTTPErr_RequestURITooLong, KErrTransportRequest },
+ { TNSmlHTTPErrCode::ENSmlHTTPErr_UnsupportedMediaType, KErrTransportRequest },
+ { TNSmlHTTPErrCode::ENSmlHTTPErr_RequestedRangeNotSatisfiable, KErrTransportRequest },
+ { TNSmlHTTPErrCode::ENSmlHTTPErr_ExpectationFailed, KErrTransportRequest },
+ { TNSmlHTTPErrCode::ENSmlHTTPErr_NotImplemented, KErrTransportRequest },
+ { TNSmlHTTPErrCode::ENSmlHTTPErr_ServiceUnavailable, KErrTransportRequest },
+ { TNSmlHTTPErrCode::ENSmlHTTPErr_HTTPVersionNotSupported, KErrTransportRequest },
+ { TNSmlHTTPErrCode::ENSmlHTTPErr_NotAcceptable, KErrTransportHeader },
+ { TNSmlHTTPErrCode::ENSmlHTTPErr_LengthRequired, KErrTransportHeader },
+ { TNSmlHTTPErrCode::ENSmlHTTPErr_PreconditionFailed, KErrTransportHeader },
+ { TNSmlHTTPErrCode::ENSmlHTTPErr_NotFound, KErrTransportSvrNoUri },
+ { TNSmlHTTPErrCode::ENSmlHTTPErr_Unauthorized, KErrTransportAuthenticationFailure },
+ { TNSmlHTTPErrCode::ENSmlHTTPErr_ProxyAuthenticationRequired, KErrTransportAuthenticationFailure },
+ { TNSmlHTTPErrCode::ENSmlHTTPErr_BadGateway, KErrTransportDisconnected },
+ { TNSmlHTTPErrCode::ENSmlHTTPErr_PaymentRequired, KErrTransportDisconnected },
+ { TNSmlHTTPErrCode::ENSmlHTTPErr_RequestTimeout, KErrTransportDisconnected },
+ { TNSmlHTTPErrCode::ENSmlHTTPErr_InternalServerError, KErrTransportDisconnected },
+ { TNSmlHTTPErrCode::ENSmlHTTPErr_GatewayTimeout, KErrTransportDisconnected },
+ /* Engine related*/
+ { TNSmlError::ESmlServerNotResponding, KErrConnectionError },
+ { TNSmlError::ESmlCommunicationError, KErrCannotCommunicateWithServer },
+ { TNSmlError::ESmlServerUnauthorized, KErrInvalidCredentials },
+ { TNSmlError::ESmlStatusUnauthorized, KErrAuthenticationFailure },
+ { TNSmlError::ESmlStatusClientAuthenticationRequired, KErrAuthenticationFailure },
+ { TNSmlError::ESmlChalMissing, KErrCannotCommunicateWithServer },
+ { TNSmlError::ESmlChalInvalid, KErrCannotCommunicateWithServer },
+ { TNSmlError::ESmlVerDTDMissing, KErrVerDTDMissing },
+ { TNSmlError::ESmlVerProtoMissing, KErrProtoMissing },
+ { TNSmlError::ESmlSyncHdrMissing, KErrSyncHdrMissing },
+ { TNSmlError::ESmlTargetLocURIMissing, KErrTargetLocMissing },
+ { TNSmlError::ESmlTargetLocURIInvalid, KErrTargetLocMissing },
+ { TNSmlError::ESmlSyncTargetLocURIMissing, KErrTargetLocMissing },
+ { TNSmlError::ESmlSyncTargetLocURIInvalid, KErrTargetLocMissing },
+ { TNSmlError::ESmlSourceLocURIMissing, KErrSourceLocMissing },
+ { TNSmlError::ESmlSourceLocURIInvalid, KErrSourceLocMissing },
+ { TNSmlError::ESmlSyncSourceLocURIMissing, KErrSourceLocMissing },
+ { TNSmlError::ESmlSyncSourceLocURIInvalid, KErrSourceLocMissing },
+ { TNSmlError::ESmlVerDTDNotSupported, KErrVersionDTDNotSupported },
+ { TNSmlError::ESmlVerProtoNotSupported, KErrProtoNotSupported },
+ { TNSmlError::ESmlCmdInvalid, KErrStatusCommandNotTheSame },
+ { TNSmlError::ESmlStatusDataInvalid, KErrStatusCommandNotTheSame },
+ { TNSmlError::ESmlCmdIDInvalid, KErrStatusCommandNotTheSame },
+ { TNSmlError::ESmlCmdMissing, KErrMissingStatusCommands },
+ { TNSmlError::ESmlStatusDataMissing, KErrMissingStatusCommands },
+ { TNSmlError::ESmlCmdIDMissing, KErrMissingStatusCommands },
+ { TNSmlError::ESmlIncompleteMessage, KErrXmlParsingError },
+ { TNSmlDSError::ESmlDSDeviceInfoMissing, KErrMissingStatusCommands },
+ { TNSmlDSError::ESmlDSDeviceInfoInvalid, KErrMissingStatusCommands },
+ { TNSmlDSError::ESmlDSLocalDatabaseError, KErrClientDatabaseNotFound },
+ { TNSmlError::ESmlStatusNotFound, KErrServerDatabaseNotFound },
+ { TNSmlError::ESmlStatusGone, KErrServerDatabaseNotFound },
+ { TNSmlError::ESmlMaxMsgSizeInvalid, KErrServerDatabaseNotFound },
+ { TNSmlError::ESmlCommandInvalid, KErrCommandInvalid },
+ { TNSmlError::ESmlUnexpectedCmd, KErrCommandInvalid },
+ { TNSmlError::ESmlUnsupportedCmd, KErrCommandInvalid },
+ { TNSmlError::ESmlStatusCommandNotImplemented, KErrCommandInvalid },
+ { TNSmlError::ESmlMsgIDMissing, KErrCommandInvalid },
+ { TNSmlError::ESmlTargetLocURIMissing, KErrCommandInvalid },
+ { TNSmlError::ESmlTargetLocURIInvalid, KErrCommandInvalid },
+ { TNSmlDSError::ESmlDSDeviceInfoMissing, KErrCommandInvalid },
+ { TNSmlDSError::ESmlDSDatastoreSourceRefInvalid, KErrCommandInvalid },
+ { TNSmlError::ESmlMsgIDInvalid, KErrCommandInvalid },
+ { TNSmlError::ESmlSourceRefInvalid, KErrCommandInvalid },
+ { TNSmlError::ESmlItemSourceLocURIMissing, KErrCommandInvalid },
+ { TNSmlError::ESmlItemDataMissing, KErrCommandInvalid },
+ { TNSmlError::ESmlItemTargetLocURIMissing, KErrCommandInvalid },
+ { TNSmlError::ESmlErrorInSettings, KErrCommandInvalid },
+ { TNSmlError::ESmlLowMemory, KErrCommandInvalid },
+ { TNSmlError::ESmlServerIsBusy, KErrCommandInvalid },
+ { TNSmlError::ESmlStatusNotPossibleInOfflineMode, KErrPhoneOnOfflineMode },
+ { TNSmlDMError::ESmlServerSessionAbort, KErrServerDatabaseNotFound },
+ { TNSmlDSError::ESmlDSServerIdNotMatching, KErrServerIdNotMatching },
+ { TNSmlDSError::ESmlDSNoValidDatabases, KErrClientDatabaseNotFound },
+ { TNSmlDSError::ESmlDSDatastoreSourceRefMissing, KErrCommandInvalid },
+ { TNSmlDSError::ESmlDSDatastoreRxPrefCTTypeMissing, KErrCommandInvalid },
+ { TNSmlDSError::ESmlDSDatastoreRxCTTypeNotMatching, KErrCommandInvalid },
+ { TNSmlDSError::ESmlDSDatastoreTxPrefCTTypeMissing, KErrCommandInvalid },
+ { TNSmlDSError::ESmlDSDatastoreTxCTTypeNotMatching, KErrCommandInvalid },
+ { TNSmlDSError::ESmlDSLocalDatabaseChanged, KErrCommandInvalid },
+ { TNSmlDSError::ESmlDSUnsupportedSyncType, KErrCommandInvalid },
+ { TNSmlError::ESmlCommunicationInterrupted, KErrCannotCommunicateWithServer },
+ { TNSmlError::ESmlUntrustedCert, KErrInvalidCert },
+ { KErrNone, KErrNone }
+ };
+
+const TNSmlErrorConversion::TNSmlErrorMappingRange TNSmlErrorConversion::KErrorRanges[] =
+ {
+ { TNSmlError::ESmlResultsInvalid, TNSmlError::ESmlGetItemTargetInvalid, KErrCommandInvalid },
+ { TNSmlError::ESmlStatusMissing, TNSmlError::ESmlCmdRefInvalid, KErrCommandInvalid },
+ { TNSmlError::ESmlFormatNotSupported, TNSmlError::ESmlTypeInvalid, KErrCommandInvalid },
+ { KErrNone, KErrNone, KErrNone }
+ };
+
+// ============================ MEMBER FUNCTIONS ===============================
+
+// -----------------------------------------------------------------------------
+// TNSmlErrorConversion::TNSmlErrorConversion
+// C++ constructor
+// -----------------------------------------------------------------------------
+//
+EXPORT_C TNSmlErrorConversion::TNSmlErrorConversion(
+ TInt aErrorCode )
+ : iErrorCode( aErrorCode )
+ {
+ }
+
+// -----------------------------------------------------------------------------
+// TNSmlErrorConversion::SetErrorCode
+// sets error code
+// -----------------------------------------------------------------------------
+//
+void TNSmlErrorConversion::SetErrorCode( TInt aErrorCode )
+ {
+ iErrorCode = aErrorCode;
+ }
+
+// -----------------------------------------------------------------------------
+// TNSmlErrorConversion::Convert
+// converts error code.
+// -----------------------------------------------------------------------------
+//
+EXPORT_C TInt TNSmlErrorConversion::Convert() const
+ {
+ if ( iErrorCode == KErrNone )
+ {
+ return KErrNone;
+ }
+
+ if ( iErrorCode < 0 )
+ {
+ // no conversion for system errors.
+ return iErrorCode;
+ }
+
+ TInt error( KErrNone );
+
+ for ( TInt i(0); ( error = KErrors[i].iErrorCode ) != KErrNone; i++ )
+ {
+ if ( error == iErrorCode )
+ {
+ return KErrors[i].iSyncMLError;
+ }
+ }
+
+ TInt errorRangeStart( KErrNone );
+
+ for ( TInt i(0); ( errorRangeStart = KErrorRanges[i].iErrorCodeRangeStart ) != KErrNone; i++ )
+ {
+ if ( iErrorCode >= errorRangeStart && iErrorCode <= KErrorRanges[i].iErrorCodeRangeEnd )
+ {
+ return KErrorRanges[i].iSyncMLError;
+ }
+ }
+
+ return SyncMLError::KErrGeneral;
+ }
+
+// End of File