You are viewing a plain text version of this content. The canonical link for it is here.
Posted to svn@forrest.apache.org by rg...@apache.org on 2005/03/25 03:02:44 UTC

svn commit: r158980 - in forrest/trunk/tools/eclipse: .classpath lib/jetty-4.2.19.jar lib/servlet-2.3.jar lib/servlet-2.3.jar.license.txt plugin.xml src/org/apache/forrest/eclipse/ForrestPlugin.java src/org/apache/forrest/eclipse/job/ForrestManager.java src/org/apache/forrest/eclipse/job/ForrestRunner.java

Author: rgardler
Date: Thu Mar 24 18:02:42 2005
New Revision: 158980

URL: http://svn.apache.org/viewcvs?view=rev&rev=158980
Log:
-allow FORREST_HOME to be set by another plugin (some plugins need a specific version of Forrest)\n-pass forrest.plugins property value to servlet startup -separated jetty server starting into a separate class (first phae of allowing support of different servlet engines)

Removed:
    forrest/trunk/tools/eclipse/lib/jetty-4.2.19.jar
    forrest/trunk/tools/eclipse/lib/servlet-2.3.jar
    forrest/trunk/tools/eclipse/lib/servlet-2.3.jar.license.txt
Modified:
    forrest/trunk/tools/eclipse/.classpath
    forrest/trunk/tools/eclipse/plugin.xml
    forrest/trunk/tools/eclipse/src/org/apache/forrest/eclipse/ForrestPlugin.java
    forrest/trunk/tools/eclipse/src/org/apache/forrest/eclipse/job/ForrestManager.java
    forrest/trunk/tools/eclipse/src/org/apache/forrest/eclipse/job/ForrestRunner.java

Modified: forrest/trunk/tools/eclipse/.classpath
URL: http://svn.apache.org/viewcvs/forrest/trunk/tools/eclipse/.classpath?view=diff&r1=158979&r2=158980
==============================================================================
--- forrest/trunk/tools/eclipse/.classpath (original)
+++ forrest/trunk/tools/eclipse/.classpath Thu Mar 24 18:02:42 2005
@@ -2,9 +2,7 @@
 <classpath>
 	<classpathentry kind="src" path="src"/>
 	<classpathentry exported="true" kind="lib" path="lib/log4j-1.2.9.jar"/>
-	<classpathentry exported="true" kind="lib" path="lib/jetty-4.2.19.jar"/>
 	<classpathentry kind="con" path="org.eclipse.pde.core.requiredPlugins"/>
 	<classpathentry kind="con" path="org.eclipse.jdt.launching.JRE_CONTAINER"/>
-	<classpathentry kind="lib" path="lib/servlet-2.3.jar"/>
 	<classpathentry kind="output" path="build"/>
 </classpath>

Modified: forrest/trunk/tools/eclipse/plugin.xml
URL: http://svn.apache.org/viewcvs/forrest/trunk/tools/eclipse/plugin.xml?view=diff&r1=158979&r2=158980
==============================================================================
--- forrest/trunk/tools/eclipse/plugin.xml (original)
+++ forrest/trunk/tools/eclipse/plugin.xml Thu Mar 24 18:02:42 2005
@@ -30,12 +30,6 @@
       <library name="lib/log4j-1.2.9.jar">
          <export name="*"/>
       </library>
-      <library name="lib/jetty-4.2.19.jar">
-         <export name="*"/>
-      </library>
-      <library name="lib/servlet-2.3.jar">
-         <export name="*"/>
-      </library>
    </runtime>
    <requires>
       <import plugin="org.apache.ant"/>
@@ -50,6 +44,7 @@
       <import plugin="org.eclipse.ui.ide"/>
       <import plugin="org.eclipse.webbrowser"/>
       <import plugin="org.eclipse.debug.ui"/>
+      <import plugin="org.burrokeet.servletEngine"/>
    </requires>
 
 

