void remove_subscriber(axis2_char_t *id) { remote_registry_t *remote_registry = NULL; const axutil_env_t *env = NULL; remote_registry_resource_t *res = NULL; axis2_char_t *val; axis2_char_t *index_path = NULL; axis2_status_t status = AXIS2_FAILURE; axis2_char_t *path = NULL; axis2_char_t *reg_url = "http://localhost:9762/registry"; env = axutil_env_create_all("test.log", AXIS2_LOG_LEVEL_TRACE); remote_registry = remote_registry_create(env, reg_url, "admin", "admin"); res = remote_registry_get(remote_registry, env, TOPIC_INDEX, NULL); if(!res) { return; } printf("\n\nroot resource id:%s\n\n",remote_registry_resource_get_id(res, env)); val = remote_registry_resource_get_property(res, env, id); if(val) { path = axutil_strcat(env, val, "/", id, NULL); printf("path:%s\n", path); status = remote_registry_delete(remote_registry, env, path); } if(AXIS2_SUCCESS != status) { printf("\nSubscription deletion failed\n"); } res = remote_registry_get(remote_registry, env, TOPIC_INDEX, NULL); if(!res) { return; } printf("\n\nroot resource id:%s\n\n",remote_registry_resource_get_id(res, env)); /*remote_registry_resource_remove_property(res, env, id); remote_registry_resource_set_content(res, env, NULL); remote_registry_resource_set_content_len(res, env, 0); remote_registry_resource_set_parent_path(res, env, "/eventing/index"); index_path = axutil_strcat(env, TOPIC_INDEX, "/TopicIndex", NULL); remote_registry_put(remote_registry, env, index_path, res);*/ remote_registry_resource_free(res, env); }
void get_all_subscribers() { remote_registry_t *remote_registry = NULL; const axutil_env_t *env = NULL; remote_registry_resource_t *res = NULL; axutil_hash_t *properties = NULL; axis2_char_t *path = NULL; axis2_char_t *reg_url = "http://localhost:9762/registry"; env = axutil_env_create_all("test.log", AXIS2_LOG_LEVEL_TRACE); remote_registry = remote_registry_create(env, reg_url, "admin", "admin"); res = remote_registry_get(remote_registry, env, TOPIC_INDEX, NULL); if(!res) { return; } properties = remote_registry_resource_get_properties(res, env); if(properties) { axutil_hash_index_t *hi; void *val; void *key; for (hi = axutil_hash_first(properties, env); hi; hi = axutil_hash_next(env, hi)) { axutil_hash_this(hi, (const void**)&key, NULL, &val); path = axutil_strcat(env, val, "/", key, NULL); res = remote_registry_get(remote_registry, env, path, NULL); if(res) { if(res) { printf("\n\nresource id:%s\n\n",remote_registry_resource_get_id(res, env)); } } remove_subscriber((axis2_char_t *) key); } } remote_registry_resource_free(res, env); }
void get_all_subscribers_for_topic(axis2_char_t *topic) { remote_registry_t *remote_registry = NULL; const axutil_env_t *env = NULL; remote_registry_resource_t *res = NULL; axutil_hash_t *properties = NULL; remote_registry_resource_t *topic_resource = NULL; axis2_char_t *path = NULL; axis2_char_t *reg_url = "http://localhost:9762/registry"; env = axutil_env_create_all("test.log", AXIS2_LOG_LEVEL_TRACE); remote_registry = remote_registry_create(env, reg_url, "admin", "admin"); topic_resource = remote_registry_get(remote_registry, env, topic, NULL); if(topic_resource) { axutil_array_list_t *child_entries = NULL; int i = 0; child_entries = remote_registry_resource_get_entries(topic_resource, env); if(child_entries) { /* load the child entries recursively */ for(i = 0; i < axutil_array_list_size(child_entries, env); i ++) { remote_registry_resource_t *child_resource = NULL; child_resource = (remote_registry_resource_t*)axutil_array_list_get(child_entries, env, i); /* loading the resources */ /*remote_registry_load_content_for_resource(remote_registry, env, child_resource); */ if(child_resource) { printf("\n\nresource id:%s\n\n",remote_registry_resource_get_id(child_resource, env)); } } } } }
AXIS2_EXTERN axiom_node_t *AXIS2_CALL remote_registry_resource_serialize( remote_registry_resource_t *resource, const axutil_env_t *env) { axiom_node_t *entry_node = NULL; axiom_element_t *entry_element = NULL; axiom_namespace_t *ns1 = NULL; axiom_namespace_t *ns2 = NULL; axis2_char_t *description = NULL; axis2_char_t *author = NULL; axutil_hash_t *properties = NULL; axis2_char_t *content = NULL; int collection = 0; int content_modified= 0; axis2_char_t *id = NULL; axis2_char_t *title = NULL; axis2_char_t *media_type = NULL; axis2_char_t *parent_path = NULL; axutil_date_time_t *modified_date = NULL; ns1 = axiom_namespace_create(env, REMOTE_REGISTRY_ATOM_NS, REMOTE_REGISTRY_ATOM_NS_PREFIX); ns2 = axiom_namespace_create(env, REMOTE_REGISTRY_REGISTRY_NS, REMOTE_REGISTRY_REGISTRY_NS_PREFIX); if(resource->is_collection) { entry_element = axiom_element_create(env, NULL, REMOTE_REGISTRY_FEED_KEY_FEED, ns1, &entry_node); } else { entry_element = axiom_element_create(env, NULL, REMOTE_REGISTRY_FEED_KEY_ENTRY, ns1, &entry_node); } axiom_element_declare_namespace(entry_element, env, entry_node, ns1); axiom_element_declare_namespace(entry_element, env, entry_node, ns2); /* getting variables from the structure and rendering into an XML */ id = remote_registry_resource_get_id(resource, env); if(id) { axiom_node_t *id_node = NULL; axiom_element_t *id_element = NULL; id_element = axiom_element_create(env, entry_node, REMOTE_REGISTRY_FEED_KEY_ID, ns1, &id_node); axiom_element_set_text(id_element, env, id, id_node); } title = remote_registry_resource_get_title(resource, env); if(title) { axiom_node_t *title_node = NULL; axiom_element_t *title_element = NULL; axiom_attribute_t *type_attr = NULL; title_element = axiom_element_create(env, entry_node, REMOTE_REGISTRY_FEED_KEY_TITLE, ns1, &title_node); axiom_element_set_text(title_element, env, title, title_node); type_attr = axiom_attribute_create(env, REMOTE_REGISTRY_FEED_ATTR_TYPE, REMOTE_REGISTRY_FEED_ATTR_TYPE_TEXT, NULL); axiom_element_add_attribute(title_element, env, type_attr, title_node); } description = remote_registry_resource_get_description(resource, env); if(description) { axiom_node_t *summary_node = NULL; axiom_element_t *summary_element = NULL; axiom_attribute_t *type_attr = NULL; summary_element = axiom_element_create(env, entry_node, REMOTE_REGISTRY_FEED_KEY_SUMMARY, ns1, &summary_node); axiom_element_set_text(summary_element, env, description, summary_node); type_attr = axiom_attribute_create(env, REMOTE_REGISTRY_FEED_ATTR_TYPE, REMOTE_REGISTRY_FEED_ATTR_TYPE_TEXT, NULL); axiom_element_add_attribute(summary_element, env, type_attr, summary_node); } author = remote_registry_resource_get_author_name(resource, env); if(author) { axiom_node_t *author_node = NULL; axiom_node_t *name_node = NULL; axiom_element_t *name_ele = NULL; axiom_element_create(env, entry_node, REMOTE_REGISTRY_FEED_KEY_AUTHOR, ns1, &author_node); name_ele = axiom_element_create(env, author_node, REMOTE_REGISTRY_FEED_KEY_NAME, ns1, &name_node); axiom_element_set_text(name_ele, env, author, name_node); } modified_date = remote_registry_resource_get_last_modified_time(resource, env); if(!modified_date) { modified_date = axutil_date_time_create(env); remote_registry_resource_set_last_modified_time(resource, env, modified_date); } if(modified_date) { axiom_node_t *date_node = NULL; axiom_element_t *date_ele = NULL; axis2_char_t *modified_date_str = NULL; modified_date_str = axutil_date_time_serialize_date_time(modified_date, env); date_ele = axiom_element_create(env, entry_node, REMOTE_REGISTRY_FEED_KEY_UPDATED, ns1, &date_node); axiom_element_set_text(date_ele, env, modified_date_str, date_node); AXIS2_FREE(env->allocator, modified_date_str); } content = remote_registry_resource_get_content(resource, env); if(content) { axiom_node_t *content_node = NULL; axiom_element_t *content_element = NULL; axiom_attribute_t *type_attr = NULL; axis2_char_t *base64_content = NULL; int base64_len = 0; int content_len = -1; content_len = remote_registry_resource_get_content_len(resource, env); if(content_len == -1) /* which mean we have to derive the content length */ { content_len = axutil_strlen(content); } base64_len = axutil_base64_encode_len(content_len); base64_content = AXIS2_MALLOC(env->allocator, base64_len+ 1); if(base64_content) { axutil_base64_encode(base64_content, content, content_len); base64_content[base64_len] = '\0'; content_element = axiom_element_create(env, entry_node, REMOTE_REGISTRY_FEED_KEY_CONTENT, ns1, &content_node); axiom_element_set_text(content_element, env, base64_content, content_node); type_attr = axiom_attribute_create(env, REMOTE_REGISTRY_FEED_ATTR_TYPE, REMOTE_REGISTRY_FEED_ATTR_TYPE_BASE64_VALUE, NULL); axiom_element_add_attribute(content_element, env, type_attr, content_node); AXIS2_FREE(env->allocator, base64_content); } } else if(!resource->is_collection) { axiom_node_t *content_node = NULL; axiom_element_t *content_element = NULL; axiom_attribute_t *type_attr = NULL; content_element = axiom_element_create(env, entry_node, REMOTE_REGISTRY_FEED_KEY_CONTENT, ns1, &content_node); axiom_element_set_text(content_element, env, REMOTE_REGISTRY_FEED_VALUE_EMPTY_CONTENT, content_node); type_attr = axiom_attribute_create(env, REMOTE_REGISTRY_FEED_ATTR_TYPE, REMOTE_REGISTRY_FEED_ATTR_TYPE_TEXT_VALUE, NULL); axiom_element_add_attribute(content_element, env, type_attr, content_node); } properties = remote_registry_resource_get_properties(resource, env); if(properties) { axiom_node_t *properties_node = NULL; axiom_node_t *property_node = NULL; axiom_node_t *name_node = NULL; axiom_node_t *value_node = NULL; axiom_element_t *name_element = NULL; axiom_element_t *value_element = NULL; axutil_hash_index_t *hi; void *val; void *key; int sum = 0; axiom_element_create(env, entry_node, REMOTE_REGISTRY_FEED_KEY_PROPERTIES, ns2, &properties_node); for (hi = axutil_hash_first(resource->properties, env); hi; hi = axutil_hash_next(env, hi)) { axutil_hash_this(hi, (const void**)&key, NULL, &val); axiom_element_create(env, properties_node, REMOTE_REGISTRY_FEED_KEY_PROPERTY, ns2, &property_node); name_element = axiom_element_create(env, property_node, REMOTE_REGISTRY_FEED_KEY_PROPERTY_KEY_NAME, ns2, &name_node); axiom_element_set_text(name_element, env, (axis2_char_t*)key, name_node); value_element = axiom_element_create(env, property_node, REMOTE_REGISTRY_FEED_KEY_PROPERTY_KEY_VALUE, ns2, &value_node); axiom_element_set_text(value_element, env, (axis2_char_t*)val, value_node); } } media_type = remote_registry_resource_get_media_type(resource, env); if(media_type) { axiom_element_t *media_element = NULL; axiom_node_t *media_node = NULL; media_element = axiom_element_create(env, entry_node, REMOTE_REGISTRY_FEED_KEY_MEDIA_TYPE, ns2, &media_node); axiom_element_set_text(media_element, env, media_type, media_node); } parent_path = remote_registry_resource_get_parent_path(resource, env); if(parent_path) { axiom_element_t *parent_path_element = NULL; axiom_node_t *parent_path_node = NULL; parent_path_element = axiom_element_create(env, entry_node, REMOTE_REGISTRY_FEED_KEY_PARENT_PATH, ns2, &parent_path_node); if(resource->is_collection) { /* for collection parent path is always sent at the http request header */ parent_path = ""; } axiom_element_set_text(parent_path_element, env, parent_path, parent_path_node); } if(resource->is_collection) { axiom_element_t *content_modified_element = NULL; axiom_node_t *content_modified_node = NULL; content_modified_element = axiom_element_create(env, entry_node, REMOTE_REGISTRY_FEED_KEY_CONTENT_MODIFIED, ns2, &content_modified_node); axiom_element_set_text(content_modified_element, env, REMOTE_REGISTRY_FEED_KEY_TRUE_VALUE, content_modified_node); } return entry_node; }