public ServiceRequest newRequest(ServiceAction action, boolean returnsTree, List<ServiceParameter> parameters,
ServicePayload payload, boolean returnsInboundConnections,
boolean returnsOutboundConnections, boolean analyzeQueryOnly,
boolean returnQuery) throws Exception {
if ( em != null ) {
if ( action != null ) {
em.incrementAggregateCounters( null, null, null,
APPLICATION_REQUESTS_PER.concat( action.toString().toLowerCase() ), 1 );
}
}
if ( !ServiceParameter.moreParameters( parameters ) ) {
return getApplicationRequest( action, returnsTree, parameters, payload );
}
if ( !ServiceParameter.firstParameterIsName( parameters ) ) {
return null;
}
String nameParam = ServiceParameter.firstParameter( parameters ).getName();
if ( appService.hasEntityCommand( nameParam ) || appService.hasEntityDictionary( nameParam ) ) {
return getApplicationRequest( action, returnsTree, parameters, payload );
}
if ( action == ServiceAction.POST &&
ServiceParameter.lastParameterIsName( parameters ) &&
"notifications".equals( parameters.get( parameters.size() - 1 ).getName() ) ) {
return new ServiceRequest( this, action, "notifications", parameters, payload, returnsTree );
}
String serviceName = pluralize( ServiceParameter.dequeueParameter( parameters ).getName() );
return new ServiceRequest( this, action, serviceName, parameters, payload, returnsTree,
returnsInboundConnections, returnsOutboundConnections, analyzeQueryOnly, returnQuery);
}