Author: rob.stryker(a)jboss.com
Date: 2008-05-15 17:43:12 -0400 (Thu, 15 May 2008)
New Revision: 8128
Modified:
branches/jbosstools-2.1.x/as/plugins/org.jboss.ide.eclipse.as.core/jbosscore/org/jboss/ide/eclipse/as/core/server/internal/JBossServer.java
branches/jbosstools-2.1.x/as/plugins/org.jboss.ide.eclipse.as.core/jbosscore/org/jboss/ide/eclipse/as/core/server/internal/launch/JBossServerStartupLaunchConfiguration.java
branches/jbosstools-2.1.x/as/plugins/org.jboss.ide.eclipse.as.core/jbosscore/org/jboss/ide/eclipse/as/core/util/ArgsUtil.java
Log:
JBIDE-2210 - automatic binding from host added to server launch config
Modified:
branches/jbosstools-2.1.x/as/plugins/org.jboss.ide.eclipse.as.core/jbosscore/org/jboss/ide/eclipse/as/core/server/internal/JBossServer.java
===================================================================
---
branches/jbosstools-2.1.x/as/plugins/org.jboss.ide.eclipse.as.core/jbosscore/org/jboss/ide/eclipse/as/core/server/internal/JBossServer.java 2008-05-15
21:27:47 UTC (rev 8127)
+++
branches/jbosstools-2.1.x/as/plugins/org.jboss.ide.eclipse.as.core/jbosscore/org/jboss/ide/eclipse/as/core/server/internal/JBossServer.java 2008-05-15
21:43:12 UTC (rev 8128)
@@ -28,14 +28,19 @@
import org.eclipse.core.runtime.CoreException;
import org.eclipse.core.runtime.IPath;
+import org.eclipse.core.runtime.IProgressMonitor;
+import org.eclipse.core.runtime.IStatus;
import org.eclipse.core.runtime.NullProgressMonitor;
import org.eclipse.core.runtime.Path;
+import org.eclipse.core.runtime.Status;
import org.eclipse.debug.core.ILaunchConfiguration;
+import org.eclipse.debug.core.ILaunchConfigurationWorkingCopy;
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.internal.Server;
import org.eclipse.wst.server.core.model.IURLProvider;
+import org.jboss.ide.eclipse.as.core.JBossServerCorePlugin;
import org.jboss.ide.eclipse.as.core.extensions.descriptors.XPathModel;
import org.jboss.ide.eclipse.as.core.extensions.descriptors.XPathQuery;
import org.jboss.ide.eclipse.as.core.server.IDeployableServer;
@@ -57,12 +62,39 @@
public JBossServer() {
}
+ public void saveConfiguration(IProgressMonitor monitor) throws CoreException {
+ // here we update the launch configuration with any details that might have changed.
+ try {
+ Server s = (Server)getServer();
+ ILaunchConfiguration lc = s.getLaunchConfiguration(true, new NullProgressMonitor());
+ String startArgs =
lc.getAttribute(IJavaLaunchConfigurationConstants.ATTR_PROGRAM_ARGUMENTS, (String)null);
+ String originalArgs = startArgs;
+ if( !getServer().getHost().equals(getHost(true)))
+ startArgs = ArgsUtil.setArg(startArgs, "-b", "--host",
getServer().getHost());
+
+ IJBossServerRuntime runtime = (IJBossServerRuntime)
+ getServer().getRuntime().loadAdapter(IJBossServerRuntime.class, null);
+ String config = runtime.getJBossConfiguration();
+ startArgs = ArgsUtil.setArg(startArgs, "-c", "--configuration",
config);
+
+ if( !startArgs.equals(originalArgs)) {
+ ILaunchConfigurationWorkingCopy wc = lc.getWorkingCopy();
+ wc.setAttribute(IJavaLaunchConfigurationConstants.ATTR_PROGRAM_ARGUMENTS,
startArgs);
+ wc.doSave();
+ }
+ } catch( CoreException ce ) {
+ IStatus s = new Status(IStatus.ERROR, JBossServerCorePlugin.PLUGIN_ID, "Could not
save server's start arguments", ce);
+ JBossServerCorePlugin.getDefault().getLog().log(s);
+ }
+ }
+
public String getHost() {
- return getHost(true);
+ String host = getHost(true);
+ return host == null ? getServer().getHost() : host;
}
public String getHost(boolean checkLaunchConfig) {
- String host = getServer().getHost();
+ String host = null;
if( checkLaunchConfig ) {
try {
Server s = (Server)getServer();
@@ -71,8 +103,7 @@
String val = ArgsUtil.getValue(startArgs, "-b", "--host");
if( val != null )
host = val;
- } catch( CoreException ce ) {
- }
+ } catch( CoreException ce ) {}
}
return host;
}
Modified:
branches/jbosstools-2.1.x/as/plugins/org.jboss.ide.eclipse.as.core/jbosscore/org/jboss/ide/eclipse/as/core/server/internal/launch/JBossServerStartupLaunchConfiguration.java
===================================================================
---
branches/jbosstools-2.1.x/as/plugins/org.jboss.ide.eclipse.as.core/jbosscore/org/jboss/ide/eclipse/as/core/server/internal/launch/JBossServerStartupLaunchConfiguration.java 2008-05-15
21:27:47 UTC (rev 8127)
+++
branches/jbosstools-2.1.x/as/plugins/org.jboss.ide.eclipse.as.core/jbosscore/org/jboss/ide/eclipse/as/core/server/internal/launch/JBossServerStartupLaunchConfiguration.java 2008-05-15
21:43:12 UTC (rev 8128)
@@ -83,7 +83,7 @@
public static String getDefaultArgs(JBossServer jbs) throws CoreException {
IJBossServerRuntime rt = findJBossServerRuntime(jbs.getServer());
if (rt != null) {
- return rt.getDefaultRunArgs();
+ return rt.getDefaultRunArgs() + " -b " + jbs.getServer().getHost();
}
throw new CoreException(new Status(IStatus.ERROR, JBossServerCorePlugin.PLUGIN_ID,
"Runtime not found"));
}
Modified:
branches/jbosstools-2.1.x/as/plugins/org.jboss.ide.eclipse.as.core/jbosscore/org/jboss/ide/eclipse/as/core/util/ArgsUtil.java
===================================================================
---
branches/jbosstools-2.1.x/as/plugins/org.jboss.ide.eclipse.as.core/jbosscore/org/jboss/ide/eclipse/as/core/util/ArgsUtil.java 2008-05-15
21:27:47 UTC (rev 8127)
+++
branches/jbosstools-2.1.x/as/plugins/org.jboss.ide.eclipse.as.core/jbosscore/org/jboss/ide/eclipse/as/core/util/ArgsUtil.java 2008-05-15
21:43:12 UTC (rev 8128)
@@ -48,15 +48,19 @@
}
public static String getValue(String allArgs, String shortOpt, String longOpt) {
- String[] args = parse(allArgs);
+ return getValue(parse(allArgs), shortOpt, longOpt);
+ }
+
+ public static String getValue(String[] args, String shortOpt, String longOpt ) {
for( int i = 0; i < args.length; i++ ) {
if( args[i].equals(shortOpt))
return args[i+1];
- if( args[i].startsWith(longOpt + "="))
+ if( longOpt != null && args[i].startsWith(longOpt + "="))
return args[i].substring(args[i].indexOf('=') + 1);
}
return null;
}
+
public static String[] parse(String s) {
try {
ArrayList<String> l = new ArrayList<String>();
@@ -72,6 +76,7 @@
switch(s.charAt(current)) {
case '"':
inQuotes = !inQuotes;
+ buf.append(s.charAt(current));
break;
case '\n':
case ' ':
@@ -103,4 +108,27 @@
return new String[] { };
}
}
+
+ public static String setArg(String allArgs, String shortOpt, String longOpt, String
value ) {
+ if( value.contains(" "))
+ value = "\"" + value + "\"";
+
+ String[] args = parse(allArgs);
+ String retVal = "";
+ for( int i = 0; i < args.length; i++ ) {
+ if( args[i].equals(shortOpt)) {
+ args[i+1] = value;
+ retVal += args[i] + " " + args[++i] + " ";
+ } else if( longOpt != null && args[i].startsWith(longOpt + "=")) {
+ args[i] = longOpt + "=" + value;
+ retVal += args[i] + " ";
+ } else {
+ retVal += args[i] + " ";
+ }
+ }
+
+ // turn this to a retval;
+ return retVal;
+ }
+
}
\ No newline at end of file
Show replies by date