]> git.argeo.org Git - gpl/argeo-slc.git/blobdiff - maven/maven-argeo-osgi-plugin/src/main/java/org/argeo/slc/maven/plugins/osgi/EquinoxExecMojo.java
Initiate Argeo Maven Plugins
[gpl/argeo-slc.git] / maven / maven-argeo-osgi-plugin / src / main / java / org / argeo / slc / maven / plugins / osgi / EquinoxExecMojo.java
diff --git a/maven/maven-argeo-osgi-plugin/src/main/java/org/argeo/slc/maven/plugins/osgi/EquinoxExecMojo.java b/maven/maven-argeo-osgi-plugin/src/main/java/org/argeo/slc/maven/plugins/osgi/EquinoxExecMojo.java
deleted file mode 100644 (file)
index acf393e..0000000
+++ /dev/null
@@ -1,361 +0,0 @@
-package org.argeo.slc.maven.plugins.osgi;
-
-import java.io.File;
-import java.util.ArrayList;
-import java.util.Arrays;
-import java.util.HashMap;
-import java.util.Iterator;
-import java.util.List;
-import java.util.Map;
-import java.util.Set;
-
-import org.apache.maven.artifact.Artifact;
-import org.apache.maven.plugin.MojoExecutionException;
-import org.apache.maven.plugin.MojoFailureException;
-import org.argeo.slc.maven.plugin.MavenDependencyManager;
-import org.argeo.slc.maven.plugin.SystemCall;
-import org.eclipse.core.runtime.adaptor.EclipseStarter;
-
-/**
- * Starts Equinox runtime
- * 
- * @goal equinox
- * */
-public class EquinoxExecMojo extends AbstractOsgiMojo {
-       /** @component */
-       private MavenDependencyManager mavenDependencyManager;
-
-       /**
-        * Equinox artifact id
-        * 
-        * @parameter expression="${equinoxArtifactId}"
-        *            default-value="org.eclipse.osgi"
-        * @required
-        */
-       protected String equinoxArtifactId;
-
-       /**
-        * OSGIBoot artifact id
-        * 
-        * @parameter expression="${osgiBootArtifactId}"
-        *            default-value="org.argeo.slc.osgiboot"
-        * @required
-        */
-       protected String osgiBootArtifactId;
-
-       /**
-        * Java executable
-        * 
-        * @parameter expression="${jvm}" default-value="${java.home}/bin/java"
-        * @required
-        */
-       protected String jvm;
-
-       /**
-        * JVM arguments
-        * 
-        * @parameter alias="${jvmArgs}"
-        */
-       protected String[] jvmArgs;
-
-       /**
-        * JVM arguments to append
-        * 
-        * @parameter alias="${jvmArgsToAppend}"
-        */
-       protected String[] jvmArgsToAppend;
-
-       protected String[] defaultJvmArgs = { "-Xmx128m" };
-
-       /**
-        * Debug port (0 deactivate)
-        * 
-        * @parameter expression="${debug}" default-value="0"
-        * @required
-        */
-       protected String debug;
-
-       /**
-        * Equinox args
-        * 
-        * @parameter alias="${args}"
-        */
-       protected String[] args;
-
-       /**
-        * Equinox args to append
-        * 
-        * @parameter alias="${argsToAppend}"
-        */
-       protected String[] argsToAppend;
-
-       protected String[] defaultArgs = { "-console", "-configuration",
-                       "target/slc/conf", "-data", "target/slc/data" };
-
-       /**
-        * JVM system properties
-        * 
-        * @parameter alias="${systemProperties}"
-        */
-       protected Map systemProperties;
-
-       /**
-        * Execution directory
-        * 
-        * @parameter expression="${execDir}"
-        *            default-value="${project.build.directory}/exec"
-        * @required
-        */
-       protected File execDir;
-
-       /**
-        * Whether to create a new JVM
-        * 
-        * @parameter expression="${fork}" default-value="false"
-        * @required
-        */
-       protected boolean fork;
-
-       /**
-        * Whether to wait for the runtime to exit
-        * 
-        * @parameter expression="${wait}" default-value="true"
-        * @required
-        */
-       protected boolean wait;
-
-       /**
-        * Number of milliseconds to pause after having started the server (when
-        * ${wait}=false)
-        * 
-        * @parameter expression="${pause}" default-value="0"
-        * @required
-        */
-       protected long pause;
-
-       public void execute() throws MojoExecutionException, MojoFailureException {
-               if (PACKAGING_BUNDLE.equals(project.getArtifact().getType())) {
-                       System.out.println("Skip artifact of type " + PACKAGING_BUNDLE
-                                       + " " + artifactToString(project.getArtifact()));
-                       return;
-               }
-
-               String originalUserDir = System.getProperty("user.dir");
-               try {
-                       LocationsStruct locationsStruct = listOsgiLocations();
-                       if (fork)
-                               execForked(locationsStruct);
-                       else
-                               execNonForked(locationsStruct);
-               } catch (Exception e) {
-                       throw new MojoExecutionException("Cannot execute OSGi runtime", e);
-               } finally {
-                       System.setProperty("user.dir", originalUserDir);
-               }
-       }
-
-       protected LocationsStruct listOsgiLocations() throws Exception {
-               LocationsStruct locationsStruct = new LocationsStruct();
-
-               Set dependencies = mavenDependencyManager
-                               .getTransitiveProjectDependencies(project, remoteRepos, local);
-
-               StringBuffer osgiLocations = new StringBuffer();
-               List bundleArtifacts = new ArrayList();
-               boolean first = true;
-               for (Iterator it = dependencies.iterator(); it.hasNext();) {
-                       Artifact depArtifact = (Artifact) it.next();
-                       printArtifact(depArtifact);
-
-                       if (depArtifact.getArtifactId().equals(equinoxArtifactId)) {
-                               locationsStruct.equinoxArtifact = depArtifact;
-                       } else if (depArtifact.getArtifactId().equals(osgiBootArtifactId)) {
-                               locationsStruct.osgiBootArtifact = depArtifact;
-                       } else {
-                               bundleArtifacts.add(depArtifact);
-
-                               if ("jar".equals(depArtifact.getType())) {
-                                       // Add to OSGi locations
-                                       if (first)
-                                               first = false;
-                                       else
-                                               osgiLocations.append(File.pathSeparatorChar);
-
-                                       osgiLocations.append(depArtifact.getFile()
-                                                       .getCanonicalPath()
-                                                       .replace(File.separatorChar, '/'));
-                               }
-                       }
-               }
-               locationsStruct.osgiLocations = osgiLocations.toString();
-               return locationsStruct;
-       }
-
-       protected void execNonForked(LocationsStruct locationsStruct)
-                       throws Exception {
-               // Set defaults
-               if (args == null) {
-                       if (fork)
-                               args = defaultArgs;
-                       else
-                               args = new String[] { "-console", "-configuration",
-                                               execDir.getPath() + File.separator + "conf", "-data",
-                                               execDir.getPath() + File.separator + "data" };
-               }
-
-               // if (!execDir.exists())
-               // execDir.mkdirs();
-               // System.setProperty("user.dir", execDir.getCanonicalPath());
-
-               // Build command
-               List cmdList = new ArrayList();
-
-               // System properties
-               if (!systemProperties.containsKey("osgi.bundles")) {
-                       if (locationsStruct.osgiBootArtifact == null)
-                               throw new Exception("No SLC OSGi boot bundle available.");
-                       System.setProperty("osgi.bundles", locationsStruct.osgiBootArtifact
-                                       .getFile().getCanonicalPath()
-                                       + "@start");
-               }
-
-               if (!systemProperties.containsKey("slc.osgi.locations"))
-                       System.setProperty("slc.osgi.locations",
-                                       locationsStruct.osgiLocations);
-
-               for (Iterator keys = systemProperties.keySet().iterator(); keys
-                               .hasNext();) {
-                       Object key = keys.next();
-                       Object value = systemProperties.get(key);
-                       String strValue = null;
-                       if (value != null) {
-                               strValue = value.toString().trim();
-                               strValue = strValue.replaceAll("\n", "");
-                               strValue = strValue.replaceAll("\t", "");
-                       }
-                       System.setProperty(key.toString(), strValue);
-               }
-
-               // Program arguments
-               cmdList.addAll(Arrays.asList(args));
-               if (argsToAppend != null)
-                       cmdList.addAll(Arrays.asList(argsToAppend));
-
-               String[] cmd = (String[]) cmdList.toArray(new String[0]);
-               System.out.println("Equinox arguments (non forked):");
-               printCommand(cmd);
-
-               EclipseStarter.startup(cmd, null);
-
-               if (wait) {
-                       while (EclipseStarter.isRunning()) {
-                               Thread.sleep(500);
-                       }
-               } else {
-                       Thread.sleep(pause);
-               }
-       }
-
-       protected void execForked(LocationsStruct locationsStruct) throws Exception {
-               // Set defaults
-               if (jvmArgs == null)
-                       jvmArgs = defaultJvmArgs;
-               if (args == null)
-                       args = defaultArgs;
-               if (systemProperties == null)
-                       systemProperties = new HashMap();
-
-               if (!execDir.exists())
-                       execDir.mkdirs();
-
-               // Build command
-               List cmdList = new ArrayList();
-               // JVM
-               cmdList.add(jvm);
-               // JVM arguments
-               cmdList.addAll(Arrays.asList(jvmArgs));
-
-               if (!"0".equals(debug))
-                       cmdList
-                                       .add("-agentlib:jdwp=transport=dt_socket,server=y,suspend=y,address="
-                                                       + debug);
-
-               if (jvmArgsToAppend != null)
-                       cmdList.addAll(Arrays.asList(jvmArgsToAppend));
-
-               // System properties
-               if (!systemProperties.containsKey("osgi.bundles"))
-                       cmdList.add("-Dosgi.bundles="
-                                       + locationsStruct.osgiBootArtifact.getFile()
-                                                       .getCanonicalPath() + "@start");
-               if (!systemProperties.containsKey("slc.osgi.locations"))
-                       cmdList
-                                       .add("-Dslc.osgi.locations="
-                                                       + locationsStruct.osgiLocations);
-               for (Iterator keys = systemProperties.keySet().iterator(); keys
-                               .hasNext();) {
-                       Object key = keys.next();
-                       Object value = systemProperties.get(key);
-                       String strValue = null;
-                       if (value != null) {
-                               strValue = value.toString().trim();
-                               strValue = strValue.replaceAll("\n", "");
-                               strValue = strValue.replaceAll("\t", "");
-                       }
-                       cmdList.add("-D" + key + "=" + strValue);
-               }
-
-               // Equinox jar
-               cmdList.add("-jar");
-               cmdList.add(locationsStruct.equinoxArtifact.getFile()
-                               .getCanonicalPath());
-
-               // Program arguments
-               cmdList.addAll(Arrays.asList(args));
-               if (argsToAppend != null)
-                       cmdList.addAll(Arrays.asList(argsToAppend));
-
-               String[] cmd = (String[]) cmdList.toArray(new String[0]);
-               System.out.println("Execute Equinox command (forked):");
-               printCommand(cmd);
-
-               SystemCall systemCall = new SystemCall(execDir.getCanonicalPath(), cmd,
-                               true);
-               if (wait) {
-                       systemCall.run();
-               } else {
-                       new Thread(systemCall).start();
-                       Thread.sleep(pause);
-               }
-       }
-
-       protected void printArtifact(Artifact artifact) {
-               if (getLog().isDebugEnabled())
-                       getLog().debug(artifactToString(artifact));
-       }
-
-       protected void printCommand(String[] cmd) {
-               for (int i = 0; i < cmd.length; i++) {
-                       boolean containsSpace = (cmd[i].indexOf(' ') >= 0)
-                                       || (cmd[i].indexOf('\t') >= 0);
-                       if (containsSpace)
-                               System.out.print('\"');
-                       System.out.print(cmd[i]);
-                       if (containsSpace)
-                               System.out.print('\"');
-                       System.out.print(' ');
-               }
-       }
-
-       protected static String artifactToString(Artifact artifact) {
-               return artifact.getGroupId() + ":" + artifact.getArtifactId() + ":"
-                               + artifact.getType() + ":" + artifact.getClassifier() + ":"
-                               + artifact.getVersion() + " (" + artifact.getFile() + ")";
-       }
-
-       protected class LocationsStruct {
-               protected Artifact equinoxArtifact = null;
-               protected Artifact osgiBootArtifact = null;
-               protected String osgiLocations = null;
-       }
-}