From d4de23f19ffb89c6fef1edabd1022e7e175d74fc Mon Sep 17 00:00:00 2001 From: nik Date: Wed, 28 Nov 2012 20:22:38 +0400 Subject: [PATCH] external build: access synchronized and 'equals' method added for consistency [accepted by Jeka] --- .../jps/builders/BuildTargetType.java | 5 +++++ .../jps/incremental/IncProjectBuilder.java | 18 +++++++++++------- 2 files changed, 16 insertions(+), 7 deletions(-) diff --git a/jps/jps-builders/src/org/jetbrains/jps/builders/BuildTargetType.java b/jps/jps-builders/src/org/jetbrains/jps/builders/BuildTargetType.java index 412473142ff6..98bc9c4d9ddf 100644 --- a/jps/jps-builders/src/org/jetbrains/jps/builders/BuildTargetType.java +++ b/jps/jps-builders/src/org/jetbrains/jps/builders/BuildTargetType.java @@ -19,6 +19,11 @@ public abstract class BuildTargetType> { return myTypeId; } + @Override + public boolean equals(Object obj) { + return obj instanceof BuildTargetType && ((BuildTargetType)obj).myTypeId.equals(myTypeId); + } + @Override public int hashCode() { return myTypeId.hashCode(); diff --git a/jps/jps-builders/src/org/jetbrains/jps/incremental/IncProjectBuilder.java b/jps/jps-builders/src/org/jetbrains/jps/incremental/IncProjectBuilder.java index c19d0a4f3cb0..764d19c5c23e 100644 --- a/jps/jps-builders/src/org/jetbrains/jps/incremental/IncProjectBuilder.java +++ b/jps/jps-builders/src/org/jetbrains/jps/incremental/IncProjectBuilder.java @@ -372,17 +372,21 @@ public class IncProjectBuilder { } private static void registerTargetsWithClearedOutput(CompileContext context, Collection> targets) { - Set> data = context.getUserData(TARGET_WITH_CLEARED_OUTPUT); - if (data == null) { - data = new THashSet>(); - context.putUserData(TARGET_WITH_CLEARED_OUTPUT, data); + synchronized (TARGET_WITH_CLEARED_OUTPUT) { + Set> data = context.getUserData(TARGET_WITH_CLEARED_OUTPUT); + if (data == null) { + data = new THashSet>(); + context.putUserData(TARGET_WITH_CLEARED_OUTPUT, data); + } + data.addAll(targets); } - data.addAll(targets); } private static boolean isTargetOutputCleared(CompileContext context, BuildTarget target) { - Set> data = context.getUserData(TARGET_WITH_CLEARED_OUTPUT); - return data != null && data.contains(target); + synchronized (TARGET_WITH_CLEARED_OUTPUT) { + Set> data = context.getUserData(TARGET_WITH_CLEARED_OUTPUT); + return data != null && data.contains(target); + } } private void clearOutputs(CompileContext context) throws ProjectBuildException, IOException {