|
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 |