commit: c0c86c63b7847b9d10d53c51e182df3c53263e4f Author: Miroslav Šulc <fordfrog <AT> gentoo <DOT> org> AuthorDate: Fri Nov 1 20:21:00 2019 +0000 Commit: Miroslav Šulc <fordfrog <AT> gentoo <DOT> org> CommitDate: Fri Nov 1 20:21:00 2019 +0000 URL: https://gitweb.gentoo.org/proj/java-ebuilder.git/commit/?id=c0c86c63
enhanced maven cache so that it also contains main java eclass + added java eclass stats Signed-off-by: Miroslav Šulc <fordfrog <AT> gentoo.org> .../org/gentoo/java/ebuilder/maven/MavenCache.java | 5 +- .../gentoo/java/ebuilder/portage/CacheItem.java | 29 ++++++-- .../java/ebuilder/portage/PortageParser.java | 84 +++++++++++++++++----- 3 files changed, 96 insertions(+), 22 deletions(-) diff --git a/src/main/java/org/gentoo/java/ebuilder/maven/MavenCache.java b/src/main/java/org/gentoo/java/ebuilder/maven/MavenCache.java index 0aa33c5..4e8767e 100644 --- a/src/main/java/org/gentoo/java/ebuilder/maven/MavenCache.java +++ b/src/main/java/org/gentoo/java/ebuilder/maven/MavenCache.java @@ -102,7 +102,10 @@ public class MavenCache { new FileReader(config.getCacheFile().toFile()))) { String line = reader.readLine(); - if (!PortageParser.CACHE_VERSION.equals(line)) { + if ("1.0".equals(line)) { + config.getStdoutWriter().print("(warning: format is not " + + "up-to-date, consider refreshing the cache)..."); + } else if (!PortageParser.CACHE_VERSION.equals(line)) { config.getErrorWriter().println("ERROR: Unsupported version of " + "cache. Please refresh the cache using command line " + "switch --refresh-cache."); diff --git a/src/main/java/org/gentoo/java/ebuilder/portage/CacheItem.java b/src/main/java/org/gentoo/java/ebuilder/portage/CacheItem.java index 17bce6b..feff43d 100644 --- a/src/main/java/org/gentoo/java/ebuilder/portage/CacheItem.java +++ b/src/main/java/org/gentoo/java/ebuilder/portage/CacheItem.java @@ -19,6 +19,10 @@ public class CacheItem { * Maven group id. */ private final String groupId; + /** + * Main Java eclass inherited. + */ + private final String javaEclass; /** * Maven version (of package jar). */ @@ -56,11 +60,12 @@ public class CacheItem { * @param groupId {@link #groupId} * @param artifactId {@link #artifactId} * @param mavenVersion {@link #mavenVersion} + * @param javaEclass {@link #javaEclass} */ public CacheItem(final String category, final String pkg, final String version, final String slot, final String useFlag, final String groupId, final String artifactId, - final String mavenVersion) { + final String mavenVersion, final String javaEclass) { this.category = category; this.pkg = pkg; this.version = version; @@ -69,6 +74,7 @@ public class CacheItem { this.groupId = groupId; this.artifactId = artifactId; this.mavenVersion = mavenVersion; + this.javaEclass = javaEclass; parsedMavenVersion = mavenVersion == null ? null : new MavenVersion(mavenVersion); @@ -95,14 +101,20 @@ public class CacheItem { } if (parts.length > 5) { - groupId = parts[5]; - artifactId = parts[6]; - mavenVersion = parts[7]; + groupId = parts[5].isEmpty() ? null : parts[5]; + artifactId = parts[6].isEmpty() ? null : parts[6]; + mavenVersion = parts[7].isEmpty() ? null : parts[7]; } else { groupId = null; artifactId = null; mavenVersion = null; } + + if (parts.length > 8) { + javaEclass = parts[8].isEmpty() ? null : parts[8]; + } else { + javaEclass = null; + } } catch (final ArrayIndexOutOfBoundsException ex) { throw new RuntimeException("Failed to parse cache line: " + line, ex); @@ -139,6 +151,15 @@ public class CacheItem { return groupId; } + /** + * Getter for {@link #javaEclass}. + * + * @return {@link #javaEclass} + */ + public String getJavaEclass() { + return javaEclass; + } + /** * Getter for {@link #mavenVersion}. * diff --git a/src/main/java/org/gentoo/java/ebuilder/portage/PortageParser.java b/src/main/java/org/gentoo/java/ebuilder/portage/PortageParser.java index a85fe6c..8d49411 100644 --- a/src/main/java/org/gentoo/java/ebuilder/portage/PortageParser.java +++ b/src/main/java/org/gentoo/java/ebuilder/portage/PortageParser.java @@ -28,7 +28,7 @@ public class PortageParser { /** * Cache version. */ - public static final String CACHE_VERSION = "1.0"; + public static final String CACHE_VERSION = "1.1"; /** * Current ant utilities eclass name. */ @@ -116,6 +116,29 @@ public class PortageParser { * List of cache items. This list is populated during parsing the tree. */ private final List<CacheItem> cacheItems = new ArrayList<>(40_000); + /** + * Count of ebuilds inheriting {@link #ECLASS_ANT_TASKS} as the main eclass. + */ + private int eclassAntTasksCount; + /** + * Count of ebuilds inheriting {@link #ECLASS_JAVA_PKG} as the main eclass. + */ + private int eclassJavaPkgCount; + /** + * Count of ebuilds inheriting {@link #ECLASS_JAVA_PKG_OPT} as the main + * eclass. + */ + private int eclassJavaPkgOptCount; + /** + * Count of ebuilds inheriting {@link #ECLASS_JAVA_PKG_SIMPLE} as the main + * eclass. + */ + private int eclassJavaPkgSimpleCount; + /** + * Count of ebuilds inheriting {@link #ECLASS_JAVA_UTILS} as the main + * eclass. + */ + private int eclassJavaUtilsCount; /** * Number of processed categories. Updated during parsing the tree. */ @@ -141,6 +164,11 @@ public class PortageParser { processedCategories = 0; processedPackages = 0; processedEbuilds = 0; + eclassAntTasksCount = 0; + eclassJavaPkgCount = 0; + eclassJavaPkgOptCount = 0; + eclassJavaPkgSimpleCount = 0; + eclassJavaUtilsCount = 0; config.getStdoutWriter().println("Parsing portage tree @ " + config.getPortageTree() + " ..."); @@ -150,9 +178,14 @@ public class PortageParser { config.getStdoutWriter().println(MessageFormat.format( "Parsed {0} categories {1} packages {2} ebuilds in {3}ms and " - + "found {4} java ebuilds", + + "found {4} java ebuilds (main java eclass: {5} = {6}, " + + "{7} = {8}, {9} = {10}, {11} = {12}, {13} = {14})", processedCategories, processedPackages, processedEbuilds, - endTimestamp - startTimestamp, cacheItems.size())); + endTimestamp - startTimestamp, cacheItems.size(), + ECLASS_ANT_TASKS, eclassAntTasksCount, ECLASS_JAVA_PKG, + eclassJavaPkgCount, ECLASS_JAVA_PKG_OPT, eclassJavaPkgOptCount, + ECLASS_JAVA_PKG_SIMPLE, eclassJavaPkgSimpleCount, + ECLASS_JAVA_UTILS, eclassJavaUtilsCount)); config.getStdoutWriter().print("Writing cache file..."); writeCacheFile(config); @@ -325,7 +358,25 @@ public class PortageParser { } cacheItems.add(new CacheItem(category, pkg, version, slot, useFlag, - groupId, artifactId, mavenVersion)); + groupId, artifactId, mavenVersion, eclass)); + + switch (eclass) { + case ECLASS_ANT_TASKS: + eclassAntTasksCount++; + break; + case ECLASS_JAVA_PKG: + eclassJavaPkgCount++; + break; + case ECLASS_JAVA_PKG_OPT: + eclassJavaPkgOptCount++; + break; + case ECLASS_JAVA_PKG_SIMPLE: + eclassJavaPkgSimpleCount++; + break; + case ECLASS_JAVA_UTILS: + eclassJavaUtilsCount++; + break; + } } /** @@ -437,7 +488,7 @@ public class PortageParser { Charset.forName("UTF-8"))) { writer.write(CACHE_VERSION); writer.write("\n#category:pkg:version:slot:useFlag:groupId:" - + "artifactId:mavenVersion\n"); + + "artifactId:mavenVersion:javaEclass\n"); for (final CacheItem cacheItem : cacheItems) { writer.write(cacheItem.getCategory()); @@ -450,18 +501,17 @@ public class PortageParser { writer.write(':'); writer.write(cacheItem.getUseFlag() == null ? "" : cacheItem.getUseFlag()); - - if (cacheItem.getGroupId() != null) { - writer.write(':'); - writer.write(cacheItem.getGroupId()); - writer.write(':'); - writer.write(cacheItem.getArtifactId()); - - if (cacheItem.getMavenVersion() != null) { - writer.write(':'); - writer.write(cacheItem.getMavenVersion()); - } - } + writer.write(':'); + writer.write(cacheItem.getGroupId() == null + ? "" : cacheItem.getGroupId()); + writer.write(':'); + writer.write(cacheItem.getArtifactId() == null + ? "" : cacheItem.getArtifactId()); + writer.write(':'); + writer.write(cacheItem.getMavenVersion() == null + ? "" : cacheItem.getMavenVersion()); + writer.write(':'); + writer.write(cacheItem.getJavaEclass()); writer.write('\n'); }