summaryrefslogtreecommitdiffstats
path: root/util/include/axutil_error.h
blob: 3b27a81c40bdee7947efb33395480ca419bac49d (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
223
224
225
226
227
228
229
230
231
232
233
234
235
236
237
238
239
240
241
242
243
244
245
246
247
248
249
250
251
252
253
254
255
256
257
258
259
260
261
262
263
264
265
266
267
268
269
270
271
272
273
274
275
276
277
278
279
280
281
282
283
284
285
286
287
288
289
290
291
292
293
294
295
296
297
298
299
300
301
302
303
304
305
306
307
308
309
310
311
312
313
314
315
316
317
318
319
320
321
322
323
324
325
326
327
328
329
330
331
332
333
334
335
336
337
338
339
340
341
342
343
344
345
346
347
348
349
350
351
352
353
354
355
356
357
358
359
360
361
362
363
364
365
366
367
368
369
370
371
372
373
374
375
376
377
378
379
380
381
382
383
384
385
386
387
388
389
390
391
392
393
394
395
396
397
398
399
400
401
402
403
404
405
406
407
408
409
410
411
412
413
414
415
416
417
418
419
420
421
422
423
424
425
426
427
428
429
430
431
432
433
434
435
436
437
438
439
440
441
442
443
444
445
446
447
448
449
450
451
452
453
454
455
456
457
458
459
460
461
462
463
464
465
466
467
468
469
470
471
472
473
474
475
476
477
478
479
480
481
482
483
484
485
486
487
488
489
490
491
492
493
494
495
496
497
498
499
500
501
502
503
504
505
506
507
508
509
510
511
512
513
514
515
516
517
518
519
520
521
522
523
524
525
526
527
528
529
530
531
532
533
534
535
536
537
538
539
540
541
542
543
544
545
546
547
548
549
550
551
552
553
554
555
556
557
558
559
560
561
562
563
564
565
566
567
568
569
570
571
572
573
574
575
576
577
578
579
580
581
582
583
584
585
586
587
588
589
590
591
592
593
594
595
596
597
598
599
600
601
602
603
604
605
606
607
608
609
610
611
612
613
614
615
616
617
618
619
620
621
622
623
624
625
626
627
628
629
630
631
632
633
634
635
636
637
638
639
640
641
642
643
644
645
646
647
648
649
650
651
652
653
654
655
656
657
658
659
660
661
662
663
664
665
666
667
668
669
670
671
672
673
674
675
676
677
678
679
680
681
682
683
684
685
686
687
688
689
690
691
692
693
694
695
696
697
698
699
700
701
702
703
704
705
706
707
708
709
710
711
712
713
714
715
716
717
718
719
720
721
722
723
724
725
726
727
728
729
730
731
732
733
734
735
736
737
738
739
740
741
742
743
744
745
746
747
748
749
750
751
752
753
754
755
756
757
758
759
760
761
762
763
764
765
766
767
768
769
770
771
772
773
774
775
776
777
778
779
780
781
782
783
784
785
786
787
788
789
790
791
792
793
794
795
796
797
798
799
800
801
802
803
804
805
806
807
808
809
810
811
812
813
814
815
816
817
818
819
820
821
822
823
824
825
826
827
828
829
830
831
832
833
834
835
836
837
838
839
840
841
842
843
844
845
846
847
848
849
850
851
852
853
854
855
856
857
858
859
860
861
862
863
864
865
866
867
868
869
870
871
872
873
874
875
876
/*
 * Licensed to the Apache Software Foundation (ASF) under one or more
 * contributor license agreements.  See the NOTICE file distributed with
 * this work for additional information regarding copyright ownership.
 * The ASF licenses this file to You under the Apache License, Version 2.0
 * (the "License"); you may not use this file except in compliance with
 * the License.  You may obtain a copy of the License at
 *
 *      http://www.apache.org/licenses/LICENSE-2.0
 *
 * Unless required by applicable law or agreed to in writing, software
 * distributed under the License is distributed on an "AS IS" BASIS,
 * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
 * See the License for the specific language governing permissions and
 * limitations under the License.
 */

#ifndef AXUTIL_ERROR_H
#define AXUTIL_ERROR_H

#include <axutil_utils_defines.h>
#include <axutil_allocator.h>

#ifdef __cplusplus
extern "C"
{
#endif


#define AXUTIL_ERROR_MESSAGE_BLOCK_SIZE 512
#define AXUTIL_ERROR_LAST AXUTIL_ERROR_MESSAGE_BLOCK_SIZE
#define NEETHI_ERROR_CODES_START AXIS2_ERROR_LAST
#define RAMPART_ERROR_CODES_START (NEETHI_ERROR_CODES_START + AXUTIL_ERROR_MESSAGE_BLOCK_SIZE)
#define SANDESHA2_ERROR_CODES_START (RAMPART_ERROR_CODES_START + AXUTIL_ERROR_MESSAGE_BLOCK_SIZE)
#define SAVAN_ERROR_CODES_START (SANDESHA2_ERROR_CODES_START + AXUTIL_ERROR_MESSAGE_BLOCK_SIZE)
#define USER_ERROR_CODES_START (SAVAN_ERROR_CODES_START + AXUTIL_ERROR_MESSAGE_BLOCK_SIZE)

/* AXUTIL_ERROR_MAX define the maximum size of the error array */
#define AXUTIL_ERROR_MAX (USER_ERROR_CODES_START + AXUTIL_ERROR_MESSAGE_BLOCK_SIZE)


    /**
     * \brief Axis2 status codes
     *
     * Possible status values for Axis2
     */
    enum axis2_status_codes
    {
        /** Critical Failure state */
        AXIS2_CRITICAL_FAILURE = -1,

        /** Failure state */
        AXIS2_FAILURE,

        /** Success state */
        AXIS2_SUCCESS
    };

    /**
     * \brief Axis2 error codes
     *
     * Set of error codes for Axis2
     */
    enum axutil_error_codes
    {

        /** 
         * No error.
         * This must be the first error all the time and the assigned value of 0 
         * must not be changed as it is assumed in the error message array that 
         * the error list starts with a value of 0.
         * Further, none of the error codes in this enum should not be initialized 
         * to an arbitrary value as it is assumed in the implementation when mapping 
         * error codes to error messages that the error codes are contiguous and 
         * the last error value is always AXIS2_ERROR_LAST.
         */
        AXIS2_ERROR_NONE = 0,

        /*
         * Group - Common Errors
         */
        
        /** Out of memory */
        AXIS2_ERROR_NO_MEMORY,

        /** NULL parameter was passed when a non NULL parameter was expected */
        AXIS2_ERROR_INVALID_NULL_PARAM,

        /*
         * Group - core:addr
         */

        /*
         * Group - core:clientapi
         */

        /** Blocking invocation expects response */
        AXIS2_ERROR_BLOCKING_INVOCATION_EXPECTS_RESPONSE,

        /** cannot infer transport from URL */
        AXIS2_ERROR_CANNOT_INFER_TRANSPORT,

        /** Client side support only one configuration context */
        AXIS2_ERROR_CLIENT_SIDE_SUPPORT_ONLY_ONE_CONF_CTX,
        /* MEP cannot be NULL in MEP client */
        AXIS2_ERROR_MEP_CANNOT_BE_NULL_IN_MEP_CLIENT,
        /* MEP Mismatch */
        AXIS2_ERROR_MEP_MISMATCH_IN_MEP_CLIENT,

        /** Two way channel needs addressing module to be engaged */
        AXIS2_ERROR_TWO_WAY_CHANNEL_NEEDS_ADDRESSING,

        /** Unknown Transport */
        AXIS2_ERROR_UNKNOWN_TRANSPORT,
        /* Unsupported SOAP style */
        AXIS2_ERROR_UNSUPPORTED_TYPE,
        /* Options object is not set */
        AXIS2_ERROR_OPTIONS_OBJECT_IS_NOT_SET,

        /* Session Timeout */
        AXIS2_ERROR_SESSION_TIMEOUT,
        /*
         * Group - core:clientapi:diclient
         */

        /*
         * Group - core:context
         */

        /** Invalid SOAP envelope state */
        AXIS2_ERROR_INVALID_SOAP_ENVELOPE_STATE,

        /** Invalid message context state  */
        AXIS2_ERROR_INVALID_STATE_MSG_CTX,

        /** Service accessed has invalid state */
        AXIS2_ERROR_INVALID_STATE_SVC,

        /** Service group accessed has invalid state */
        AXIS2_ERROR_INVALID_STATE_SVC_GRP,

        /** Service not yet found */
        AXIS2_ERROR_SERVICE_NOT_YET_FOUND,

        /*
         * Group - core:deployment
         */
        /* Invalid phase found in phase validation */
        AXI2_ERROR_INVALID_PHASE,
        /* axis2.xml cannot be found */
        AXIS2_ERROR_CONFIG_NOT_FOUND,
        /* Data element of the OM Node is null */
        AXIS2_ERROR_DATA_ELEMENT_IS_NULL,
        /* In transport sender, Inflow is not allowed */
        AXIS2_ERROR_IN_FLOW_NOT_ALLOWED_IN_TRS_OUT,

        /** Invalid handler state */
        AXIS2_ERROR_INVALID_HANDLER_STATE,
        /* Invalid Module Ref encountered */
        AXIS2_ERROR_INVALID_MODUELE_REF,
        /* Invalid Module Reference by Operation */
        AXIS2_ERROR_INVALID_MODUELE_REF_BY_OP,
        /* Invalid Module Configuration */
        AXIS2_ERROR_INVALID_MODULE_CONF,
        /* Description Builder is found to be in invalid state */
        AXIS2_ERROR_INVALID_STATE_DESC_BUILDER,
        /* Module Not Found */
        AXIS2_ERROR_MODULE_NOT_FOUND,
        /* Module Validation Failed */
        AXIS2_ERROR_MODULE_VALIDATION_FAILED,

        /** Module xml file is not found in the given path */
        AXIS2_ERROR_MODULE_XML_NOT_FOUND_FOR_THE_MODULE,
        /* No dispatcher found */
        AXIS2_ERROR_NO_DISPATCHER_FOUND,
        /* Operation name is missing */
        AXIS2_ERROR_OP_NAME_MISSING,
        /* In transport Receiver, Outflow is not allowed */
        AXIS2_ERROR_OUT_FLOW_NOT_ALLOWED_IN_TRS_IN,
        /* Repository name cannot be NULL */
        AXIS2_ERROR_REPO_CAN_NOT_BE_NULL,
        /* Repository in path does not exist */
        AXIS2_ERROR_REPOSITORY_NOT_EXIST,
        /* Repository Listener initialization failed */
        AXIS2_ERROR_REPOS_LISTENER_INIT_FAILED,

        /** Service xml file is not found in the given path */
        AXIS2_ERROR_SERVICE_XML_NOT_FOUND,
        /* Service Name Error */
        AXIS2_ERROR_SVC_NAME_ERROR,
        /* Transport Sender Error */
        AXIS2_ERROR_TRANSPORT_SENDER_ERROR,
        /* Path to Config can not be NULL */
        AXIS2_PATH_TO_CONFIG_CAN_NOT_BE_NULL,
        /* Invalid Service */
        AXIS2_ERROR_INVALID_SVC,


        /*
         * Group - core:description
         */
        /* Cannot correlate message */
        AXIS2_ERROR_CANNOT_CORRELATE_MSG,

        /** Could not Map the MEP URI to a axis MEP constant value */
        AXIS2_ERROR_COULD_NOT_MAP_MEP_URI_TO_MEP_CONSTANT,
        /* Invalid message addition , operation context completed */
        AXIS2_ERROR_INVALID_MESSAGE_ADDITION,

        /** Module description accessed has invalid state */
        AXIS2_ERROR_INVALID_STATE_MODULE_DESC,

        /** Parameter container not set */
        AXIS2_ERROR_INVALID_STATE_PARAM_CONTAINER,

        /** module has already engaged to the op op terminated !!! */
        AXIS2_ERROR_MODULE_ALREADY_ENGAGED_TO_OP,

        /** module has already been engaged on the service.Operation terminated !!! */
        AXIS2_ERROR_MODULE_ALREADY_ENGAGED_TO_SVC,

        /** module has already been engaged on the service. Group Operation terminated !!! */
        AXIS2_ERROR_MODULE_ALREADY_ENGAGED_TO_SVC_GRP,

        /** Parameter locked, Cannot override */
        AXIS2_ERROR_PARAMETER_LOCKED_CANNOT_OVERRIDE,
        /* schema list is empty or NULL in svc */
        AXIS2_ERROR_EMPTY_SCHEMA_LIST,
        /*
         * Group - core:engine
         */

        /** Both before and after handlers cannot be the same */
        AXIS2_ERROR_BEFORE_AFTER_HANDLERS_SAME,

        /** Invalid handler rules  */
        AXIS2_ERROR_INVALID_HANDLER_RULES,
        /* Invalid Module */
        AXIS2_ERROR_INVALID_MODULE,

        /** Invalid first handler for phase  */
        AXIS2_ERROR_INVALID_PHASE_FIRST_HANDLER,

        /** Invalid last handler for phase  */
        AXIS2_ERROR_INVALID_PHASE_LAST_HANDLER,

        /** Invalid engine config state */
        AXIS2_ERROR_INVALID_STATE_CONF,

        /** Message context processing a fault already */
        AXIS2_ERROR_INVALID_STATE_PROCESSING_FAULT_ALREADY,

        /** fault to field not specified in message context */
        AXIS2_ERROR_NOWHERE_TO_SEND_FAULT,

        /** Only one handler allowed for phase, adding handler is not allowed  */
        AXIS2_ERROR_PHASE_ADD_HANDLER_INVALID,

        /** First handler of phase already set */
        AXIS2_ERROR_PHASE_FIRST_HANDLER_ALREADY_SET,

        /** Last handler of phase already set */
        AXIS2_ERROR_PHASE_LAST_HANDLER_ALREADY_SET,

        /**Two service can not have same name, a service with same name already
           exist in the system */
        AXIS2_ERROR_TWO_SVCS_CANNOT_HAVE_SAME_NAME,
        /*
         * Group - core:phase resolver
         */
        /* Invalid Module Ref */
        AXIS2_ERROR_INVALID_MODULE_REF,
        /* Invalid Phase */
        AXIS2_ERROR_INVALID_PHASE,
        /* No Transport Receiver is configured */
        AXIS2_ERROR_NO_TRANSPORT_IN_CONFIGURED,
        /* No Transport Sender is configured */
        AXIS2_ERROR_NO_TRANSPORT_OUT_CONFIGURED,
        /* Phase is not specified */
        AXIS2_ERROR_PHASE_IS_NOT_SPECIFED,
        /* Service module can not refer global phase */
        AXIS2_ERROR_SERVICE_MODULE_CAN_NOT_REFER_GLOBAL_PHASE,

        /*
         * Group - core:wsdl
         */

        /**  Schema is NULL */
        AXIS2_ERROR_WSDL_SCHEMA_IS_NULL,
        /*
         * Group - core:receivers
         */
        /* Om Element has invalid state */
        AXIS2_ERROR_OM_ELEMENT_INVALID_STATE,
        /* Om Elements do not match */
        AXIS2_ERROR_OM_ELEMENT_MISMATCH,
        /* RPC style SOAP body don't have a child element */
        AXIS2_ERROR_RPC_NEED_MATCHING_CHILD,
        /* Operation Description has unknown operation style  */
        AXIS2_ERROR_UNKNOWN_STYLE,
        /* String does not represent a valid NCName */
        AXIS2_ERROR_STRING_DOES_NOT_REPRESENT_A_VALID_NC_NAME,
        /*
         * Group - core:transport
         */

        /*
         * Group - core:transport:http
         */
        /* Error occurred in transport */
        AXIS2_ERROR_HTTP_CLIENT_TRANSPORT_ERROR,

        /** A read attempt(HTTP) for the reply without sending the request */
        AXIS2_ERROR_HTTP_REQUEST_NOT_SENT,

        /** Invalid string passed as a http header */
        AXIS2_ERROR_INVALID_HEADER,
        /* Invalid header start line (request line or response line) */
        AXIS2_ERROR_INVALID_HTTP_HEADER_START_LINE,
        /* Transport protocol is unsupported by axis2 */
        AXIS2_ERROR_INVALID_TRANSPORT_PROTOCOL,

        /** No body present in the request or the response */
        AXIS2_ERROR_NULL_BODY,
        /* A valid conf_ctx is reqd for the http worker */
        AXIS2_ERROR_NULL_CONFIGURATION_CONTEXT,
        /* HTTP version cannot be null in the status/request line */
        AXIS2_ERROR_NULL_HTTP_VERSION,
        /* Input stream is NULL in msg_ctx */
        AXIS2_ERROR_NULL_IN_STREAM_IN_MSG_CTX,
        /* OM output is NULL */
        AXIS2_ERROR_NULL_OM_OUTPUT,
        /* Null SOAP envelope in msg_ctx */
        AXIS2_ERROR_NULL_SOAP_ENVELOPE_IN_MSG_CTX,
        /* NULL stream in the http chucked stream */
        AXIS2_ERROR_NULL_STREAM_IN_CHUNKED_STREAM,
        /* We got a NULL stream in the response body */
        AXIS2_ERROR_NULL_STREAM_IN_RESPONSE_BODY,

        /** URL NULL in http client */
        AXIS2_ERROR_NULL_URL,
        /** Invalid URL format */
        AXIS2_ERROR_INVALID_URL_FORMAT,
        /** Duplicate URL REST Mapping */
        AXIS2_ERROR_DUPLICATE_URL_REST_MAPPING,
        /* We need transport_info in msg_ctx */
        AXIS2_ERROR_OUT_TRNSPORT_INFO_NULL,
        /*Content-Type header missing in HTTP response" */
        AXIS2_ERROR_RESPONSE_CONTENT_TYPE_MISSING,

        /** Response timed out */
        AXIS2_ERROR_RESPONSE_TIMED_OUT,

        /** Server shutdown*/
        AXIS2_ERROR_RESPONSE_SERVER_SHUTDOWN,

        /** SOAP envelope or SOAP body NULL */
        AXIS2_ERROR_SOAP_ENVELOPE_OR_SOAP_BODY_NULL,
        /* Error occurred in SSL engine */
        AXIS2_ERROR_SSL_ENGINE,
        /* Either axis2c cannot find certificates or the env variable is not set */
        AXIS2_ERROR_SSL_NO_CA_FILE,
        /* Error in writing the response in response writer */
        AXIS2_ERROR_WRITING_RESPONSE,
        /* Required parameter is missing in URL encoded request */
        AXIS2_ERROR_REQD_PARAM_MISSING,
        /* Unsupported schema type in REST */
        AXIS2_ERROR_UNSUPPORTED_SCHEMA_TYPE,
        /* Service or operation not found */
        AXIS2_ERROR_SVC_OR_OP_NOT_FOUND,
        /*
         * Group - mod_addr
         */
        AXIS2_ERROR_NO_MSG_INFO_HEADERS,
        /*
         * Group - platforms
         */

        /*
         * Group - utils
         */

        /** Could not open the axis2 file */
        AXIS2_ERROR_COULD_NOT_OPEN_FILE,
        /* Failed in creating DLL */
        AXIS2_ERROR_DLL_CREATE_FAILED,
        /* DLL loading failed */
        AXIS2_ERROR_DLL_LOADING_FAILED,

        /** Environment passed is null */
        AXIS2_ERROR_ENVIRONMENT_IS_NULL,
        /* Axis2 File does not have a file name */
        AXIS2_ERROR_FILE_NAME_NOT_SET,
        /* DLL Description Info Object has invalid state */
        AXIS2_ERROR_INVALID_STATE_DLL_DESC,
        /* Failed in creating Handler */
        AXIS2_ERROR_HANDLER_CREATION_FAILED,

        /** Array list index out of bounds */
        AXIS2_ERROR_INDEX_OUT_OF_BOUNDS,

        /** Invalid IP or host name */
        AXIS2_ERROR_INVALID_ADDRESS,

        /** Trying to do operation on invalid file descriptor */
        AXIS2_ERROR_INVALID_FD,

        /** Trying to do operation on closed/not opened socket */
        AXIS2_ERROR_INVALID_SOCKET,

        /** Parameter not set */
        AXIS2_ERROR_INVALID_STATE_PARAM,
        /* Module create failed */
        AXIS2_ERROR_MODULE_CREATION_FAILED,
        /* Failed in creating Message Receiver */
        AXIS2_ERROR_MSG_RECV_CREATION_FAILED,

        /** No such element */
        AXIS2_ERROR_NO_SUCH_ELEMENT,

        /** Socket bind failed. Another process may be already using this port*/
        AXIS2_ERROR_SOCKET_BIND_FAILED,

        /** Error creating a socket. Most probably error returned by OS */
        AXIS2_ERROR_SOCKET_ERROR,
        /* Listen failed for the server socket */
        AXIS2_ERROR_SOCKET_LISTEN_FAILED,
        /* Failed in creating Service Skeleton */
        AXIS2_ERROR_SVC_SKELETON_CREATION_FAILED,
        /* Failed in creating Transport Receiver */
        AXIS2_ERROR_TRANSPORT_RECV_CREATION_FAILED,
        /* Failed in creating Transport Sender */
        AXIS2_ERROR_TRANSPORT_SENDER_CREATION_FAILED,
        /* Generation of platform dependent uuid failed */
        AXIS2_ERROR_UUID_GEN_FAILED,
        /* Possible deadlock */
        AXIS2_ERROR_POSSIBLE_DEADLOCK,
        /*
         * Group - WSDL
         */
        /* Interface or Port Type not found for the binding */
        AXIS2_ERROR_INTERFACE_OR_PORT_TYPE_NOT_FOUND_FOR_THE_BINDING,
        /* Interfaces or Ports not found for the partially built WOM */
        AXIS2_ERROR_INTERFACES_OR_PORTS_NOT_FOUND_FOR_PARTIALLY_BUILT_WOM,

        /** Wsdl op accessed has invalid state */
        AXIS2_ERROR_INVALID_STATE_WSDL_OP,

        /** Wsdl Service accessed has invalid state */
        AXIS2_ERROR_INVALID_STATE_WSDL_SVC,
        /* Cannot determine MEP */
        AXIS2_ERROR_MEP_CANNOT_DETERMINE_MEP,
        /* Wsdl binding name cannot be NULL(Is required) */
        AXIS2_ERROR_WSDL_BINDING_NAME_IS_REQUIRED,
        /* PortType/Interface name cannot be null(Required) */
        AXIS2_ERROR_WSDL_INTERFACE_NAME_IS_REQUIRED,
        /* Wsdl parsing has resulted in an invalid state */
        AXIS2_ERROR_WSDL_PARSER_INVALID_STATE,
        /* Wsdl svc name cannot be null(Required) */
        AXIS2_ERROR_WSDL_SVC_NAME_IS_REQUIRED,
        /*
         * Group - xml
         */

        /*
         * Group - xml:attachments
         */
        /** Attachment is missing */
        AXIS2_ERROR_ATTACHMENT_MISSING,

        /*
         * Group - xml:om
         */

        /** Builder done with pulling. Cannot pull any more */
        AXIS2_ERROR_BUILDER_DONE_CANNOT_PULL,

        /** Discard failed because the builder state is invalid */
        AXIS2_ERROR_INVALID_BUILDER_STATE_CANNOT_DISCARD,

        /** Builder's last node is NULL when it is not supposed to be NULL */
        AXIS2_ERROR_INVALID_BUILDER_STATE_LAST_NODE_NULL,

        /** Document root is NULL, when it is not supposed to be NULL */
        AXIS2_ERROR_INVALID_DOCUMENT_STATE_ROOT_NULL,

        /** Undefined namespace used */
        AXIS2_ERROR_INVALID_DOCUMENT_STATE_UNDEFINED_NAMESPACE,

        /** error a namespace should have a valid uri */
        AXIS2_ERROR_INVALID_EMPTY_NAMESPACE_URI,

        /** next method has not been called so cannot remove
        an element before calling next valid for any om iterator */
        AXIS2_ERROR_ITERATOR_NEXT_METHOD_HAS_NOT_YET_BEEN_CALLED,

        /** remove method has already been called once so cannot remove till
        next method is called valid for any om children iterator*/
        AXIS2_ERROR_ITERATOR_REMOVE_HAS_ALREADY_BEING_CALLED,

        /** axiom_xml_reader returned NULL element */
        AXIS2_ERROR_XML_READER_ELEMENT_NULL,

        /** axiom_xml_reader returned NULL value */
        AXIS2_ERROR_XML_READER_VALUE_NULL,
        /*
         * Group - xml:parser
         */

        /** error occurred creating xml stream reader */
        AXIS2_ERROR_CREATING_XML_STREAM_READER,

        /** error occurred creating xml stream writer */
        AXIS2_ERROR_CREATING_XML_STREAM_WRITER,

        /** error in writing attribute */
        AXIS2_ERROR_WRITING_ATTRIBUTE,

        /** error in writing attribute with namespace */
        AXIS2_ERROR_WRITING_ATTRIBUTE_WITH_NAMESPACE,

        /** error in writing attribute with namespace prefix */
        AXIS2_ERROR_WRITING_ATTRIBUTE_WITH_NAMESPACE_PREFIX,

        /** error in writing comment */
        AXIS2_ERROR_WRITING_COMMENT,

        /** error in writing data source*/
        AXIS2_ERROR_WRITING_DATA_SOURCE,

        /** error in writing default namespace */
        AXIS2_ERROR_WRITING_DEFAULT_NAMESPACE,

        /** error in writing DDT */
        AXIS2_ERROR_WRITING_DTD,

        /** error occurred in writing empty element */
        AXIS2_ERROR_WRITING_EMPTY_ELEMENT,

        /** error occurred in writing empty element with namespace */
        AXIS2_ERROR_WRITING_EMPTY_ELEMENT_WITH_NAMESPACE,

        /** error in writing empty element with namespace prefix */
        AXIS2_ERROR_WRITING_EMPTY_ELEMENT_WITH_NAMESPACE_PREFIX,

        /** error occurred in writing end document in xml writer */
        AXIS2_ERROR_WRITING_END_DOCUMENT,

        /** error occurred in writing end element in xml writer */
        AXIS2_ERROR_WRITING_END_ELEMENT,

        /** error in writing processing instruction */
        AXIS2_ERROR_WRITING_PROCESSING_INSTRUCTION,

        /** error occurred in writing start element in start document in xml writer */
        AXIS2_ERROR_WRITING_START_DOCUMENT,

        /** error occurred in writing start element in xml writer */
        AXIS2_ERROR_WRITING_START_ELEMENT,

        /** error occurred in writing start element with namespace in xml writer*/
        AXIS2_ERROR_WRITING_START_ELEMENT_WITH_NAMESPACE,

        /** error occurred in writing start element with namespace prefix */
        AXIS2_ERROR_WRITING_START_ELEMENT_WITH_NAMESPACE_PREFIX,

        /** error in writing cdata section */
        AXIS2_ERROR_WRITING_CDATA,

        /** AXIS2_XML_PARSER_TYPE_BUFFER or AXIS2_XML_PARSER_TYPE_DOC is expected */
        AXIS2_ERROR_XML_PARSER_INVALID_MEM_TYPE,

        /*
         * Group - xml:SOAP
         */

        /** invalid type passed */
        AXIS2_ERROR_INVALID_BASE_TYPE,

        /** invalid SOAP namespace uri found */
        AXIS2_ERROR_INVALID_SOAP_NAMESPACE_URI,

        /** Invalid SOAP version */
        AXIS2_ERROR_INVALID_SOAP_VERSION,
        /* invalid value found in must understand attribute */
        AXIS2_ERROR_INVALID_VALUE_FOUND_IN_MUST_UNDERSTAND,
        /*multiple code elements encountered in SOAP fault element */
        AXIS2_ERROR_MULTIPLE_CODE_ELEMENTS_ENCOUNTERED,
        /*multiple detail elements encountered in SOAP fault element */
        AXIS2_ERROR_MULTIPLE_DETAIL_ELEMENTS_ENCOUNTERED,
        /*multiple node elements encountered in SOAP fault element */
        AXIS2_ERROR_MULTIPLE_NODE_ELEMENTS_ENCOUNTERED,
        /*multiple reason elements encountered in SOAP fault element */
        AXIS2_ERROR_MULTIPLE_REASON_ELEMENTS_ENCOUNTERED,
        /*multiple role elements encountered in SOAP fault element */
        AXIS2_ERROR_MULTIPLE_ROLE_ELEMENTS_ENCOUNTERED,
        /*multiple sub code values encountered in SOAP fault element */
        AXIS2_ERROR_MULTIPLE_SUB_CODE_VALUES_ENCOUNTERED,
        /* multiple value elements encountered */
        AXIS2_ERROR_MULTIPLE_VALUE_ENCOUNTERED_IN_CODE_ELEMENT,
        /* must understand attribute should have values of true or false */
        AXIS2_ERROR_MUST_UNDERSTAND_SHOULD_BE_1_0_TRUE_FALSE,

        /** om element is expected */
        AXIS2_ERROR_OM_ELEMENT_EXPECTED,
        /* processing SOAP 1.1 fault value element should have only
           text as its children */
        AXIS2_ERROR_ONLY_CHARACTERS_ARE_ALLOWED_HERE,

        /** only one SOAP fault allowed in SOAP body */
        AXIS2_ERROR_ONLY_ONE_SOAP_FAULT_ALLOWED_IN_BODY,
        /*SOAP 1.1 fault actor element should not have child elements */
        AXIS2_ERROR_SOAP11_FAULT_ACTOR_SHOULD_NOT_HAVE_CHILD_ELEMENTS,

        /** SOAP builder found a child element other than header or body in envelope
        element */
        AXIS2_ERROR_SOAP_BUILDER_ENVELOPE_CAN_HAVE_ONLY_HEADER_AND_BODY,

        /** SOAP builder encountered body element first and header next */
        AXIS2_ERROR_SOAP_BUILDER_HEADER_BODY_WRONG_ORDER,

        /** SOAP builder multiple body elements encountered */
        AXIS2_ERROR_SOAP_BUILDER_MULTIPLE_BODY_ELEMENTS_ENCOUNTERED,

        /** SOAP builder encountered multiple headers */
        AXIS2_ERROR_SOAP_BUILDER_MULTIPLE_HEADERS_ENCOUNTERED,
        /*SOAP fault code element should a mandatory fault value element */
        AXIS2_ERROR_SOAP_FAULT_CODE_DOES_NOT_HAVE_A_VALUE,
        /*SOAP fault reason element should have a text */
        AXIS2_ERROR_SOAP_FAULT_REASON_ELEMENT_SHOULD_HAVE_A_TEXT,
        /*SOAP fault role element should have a text value */
        AXIS2_ERROR_SOAP_FAULT_ROLE_ELEMENT_SHOULD_HAVE_A_TEXT,
        /* SOAP fault value should be present before sub code element in SOAP fault code */
        AXIS2_ERROR_SOAP_FAULT_VALUE_SHOULD_BE_PRESENT_BEFORE_SUB_CODE,

        /** SOAP message does not have an envelope element */
        AXIS2_ERROR_SOAP_MESSAGE_DOES_NOT_CONTAIN_AN_ENVELOPE,
        /*SOAP message first element must contain a localname */
        AXIS2_ERROR_SOAP_MESSAGE_FIRST_ELEMENT_MUST_CONTAIN_LOCAL_NAME,
        /* this localname is not supported inside a reason element */
        AXIS2_ERROR_THIS_LOCALNAME_IS_NOT_SUPPORTED_INSIDE_THE_REASON_ELEMENT,
        /*this localname is not supported inside a sub code element */
        AXIS2_ERROR_THIS_LOCALNAME_IS_NOT_SUPPORTED_INSIDE_THE_SUB_CODE_ELEMENT,
        /*this localname is not supported inside the code element */
        AXIS2_ERROR_THIS_LOCALNAME_NOT_SUPPORTED_INSIDE_THE_CODE_ELEMENT,
        /*transport level identified SOAP version does not match with the SOAP version */
        AXIS2_ERROR_TRANSPORT_LEVEL_INFORMATION_DOES_NOT_MATCH_WITH_SOAP,
        /*unsupported element in SOAP fault element */
        AXIS2_ERROR_UNSUPPORTED_ELEMENT_IN_SOAP_FAULT_ELEMENT,
        /*wrong element order encountered */
        AXIS2_ERROR_WRONG_ELEMENT_ORDER_ENCOUNTERED,
        /*
         * Group - services
         */

        /** Invalid XML format in request */
        AXIS2_ERROR_SVC_SKEL_INVALID_XML_FORMAT_IN_REQUEST,

        /** Input OM node NULL, Probably error in SOAP request */
        AXIS2_ERROR_SVC_SKEL_INPUT_OM_NODE_NULL,

        /** Invalid parameters for service operation in SOAP request */
        AXIS2_ERROR_SVC_SKEL_INVALID_OPERATION_PARAMETERS_IN_SOAP_REQUEST,

        /*
         * Group - repos
         */
        /* not authenticated */
        AXIS2_ERROR_REPOS_NOT_AUTHENTICATED,
        /* unsupported mode */
        AXIS2_ERROR_REPOS_UNSUPPORTED_MODE,
        /* expired */
        AXIS2_ERROR_REPOS_EXPIRED,
        /* not implemented */
        AXIS2_ERROR_REPOS_NOT_IMPLEMENTED,
        /* not found */
        AXIS2_ERROR_REPOS_NOT_FOUND,
        /* bad search text */
        AXIS2_ERROR_REPOS_BAD_SEARCH_TEXT,

        /*
         *Group - Neethi
         */
        /*  No Namespace */
        AXIS2_ERROR_NEETHI_ELEMENT_WITH_NO_NAMESPACE,
        /*Policy cannot be created from element */
        AXIS2_ERROR_NEETHI_POLICY_CREATION_FAILED_FROM_ELEMENT,
        /*All Cannot be created from element */
        AXIS2_ERROR_NEETHI_ALL_CREATION_FAILED_FROM_ELEMENT,
        /*Exactly one Cannot be created element */
        AXIS2_ERROR_NEETHI_EXACTLYONE_CREATION_FAILED_FROM_ELEMENT,
        /*Reference Cannot be created from element */
        AXIS2_ERROR_NEETHI_REFERENCE_CREATION_FAILED_FROM_ELEMENT,
        /*Assertion Cannot be created from element */
        AXIS2_ERROR_NEETHI_ASSERTION_CREATION_FAILED_FROM_ELEMENT,
        /*All creation failed */
        AXIS2_ERROR_NEETHI_ALL_CREATION_FAILED,
        /*Exactly one creation failed */
        AXIS2_ERROR_NEETHI_EXACTLYONE_CREATION_FAILED,
        /*Policy Creation failed */
        AXIS2_ERROR_NEETHI_POLICY_CREATION_FAILED,
        /*Normalization failed */
        AXIS2_ERROR_NEETHI_NORMALIZATION_FAILED,
        /*Merging Failed. Wrong Input */
        AXIS2_ERROR_NEETHI_WRONG_INPUT_FOR_MERGE,
        /*Merging Failed. Cross Product failed */
        AXIS2_ERROR_NEETHI_CROSS_PRODUCT_FAILED,
        /*No Children Policy Components */
        AXIS2_ERROR_NEETHI_NO_CHILDREN_POLICY_COMPONENTS,
        /*Uri Not specified */
        AXIS2_ERROR_NEETHI_URI_NOT_SPECIFIED,
        /*Policy NULL for the given uri */
        AXIS2_ERROR_NEETHI_NO_ENTRY_FOR_THE_GIVEN_URI,
        /*Exactly one not found in Normalized policy */
        AXIS2_ERROR_NEETHI_EXACTLYONE_NOT_FOUND_IN_NORMALIZED_POLICY,
        /*Exactly one is Empty */
        AXIS2_ERROR_NEETHI_EXACTLYONE_IS_EMPTY,
        /*Exactly one not found while getting cross product */
        AXIS2_ERROR_NEETHI_ALL_NOT_FOUND_WHILE_GETTING_CROSS_PRODUCT,
        /*Unknown Assertion*/
        AXIS2_ERROR_NEETHI_UNKNOWN_ASSERTION,
        /** 
         * The following has to be the last error value all the time.
         * All other error codes should appear above this.
         * AXIS2_ERROR_LAST is used to track the number of error codes present
         * for the purpose of sizing the error messages array.
         */
        AXIS2_ERROR_LAST
    };

    struct axutil_error;
    typedef enum axis2_status_codes axis2_status_codes_t;
    typedef enum axutil_error_codes axutil_error_codes_t;

    /**
     * @defgroup axutil_error error
     * @ingroup axis2_util
     * @{
     */

    /**
     * Axutil error struct.
     * Error holds the last error number, the status code as well as the 
     * last error message.
     */
    typedef struct axutil_error
    {
        /** 
         * Memory allocator associated with the error struct. 
         * It is this allocator that would be used to allocate memory 
         * for the error struct instance in create method.
         */
        axutil_allocator_t *allocator;

        /** Last error number. */
        int error_number;
        /** Last status code. */
        int status_code;
        /** 
         * Error message. This could be set to a custom message to be 
         * returned, instead of standard errors set in the error messages 
         * array by the axutil_error_init function call.
         */
        axis2_char_t *message;
    }
    axutil_error_t;

    /**
     * Gets the error message corresponding to the last error occurred.
     * @param error pointer to error struct 
     * @return string representing the error message for the last error occurred
     */
    AXIS2_EXTERN const axis2_char_t *AXIS2_CALL
    axutil_error_get_message(
        const struct axutil_error *error);

    /**
     * This function is supposed to be overridden in an extended error structure.
     * For example in Sandesha error structure this function is overridden so that
     * errors of axis2 range call the get_message function of error struct but
     * errors of sandesha2 range get the messages from an array of that struct.
     * @return error message for the extended struct.
     * @deprecated this function is not in use, so should be removed.
     */
    /*AXIS2_EXTERN const axis2_char_t *AXIS2_CALL
    axutil_error_get_extended_message(
        const struct axutil_error *error);*/

    /**
     * Sets the error number.
     * @param error pointer to error struct 
     * @param error_number error number to be set
     * @return AXIS2_SUCCESS on success, else AXIS2_FAILURE
     */
    AXIS2_EXTERN axis2_status_t AXIS2_CALL
    axutil_error_set_error_number(
        struct axutil_error *error,
        axutil_error_codes_t error_number);

    /**
     * Sets the status code.
     * @param error pointer to error struct 
     * @param status_code status code to be set
     * @return AXIS2_SUCCESS on success, else AXIS2_FAILURE
     */
    AXIS2_EXTERN axis2_status_t AXIS2_CALL
    axutil_error_set_status_code(
        struct axutil_error *error,
        axis2_status_codes_t status_code);

    /**
     * Gets the status code.
     * @param error pointer to error struct 
     * @return last status code set on error struct
     */
    AXIS2_EXTERN axis2_status_t AXIS2_CALL
    axutil_error_get_status_code(
        struct axutil_error *error);

    /**
     * Sets error message to the given value.
     * @param error pointer to error struct 
     * @param message error message to be set
     * @return AXIS2_SUCCESS on success, else AXIS2_FAILURE
     */
    AXIS2_EXTERN axis2_status_t AXIS2_CALL
    axutil_error_set_error_message(
        struct axutil_error *error,
        axis2_char_t *message);

    /**
     * Initializes the axutil_error_messages array. This array holds the 
     * error messages that corresponds to the error codes. This function
     * must be call before using the error struct instance.
     * @return AXIS2_SUCCESS on success, else AXIS2_FAILURE
     */
    AXIS2_EXTERN axis2_status_t AXIS2_CALL
    axutil_error_init(void);

    /**
     * De-allocates an error struct instance.
     * @param error pointer to error struct instance to be freed.
     * @return void
     */
    AXIS2_EXTERN void AXIS2_CALL
    axutil_error_free(
        struct axutil_error *error);

/** 
 * @deprecated The following macros are no longer useful as we can use the 
 * function calls directly. Hence these macros should be removed 
 */
  
#define AXIS2_ERROR_FREE(error) axutil_error_free(error)

#define AXIS2_ERROR_GET_MESSAGE(error) \
    axutil_error_get_message(error)

#define AXIS2_ERROR_SET_MESSAGE(error, message) \
    axutil_error_set_error_message(error, message)

#define AXIS2_ERROR_SET_ERROR_NUMBER(error, error_number) \
        axutil_error_set_error_number(error, error_number)

#define AXIS2_ERROR_SET_STATUS_CODE(error, status_code) \
        axutil_error_set_status_code(error, status_code)

#define AXIS2_ERROR_GET_STATUS_CODE(error) axutil_error_get_status_code(error)

    /** @} */

#ifdef __cplusplus
}
#endif

#endif                          /* AXIS2_ERROR_H */