Author: rob.stryker(a)jboss.com
Date: 2008-12-08 16:02:14 -0500 (Mon, 08 Dec 2008)
New Revision: 12478
Added:
trunk/as/plugins/org.jboss.ide.eclipse.as.core/jbosscore/org/jboss/ide/eclipse/as/core/server/internal/ServerListener.java
Removed:
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/extensions/descriptors/XPathModel.java
Log:
Renamed the startup listener to be more generic and do more initializations
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
20:52:25 UTC (rev 12477)
+++
trunk/as/plugins/org.jboss.ide.eclipse.as.core/jbosscore/org/jboss/ide/eclipse/as/core/JBossServerCorePlugin.java 2008-12-08
21:02:14 UTC (rev 12478)
@@ -31,7 +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.jboss.ide.eclipse.as.core.server.internal.ServerListener;
import org.osgi.framework.BundleContext;
/**
@@ -73,9 +73,9 @@
super.start(context);
// Start the array of models that need to be started
- XPathModel.getDefault();
UnitedServerListenerManager.getDefault();
- UnitedServerListenerManager.getDefault().addListener(ServerStartupListener.getDefault());
+ UnitedServerListenerManager.getDefault().addListener(XPathModel.getDefault());
+ UnitedServerListenerManager.getDefault().addListener(ServerListener.getDefault());
}
/**
@@ -83,7 +83,7 @@
*/
public void stop(BundleContext context) throws Exception {
super.stop(context);
- UnitedServerListenerManager.getDefault().removeListener(ServerStartupListener.getDefault());
+ UnitedServerListenerManager.getDefault().removeListener(ServerListener.getDefault());
}
/**
Modified:
trunk/as/plugins/org.jboss.ide.eclipse.as.core/jbosscore/org/jboss/ide/eclipse/as/core/extensions/descriptors/XPathModel.java
===================================================================
---
trunk/as/plugins/org.jboss.ide.eclipse.as.core/jbosscore/org/jboss/ide/eclipse/as/core/extensions/descriptors/XPathModel.java 2008-12-08
20:52:25 UTC (rev 12477)
+++
trunk/as/plugins/org.jboss.ide.eclipse.as.core/jbosscore/org/jboss/ide/eclipse/as/core/extensions/descriptors/XPathModel.java 2008-12-08
21:02:14 UTC (rev 12478)
@@ -34,15 +34,13 @@
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.core.runtime.jobs.Job;
import org.eclipse.wst.server.core.IServer;
-import org.eclipse.wst.server.core.IServerLifecycleListener;
-import org.eclipse.wst.server.core.ServerCore;
import org.jboss.ide.eclipse.as.core.JBossServerCorePlugin;
import
org.jboss.ide.eclipse.as.core.extensions.descriptors.XPathFileResult.XPathResultNode;
+import org.jboss.ide.eclipse.as.core.server.UnitedServerListener;
import org.jboss.ide.eclipse.as.core.server.internal.LocalJBossServerRuntime;
import org.jboss.ide.eclipse.as.core.server.internal.ServerAttributeHelper;
@@ -52,7 +50,7 @@
* @author rob.stryker(a)redhat.com
*
*/
-public class XPathModel {
+public class XPathModel extends UnitedServerListener {
public static final String EMPTY_STRING =
"org.jboss.ide.eclipse.as.core.model.descriptor.EmptyString";
public static final String PORTS_CATEGORY_NAME = "Ports";
@@ -74,45 +72,37 @@
}
protected HashMap<String, ArrayList<XPathCategory>> serverToCategories;
-
- /* Constructor. Adds lifecycle listener to know when there's a new server and
- * properly add the default XPaths to that server object.
- */
+
public XPathModel() {
serverToCategories = new HashMap<String, ArrayList<XPathCategory>>();
- ServerCore.addServerLifecycleListener(new IServerLifecycleListener() {
- public void serverAdded(IServer server) {
- final ServerAttributeHelper helper = new ServerAttributeHelper(server,
server.createWorkingCopy());
- if( !helper.getAttribute(DEFAULTS_SET, false)) {
- final IServer server2 = server;
- new Job("Add Server XPath Details") {
- protected IStatus run(IProgressMonitor monitor) {
-
- if(server2==null || server2.getRuntime()==null) {
- return Status.OK_STATUS; // server has no runtime so we can't set this up.
- }
-
- LocalJBossServerRuntime ajbsr = (LocalJBossServerRuntime)
- server2.getRuntime().loadAdapter(LocalJBossServerRuntime.class, null);
- if(ajbsr != null ) {
- IPath loc = server2.getRuntime().getLocation();
- IPath configFolder =
loc.append("server").append(ajbsr.getJBossConfiguration());
- loadDefaults(server2, configFolder.toOSString());
- helper.setAttribute(DEFAULTS_SET, true);
- helper.save();
- save(server2);
- }
- return Status.OK_STATUS;
- }
-
- }.schedule();
+ }
+
+ public void serverAdded(IServer server) {
+ final ServerAttributeHelper helper = new ServerAttributeHelper(server,
server.createWorkingCopy());
+ if( !helper.getAttribute(DEFAULTS_SET, false)) {
+ final IServer server2 = server;
+ new Job("Add Server XPath Details") {
+ protected IStatus run(IProgressMonitor monitor) {
+
+ if(server2==null || server2.getRuntime()==null) {
+ return Status.OK_STATUS; // server has no runtime so we can't set this up.
+ }
+
+ LocalJBossServerRuntime ajbsr = (LocalJBossServerRuntime)
+ server2.getRuntime().loadAdapter(LocalJBossServerRuntime.class, null);
+ if(ajbsr != null ) {
+ IPath loc = server2.getRuntime().getLocation();
+ IPath configFolder =
loc.append("server").append(ajbsr.getJBossConfiguration());
+ loadDefaults(server2, configFolder.toOSString());
+ helper.setAttribute(DEFAULTS_SET, true);
+ helper.save();
+ save(server2);
+ }
+ return Status.OK_STATUS;
}
- }
- public void serverChanged(IServer server) {
- }
- public void serverRemoved(IServer server) {
- }
- });
+
+ }.schedule();
+ }
}
public XPathQuery getQuery(IServer server, IPath path) {
@@ -241,7 +231,7 @@
return new XPathQuery[] {};
String[] queriesByName = list.split(DELIMITER);
List<String> queryAsStringValues;
- ArrayList<XPathQuery> returnList = new ArrayList();
+ ArrayList<XPathQuery> returnList = new ArrayList<XPathQuery>();
for( int i = 0; i < queriesByName.length; i++ ) {
queryAsStringValues = helper.getAttribute(QUERY + "." +
queriesByName[i].replace(' ', '_'), (List)null);
if( queryAsStringValues != null ) {
@@ -272,8 +262,6 @@
public void loadDefaults(IServer server, String configFolder) {
ArrayList<XPathCategory> retVal = new ArrayList<XPathCategory>();
- LocalJBossServerRuntime ajbsr = (LocalJBossServerRuntime)
- server.getRuntime().loadAdapter(LocalJBossServerRuntime.class, new
NullProgressMonitor());
Path p = (Path)rtToPortsFile.get(server.getRuntime().getRuntimeType().getVersion());
if( p == null ) return;
URL url = FileLocator.find(JBossServerCorePlugin.getDefault().getBundle(), p, null);
Copied:
trunk/as/plugins/org.jboss.ide.eclipse.as.core/jbosscore/org/jboss/ide/eclipse/as/core/server/internal/ServerListener.java
(from rev 12474,
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/ServerListener.java
(rev 0)
+++
trunk/as/plugins/org.jboss.ide.eclipse.as.core/jbosscore/org/jboss/ide/eclipse/as/core/server/internal/ServerListener.java 2008-12-08
21:02:14 UTC (rev 12478)
@@ -0,0 +1,120 @@
+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.FileUtil;
+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 ServerListener extends UnitedServerListener {
+ private static ServerListener instance;
+ public static ServerListener getDefault() {
+ if( instance == null )
+ instance = new ServerListener();
+ return instance;
+ }
+
+ public void serverAdded(IServer server) {
+ // create metadata area
+ IJBossServerConstants.PLUGIN_LOCATION.append(server.getId()).toFile().mkdirs();
+
+ // create temp deploy folder
+ IRuntime rt = server.getRuntime();
+ IJBossServerRuntime jbsrt =
(IJBossServerRuntime)rt.loadAdapter(IJBossServerRuntime.class, new
NullProgressMonitor());
+ String config = jbsrt.getJBossConfiguration();
+ String newTemp = new Path(IJBossServerConstants.SERVER).append(config)
+ .append(IJBossServerConstants.TMP)
+ .append(IJBossServerConstants.JBOSSTOOLS_TMP).makeRelative().toString();
+ new File(newTemp).mkdirs();
+
+ }
+
+ public void serverRemoved(IServer server) {
+ // delete metadata area
+ File f = IJBossServerConstants.PLUGIN_LOCATION.append(server.getId()).toFile();
+ FileUtil.safeDelete(f);
+
+ // delete temp folder
+ }
+
+ public void serverChanged(ServerEvent event) {
+ IServer server = event.getServer();
+ JBossServer jbs = (JBossServer)server.loadAdapter(JBossServer.class, new
NullProgressMonitor());
+ if( jbs != null ) {
+ doDeploymentAddition(event);
+ }
+ }
+
+ protected void doDeploymentAddition(final ServerEvent event) {
+ int eventKind = event.getKind();
+ if ((eventKind & ServerEvent.SERVER_CHANGE) != 0) {
+ // server change event
+ if ((eventKind & ServerEvent.STATE_CHANGE) != 0) {
+ if( event.getServer().getServerState() == IServer.STATE_STARTED ) {
+ if( shouldAddDeployLocation(event.getServer())) {
+ IJMXRunnable r = new IJMXRunnable() {
+ public void run(MBeanServerConnection connection) throws Exception {
+ ensureDeployLocationAdded(event.getServer(), connection);
+ }
+ };
+ try {
+ JBossServerConnectionProvider.run(event.getServer(), 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()});
+ }
+}
Property changes on:
trunk/as/plugins/org.jboss.ide.eclipse.as.core/jbosscore/org/jboss/ide/eclipse/as/core/server/internal/ServerListener.java
___________________________________________________________________
Name: svn:mergeinfo
+
Deleted:
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 2008-12-08
20:52:25 UTC (rev 12477)
+++
trunk/as/plugins/org.jboss.ide.eclipse.as.core/jbosscore/org/jboss/ide/eclipse/as/core/server/internal/ServerStartupListener.java 2008-12-08
21:02:14 UTC (rev 12478)
@@ -1,92 +0,0 @@
-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()});
- }
-}