summaryrefslogtreecommitdiffstats
path: root/openecomp-be/tools/compile-helper-plugin/src/main/java/org/openecomp/sdc/onboarding/BuildState.java
diff options
context:
space:
mode:
Diffstat (limited to 'openecomp-be/tools/compile-helper-plugin/src/main/java/org/openecomp/sdc/onboarding/BuildState.java')
-rw-r--r--openecomp-be/tools/compile-helper-plugin/src/main/java/org/openecomp/sdc/onboarding/BuildState.java144
1 files changed, 77 insertions, 67 deletions
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<String, Map> compileDataStore = new HashMap<>();
- private static Map<String, Object> moduleBuildData = new HashMap<>();
- private static Map<String, Object> resourceBuildData = new HashMap<>();
- private static Map<String, Artifact> artifacts = new HashMap<>();
- private static Set<String> executeTestsIfDependsOnStore = new HashSet<>();
- private static Set<String> pmdExecutedInRun = new HashSet<>();
+ private static HashMap<String, Map> compileDataStore = new HashMap<>();
+ private static final Map<String, Object> MODULE_BUILD_DATA = new HashMap<>();
+ private static final Map<String, Object> RESOURCE_BUILD_DATA = new HashMap<>();
+ private static final Map<String, Artifact> ARTIFACTS = new HashMap<>();
+ private static final Set<String> EXECUTE_TESTS_IF_DEPENDS_ON_STORE = new HashSet<>();
+ private static final Set<String> 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<HashMap> 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<String, Object> 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<String, Object> 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<String> 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<String, Long> funct, String moduleCoordinates, Collection<String> dependencies) {
- Long time = funct.apply(moduleCoordinates);
+ private boolean isMust(Function<String, Long> function, String moduleCoordinates, Collection<String> 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;
}