From 7e0f45ab7839fda19459f790e0384c3a6c98e2bf Mon Sep 17 00:00:00 2001 From: Gautam Shah Date: Wed, 6 Jun 2018 16:02:45 +0530 Subject: Onboarding backend build optimization. Enhancing Logic for referring/not-referring local build state repo Change-Id: Ic2f85b20aed45cda7011ed1facb8ee39fdf54919 Issue-ID: SDC-1189 Signed-off-by: GAUTAMS Signed-off-by: vempo --- .../sdc/onboarding/util/ArtifactHelper.java | 46 ++++--- .../onboarding/util/InitializationHelperMojo.java | 40 +++--- .../org/openecomp/sdc/onboarding/BuildHelper.java | 85 ++++++------ .../org/openecomp/sdc/onboarding/BuildState.java | 144 +++++++++++---------- 4 files changed, 173 insertions(+), 142 deletions(-) (limited to 'openecomp-be/tools') diff --git a/openecomp-be/tools/artifact-copy-plugin/src/main/java/org/openecomp/sdc/onboarding/util/ArtifactHelper.java b/openecomp-be/tools/artifact-copy-plugin/src/main/java/org/openecomp/sdc/onboarding/util/ArtifactHelper.java index 59b3437beb..ce63a8d466 100644 --- a/openecomp-be/tools/artifact-copy-plugin/src/main/java/org/openecomp/sdc/onboarding/util/ArtifactHelper.java +++ b/openecomp-be/tools/artifact-copy-plugin/src/main/java/org/openecomp/sdc/onboarding/util/ArtifactHelper.java @@ -44,11 +44,11 @@ public class ArtifactHelper { private MavenProject project; private MavenSession session; - private static Map store = new HashMap<>(); - private static Set terminalModuleCoordinates = new HashSet<>(); + private static final Map store = new HashMap<>(); + private static final Set terminalModuleCoordinates = new HashSet<>(); private String unicornRoot = null; private static File unicornMetaLocation = null; - private File tempLocation = Paths.get(System.getProperties().getProperty("java.io.tmpdir")).toFile(); + private final File tempLocation = Paths.get(System.getProperties().getProperty("java.io.tmpdir")).toFile(); private static int snapshotBuildNumber = 0; private static final String HYPHEN = "-"; @@ -95,8 +95,8 @@ public class ArtifactHelper { } String getContents(URL path) throws IOException { - try (InputStream is = path.openStream(); Scanner scnr = new Scanner(is).useDelimiter("\\A")) { - return scnr.hasNext() ? scnr.next() : ""; + try (InputStream is = path.openStream(); Scanner scanner = new Scanner(is).useDelimiter("\\A")) { + return scanner.hasNext() ? scanner.next() : ""; } } @@ -105,11 +105,19 @@ public class ArtifactHelper { } void deleteAll(File f) { - if (!f.exists() && !f.isDirectory()) { + + if (!f.exists() || !f.isDirectory()) { + return; + } + + File[] fileList = f.listFiles(); + if (fileList == null) { return; } - for (File file : f.listFiles()) { - if (f.isFile()) { + + for (File file : fileList) { + + if (file.isFile()) { file.delete(); } } @@ -119,30 +127,32 @@ public class ArtifactHelper { return project.getGroupId() + ":" + project.getArtifactId(); } - private File getUnicornRootFile(String moduleCoordinate, MavenProject proj) { - return getStateFile(moduleCoordinate, proj, unicornRoot); + private File getUnicornRootFile(String moduleCoordinate, MavenProject mavenProject) { + return getStateFile(moduleCoordinate, mavenProject, unicornRoot); } - private File getStateFile(String moduleCoordinate, MavenProject proj, String filePath) { - return new File(getTopParentProject(moduleCoordinate, proj).getBasedir(), + private File getStateFile(String moduleCoordinate, MavenProject mavenProject, String filePath) { + return new File(getTopParentProject(moduleCoordinate, mavenProject).getBasedir(), filePath.substring(filePath.indexOf('/') + 1)); } - MavenProject getTopParentProject(String moduleCoordinate, MavenProject proj) { - if (getModuleCoordinate(proj).equals(moduleCoordinate) || proj.getParent() == null) { - return proj; + MavenProject getTopParentProject(String moduleCoordinate, MavenProject mavenProject) { + if (getModuleCoordinate(mavenProject).equals(moduleCoordinate) || mavenProject.getParent() == null) { + return mavenProject; } else { - return getTopParentProject(moduleCoordinate, proj.getParent()); + return getTopParentProject(moduleCoordinate, mavenProject.getParent()); } } void shutDown(MavenProject project) throws IOException, ClassNotFoundException { File file = new File(unicornMetaLocation, "compileState.dat"); - Map dataStore = null; + HashMap dataStore; if (isModuleTerminal(project) && file.exists()) { try (InputStream is = new FileInputStream(file); ObjectInputStream ois = new ObjectInputStream(is)) { - dataStore = HashMap.class.cast(ois.readObject()); + dataStore = (HashMap) ois.readObject(); + //noinspection unchecked dataStore.put("shutdownTime", (System.currentTimeMillis() / 1000) * 1000 + snapshotBuildNumber); + //noinspection unchecked dataStore.put("version", project.getVersion()); } try (OutputStream os = new FileOutputStream(file); ObjectOutputStream oos = new ObjectOutputStream(os)) { diff --git a/openecomp-be/tools/artifact-copy-plugin/src/main/java/org/openecomp/sdc/onboarding/util/InitializationHelperMojo.java b/openecomp-be/tools/artifact-copy-plugin/src/main/java/org/openecomp/sdc/onboarding/util/InitializationHelperMojo.java index 57f4994a94..afe5d3e702 100644 --- a/openecomp-be/tools/artifact-copy-plugin/src/main/java/org/openecomp/sdc/onboarding/util/InitializationHelperMojo.java +++ b/openecomp-be/tools/artifact-copy-plugin/src/main/java/org/openecomp/sdc/onboarding/util/InitializationHelperMojo.java @@ -16,18 +16,6 @@ package org.openecomp.sdc.onboarding.util; -import org.apache.maven.artifact.repository.ArtifactRepository; -import org.apache.maven.execution.MavenSession; -import org.apache.maven.plugin.AbstractMojo; -import org.apache.maven.plugin.MojoExecutionException; -import org.apache.maven.plugin.MojoFailureException; -import org.apache.maven.plugins.annotations.LifecyclePhase; -import org.apache.maven.plugins.annotations.Mojo; -import org.apache.maven.plugins.annotations.Parameter; -import org.apache.maven.plugins.annotations.ResolutionScope; -import org.apache.maven.project.MavenProject; -import org.apache.maven.settings.Proxy; - import java.io.File; import java.io.IOException; import java.io.InputStream; @@ -39,6 +27,17 @@ import java.nio.file.StandardCopyOption; import java.util.List; import java.util.regex.Matcher; import java.util.regex.Pattern; +import org.apache.maven.artifact.repository.ArtifactRepository; +import org.apache.maven.execution.MavenSession; +import org.apache.maven.plugin.AbstractMojo; +import org.apache.maven.plugin.MojoExecutionException; +import org.apache.maven.plugin.MojoFailureException; +import org.apache.maven.plugins.annotations.LifecyclePhase; +import org.apache.maven.plugins.annotations.Mojo; +import org.apache.maven.plugins.annotations.Parameter; +import org.apache.maven.plugins.annotations.ResolutionScope; +import org.apache.maven.project.MavenProject; +import org.apache.maven.settings.Proxy; @Mojo(name = "init-artifact-helper", threadSafe = true, defaultPhase = LifecyclePhase.PRE_CLEAN, requiresDependencyResolution = ResolutionScope.NONE) @@ -66,12 +65,12 @@ public class InitializationHelperMojo extends AbstractMojo { private ArtifactHelper artifactHelper; @Override - public void execute() throws MojoExecutionException, MojoFailureException { + public void execute() throws MojoExecutionException { if (System.getProperties().containsKey(UNICORN_INITIALIZED)) { try { artifactHelper.shutDown(project); } catch (IOException | ClassNotFoundException e) { - throw new MojoExecutionException("Unexpected Error Occured during shutdown activities", e); + throw new MojoExecutionException("Unexpected Error Occurred during shutdown activities", e); } return; } @@ -94,8 +93,6 @@ public class InitializationHelperMojo extends AbstractMojo { try { URL url = new URL(repo.getUrl() + (groupId.replace('.', '/')) + '/' + artifactId + '/' + version + "/maven-metadata.xml"); - URL fallbackUrl = - new URL(repo.getUrl() + (groupId.replace('.', '/')) + '/' + artifactId + '/' + version + '/'); setProxy(url); String content = artifactHelper.getContents(url); Matcher m = timestampPattern.matcher(content); @@ -106,12 +103,15 @@ public class InitializationHelperMojo extends AbstractMojo { if (m.find()) { buildNumber = m.group(1); } + + URL fallbackUrl = + new URL(repo.getUrl() + (groupId.replace('.', '/')) + '/' + artifactId + '/' + version + '/'); timestamp = verifyBuildTimestamp(buildNumber, timestamp, fallbackUrl); if (timestamp != null && buildNumber != null) { byte[] data = fetchContents(repo.getUrl(), artifactId, timestamp + "-" + buildNumber); artifactHelper.store(artifactId, data); getLog().info(artifactId + " Version to be copied is " + timestamp + "-" + buildNumber); - ArtifactHelper.setSnapshotBuildNumber(Integer.parseInt(buildNumber)); + ArtifactHelper.setSnapshotBuildNumber(Integer.parseInt(buildNumber) + 1); return timestamp + "-" + buildNumber; } } catch (IOException e) { @@ -188,12 +188,12 @@ public class InitializationHelperMojo extends AbstractMojo { ClassLoader cl = ClassLoader.getSystemClassLoader(); Class clazz = cl.getClass(); - Method method = clazz.getSuperclass().getDeclaredMethod("addURL", new Class[] {URL.class}); + Method method = clazz.getSuperclass().getDeclaredMethod("addURL", URL.class); method.setAccessible(true); - method.invoke(cl, new Object[] {jar.toURI().toURL()}); + method.invoke(cl, jar.toURI().toURL()); } catch (Exception e) { - throw new MojoFailureException("Problem while loadig build-data", e); + throw new MojoFailureException("Problem while loading build-data", e); } } diff --git a/openecomp-be/tools/compile-helper-plugin/src/main/java/org/openecomp/sdc/onboarding/BuildHelper.java b/openecomp-be/tools/compile-helper-plugin/src/main/java/org/openecomp/sdc/onboarding/BuildHelper.java index f042a7ca55..8d1941169e 100644 --- a/openecomp-be/tools/compile-helper-plugin/src/main/java/org/openecomp/sdc/onboarding/BuildHelper.java +++ b/openecomp-be/tools/compile-helper-plugin/src/main/java/org/openecomp/sdc/onboarding/BuildHelper.java @@ -16,8 +16,13 @@ package org.openecomp.sdc.onboarding; -import org.apache.maven.plugin.MojoFailureException; -import org.apache.maven.project.MavenProject; +import static org.openecomp.sdc.onboarding.Constants.CHECKSUM; +import static org.openecomp.sdc.onboarding.Constants.COLON; +import static org.openecomp.sdc.onboarding.Constants.DOT; +import static org.openecomp.sdc.onboarding.Constants.JAR; +import static org.openecomp.sdc.onboarding.Constants.JAVA_EXT; +import static org.openecomp.sdc.onboarding.Constants.SHA1; +import static org.openecomp.sdc.onboarding.Constants.UNICORN; import java.io.ByteArrayInputStream; import java.io.File; @@ -35,7 +40,6 @@ import java.security.MessageDigest; import java.security.NoSuchAlgorithmException; import java.util.Arrays; import java.util.HashMap; -import java.util.Iterator; import java.util.List; import java.util.Map; import java.util.Optional; @@ -43,41 +47,45 @@ import java.util.concurrent.ForkJoinPool; import java.util.concurrent.RecursiveTask; import java.util.jar.JarEntry; import java.util.jar.JarInputStream; -import java.util.stream.Collectors; - -import static org.openecomp.sdc.onboarding.Constants.*; +import java.util.logging.Level; +import java.util.logging.Logger; +import java.util.stream.Stream; +import org.apache.maven.plugin.MojoFailureException; +import org.apache.maven.project.MavenProject; class BuildHelper { - private static Map store = new HashMap<>(); + private static final Map STORE = new HashMap<>(); + private static final Logger LOG = Logger.getAnonymousLogger(); private BuildHelper() { - // donot remove. + // do not remove. } static String getSnapshotSignature(File snapshotFile, String moduleCoordinate, String version) { String key = moduleCoordinate + ":" + version; - String signature = store.get(key); + String signature = STORE.get(key); if (signature != null) { return signature; } try { signature = new String(fetchSnapshotSignature(snapshotFile, version)); if (version.equals(signature)) { - signature = getSHA1For(snapshotFile, Paths.get(snapshotFile.getParentFile().getAbsolutePath(), + signature = getSha1For(snapshotFile, Paths.get(snapshotFile.getParentFile().getAbsolutePath(), moduleCoordinate.substring(moduleCoordinate.indexOf(':') + 1) + "-" + version + DOT + JAR + DOT + SHA1).toFile()); } - store.put(key, signature); + STORE.put(key, signature); return signature; } catch (IOException | NoSuchAlgorithmException e) { + LOG.log(Level.FINE, e.getMessage(), e); return version; } } - private static String getSHA1For(File file, File signatureFile) throws IOException, NoSuchAlgorithmException { + private static String getSha1For(File file, File signatureFile) throws IOException, NoSuchAlgorithmException { if (signatureFile.exists()) { return new String(Files.readAllBytes(signatureFile.toPath())); } @@ -111,14 +119,19 @@ class BuildHelper { private static Map> readSources(File file, String fileType) throws IOException { Map> source = new HashMap<>(); - if (file.exists()) { - List list = Files.walk(Paths.get(file.getAbsolutePath())) - .filter(JAVA_EXT.equals(fileType) ? BuildHelper::isRegularJavaFile : - Files::isRegularFile).map(Path::toFile).collect(Collectors.toList()); + + if (!file.exists()) { + return source; + } + + try (Stream pathStream = Files.walk(Paths.get(file.getAbsolutePath()))) { + File[] selectedFiles = pathStream.filter( + JAVA_EXT.equals(fileType) ? BuildHelper::isRegularJavaFile : Files::isRegularFile) + .map(Path::toFile).toArray(File[]::new); source.putAll(ForkJoinPool.commonPool() - .invoke(new FileReadTask(list.toArray(new File[0]), file.getAbsolutePath()))); + .invoke(new FileReadTask(selectedFiles, file.getAbsolutePath()))); + return source; } - return source; } private static boolean isRegularJavaFile(Path path) { @@ -128,9 +141,9 @@ class BuildHelper { private static class FileReadTask extends RecursiveTask>> { - private Map> store = new HashMap<>(); - File[] files; - String pathPrefix; + private final Map> store = new HashMap<>(); + final File[] files; + final String pathPrefix; private static final int MAX_FILES = 10; FileReadTask(File[] files, String pathPrefix) { @@ -141,13 +154,7 @@ class BuildHelper { private static List getData(File file) throws IOException { List coll = Files.readAllLines(file.toPath(), StandardCharsets.ISO_8859_1); if (file.getAbsolutePath().contains(File.separator + "generated-sources" + File.separator)) { - Iterator itr = coll.iterator(); - while (itr.hasNext()) { - String s = itr.next(); - if (s == null || s.trim().startsWith("/") || s.trim().startsWith("*")) { - itr.remove(); - } - } + coll.removeIf(s -> s == null || s.trim().startsWith("/") || s.trim().startsWith("*")); } return coll; } @@ -180,9 +187,9 @@ class BuildHelper { static Optional getArtifactPathInLocalRepo(String repoPath, MavenProject project, byte[] sourceChecksum) throws MojoFailureException { - store.put(project.getGroupId() + COLON + project.getArtifactId() + COLON + project.getVersion(), + STORE.put(project.getGroupId() + COLON + project.getArtifactId() + COLON + project.getVersion(), new String(sourceChecksum)); - URI uri = null; + URI uri; try { uri = new URI(repoPath + (project.getGroupId().replace('.', '/')) + '/' + project.getArtifactId() + '/' + project.getVersion()); @@ -205,14 +212,16 @@ class BuildHelper { } private static byte[] fetchSnapshotSignature(File file, String version) throws IOException { + byte[] data = Files.readAllBytes(file.toPath()); - try (ByteArrayInputStream bais = new ByteArrayInputStream(data); - JarInputStream jis = new JarInputStream(bais)) { - JarEntry entry = null; - while ((entry = jis.getNextJarEntry()) != null) { + try (ByteArrayInputStream byteInputStream = new ByteArrayInputStream(data); + JarInputStream jarInputStream = new JarInputStream(byteInputStream)) { + + JarEntry entry; + while ((entry = jarInputStream.getNextJarEntry()) != null) { if (entry.getName().endsWith(UNICORN + DOT + CHECKSUM)) { byte[] sigStore = new byte[1024]; - return new String(sigStore, 0, jis.read(sigStore, 0, 1024)).getBytes(); + return new String(sigStore, 0, jarInputStream.read(sigStore, 0, 1024)).getBytes(); } } } @@ -220,10 +229,12 @@ class BuildHelper { } static Optional readState(String fileName, Class clazz) { + try (InputStream is = Thread.currentThread().getContextClassLoader().getResourceAsStream(fileName); - ObjectInputStream ois = new ObjectInputStream(is)) { + ObjectInputStream ois = new ObjectInputStream(is)) { return Optional.of(clazz.cast(ois.readObject())); - } catch (Exception ignored) { + } catch (Exception e) { + LOG.log(Level.FINE, e.getMessage(), e); return Optional.empty(); } } diff --git a/openecomp-be/tools/compile-helper-plugin/src/main/java/org/openecomp/sdc/onboarding/BuildState.java b/openecomp-be/tools/compile-helper-plugin/src/main/java/org/openecomp/sdc/onboarding/BuildState.java index 2382b170aa..89adf203b5 100644 --- a/openecomp-be/tools/compile-helper-plugin/src/main/java/org/openecomp/sdc/onboarding/BuildState.java +++ b/openecomp-be/tools/compile-helper-plugin/src/main/java/org/openecomp/sdc/onboarding/BuildState.java @@ -22,9 +22,7 @@ import static org.openecomp.sdc.onboarding.Constants.ANSI_YELLOW; import static org.openecomp.sdc.onboarding.Constants.FULL_BUILD_DATA; import static org.openecomp.sdc.onboarding.Constants.FULL_RESOURCE_BUILD_DATA; import static org.openecomp.sdc.onboarding.Constants.JAR; -import static org.openecomp.sdc.onboarding.Constants.MODULE_BUILD_DATA; import static org.openecomp.sdc.onboarding.Constants.RESOURCES_CHANGED; -import static org.openecomp.sdc.onboarding.Constants.RESOURCE_BUILD_DATA; import static org.openecomp.sdc.onboarding.Constants.SKIP_MAIN_SOURCE_COMPILE; import java.io.File; @@ -42,7 +40,8 @@ import java.util.Map; import java.util.Optional; import java.util.Set; import java.util.function.Function; - +import java.util.logging.Level; +import java.util.logging.Logger; import org.apache.maven.artifact.Artifact; import org.apache.maven.project.MavenProject; @@ -51,23 +50,25 @@ public class BuildState { private static final String SHUTDOWN_TIME = "shutdownTime"; private static final String VERSION = "version"; - private static Map compileDataStore = new HashMap<>(); - private static Map moduleBuildData = new HashMap<>(); - private static Map resourceBuildData = new HashMap<>(); - private static Map artifacts = new HashMap<>(); - private static Set executeTestsIfDependsOnStore = new HashSet<>(); - private static Set pmdExecutedInRun = new HashSet<>(); + private static HashMap compileDataStore = new HashMap<>(); + private static final Map MODULE_BUILD_DATA = new HashMap<>(); + private static final Map RESOURCE_BUILD_DATA = new HashMap<>(); + private static final Map ARTIFACTS = new HashMap<>(); + private static final Set EXECUTE_TESTS_IF_DEPENDS_ON_STORE = new HashSet<>(); + private static final Set PMD_EXECUTED_IN_RUN = new HashSet<>(); private static File stateFileLocation = new File(Paths.get(System.getProperties().getProperty("java.io.tmpdir")).toFile(), "compileState.dat"); private static File compileStateFile; + private static final Logger LOG = Logger.getAnonymousLogger(); private MavenProject project; private String compileStateFilePath; static { initializeStore(); Optional masterStore = readState("compile.dat", HashMap.class); - compileDataStore = masterStore.isPresent() ? masterStore.get() : compileDataStore; + //noinspection unchecked + compileDataStore = (HashMap) masterStore.orElseGet(() -> compileDataStore); String version = String.class.cast(compileDataStore.get(VERSION)); if (version != null) { stateFileLocation = new File(Paths.get(System.getProperties().getProperty("java.io.tmpdir")).toFile(), @@ -75,7 +76,7 @@ public class BuildState { } if (stateFileLocation.exists()) { HashMap dat = loadState(stateFileLocation); - if (swapStates((HashMap) compileDataStore, dat)) { + if (swapStates(compileDataStore, dat)) { compileDataStore = dat; } } @@ -83,10 +84,10 @@ public class BuildState { void init() { - artifacts.clear(); + ARTIFACTS.clear(); for (Artifact artifact : project.getArtifacts()) { if (artifact.isSnapshot() && JAR.equals(artifact.getType())) { - artifacts.put(artifact.getGroupId() + ":" + artifact.getArtifactId(), artifact); + ARTIFACTS.put(artifact.getGroupId() + ":" + artifact.getArtifactId(), artifact); } } if (compileStateFile == null) { @@ -100,47 +101,47 @@ public class BuildState { } static void initializeStore() { - compileDataStore.put(FULL_BUILD_DATA, new HashMap<>()); - compileDataStore.put(FULL_RESOURCE_BUILD_DATA, new HashMap<>()); - compileDataStore.put(MODULE_BUILD_DATA, new HashMap<>()); - compileDataStore.put(RESOURCE_BUILD_DATA, new HashMap<>()); + compileDataStore.put(Constants.FULL_BUILD_DATA, new HashMap<>()); + compileDataStore.put(Constants.FULL_RESOURCE_BUILD_DATA, new HashMap<>()); + compileDataStore.put(Constants.MODULE_BUILD_DATA, new HashMap<>()); + compileDataStore.put(Constants.RESOURCE_BUILD_DATA, new HashMap<>()); } static void recordPMDRun(String moduleCoordinates) { - pmdExecutedInRun.add(moduleCoordinates); + PMD_EXECUTED_IN_RUN.add(moduleCoordinates); } - static boolean isPMDRun(String moduleCoordintes) { - return pmdExecutedInRun.contains(moduleCoordintes); + static boolean isPMDRun(String moduleCoordinates) { + return PMD_EXECUTED_IN_RUN.contains(moduleCoordinates); } private void writeCompileState() throws IOException { writeState(compileStateFile, compileDataStore); } - private void writeState(File file, Map store) throws IOException { + private void writeState(File file, HashMap store) throws IOException { try (FileOutputStream fos = new FileOutputStream(file); ObjectOutputStream oos = new ObjectOutputStream(fos)) { oos.writeObject(store); } } - private File getCompileStateFile(String moduleCoordinate, MavenProject proj) { - return getStateFile(moduleCoordinate, proj, compileStateFilePath); + private File getCompileStateFile(String moduleCoordinate, MavenProject mavenProject) { + return getStateFile(moduleCoordinate, mavenProject, compileStateFilePath); } - private File getStateFile(String moduleCoordinate, MavenProject proj, String filePath) { - return new File(getTopParentProject(moduleCoordinate, proj).getBasedir(), + private File getStateFile(String moduleCoordinate, MavenProject mavenProject, String filePath) { + return new File(getTopParentProject(moduleCoordinate, mavenProject).getBasedir(), filePath.substring(filePath.indexOf('/') + 1)); } - MavenProject getTopParentProject(String moduleCoordinate, MavenProject proj) { - if (getModuleCoordinate(proj).equals(moduleCoordinate) || proj.getParent() == null) { - return proj; + MavenProject getTopParentProject(String moduleCoordinate, MavenProject mavenProject) { + if (getModuleCoordinate(mavenProject).equals(moduleCoordinate) || mavenProject.getParent() == null) { + return mavenProject; } else { - return getTopParentProject(moduleCoordinate, proj.getParent()); + return getTopParentProject(moduleCoordinate, mavenProject.getParent()); } } @@ -149,7 +150,8 @@ public class BuildState { } void addModuleBuildTime(String moduleCoordinates, Long buildTime) { - Long lastTime = Long.class.cast(compileDataStore.get(FULL_BUILD_DATA).put(moduleCoordinates, buildTime)); + Map fullBuildData = compileDataStore.get(FULL_BUILD_DATA); + @SuppressWarnings("unchecked") Long lastTime = (Long) fullBuildData.put(moduleCoordinates, buildTime); try { if (lastTime == null || !lastTime.equals(buildTime)) { boolean skipMainCompile = project.getProperties().containsKey(SKIP_MAIN_SOURCE_COMPILE); @@ -157,41 +159,47 @@ public class BuildState { writeCompileState(); } } - } catch (IOException ignored) { - // ignored. No need to handle. System will take care. + } catch (IOException e) { + LOG.log(Level.FINE, e.getMessage(), e); } } void addResourceBuildTime(String moduleCoordinates, Long buildTime) { + Map fullResourceBuildData = compileDataStore.get(FULL_RESOURCE_BUILD_DATA); if (project.getProperties().containsKey(RESOURCES_CHANGED) - || compileDataStore.get(FULL_RESOURCE_BUILD_DATA).get(moduleCoordinates) == null) { + || fullResourceBuildData.get(moduleCoordinates) == null) { try { - compileDataStore.get(FULL_RESOURCE_BUILD_DATA).put(moduleCoordinates, buildTime); + //noinspection unchecked + fullResourceBuildData.put(moduleCoordinates, buildTime); writeCompileState(); - } catch (IOException ignored) { - // ignored. No need to handle. System will take care. + } catch (IOException e) { + LOG.log(Level.FINE, e.getMessage(), e); } } } void addModuleBuildData(String moduleCoordinates, Map moduleBuildDependencies) { - moduleBuildData.put(moduleCoordinates, moduleBuildDependencies); + MODULE_BUILD_DATA.put(moduleCoordinates, moduleBuildDependencies); } - Map readModuleBuildData() { - return HashMap.class.cast(compileDataStore.get(MODULE_BUILD_DATA).get(getModuleCoordinate(project))); + HashMap readModuleBuildData() { + return (HashMap) compileDataStore.get(Constants.MODULE_BUILD_DATA).get(getModuleCoordinate(project)); } void saveModuleBuildData(String moduleCoordinate) { - if (moduleBuildData.get(moduleCoordinate) != null) { - compileDataStore.get(MODULE_BUILD_DATA).put(moduleCoordinate, moduleBuildData.get(moduleCoordinate)); + if (MODULE_BUILD_DATA.get(moduleCoordinate) != null) { + Map buildData = compileDataStore.get(Constants.MODULE_BUILD_DATA); + //noinspection unchecked + buildData.put(moduleCoordinate, MODULE_BUILD_DATA.get(moduleCoordinate)); } saveCompileData(); } void saveResourceBuildData(String moduleCoordinate) { - if (resourceBuildData.get(moduleCoordinate) != null) { - compileDataStore.get(RESOURCE_BUILD_DATA).put(moduleCoordinate, resourceBuildData.get(moduleCoordinate)); + if (RESOURCE_BUILD_DATA.get(moduleCoordinate) != null) { + Map buildData = compileDataStore.get(Constants.RESOURCE_BUILD_DATA); + //noinspection unchecked + buildData.put(moduleCoordinate, RESOURCE_BUILD_DATA.get(moduleCoordinate)); } saveCompileData(); } @@ -201,48 +209,49 @@ public class BuildState { } void markTestsMandatoryModule(String moduleCoordinates) { - executeTestsIfDependsOnStore.add(moduleCoordinates); + EXECUTE_TESTS_IF_DEPENDS_ON_STORE.add(moduleCoordinates); } private void saveBuildData(File file, Object dataToSave) { file.getParentFile().mkdirs(); if (dataToSave != null) { try (FileOutputStream fos = new FileOutputStream(file); - ObjectOutputStream ois = new ObjectOutputStream(fos)) { + ObjectOutputStream ois = new ObjectOutputStream(fos)) { ois.writeObject(dataToSave); - } catch (IOException ignored) { - // ignored. No need to handle. System will take care. + } catch (IOException e) { + LOG.log(Level.FINE, e.getMessage(), e); } } } - Map readResourceBuildData() { - return HashMap.class.cast(compileDataStore.get(RESOURCE_BUILD_DATA).get(getModuleCoordinate(project))); + HashMap readResourceBuildData() { + return (HashMap) compileDataStore.get(Constants.RESOURCE_BUILD_DATA).get(getModuleCoordinate(project)); } void addResourceBuildData(String moduleCoordinates, Map currentModuleResourceBuildData) { - resourceBuildData.put(moduleCoordinates, currentModuleResourceBuildData); + RESOURCE_BUILD_DATA.put(moduleCoordinates, currentModuleResourceBuildData); } Long getBuildTime(String moduleCoordinates) { - Long buildTime = Long.class.cast(compileDataStore.get(FULL_BUILD_DATA).get(moduleCoordinates)); + Long buildTime = (Long) compileDataStore.get(FULL_BUILD_DATA).get(moduleCoordinates); return buildTime == null ? 0 : buildTime; } Long getResourceBuildTime(String moduleCoordinates) { - Long resourceBuildTime = Long.class.cast(compileDataStore.get(FULL_RESOURCE_BUILD_DATA).get(moduleCoordinates)); + Long resourceBuildTime = (Long) compileDataStore.get(FULL_RESOURCE_BUILD_DATA).get(moduleCoordinates); return resourceBuildTime == null ? 0 : resourceBuildTime; } boolean isCompileMust(String moduleCoordinates, Collection dependencies) { for (String d : dependencies) { - if (artifacts.containsKey(d) && JAR.equals(artifacts.get(d).getType())) { - boolean versionEqual = artifacts.get(d).getVersion().equals(project.getVersion()); + if (ARTIFACTS.containsKey(d) && JAR.equals(ARTIFACTS.get(d).getType())) { + boolean versionEqual = ARTIFACTS.get(d).getVersion().equals(project.getVersion()); if (versionEqual && getBuildTime(d) == 0) { - System.err.println(ANSI_YELLOW + "[WARNING:]" + "You have module[" + d - + "] not locally compiled even once, please compile your project once daily from root to have reliable build results." - + ANSI_COLOR_RESET); + LOG.warning(ANSI_YELLOW + "[WARNING:]" + "You have module[" + d + + "] not locally compiled even once, please compile your project once daily " + + "from root to have reliable build results." + + ANSI_COLOR_RESET); return true; } } @@ -251,8 +260,8 @@ public class BuildState { } boolean isTestExecutionMandatory() { - for (String d : artifacts.keySet()) { - if (executeTestsIfDependsOnStore.contains(d)) { + for (String d : ARTIFACTS.keySet()) { + if (EXECUTE_TESTS_IF_DEPENDS_ON_STORE.contains(d)) { return true; } } @@ -261,16 +270,16 @@ public class BuildState { boolean isTestMust(String moduleCoordinates) { return getBuildTime(moduleCoordinates) > getResourceBuildTime(moduleCoordinates) || isMust( - this::getResourceBuildTime, moduleCoordinates, artifacts.keySet()); + this::getResourceBuildTime, moduleCoordinates, ARTIFACTS.keySet()); } - private boolean isMust(Function funct, String moduleCoordinates, Collection dependencies) { - Long time = funct.apply(moduleCoordinates); + private boolean isMust(Function function, String moduleCoordinates, Collection dependencies) { + Long time = function.apply(moduleCoordinates); if (time == null || time == 0) { return true; } for (String module : dependencies) { - Long buildTime = funct.apply(module); + Long buildTime = function.apply(module); if (buildTime >= time) { return true; } @@ -280,15 +289,16 @@ public class BuildState { private static HashMap loadState(File file) { try (InputStream is = new FileInputStream(file); ObjectInputStream ois = new ObjectInputStream(is)) { - return HashMap.class.cast(ois.readObject()); + return (HashMap) ois.readObject(); } catch (Exception e) { + LOG.log(Level.FINE, e.getMessage(), e); return new HashMap<>(); } } private static boolean swapStates(HashMap repo, HashMap last) { - Long repoTime = repo.get(SHUTDOWN_TIME) == null ? 0 : (Long) repo.get(SHUTDOWN_TIME); - Long lastTime = last.get(SHUTDOWN_TIME) == null ? 0 : (Long) last.get(SHUTDOWN_TIME); + long repoTime = repo.get(SHUTDOWN_TIME) == null ? 0 : (Long) repo.get(SHUTDOWN_TIME); + long lastTime = last.get(SHUTDOWN_TIME) == null ? 0 : (Long) last.get(SHUTDOWN_TIME); String repoVersion = repo.get(VERSION) == null ? "" : (String) repo.get(VERSION); String lastVersion = last.get(VERSION) == null ? "" : (String) last.get(VERSION); long repoBuildNumber = repoTime % 1000; @@ -299,7 +309,7 @@ public class BuildState { if (!repoVersion.equals(lastVersion)) { return false; } - return Long.compare(repoTime, lastTime) < 0; + return repoTime < lastTime; } -- cgit 1.2.3-korg