437197 : remove references to internal plexusbuildapi classes
Signed-off-by: Fred Bricon <fbricon@gmail.com>
diff --git a/org.eclipse.m2e.wtp/src/org/eclipse/m2e/wtp/internal/filtering/ResourceFilteringBuildParticipant.java b/org.eclipse.m2e.wtp/src/org/eclipse/m2e/wtp/internal/filtering/ResourceFilteringBuildParticipant.java
index a64ae85..6de085e 100644
--- a/org.eclipse.m2e.wtp/src/org/eclipse/m2e/wtp/internal/filtering/ResourceFilteringBuildParticipant.java
+++ b/org.eclipse.m2e.wtp/src/org/eclipse/m2e/wtp/internal/filtering/ResourceFilteringBuildParticipant.java
@@ -1,5 +1,5 @@
/*******************************************************************************
- * Copyright (c) 2008 Sonatype, Inc.
+ * Copyright (c) 2008-2014 Sonatype, Inc.
* All rights reserved. This program and the accompanying materials
* are made available under the terms of the Eclipse Public License v1.0
* which accompanies this distribution, and is available at
@@ -9,11 +9,12 @@
package org.eclipse.m2e.wtp.internal.filtering;
+import java.io.File;
+import java.io.IOException;
+import java.io.OutputStream;
import java.util.Collections;
-import java.util.HashMap;
import java.util.LinkedHashSet;
import java.util.List;
-import java.util.Map;
import java.util.Set;
import org.apache.maven.execution.MavenExecutionRequest;
@@ -21,6 +22,7 @@
import org.apache.maven.lifecycle.MavenExecutionPlan;
import org.apache.maven.plugin.MojoExecution;
import org.apache.maven.project.MavenProject;
+import org.codehaus.plexus.util.Scanner;
import org.codehaus.plexus.util.StringUtils;
import org.codehaus.plexus.util.xml.Xpp3Dom;
import org.codehaus.plexus.util.xml.Xpp3DomUtils;
@@ -35,14 +37,9 @@
import org.eclipse.core.runtime.IProgressMonitor;
import org.eclipse.core.runtime.NullProgressMonitor;
import org.eclipse.core.runtime.Path;
-import org.eclipse.core.runtime.QualifiedName;
import org.eclipse.m2e.core.MavenPlugin;
import org.eclipse.m2e.core.embedder.IMaven;
-import org.eclipse.m2e.core.internal.IMavenConstants;
import org.eclipse.m2e.core.internal.MavenPluginActivator;
-import org.eclipse.m2e.core.internal.builder.plexusbuildapi.AbstractEclipseBuildContext;
-import org.eclipse.m2e.core.internal.builder.plexusbuildapi.AbstractEclipseBuildContext.Message;
-import org.eclipse.m2e.core.internal.builder.plexusbuildapi.EclipseBuildContext;
import org.eclipse.m2e.core.project.IMavenProjectFacade;
import org.eclipse.m2e.core.project.IMavenProjectRegistry;
import org.eclipse.m2e.core.project.ResolverConfiguration;
@@ -67,10 +64,7 @@
private static final Logger LOG = LoggerFactory.getLogger(ResourceFilteringBuildParticipant.class );
- //Need to duplicate org.eclipse.m2e.core.internal.builder.MavenBuilder.BUILD_CONTEXT_KEY since it's not accessible
- private static final QualifiedName BUILD_CONTEXT_KEY = new QualifiedName(IMavenConstants.PLUGIN_ID, "BuildContext"); //$NON-NLS-1$
-
- private EclipseBuildContext forceCopyBuildContext;
+ private CleanBuildContext forceCopyBuildContext;
@Override
public Set<IProject> build(int kind, IProgressMonitor monitor) throws Exception {
@@ -94,11 +88,8 @@
List<String> filters = configuration.getFilters();
if (changeRequiresForcedCopy(facade, filters, delta)) {
LOG.info(NLS.bind(Messages.ResourceFilteringBuildParticipant_Changed_Resources_Require_Clean_Build,project.getName()));
- Map<String, Object> contextState = new HashMap<String, Object>();
- project.setSessionProperty(BUILD_CONTEXT_KEY, contextState);
//String id = "" + "-" + getClass().getName();
- forceCopyBuildContext = new EclipseBuildContext(project, contextState);
- forceCopyBuildContext.setCurrentBuildParticipantId(getBuildParticipantId());
+ forceCopyBuildContext = new CleanBuildContext(oldBuildContext);
ThreadBuildContext.setThreadBuildContext(forceCopyBuildContext);
}
if (forceCopyBuildContext != null || hasResourcesChanged(facade, delta, resources)) {
@@ -117,31 +108,8 @@
return null;
}
- /**
- * Workaround to retrieve the buildParticipantId that is not exposed by AbstractEclipseBuildContext
- */
- private String getBuildParticipantId() {
- BuildContext originalContext = super.getBuildContext();
- String id = "org.apache.maven.plugins:maven-resources:copy-resources:::-"+getClass().getName(); //$NON-NLS-1$
- if (originalContext != null && (originalContext instanceof AbstractEclipseBuildContext)) {
- //That allows us to avoid doing some introspection
- AbstractEclipseBuildContext eclipseContext = ((AbstractEclipseBuildContext)originalContext);
- Map<String, List<Message>> map = eclipseContext.getMessages();
- if (map == null || map.isEmpty()) {
- eclipseContext.addMessage(null, 0, 0, "dummy", 0, null); //$NON-NLS-1$
- //adding a message initializes the map
- map = eclipseContext.getMessages();
- id = map.keySet().iterator().next();
- map.clear();
- } else {
- id = map.keySet().iterator().next();
- }
- }
- return id;
- }
-
@Override
-protected BuildContext getBuildContext() {
+ protected BuildContext getBuildContext() {
return (forceCopyBuildContext == null)?super.getBuildContext() : forceCopyBuildContext;
}
@@ -477,5 +445,81 @@
return loadedParent;
}
-
+
+ private static class CleanBuildContext implements BuildContext {
+
+ private BuildContext originalContext;
+
+ CleanBuildContext(BuildContext originalContext) {
+ this.originalContext = originalContext;
+ }
+
+ public boolean hasDelta(String relpath) {
+ return true;
+ }
+
+ public boolean hasDelta(File file) {
+ return true;
+ }
+
+ public boolean hasDelta(List relpaths) {
+ return true;
+ }
+
+ public void refresh(File file) {
+ originalContext.refresh(file);
+ }
+
+ public OutputStream newFileOutputStream(File file) throws IOException {
+ return originalContext.newFileOutputStream(file);
+ }
+
+ public Scanner newScanner(File basedir) {
+ return originalContext.newScanner(basedir);
+ }
+
+ public Scanner newDeleteScanner(File basedir) {
+ return originalContext.newDeleteScanner(basedir);
+ }
+
+ public Scanner newScanner(File basedir, boolean ignoreDelta) {
+ return originalContext.newScanner(basedir, ignoreDelta);
+ }
+
+ public boolean isIncremental() {
+ return false;
+ }
+
+ public void setValue(String key, Object value) {
+ originalContext.setValue(key, value);
+ }
+
+ public Object getValue(String key) {
+ return originalContext.getValue(key);
+ }
+
+ public void addWarning(File file, int line, int column, String message,
+ Throwable cause) {
+ originalContext.addWarning(file, line, column, message, cause);
+ }
+
+ public void addError(File file, int line, int column, String message,
+ Throwable cause) {
+ originalContext.addError(file, line, column, message, cause);
+ }
+
+ public void addMessage(File file, int line, int column, String message,
+ int severity, Throwable cause) {
+ originalContext.addMessage(file, line, column, message, severity, cause);
+ }
+
+ public void removeMessages(File file) {
+ originalContext.removeMessages(file);
+ }
+
+ public boolean isUptodate(File target, File source) {
+ return false;
+ }
+
+ }
}