diff options
Diffstat (limited to 'org.eclipse.m2e.core/src/org/eclipse/m2e/core')
6 files changed, 132 insertions, 11 deletions
diff --git a/org.eclipse.m2e.core/src/org/eclipse/m2e/core/embedder/IMavenConfiguration.java b/org.eclipse.m2e.core/src/org/eclipse/m2e/core/embedder/IMavenConfiguration.java index 0ffcb5ad..bca5f987 100644 --- a/org.eclipse.m2e.core/src/org/eclipse/m2e/core/embedder/IMavenConfiguration.java +++ b/org.eclipse.m2e.core/src/org/eclipse/m2e/core/embedder/IMavenConfiguration.java @@ -1,5 +1,5 @@ /******************************************************************************* - * Copyright (c) 2008-2010 Sonatype, Inc. + * Copyright (c) 2008-2014 Sonatype, Inc. and others. * 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 @@ -11,6 +11,7 @@ package org.eclipse.m2e.core.embedder; +import org.eclipse.core.resources.IMarker; import org.eclipse.core.runtime.CoreException; @@ -69,4 +70,12 @@ public interface IMavenConfiguration { public String getWorkspaceLifecycleMappingMetadataFile(); public void setWorkspaceLifecycleMappingMetadataFile(String location) throws CoreException; + + /** + * Returns {@link IMarker} severity of "out-of-date" project problem + * + * @return One of <code>ignore</code>, <code>warning</code> or <code>error</code>. + * @since 1.5.0 + */ + public String getOutOfDateProjectSeverity(); } diff --git a/org.eclipse.m2e.core/src/org/eclipse/m2e/core/internal/preferences/MavenConfigurationImpl.java b/org.eclipse.m2e.core/src/org/eclipse/m2e/core/internal/preferences/MavenConfigurationImpl.java index 31998624..226ba80a 100644 --- a/org.eclipse.m2e.core/src/org/eclipse/m2e/core/internal/preferences/MavenConfigurationImpl.java +++ b/org.eclipse.m2e.core/src/org/eclipse/m2e/core/internal/preferences/MavenConfigurationImpl.java @@ -238,4 +238,21 @@ public class MavenConfigurationImpl implements IMavenConfiguration, IPreferenceC } preferenceStore.applyPreferences(preferencesLookup[0], new IPreferenceFilter[] {getPreferenceFilter()}); } + + public String getOutOfDateProjectSeverity() { + return preferenceStore.get(MavenPreferenceConstants.P_OUT_OF_DATE_PROJECT_CONFIG_PB, + ProblemSeverity.error.toString(), preferencesLookup); + } + + /** + * For testing purposes only + */ + public void setOutOfDateProjectSeverity(String severity) throws CoreException { + if(severity == null) { + preferencesLookup[0].remove(MavenPreferenceConstants.P_OUT_OF_DATE_PROJECT_CONFIG_PB); + } else { + preferencesLookup[0].put(MavenPreferenceConstants.P_OUT_OF_DATE_PROJECT_CONFIG_PB, severity); + } + preferenceStore.applyPreferences(preferencesLookup[0], new IPreferenceFilter[] {getPreferenceFilter()}); + } } diff --git a/org.eclipse.m2e.core/src/org/eclipse/m2e/core/internal/preferences/MavenPreferenceConstants.java b/org.eclipse.m2e.core/src/org/eclipse/m2e/core/internal/preferences/MavenPreferenceConstants.java index 7e545fae..7751e951 100644 --- a/org.eclipse.m2e.core/src/org/eclipse/m2e/core/internal/preferences/MavenPreferenceConstants.java +++ b/org.eclipse.m2e.core/src/org/eclipse/m2e/core/internal/preferences/MavenPreferenceConstants.java @@ -1,5 +1,5 @@ /******************************************************************************* - * Copyright (c) 2008-2010 Sonatype, Inc. + * Copyright (c) 2008-2014 Sonatype, Inc. and others. * 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 @@ -95,14 +95,50 @@ public interface MavenPreferenceConstants { /** boolean **/ public static final String P_DEFAULT_POM_EDITOR_PAGE = "eclipse.m2.defaultPomEditorPage"; //$NON-NLS-1$ - /** boolean **/ + /** + * boolean + * + * @deprecated Use {@link MavenPreferenceConstants#P_DUP_OF_PARENT_GROUPID_PB} instead + */ + @Deprecated public static final String P_DISABLE_GROUPID_DUP_OF_PARENT_WARNING = PREFIX + ".disableGroupIdDuplicateOfParentWarning"; //$NON-NLS-1$ - /** boolean **/ + /** + * boolean + * + * @deprecated Use {@link MavenPreferenceConstants#P_DISABLE_VERSION_DUP_OF_PARENT_WARNING} instead + */ + @Deprecated public static final String P_DISABLE_VERSION_DUP_OF_PARENT_WARNING = PREFIX + ".disableVersionDuplicateOfParentWarning"; //$NON-NLS-1$ + /** + * @since 1.5.0 + **/ + static final String PROBLEM_PREFIX = PREFIX + "problem."; + + /** + * Valid values : ignore, warning or error + * + * @since 1.5.0 + **/ + public static final String P_DUP_OF_PARENT_GROUPID_PB = PROBLEM_PREFIX + "duplicateParentGroupId"; //$NON-NLS-1$ + + /** + * Valid values : ignore, warning or error + * + * @since 1.5.0 + **/ + public static final String P_DUP_OF_PARENT_VERSION_PB = PROBLEM_PREFIX + "duplicateParentVersion"; //$NON-NLS-1$ + + /** + * Valid values : ignore, warning or error + * + * @since 1.5.0 + **/ + public static final String P_OUT_OF_DATE_PROJECT_CONFIG_PB = PROBLEM_PREFIX + "outofdateProjectConfig"; //$NON-NLS-1$ + /** string **/ public static final String P_LIFECYCLE_MAPPINGS = PREFIX + "lifecycleMappings"; //$NON-NLS-1$ diff --git a/org.eclipse.m2e.core/src/org/eclipse/m2e/core/internal/preferences/MavenPreferenceInitializer.java b/org.eclipse.m2e.core/src/org/eclipse/m2e/core/internal/preferences/MavenPreferenceInitializer.java index 44cb40d3..4b12c601 100644 --- a/org.eclipse.m2e.core/src/org/eclipse/m2e/core/internal/preferences/MavenPreferenceInitializer.java +++ b/org.eclipse.m2e.core/src/org/eclipse/m2e/core/internal/preferences/MavenPreferenceInitializer.java @@ -50,6 +50,10 @@ public class MavenPreferenceInitializer extends AbstractPreferenceInitializer { store.putBoolean(MavenPreferenceConstants.P_SHOW_CONSOLE_ON_ERR, true); store.putBoolean(MavenPreferenceConstants.P_SHOW_CONSOLE_ON_OUTPUT, false); + store.put(MavenPreferenceConstants.P_DUP_OF_PARENT_GROUPID_PB, ProblemSeverity.warning.toString()); + store.put(MavenPreferenceConstants.P_DUP_OF_PARENT_VERSION_PB, ProblemSeverity.warning.toString()); + store.put(MavenPreferenceConstants.P_OUT_OF_DATE_PROJECT_CONFIG_PB, ProblemSeverity.error.toString()); + // set to null since the plugin state location is not available by the time execution reaches here store.remove(MavenPreferenceConstants.P_WORKSPACE_MAPPINGS_LOCATION); } diff --git a/org.eclipse.m2e.core/src/org/eclipse/m2e/core/internal/preferences/ProblemSeverity.java b/org.eclipse.m2e.core/src/org/eclipse/m2e/core/internal/preferences/ProblemSeverity.java new file mode 100644 index 00000000..10ca96d0 --- /dev/null +++ b/org.eclipse.m2e.core/src/org/eclipse/m2e/core/internal/preferences/ProblemSeverity.java @@ -0,0 +1,51 @@ +/******************************************************************************* + * Copyright (c) 2014 Red Hat, 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 + * http://www.eclipse.org/legal/epl-v10.html + * + * Contributors: + * Red Hat, Inc. - initial API and implementation + *******************************************************************************/ + +package org.eclipse.m2e.core.internal.preferences; + +import org.eclipse.core.resources.IMarker; + + +/** + * Problem Severity enum mapping {@link IMarker} severities + * + * @author Fred Bricon + * @since 1.5.0 + */ +public enum ProblemSeverity { + + ignore(-1), info(IMarker.SEVERITY_INFO), warning(IMarker.SEVERITY_WARNING), error(IMarker.SEVERITY_ERROR); + + private int severity; + + ProblemSeverity(int severity) { + this.severity = severity; + } + + /** + * Returns matching {@link IMarker} severity value or -1 if ignore + * + * @see {@link IMarker#SEVERITY} + */ + public int getSeverity() { + return severity; + } + + public static ProblemSeverity get(String value) { + try { + if(value != null) { + return ProblemSeverity.valueOf(value); + } + } catch(IllegalArgumentException iae) { + } + return ProblemSeverity.error; + } +} diff --git a/org.eclipse.m2e.core/src/org/eclipse/m2e/core/internal/project/ProjectConfigurationManager.java b/org.eclipse.m2e.core/src/org/eclipse/m2e/core/internal/project/ProjectConfigurationManager.java index 8d549d04..4edbcd24 100644 --- a/org.eclipse.m2e.core/src/org/eclipse/m2e/core/internal/project/ProjectConfigurationManager.java +++ b/org.eclipse.m2e.core/src/org/eclipse/m2e/core/internal/project/ProjectConfigurationManager.java @@ -1,5 +1,5 @@ /******************************************************************************* - * Copyright (c) 2008-2013 Sonatype, Inc. + * Copyright (c) 2008-2014 Sonatype, Inc. and others. * 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 @@ -33,7 +33,6 @@ import org.eclipse.core.resources.ICommand; import org.eclipse.core.resources.IContainer; import org.eclipse.core.resources.IFile; import org.eclipse.core.resources.IFolder; -import org.eclipse.core.resources.IMarker; import org.eclipse.core.resources.IProject; import org.eclipse.core.resources.IProjectDescription; import org.eclipse.core.resources.IResource; @@ -79,6 +78,7 @@ import org.eclipse.m2e.core.internal.embedder.AbstractRunnable; import org.eclipse.m2e.core.internal.embedder.MavenExecutionContext; import org.eclipse.m2e.core.internal.lifecyclemapping.LifecycleMappingFactory; import org.eclipse.m2e.core.internal.markers.IMavenMarkerManager; +import org.eclipse.m2e.core.internal.preferences.ProblemSeverity; import org.eclipse.m2e.core.internal.project.registry.ProjectRegistryManager; import org.eclipse.m2e.core.project.IMavenProjectChangedListener; import org.eclipse.m2e.core.project.IMavenProjectFacade; @@ -961,11 +961,15 @@ public class ProjectConfigurationManager implements IProjectConfigurationManager } if(facade != null) { - LifecycleMappingConfiguration oldConfiguration = LifecycleMappingConfiguration.restore(facade, monitor); - if(oldConfiguration != null - && LifecycleMappingFactory.isLifecycleMappingChanged(facade, oldConfiguration, monitor)) { - mavenMarkerManager.addMarker(facade.getProject(), IMavenConstants.MARKER_CONFIGURATION_ID, - Messages.ProjectConfigurationUpdateRequired, -1, IMarker.SEVERITY_ERROR); + ProblemSeverity outOfDateSeverity = ProblemSeverity.get(mavenConfiguration.getOutOfDateProjectSeverity()); + mavenMarkerManager.deleteMarkers(facade.getProject(), IMavenConstants.MARKER_CONFIGURATION_ID); + if(!ProblemSeverity.ignore.equals(outOfDateSeverity)) { + LifecycleMappingConfiguration oldConfiguration = LifecycleMappingConfiguration.restore(facade, monitor); + if(oldConfiguration != null + && LifecycleMappingFactory.isLifecycleMappingChanged(facade, oldConfiguration, monitor)) { + mavenMarkerManager.addMarker(facade.getProject(), IMavenConstants.MARKER_CONFIGURATION_ID, + Messages.ProjectConfigurationUpdateRequired, -1, outOfDateSeverity.getSeverity()); + } } } else { IMavenProjectFacade oldFacade = event.getOldMavenProject(); |