diff options
author | Anton Tanasenko | 2015-02-03 17:14:46 +0000 |
---|---|---|
committer | Anton Tanasenko | 2015-02-03 17:45:48 +0000 |
commit | 18db2711b4369204e663603a529158267f03aaef (patch) | |
tree | ad4fe59a3e594abbfb022643b3a0c287efdd76e0 | |
parent | e84152165805547b1fad2dbc775da711bd169383 (diff) | |
download | m2e-core-18db2711b4369204e663603a529158267f03aaef.tar.gz m2e-core-18db2711b4369204e663603a529158267f03aaef.tar.xz m2e-core-18db2711b4369204e663603a529158267f03aaef.zip |
458969 content assist logging, lifecycle-mapping parameter support
Change-Id: I37e2e6f8d3064523dd74e19b4e002225bd669d6c
Signed-off-by: Anton Tanasenko <atg.sleepless@gmail.com>
2 files changed, 91 insertions, 45 deletions
diff --git a/org.eclipse.m2e.editor.xml/.settings/org.eclipse.jdt.core.prefs b/org.eclipse.m2e.editor.xml/.settings/org.eclipse.jdt.core.prefs index 8a02f99c..603ef2d6 100644 --- a/org.eclipse.m2e.editor.xml/.settings/org.eclipse.jdt.core.prefs +++ b/org.eclipse.m2e.editor.xml/.settings/org.eclipse.jdt.core.prefs @@ -384,7 +384,7 @@ org.eclipse.jdt.core.formatter.number_of_empty_lines_to_preserve=1 org.eclipse.jdt.core.formatter.put_empty_statement_on_new_line=true org.eclipse.jdt.core.formatter.tabulation.char=space org.eclipse.jdt.core.formatter.tabulation.size=2 -org.eclipse.jdt.core.formatter.use_on_off_tags=false +org.eclipse.jdt.core.formatter.use_on_off_tags=true org.eclipse.jdt.core.formatter.use_tabs_only_for_leading_indentations=false org.eclipse.jdt.core.formatter.wrap_before_binary_operator=true org.eclipse.jdt.core.formatter.wrap_before_or_operator_multicatch=true diff --git a/org.eclipse.m2e.editor.xml/src/main/java/org/eclipse/m2e/editor/xml/internal/mojo/MojoParameterMetadataProvider.java b/org.eclipse.m2e.editor.xml/src/main/java/org/eclipse/m2e/editor/xml/internal/mojo/MojoParameterMetadataProvider.java index 24ee5cf5..f5ec6601 100644 --- a/org.eclipse.m2e.editor.xml/src/main/java/org/eclipse/m2e/editor/xml/internal/mojo/MojoParameterMetadataProvider.java +++ b/org.eclipse.m2e.editor.xml/src/main/java/org/eclipse/m2e/editor/xml/internal/mojo/MojoParameterMetadataProvider.java @@ -23,6 +23,7 @@ import java.lang.reflect.Type; import java.net.URI; import java.net.URL; import java.util.ArrayList; +import java.util.Arrays; import java.util.Collection; import java.util.Collections; import java.util.Date; @@ -33,6 +34,9 @@ import java.util.Map; import java.util.Properties; import java.util.Set; +import org.slf4j.Logger; +import org.slf4j.LoggerFactory; + import org.eclipse.aether.repository.RemoteRepository; import org.eclipse.core.runtime.CoreException; import org.eclipse.core.runtime.IProgressMonitor; @@ -46,11 +50,7 @@ import org.apache.maven.model.Plugin; import org.apache.maven.model.building.ModelSource; import org.apache.maven.model.building.UrlModelSource; import org.apache.maven.plugin.BuildPluginManager; -import org.apache.maven.plugin.InvalidPluginDescriptorException; import org.apache.maven.plugin.MavenPluginManager; -import org.apache.maven.plugin.PluginDescriptorParsingException; -import org.apache.maven.plugin.PluginManagerException; -import org.apache.maven.plugin.PluginResolutionException; import org.apache.maven.plugin.descriptor.MojoDescriptor; import org.apache.maven.plugin.descriptor.Parameter; import org.apache.maven.plugin.descriptor.PluginDescriptor; @@ -65,7 +65,6 @@ import org.eclipse.m2e.core.internal.IMavenConstants; import org.eclipse.m2e.core.internal.Messages; import org.eclipse.m2e.core.internal.embedder.MavenExecutionContext; import org.eclipse.m2e.core.internal.embedder.MavenImpl; -import org.eclipse.m2e.editor.xml.MvnIndexPlugin; /** @@ -74,6 +73,8 @@ import org.eclipse.m2e.editor.xml.MvnIndexPlugin; @SuppressWarnings("restriction") public class MojoParameterMetadataProvider { + private static final Logger log = LoggerFactory.getLogger(MojoParameterMetadataProvider.class); + private final MavenProject project; private final Plugin plugin; @@ -97,27 +98,21 @@ public class MojoParameterMetadataProvider { this.parameters.put(className, plist); final List<MojoParameter> parameters = plist; - MavenExecutionContext context = maven.createExecutionContext(); - context.getExecutionRequest().setCacheTransferError(false); - context.execute(new ICallable<Void>() { + execute(new ICallable<Void>() { public Void call(IMavenExecutionContext context, IProgressMonitor monitor) throws CoreException { + PluginDescriptor pd = getPluginDescriptor(context, monitor); - return context.execute(getProject(context), new ICallable<Void>() { - public Void call(IMavenExecutionContext context, IProgressMonitor monitor) throws CoreException { - PluginDescriptor pd = getPluginDescriptor(context, monitor); - - Class<?> clazz; - try { - clazz = pd.getClassRealm().loadClass(className); - } catch(ClassNotFoundException ex) { - return null; - } - - loadParameters(pd, clazz, parameters, monitor); + if(pd != null) { + Class<?> clazz; + try { + clazz = pd.getClassRealm().loadClass(className); + } catch(ClassNotFoundException ex) { return null; } - }, monitor); + loadParameters(pd, clazz, parameters, monitor); + } + return null; } }, monitor); } @@ -162,6 +157,11 @@ public class MojoParameterMetadataProvider { public MojoParameter getMojoParameterRoot(final String mojo, IProgressMonitor monitor) throws CoreException { + MojoParameter predefParameters = getPredefined(); + if(predefParameters != null) { + return predefParameters; + } + String key = "mojo:" + (mojo == null ? "*" : mojo); //$NON-NLS-1$ //$NON-NLS-2$ List<MojoParameter> plist = parameters.get(key); @@ -172,17 +172,13 @@ public class MojoParameterMetadataProvider { plist = parameters; this.parameters.put(key, plist); - MavenExecutionContext context = maven.createExecutionContext(); - context.getExecutionRequest().setCacheTransferError(false); - context.execute(new ICallable<Void>() { + execute(new ICallable<Void>() { public Void call(IMavenExecutionContext context, IProgressMonitor monitor) throws CoreException { - return context.execute(getProject(context), new ICallable<Void>() { - public Void call(IMavenExecutionContext context, IProgressMonitor monitor) throws CoreException { - loadMojoParameters(getPluginDescriptor(context, monitor), mojo, parameters, monitor); - return null; - } - }, monitor); - + PluginDescriptor pd = getPluginDescriptor(context, monitor); + if(pd != null) { + loadMojoParameters(pd, mojo, parameters, monitor); + } + return null; } }, monitor); } @@ -190,6 +186,24 @@ public class MojoParameterMetadataProvider { return new MojoParameter("", mojo, plist); //$NON-NLS-1$ } + private MojoParameter getPredefined() { + return PREDEF.get(plugin.getGroupId() + ":" + plugin.getArtifactId() + ":" + plugin.getVersion()); + } + + private void execute(final ICallable<Void> callable, IProgressMonitor monitor) throws CoreException { + MavenExecutionContext context = maven.createExecutionContext(); + context.getExecutionRequest().setCacheTransferError(false); + context.execute(new ICallable<Void>() { + public Void call(IMavenExecutionContext context, IProgressMonitor monitor) throws CoreException { + MavenProject mp = getProject(context); + if(mp != null) { + return context.execute(mp, callable, monitor); + } + return null; + } + }, monitor); + } + void loadMojoParameters(PluginDescriptor desc, String goal, List<MojoParameter> parameters, IProgressMonitor monitor) throws CoreException { @@ -219,8 +233,10 @@ public class MojoParameterMetadataProvider { clazz = desc.getClassRealm().loadClass(mojo.getImplementation()); } } catch(ClassNotFoundException | TypeNotPresentException ex) { - throw new CoreException(new Status(IStatus.ERROR, IMavenConstants.PLUGIN_ID, -1, ex.getMessage(), ex)); + log.warn(ex.getMessage()); + return; } + List<Parameter> ps = mojo.getParameters(); if(ps != null) { for(Parameter p : ps) { @@ -247,7 +263,8 @@ public class MojoParameterMetadataProvider { try { propertyDescriptors = Introspector.getBeanInfo(clazz).getPropertyDescriptors(); } catch(IntrospectionException ex) { - throw new CoreException(new Status(IStatus.ERROR, IMavenConstants.PLUGIN_ID, -1, ex.getMessage(), ex)); + log.warn(ex.getMessage()); + return; } for(PropertyDescriptor pd : propertyDescriptors) { @@ -262,7 +279,7 @@ public class MojoParameterMetadataProvider { } } - protected MavenProject getProject(IMavenExecutionContext context) throws CoreException { + protected MavenProject getProject(IMavenExecutionContext context) { if(project != null) { return project; } @@ -270,26 +287,23 @@ public class MojoParameterMetadataProvider { ModelSource modelSource = new UrlModelSource(DefaultMaven.class.getResource("project/standalone.xml")); //$NON-NLS-1$ try { return lookup(ProjectBuilder.class).build(modelSource, context.newProjectBuildingRequest()).getProject(); - } catch(ProjectBuildingException ex) { - throw new CoreException(new Status(IStatus.ERROR, IMavenConstants.PLUGIN_ID, -1, ex.getMessage(), ex)); + } catch(ProjectBuildingException | CoreException ex) { + log.warn(ex.getMessage()); + return null; } } - PluginDescriptor getPluginDescriptor(IMavenExecutionContext context, IProgressMonitor monitor) throws CoreException { + PluginDescriptor getPluginDescriptor(IMavenExecutionContext context, IProgressMonitor monitor) { PluginDescriptor desc; List<RemoteRepository> remoteRepos = context.getSession().getCurrentProject().getRemotePluginRepositories(); try { desc = lookup(MavenPluginManager.class).getPluginDescriptor(plugin, remoteRepos, context.getRepositorySession()); - } catch(PluginResolutionException | PluginDescriptorParsingException | InvalidPluginDescriptorException ex) { - throw new CoreException(new Status(IStatus.ERROR, MvnIndexPlugin.PLUGIN_ID, ex.getMessage(), ex)); - } - - try { lookup(BuildPluginManager.class).getPluginRealm(context.getSession(), desc); return desc; - } catch(PluginResolutionException | PluginManagerException ex) { - throw new CoreException(new Status(IStatus.ERROR, MvnIndexPlugin.PLUGIN_ID, ex.getMessage(), ex)); + } catch(Exception ex) { + log.warn(ex.getMessage()); + return null; } } @@ -565,4 +579,36 @@ public class MojoParameterMetadataProvider { INLINE_TYPES.add(URL.class); INLINE_TYPES.add(Date.class); } + + private static final Map<String, MojoParameter> PREDEF = new HashMap<>(); + static { + // @formatter:off + PREDEF.put("org.eclipse.m2e:lifecycle-mapping:1.0.0", + new MojoParameter("", "", Collections.singletonList( + new MojoParameter("lifecycleMappingMetadata", "LifecycleMappingMetadata", Collections.singletonList( + new MojoParameter("pluginExecutions", "List<PluginExecution>", Collections.singletonList( + new MojoParameter("pluginExecution", "PluginExecution", Arrays.asList( + new MojoParameter("pluginExecutionFilter", "PluginExecutionFilter", Arrays.asList( + new MojoParameter("groupId", "String"), + new MojoParameter("artifactId", "String"), + new MojoParameter("versionRange", "String"), + new MojoParameter("goals", "List<String>", Collections.singletonList( + new MojoParameter("goal", "String").multiple() + )) + )), + new MojoParameter("action", "Action", Arrays.asList( + new MojoParameter("ignore", "void"), + new MojoParameter("execute", "Execute", Arrays.asList( + new MojoParameter("runOnIncremental", "boolean"), + new MojoParameter("runOnConfiguration", "boolean") + )) + )) + )).multiple() + )) + )) + )) + ); + // @formatter:on + } + } |