Author: rob.stryker(a)jboss.com
Date: 2008-12-08 15:14:14 -0500 (Mon, 08 Dec 2008)
New Revision: 12474
Added:
trunk/as/plugins/org.jboss.ide.eclipse.as.core/jbosscore/org/jboss/ide/eclipse/as/core/server/internal/ServerStartupListener.java
Modified:
trunk/as/plugins/org.jboss.ide.eclipse.as.core/jbosscore/org/jboss/ide/eclipse/as/core/JBossServerCorePlugin.java
trunk/as/plugins/org.jboss.ide.eclipse.as.core/jbosscore/org/jboss/ide/eclipse/as/core/server/internal/JBossServerBehavior.java
Log:
JBIDE-3362 - adding deployment location now works directly after startup but not during
each publish.
Modified:
trunk/as/plugins/org.jboss.ide.eclipse.as.core/jbosscore/org/jboss/ide/eclipse/as/core/JBossServerCorePlugin.java
===================================================================
---
trunk/as/plugins/org.jboss.ide.eclipse.as.core/jbosscore/org/jboss/ide/eclipse/as/core/JBossServerCorePlugin.java 2008-12-08
19:54:59 UTC (rev 12473)
+++
trunk/as/plugins/org.jboss.ide.eclipse.as.core/jbosscore/org/jboss/ide/eclipse/as/core/JBossServerCorePlugin.java 2008-12-08
20:14:14 UTC (rev 12474)
@@ -31,6 +31,7 @@
import org.eclipse.core.runtime.Plugin;
import org.jboss.ide.eclipse.as.core.extensions.descriptors.XPathModel;
import org.jboss.ide.eclipse.as.core.server.UnitedServerListenerManager;
+import org.jboss.ide.eclipse.as.core.server.internal.ServerStartupListener;
import org.osgi.framework.BundleContext;
/**
@@ -74,6 +75,7 @@
// Start the array of models that need to be started
XPathModel.getDefault();
UnitedServerListenerManager.getDefault();
+ UnitedServerListenerManager.getDefault().addListener(ServerStartupListener.getDefault());
}
/**
@@ -81,6 +83,7 @@
*/
public void stop(BundleContext context) throws Exception {
super.stop(context);
+ UnitedServerListenerManager.getDefault().removeListener(ServerStartupListener.getDefault());
}
/**
Modified:
trunk/as/plugins/org.jboss.ide.eclipse.as.core/jbosscore/org/jboss/ide/eclipse/as/core/server/internal/JBossServerBehavior.java
===================================================================
---
trunk/as/plugins/org.jboss.ide.eclipse.as.core/jbosscore/org/jboss/ide/eclipse/as/core/server/internal/JBossServerBehavior.java 2008-12-08
19:54:59 UTC (rev 12473)
+++
trunk/as/plugins/org.jboss.ide.eclipse.as.core/jbosscore/org/jboss/ide/eclipse/as/core/server/internal/JBossServerBehavior.java 2008-12-08
20:14:14 UTC (rev 12474)
@@ -21,17 +21,12 @@
*/
package org.jboss.ide.eclipse.as.core.server.internal;
-import java.io.File;
-
import javax.management.MBeanServerConnection;
import javax.management.ObjectName;
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.DebugEvent;
import org.eclipse.debug.core.DebugException;
@@ -39,20 +34,15 @@
import org.eclipse.debug.core.IDebugEventSetListener;
import org.eclipse.debug.core.ILaunchConfigurationWorkingCopy;
import org.eclipse.debug.core.model.IProcess;
-import org.eclipse.wst.server.core.IRuntime;
import org.eclipse.wst.server.core.IServer;
import org.jboss.ide.eclipse.as.core.JBossServerCorePlugin;
import org.jboss.ide.eclipse.as.core.extensions.events.IEventCodes;
import org.jboss.ide.eclipse.as.core.extensions.events.ServerLogger;
import org.jboss.ide.eclipse.as.core.extensions.jmx.JBossServerConnectionProvider;
import org.jboss.ide.eclipse.as.core.extensions.jmx.JMXClassLoaderRepository;
-import org.jboss.ide.eclipse.as.core.server.IDeployableServer;
-import org.jboss.ide.eclipse.as.core.server.IJBossServerConstants;
-import org.jboss.ide.eclipse.as.core.server.IJBossServerRuntime;
import org.jboss.ide.eclipse.as.core.server.IServerStatePoller;
import
org.jboss.ide.eclipse.as.core.server.internal.launch.JBossServerStartupLaunchConfiguration;
import org.jboss.ide.eclipse.as.core.server.internal.launch.StopLaunchConfiguration;
-import org.jboss.ide.eclipse.as.core.util.ServerConverter;
import org.jboss.tools.jmx.core.IJMXRunnable;
/**
@@ -203,14 +193,11 @@
super.publishStart(monitor);
JMXClassLoaderRepository.getDefault().addConcerned(getServer(), this);
final boolean suspend = shouldSuspendScanner();
- final boolean add = shouldAddDeployLocation();
- if( suspend || add) {
+ if( suspend ) {
IJMXRunnable r = new IJMXRunnable() {
public void run(MBeanServerConnection connection) throws Exception {
if( suspend )
suspendDeployment(connection);
- if( add )
- ensureDeployLocationAdded(connection);
}
};
JBossServerConnectionProvider.run(getServer(), r);
@@ -230,42 +217,6 @@
super.publishFinish(monitor);
}
-
- protected boolean shouldAddDeployLocation() {
- IDeployableServer ds = ServerConverter.getDeployableServer(getServer());
- boolean shouldAdd = getServer().getServerState() == IServer.STATE_STARTED;
- String type = ds.getDeployLocationType();
- String deployFolder = ds.getDeployFolder();
- if( type.equals(IDeployableServer.DEPLOY_SERVER))
- shouldAdd = false;
- else if( type.equals(IDeployableServer.DEPLOY_METADATA))
- shouldAdd = true;
- else if( type.equals( IDeployableServer.DEPLOY_CUSTOM )) {
- if( !new File(deployFolder).exists())
- shouldAdd = false;
- else {
- IRuntime rt = getServer().getRuntime();
- IJBossServerRuntime jbsrt =
(IJBossServerRuntime)rt.loadAdapter(IJBossServerRuntime.class, new
NullProgressMonitor());
- String config = jbsrt.getJBossConfiguration();
- IPath deploy = new Path(IJBossServerConstants.SERVER)
- .append(config)
- .append(IJBossServerConstants.DEPLOY).makeRelative();
- IPath deployGlobal = DeployableServer.makeGlobal(jbsrt, deploy);
- if( new Path(deployFolder).equals(deployGlobal))
- shouldAdd = false;
- }
- }
- return shouldAdd;
- }
-
- protected void ensureDeployLocationAdded(MBeanServerConnection connection) throws
Exception {
- IDeployableServer ds = ServerConverter.getDeployableServer(getServer());
- String deployFolder = ds.getDeployFolder();
- String asURL = new File(deployFolder).toURL().toString();
- ObjectName name = new
ObjectName("jboss.deployment:flavor=URL,type=DeploymentScanner");
- connection.invoke(name, "addURL", new Object[] { asURL }, new String[]
{String.class.getName()});
- }
-
protected boolean shouldSuspendScanner() {
if(
getServer().getServerType().getId().equals("org.jboss.ide.eclipse.as.50"))
return false;
Added:
trunk/as/plugins/org.jboss.ide.eclipse.as.core/jbosscore/org/jboss/ide/eclipse/as/core/server/internal/ServerStartupListener.java
===================================================================
---
trunk/as/plugins/org.jboss.ide.eclipse.as.core/jbosscore/org/jboss/ide/eclipse/as/core/server/internal/ServerStartupListener.java
(rev 0)
+++
trunk/as/plugins/org.jboss.ide.eclipse.as.core/jbosscore/org/jboss/ide/eclipse/as/core/server/internal/ServerStartupListener.java 2008-12-08
20:14:14 UTC (rev 12474)
@@ -0,0 +1,92 @@
+package org.jboss.ide.eclipse.as.core.server.internal;
+
+import java.io.File;
+
+import javax.management.MBeanServerConnection;
+import javax.management.ObjectName;
+
+import org.eclipse.core.runtime.IPath;
+import org.eclipse.core.runtime.NullProgressMonitor;
+import org.eclipse.core.runtime.Path;
+import org.eclipse.wst.server.core.IRuntime;
+import org.eclipse.wst.server.core.IServer;
+import org.eclipse.wst.server.core.ServerEvent;
+import org.jboss.ide.eclipse.as.core.extensions.jmx.JBossServerConnectionProvider;
+import org.jboss.ide.eclipse.as.core.server.IDeployableServer;
+import org.jboss.ide.eclipse.as.core.server.IJBossServerConstants;
+import org.jboss.ide.eclipse.as.core.server.IJBossServerRuntime;
+import org.jboss.ide.eclipse.as.core.server.UnitedServerListener;
+import org.jboss.ide.eclipse.as.core.util.ServerConverter;
+import org.jboss.tools.jmx.core.IJMXRunnable;
+import org.jboss.tools.jmx.core.JMXException;
+
+public class ServerStartupListener extends UnitedServerListener {
+ private static ServerStartupListener instance;
+ public static ServerStartupListener getDefault() {
+ if( instance == null )
+ instance = new ServerStartupListener();
+ return instance;
+ }
+
+ public void serverChanged(ServerEvent event) {
+ int eventKind = event.getKind();
+ if ((eventKind & ServerEvent.SERVER_CHANGE) != 0) {
+ // server change event
+ if ((eventKind & ServerEvent.STATE_CHANGE) != 0) {
+ checkState(event.getServer());
+ }
+ }
+ }
+
+ protected void checkState(final IServer server) {
+ if( server.getServerState() == IServer.STATE_STARTED ) {
+ if( shouldAddDeployLocation(server)) {
+ IJMXRunnable r = new IJMXRunnable() {
+ public void run(MBeanServerConnection connection) throws Exception {
+ ensureDeployLocationAdded(server, connection);
+ }
+ };
+ try {
+ JBossServerConnectionProvider.run(server, r);
+ } catch( JMXException jmxe ) {
+ // TODO log
+ }
+ }
+ }
+ }
+
+ protected boolean shouldAddDeployLocation(IServer server) {
+ IDeployableServer ds = ServerConverter.getDeployableServer(server);
+ boolean shouldAdd = server.getServerState() == IServer.STATE_STARTED;
+ String type = ds.getDeployLocationType();
+ String deployFolder = ds.getDeployFolder();
+ if( type.equals(IDeployableServer.DEPLOY_SERVER))
+ shouldAdd = false;
+ else if( type.equals(IDeployableServer.DEPLOY_METADATA))
+ shouldAdd = true;
+ else if( type.equals( IDeployableServer.DEPLOY_CUSTOM )) {
+ if( !new File(deployFolder).exists())
+ shouldAdd = false;
+ else {
+ IRuntime rt = server.getRuntime();
+ IJBossServerRuntime jbsrt =
(IJBossServerRuntime)rt.loadAdapter(IJBossServerRuntime.class, new
NullProgressMonitor());
+ String config = jbsrt.getJBossConfiguration();
+ IPath deploy = new Path(IJBossServerConstants.SERVER)
+ .append(config)
+ .append(IJBossServerConstants.DEPLOY).makeRelative();
+ IPath deployGlobal = DeployableServer.makeGlobal(jbsrt, deploy);
+ if( new Path(deployFolder).equals(deployGlobal))
+ shouldAdd = false;
+ }
+ }
+ return shouldAdd;
+ }
+
+ protected void ensureDeployLocationAdded(IServer server, MBeanServerConnection
connection) throws Exception {
+ IDeployableServer ds = ServerConverter.getDeployableServer(server);
+ String deployFolder = ds.getDeployFolder();
+ String asURL = new File(deployFolder).toURL().toString();
+ ObjectName name = new
ObjectName("jboss.deployment:flavor=URL,type=DeploymentScanner");
+ connection.invoke(name, "addURL", new Object[] { asURL }, new String[]
{String.class.getName()});
+ }
+}
Show replies by date