code: @RequestMapping(value="/soy/compileJs", method=GET)
      public ResponseEntity<String> compile(@RequestParam(required = false, value="hash", defaultValue = "") final String hash,
                                                              @RequestParam(required = true, value = "file") final String[] templateFileNames,
                                                              @RequestParam(required = false, value = "locale") String locale,
                                                              @RequestParam(required = false, value = "disableProcessors", defaultValue = "false") String disableProcessors,
                                                              final HttpServletRequest request) throws IOException {
          return compileJs(templateFileNames, hash, new Boolean(disableProcessors).booleanValue(), request, locale);
      }
docs: An endpoint to compile an array of soy templates to JavaScript.
  
  This endpoint is a preferred way of compiling soy templates to JavaScript but it requires a user to compose a url
  on their own or using a helper class TemplateUrlComposer, which calculates checksum of a file and puts this in url
  so that whenever a file changes, after a deployment a JavaScript, url changes and a new hash is appended to url, which enforces
  getting of new compiles JavaScript resource.
  
  Invocation of this url may throw two types of http exceptions:
  1. notFound - usually when a TemplateResolver cannot find a template with an associated name
  2. error - usually when there is a permission error and a user is not allowed to compile a template into a JavaScript
  
  @param hash - some unique number that should be used when we are caching this resource in a browser and we use http cache headers
  @param templateFileNames - an array of template names, e.g. client-words,server-time, which may or may not contain extension
  currently three modes are supported - soy extension, js extension and no extension, which is preferred
  @param disableProcessors - whether the controller should run registered outputProcessors after the compilation is complete.
  @param request - HttpServletRequest
  @param locale - locale
  @return response entity, which wraps a compiled soy to JavaScript files.
  @throws IOException - io error