1 /*
2  * Portions of this file Copyright 1999-2005 University of Chicago
3  * Portions of this file Copyright 1999-2005 The University of Southern California.
4  *
5  * This file or a portion of this file is licensed under the
6  * terms of the Globus Toolkit Public License, found at
7  * http://www.globus.org/toolkit/download/license.html.
8  * If you redistribute this file, with or without
9  * modifications, you must include this notice in the file.
10  */
11
12 #include "globus_i_xsd.h"
13 #include "xsd_ID.h"
14
15 GLOBUS_I_XSD_DEFINE_QNAME(xsd, ID);
16 GLOBUS_I_XSD_DEFINE_TYPE_INFO(xsd_ID);
17 0 GLOBUS_I_XSD_DEFINE_TYPE_FUNCTIONS(xsd_ID);
18 0 GLOBUS_I_XSD_DEFINE_INIT_CONTENTS_GENERIC(xsd_ID);
19
20 void
21 xsd_ID_destroy_contents(
22     xsd_ID *                        instance)
23 {
24 0     GlobusFuncName(xsd_ID_destroy_contents);
25 0     GlobusSoapMessageDebugEnter();
26
27 0     if(*instance)
28     {
29 0         free(*instance);
30 0         *instance = NULL;
31     }
32
33 0     GlobusSoapMessageDebugExit();
34 }
35
36 globus_result_t
37 xsd_ID_copy_contents(
38     xsd_ID *                        dest,
39     const xsd_ID *                  src)
40 0 {
41 0     globus_result_t                     result = GLOBUS_SUCCESS;
42 0     GlobusFuncName(xsd_ID_copy_contents);
43 0     GlobusSoapMessageDebugEnter();
44
45 0     if(dest)
46     {
47 0         if(!src || !*src)
48         {
49 0             *dest = NULL;
50         }
51         else
52         {
53 0             *dest = globus_libc_strdup(*src);
54 0             if(!*dest)
55             {
56 0                 result = GlobusSoapMessageErrorOutOfMemory;
57             }
58         }
59     }
60
61 0     GlobusSoapMessageDebugExit();
62 0     return result;
63 }
64
65 globus_result_t
66 xsd_ID_serialize_contents(
67     xsd_QName *                         element,
68     xsd_ID *                        instance,
69     globus_soap_message_handle_t        message_handle,
70     globus_xsd_element_options_t        options)
71 0 {
72 0     globus_result_t                     result = GLOBUS_SUCCESS;
73 0     GlobusFuncName(xsd_ID_serialize_contents);
74 0     GlobusSoapMessageDebugEnter();
75
76     /* serialize contents of type */
77 0     result = globus_soap_message_serialize_string(
78         message_handle, instance);
79
80 0     GlobusSoapMessageDebugExit();
81 0     return result;
82 }
83
84 globus_result_t
85 xsd_ID_deserialize_contents(
86     xsd_QName *                         eqn,
87     xsd_ID *                        instance,
88     globus_soap_message_handle_t        message_handle,
89     globus_xsd_element_options_t        options)
90 0 {
91 0     globus_result_t                     result = GLOBUS_SUCCESS;
92 0     GlobusFuncName(xsd_ID_deserialize_contents);
93 0     GlobusSoapMessageDebugEnter();
94     
95 0     result = globus_soap_message_deserialize_string(
96         message_handle, instance);
97
98 0     GlobusSoapMessageDebugExit();
99 0     return result;
100 }
101
102 globus_result_t
103 xsd_ID_serialize_attribute(
104     xsd_QName *                         element_qname,
105     xsd_ID *                        instance,
106     globus_soap_message_handle_t        message_handle,
107     globus_xsd_element_options_t        options)
108 0 {
109 0     globus_result_t                     result = GLOBUS_SUCCESS;
110 0     GlobusFuncName(xsd_ID_serialize_attribute);
111 0     GlobusSoapMessageDebugEnter();
112
113 0     result = globus_soap_message_serialize_string_attribute(
114         message_handle, element_qname, instance);
115 0     if(result != GLOBUS_SUCCESS)
116     {
117 0         result = GlobusSoapMessageErrorSerializeFailed(
118             result, NULL, element_qname);
119         goto exit;
120     }
121
122  exit:
123
124 0     GlobusSoapMessageDebugExit();
125 0     return result;
126 }
127
128 globus_result_t
129 xsd_ID_deserialize_attribute(
130     xsd_QName *                         element_qname,
131     xsd_ID *                        ip,
132     globus_soap_message_handle_t        message_handle,
133     globus_xsd_element_options_t        options)
134 0 {
135 0     globus_result_t                 result = GLOBUS_SUCCESS;
136 0     GlobusFuncName(xsd_ID_deserialize_attribute);
137 0     GlobusSoapMessageDebugEnter();
138
139 0     result = globus_soap_message_deserialize_string_attribute(
140         message_handle, element_qname, ip);
141 0     if(GlobusSoapMessageStatusAttributeNotFoundCheck(result))
142     {
143 0         result = GLOBUS_SUCCESS;
144 0         goto exit;
145     }
146
147 0     if(result != GLOBUS_SUCCESS)
148     {
149 0         goto error_exit;
150     }
151
152 0     goto exit;
153
154  error_exit:
155
156 0     GlobusSoapMessageErrorDeserializeFailed(result, element_qname);
157
158  exit:
159
160 0     GlobusSoapMessageDebugExit();
161 0     return result;
162 }
163
164 globus_result_t
165 xsd_ID_deserialize_attribute_pointer(
166     xsd_QName *                         element_qname,
167     xsd_ID **                       ip,
168     globus_soap_message_handle_t        message_handle,
169     globus_xsd_element_options_t        options)
170 0 {
171 0     xsd_ID *                        instance = NULL;
172 0     globus_result_t                     result = GLOBUS_SUCCESS;
173 0     GlobusFuncName(xsd_ID_deserialize_attribute_pointer);
174 0     GlobusSoapMessageDebugEnter();
175
176 0     *ip = NULL;
177
178 0     result = xsd_ID_init(&instance);
179 0     if(result != GLOBUS_SUCCESS)
180     {
181 0         goto error_exit;
182     }
183
184 0     result = globus_soap_message_deserialize_string_attribute(
185         message_handle, element_qname, instance);
186 0     if(GlobusSoapMessageStatusAttributeNotFoundCheck(result))
187     {
188 0 xsd_ID_destroy(instance);
189 0         result = GLOBUS_SUCCESS;
190 0         goto exit;
191     }
192
193 0     if(result != GLOBUS_SUCCESS)
194     {
195 0         goto error_exit;
196     }
197
198 0     *ip = instance;
199
200 0     goto exit;
201
202  error_exit:
203
204 0     GlobusSoapMessageErrorDeserializeFailed(result, element_qname);
205
206  exit:
207
208 0     if(result != GLOBUS_SUCCESS && instance)
209     {
210 0         xsd_ID_destroy(instance);
211 0         *ip = NULL;
212     }
213
214 0     GlobusSoapMessageDebugExit();
215 0     return result;