Defense.notNull(cycle, "cycle");
Defense.notNull(parameters, "parameters");
squeezeServiceParameters(parameters);
IEngine engine = cycle.getEngine();
ServiceEncoding serviceEncoding = createServiceEncoding(parameters);
// Give persistent property strategies a chance to store extra data
// into the link.
if (stateful)
_persistenceStrategySource.addParametersForPersistentProperties(serviceEncoding, cycle);
String fullServletPath = _contextPath + serviceEncoding.getServletPath();
return new EngineServiceLink(cycle, fullServletPath, engine.getOutputEncoding(), _codec,
_request, parameters, stateful);
}