private void _setSpriteImages(ServletContext servletContext, Theme theme, String resourcePath)
      throws Exception {

    if (!resourcePath.startsWith(StringPool.SLASH)) {
      resourcePath = StringPool.SLASH.concat(resourcePath);
    }

    Set<String> resourcePaths = servletContext.getResourcePaths(resourcePath);

    if (resourcePaths == null) {
      return;
    }

    List<URL> imageURLs = new ArrayList<URL>(resourcePaths.size());

    for (String curResourcePath : resourcePaths) {
      if (curResourcePath.endsWith(StringPool.SLASH)) {
        _setSpriteImages(servletContext, theme, curResourcePath);
      } else if (curResourcePath.endsWith(".png")) {
        URL imageURL = servletContext.getResource(curResourcePath);

        if (imageURL != null) {
          imageURLs.add(imageURL);
        } else {
          if (ServerDetector.isTomcat()) {
            if (_log.isInfoEnabled()) {
              _log.info(ServletContextUtil.LOG_INFO_SPRITES);
            }
          } else {
            _log.error("Real path for " + curResourcePath + " is null");
          }
        }
      }
    }

    String spriteFileName = resourcePath.concat(PropsValues.SPRITE_FILE_NAME);
    String spritePropertiesFileName = resourcePath.concat(PropsValues.SPRITE_PROPERTIES_FILE_NAME);
    URL spritePropertiesRootURL = servletContext.getResource(StringPool.SLASH);

    Properties spriteProperties =
        SpriteProcessorUtil.generate(
            servletContext,
            imageURLs,
            spriteFileName,
            spritePropertiesFileName,
            spritePropertiesRootURL,
            16,
            16,
            10240);

    if (spriteProperties == null) {
      return;
    }

    String contextPath = ContextPathUtil.getContextPath(servletContext);

    spriteFileName = contextPath.concat(SpriteProcessor.PATH).concat(spriteFileName);

    theme.setSpriteImages(spriteFileName, spriteProperties);
  }
  private void _setSpriteImages(ServletContext servletContext, Theme theme, String resourcePath)
      throws Exception {

    if (!resourcePath.startsWith(StringPool.SLASH)) {
      resourcePath = StringPool.SLASH.concat(resourcePath);
    }

    Set<String> resourcePaths = servletContext.getResourcePaths(resourcePath);

    if ((resourcePaths == null) || resourcePaths.isEmpty()) {
      return;
    }

    List<URL> imageURLs = new ArrayList<URL>(resourcePaths.size());

    for (String curResourcePath : resourcePaths) {
      if (curResourcePath.endsWith(StringPool.SLASH)) {
        _setSpriteImages(servletContext, theme, curResourcePath);
      } else if (curResourcePath.endsWith(".png")) {
        URL imageURL = servletContext.getResource(curResourcePath);

        if (imageURL != null) {
          imageURLs.add(imageURL);
        } else {
          _log.error("Resource URL for " + curResourcePath + " is null");
        }
      }
    }

    String spriteRootDirName = PropsValues.SPRITE_ROOT_DIR;
    String spriteFileName = resourcePath.concat(PropsValues.SPRITE_FILE_NAME);
    String spritePropertiesFileName = resourcePath.concat(PropsValues.SPRITE_PROPERTIES_FILE_NAME);
    String rootPath = ServletContextUtil.getRootPath(servletContext);

    Properties spriteProperties =
        SpriteProcessorUtil.generate(
            servletContext,
            imageURLs,
            spriteRootDirName,
            spriteFileName,
            spritePropertiesFileName,
            rootPath,
            16,
            16,
            10240);

    if (spriteProperties == null) {
      return;
    }

    String contextPath = ContextPathUtil.getContextPath(servletContext);

    spriteFileName = contextPath.concat(SpriteProcessor.PATH).concat(spriteFileName);

    theme.setSpriteImages(spriteFileName, spriteProperties);
  }
  private void _setSpriteImages(ServletContext servletContext, Theme theme, String resourcePath)
      throws Exception {

    Set<String> resourcePaths = servletContext.getResourcePaths(resourcePath);

    if (resourcePaths == null) {
      return;
    }

    List<File> images = new ArrayList<File>(resourcePaths.size());

    for (String curResourcePath : resourcePaths) {
      if (curResourcePath.endsWith(StringPool.SLASH)) {
        _setSpriteImages(servletContext, theme, curResourcePath);
      } else if (curResourcePath.endsWith(".png")) {
        String realPath = ServletContextUtil.getRealPath(servletContext, curResourcePath);

        if (realPath != null) {
          images.add(new File(realPath));
        } else {
          if (ServerDetector.isTomcat()) {
            if (_log.isInfoEnabled()) {
              _log.info(ServletContextUtil.LOG_INFO_SPRITES);
            }
          } else {
            _log.error("Real path for " + curResourcePath + " is null");
          }
        }
      }
    }

    String spriteFileName = ".sprite.png";
    String spritePropertiesFileName = ".sprite.properties";
    String spritePropertiesRootPath =
        ServletContextUtil.getRealPath(servletContext, theme.getImagesPath());

    Properties spriteProperties =
        SpriteProcessorUtil.generate(
            images,
            spriteFileName,
            spritePropertiesFileName,
            spritePropertiesRootPath,
            16,
            16,
            10240);

    if (spriteProperties == null) {
      return;
    }

    spriteFileName =
        resourcePath.substring(theme.getImagesPath().length(), resourcePath.length())
            + spriteFileName;

    theme.setSpriteImages(spriteFileName, spriteProperties);
  }