Made m2e integration m2e 1.0.x compatible by providing implementation of
AbstractJavaProjectConfigurator

git-svn-id: https://svn.apache.org/repos/asf/directmemory/lightning/trunk@1398077 13f79535-47bb-0310-9956-ffa450edef68
diff --git a/lightning-maven-eclipse-helper/META-INF/MANIFEST.MF b/lightning-maven-eclipse-helper/META-INF/MANIFEST.MF
index 3353eb8..94c8655 100644
--- a/lightning-maven-eclipse-helper/META-INF/MANIFEST.MF
+++ b/lightning-maven-eclipse-helper/META-INF/MANIFEST.MF
@@ -6,5 +6,8 @@
 Bundle-Vendor: Noctarius
 Bundle-RequiredExecutionEnvironment: J2SE-1.5,
  JavaSE-1.6
-Require-Bundle: org.eclipse.m2e.jdt;bundle-version="[1.1.0,1.2.0)",
- org.eclipse.m2e.core;bundle-version="[1.1.0,1.2.0)"
+Require-Bundle: org.eclipse.core.resources;bundle-version="3.4.0",
+ org.eclipse.core.runtime;bundle-version="3.4.0",
+ org.eclipse.m2e.jdt;bundle-version="[1.0.0,2.0.0)",
+ org.eclipse.m2e.core;bundle-version="[1.0.0,2.0.0)",
+ org.eclipse.m2e.maven.runtime;bundle-version="[1.0.0,2.0.0)"
diff --git a/lightning-maven-eclipse-helper/plugin.xml b/lightning-maven-eclipse-helper/plugin.xml
index 5550f5c..75603b6 100644
--- a/lightning-maven-eclipse-helper/plugin.xml
+++ b/lightning-maven-eclipse-helper/plugin.xml
@@ -19,7 +19,13 @@
 under the License.
 -->
 <plugin>
-  <extension
-    point="org.eclipse.m2e.core.lifecycleMappingMetadataSource">
+  <extension point="org.eclipse.m2e.core.projectConfigurators">
+    <configurator
+        class="org.apache.directmemory.lightning.m2e.LightningProjectConfigurator"
+        id="org.apache.directmemory.lightning.lightningConfigurator"
+        name="DM-Lightning Project Configurator">
+    </configurator>
+  </extension>
+  <extension point="org.eclipse.m2e.core.lifecycleMappingMetadataSource">
   </extension>
 </plugin>
\ No newline at end of file
diff --git a/lightning-maven-eclipse-helper/src/main/java/org/apache/directmemory/lightning/m2e/LightningBuildParticipant.java b/lightning-maven-eclipse-helper/src/main/java/org/apache/directmemory/lightning/m2e/LightningBuildParticipant.java
new file mode 100644
index 0000000..f10e921
--- /dev/null
+++ b/lightning-maven-eclipse-helper/src/main/java/org/apache/directmemory/lightning/m2e/LightningBuildParticipant.java
@@ -0,0 +1,62 @@
+package org.apache.directmemory.lightning.m2e;
+
+import java.io.File;
+import java.util.Set;
+
+import org.apache.maven.plugin.MojoExecution;
+import org.codehaus.plexus.util.Scanner;
+import org.eclipse.core.resources.IProject;
+import org.eclipse.core.runtime.IProgressMonitor;
+import org.eclipse.m2e.core.MavenPlugin;
+import org.eclipse.m2e.core.embedder.IMaven;
+import org.eclipse.m2e.core.project.configurator.MojoExecutionBuildParticipant;
+import org.sonatype.plexus.build.incremental.BuildContext;
+
+public class LightningBuildParticipant
+    extends MojoExecutionBuildParticipant
+{
+
+    public LightningBuildParticipant( MojoExecution execution )
+    {
+        super( execution, true );
+    }
+
+    @Override
+    public Set<IProject> build( int kind, IProgressMonitor monitor )
+        throws Exception
+    {
+        IMaven maven = MavenPlugin.getMaven();
+        BuildContext buildContext = getBuildContext();
+
+        File classesDirectory =
+            maven.getMojoParameterValue( getSession(), getMojoExecution(), "targetBuildDirectory", File.class );
+
+        if ( classesDirectory == null )
+        {
+            return null;
+        }
+
+        Scanner scanner = buildContext.newScanner( classesDirectory );
+        scanner.scan();
+
+        String[] includedFiles = scanner.getIncludedFiles();
+        if ( includedFiles == null || includedFiles.length == 0 )
+        {
+            return null;
+        }
+
+        Set<IProject> result = super.build( kind, monitor );
+
+        File generatedDirectory =
+            maven.getMojoParameterValue( getSession(), getMojoExecution(), "generatedSourceDirectory", File.class );
+        if ( generatedDirectory != null )
+        {
+            buildContext.refresh( generatedDirectory );
+        }
+
+        buildContext.refresh( classesDirectory );
+
+        return result;
+    }
+
+}
diff --git a/lightning-maven-eclipse-helper/src/main/java/org/apache/directmemory/lightning/m2e/LightningProjectConfigurator.java b/lightning-maven-eclipse-helper/src/main/java/org/apache/directmemory/lightning/m2e/LightningProjectConfigurator.java
new file mode 100644
index 0000000..dfeac43
--- /dev/null
+++ b/lightning-maven-eclipse-helper/src/main/java/org/apache/directmemory/lightning/m2e/LightningProjectConfigurator.java
@@ -0,0 +1,20 @@
+package org.apache.directmemory.lightning.m2e;
+
+import org.apache.maven.plugin.MojoExecution;
+import org.eclipse.m2e.core.lifecyclemapping.model.IPluginExecutionMetadata;
+import org.eclipse.m2e.core.project.IMavenProjectFacade;
+import org.eclipse.m2e.core.project.configurator.AbstractBuildParticipant;
+import org.eclipse.m2e.jdt.AbstractJavaProjectConfigurator;
+
+public class LightningProjectConfigurator
+    extends AbstractJavaProjectConfigurator
+{
+
+    @Override
+    public AbstractBuildParticipant getBuildParticipant( IMavenProjectFacade projectFacade, MojoExecution execution,
+                                                         IPluginExecutionMetadata executionMetadata )
+    {
+        return new LightningBuildParticipant( execution );
+    }
+
+}