| /* |
| * 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 OXS_AXIOM_H |
| #define OXS_AXIOM_H |
| |
| /** |
| * @file oxs_axiom.h |
| * @brief Utility functions related to AXIOM. A place for common code. |
| */ |
| |
| #include <axis2_defines.h> |
| #include <axutil_env.h> |
| #include <axis2_util.h> |
| #include <axiom_node.h> |
| |
| #ifdef __cplusplus |
| extern "C" |
| { |
| #endif |
| /** @defgroup oxs_axiom OXS Axiom |
| * @ingroup oxs |
| * @{ |
| */ |
| |
| /** |
| * Adds an attribute to a particular node |
| * @param env Environment. MUST NOT be NULL |
| * @param node the node where the attibute will be added |
| * @param attribute_ns the the ns_prefix of the attribute |
| * @param attribute_ns_uri the uri of the attribute |
| * @param attribute the localname of the attribute |
| * @param value the value of the attribute |
| * @return AXIS2_SUCCESS on success, else AXIS2_FAILURE |
| */ |
| AXIS2_EXTERN axis2_status_t AXIS2_CALL |
| oxs_axiom_add_attribute( |
| const axutil_env_t *env, |
| axiom_node_t* node, |
| axis2_char_t* attribute_ns, |
| axis2_char_t* attribute_ns_uri, |
| axis2_char_t* attribute, |
| axis2_char_t* value); |
| |
| /** |
| * Finds the number of childern with given qname |
| * @param env Environment. MUST NOT be NULL, |
| * @param parent the root element defining start of the search |
| * @param localname the local part of the qname |
| * @param ns_uri uri part of the qname |
| * @param prefix the prefix part of the qname |
| * @return the number of children found |
| */ |
| AXIS2_EXTERN int AXIS2_CALL |
| oxs_axiom_get_number_of_children_with_qname( |
| const axutil_env_t *env, |
| axiom_node_t* parent, |
| axis2_char_t* local_name, |
| axis2_char_t* ns_uri, |
| axis2_char_t* prefix); |
| |
| /** |
| * Traverse thru the node and its descendents. Check if the localname is equal to the given name |
| * @param env Environment. MUST NOT be NULL, |
| * @param node the node to be searched |
| * @param localname the local name of the node to be searched |
| * @return the node if found, else NULL |
| */ |
| AXIS2_EXTERN axiom_node_t* AXIS2_CALL |
| oxs_axiom_get_node_by_local_name( |
| const axutil_env_t *env, |
| axiom_node_t *node, |
| axis2_char_t *local_name); |
| |
| /** |
| * Traverse thru the node and its descendents. Check if the node has a particular attibure |
| * value, whose attribute name as in @attr and value as in @val |
| * @param env Environment. MUST NOT be NULL, |
| * @param node the node to be searched |
| * @param attr the attribute name of the node |
| * @param val the attribute value of the node |
| * @param ns namespace of the attribute |
| * @return the node if found, else NULL |
| */ |
| AXIS2_EXTERN axiom_node_t* AXIS2_CALL |
| oxs_axiom_get_node_by_id( |
| const axutil_env_t *env, |
| axiom_node_t *node, |
| axis2_char_t *attr, |
| axis2_char_t *val, |
| axis2_char_t *ns); |
| |
| /** |
| * Traverse thru the node and its descendents. Check if the node has a particular attribute with |
| * name as in @attr and namespace as in @ns. Returns the attribute value. |
| * @param env Environment. MUST NOT be NULL, |
| * @param node the node to be searched |
| * @param attribute_name the attribute name of the node |
| * @param ns namespace of the attribute |
| * @return the attribute value if found, else NULL |
| */ |
| AXIS2_EXTERN axis2_char_t* AXIS2_CALL |
| oxs_axiom_get_attribute_value_of_node_by_name( |
| const axutil_env_t *env, |
| axiom_node_t *node, |
| axis2_char_t *attribute_name, |
| axis2_char_t *ns); |
| |
| /** |
| * Traverse thru the node and its descendents. Check if the node has a particular attribute with |
| * qname as in @qname. Returns the attribute value. |
| * @param env Environment. MUST NOT be NULL, |
| * @param node the node to be searched |
| * @param qname the qname of the attribute |
| * @return the attribute value if found, else NULL |
| */ |
| AXIS2_EXTERN axis2_char_t* AXIS2_CALL |
| oxs_axiom_get_attribute_val_of_node_by_qname( |
| const axutil_env_t *env, |
| axiom_node_t *node, |
| axutil_qname_t *qname); |
| |
| /** |
| * Check the node and its children. Check if the localname is equal to the given name |
| * Note: You may pass the prefix=NULL as the prefix may be different depending on the impl |
| * @param env Environment. MUST NOT be NULL, |
| * @param parent the node to be searched |
| * @param local_name the local name of the node to be searched |
| * @ns_uri namespace uri of the node to be searched |
| * @prefix prefix of the node to be searched. If NULL, node with any prefix will be considered |
| * @return the node if found, else NULL |
| */ |
| AXIS2_EXTERN axiom_node_t* AXIS2_CALL |
| oxs_axiom_get_first_child_node_by_name( |
| const axutil_env_t *env, |
| axiom_node_t* parent, |
| axis2_char_t* local_name, |
| axis2_char_t* ns_uri, |
| axis2_char_t* prefix); |
| |
| /** |
| * Returns content of a node |
| * @param env Environment. MUST NOT be NULL, |
| * @param node the node whose content should be retrieved |
| * @return the content of the node if found, else NULL |
| */ |
| AXIS2_EXTERN axis2_char_t* AXIS2_CALL |
| oxs_axiom_get_node_content( |
| const axutil_env_t *env, |
| axiom_node_t* node); |
| |
| /** |
| * Deserialises given buffer and creates the axiom node |
| * @param env Environment. Must not be NULL |
| * @param buffer representation of serialised node |
| * @return deserialised node if success. NULL otherwise. |
| */ |
| AXIS2_EXTERN axiom_node_t *AXIS2_CALL |
| oxs_axiom_deserialize_node( |
| const axutil_env_t *env, |
| axis2_char_t* buffer); |
| |
| /** |
| * Checks whether given node is having same name and namespace as given |
| * @param env Environment. Must not be null |
| * @param node node to be checked for name and namespace |
| * @param name local name to be checked against given node |
| * @param ns namespace to be checked against given node. Can be null. If null, will be omitted |
| * @return AXIS2_TRUE if given name/ns is same as in the node. AXIS2_FALSE otherwise. |
| */ |
| AXIS2_EXTERN axis2_bool_t AXIS2_CALL |
| oxs_axiom_check_node_name( |
| const axutil_env_t *env, |
| axiom_node_t* node, |
| axis2_char_t* name, |
| axis2_char_t* ns); |
| |
| /** |
| * moves the given node before second node. |
| * @param env Environment. Must not be null |
| * @param node_to_move node to be moved |
| * @param node_before node_to_move will be moved before this node |
| * @return status of the operation |
| */ |
| AXIS2_EXTERN axis2_status_t AXIS2_CALL |
| oxs_axiom_interchange_nodes( |
| const axutil_env_t *env, |
| axiom_node_t *node_to_move, |
| axiom_node_t *node_before); |
| |
| /** |
| * Adds @child as the first child of @parent |
| * @param env Environment. Must not be null |
| * @param parent parent node |
| * @param child child node which has to be the first child of parent |
| * @return status of the operation |
| */ |
| AXIS2_EXTERN axis2_status_t AXIS2_CALL |
| oxs_axiom_add_as_the_first_child( |
| const axutil_env_t *env, |
| axiom_node_t *parent, |
| axiom_node_t *child); |
| |
| /**
|
| * Traverse thru the node and its children. Check if the element has the
|
| * given qname and has a id attribute equal to the given value.
|
| * @param env Environment. MUST NOT be NULL,
|
| * @param node the node to be searched
|
| * @param e_name element name
|
| * @param e_ns element namespace. If NULL doesn't consider the namespaces
|
| * @param attr_name the attribute name of the node
|
| * @param attr_val the attribute value of the node
|
| * @param attr_ns the attribute namespace. If NULL doesn't consider namespaces.
|
| * @return the node if found, else NULL
|
| */
|
| AXIS2_EXTERN axiom_node_t* AXIS2_CALL
|
| oxs_axiom_get_first_node_by_name_and_attr_val(
|
| const axutil_env_t *env,
|
| axiom_node_t *node,
|
| axis2_char_t *e_name,
|
| axis2_char_t *e_ns,
|
| axis2_char_t *attr_name,
|
| axis2_char_t *attr_val,
|
| axis2_char_t *attr_ns);
|
|
|
| /**
|
| * First find the root of the scope node. Traverse thru the root node and its
|
| * children. Check if the element has the given qname and has a attribute
|
| * equal to the given values.
|
| * @param env Environment. MUST NOT be NULL,
|
| * @param node the node to be searched
|
| * @param e_name element name
|
| * @param e_ns element namespace. If NULL doesn't consider the namespaces
|
| * @param attr_name the attribute name of the node
|
| * @param attr_val the attribute value of the node
|
| * @param attr_ns the attribute namespace. If NULL doesn't consider namespaces.
|
| * @return the node if found, else NULL
|
| */
|
| AXIS2_EXTERN axiom_node_t * AXIS2_CALL
|
| oxs_axiom_get_first_node_by_name_and_attr_val_from_xml_doc(
|
| const axutil_env_t *env,
|
| axiom_node_t *node,
|
| axis2_char_t *e_name,
|
| axis2_char_t *e_ns,
|
| axis2_char_t *attr_name,
|
| axis2_char_t *attr_val,
|
| axis2_char_t *attr_ns); |
| |
| /** |
| * Clones the given node. |
| * @param env Environment. Must not be null |
| * @param node node to be cloned |
| * @return cloned node if success. NULL otherwise |
| */ |
| AXIS2_EXTERN axiom_node_t *AXIS2_CALL
|
| oxs_axiom_clone_node(
|
| const axutil_env_t *env,
|
| axiom_node_t *node); |
| |
| /** @} */ |
| #ifdef __cplusplus |
| } |
| #endif |
| |
| #endif /* OXS_AXIOM_H */ |