X-Git-Url: http://git.argeo.org/?a=blobdiff_plain;ds=sidebyside;f=org.argeo.slc.factory%2Fsrc%2Forg%2Fargeo%2Fslc%2Frpmfactory%2Fcore%2FYumListParser.java;h=9327fedb75275a6636e3f5b6ecdc5c6d7f2aac89;hb=fbde11e8a342318876a4744c4676d3618bdf8583;hp=1b44dd494f9bca8227a120dd6292d7d36922c1be;hpb=d154e9f68017e8c5a8edac15475b2d79aea3e9d4;p=gpl%2Fargeo-slc.git diff --git a/org.argeo.slc.factory/src/org/argeo/slc/rpmfactory/core/YumListParser.java b/org.argeo.slc.factory/src/org/argeo/slc/rpmfactory/core/YumListParser.java index 1b44dd494..9327fedb7 100644 --- a/org.argeo.slc.factory/src/org/argeo/slc/rpmfactory/core/YumListParser.java +++ b/org.argeo.slc.factory/src/org/argeo/slc/rpmfactory/core/YumListParser.java @@ -2,6 +2,8 @@ package org.argeo.slc.rpmfactory.core; import java.io.IOException; import java.io.InputStream; +import java.nio.file.Files; +import java.nio.file.Path; import java.util.Set; import java.util.StringTokenizer; import java.util.TreeSet; @@ -9,35 +11,32 @@ import java.util.TreeSet; import org.apache.commons.io.FilenameUtils; import org.apache.commons.io.IOUtils; import org.apache.commons.io.LineIterator; -import org.apache.commons.logging.Log; -import org.apache.commons.logging.LogFactory; +import org.argeo.api.cms.CmsLog; import org.argeo.slc.SlcException; -import org.springframework.core.io.Resource; /** * Reads the output of a 'yum list all' command and interpret the list of * packages. */ public class YumListParser implements RpmPackageSet { - private final static Log log = LogFactory.getLog(YumListParser.class); + private final static CmsLog log = CmsLog.getLog(YumListParser.class); private Set installed = new TreeSet(); /** Not installed but available */ private Set installable = new TreeSet(); - private Resource yumListOutput; + private Path yumListOutput; public void init() { - try { - if (yumListOutput != null) { - load(yumListOutput.getInputStream()); + if (yumListOutput != null) { + try (InputStream in = Files.newInputStream(yumListOutput)) { + load(in); if (log.isDebugEnabled()) - log.debug(installed.size() + " installed, " - + installable.size() + " installable, from " + log.debug(installed.size() + " installed, " + installable.size() + " installable, from " + yumListOutput); + } catch (IOException e) { + throw new SlcException("Cannot initialize yum list parser", e); } - } catch (IOException e) { - throw new SlcException("Cannot initialize yum list parser", e); } } @@ -48,32 +47,26 @@ public class YumListParser implements RpmPackageSet { return installable.contains(packageName); } - protected void load(InputStream in) { - try { - Boolean readingInstalled = false; - Boolean readingAvailable = false; - LineIterator it = IOUtils.lineIterator(in, "UTF-8"); - while (it.hasNext()) { - String line = it.nextLine(); - if (line.trim().equals("Installed Packages")) { - readingInstalled = true; - } else if (line.trim().equals("Available Packages")) { - readingAvailable = true; - readingInstalled = false; - } else if (readingAvailable) { - if (Character.isLetterOrDigit(line.charAt(0))) { - installable.add(extractRpmName(line)); - } - } else if (readingInstalled) { - if (Character.isLetterOrDigit(line.charAt(0))) { - installed.add(extractRpmName(line)); - } + protected void load(InputStream in) throws IOException { + Boolean readingInstalled = false; + Boolean readingAvailable = false; + LineIterator it = IOUtils.lineIterator(in, "UTF-8"); + while (it.hasNext()) { + String line = it.nextLine(); + if (line.trim().equals("Installed Packages")) { + readingInstalled = true; + } else if (line.trim().equals("Available Packages")) { + readingAvailable = true; + readingInstalled = false; + } else if (readingAvailable) { + if (Character.isLetterOrDigit(line.charAt(0))) { + installable.add(extractRpmName(line)); + } + } else if (readingInstalled) { + if (Character.isLetterOrDigit(line.charAt(0))) { + installed.add(extractRpmName(line)); } } - } catch (IOException e) { - throw new SlcException("Cannot load yum list output", e); - } finally { - IOUtils.closeQuietly(in); } } @@ -82,7 +75,7 @@ public class YumListParser implements RpmPackageSet { String packageName = st.nextToken(); // consider the arch as an extension return FilenameUtils.getBaseName(packageName); - //return packageName.split("\\.")[0]; + // return packageName.split("\\.")[0]; } public Set getInstalled() { @@ -93,7 +86,7 @@ public class YumListParser implements RpmPackageSet { return installable; } - public void setYumListOutput(Resource yumListOutput) { + public void setYumListOutput(Path yumListOutput) { this.yumListOutput = yumListOutput; }