currently i am involving some significant development with WSO2 ESB. for
that i need to to some comparison and URL construction. (basically string
operations) those task can do using filter mediator as well as script
mediator. but when use filter mediator code become so bulky and ugly :(
when use script mediator its easy to read , maintainable and nice...
since those are non functional iam concern about performance.
for example (given two example are NOT same or relevant)
[1]
<script language="js">
<![CDATA[
var apiUrl = mc.getProperty('uri.var.apiUrl')+'/v1/people/';
var id = mc.getProperty('uri.var.id');
var publicProfileUrl =
mc.getProperty('uri.var.publicProfileUrl');
var searchCriteria = mc.getProperty('uri.var.searchCriteria');
var query ='';
var start = mc.getProperty('uri.var.start');
var count = mc.getProperty('uri.var.count');
var modified = mc.getProperty('uri.var.modified');
var modifiedSince = mc.getProperty('uri.var.modifiedSince');
if(id!="")
{
query ='';
query=apiUrl+'id=' + mc.getProperty('uri.var.id') +
'/connections';
}
else if(publicProfileUrl!="")
{
query ='';
query=apiUrl+'url=' +
mc.getProperty('uri.var.publicProfileUrl') + '/connections';
}
else
{
query ='';
query=apiUrl+'~/connections';
}
if(searchCriteria!="")
{
query=query + ':' + '(' +
mc.getProperty('uri.var.searchCriteria') + ')';
}
query = query + '?oauth2_access_token=' +
mc.getProperty('uri.var.accessToken');
if(start!="")
{
query=query + '&start=' + mc.getProperty('uri.var.start');
}
if(count!="")
{
query=query + '&count=' + mc.getProperty('uri.var.count');
}
if(modified!="")
{
query=query + '&modified=' +
mc.getProperty('uri.var.modified');
}
if(modifiedSince!="")
{
query=query + '&modified-since=' +
mc.getProperty('uri.var.modifiedSince');
}
query = query + '&format=json';
mc.setProperty('uri.var.query', query);
]]></script>
[2] filter
<filter
xpath="not(get-property('uri.var.companyId') = '') or
not(get-property('uri.var.universalName') = '') or
not(get-property('uri.var.emailDomains') = '') or
not(get-property('uri.var.companyAdmin') = '')">
<then>
<filter
xpath="not(get-property('uri.var.companyId') = '') and
not(get-property('uri.var.universalName') = '')">
<then>
<call>
<endpoint>
<http method="get"
uri-template="{uri.var.apiUrl}/v1/companies::({uri.var.companyId},universal-name={uri.var.universalName})?oauth2_access_token={uri.var.accessToken}&format=json"
/>
</endpoint>
</call>
</then>
<else>
<filter
xpath="not(get-property('uri.var.companyId') = '')">
<then>
<call>
<endpoint>
<http method="get"
uri-template="{uri.var.apiUrl}/v1/companies/{uri.var.companyId}?oauth2_access_token={uri.var.accessToken}&format=json"
/>
</endpoint>
</call>
</then>
<else>
<filter
xpath="not(get-property('uri.var.universalName') = '')">
<then>
<call>
<endpoint>
<http method="get"
uri-template="{uri.var.apiUrl}/v1/companies/universal-name={uri.var.universalName}?oauth2_access_token={uri.var.accessToken}&format=json"
/>
</endpoint>
</call>
</then>
<else>
<filter
xpath="not(get-property('uri.var.emailDomains') = '')">
<then>
<call>
<endpoint>
<http method="get"
uri-template="{uri.var.apiUrl}/v1/companies?email-domain={uri.var.emailDomains}&oauth2_access_token={uri.var.accessToken}&format=json"
/>
</endpoint>
</call>
</then>
<else>
<filter
xpath="not(get-property('uri.var.companyAdmin') = '')">
<then>
<call>
<endpoint>
<http
method="get"
uri-template="{uri.var.apiUrl}/v1/companies?is-company-admin={uri.var.companyAdmin}&oauth2_access_token={uri.var.accessToken}&format=json"
/>
</endpoint>
</call>
</then>
</filter>
</else>
</filter>
</else>
</filter>
</else>
</filter>
</else>
</filter>
</then>
<else>
<call>
<endpoint>
<http method="get"
uri-template="{uri.var.apiUrl}/v1/companies?oauth2_access_token={uri.var.accessToken}&format=json"
/>
</endpoint>
</call>
</else>
</filter>
_______________________________________________
Dev mailing list
[email protected]
http://wso2.org/cgi-bin/mailman/listinfo/dev