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/08/10 02:24:25 UTC

svn commit: r430195 - /geronimo/devtools/eclipse-plugin/trunk/plugins/org.apache.geronimo.st.core/src/org/apache/geronimo/st/core/GeronimoLaunchableAdapterDelegate.java

Author: sppatel
Date: Wed Aug  9 17:24:24 2006
New Revision: 430195

URL: http://svn.apache.org/viewvc?rev=430195&view=rev
Log:
GERONIMODEVTOOLS-52 provide own launchable adapter to launch web resources

Modified:
    geronimo/devtools/eclipse-plugin/trunk/plugins/org.apache.geronimo.st.core/src/org/apache/geronimo/st/core/GeronimoLaunchableAdapterDelegate.java

Modified: geronimo/devtools/eclipse-plugin/trunk/plugins/org.apache.geronimo.st.core/src/org/apache/geronimo/st/core/GeronimoLaunchableAdapterDelegate.java
URL: http://svn.apache.org/viewvc/geronimo/devtools/eclipse-plugin/trunk/plugins/org.apache.geronimo.st.core/src/org/apache/geronimo/st/core/GeronimoLaunchableAdapterDelegate.java?rev=430195&r1=430194&r2=430195&view=diff
==============================================================================
--- geronimo/devtools/eclipse-plugin/trunk/plugins/org.apache.geronimo.st.core/src/org/apache/geronimo/st/core/GeronimoLaunchableAdapterDelegate.java (original)
+++ geronimo/devtools/eclipse-plugin/trunk/plugins/org.apache.geronimo.st.core/src/org/apache/geronimo/st/core/GeronimoLaunchableAdapterDelegate.java Wed Aug  9 17:24:24 2006
@@ -15,10 +15,19 @@
  */
 package org.apache.geronimo.st.core;
 
+import java.net.URL;
+
+import org.apache.geronimo.st.core.internal.Trace;
 import org.eclipse.core.runtime.CoreException;
+import org.eclipse.core.runtime.NullProgressMonitor;
+import org.eclipse.jst.server.core.Servlet;
 import org.eclipse.wst.server.core.IModuleArtifact;
 import org.eclipse.wst.server.core.IServer;
+import org.eclipse.wst.server.core.model.IURLProvider;
 import org.eclipse.wst.server.core.model.LaunchableAdapterDelegate;
+import org.eclipse.wst.server.core.model.ServerDelegate;
+import org.eclipse.wst.server.core.util.HttpLaunchable;
+import org.eclipse.wst.server.core.util.WebResource;
 
 public class GeronimoLaunchableAdapterDelegate extends LaunchableAdapterDelegate {
 
@@ -29,7 +38,45 @@
 	 *      org.eclipse.wst.server.core.IModuleArtifact)
 	 */
 	public Object getLaunchable(IServer server, IModuleArtifact moduleArtifact) throws CoreException {
-		// TODO Auto-generated method stub
+
+		GeronimoServerDelegate delegate = (GeronimoServerDelegate) server.getAdapter(GeronimoServerDelegate.class);
+		if (delegate == null)
+			delegate = (GeronimoServerDelegate) server.loadAdapter(GeronimoServerDelegate.class, new NullProgressMonitor());
+		if (delegate == null)
+			return null;
+
+		if ((moduleArtifact instanceof Servlet)
+				|| (moduleArtifact instanceof WebResource))
+			return getHttpLaunchable(moduleArtifact, delegate);
+
+		return null;
+	}
+
+	private Object getHttpLaunchable(IModuleArtifact moduleObject, ServerDelegate delegate) {
+		URL url = ((IURLProvider) delegate).getModuleRootURL(moduleObject.getModule());
+		try {
+			if (moduleObject instanceof Servlet) {
+				Servlet servlet = (Servlet) moduleObject;
+				if (servlet.getAlias() != null) {
+					String path = servlet.getAlias();
+					if (path.startsWith("/"))
+						path = path.substring(1);
+					url = new URL(url, path);
+				} else
+					url = new URL(url, "servlet/"
+							+ servlet.getServletClassName());
+			} else if (moduleObject instanceof WebResource) {
+				WebResource resource = (WebResource) moduleObject;
+				String path = resource.getPath().toString();
+				if (path != null && path.startsWith("/") && path.length() > 0)
+					path = path.substring(1);
+				if (path != null && path.length() > 0)
+					url = new URL(url, path);
+			}
+			return new HttpLaunchable(url);
+		} catch (Exception e) {
+			Trace.trace(Trace.SEVERE, "Error getting URL for " + moduleObject, e);
+		}
 		return null;
 	}