code: protected ControllerPath getControllerPath(String uri) {
  
          boolean rootPath = uri.equals("/");
          boolean useRootController = rootPath && rootControllerName != null;
  
          if (useRootController) {
              return new ControllerPath(rootControllerName);
          } else if (rootControllerName == null && rootPath) {
              LOGGER.warn("URI is: '/', but root controller not set");
              return new ControllerPath();
          } else {
              String controllerPackage;
              if ((controllerPackage = findPackageSuffix(uri)) != null) {
                  String controllerName = findControllerNamePart(controllerPackage, uri);
                  return new ControllerPath(controllerName, controllerPackage);
              } else {
                  return new ControllerPath(uri.split("/")[1]);//no package suffix
              }
          }
      }
docs: Finds a controller path from URI. Controller path includes a package prefix taken from URI, similar to:
  <p/>
  <code>http://host/context/admin/printers/show/1</code>, where "admin" is a "package_suffix", "printers" is a
  "controller_name".
  <p/>
  for example above, the method will Map with two keys: "package_suffix" and "controller_name"
  
  @param uri this is a URI - the information after context : "controller/action/whatever".
  @return map with two keys: "controller_name" and "package_suffix", both of which can be null.