diff options
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.java | 98 |
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); } } |