private Iterator handleInstallPath()

in src/main/java/org/apache/sling/maven/projectsupport/BundleListContentProvider.java [182:217]


    private Iterator<String> handleInstallPath(String path) {
        // Path is like
        // bundles/install.runMode/12
        // or a subset of that.
        // Extract optional run mode and start level from that
        if(path.endsWith("/")) {
            path = path.substring(0, path.length() - 1);
        }
        final String [] parts = path.substring(INSTALL_PATH_PREFIX.length()).split("/");
        if (parts.length > 2){
            throw new IllegalStateException("Cannot parse path " + path);
        }
        final String runMode = parts[0].length() == 0 ? null : parts[0].substring(1);
        final String startLevelInfo = parts.length > 1 ? parts[1] : null; 
        Set<String> result = new HashSet<String>();
        
        if(runMode == null && startLevelInfo == null) {
            // Root folder: add one subdir per start level that provides bundles
            addStartLevelSubdirs(result, INSTALL_PATH_PREFIX, null);
            
        } else if(startLevelInfo == null) {
            // The root of a run mode folder - one subdir per start
            // level which actually provides bundles
            addStartLevelSubdirs(result, path, runMode);
            
        } else {
            // A folder that contains bundles
            try {
                addBundles(result, Integer.parseInt(startLevelInfo), runMode);
            } catch (NumberFormatException e) {
                getLog().warn("Invalid start level info " + startLevelInfo + " in path " + path);
            }
        }
        
        return result.iterator();
    }