blob: 8f80f861ec835c3d43b9311c1eb0e8ba4eed2ded [file] [log] [blame]
<xsl:stylesheet version="1.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform">
<xsl:output method="text"/>
<xsl:template match="/class">
<xsl:variable name="interfaceName"><xsl:value-of select="@interfaceName"/></xsl:variable>
<xsl:variable name="package"><xsl:value-of select="@package"/></xsl:variable>
<xsl:variable name="isSync"><xsl:value-of select="@isSync"/></xsl:variable>
<xsl:variable name="isAsync"><xsl:value-of select="@isAsync"/></xsl:variable>
<xsl:variable name="soapVersion"><xsl:value-of select="@soap-version"/></xsl:variable>
<xsl:variable name="callbackname"><xsl:value-of select="@callbackname"/></xsl:variable>
<xsl:variable name="method-prefix"><xsl:value-of select="@prefix"/></xsl:variable>
<xsl:variable name="qname"><xsl:value-of select="@qname"/></xsl:variable>
/**
* <xsl:value-of select="@name"/>.c
*
* This file was auto-generated from WSDL for "<xsl:value-of select="$qname"/>" service
* by the Apache Axis2/C version: #axisVersion# #today#
*/
#include "<xsl:value-of select="@name"/>.h"
/**
* <xsl:value-of select="@name"/> C implementation
*/
axis2_stub_t*
<xsl:value-of select="$method-prefix"/>_create (const axis2_env_t *env,
axis2_char_t *client_home,
axis2_char_t *endpoint_uri)
{
axis2_stub_t *stub = NULL;
axis2_endpoint_ref_t *endpoint_ref = NULL;
AXIS2_FUNC_PARAM_CHECK ( client_home, env, NULL)
if (NULL == endpoint_uri )
{
endpoint_uri = <xsl:value-of select="$method-prefix"/>_get_endpoint_uri_from_wsdl( env );
}
endpoint_ref = axis2_endpoint_ref_create(env, endpoint_uri);
stub = axis2_stub_create_with_endpoint_ref_and_client_home ( env, endpoint_ref, client_home );
<xsl:value-of select="$method-prefix"/>_populate_services( stub, env );
return stub;
}
void <xsl:value-of select="$method-prefix"/>_populate_services( axis2_stub_t *stub, const axis2_env_t *env)
{
axis2_svc_client_t *svc_client = NULL;
axis2_qname_t *svc_qname = NULL;
axis2_qname_t *op_qname = NULL;
axis2_svc_t *svc = NULL;
axis2_op_t *op = NULL;
/* Modifying the Service */
svc_client = AXIS2_STUB_GET_SVC_CLIENT (stub, env );
svc = (axis2_svc_t*)AXIS2_SVC_CLIENT_GET_AXIS_SERVICE ( svc_client, env );
axis2_qname_create(env,"<xsl:value-of select="@servicename"/>" ,NULL, NULL);
AXIS2_SVC_SET_QNAME (svc, env, svc_qname);
/* creating the operations*/
<xsl:for-each select="method">
op_qname = axis2_qname_create(env,
"<xsl:value-of select="@localpart"/>" ,
"<xsl:value-of select="@namespace"/>",
NULL);
op = axis2_op_create_with_qname(env, op_qname);
<xsl:choose>
<xsl:when test="@mep='10'">
AXIS2_OP_SET_MSG_EXCHANGE_PATTERN(op, env, AXIS2_MEP_URI_IN_ONLY);
</xsl:when>
<xsl:otherwise>
AXIS2_OP_SET_MSG_EXCHANGE_PATTERN(op, env, AXIS2_MEP_URI_OUT_IN);
</xsl:otherwise>
</xsl:choose>
AXIS2_SVC_ADD_OP(svc, env, op);
</xsl:for-each>
}
/**
*return end point picked from wsdl
*/
axis2_char_t*
<xsl:value-of select="$method-prefix"/>_get_endpoint_uri_from_wsdl ( const axis2_env_t *env )
{
axis2_char_t *endpoint_uri = NULL;
/* set the address from here */
<xsl:for-each select="endpoint">
<xsl:choose>
<xsl:when test="position()=1">
endpoint_uri = "<xsl:value-of select="."/>";
</xsl:when>
</xsl:choose>
</xsl:for-each>
return endpoint_uri;
}
<xsl:for-each select="method">
<xsl:variable name="outputours"><xsl:value-of select="output/param/@ours"></xsl:value-of></xsl:variable>
<xsl:variable name="outputtype">
<xsl:choose>
<xsl:when test="output/param/@ours">axis2_<xsl:value-of select="output/param/@type"></xsl:value-of>_t*</xsl:when>
<xsl:otherwise><xsl:value-of select="output/param/@type"></xsl:value-of></xsl:otherwise>
</xsl:choose>
</xsl:variable>
<xsl:variable name="caps-outputtype"><xsl:value-of select="output/param/@caps-type"></xsl:value-of></xsl:variable>
<xsl:variable name="style"><xsl:value-of select="@style"></xsl:value-of></xsl:variable>
<xsl:variable name="soapAction"><xsl:value-of select="@soapaction"></xsl:value-of></xsl:variable>
<xsl:variable name="mep"><xsl:value-of select="@mep"/></xsl:variable>
<xsl:variable name="method-name"><xsl:value-of select="@name"/></xsl:variable>
<xsl:variable name="method-ns"><xsl:value-of select="@namespace"/> </xsl:variable>
<!-- Code generation for the in-out mep -->
<xsl:if test="$mep='12'">
<xsl:if test="$isSync='1'">
/**
* auto generated method signature
* for "<xsl:value-of select="@qname"/>" operation.
<xsl:for-each select="input/param[@type!='']">* @param <xsl:value-of select="@name"></xsl:value-of></xsl:for-each>
* @return
*/
<xsl:choose>
<xsl:when test="$outputtype=''">void</xsl:when> <!--this case is unexpected-->
<xsl:otherwise><xsl:value-of select="$outputtype"/></xsl:otherwise>
</xsl:choose>
<xsl:text> </xsl:text>
<xsl:value-of select="$method-prefix"/>_<xsl:value-of select="@name"/>( axis2_stub_t *stub, const axis2_env_t *env<xsl:for-each select="input/param[@type!='']">,
<xsl:variable name="inputtype">
<xsl:if test="@ours">axis2_</xsl:if><xsl:value-of select="@type"/><xsl:if test="@ours">_t*</xsl:if>
</xsl:variable>
<xsl:if test="position()>1">,</xsl:if><xsl:value-of select="$inputtype"/><xsl:text> </xsl:text><xsl:value-of select="@name"/>
</xsl:for-each>)
{
axis2_svc_client_t *svc_client = NULL;
axis2_options_t *options = NULL;
axiom_node_t *ret_node = NULL;
const axis2_char_t *soap_action = NULL;
axis2_qname_t *op_qname = NULL;
axiom_node_t *payload = NULL;
<xsl:if test="output/param/@ours">
<!-- this means data binding is enable -->
<xsl:value-of select="$outputtype"/> ret_val = NULL;
</xsl:if>
<!-- for service client currently suppported only 1 input param -->
<xsl:for-each select="input/param[@type!='']">
<xsl:if test="position()=1">
<xsl:choose>
<xsl:when test="@ours">
payload = AXIS2_<xsl:value-of select="@caps-type"/>_PARSE_OM(<xsl:value-of select="@name"/>, env, NULL);
</xsl:when>
<xsl:otherwise>
payload = <xsl:value-of select="@name"/>;
</xsl:otherwise>
</xsl:choose>
</xsl:if>
</xsl:for-each>
options = AXIS2_STUB_GET_OPTIONS( stub, env);
if ( NULL == options )
{
AXIS2_LOG_ERROR(env->log, AXIS2_LOG_SI, "options is null in stub: Error code:"
" %d :: %s", env->error->error_number,
AXIS2_ERROR_GET_MESSAGE(env->error));
return NULL;
}
svc_client = AXIS2_STUB_GET_SVC_CLIENT (stub, env );
soap_action = AXIS2_OPTIONS_GET_ACTION ( options, env );
if ( NULL == soap_action )
{
soap_action = "<xsl:value-of select="$soapAction"/>";
AXIS2_OPTIONS_SET_ACTION( options, env, soap_action );
}
<xsl:if test="$soapVersion='1.2'">
AXIS2_OPTIONS_SET_SOAP_VERSION(options, env, AXIOM_SOAP12 );
</xsl:if>
<xsl:if test="$soapVersion!='1.1'">
AXIS2_OPTIONS_SET_SOAP_VERSION(options, env, AXIOM_SOAP11 );
</xsl:if>
op_qname = axis2_qname_create(env,
"<xsl:value-of select="@localpart"/>" ,
"<xsl:value-of select="@namespace"/>",
NULL);
ret_node = AXIS2_SVC_CLIENT_SEND_RECEIVE_WITH_OP_QNAME( svc_client, env, op_qname, payload);
<xsl:choose>
<xsl:when test="$outputtype=''">
return;
</xsl:when>
<xsl:when test="output/param/@ours">
if ( NULL == ret_node )
{
return NULL;
}
ret_val = axis2_<xsl:value-of select="output/param/@type"/>_create(env);
AXIS2_<xsl:value-of select="$caps-outputtype"/>_BUILD_OM(ret_val, env, ret_node );
return ret_val;
</xsl:when>
<xsl:otherwise>
return ret_node;
</xsl:otherwise>
</xsl:choose>
}
</xsl:if> <!--close for test="$isSync='1'-->
<!-- Async method generation -->
<xsl:if test="$isAsync='1'">
/**
* auto generated method signature for asynchronous invocations
* for "<xsl:value-of select="@qname"/>" operation.
<!-- select only the body parameters -->
<xsl:for-each select="input/param[@type!='']">* @param <xsl:value-of select="@name"></xsl:value-of></xsl:for-each>
* @param on_complete callback to handle on complete
* @param on_error callback to handle on error
*/
<xsl:variable name="callbackoncomplete"><xsl:value-of select="$callbackname"></xsl:value-of><xsl:text>_on_complete</xsl:text></xsl:variable>
<xsl:variable name="callbackonerror"><xsl:value-of select="$callbackname"></xsl:value-of><xsl:text>_on_error</xsl:text></xsl:variable>
void <xsl:value-of select="$method-prefix"/>_<xsl:value-of select="@name"/>_start( axis2_stub_t *stub, const axis2_env_t *env<xsl:for-each select="input/param[@type!='']">,
<xsl:variable name="inputtype">
<xsl:if test="@ours">axis2_</xsl:if><xsl:value-of select="@type"/><xsl:if test="@ours">_t*</xsl:if>
</xsl:variable>
<xsl:if test="position()>1">,</xsl:if><xsl:value-of select="$inputtype"/><xsl:text> </xsl:text><xsl:value-of select="@name"/>
</xsl:for-each>,
axis2_status_t ( AXIS2_CALL *on_complete ) (struct axis2_callback *, const axis2_env_t *) ,
axis2_status_t ( AXIS2_CALL *on_error ) (struct axis2_callback *, const axis2_env_t *, int ) )
{
axis2_callback_t *callback = NULL;
axis2_svc_client_t *svc_client = NULL;
axis2_options_t *options = NULL;
const axis2_char_t *soap_action = NULL;
axiom_node_t *payload = NULL;
<!-- for service client currently suppported only 1 input param -->
<xsl:for-each select="input/param[@type!='']">
<xsl:if test="position()=1">
<xsl:choose>
<xsl:when test="@ours">
payload = AXIS2_<xsl:value-of select="@caps-type"/>_PARSE_OM(<xsl:value-of select="@name"/>, env, NULL);
</xsl:when>
<xsl:otherwise>
payload = <xsl:value-of select="@name"/>;
</xsl:otherwise>
</xsl:choose>
</xsl:if>
</xsl:for-each>
options = AXIS2_STUB_GET_OPTIONS( stub, env);
if ( NULL == options )
{
AXIS2_LOG_ERROR( env->log, AXIS2_LOG_SI, "options is null in stub: Error code:"
" %d :: %s", env->error->error_number,
AXIS2_ERROR_GET_MESSAGE(env->error));
return;
}
svc_client = AXIS2_STUB_GET_SVC_CLIENT (stub, env );
soap_action = AXIS2_OPTIONS_GET_ACTION ( options, env );
if ( NULL == soap_action )
{
soap_action = "<xsl:value-of select="$soapAction"/>";
AXIS2_OPTIONS_SET_ACTION( options, env, soap_action );
}
<xsl:choose>
<xsl:when test="$soapVersion='1.2'">
AXIS2_OPTIONS_SET_SOAP_VERSION(options, env, AXIOM_SOAP12 );
</xsl:when>
<xsl:otherwise>
AXIS2_OPTIONS_SET_SOAP_VERSION(options, env, AXIOM_SOAP11 );
</xsl:otherwise>
</xsl:choose>
callback = axis2_callback_create(env);
/* Set our on_complete fucntion pointer to the callback object */
AXIS2_CALLBACK_SET_ON_COMPLETE(callback, on_complete);
/* Set our on_error function pointer to the callback object */
AXIS2_CALLBACK_SET_ON_ERROR(callback, on_error);
/* Send request */
AXIS2_SVC_CLIENT_SEND_RECEIVE_NON_BLOCKING(svc_client, env, payload, callback);
}
</xsl:if> <!--close for test="$isASync='1'-->
<!-- End of in-out mep -->
</xsl:if> <!-- close for test="$mep='http://www.w3.org/2004/08/wsdl/in-out' -->
<xsl:if test="$mep='10'">
/**
* auto generated method signature for in only mep invocations
* for "<xsl:value-of select="@qname"/>" operation.
<!-- select only the body parameters -->
<xsl:for-each select="input/param[@type!='']">* @param <xsl:value-of select="@name"></xsl:value-of></xsl:for-each>
* @param on_complete callback to handle on complete
* @param on_error callback to handle on error
*/
axis2_status_t
<xsl:value-of select="$method-prefix"/>_<xsl:value-of select="@name"/>( axis2_stub_t *stub, const axis2_env_t *env <xsl:for-each select="input/param[@type!='']"> ,
<xsl:variable name="inputtype">
<xsl:if test="@ours">axis2_</xsl:if><xsl:value-of select="@type"/><xsl:if test="@ours">_t*</xsl:if>
</xsl:variable>
<xsl:if test="position()>1">,</xsl:if><xsl:value-of select="$inputtype"/><xsl:text> </xsl:text><xsl:value-of select="@name"/>
</xsl:for-each>)
{
axis2_status_t status;
axis2_svc_client_t *svc_client = NULL;
axis2_options_t *options = NULL;
const axis2_char_t *soap_action = NULL;
axis2_qname_t *op_qname = NULL;
axiom_node_t *payload = NULL;
<!-- for service client currently suppported only 1 input param -->
<xsl:for-each select="input/param[@type!='']">
<xsl:if test="position()=1">
<xsl:choose>
<xsl:when test="@ours">
payload = AXIS2_<xsl:value-of select="@caps-type"/>_PARSE_OM(<xsl:value-of select="@name"/>, env, NULL);
</xsl:when>
<xsl:otherwise>
payload = <xsl:value-of select="@name"/>;
</xsl:otherwise>
</xsl:choose>
</xsl:if>
</xsl:for-each>
options = AXIS2_STUB_GET_OPTIONS( stub, env);
if ( NULL == options )
{
AXIS2_LOG_ERROR(env->log, AXIS2_LOG_SI, "options is null in stub: Error code:"
" %d :: %s", env->error->error_number,
AXIS2_ERROR_GET_MESSAGE(env->error));
return AXIS2_FAILURE;
}
svc_client = AXIS2_STUB_GET_SVC_CLIENT (stub, env );
soap_action = AXIS2_OPTIONS_GET_ACTION ( options, env );
if ( NULL == soap_action )
{
soap_action = "<xsl:value-of select="$soapAction"/>";
AXIS2_OPTIONS_SET_ACTION( options, env, soap_action );
}
<xsl:choose>
<xsl:when test="$soapVersion='1.2'">
AXIS2_OPTIONS_SET_SOAP_VERSION(options, env, AXIOM_SOAP12 );
</xsl:when>
<xsl:otherwise>
AXIS2_OPTIONS_SET_SOAP_VERSION(options, env, AXIOM_SOAP11 );
</xsl:otherwise>
</xsl:choose>
op_qname = axis2_qname_create(env,
"<xsl:value-of select="@localpart"/>" ,
"<xsl:value-of select="@namespace"/>",
NULL);
status = AXIS2_SVC_CLIENT_SEND_ROBUST_WITH_OP_QNAME( svc_client, env, op_qname, payload);
return status;
}
</xsl:if> <!-- close for test="$mep='http://www.w3.org/2004/08/wsdl/in-only' -->
</xsl:for-each> <!-- close of for-each select = "method" -->
</xsl:template>
</xsl:stylesheet>