Modified: forrest/trunk/tools/eclipse/src/org/apache/forrest/eclipse/ForrestPlugin.java
URL: http://svn.apache.org/viewcvs/forrest/trunk/tools/eclipse/src/org/apache/forrest/eclipse/ForrestPlugin.java?view=diff&r1=158979&r2=158980
==============================================================================
--- forrest/trunk/tools/eclipse/src/org/apache/forrest/eclipse/ForrestPlugin.java (original)
+++ forrest/trunk/tools/eclipse/src/org/apache/forrest/eclipse/ForrestPlugin.java Thu Mar 24 18:02:42 2005
@@ -86,13 +86,14 @@
 	public ResourceBundle getResourceBundle() {
 		return resourceBundle;
 	}
+	
 	/* (non-Javadoc)
 	 * @see org.eclipse.ui.plugin.AbstractUIPlugin#initializeDefaultPreferences(org.eclipse.jface.preference.IPreferenceStore)
 	 */
 	protected void initializeDefaultPreferences(IPreferenceStore store) {
 		super.initializeDefaultPreferences(store);
 		
-		HashMap envVariables = new HashMap();
+	   HashMap envVariables = new HashMap();
 	   BufferedReader reader = null;
 
 	   //"env" works on Linux & Unix Variants but if we're on Windows,
@@ -130,5 +131,13 @@
 		if (envVariables.containsKey(ForrestPreferences.FORREST_HOME)) {
 			store.setDefault(ForrestPreferences.FORREST_HOME, (String)envVariables.get(ForrestPreferences.FORREST_HOME));
 		}
+	}
+	/**
+	 * Set the preference value for Forrest Home.
+	 * @param forrestHome
+	 */
+	public void setForrestHome(String forrestHome) {
+		IPreferenceStore store = getPreferenceStore();
+		store.setDefault(ForrestPreferences.FORREST_HOME, forrestHome);
 	}
 }

Modified: forrest/trunk/tools/eclipse/src/org/apache/forrest/eclipse/job/ForrestManager.java
URL: http://svn.apache.org/viewcvs/forrest/trunk/tools/eclipse/src/org/apache/forrest/eclipse/job/ForrestManager.java?view=diff&r1=158979&r2=158980
==============================================================================
--- forrest/trunk/tools/eclipse/src/org/apache/forrest/eclipse/job/ForrestManager.java (original)
+++ forrest/trunk/tools/eclipse/src/org/apache/forrest/eclipse/job/ForrestManager.java Thu Mar 24 18:02:42 2005
@@ -61,7 +61,7 @@
 	private static final ForrestManager INSTANCE = new ForrestManager();
 
 	// FIXME: dir configuration should be in preferences and should be set by
-	// reading forrest.properties
+	// reading forrest.properties and forrest.build.xml (where some defaults are set)
 
 	public static final String FORREST_HOME = ForrestPlugin.getDefault()
 			.getPluginPreferences().getString(ForrestPreferences.FORREST_HOME);
@@ -98,6 +98,9 @@
 	
 	public static final String FORREST_ANTTASK_CLASSES = FORREST_HOME
 			+ File.separator + "tools" + File.separator + "anttasks" + File.separator;
+	
+	public static final String FORREST_PLUGINS = FORREST_HOME
+			+ File.separator + "build" + File.separator + "plugins" + File.separator;
 
 	private static final String FORREST_DEFAULT_PROPERTIES_FILE = FORREST_CORE_WEBAPP
 	+ File.separatorChar + "default-forrest.properties";
@@ -136,6 +139,9 @@
 		props.setSrcFile(new File(FORREST_DEFAULT_PROPERTIES_FILE));
 		props.execute();
 		
+		project.setProperty("forrest.home", FORREST_HOME);
+		project.setProperty("forrest.plugins", FORREST_PLUGINS);
+		
 		return project.getProperties();
 	}
 	
@@ -187,8 +193,6 @@
 			vctFiles.addAll(getLibFiles(FORREST_ENDORSED_LIB));
 			//			 add optional libs
 			vctFiles.addAll(getLibFiles(FORREST_OPTIONAL_LIB));
