syncmlfw/common/sosserver_clientapi/src/NSmlErrorCodeConversion.cpp
changeset 0 b497e44ab2fc
equal deleted inserted replaced
-1:000000000000 0:b497e44ab2fc
       
     1 /*
       
     2 * Copyright (c) 2005 Nokia Corporation and/or its subsidiary(-ies). 
       
     3 * All rights reserved.
       
     4 * This component and the accompanying materials are made available
       
     5 * under the terms of "Eclipse Public License v1.0"
       
     6 * which accompanies this distribution, and is available
       
     7 * at the URL "http://www.eclipse.org/legal/epl-v10.html".
       
     8 *
       
     9 * Initial Contributors:
       
    10 * Nokia Corporation - initial contribution.
       
    11 *
       
    12 * Contributors:
       
    13 *
       
    14 * Description:  Conversion for private error codes to public syncML errors.
       
    15 *
       
    16 */
       
    17 
       
    18 
       
    19 
       
    20 // INCLUDE FILES
       
    21 #include    "NSmlErrorCodeConversion.h"
       
    22 #include	"nsmlerror.h"
       
    23 #include	"nsmldserror.h"
       
    24 #include	"nsmldmerror.h"
       
    25 #include	"nsmlhttp.h"
       
    26 #include	<SyncMLErr.h>
       
    27 
       
    28 using namespace SyncMLError;
       
    29 
       
    30 // CONSTANTS
       
    31 const TNSmlErrorConversion::TNSmlErrorMapping TNSmlErrorConversion::KErrors[] = 
       
    32 	{
       
    33 		/* Transport related */
       
    34 		{ TNSmlHTTPErrCode::ENSmlHTTPErr_BadRequest, 				KErrTransportRequest },
       
    35 		{ TNSmlHTTPErrCode::ENSmlHTTPErr_MethodNotAllowed, 			KErrTransportRequest },
       
    36 		{ TNSmlHTTPErrCode::ENSmlHTTPErr_Forbidden, 				KErrTransportRequest },
       
    37 		{ TNSmlHTTPErrCode::ENSmlHTTPErr_Conflict, 					KErrTransportRequest },
       
    38 		{ TNSmlHTTPErrCode::ENSmlHTTPErr_Gone, 						KErrTransportRequest },
       
    39 		{ TNSmlHTTPErrCode::ENSmlHTTPErr_RequestEntityTooLarge, 	KErrTransportRequest },
       
    40 		{ TNSmlHTTPErrCode::ENSmlHTTPErr_RequestURITooLong, 		KErrTransportRequest },
       
    41 		{ TNSmlHTTPErrCode::ENSmlHTTPErr_UnsupportedMediaType, 		KErrTransportRequest },
       
    42 		{ TNSmlHTTPErrCode::ENSmlHTTPErr_RequestedRangeNotSatisfiable, 	KErrTransportRequest },
       
    43 		{ TNSmlHTTPErrCode::ENSmlHTTPErr_ExpectationFailed, 		KErrTransportRequest },
       
    44 		{ TNSmlHTTPErrCode::ENSmlHTTPErr_NotImplemented, 			KErrTransportRequest },
       
    45 		{ TNSmlHTTPErrCode::ENSmlHTTPErr_ServiceUnavailable, 		KErrTransportRequest },
       
    46 		{ TNSmlHTTPErrCode::ENSmlHTTPErr_HTTPVersionNotSupported, 	KErrTransportRequest },
       
    47 		{ TNSmlHTTPErrCode::ENSmlHTTPErr_NotAcceptable, 			KErrTransportHeader },
       
    48 		{ TNSmlHTTPErrCode::ENSmlHTTPErr_LengthRequired, 			KErrTransportHeader },
       
    49 		{ TNSmlHTTPErrCode::ENSmlHTTPErr_PreconditionFailed,  		KErrTransportHeader },
       
    50 		{ TNSmlHTTPErrCode::ENSmlHTTPErr_NotFound, 					KErrTransportSvrNoUri },
       
    51 		{ TNSmlHTTPErrCode::ENSmlHTTPErr_Unauthorized, 				KErrTransportAuthenticationFailure },
       
    52 		{ TNSmlHTTPErrCode::ENSmlHTTPErr_ProxyAuthenticationRequired, 	KErrTransportAuthenticationFailure },
       
    53 		{ TNSmlHTTPErrCode::ENSmlHTTPErr_BadGateway, 				KErrTransportDisconnected },
       
    54 		{ TNSmlHTTPErrCode::ENSmlHTTPErr_PaymentRequired, 			KErrTransportDisconnected },
       
    55 		{ TNSmlHTTPErrCode::ENSmlHTTPErr_RequestTimeout, 			KErrTransportDisconnected },
       
    56 		{ TNSmlHTTPErrCode::ENSmlHTTPErr_InternalServerError, 		KErrTransportDisconnected },
       
    57 		{ TNSmlHTTPErrCode::ENSmlHTTPErr_GatewayTimeout, 			KErrTransportDisconnected },
       
    58 		/* Engine related*/
       
    59 		{ TNSmlError::ESmlServerNotResponding,		KErrConnectionError },
       
    60 		{ TNSmlError::ESmlCommunicationError, 		KErrCannotCommunicateWithServer },
       
    61 		{ TNSmlError::ESmlServerUnauthorized, 		KErrInvalidCredentials },
       
    62 		{ TNSmlError::ESmlStatusUnauthorized, 		KErrAuthenticationFailure },
       
    63 		{ TNSmlError::ESmlStatusClientAuthenticationRequired, 		KErrAuthenticationFailure },
       
    64 		{ TNSmlError::ESmlChalMissing, 				KErrCannotCommunicateWithServer },
       
    65 		{ TNSmlError::ESmlChalInvalid, 				KErrCannotCommunicateWithServer },
       
    66 		{ TNSmlError::ESmlVerDTDMissing, 			KErrVerDTDMissing },
       
    67 		{ TNSmlError::ESmlVerProtoMissing, 			KErrProtoMissing },
       
    68 		{ TNSmlError::ESmlSyncHdrMissing, 			KErrSyncHdrMissing },
       
    69 		{ TNSmlError::ESmlTargetLocURIMissing, 		KErrTargetLocMissing },
       
    70 		{ TNSmlError::ESmlTargetLocURIInvalid, 		KErrTargetLocMissing },
       
    71 		{ TNSmlError::ESmlSyncTargetLocURIMissing, 	KErrTargetLocMissing },
       
    72 		{ TNSmlError::ESmlSyncTargetLocURIInvalid, 	KErrTargetLocMissing },
       
    73 		{ TNSmlError::ESmlSourceLocURIMissing, 		KErrSourceLocMissing },
       
    74 		{ TNSmlError::ESmlSourceLocURIInvalid, 		KErrSourceLocMissing },
       
    75 		{ TNSmlError::ESmlSyncSourceLocURIMissing, 	KErrSourceLocMissing },
       
    76 		{ TNSmlError::ESmlSyncSourceLocURIInvalid, 	KErrSourceLocMissing },
       
    77 		{ TNSmlError::ESmlVerDTDNotSupported, 		KErrVersionDTDNotSupported },
       
    78 		{ TNSmlError::ESmlVerProtoNotSupported, 	KErrProtoNotSupported },
       
    79 		{ TNSmlError::ESmlCmdInvalid, 				KErrStatusCommandNotTheSame },
       
    80 		{ TNSmlError::ESmlStatusDataInvalid, 		KErrStatusCommandNotTheSame },
       
    81 		{ TNSmlError::ESmlCmdIDInvalid, 			KErrStatusCommandNotTheSame },
       
    82 		{ TNSmlError::ESmlCmdMissing, 				KErrMissingStatusCommands },
       
    83 		{ TNSmlError::ESmlStatusDataMissing, 		KErrMissingStatusCommands },
       
    84 		{ TNSmlError::ESmlCmdIDMissing, 			KErrMissingStatusCommands },
       
    85 		{ TNSmlError::ESmlIncompleteMessage, 		KErrXmlParsingError },
       
    86 		{ TNSmlDSError::ESmlDSDeviceInfoMissing,	KErrMissingStatusCommands },
       
    87 		{ TNSmlDSError::ESmlDSDeviceInfoInvalid, 	KErrMissingStatusCommands },
       
    88 		{ TNSmlDSError::ESmlDSLocalDatabaseError, 	KErrClientDatabaseNotFound },
       
    89 		{ TNSmlError::ESmlStatusNotFound, 			KErrServerDatabaseNotFound },
       
    90 		{ TNSmlError::ESmlStatusGone, 				KErrServerDatabaseNotFound },
       
    91 		{ TNSmlError::ESmlMaxMsgSizeInvalid, 		KErrServerDatabaseNotFound },
       
    92 		{ TNSmlError::ESmlCommandInvalid, 			KErrCommandInvalid },
       
    93 		{ TNSmlError::ESmlUnexpectedCmd, 			KErrCommandInvalid },
       
    94 		{ TNSmlError::ESmlUnsupportedCmd, 			KErrCommandInvalid },
       
    95 		{ TNSmlError::ESmlStatusCommandNotImplemented,	KErrCommandInvalid },
       
    96 		{ TNSmlError::ESmlMsgIDMissing, 			KErrCommandInvalid },
       
    97 		{ TNSmlError::ESmlTargetLocURIMissing, 		KErrCommandInvalid },
       
    98 		{ TNSmlError::ESmlTargetLocURIInvalid, 		KErrCommandInvalid },
       
    99 		{ TNSmlDSError::ESmlDSDeviceInfoMissing, 	KErrCommandInvalid },
       
   100 		{ TNSmlDSError::ESmlDSDatastoreSourceRefInvalid,	KErrCommandInvalid },
       
   101 		{ TNSmlError::ESmlMsgIDInvalid, 			KErrCommandInvalid },
       
   102 		{ TNSmlError::ESmlSourceRefInvalid, 		KErrCommandInvalid },
       
   103 		{ TNSmlError::ESmlItemSourceLocURIMissing, 	KErrCommandInvalid },
       
   104 		{ TNSmlError::ESmlItemDataMissing, 			KErrCommandInvalid },
       
   105 		{ TNSmlError::ESmlItemTargetLocURIMissing, 	KErrCommandInvalid },
       
   106 		{ TNSmlError::ESmlErrorInSettings, 			KErrCommandInvalid },
       
   107 		{ TNSmlError::ESmlLowMemory, 				KErrCommandInvalid },
       
   108 		{ TNSmlError::ESmlServerIsBusy, 			KErrCommandInvalid },
       
   109 		{ TNSmlError::ESmlStatusNotPossibleInOfflineMode,	KErrPhoneOnOfflineMode },
       
   110 		{ TNSmlDMError::ESmlServerSessionAbort,		KErrServerDatabaseNotFound },
       
   111 		{ TNSmlDSError::ESmlDSServerIdNotMatching,  KErrServerIdNotMatching },
       
   112 		{ TNSmlDSError::ESmlDSNoValidDatabases,		KErrClientDatabaseNotFound },
       
   113 		{ TNSmlDSError::ESmlDSDatastoreSourceRefMissing,	KErrCommandInvalid },
       
   114 		{ TNSmlDSError::ESmlDSDatastoreRxPrefCTTypeMissing,	KErrCommandInvalid },
       
   115 		{ TNSmlDSError::ESmlDSDatastoreRxCTTypeNotMatching,	KErrCommandInvalid },
       
   116 		{ TNSmlDSError::ESmlDSDatastoreTxPrefCTTypeMissing,	KErrCommandInvalid },
       
   117 		{ TNSmlDSError::ESmlDSDatastoreTxCTTypeNotMatching,	KErrCommandInvalid },
       
   118 		{ TNSmlDSError::ESmlDSLocalDatabaseChanged,	KErrCommandInvalid },
       
   119 		{ TNSmlDSError::ESmlDSUnsupportedSyncType,	KErrCommandInvalid },
       
   120 		{ TNSmlError::ESmlCommunicationInterrupted,	KErrCannotCommunicateWithServer },				
       
   121 		{ TNSmlError::ESmlUntrustedCert,	KErrInvalidCert },
       
   122 		{ KErrNone, 								KErrNone }
       
   123 	};
       
   124 	
       
   125 const TNSmlErrorConversion::TNSmlErrorMappingRange TNSmlErrorConversion::KErrorRanges[] =
       
   126 	{
       
   127 		{ TNSmlError::ESmlResultsInvalid, 		TNSmlError::ESmlGetItemTargetInvalid, 	KErrCommandInvalid },
       
   128 		{ TNSmlError::ESmlStatusMissing, 		TNSmlError::ESmlCmdRefInvalid, 			KErrCommandInvalid },
       
   129 		{ TNSmlError::ESmlFormatNotSupported, 	TNSmlError::ESmlTypeInvalid, 			KErrCommandInvalid },
       
   130 		{ KErrNone, 							KErrNone, 								KErrNone }
       
   131 	};
       
   132 
       
   133 // ============================ MEMBER FUNCTIONS ===============================
       
   134 
       
   135 // -----------------------------------------------------------------------------
       
   136 // TNSmlErrorConversion::TNSmlErrorConversion
       
   137 // C++ constructor 
       
   138 // -----------------------------------------------------------------------------
       
   139 //
       
   140 EXPORT_C TNSmlErrorConversion::TNSmlErrorConversion( 
       
   141 	TInt aErrorCode ) 
       
   142 	: iErrorCode( aErrorCode )
       
   143     {
       
   144     }
       
   145    
       
   146 // -----------------------------------------------------------------------------
       
   147 // TNSmlErrorConversion::SetErrorCode
       
   148 // sets error code
       
   149 // -----------------------------------------------------------------------------
       
   150 //
       
   151 void TNSmlErrorConversion::SetErrorCode( TInt aErrorCode )
       
   152 	{
       
   153 	iErrorCode = aErrorCode;
       
   154 	}
       
   155 
       
   156 // -----------------------------------------------------------------------------
       
   157 // TNSmlErrorConversion::Convert
       
   158 // converts error code.
       
   159 // -----------------------------------------------------------------------------
       
   160 //
       
   161 EXPORT_C TInt TNSmlErrorConversion::Convert() const
       
   162     {
       
   163     if ( iErrorCode == KErrNone )
       
   164     	{
       
   165     	return KErrNone;
       
   166     	}
       
   167     	
       
   168     if ( iErrorCode < 0 )
       
   169     	{
       
   170     	// no conversion for system errors.
       
   171     	return iErrorCode;
       
   172     	}
       
   173     	
       
   174     TInt error( KErrNone );
       
   175     
       
   176     for ( TInt i(0); ( error = KErrors[i].iErrorCode ) != KErrNone; i++ )
       
   177     	{
       
   178     	if ( error == iErrorCode )
       
   179     		{
       
   180     		return KErrors[i].iSyncMLError;
       
   181     		}
       
   182     	}
       
   183     	
       
   184     TInt errorRangeStart( KErrNone );
       
   185     	
       
   186 	for ( TInt i(0); ( errorRangeStart = KErrorRanges[i].iErrorCodeRangeStart ) != KErrNone; i++ )
       
   187     	{
       
   188     	if ( iErrorCode >= errorRangeStart && iErrorCode <= KErrorRanges[i].iErrorCodeRangeEnd )
       
   189     		{
       
   190     		return KErrorRanges[i].iSyncMLError;
       
   191     		}
       
   192     	}
       
   193     	
       
   194     return SyncMLError::KErrGeneral;
       
   195     }
       
   196 
       
   197 //  End of File