Author: rob.stryker(a)jboss.com
Date: 2007-05-16 15:44:34 -0400 (Wed, 16 May 2007)
New Revision: 2033
Modified:
trunk/as/plugins/org.jboss.ide.eclipse.as.core/jbosscore/org/jboss/ide/eclipse/as/core/client/JBossLaunchAdapter.java
trunk/as/plugins/org.jboss.ide.eclipse.as.core/jbosscore/org/jboss/ide/eclipse/as/core/model/DescriptorModel.java
trunk/as/plugins/org.jboss.ide.eclipse.as.core/jbosscore/org/jboss/ide/eclipse/as/core/server/JBossServer.java
trunk/as/plugins/org.jboss.ide.eclipse.as.core/plugin.xml
Log:
EXIN-151 / JBIDE-472
Modified:
trunk/as/plugins/org.jboss.ide.eclipse.as.core/jbosscore/org/jboss/ide/eclipse/as/core/client/JBossLaunchAdapter.java
===================================================================
---
trunk/as/plugins/org.jboss.ide.eclipse.as.core/jbosscore/org/jboss/ide/eclipse/as/core/client/JBossLaunchAdapter.java 2007-05-15
16:19:58 UTC (rev 2032)
+++
trunk/as/plugins/org.jboss.ide.eclipse.as.core/jbosscore/org/jboss/ide/eclipse/as/core/client/JBossLaunchAdapter.java 2007-05-16
19:44:34 UTC (rev 2033)
@@ -21,72 +21,99 @@
*/
package org.jboss.ide.eclipse.as.core.client;
-import org.eclipse.core.runtime.CoreException;
+import java.net.URL;
+import java.util.Iterator;
+import java.util.List;
+import java.util.Properties;
+
import org.eclipse.jst.server.core.EJBBean;
+import org.eclipse.jst.server.core.JndiLaunchable;
import org.eclipse.jst.server.core.JndiObject;
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;
-import org.jboss.ide.eclipse.as.core.server.attributes.IDeployableServer;
-import org.jboss.ide.eclipse.as.core.util.ServerConverter;
+import org.jboss.ide.eclipse.as.core.server.JBossServer;
public class JBossLaunchAdapter extends LaunchableAdapterDelegate {
public JBossLaunchAdapter() {
super();
}
+ private static final String JAVA_NAMING_PROVIDER_URL_PROPKEY =
"java.naming.provider.url"; //$NON-NLS-1$
+ private static final String JAVA_NAMING_FACTORY_INITIAL_PROPKEY =
"java.naming.factory.initial"; //$NON-NLS-1$
- // Can I launch onto this server? Let's find out
- public Object getLaunchable(IServer server, IModuleArtifact moduleArtifact)
- throws CoreException {
-
- // Only play to jboss servers
- IDeployableServer dserver = ServerConverter.getDeployableServer(server);
- if( dserver == null )
+ /*
+ * @see ILaunchableAdapterDelegate#getLaunchable(IServer, IModuleObject)
+ */
+ public Object getLaunchable(IServer server, IModuleArtifact moduleObject) {
+ ServerDelegate delegate =
(ServerDelegate)server.loadAdapter(ServerDelegate.class,null);
+ if (!(delegate instanceof JBossServer))
return null;
-
-// if( isJstArtifact(moduleArtifact))
-// return prepareJstArtifact(moduleArtifact, dserver);
-
- return new NullLaunchable();
- }
-
- private boolean isJstArtifact(IModuleArtifact moduleArtifact ) {
- // If we have JST projects being launched......
- if ((moduleArtifact instanceof Servlet)) return true;
- if ((moduleArtifact instanceof WebResource)) return true;
- if ((moduleArtifact instanceof EJBBean)) return true;
- if ((moduleArtifact instanceof JndiObject)) return true;
-
- return false;
- }
-
- private Object prepareJstArtifact(IModuleArtifact moduleObject, ServerDelegate delegate)
{
if ((moduleObject instanceof Servlet) ||(moduleObject instanceof WebResource))
- return prepareHttpLaunchable(moduleObject, delegate);
+ return prepareHttpLaunchable(moduleObject, (JBossServer) delegate);
if((moduleObject instanceof EJBBean) || (moduleObject instanceof JndiObject))
- return prepareJndiLaunchable(moduleObject,delegate);
+ return prepareJndiLaunchable(moduleObject, (JBossServer)delegate);
+ return null;
+ }
- return null;
- }
-
- private Object prepareHttpLaunchable(IModuleArtifact moduleObject, ServerDelegate
delegate) {
-// try {
-// return new HttpLaunchable(new URL("http://www.google.com"));
-// } catch( Exception e ) {
-// }
-// return null;
- return new NullLaunchable();
- }
- private Object prepareJndiLaunchable(IModuleArtifact moduleObject, ServerDelegate
delegate) {
-// Properties props = new Properties();
-//
props.put("java.naming.factory.initial","org.jnp.interfaces.NamingContextFactory");
-// props.put("java.naming.provider.url","");
-//
props.put("java.naming.factory.url.pkgs","org.jboss.naming:org.jnp.interfaces");
-// return new JndiLaunchable(props, "Hello");
- return new NullLaunchable();
- }
+ private Object prepareJndiLaunchable(IModuleArtifact moduleObject, JBossServer
delegate) {
+ JndiLaunchable launchable = null;
+ Properties props = new Properties();
+//
props.put(JAVA_NAMING_FACTORY_INITIAL_PROPKEY,definition.getJndiConnection().getInitialContextFactory());
+//
props.put(JAVA_NAMING_PROVIDER_URL_PROPKEY,definition.getJndiConnection().getProviderUrl());
+// List jps = definition.getJndiConnection().getJndiProperty();
+// Iterator propsIt =jps.iterator();
+// while(propsIt.hasNext()){
+// ArgumentPair prop = (ArgumentPair)propsIt.next();
+// props.put(prop.getName(),prop.getValue());
+// }
+
+ if(moduleObject instanceof EJBBean)
+ {
+ EJBBean bean = (EJBBean)moduleObject;
+ launchable = new JndiLaunchable(props,bean.getJndiName());
+ }
+ if(moduleObject instanceof JndiObject)
+ {
+ JndiObject jndi = (JndiObject)moduleObject;
+ launchable = new JndiLaunchable(props,jndi.getJndiName());
+ }
+ return launchable;
+ }
+
+ /**
+ * @param moduleObject
+ * @param delegate
+ * @return object
+ */
+ private Object prepareHttpLaunchable(IModuleArtifact moduleObject, JBossServer
delegate) {
+ try {
+ URL url = ((IURLProvider) delegate).getModuleRootURL(moduleObject.getModule());
+ if (moduleObject instanceof Servlet) {
+ Servlet servlet = (Servlet) moduleObject;
+ if (servlet.getAlias() != null) {
+ String path = servlet.getAlias();
+ if (path.startsWith("/")) //$NON-NLS-1$
+ path = path.substring(1);
+ url = new URL(url, path);
+ } else
+ url = new URL(url, "servlet/" + servlet.getServletClassName());
//$NON-NLS-1$
+ } else if (moduleObject instanceof WebResource) {
+ WebResource resource = (WebResource) moduleObject;
+ String path = resource.getPath().toString();
+ if (path != null && path.startsWith("/") && path.length()
> 0) //$NON-NLS-1$
+ path = path.substring(1);
+ if (path != null && path.length() > 0)
+ url = new URL(url, path);
+ }
+ return new HttpLaunchable(url);
+ } catch (Exception e) {
+ return null;
+ }
+ }
}
Modified:
trunk/as/plugins/org.jboss.ide.eclipse.as.core/jbosscore/org/jboss/ide/eclipse/as/core/model/DescriptorModel.java
===================================================================
---
trunk/as/plugins/org.jboss.ide.eclipse.as.core/jbosscore/org/jboss/ide/eclipse/as/core/model/DescriptorModel.java 2007-05-15
16:19:58 UTC (rev 2032)
+++
trunk/as/plugins/org.jboss.ide.eclipse.as.core/jbosscore/org/jboss/ide/eclipse/as/core/model/DescriptorModel.java 2007-05-16
19:44:34 UTC (rev 2033)
@@ -22,6 +22,7 @@
package org.jboss.ide.eclipse.as.core.model;
import java.io.File;
+import java.io.FileFilter;
import java.io.FileOutputStream;
import java.net.URL;
import java.util.ArrayList;
@@ -121,23 +122,6 @@
}
- /*
- * Do preference stuff here to see if the directory is ignored.
- */
- private boolean isIgnoredDirectory(File f) {
- boolean found = false;
- List ignored = Arrays.asList(getIgnoredDirectories());
- while( f != null && !found ) {
- if( ignored.contains(f.getAbsoluteFile()))
- return true;
- f = f.getParentFile();
- }
- return false;
- }
-
- public String[] getIgnoredDirectories() {
- return new String[0];
- }
private Document getDocument(String path) {
// First get last time loaded.
@@ -206,14 +190,14 @@
}
public XPathTreeItem[] getXPath(String xpath, String attributeName) {
- return getXPath(xpath, attributeName, true);
+ return getXPath(xpath, attributeName, null);
}
- public XPathTreeItem[] getXPath(String xpath, String attributeName, boolean filter ) {
+ public XPathTreeItem[] getXPath(String xpath, String attributeName, FileFilter filter )
{
return getXPath(xpath, attributeName, filter, true);
}
- public XPathTreeItem[] getXPath(String xpath, String attributeName, boolean filter,
boolean refresh ) {
+ public XPathTreeItem[] getXPath(String xpath, String attributeName, FileFilter filter,
boolean refresh ) {
if( refresh )
refreshDescriptors(new NullProgressMonitor());
@@ -226,7 +210,7 @@
while(i.hasNext()) {
p = (String)i.next();
- if( !filter || !isIgnoredDirectory(new File(p))) {
+ if( filter == null || filter.accept(new File(p))) {
tmp = getXPathFromFile(p, xpath);
if( tmp.size() > 0 ) {
if( attributeName == null || attributeName.equals("")) {
Modified:
trunk/as/plugins/org.jboss.ide.eclipse.as.core/jbosscore/org/jboss/ide/eclipse/as/core/server/JBossServer.java
===================================================================
---
trunk/as/plugins/org.jboss.ide.eclipse.as.core/jbosscore/org/jboss/ide/eclipse/as/core/server/JBossServer.java 2007-05-15
16:19:58 UTC (rev 2032)
+++
trunk/as/plugins/org.jboss.ide.eclipse.as.core/jbosscore/org/jboss/ide/eclipse/as/core/server/JBossServer.java 2007-05-16
19:44:34 UTC (rev 2033)
@@ -22,6 +22,8 @@
package org.jboss.ide.eclipse.as.core.server;
import java.io.File;
+import java.io.FileFilter;
+import java.net.URL;
import java.util.Map;
import org.eclipse.core.runtime.CoreException;
@@ -32,14 +34,18 @@
import org.eclipse.core.runtime.Status;
import org.eclipse.debug.core.ILaunchConfiguration;
import org.eclipse.jdt.launching.IJavaLaunchConfigurationConstants;
+import org.eclipse.jst.server.core.IWebModule;
import org.eclipse.wst.server.core.IModule;
import org.eclipse.wst.server.core.IRuntime;
import org.eclipse.wst.server.core.IServerWorkingCopy;
import org.eclipse.wst.server.core.internal.Server;
+import org.eclipse.wst.server.core.model.IURLProvider;
import org.eclipse.wst.server.core.model.ServerDelegate;
import org.jboss.ide.eclipse.as.core.JBossServerCorePlugin;
import org.jboss.ide.eclipse.as.core.model.DescriptorModel;
import org.jboss.ide.eclipse.as.core.model.DescriptorModel.ServerDescriptorModel;
+import
org.jboss.ide.eclipse.as.core.model.DescriptorModel.ServerDescriptorModel.XPathTreeItem;
+import
org.jboss.ide.eclipse.as.core.model.DescriptorModel.ServerDescriptorModel.XPathTreeItem2;
import org.jboss.ide.eclipse.as.core.runtime.IJBossServerLaunchDefaults;
import org.jboss.ide.eclipse.as.core.runtime.IJBossServerRuntime;
import org.jboss.ide.eclipse.as.core.runtime.server.ServerLaunchDefaults;
@@ -48,7 +54,7 @@
import org.jboss.ide.eclipse.as.core.util.ArgsUtil;
public class JBossServer extends ServerDelegate
- implements IServerStartupParameters, IDeployableServer {
+ implements IServerStartupParameters, IDeployableServer, IURLProvider {
public JBossServer() {
@@ -185,4 +191,49 @@
return new Path(p).toOSString();
}
+
+
+
+ public URL getModuleRootURL(IModule module) {
+
+ try {
+ if (module == null || module.loadAdapter(IWebModule.class,null)==null )
+ return null;
+
+ IWebModule webModule =(IWebModule)module.loadAdapter(IWebModule.class,null);
+ String host = getServer().getHost();
+ String url = "http://"+host; //$NON-NLS-1$
+ int port = -1;
+
+ ServerDescriptorModel sdm = DescriptorModel.getDefault().getServerModel(new
Path(getConfigDirectory()));
+ FileFilter filter = new FileFilter() {
+ public boolean accept(File pathname) {
+ return pathname.getAbsolutePath().endsWith("server.xml");
+ }
+ };
+ XPathTreeItem[] items = sdm.getXPath(
+ "//Server/Service[@name='jboss.web']/Connector[count((a)sslProtocol) = 0
and (count(@protocol) = 0 or @protocol = 'HTTP/1.1')]",
+ "port", filter, false);
+ if( items.length > 0 ) {
+ try {
+ port =
Integer.parseInt(((XPathTreeItem2)items[0].getChildren()[0]).getAttributeValue());
+ } catch(Exception e) {}
+ }
+ if( port == -1 ) port = 8080;
+ //port =ServerUtil.getMonitoredPort(getServer(), port, "web");
//$NON-NLS-1$
+ if (port != 80)
+ url += ":" + port; //$NON-NLS-1$
+
+ url += "/"+webModule.getContextRoot(); //$NON-NLS-1$
+
+ if (!url.endsWith("/")) //$NON-NLS-1$
+ url += "/"; //$NON-NLS-1$
+
+ return new URL(url);
+ } catch (Exception e) {
+ return null;
+ }
+ }
+
+
}
\ No newline at end of file
Modified: trunk/as/plugins/org.jboss.ide.eclipse.as.core/plugin.xml
===================================================================
--- trunk/as/plugins/org.jboss.ide.eclipse.as.core/plugin.xml 2007-05-15 16:19:58 UTC (rev
2032)
+++ trunk/as/plugins/org.jboss.ide.eclipse.as.core/plugin.xml 2007-05-16 19:44:34 UTC (rev
2033)
@@ -262,7 +262,6 @@
</moduleArtifactAdapter>
</extension>
- <!--
<extension
point="org.eclipse.wst.server.core.launchableAdapters">
<launchableAdapter
@@ -270,6 +269,7 @@
id="org.jboss.ide.eclipse.as.core.launchableAdapter1"/>
</extension>
+ <!--
<extension
point="org.eclipse.wst.server.core.clients">