You are viewing a plain text version of this content. The canonical link for it is here.
Posted to scm@geronimo.apache.org by sp...@apache.org on 2006/04/04 21:54:20 UTC
svn commit: r391393 - in
/geronimo/devtools/eclipse-plugin/trunk/maven-plugins/maven-emf-plugin/src/main/java/org/apache/emf/plugin:
GeneratorMojo.java LaunchOSGIMojo.java XSDImporterMojo.java
Author: sppatel
Date: Tue Apr 4 12:54:19 2006
New Revision: 391393
URL: http://svn.apache.org/viewcvs?rev=391393&view=rev
Log:
preservere osgi instance between executions
Modified:
geronimo/devtools/eclipse-plugin/trunk/maven-plugins/maven-emf-plugin/src/main/java/org/apache/emf/plugin/GeneratorMojo.java
geronimo/devtools/eclipse-plugin/trunk/maven-plugins/maven-emf-plugin/src/main/java/org/apache/emf/plugin/LaunchOSGIMojo.java
geronimo/devtools/eclipse-plugin/trunk/maven-plugins/maven-emf-plugin/src/main/java/org/apache/emf/plugin/XSDImporterMojo.java
Modified: geronimo/devtools/eclipse-plugin/trunk/maven-plugins/maven-emf-plugin/src/main/java/org/apache/emf/plugin/GeneratorMojo.java
URL: http://svn.apache.org/viewcvs/geronimo/devtools/eclipse-plugin/trunk/maven-plugins/maven-emf-plugin/src/main/java/org/apache/emf/plugin/GeneratorMojo.java?rev=391393&r1=391392&r2=391393&view=diff
==============================================================================
--- geronimo/devtools/eclipse-plugin/trunk/maven-plugins/maven-emf-plugin/src/main/java/org/apache/emf/plugin/GeneratorMojo.java (original)
+++ geronimo/devtools/eclipse-plugin/trunk/maven-plugins/maven-emf-plugin/src/main/java/org/apache/emf/plugin/GeneratorMojo.java Tue Apr 4 12:54:19 2006
@@ -26,6 +26,8 @@
public class GeneratorMojo extends LaunchOSGIMojo {
public static final String APPLICATION_ID = "org.eclipse.emf.codegen.ecore.Generator";
+
+ public static final String GOAL_NAME = "generate";
/**
* @parameter
@@ -62,6 +64,10 @@
*/
protected String getApplicationID() {
return APPLICATION_ID;
+ }
+
+ protected String getGoalName() {
+ return GOAL_NAME;
}
/*
Modified: geronimo/devtools/eclipse-plugin/trunk/maven-plugins/maven-emf-plugin/src/main/java/org/apache/emf/plugin/LaunchOSGIMojo.java
URL: http://svn.apache.org/viewcvs/geronimo/devtools/eclipse-plugin/trunk/maven-plugins/maven-emf-plugin/src/main/java/org/apache/emf/plugin/LaunchOSGIMojo.java?rev=391393&r1=391392&r2=391393&view=diff
==============================================================================
--- geronimo/devtools/eclipse-plugin/trunk/maven-plugins/maven-emf-plugin/src/main/java/org/apache/emf/plugin/LaunchOSGIMojo.java (original)
+++ geronimo/devtools/eclipse-plugin/trunk/maven-plugins/maven-emf-plugin/src/main/java/org/apache/emf/plugin/LaunchOSGIMojo.java Tue Apr 4 12:54:19 2006
@@ -23,9 +23,13 @@
import java.net.URLClassLoader;
import java.util.Arrays;
import java.util.HashMap;
+import java.util.Iterator;
+import java.util.List;
import java.util.Map;
import java.util.StringTokenizer;
+import org.apache.maven.model.Plugin;
+import org.apache.maven.model.PluginExecution;
import org.apache.maven.plugin.AbstractMojo;
import org.apache.maven.plugin.MojoExecutionException;
import org.apache.maven.plugin.MojoFailureException;
@@ -40,8 +44,13 @@
public static final String PROP_INSTANCE_AREA = "osgi.instance.area";
public static final String PROP_APPLICATION_ID = "eclipse.application";
public static final String PROP_USE_SYS_PROPS = "osgi.framework.useSystemProperties";
+ public static final String PROP_NOSHUTDOWN = "osgi.noShutdown";
public static final String STARTER = "org.eclipse.core.runtime.adaptor.EclipseStarter";
+ public static final String TOTAL_EXECUTIONS = "plugin.total.executions";
+ public static final String CURRENT_EXECUTION = "plugin.current.execution";
+ public static final String PLUGIN_ARTIFACT_ID = "maven-emf-plugin";
+
/**
* @parameter expression="${settings.localRepository}/eclipse/eclipse"
*/
@@ -76,6 +85,9 @@
validate();
+ boolean keepFrameworkAlive = keepFrameworkAlive();
+ System.out.println("keepFrameworkAlive = " + keepFrameworkAlive);
+
String[] args = getArguments();
if (args == null)
args = new String[] {};
@@ -93,29 +105,48 @@
initalPropertyMap.put(PROP_FRAMEWORK, osgi.toExternalForm());
initalPropertyMap.put(PROP_INSTANCE_AREA, workspace.toURL().toExternalForm());
initalPropertyMap.put(PROP_APPLICATION_ID, getApplicationID());
+ initalPropertyMap.put(PROP_NOSHUTDOWN, Boolean.toString(keepFrameworkAlive));
URL[] osgiURLArray = { new URL((String) initalPropertyMap.get(PROP_FRAMEWORK)) };
- URLClassLoader frameworkClassLoader = new URLClassLoader(osgiURLArray);
- Class clazz = frameworkClassLoader.loadClass(STARTER);
+
+ Class clazz = null;
+ if(getPluginContext().containsKey(STARTER)) {
+ clazz = (Class) getPluginContext().get(STARTER);
+ } else {
+ URLClassLoader frameworkClassLoader = new URLClassLoader(osgiURLArray);
+ clazz = frameworkClassLoader.loadClass(STARTER);
+ getPluginContext().put(STARTER, clazz);
+ }
Method setInitialProperties = clazz.getMethod("setInitialProperties", new Class[] { Map.class });
setInitialProperties.invoke(null, new Object[] { initalPropertyMap });
- Method runMethod = clazz.getMethod("run", new Class[] {
- String[].class, Runnable.class });
- runMethod.invoke(null, new Object[] { args, null });
+ if (!keepFrameworkAlive || getCurrentExecution() == 1) {
+ Method runMethod = clazz.getMethod("run", new Class[] {
+ String[].class, Runnable.class });
+ runMethod.invoke(null, new Object[] { args, null });
+ } else {
+ Method runMethod = clazz.getMethod("run", new Class[] { Object.class });
+ runMethod.invoke(null, new Object[] { args });
+ }
} catch (Exception e) {
+ e.printStackTrace();
throw new MojoFailureException(e.getMessage());
}
+ if(getCurrentExecution() == getTotalExecutions()) {
+ getPluginContext().remove(CURRENT_EXECUTION);
+ } else {
+ getPluginContext().put(CURRENT_EXECUTION, new Integer(getCurrentExecution() + 1));
+ }
}
-
-
protected abstract String getApplicationID();
protected abstract String[] getArguments();
+ protected abstract String getGoalName();
+
protected URL findOSGI() {
File bundleDir = new File(eclipseHome.getAbsoluteFile()
+ File.separator + "plugins");
@@ -146,5 +177,39 @@
protected void validate() throws MojoFailureException {
+ }
+
+ private boolean keepFrameworkAlive() {
+ return getCurrentExecution() <= getTotalExecutions();
+ }
+
+ private int getCurrentExecution() {
+ int currentExecution = 1;
+ if (getPluginContext().containsKey(CURRENT_EXECUTION)) {
+ currentExecution = ((Integer) getPluginContext().get(CURRENT_EXECUTION)).intValue();
+ }
+ return currentExecution;
+ }
+
+ private int getTotalExecutions() {
+ if (!getPluginContext().containsKey(TOTAL_EXECUTIONS)) {
+ System.out.println("totalExecutions not set");
+ int totalExecutions = 0;
+ List plugins = mavenProject.getBuild().getPlugins();
+ Iterator i = plugins.iterator();
+ while (i.hasNext()) {
+ Plugin plugin = (Plugin) i.next();
+ if (PLUGIN_ARTIFACT_ID.equals(plugin.getArtifactId())) {
+ Iterator j = plugin.getExecutions().iterator();
+ while (j.hasNext()) {
+ PluginExecution execution = (PluginExecution) j.next();
+ if (execution.getGoals().contains(getGoalName()))
+ totalExecutions++;
+ }
+ }
+ }
+ getPluginContext().put(TOTAL_EXECUTIONS, new Integer(totalExecutions));
+ }
+ return ((Integer) getPluginContext().get(TOTAL_EXECUTIONS)).intValue();
}
}
Modified: geronimo/devtools/eclipse-plugin/trunk/maven-plugins/maven-emf-plugin/src/main/java/org/apache/emf/plugin/XSDImporterMojo.java
URL: http://svn.apache.org/viewcvs/geronimo/devtools/eclipse-plugin/trunk/maven-plugins/maven-emf-plugin/src/main/java/org/apache/emf/plugin/XSDImporterMojo.java?rev=391393&r1=391392&r2=391393&view=diff
==============================================================================
--- geronimo/devtools/eclipse-plugin/trunk/maven-plugins/maven-emf-plugin/src/main/java/org/apache/emf/plugin/XSDImporterMojo.java (original)
+++ geronimo/devtools/eclipse-plugin/trunk/maven-plugins/maven-emf-plugin/src/main/java/org/apache/emf/plugin/XSDImporterMojo.java Tue Apr 4 12:54:19 2006
@@ -28,6 +28,8 @@
public class XSDImporterMojo extends LaunchOSGIMojo {
public static final String APPLICATION_ID = "org.eclipse.xsd.ecore.importer.XSD2GenModel";
+
+ public static final String GOAL_NAME = "xsd2genmodel";
/**
* @parameter
@@ -95,6 +97,10 @@
*/
protected String getApplicationID() {
return APPLICATION_ID;
+ }
+
+ protected String getGoalName() {
+ return GOAL_NAME;
}
protected StringBuffer processParameters() {