diff options
Diffstat (limited to 'test')
-rw-r--r-- | test/find_policy.c | 350 |
1 files changed, 175 insertions, 175 deletions
diff --git a/test/find_policy.c b/test/find_policy.c index b5c8a63..11c07ea 100644 --- a/test/find_policy.c +++ b/test/find_policy.c @@ -29,11 +29,11 @@ #include <stdio.h> #include <axiom_xml_writer.h> #include <axutil_env.h> -
axiom_node_t * return_policy_element(axis2_char_t * name, +axiom_node_t * return_policy_element(axis2_char_t * name, const axutil_env_t * env, axis2_char_t * wsdl_name); -
axis2_char_t * get_policy_ref(axiom_node_t * node, const axutil_env_t * env); -
void get_all_policy( +axis2_char_t * get_policy_ref(axiom_node_t * node, const axutil_env_t * env); +void get_all_policy( axis2_char_t * element_name, const axutil_env_t * env, axutil_array_list_t * policy_node_list, @@ -44,260 +44,260 @@ Define the environment related variables globaly so that they are available for both functions */ -
axutil_allocator_t * allocator = NULL; -
axutil_env_t * environment = NULL; -
axutil_stream_t * stream = NULL; -
axutil_error_t * error = NULL; -
axutil_log_t * axis_log = NULL; -
FILE * f = NULL; -
FILE * o = NULL; +axutil_allocator_t * allocator = NULL; +axutil_env_t * environment = NULL; +axutil_stream_t * stream = NULL; +axutil_error_t * error = NULL; +axutil_log_t * axis_log = NULL; +FILE * f = NULL; +FILE * o = NULL; /** a method that demonstrate creating a om model using an xml file */ -
int AXIS2_CALL + int AXIS2_CALL read_input( char *buffer, int size, void *ctx) { -
int len = 0; -
char *pos = NULL; -
len = fread(buffer, sizeof(char), size, f); -
if (buffer) -
pos = strstr(buffer, "---"); -
if (pos) + int len = 0; + char *pos = NULL; + len = fread(buffer, sizeof(char), size, f); + if (buffer) + pos = strstr(buffer, "---"); + if (pos) { -
len = pos - buffer; -
*pos = '\0'; -
} -
return len; -
} -
int + len = pos - buffer; + *pos = '\0'; + } + return len; +} +int main( int argc, char *argv[]) { -
axutil_qname_t * qname = NULL; -
axiom_node_t * policy_node = NULL, *node = NULL; -
axiom_xml_writer_t * writer = NULL; -
axiom_output_t * om_output = NULL; -
axis2_char_t * pol_ref = NULL; -
axiom_element_t * policy_element = NULL, *ele = NULL; -
axiom_node_t * child_node = NULL; -
axutil_array_list_t * policy_array = NULL; -
char *buffer = NULL; -
const char *file_name = + axutil_qname_t * qname = NULL; + axiom_node_t * policy_node = NULL, *node = NULL; + axiom_xml_writer_t * writer = NULL; + axiom_output_t * om_output = NULL; + axis2_char_t * pol_ref = NULL; + axiom_element_t * policy_element = NULL, *ele = NULL; + axiom_node_t * child_node = NULL; + axutil_array_list_t * policy_array = NULL; + char *buffer = NULL; + const char *file_name = "C:\\OMWsdl\\wsdltest\\debug\\PolicyAttachments.wsdl"; -
const char *out_file_name = "C:\\OMWsdl\\wsdltest\\debug\\out.xml"; -
allocator = axutil_allocator_init(NULL); -
axis_log = axutil_log_create(allocator, NULL, NULL); -
error = axutil_error_create(allocator); -
environment = + const char *out_file_name = "C:\\OMWsdl\\wsdltest\\debug\\out.xml"; + allocator = axutil_allocator_init(NULL); + axis_log = axutil_log_create(allocator, NULL, NULL); + error = axutil_error_create(allocator); + environment = axutil_env_create_with_error_log(allocator, error, axis_log); -
policy_array = axutil_array_list_create(environment, 10); -
+ policy_array = axutil_array_list_create(environment, 10); + /*get all the policy values of "Binding_2B"*/ get_all_policy("Binding-2B", environment, policy_array, file_name); -
node = + node = (axiom_node_t *) axutil_array_list_get(policy_array, environment, 2); -
ele = (axiom_element_t *) axiom_node_get_data_element(node, environment); -
qname = axiom_element_get_qname(ele, environment, node); -
printf("qname %s\n", axutil_qname_get_uri(qname, environment)); -
writer = + ele = (axiom_element_t *) axiom_node_get_data_element(node, environment); + qname = axiom_element_get_qname(ele, environment, node); + printf("qname %s\n", axutil_qname_get_uri(qname, environment)); + writer = axiom_xml_writer_create_for_memory(environment, NULL, AXIS2_TRUE, 0, -
AXIS2_XML_PARSER_TYPE_BUFFER); -
om_output = axiom_output_create(environment, writer); -
axiom_node_serialize(node, environment, om_output); -
buffer = (axis2_char_t *) axiom_xml_writer_get_xml(writer, environment); -
if (buffer) + AXIS2_XML_PARSER_TYPE_BUFFER); + om_output = axiom_output_create(environment, writer); + axiom_node_serialize(node, environment, om_output); + buffer = (axis2_char_t *) axiom_xml_writer_get_xml(writer, environment); + if (buffer) { - - /*printf(outfilename);*/ - o = fopen("C:\\OMWsdl\\wsdltest\\debug\\out.xml", "w"); -
if (!o) -
return -1; -
printf("Printing the Buffer...\n"); -
printf("%s", buffer); -
fprintf(o, "<?xml version=\"1.0\" ?>\n%s", buffer); -
} -
axiom_output_free(om_output, environment); -
fclose(f); -
axutil_env_free(environment); -
return 0; -
} + /*printf(outfilename);*/ + o = fopen("C:\\OMWsdl\\wsdltest\\debug\\out.xml", "w"); + if (!o) + return -1; + printf("Printing the Buffer...\n"); + printf("%s", buffer); + fprintf(o, "<?xml version=\"1.0\" ?>\n%s", buffer); + } + axiom_output_free(om_output, environment); + fclose(f); + axutil_env_free(environment); + return 0; +} -
axiom_node_t * return_policy_element(axis2_char_t * name, +axiom_node_t * return_policy_element(axis2_char_t * name, const axutil_env_t * env, axis2_char_t * wsdl_name) { -
axiom_element_t * ele1 = NULL, *ele2 = NULL; -
axiom_document_t * document = NULL; -
axiom_node_t * node1 = NULL, *node2 = NULL, *policy_node = NULL; -
axiom_namespace_t * ns = NULL; -
axiom_xml_reader_t * reader = NULL; -
axiom_stax_builder_t * builder = NULL; -
char *buffer = NULL; -
axiom_attribute_t * attr = NULL; -
axis2_char_t * value = NULL; -
axis2_char_t * val = NULL; -
axutil_hash_t * attr_hash = NULL; -
axis2_char_t * xml_output = NULL; -
axutil_hash_index_t * hi; -
f = fopen(wsdl_name, "r"); -
if (!f) -
return NULL; -
reader = + axiom_element_t * ele1 = NULL, *ele2 = NULL; + axiom_document_t * document = NULL; + axiom_node_t * node1 = NULL, *node2 = NULL, *policy_node = NULL; + axiom_namespace_t * ns = NULL; + axiom_xml_reader_t * reader = NULL; + axiom_stax_builder_t * builder = NULL; + char *buffer = NULL; + axiom_attribute_t * attr = NULL; + axis2_char_t * value = NULL; + axis2_char_t * val = NULL; + axutil_hash_t * attr_hash = NULL; + axis2_char_t * xml_output = NULL; + axutil_hash_index_t * hi; + f = fopen(wsdl_name, "r"); + if (!f) + return NULL; + reader = axiom_xml_reader_create_for_io(environment, read_input, NULL, NULL, NULL); -
if (!reader) + if (!reader) { -
printf("ERROR CREATING PULLPARSER"); -
return NULL; -
} -
builder = axiom_stax_builder_create(environment, reader); -
if (!builder) + printf("ERROR CREATING PULLPARSER"); + return NULL; + } + builder = axiom_stax_builder_create(environment, reader); + if (!builder) { -
printf("ERROR CREATING PULL PARSER"); -
return NULL; -
} -
document = axiom_stax_builder_get_document(builder, environment); -
if (!document) -
return NULL; -
node1 = axiom_document_get_root_element(document, environment); -
if (!node1) + printf("ERROR CREATING PULL PARSER"); + return NULL; + } + document = axiom_stax_builder_get_document(builder, environment); + if (!document) + return NULL; + node1 = axiom_document_get_root_element(document, environment); + if (!node1) { -
printf(" root element null "); -
axiom_stax_builder_free(builder, environment); -
return NULL; -
} -
+ printf(" root element null "); + axiom_stax_builder_free(builder, environment); + return NULL; + } + do { -
node2 = axiom_document_build_next(document, environment); -
if (!node2) -
break; -
if (axiom_node_get_node_type(node2, environment) == AXIOM_ELEMENT) + node2 = axiom_document_build_next(document, environment); + if (!node2) + break; + if (axiom_node_get_node_type(node2, environment) == AXIOM_ELEMENT) { -
ele2 = + ele2 = (axiom_element_t *) axiom_node_get_data_element(node2, environment); -
attr_hash = axiom_element_get_all_attributes(ele2, environment); -
if (attr_hash) + attr_hash = axiom_element_get_all_attributes(ele2, environment); + if (attr_hash) { -
hi = axutil_hash_first(attr_hash, environment); -
axutil_hash_this(hi, NULL, NULL, &attr); -
if (axutil_strcmp + hi = axutil_hash_first(attr_hash, environment); + axutil_hash_this(hi, NULL, NULL, &attr); + if (axutil_strcmp (axiom_attribute_get_value(attr, environment), name) == 0) { -
policy_node = node2; -
} -
} -
} -
} + policy_node = node2; + } + } + } + } while (node2); -
return policy_node; -
} + return policy_node; +} -
axis2_char_t * get_policy_ref(axiom_node_t * node, const axutil_env_t * env) +axis2_char_t * get_policy_ref(axiom_node_t * node, const axutil_env_t * env) { -
axiom_element_t * policy_element = NULL; -
axiom_children_iterator_t * children_iter = NULL; -
axiom_node_t * child_node = NULL; -
axutil_qname_t * qname = NULL; -
axis2_char_t * value = NULL; -
axis2_char_t * val = NULL; -
axiom_attribute_t * attr = NULL; -
policy_element = + axiom_element_t * policy_element = NULL; + axiom_children_iterator_t * children_iter = NULL; + axiom_node_t * child_node = NULL; + axutil_qname_t * qname = NULL; + axis2_char_t * value = NULL; + axis2_char_t * val = NULL; + axiom_attribute_t * attr = NULL; + policy_element = (axiom_element_t *) axiom_node_get_data_element(node, env); -
children_iter = axiom_element_get_children(policy_element, env, node); -
while (axiom_children_iterator_has_next(children_iter, env)) + children_iter = axiom_element_get_children(policy_element, env, node); + while (axiom_children_iterator_has_next(children_iter, env)) { -
child_node = axiom_children_iterator_next(children_iter, env); -
if (axiom_node_get_node_type(child_node, environment) == AXIOM_ELEMENT) + child_node = axiom_children_iterator_next(children_iter, env); + if (axiom_node_get_node_type(child_node, environment) == AXIOM_ELEMENT) { -
policy_element = + policy_element = (axiom_element_t *) axiom_node_get_data_element(child_node, environment); -
if (axutil_strcmp + if (axutil_strcmp (axiom_element_get_localname(policy_element, environment), "PolicyReference") == 0) { -
qname = axutil_qname_create(environment, "URI", NULL, NULL); -
attr = + qname = axutil_qname_create(environment, "URI", NULL, NULL); + attr = axiom_element_get_attribute(policy_element, environment, qname); -
if (attr) + if (attr) { -
value = axiom_attribute_get_value(attr, environment); -
val = axutil_string_substring_starting_at(value, 1); -
return val; -
} -
} -
} -
} -
return NULL; -
} -
void + value = axiom_attribute_get_value(attr, environment); + val = axutil_string_substring_starting_at(value, 1); + return val; + } + } + } + } + return NULL; +} +void get_all_policy( axis2_char_t * element_name, const axutil_env_t * env, axutil_array_list_t * policy_node_list, axis2_char_t * wsdl_name) { -
axutil_hash_t * attr_hash = NULL; -
axutil_hash_index_t * hi = NULL; -
axiom_element_t * element = NULL; -
axiom_attribute_t * attribute = NULL; -
axis2_char_t * attribute_val = NULL; -
axiom_node_t * parent_policy_node = NULL, *parent_node = NULL; -
parent_node = return_policy_element(element_name, env, wsdl_name); -
if (!parent_node) -
return; -
parent_policy_node = + axutil_hash_t * attr_hash = NULL; + axutil_hash_index_t * hi = NULL; + axiom_element_t * element = NULL; + axiom_attribute_t * attribute = NULL; + axis2_char_t * attribute_val = NULL; + axiom_node_t * parent_policy_node = NULL, *parent_node = NULL; + parent_node = return_policy_element(element_name, env, wsdl_name); + if (!parent_node) + return; + parent_policy_node = return_policy_element(get_policy_ref(parent_node, env), env, wsdl_name); -
axutil_array_list_add(policy_node_list, env, parent_policy_node); -
if (axiom_node_get_node_type(parent_node, env) == AXIOM_ELEMENT) + axutil_array_list_add(policy_node_list, env, parent_policy_node); + if (axiom_node_get_node_type(parent_node, env) == AXIOM_ELEMENT) { -
element = + element = (axiom_element_t *) axiom_node_get_data_element(parent_node, env); -
attr_hash = axiom_element_get_all_attributes(element, env); -
if (attr_hash) + attr_hash = axiom_element_get_all_attributes(element, env); + if (attr_hash) { -
hi = axutil_hash_next(env, axutil_hash_first(attr_hash, env)); + hi = axutil_hash_next(env, axutil_hash_first(attr_hash, env)); do { -
if (hi) + if (hi) { -
axutil_hash_this(hi, NULL, NULL, &attribute); -
attribute_val = axiom_attribute_get_value(attribute, env); -
attribute_val = axutil_rindex(attribute_val, ':'); -
attribute_val = + axutil_hash_this(hi, NULL, NULL, &attribute); + attribute_val = axiom_attribute_get_value(attribute, env); + attribute_val = axutil_rindex(attribute_val, ':'); + attribute_val = axutil_string_substring_starting_at(attribute_val, 1); -
get_all_policy(attribute_val, env, policy_node_list, + get_all_policy(attribute_val, env, policy_node_list, wsdl_name); -
hi = axutil_hash_next(env, hi); -
} -
} + hi = axutil_hash_next(env, hi); + } + } while (hi); -
} -
} -
return; -
} + } + } + return; +} + |