You are viewing a plain text version of this content. The canonical link for it is here.
Posted to java-dev@axis.apache.org by ma...@apache.org on 2007/06/19 09:17:14 UTC

svn commit: r548622 - in /webservices/axis2/trunk/c/src/core/clientapi: Makefile.am svc_client.c

Author: manjula
Date: Tue Jun 19 00:17:12 2007
New Revision: 548622

URL: http://svn.apache.org/viewvc?view=rev&rev=548622
Log:
Adding two methods to set policy from file and om in svc_client.

Modified:
    webservices/axis2/trunk/c/src/core/clientapi/Makefile.am
    webservices/axis2/trunk/c/src/core/clientapi/svc_client.c

Modified: webservices/axis2/trunk/c/src/core/clientapi/Makefile.am
URL: http://svn.apache.org/viewvc/webservices/axis2/trunk/c/src/core/clientapi/Makefile.am?view=diff&rev=548622&r1=548621&r2=548622
==============================================================================
--- webservices/axis2/trunk/c/src/core/clientapi/Makefile.am (original)
+++ webservices/axis2/trunk/c/src/core/clientapi/Makefile.am Tue Jun 19 00:17:12 2007
@@ -13,4 +13,5 @@
             -I$(top_builddir)/src/core/deployment \
             -I$(top_builddir)/util/include \
            -I$(top_builddir)/util/include/platforms \
-            -I$(top_builddir)/axiom/include
+            -I$(top_builddir)/axiom/include \
+			-I$(top_builddir)/neethi/include

Modified: webservices/axis2/trunk/c/src/core/clientapi/svc_client.c
URL: http://svn.apache.org/viewvc/webservices/axis2/trunk/c/src/core/clientapi/svc_client.c?view=diff&rev=548622&r1=548621&r2=548622
==============================================================================
--- webservices/axis2/trunk/c/src/core/clientapi/svc_client.c (original)
+++ webservices/axis2/trunk/c/src/core/clientapi/svc_client.c Tue Jun 19 00:17:12 2007
@@ -34,6 +34,8 @@
 #include <stdio.h>
 #include <axutil_generic_obj.h>
 #include <axis2_http_transport.h>
+#include <neethi_engine.h>
+#include <axis2_policy_include.h>
 
 struct axis2_svc_client
 {
@@ -1331,6 +1333,95 @@
     return AXIS2_SUCCESS;
 }
 
+AXIS2_EXTERN axis2_status_t AXIS2_CALL
+axis2_svc_client_set_policy_from_om(axis2_svc_client_t *svc_client,
+    const axutil_env_t *env,
+    axiom_node_t *root_node)
+{
 
+    axiom_element_t *root_ele = NULL;
+    axis2_svc_t *svc = NULL;
+    axis2_desc_t *desc = NULL;
+    axis2_policy_include_t *policy_include = NULL;
+    
 
+    if(axiom_node_get_node_type(root_node, env) == AXIOM_ELEMENT)
+    {
+        root_ele = (axiom_element_t*)axiom_node_get_data_element(root_node, env);
+        if(root_ele)
+        {
+            neethi_policy_t *neethi_policy = NULL;
+            neethi_policy = neethi_engine_get_policy(env, root_node, root_ele);
+            if(!neethi_policy)
+            {
+                return AXIS2_FAILURE;
+            }
+            svc = axis2_svc_client_get_svc(svc_client, env);
+            if(!svc)
+            {
+                return AXIS2_FAILURE;
+            }
+            desc = axis2_svc_get_base(svc, env);
+            if(!desc)
+            {
+                return AXIS2_FAILURE;
+            }
+            policy_include = axis2_desc_get_policy_include(desc, env);
+            if(!policy_include)
+            {
+                return AXIS2_FAILURE;
+            }
+            axis2_policy_include_add_policy_element(policy_include, env, AXIS2_SERVICE_POLICY, neethi_policy);
+            return AXIS2_SUCCESS;    
+        }
+        else
+            return AXIS2_FAILURE;
+    }
 
+    return AXIS2_FAILURE;
+}
+
+AXIS2_EXTERN axis2_status_t AXIS2_CALL
+axis2_svc_client_set_policy_from_file(axis2_svc_client_t *svc_client,
+    const axutil_env_t *env,
+    axis2_char_t *file_name)
+{
+
+    axiom_xml_reader_t *reader = NULL;
+    axiom_stax_builder_t *builder = NULL;
+    axiom_document_t *document = NULL;
+    axiom_node_t *root_node = NULL;
+
+
+    reader = axiom_xml_reader_create_for_file(env, file_name, NULL);
+
+    if (!reader)
+    {
+        AXIS2_ERROR_SET(env->error, AXIS2_ERROR_CREATING_XML_STREAM_READER,
+                AXIS2_FAILURE);
+        return AXIS2_FAILURE;
+    }
+
+    builder = axiom_stax_builder_create(env, reader);
+    if(!builder)
+    {
+        axiom_xml_reader_free(reader, env);
+        return AXIS2_FAILURE;
+    }
+    document = axiom_stax_builder_get_document(builder, env);
+
+    if(!document)
+    {
+        axiom_stax_builder_free(builder, env);
+        return AXIS2_FAILURE;
+    }
+
+    root_node = axiom_document_build_all(document, env);
+    if(!root_node)
+    {
+        axiom_stax_builder_free(builder, env);
+        return AXIS2_FAILURE;
+    }
+    
+    return axis2_svc_client_set_policy_from_om(svc_client, env, root_node);   
+}



---------------------------------------------------------------------
To unsubscribe, e-mail: axis-cvs-unsubscribe@ws.apache.org
For additional commands, e-mail: axis-cvs-help@ws.apache.org