This is an automated email from the ASF dual-hosted git repository. rombert pushed a commit to branch master in repository https://gitbox.apache.org/repos/asf/sling-maven-launchpad-plugin.git
commit d70e8279cd26efa58df71718a26c393500b2b743 Author: Bertrand Delacretaz <[email protected]> AuthorDate: Thu Oct 24 14:34:35 2013 +0000 SLING-3205 - refactor if statement into more readable methods git-svn-id: https://svn.apache.org/repos/asf/sling/trunk@1535392 13f79535-47bb-0310-9956-ffa450edef68 --- .../projectsupport/BundleListContentProvider.java | 136 ++++++++++++--------- .../BundleListContentProviderTest.java | 11 +- 2 files changed, 87 insertions(+), 60 deletions(-) diff --git a/src/main/java/org/apache/sling/maven/projectsupport/BundleListContentProvider.java b/src/main/java/org/apache/sling/maven/projectsupport/BundleListContentProvider.java index cfe1c46..472ec6c 100644 --- a/src/main/java/org/apache/sling/maven/projectsupport/BundleListContentProvider.java +++ b/src/main/java/org/apache/sling/maven/projectsupport/BundleListContentProvider.java @@ -46,82 +46,100 @@ import org.apache.sling.maven.projectsupport.bundlelist.v1_0_0.StartLevel; abstract class BundleListContentProvider implements LaunchpadContentProvider { private final File resourceProviderRoot; + private final static List<String> EMPTY_STRING_LIST = Collections.emptyList(); BundleListContentProvider(File resourceProviderRoot) { this.resourceProviderRoot = resourceProviderRoot; } - - public Iterator<String> getChildren(String path) { - if (path.equals(BUNDLE_PATH_PREFIX)) { - final Set<String> levels = new HashSet<String>(); - for (final StartLevel level : getInitializedBundleList().getStartLevels()) { - // we treat the boot level as level 1 - if ( level.getStartLevel() == -1 ) { - levels.add(BUNDLE_PATH_PREFIX + "/1/"); - } else { - levels.add(BUNDLE_PATH_PREFIX + "/" + level.getLevel() + "/"); - } + + private Iterator<String> handleBundlePathRoot(String path) { + final Set<String> levels = new HashSet<String>(); + for (final StartLevel level : getInitializedBundleList().getStartLevels()) { + // we treat the boot level as level 1 + if ( level.getStartLevel() == -1 ) { + levels.add(BUNDLE_PATH_PREFIX + "/1/"); + } else { + levels.add(BUNDLE_PATH_PREFIX + "/" + level.getLevel() + "/"); } - return levels.iterator(); - } else if (path.equals("resources/corebundles")) { - List<String> empty = Collections.emptyList(); - return empty.iterator(); - } else if (path.equals(CONFIG_PATH_PREFIX)) { - if (getConfigDirectory().exists() && getConfigDirectory().isDirectory()) { - File[] configFiles = getConfigDirectory().listFiles(new FileFilter() { + } + return levels.iterator(); + } + + private Iterator<String> handleConfigPath() { + if (getConfigDirectory().exists() && getConfigDirectory().isDirectory()) { + File[] configFiles = getConfigDirectory().listFiles(new FileFilter() { - public boolean accept(File file) { - return file.isFile(); - } - }); + public boolean accept(File file) { + return file.isFile(); + } + }); - List<String> fileNames = new ArrayList<String>(); - for (File cfgFile : configFiles) { - if (cfgFile.isFile()) { - fileNames.add(CONFIG_PATH_PREFIX + "/" + cfgFile.getName()); - } + List<String> fileNames = new ArrayList<String>(); + for (File cfgFile : configFiles) { + if (cfgFile.isFile()) { + fileNames.add(CONFIG_PATH_PREFIX + "/" + cfgFile.getName()); } + } - return fileNames.iterator(); + return fileNames.iterator(); - } else { - List<String> empty = Collections.emptyList(); - return empty.iterator(); - } - } else if (path.startsWith(BUNDLE_PATH_PREFIX)) { - final String startLevelInfo = path.substring(BUNDLE_PATH_PREFIX.length() + 1); - try { - final int startLevel = Integer.parseInt(startLevelInfo); - - final List<String> bundles = new ArrayList<String>(); - for (final StartLevel level : getInitializedBundleList().getStartLevels()) { - if (level.getStartLevel() == startLevel || (startLevel == 1 && level.getStartLevel() == -1)) { - for (final Bundle bundle : level.getBundles()) { - final ArtifactDefinition d = new ArtifactDefinition(bundle, startLevel); - try { - final Artifact artifact = getArtifact(d); - bundles.add(artifact.getFile().toURI().toURL().toExternalForm()); - } catch (Exception e) { - getLog().error("Unable to resolve artifact ", e); - } + } else { + return EMPTY_STRING_LIST.iterator(); + } + } + + private Iterator<String> handleBundlePathFolder(String path) { + final String startLevelInfo = path.substring(BUNDLE_PATH_PREFIX.length() + 1); + try { + final int startLevel = Integer.parseInt(startLevelInfo); + + final List<String> bundles = new ArrayList<String>(); + for (final StartLevel level : getInitializedBundleList().getStartLevels()) { + if (level.getStartLevel() == startLevel || (startLevel == 1 && level.getStartLevel() == -1)) { + for (final Bundle bundle : level.getBundles()) { + final ArtifactDefinition d = new ArtifactDefinition(bundle, startLevel); + try { + final Artifact artifact = getArtifact(d); + bundles.add(artifact.getFile().toURI().toURL().toExternalForm()); + } catch (Exception e) { + getLog().error("Unable to resolve artifact ", e); } } } - return bundles.iterator(); - - } catch (NumberFormatException e) { - // we ignore this } + return bundles.iterator(); + + } catch (NumberFormatException e) { + // we ignore this + } + return null; + } + + private Iterator<String> handleResourcesRoot() { + final Set<String> subDirs = new HashSet<String>(); + subDirs.add(BUNDLE_PATH_PREFIX); + subDirs.add(CONFIG_PATH_PREFIX); + subDirs.add("resources/corebundles"); + return subDirs.iterator(); + } + + public Iterator<String> getChildren(String path) { + Iterator<String> result = null; + if (path.equals(BUNDLE_PATH_PREFIX)) { + result = handleBundlePathRoot(path); + } else if (path.equals("resources/corebundles")) { + result = EMPTY_STRING_LIST.iterator(); + } else if (path.equals(CONFIG_PATH_PREFIX)) { + result = handleConfigPath(); + } else if (path.startsWith(BUNDLE_PATH_PREFIX)) { + result = handleBundlePathFolder(path); } else if (path.equals("resources") ) { - final Set<String> subDirs = new HashSet<String>(); - subDirs.add(BUNDLE_PATH_PREFIX); - subDirs.add(CONFIG_PATH_PREFIX); - subDirs.add("resources/corebundles"); - return subDirs.iterator(); + result = handleResourcesRoot(); + } else { + getLog().warn("un-handlable " + getClass().getSimpleName() + " path: " + path); } - getLog().warn("un-handlable path " + path); - return null; + return result; } public URL getResource(String path) { diff --git a/src/test/java/org/apache/sling/maven/projectsupport/BundleListContentProviderTest.java b/src/test/java/org/apache/sling/maven/projectsupport/BundleListContentProviderTest.java index 7cd9039..b4c3905 100644 --- a/src/test/java/org/apache/sling/maven/projectsupport/BundleListContentProviderTest.java +++ b/src/test/java/org/apache/sling/maven/projectsupport/BundleListContentProviderTest.java @@ -53,6 +53,7 @@ public class BundleListContentProviderTest { private LaunchpadContentProvider provider; private File resourceProviderRoot; private File resourceProviderFile; + private File configDirectory; @Rule public TemporaryFolder tempFolder = new TemporaryFolder(); @@ -82,6 +83,7 @@ public class BundleListContentProviderTest { f.createNewFile(); assertTrue("Expecting temporary config file to have been created: " + f.getAbsolutePath(), f.exists()); } + configDirectory = tempFolder.getRoot(); resourceProviderRoot = new File(tempFolder.getRoot(), "RESOURCE_PROVIDER_ROOT"); resourceProviderRoot.mkdirs(); @@ -105,7 +107,7 @@ public class BundleListContentProviderTest { @Override File getConfigDirectory() { - return tempFolder.getRoot(); + return configDirectory; } @Override @@ -186,6 +188,12 @@ public class BundleListContentProviderTest { } @Test + public void testNonExistentConfigDirectory() { + configDirectory = new File("/NON_EXISTENT_" + System.currentTimeMillis()); + assertChildren("resources/config"); + } + + @Test public void testBundles0() { assertChildren("resources/bundles/0", "file:/commons-io/0/null", @@ -262,4 +270,5 @@ public class BundleListContentProviderTest { public void testNullResult() { assertNull(provider.getChildren("/FOO/bar")); } + } -- To stop receiving notification emails like this one, please contact "[email protected]" <[email protected]>.
