WroUtil { public static String getPathInfoFromLocation(final HttpServletRequest request, final String location) { if (StringUtils.isEmpty(location)) { throw new IllegalArgumentException("Location cannot be empty string!"); } final String contextPath = request.getContextPath(); if (contextPath != null) { if (startsWithIgnoreCase(location, contextPath)) { return location.substring(contextPath.length()); } else { return location; } } final String noSlash = location.substring(1); final int nextSlash = noSlash.indexOf('/'); if (nextSlash == -1) { return ""; } return noSlash.substring(nextSlash); } private  WroUtil(); static ThreadFactory createDaemonThreadFactory(final String name); static String toDateAsString(final long milliseconds); static String getPathInfoFromLocation(final HttpServletRequest request, final String location); static boolean startsWithIgnoreCase(final String str, final String prefix); static String toPackageAsFolder(final Class<?> clazz); static String getServletPathFromLocation(final HttpServletRequest request, final String location); @SuppressWarnings("unchecked") static boolean isGzipSupported(final HttpServletRequest request); static String toJSMultiLineString(final String data); static boolean matchesUrl(final HttpServletRequest request, final String path); static ResourcePostProcessor newResourceProcessor(final Resource resource,
      final ResourcePreProcessor preProcessor); static WroModelFactory factoryFor(final WroModel model); static ObjectFactory<T> simpleObjectFactory(final T object); static String loadRegexpWithKey(final String key); static String getImplementationVersion(); static void safeCopy(final Reader reader, final Writer writer); static File createTempFile(); static File createTempFile(final String extension); static File createTempDirectory(); static String joinPath(final String left, final String right); static final String cleanImageUrl(final String imageUrl); static final String removeQueryString(final String path); static final File getWorkingDirectory(); static final String getFullPath(final String path); static final String normalize(final String path); static final Pattern EMTPY_LINE_PATTERN; static final InputStream EMPTY_STREAM; }
@Test(expected = IllegalArgumentException.class) public void cannotComputeEmptyLocation() { WroUtil.getPathInfoFromLocation(mockContextPathRequest(null), ""); }
@Test public void computePathFromSomeLocation() { final String result = WroUtil.getPathInfoFromLocation(mockContextPathRequest(null), "location"); assertEquals("", result); }
@Test public void computePathFromNestedLocation() { final String result = WroUtil.getPathInfoFromLocation(mockContextPathRequest(null), "/a/b/c/d"); assertEquals("/b/c/d", result); }
@Test public void computePathFromLocationWithContextRoot() { final String result = WroUtil.getPathInfoFromLocation(mockContextPathRequest("/a"), "/a/b/c/d"); assertEquals("/b/c/d", result); }
@Test public void computePathFromLocationWithDifferentContextRoot() { final String result = WroUtil.getPathInfoFromLocation(mockContextPathRequest("/z"), "/a/b/c/d"); assertEquals("/a/b/c/d", result); }