Skip to main content
aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
Diffstat (limited to 'org.eclipse.m2e.core/src/org/eclipse/m2e/core/internal/builder/plexusbuildapi/AbstractEclipseBuildContext.java')
-rw-r--r--org.eclipse.m2e.core/src/org/eclipse/m2e/core/internal/builder/plexusbuildapi/AbstractEclipseBuildContext.java98
1 files changed, 23 insertions, 75 deletions
diff --git a/org.eclipse.m2e.core/src/org/eclipse/m2e/core/internal/builder/plexusbuildapi/AbstractEclipseBuildContext.java b/org.eclipse.m2e.core/src/org/eclipse/m2e/core/internal/builder/plexusbuildapi/AbstractEclipseBuildContext.java
index 5321533a..f9dbc802 100644
--- a/org.eclipse.m2e.core/src/org/eclipse/m2e/core/internal/builder/plexusbuildapi/AbstractEclipseBuildContext.java
+++ b/org.eclipse.m2e.core/src/org/eclipse/m2e/core/internal/builder/plexusbuildapi/AbstractEclipseBuildContext.java
@@ -14,12 +14,7 @@ package org.eclipse.m2e.core.internal.builder.plexusbuildapi;
import java.io.File;
import java.io.IOException;
import java.io.OutputStream;
-import java.util.ArrayList;
-import java.util.HashSet;
-import java.util.LinkedHashMap;
-import java.util.List;
import java.util.Map;
-import java.util.Set;
import org.eclipse.core.resources.IContainer;
import org.eclipse.core.resources.IResource;
@@ -27,63 +22,32 @@ import org.eclipse.core.runtime.IPath;
import org.eclipse.core.runtime.Path;
import org.sonatype.plexus.build.incremental.BuildContext;
+import org.sonatype.plexus.build.incremental.ThreadBuildContext;
+
+import org.eclipse.m2e.core.internal.builder.IIncrementalBuildFramework;
/**
* @author igor
*/
-public abstract class AbstractEclipseBuildContext implements BuildContext {
-
- public static class Message {
- public final File file;
-
- public final int line;
-
- public final int column;
-
- public final String message;
-
- public final int severity;
-
- public final Throwable cause;
-
- Message(File file, int line, int column, String message, int severity, Throwable cause) {
- this.file = file;
- this.line = line;
- this.column = column;
- if(message == null && cause != null) {
- message = cause.getMessage();
- }
- this.message = message;
- this.severity = severity;
- this.cause = cause;
- }
- }
-
- private final Set<File> refresh = new HashSet<File>();
+public abstract class AbstractEclipseBuildContext implements BuildContext, IIncrementalBuildFramework.BuildContext {
protected final Map<String, Object> context;
- private String currentBuildParticipantId;
-
- /** Messages by build participant id */
- private final Map<String, List<Message>> messages = new LinkedHashMap<String, List<Message>>();
+ private final IIncrementalBuildFramework.BuildResultCollector results;
- /** List of files to cleanup messages for by build participant id */
- private final Map<String, List<File>> removeMessages = new LinkedHashMap<String, List<File>>();
-
- protected AbstractEclipseBuildContext(Map<String, Object> context) {
+ protected AbstractEclipseBuildContext(Map<String, Object> context,
+ IIncrementalBuildFramework.BuildResultCollector results) {
this.context = context;
+ this.results = results;
}
+ @Override
public void refresh(File file) {
- refresh.add(file);
- }
-
- public Set<File> getFiles() {
- return refresh;
+ results.refresh(file);
}
+ @Override
public OutputStream newFileOutputStream(File file) throws IOException {
return new ChangedFileOutputStream(file, this);
}
@@ -116,10 +80,12 @@ public abstract class AbstractEclipseBuildContext implements BuildContext {
protected abstract IResource getBaseResource();
+ @Override
public void setValue(String key, Object value) {
context.put(key, value);
}
+ @Override
public Object getValue(String key) {
return context.get(key);
}
@@ -127,6 +93,7 @@ public abstract class AbstractEclipseBuildContext implements BuildContext {
/**
* @deprecated Use addMessage instead
*/
+ @Override
public void addError(File file, int line, int column, String message, Throwable cause) {
addMessage(file, line, column, message, BuildContext.SEVERITY_ERROR, cause);
}
@@ -134,42 +101,22 @@ public abstract class AbstractEclipseBuildContext implements BuildContext {
/**
* @deprecated Use addMessage instead
*/
+ @Override
public void addWarning(File file, int line, int column, String message, Throwable cause) {
addMessage(file, line, column, message, BuildContext.SEVERITY_WARNING, cause);
}
+ @Override
public void addMessage(File file, int line, int column, String message, int severity, Throwable cause) {
- if(currentBuildParticipantId == null) {
- throw new IllegalStateException("currentBuildParticipantId cannot be null or empty");
- }
- List<Message> messageList = messages.get(currentBuildParticipantId);
- if(messageList == null) {
- messageList = new ArrayList<Message>();
- messages.put(currentBuildParticipantId, messageList);
- }
- messageList.add(new Message(file, line, column, message, severity, cause));
+ results.addMessage(file, line, column, message, severity, cause);
}
+ @Override
public void removeMessages(File file) {
- if(currentBuildParticipantId == null) {
- throw new IllegalStateException("currentBuildParticipantId cannot be null or empty");
- }
- List<File> files = removeMessages.get(currentBuildParticipantId);
- if(files == null) {
- files = new ArrayList<File>();
- removeMessages.put(currentBuildParticipantId, files);
- }
- files.add(file);
- }
-
- public Map<String, List<Message>> getMessages() {
- return messages;
- }
-
- public Map<String, List<File>> getRemoveMessages() {
- return removeMessages;
+ results.removeMessages(file);
}
+ @Override
public boolean isUptodate(File target, File source) {
IResource targetResource = getResource(target);
IResource sourceResource = getResource(source);
@@ -178,7 +125,8 @@ public abstract class AbstractEclipseBuildContext implements BuildContext {
&& targetResource.getLocalTimeStamp() >= sourceResource.getLocalTimeStamp();
}
- public void setCurrentBuildParticipantId(String currentBuildParticipantId) {
- this.currentBuildParticipantId = currentBuildParticipantId;
+ @Override
+ public void release() {
+ ThreadBuildContext.setThreadBuildContext(null);
}
}

Back to the top