introduce an spi to plug alternate effective pom tab content
diff --git a/org.eclipse.m2e.editor/src/org/eclipse/m2e/editor/pom/EffectivePomEditorProvider.java b/org.eclipse.m2e.editor/src/org/eclipse/m2e/editor/pom/EffectivePomEditorProvider.java
new file mode 100644
index 0000000..617f558
--- /dev/null
+++ b/org.eclipse.m2e.editor/src/org/eclipse/m2e/editor/pom/EffectivePomEditorProvider.java
@@ -0,0 +1,65 @@
+package org.eclipse.m2e.editor.pom;
+
+import org.apache.maven.project.MavenProject;
+import org.eclipse.m2e.editor.MavenEditorPlugin;
+import org.eclipse.ui.IEditorInput;
+import org.eclipse.wst.sse.ui.StructuredTextEditor;
+import org.osgi.framework.BundleContext;
+import org.osgi.framework.ServiceReference;
+
+public final class EffectivePomEditorProvider {
+
+ private EffectivePomEditorProvider() {
+ }
+
+ public static IEditorInput createEditorInput(MavenProject project, String name) {
+ BundleContext context = MavenEditorPlugin.getDefault().getBundle().getBundleContext();
+ if (context == null) {
+ return null;
+ }
+ ServiceReference ref = context.getServiceReference(Implementation.class.getName());
+ if (ref == null) {
+ return null;
+ }
+ Implementation service = (Implementation)context.getService(ref);
+ if (service != null) {
+ try {
+ return service.createEditorInput(project, name);
+ } finally {
+ context.ungetService(ref);
+ }
+ }
+ return null;
+ }
+
+ public static StructuredTextEditor createTextEditor() {
+ BundleContext context = MavenEditorPlugin.getDefault().getBundle().getBundleContext();
+ if (context == null) {
+ return null;
+ }
+ ServiceReference ref = context.getServiceReference(Implementation.class.getName());
+ if (ref == null) {
+ return null;
+ }
+ Implementation service = (Implementation)context.getService(ref);
+ if (service != null) {
+ try {
+ return service.createTextEditor();
+ } finally {
+ context.ungetService(ref);
+ }
+ }
+ return null;
+ }
+
+
+
+ public interface Implementation {
+
+ IEditorInput createEditorInput(MavenProject project, String name);
+
+ StructuredTextEditor createTextEditor();
+
+ }
+
+}
diff --git a/org.eclipse.m2e.editor/src/org/eclipse/m2e/editor/pom/MavenPomEditor.java b/org.eclipse.m2e.editor/src/org/eclipse/m2e/editor/pom/MavenPomEditor.java
index 5ce8a4f..a4120e0 100644
--- a/org.eclipse.m2e.editor/src/org/eclipse/m2e/editor/pom/MavenPomEditor.java
+++ b/org.eclipse.m2e.editor/src/org/eclipse/m2e/editor/pom/MavenPomEditor.java
@@ -528,32 +528,34 @@
@Override
protected IStatus run(IProgressMonitor monitor) {
try{
- StringWriter sw = new StringWriter();
final String name = getPartName() + Messages.MavenPomEditor_effective;
MavenProject mavenProject = SelectionUtil.getMavenProject(getEditorInput(), monitor);
if(mavenProject == null){
showEffectivePomError(name);
return Status.CANCEL_STATUS;
}
- new MavenXpp3Writer().write(sw, mavenProject.getModel());
- final String content = sw.toString();
-
+ IEditorInput editorInput = EffectivePomEditorProvider.createEditorInput(mavenProject, name);
+ if (editorInput == null) {
+ try{
+ StringWriter sw = new StringWriter();
+ new MavenXpp3Writer().write(sw, mavenProject.getModel());
+ final String content = sw.toString();
+ editorInput = new MavenStorageEditorInput(name, name, null, content.getBytes("UTF-8")); //$NON-NLS-1$
+ }catch(IOException ie){
+ MavenLogger.log(new Status(IStatus.ERROR, MavenEditorPlugin.PLUGIN_ID, -1, Messages.MavenPomEditor_error_failed_effective, ie));
+ }
+ }
+ final IEditorInput fEditorInput = editorInput;
Display.getDefault().asyncExec(new Runnable(){
public void run() {
- try{
- IEditorInput editorInput = new MavenStorageEditorInput(name, name, null, content.getBytes("UTF-8")); //$NON-NLS-1$
- effectivePomSourcePage.setInput(editorInput);
+ effectivePomSourcePage.setInput(fEditorInput);
effectivePomSourcePage.update();
- }catch(IOException ie){
- MavenLogger.log(new Status(IStatus.ERROR, MavenEditorPlugin.PLUGIN_ID, -1, Messages.MavenPomEditor_error_failed_effective, ie));
- }
}
});
+
return Status.OK_STATUS;
} catch(CoreException ce){
return new Status(IStatus.ERROR, MavenEditorPlugin.PLUGIN_ID, -1, Messages.MavenPomEditor_error_failed_effective, ce);
- } catch(IOException ie){
- return new Status(IStatus.ERROR, MavenEditorPlugin.PLUGIN_ID, -1, Messages.MavenPomEditor_error_failed_effective, ie);
}
}
}
@@ -677,7 +679,10 @@
sourcePage = new StructuredSourceTextEditor();
sourcePage.setEditorPart(this);
//the page for showing the effective POM
- effectivePomSourcePage = new StructuredTextEditor();
+ effectivePomSourcePage = EffectivePomEditorProvider.createTextEditor();
+ if (effectivePomSourcePage == null) {
+ effectivePomSourcePage = new StructuredTextEditor();
+ }
effectivePomSourcePage.setEditorPart(this);
try {
int dex = addPage(effectivePomSourcePage, getEditorInput());