-			//			 add jetty libs
-			vctFiles.addAll(getLibFiles(JETTY_LIB));
 		} catch (FileNotFoundException e) {
 			logger.error("getClasspathFiles()", e);
 

Modified: forrest/trunk/tools/eclipse/src/org/apache/forrest/eclipse/job/ForrestRunner.java
URL: http://svn.apache.org/viewcvs/forrest/trunk/tools/eclipse/src/org/apache/forrest/eclipse/job/ForrestRunner.java?view=diff&r1=158979&r2=158980
==============================================================================
--- forrest/trunk/tools/eclipse/src/org/apache/forrest/eclipse/job/ForrestRunner.java (original)
+++ forrest/trunk/tools/eclipse/src/org/apache/forrest/eclipse/job/ForrestRunner.java Thu Mar 24 18:02:42 2005
@@ -20,28 +20,16 @@
 import java.io.IOException;
 import java.net.MalformedURLException;
 import java.net.URL;
-import java.util.ArrayList;
-import java.util.Enumeration;
-import java.util.Hashtable;
-import java.util.List;
 
 import org.apache.forrest.eclipse.ForrestPlugin;
 import org.apache.forrest.eclipse.preference.ForrestPreferences;
 import org.apache.log4j.Logger;
-import org.eclipse.core.runtime.CoreException;
-import org.eclipse.core.runtime.IPath;
+import org.burrokeet.servletEngine.Jetty;
+import org.burrokeet.servletEngine.Server;
 import org.eclipse.core.runtime.IProgressMonitor;
 import org.eclipse.core.runtime.IStatus;
-import org.eclipse.core.runtime.Path;
 import org.eclipse.core.runtime.Status;
-import org.eclipse.debug.core.DebugPlugin;
-import org.eclipse.debug.core.ILaunchConfiguration;
-import org.eclipse.debug.core.ILaunchConfigurationType;
-import org.eclipse.debug.core.ILaunchConfigurationWorkingCopy;
-import org.eclipse.debug.core.ILaunchManager;
 import org.eclipse.jdt.launching.IJavaLaunchConfigurationConstants;
-import org.eclipse.jdt.launching.IRuntimeClasspathEntry;
-import org.eclipse.jdt.launching.JavaRuntime;
 import org.eclipse.webbrowser.WebBrowser;
 import org.eclipse.webbrowser.WebBrowserEditorInput;
 
@@ -59,12 +47,10 @@
 	
 	private String workingDir;
 
-	private static final int CORE_EXCEPTION = 100;
+	private static final int BROWSER_ERROR = 200;
 
-	private static final int IO_EXCEPTION = 101;
+	private static final int IO_EXCEPTION = 300;
 
-	private static final int BROWSER_ERROR = 200;
-	
 	/**
 	 * Create a Forrest runner that will run a Jetty server on a given directory
 	 * @param workingDir - the working directory for the command
@@ -98,86 +84,28 @@
 			
 		monitor.subTask("Starting Server");
 		if(status.isOK()) {
-			ILaunchManager manager = DebugPlugin.getDefault().getLaunchManager();
-			ILaunchConfigurationType type =
-			      manager.getLaunchConfigurationType(ID_JAVA_APPLICATION);
-			ILaunchConfiguration[] configurations;
-			ILaunchConfigurationWorkingCopy workingCopy;
+			ForrestManager forrestManager = ForrestManager.getInstance();
+			String confPath = ForrestManager.FORREST_CORE_WEBAPP + File.separatorChar + "jettyconf.xml";
 			try {
-				configurations = manager.getLaunchConfigurations(type);
-				for (int i = 0; i < configurations.length; i++) {
-			      ILaunchConfiguration configuration = configurations[i];
-			      if (configuration.getName().equals("Start Jetty")) {
-			         configuration.delete();
-			         break;
-			      }
-			   }
-			   workingCopy = type.newInstance(null, "Start Jetty");
-			   workingCopy.setAttribute(ATTR_MAIN_TYPE_NAME,
-	              "org.mortbay.jetty.Server");
-			   // TODO: allow project specific jettyconf.xml
-			   String args = ForrestManager.FORREST_CORE_WEBAPP + File.separatorChar + "jettyconf.xml";
-			   workingCopy.setAttribute(ATTR_PROGRAM_ARGUMENTS, args);
-			   
-			   List classpath = new ArrayList();
-			   
-			   File[] files = ForrestManager.getClasspathFiles();
-			   IPath classpathEntryPath;
-			   IRuntimeClasspathEntry classpathEntry;
-			   for (int i = 0; i < files.length; i++) {
-				   classpathEntryPath = new Path(files[i].getAbsolutePath());
-				   classpathEntry = JavaRuntime.newArchiveRuntimeClasspathEntry(classpathEntryPath);
-				   classpathEntry.setClasspathProperty(IRuntimeClasspathEntry.USER_CLASSES);
-				   classpath.add(classpathEntry.getMemento());
-			   }
-			   
-			   IPath systemLibsPath = new Path(JavaRuntime.JRE_CONTAINER);
-			   IRuntimeClasspathEntry systemLibsEntry =
-			      JavaRuntime.newRuntimeContainerClasspathEntry(systemLibsPath,
-			         IRuntimeClasspathEntry.STANDARD_CLASSES);
-			   classpath.add(systemLibsEntry.getMemento());
-			   
-			   workingCopy.setAttribute(ATTR_CLASSPATH, classpath);
-			   workingCopy.setAttribute(ATTR_DEFAULT_CLASSPATH, false);
-			   
-			   ForrestManager forrestManager = ForrestManager.getInstance();
-			   Hashtable props = forrestManager.getProperties(workingDir);
-			   
-			   String propName;
-			   String propValue;
-			   StringBuffer sbVars = new StringBuffer();
-			   for (Enumeration e = props.keys() ; e.hasMoreElements() ;) {
-		         propName = (String)e.nextElement();
-		         propValue = (String)props.get(propName);
-			   	 sbVars.append("-D");
-			   	 sbVars.append(propName);
-			   	 sbVars.append("=");
-			   	 sbVars.append(propValue);
-			   	 sbVars.append(" ");
-		         if (logger.isInfoEnabled()) {
-					logger.info("Project property  : " + propName + " = " + propValue);
-				 } 
-		       }
-			   
-			   String strEndorsedLibs = "-Djava.endorsed.dirs=\"" + ForrestManager.FORREST_ENDORSED_LIB + "\"";
-			   workingCopy.setAttribute(ATTR_VM_ARGUMENTS,
-			        sbVars.toString() + strEndorsedLibs);
-			   
-			   workingCopy.setAttribute(ATTR_WORKING_DIRECTORY, ForrestManager.FORREST_CORE_WEBAPP);
-			   
-			   ILaunchConfiguration jettyConfig = workingCopy.doSave();
-			   //DebugUITools.launch(configuration, ILaunchManager.RUN_MODE);
-			   ForrestManager.setServerLaunch( jettyConfig.launch(ILaunchManager.RUN_MODE, monitor));
-			} catch (CoreException e) {
-				logger.error("run(IProgressMonitor)", e);
-				return new Status(Status.ERROR, ForrestPlugin.ID, CORE_EXCEPTION, "Unable to start Jetty server", e);
+				Server jetty = new Jetty(confPath, 
+					  			  ForrestManager.FORREST_CORE_WEBAPP, 
+								  ForrestManager.FORREST_ENDORSED_LIB,
+								  forrestManager.getProperties(workingDir),
+								  ForrestManager.getClasspathFiles());
+				status = jetty.start(monitor);
+				if (status.isOK()) {
+					ForrestManager.setServerLaunch(jetty.getLaunch());
+				} else {
+					ForrestManager.setServerLaunch(null);
+				}
 			} catch (IOException e) {
 				logger.error("run(IProgressMonitor)", e);
-				return new Status(Status.ERROR,ForrestPlugin.ID, IO_EXCEPTION, "Unable to start Jetty server", e);
+				status = new Status(Status.ERROR,ForrestPlugin.ID, IO_EXCEPTION, "Unable to start Jetty server", e);
 			}
 		}
 		
-		if ( ! openBrowser(monitor)) {
+		// FIXME: only open the browser once JETTY has fully started
+		if ( status.isOK() & ! openBrowser(monitor)) {
 			status = new Status(Status.WARNING, ForrestPlugin.ID, BROWSER_ERROR, "Unable to open browser", null);
 		}