[jbosstools-commits] JBoss Tools SVN: r39486 - in trunk/as/plugins: org.jboss.ide.eclipse.as.core/jbosscore/org/jboss/ide/eclipse/as/core and 5 other directories.

jbosstools-commits at lists.jboss.org jbosstools-commits at lists.jboss.org
Wed Mar 14 01:54:46 EDT 2012


Author: rob.stryker at jboss.com
Date: 2012-03-14 01:54:45 -0400 (Wed, 14 Mar 2012)
New Revision: 39486

Added:
   trunk/as/plugins/org.jboss.ide.eclipse.as.core/jbosscore/org/jboss/ide/eclipse/as/core/server/internal/v7/LocalJBoss7DeploymentScannerAdditions.java
Modified:
   trunk/as/plugins/org.jboss.ide.eclipse.as.core/META-INF/MANIFEST.MF
   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/extendedproperties/JBossAS7ExtendedProperties.java
   trunk/as/plugins/org.jboss.ide.eclipse.as.core/jbosscore/org/jboss/ide/eclipse/as/core/server/internal/extendedproperties/JBossExtendedProperties.java
   trunk/as/plugins/org.jboss.ide.eclipse.as.core/jbosscore/org/jboss/ide/eclipse/as/core/server/internal/extendedproperties/ServerExtendedProperties.java
   trunk/as/plugins/org.jboss.ide.eclipse.as.jmx.integration/src/org/jboss/ide/eclipse/as/jmx/integration/Activator.java
   trunk/as/plugins/org.jboss.ide.eclipse.as.jmx.integration/src/org/jboss/ide/eclipse/as/jmx/integration/JMXServerLifecycleListener.java
   trunk/as/plugins/org.jboss.ide.eclipse.as.management.as71/src/org/jboss/ide/eclipse/as/internal/management/as71/AS71Manager.java
   trunk/as/plugins/org.jboss.ide.eclipse.as.management.as71/src/org/jboss/ide/eclipse/as/internal/management/as71/AS7Messages.java
   trunk/as/plugins/org.jboss.ide.eclipse.as.ui/jbossui/org/jboss/ide/eclipse/as/ui/editor/DeploymentModuleOptionCompositeAssistant.java
Log:
JBIDE-11297 - added random deployment folder support for as7
Also, removed an unneded import, and fixed a string externalization file not found error. 

Modified: trunk/as/plugins/org.jboss.ide.eclipse.as.core/META-INF/MANIFEST.MF
===================================================================
--- trunk/as/plugins/org.jboss.ide.eclipse.as.core/META-INF/MANIFEST.MF	2012-03-13 23:23:11 UTC (rev 39485)
+++ trunk/as/plugins/org.jboss.ide.eclipse.as.core/META-INF/MANIFEST.MF	2012-03-14 05:54:45 UTC (rev 39486)
@@ -25,7 +25,8 @@
  org.eclipse.pde.core;bundle-version="3.7.0",
  org.eclipse.jst.j2ee.web;bundle-version="1.1.500",
  org.jboss.ide.eclipse.as.management.core,
- org.eclipse.equinox.security;bundle-version="1.1.1"
+ org.eclipse.equinox.security;bundle-version="1.1.1",
+ org.jboss.ide.eclipse.as.dmr;bundle-version="2.3.0"
 Bundle-ActivationPolicy: lazy
 Export-Package: org.jboss.ide.eclipse.as.core,
  org.jboss.ide.eclipse.as.core.extensions.descriptors,

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	2012-03-13 23:23:11 UTC (rev 39485)
+++ trunk/as/plugins/org.jboss.ide.eclipse.as.core/jbosscore/org/jboss/ide/eclipse/as/core/JBossServerCorePlugin.java	2012-03-14 05:54:45 UTC (rev 39486)
@@ -31,6 +31,7 @@
 import org.jboss.ide.eclipse.as.core.server.UnitedServerListenerManager;
 import org.jboss.ide.eclipse.as.core.server.internal.BehaviourModel;
 import org.jboss.ide.eclipse.as.core.server.internal.ServerListener;
+import org.jboss.ide.eclipse.as.core.server.internal.v7.LocalJBoss7DeploymentScannerAdditions;
 import org.jboss.ide.eclipse.as.core.util.ServerUtil;
 import org.osgi.framework.BundleContext;
 
@@ -61,6 +62,7 @@
 		return extensions;
 	}
 	
+	private LocalJBoss7DeploymentScannerAdditions jboss7Additions;
 	/**
 	 * This method is called upon plug-in activation
 	 */
@@ -74,7 +76,8 @@
 				UnitedServerListenerManager.getDefault();
 				UnitedServerListenerManager.getDefault().addListener(XPathModel.getDefault());
 				UnitedServerListenerManager.getDefault().addListener(ServerListener.getDefault());
-				
+				jboss7Additions = new LocalJBoss7DeploymentScannerAdditions();
+				UnitedServerListenerManager.getDefault().addListener(jboss7Additions);
 				FacetedProjectFramework.addListener(JBoss4xEarFacetInstallListener.getDefault(), IFacetedProjectEvent.Type.POST_INSTALL);
 				return Status.OK_STATUS;
 			}
@@ -99,6 +102,7 @@
 		UnitedServerListenerManager.getDefault().removeListener(ServerListener.getDefault());
 		UnitedServerListenerManager.getDefault().removeListener(XPathModel.getDefault());
 		FacetedProjectFramework.removeListener(JBoss4xEarFacetInstallListener.getDefault());
+		UnitedServerListenerManager.getDefault().removeListener(jboss7Additions);
 	}
 
 	/**

Modified: trunk/as/plugins/org.jboss.ide.eclipse.as.core/jbosscore/org/jboss/ide/eclipse/as/core/server/internal/extendedproperties/JBossAS7ExtendedProperties.java
===================================================================
--- trunk/as/plugins/org.jboss.ide.eclipse.as.core/jbosscore/org/jboss/ide/eclipse/as/core/server/internal/extendedproperties/JBossAS7ExtendedProperties.java	2012-03-13 23:23:11 UTC (rev 39485)
+++ trunk/as/plugins/org.jboss.ide.eclipse.as.core/jbosscore/org/jboss/ide/eclipse/as/core/server/internal/extendedproperties/JBossAS7ExtendedProperties.java	2012-03-14 05:54:45 UTC (rev 39486)
@@ -34,5 +34,8 @@
 			return false;
 		return true;
 	}
+	public int getMultipleDeployFolderSupport() {
+		return DEPLOYMENT_SCANNER_AS7_MANAGEMENT_SUPPORT;
+	}
 
 }

Modified: trunk/as/plugins/org.jboss.ide.eclipse.as.core/jbosscore/org/jboss/ide/eclipse/as/core/server/internal/extendedproperties/JBossExtendedProperties.java
===================================================================
--- trunk/as/plugins/org.jboss.ide.eclipse.as.core/jbosscore/org/jboss/ide/eclipse/as/core/server/internal/extendedproperties/JBossExtendedProperties.java	2012-03-13 23:23:11 UTC (rev 39485)
+++ trunk/as/plugins/org.jboss.ide.eclipse.as.core/jbosscore/org/jboss/ide/eclipse/as/core/server/internal/extendedproperties/JBossExtendedProperties.java	2012-03-14 05:54:45 UTC (rev 39486)
@@ -70,4 +70,8 @@
 		}
 	}
 
+	public int getMultipleDeployFolderSupport() {
+		return DEPLOYMENT_SCANNER_JMX_SUPPORT;
+	}
+
 }

Modified: trunk/as/plugins/org.jboss.ide.eclipse.as.core/jbosscore/org/jboss/ide/eclipse/as/core/server/internal/extendedproperties/ServerExtendedProperties.java
===================================================================
--- trunk/as/plugins/org.jboss.ide.eclipse.as.core/jbosscore/org/jboss/ide/eclipse/as/core/server/internal/extendedproperties/ServerExtendedProperties.java	2012-03-13 23:23:11 UTC (rev 39485)
+++ trunk/as/plugins/org.jboss.ide.eclipse.as.core/jbosscore/org/jboss/ide/eclipse/as/core/server/internal/extendedproperties/ServerExtendedProperties.java	2012-03-14 05:54:45 UTC (rev 39486)
@@ -35,4 +35,12 @@
 	public String getWelcomePageUrl() {
 		return null;
 	}
+	
+	public static final int DEPLOYMENT_SCANNER_NO_SUPPORT = 1;
+	public static final int DEPLOYMENT_SCANNER_JMX_SUPPORT = 2;
+	public static final int DEPLOYMENT_SCANNER_AS7_MANAGEMENT_SUPPORT = 3;
+	
+	public int getMultipleDeployFolderSupport() {
+		return DEPLOYMENT_SCANNER_NO_SUPPORT;
+	}
 }

Added: trunk/as/plugins/org.jboss.ide.eclipse.as.core/jbosscore/org/jboss/ide/eclipse/as/core/server/internal/v7/LocalJBoss7DeploymentScannerAdditions.java
===================================================================
--- trunk/as/plugins/org.jboss.ide.eclipse.as.core/jbosscore/org/jboss/ide/eclipse/as/core/server/internal/v7/LocalJBoss7DeploymentScannerAdditions.java	                        (rev 0)
+++ trunk/as/plugins/org.jboss.ide.eclipse.as.core/jbosscore/org/jboss/ide/eclipse/as/core/server/internal/v7/LocalJBoss7DeploymentScannerAdditions.java	2012-03-14 05:54:45 UTC (rev 39486)
@@ -0,0 +1,230 @@
+/******************************************************************************* 
+ * Copyright (c) 2012 Red Hat, Inc. 
+ * Distributed under license by Red Hat, Inc. All rights reserved. 
+ * This program is made available under the terms of the 
+ * Eclipse Public License v1.0 which accompanies this distribution, 
+ * and is available at http://www.eclipse.org/legal/epl-v10.html 
+ * 
+ * Contributors: 
+ * Red Hat, Inc. - initial API and implementation 
+ ******************************************************************************/ 
+package org.jboss.ide.eclipse.as.core.server.internal.v7;
+
+import java.io.FileInputStream;
+import java.io.FileOutputStream;
+import java.io.IOException;
+import java.util.ArrayList;
+import java.util.Arrays;
+import java.util.Iterator;
+import java.util.Properties;
+
+import org.eclipse.core.runtime.IPath;
+import org.eclipse.core.runtime.IStatus;
+import org.eclipse.core.runtime.Status;
+import org.eclipse.wst.server.core.IModule;
+import org.eclipse.wst.server.core.IServer;
+import org.eclipse.wst.server.core.ServerEvent;
+import org.jboss.dmr.ModelNode;
+import org.jboss.ide.eclipse.as.core.JBossServerCorePlugin;
+import org.jboss.ide.eclipse.as.core.publishers.PublishUtil;
+import org.jboss.ide.eclipse.as.core.server.UnitedServerListener;
+import org.jboss.ide.eclipse.as.core.server.internal.JBossServer;
+import org.jboss.ide.eclipse.as.core.server.internal.extendedproperties.ServerExtendedProperties;
+import org.jboss.ide.eclipse.as.core.server.v7.management.AS7ManagementDetails;
+import org.jboss.ide.eclipse.as.core.util.ServerConverter;
+import org.jboss.ide.eclipse.as.management.core.IJBoss7ManagerService;
+import org.jboss.ide.eclipse.as.management.core.JBoss7ManagerUtil;
+
+public class LocalJBoss7DeploymentScannerAdditions extends UnitedServerListener {
+	protected boolean accepts(IServer server) {
+		ServerExtendedProperties props = (ServerExtendedProperties)server.loadAdapter(ServerExtendedProperties.class, null);
+		boolean usesManagement = props != null && 
+			props.getMultipleDeployFolderSupport() == ServerExtendedProperties.DEPLOYMENT_SCANNER_AS7_MANAGEMENT_SUPPORT;
+		if(usesManagement) {
+			return true;
+		}
+		return false;
+	}
+	
+	private final static String SCANNER_PROP_FILE = "as7Scanners.properties"; //$NON-NLS-1$
+	
+	/**
+	 * Ensure the following folders are added to a deployment scanner. 
+	 * Depending on the impl and server version, you may simply add all of the folders, 
+	 * or, you may need to discover what's been removed and added separately. 
+	 * 
+	 * @param server
+	 * @param folders
+	 */
+	protected void ensureScannersAdded(final IServer server, final String[] folders) {
+		ArrayList<String> asList = new ArrayList<String>();
+		asList.addAll(Arrays.asList(folders));
+		ArrayList<String> added = new ArrayList<String>(); // list of the paths
+		added.addAll(Arrays.asList(folders));
+		ArrayList<String> removed = new ArrayList<String>(); // list of the scanner names
+		
+		IPath p = JBossServerCorePlugin.getServerStateLocation(server).append(SCANNER_PROP_FILE);
+		Properties props = new Properties();
+		if( p.toFile().exists()) {
+			try {
+				props.load(new FileInputStream(p.toFile()));
+			} catch( IOException ioe) {
+				// shouldnt happen. Log this
+				Status failStat = new Status(IStatus.ERROR, JBossServerCorePlugin.PLUGIN_ID, 
+						"Unable to read deployment scanner property file " + p.toFile().getAbsolutePath(), ioe); //$NON-NLS-1$
+				JBossServerCorePlugin.log(failStat);
+			}
+		}
+		 
+		Iterator<Object> i2 = props.keySet().iterator();
+		String k = null;
+		String v = null;
+		while(i2.hasNext()) {
+			k = (String)i2.next();
+			v = (String)props.get(k);
+			if( !asList.contains(v)) 
+				removed.add(k);
+			else {
+				added.remove(v);
+			}
+		}
+
+		 
+		 // Do the removes
+		Iterator<String> i = removed.iterator();
+		String scannerName = null;
+		while(i.hasNext()) {
+			scannerName = i.next();
+			IStatus s = removeOneFolder(server, scannerName);
+			if( s.isOK()) {
+				props.remove(scannerName);
+			}
+		}
+		 
+		// Do the adds
+		i = added.iterator();
+		String path;
+		String newScannerName;
+		while(i.hasNext()) {
+			path = i.next();
+			newScannerName = findNextScannerName(props);
+			IStatus s = addOneFolder(server, newScannerName, path);
+			if( s.isOK()){
+				props.put(newScannerName, path);
+			}
+		}
+		 
+		 // Write the file out
+		if( added.size() != 0 || removed.size() != 0 ) {
+			try {
+				props.store(new FileOutputStream(p.toFile()), "Deployment scanners for the application server"); //$NON-NLS-1$
+			} catch( IOException ioe) {
+				Status failStat = new Status(IStatus.ERROR, JBossServerCorePlugin.PLUGIN_ID, 
+						 "Unable to save deployment scanner property file " + p.toFile().getAbsolutePath(), ioe); //$NON-NLS-1$
+				JBossServerCorePlugin.log(failStat);
+			}
+		}
+	}
+	
+	private static final String SCANNER_PREFIX = "JBossToolsScanner"; //$NON-NLS-1$
+	protected String findNextScannerName(Properties props) {
+		int i = 1;
+		while( props.get(SCANNER_PREFIX + i) != null ) {
+			i++;
+		}
+		return SCANNER_PREFIX + i;
+	}
+	
+	protected IStatus addOneFolder(final IServer server, String scannerName, final String folder) {
+		ModelNode op = new ModelNode();
+		op.get("operation").set("add"); //$NON-NLS-1$ //$NON-NLS-2$
+		ModelNode addr = op.get("address"); //$NON-NLS-1$
+		addr.add("subsystem", "deployment-scanner");  //$NON-NLS-1$//$NON-NLS-2$
+		addr.add("scanner", scannerName); //$NON-NLS-1$
+		op.get("path").set(folder); //$NON-NLS-1$
+		final String request = op.toJSONString(true);
+		return execute(server, request);
+	}
+
+	protected IStatus removeOneFolder(final IServer server, String scannerName) {
+		ModelNode op = new ModelNode();
+		op.get("operation").set("remove"); //$NON-NLS-1$ //$NON-NLS-2$
+		ModelNode addr = op.get("address"); //$NON-NLS-1$
+		addr.add("subsystem", "deployment-scanner");  //$NON-NLS-1$//$NON-NLS-2$
+		addr.add("scanner", scannerName); //$NON-NLS-1$
+		final String request = op.toJSONString(true);
+		return execute(server, request);
+	}
+
+	protected IStatus execute(final IServer server, final String request) {
+		try {
+	        String resultJSON = JBoss7ManagerUtil.executeWithService(new JBoss7ManagerUtil.IServiceAware<String>() {
+	            public String execute(IJBoss7ManagerService service) throws Exception {
+	                return service.execute(new AS7ManagementDetails(server), request);
+	            }
+	        }, server);
+	        ModelNode result = ModelNode.fromJSONString(resultJSON);
+	        return Status.OK_STATUS;
+		} catch( Exception e ) {
+			// TODO Throw new checked exception
+			return new Status(IStatus.ERROR, JBossServerCorePlugin.PLUGIN_ID, e.getMessage(), e);
+		}
+	}
+
+	
+	public void serverChanged(ServerEvent event) {
+		IServer server = event.getServer();
+		if( accepts(server)) {
+			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 ) {
+						modifyDeploymentScanners(event);
+					}
+				}
+			}
+		}
+	}
+	
+	protected void modifyDeploymentScanners(ServerEvent event){
+		String[] folders = getDeployLocationFolders(event.getServer());
+		ensureScannersAdded(event.getServer(), folders);
+	}
+	
+	protected String[] getDeployLocationFolders(IServer server) {
+		JBossServer ds = ServerConverter.getJBossServer(server);
+		ArrayList<String> folders = new ArrayList<String>();
+		// add the server folder deploy loc. first
+		String insideServer = ds.getDeployFolder(JBossServer.DEPLOY_SERVER);
+		String metadata = JBossServer.getDeployFolder(ds, JBossServer.DEPLOY_METADATA);
+		String custom = JBossServer.getDeployFolder(ds, JBossServer.DEPLOY_CUSTOM);
+		String type = ds.getDeployLocationType();
+		String serverHome = null;
+		if (server != null && server.getRuntime()!= null && server.getRuntime().getLocation() != null) {
+			serverHome = server.getRuntime().getLocation().toString();
+		}
+		folders.add(insideServer);
+		if( type.equals(JBossServer.DEPLOY_METADATA) && !folders.contains(metadata))
+			folders.add(metadata);
+		if( type.equals(JBossServer.DEPLOY_CUSTOM) && !folders.contains(custom) && !custom.equals(serverHome))
+			folders.add(custom);
+
+		IModule[] modules2 = org.eclipse.wst.server.core.ServerUtil.getModules(server.getServerType().getRuntimeType().getModuleTypes());
+		if (modules2 != null) {
+			int size = modules2.length;
+			for (int i = 0; i < size; i++) {
+				IModule[] module = new IModule[] { modules2[i] };
+				IStatus status = server.canModifyModules(module, null, null);
+				if (status != null && status.getSeverity() != IStatus.ERROR) {
+					String tempFolder = PublishUtil.getDeployRootFolder(module, ds).toString(); 
+					if( !folders.contains(tempFolder))
+						folders.add(tempFolder);
+				}
+			}
+		}
+		folders.remove(insideServer); // doesn't need to be added to deployment scanner
+		String[] folders2 = (String[]) folders.toArray(new String[folders.size()]);
+		return folders2;
+	}
+}

Modified: trunk/as/plugins/org.jboss.ide.eclipse.as.jmx.integration/src/org/jboss/ide/eclipse/as/jmx/integration/Activator.java
===================================================================
--- trunk/as/plugins/org.jboss.ide.eclipse.as.jmx.integration/src/org/jboss/ide/eclipse/as/jmx/integration/Activator.java	2012-03-13 23:23:11 UTC (rev 39485)
+++ trunk/as/plugins/org.jboss.ide.eclipse.as.jmx.integration/src/org/jboss/ide/eclipse/as/jmx/integration/Activator.java	2012-03-14 05:54:45 UTC (rev 39486)
@@ -31,6 +31,7 @@
 	public Activator() {
 	}
 
+	private JMXServerLifecycleListener listener = new JMXServerLifecycleListener();
 	/*
 	 * (non-Javadoc)
 	 * @see org.eclipse.ui.plugin.AbstractUIPlugin#start(org.osgi.framework.BundleContext)
@@ -38,7 +39,7 @@
 	public void start(BundleContext context) throws Exception {
 		super.start(context);
 		plugin = this;
-		UnitedServerListenerManager.getDefault().addListener(JMXServerLifecycleListener.getDefault());
+		UnitedServerListenerManager.getDefault().addListener(listener);
 	}
 
 	/*
@@ -46,7 +47,7 @@
 	 * @see org.eclipse.ui.plugin.AbstractUIPlugin#stop(org.osgi.framework.BundleContext)
 	 */
 	public void stop(BundleContext context) throws Exception {
-		UnitedServerListenerManager.getDefault().removeListener(JMXServerLifecycleListener.getDefault());
+		UnitedServerListenerManager.getDefault().removeListener(listener);
 		plugin = null;
 		super.stop(context);
 	}

Modified: trunk/as/plugins/org.jboss.ide.eclipse.as.jmx.integration/src/org/jboss/ide/eclipse/as/jmx/integration/JMXServerLifecycleListener.java
===================================================================
--- trunk/as/plugins/org.jboss.ide.eclipse.as.jmx.integration/src/org/jboss/ide/eclipse/as/jmx/integration/JMXServerLifecycleListener.java	2012-03-13 23:23:11 UTC (rev 39485)
+++ trunk/as/plugins/org.jboss.ide.eclipse.as.jmx.integration/src/org/jboss/ide/eclipse/as/jmx/integration/JMXServerLifecycleListener.java	2012-03-14 05:54:45 UTC (rev 39486)
@@ -1,5 +1,5 @@
 /******************************************************************************* 
- * Copyright (c) 2011 Red Hat, Inc. 
+ * Copyright (c) 2012 Red Hat, Inc. 
  * Distributed under license by Red Hat, Inc. All rights reserved. 
  * This program is made available under the terms of the 
  * Eclipse Public License v1.0 which accompanies this distribution, 
@@ -11,7 +11,6 @@
 package org.jboss.ide.eclipse.as.jmx.integration;
 
 import java.net.URI;
-import java.util.ArrayList;
 
 import javax.management.MBeanServerConnection;
 import javax.management.ObjectName;
@@ -19,104 +18,53 @@
 import org.eclipse.core.runtime.IStatus;
 import org.eclipse.core.runtime.NullProgressMonitor;
 import org.eclipse.core.runtime.Status;
-import org.eclipse.wst.server.core.IModule;
 import org.eclipse.wst.server.core.IServer;
 import org.eclipse.wst.server.core.ServerEvent;
 import org.jboss.ide.eclipse.as.core.Messages;
 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.publishers.PublishUtil;
-import org.jboss.ide.eclipse.as.core.server.UnitedServerListener;
 import org.jboss.ide.eclipse.as.core.server.internal.JBossServer;
+import org.jboss.ide.eclipse.as.core.server.internal.extendedproperties.ServerExtendedProperties;
+import org.jboss.ide.eclipse.as.core.server.internal.v7.LocalJBoss7DeploymentScannerAdditions;
 import org.jboss.ide.eclipse.as.core.util.IJBossRuntimeConstants;
-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 JMXServerLifecycleListener extends UnitedServerListener {
-	private static JMXServerLifecycleListener instance;
-	public static JMXServerLifecycleListener getDefault() {
-		if( instance == null )
-			instance = new JMXServerLifecycleListener();
-		return instance;
-	}
-	
-	public void serverChanged(ServerEvent event) {
-		IServer server = event.getServer();
+public class JMXServerLifecycleListener extends LocalJBoss7DeploymentScannerAdditions {
+	protected boolean accepts(IServer server) {
+		ServerExtendedProperties props = (ServerExtendedProperties)server.loadAdapter(ServerExtendedProperties.class, null);
 		JBossServer jbs = (JBossServer)server.loadAdapter(JBossServer.class, new NullProgressMonitor());
-		if( jbs != null && jbs.hasJMXProvider()) {
-			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 ) {
-						String[] folders = getDeployLocationFolders(server);
-						if( folders.length > 0 ) 
-							doDeploymentAddition(event, folders);
-					}
-				}
-			}
+		boolean hasJMXProvider = jbs != null && jbs.hasJMXProvider();
+		boolean jmxDeploymentScanner = props != null && props.getMultipleDeployFolderSupport() == ServerExtendedProperties.DEPLOYMENT_SCANNER_JMX_SUPPORT;
+		if(hasJMXProvider && jmxDeploymentScanner) {
+			return true;
 		}
+		return false;
 	}
 	
-	protected void doDeploymentAddition(final ServerEvent event, final String[] folders) {
+	protected void modifyDeploymentScanners(ServerEvent event){
+		String[] folders = getDeployLocationFolders(event.getServer());
+		if( folders.length > 0 ) 
+			ensureScannersAdded(event.getServer(), folders);
+	}
+
+	protected void ensureScannersAdded(final IServer server, final String[] folders) {
 		IJMXRunnable r = new IJMXRunnable() {
 			public void run(MBeanServerConnection connection) throws Exception {
-				ensureDeployLocationAdded(event.getServer(), connection, folders);
+				ensureDeployLocationAdded(server, connection, folders);
 			}
 		};
 		try {
-			JBossServerConnectionProvider.run(event.getServer(), r);
+			JBossServerConnectionProvider.run(server, r);
 		} catch( JMXException jmxe ) {
 			IStatus s = jmxe.getStatus();
 			IStatus newStatus = new Status(s.getSeverity(), s.getPlugin(), IEventCodes.ADD_DEPLOYMENT_FOLDER_FAIL, 
 					Messages.AddingJMXDeploymentFailed, s.getException());
-			ServerLogger.getDefault().log(event.getServer(), newStatus);
+			ServerLogger.getDefault().log(server, newStatus);
 		}
 	}
 	
-	protected String[] getDeployLocationFolders(IServer server) {
-		JBossServer ds = ServerConverter.getJBossServer(server);
-		ArrayList<String> folders = new ArrayList<String>();
-		// add the server folder deploy loc. first
-		String insideServer = ds.getDeployFolder(JBossServer.DEPLOY_SERVER);
-		String metadata = JBossServer.getDeployFolder(ds, JBossServer.DEPLOY_METADATA);
-		String custom = JBossServer.getDeployFolder(ds, JBossServer.DEPLOY_CUSTOM);
-		String type = ds.getDeployLocationType();
-		String serverHome = null;
-		if (server != null && server.getRuntime()!= null && server.getRuntime().getLocation() != null) {
-			serverHome = server.getRuntime().getLocation().toString();
-		}
-		folders.add(insideServer);
-		if( type.equals(JBossServer.DEPLOY_METADATA) && !folders.contains(metadata))
-			folders.add(metadata);
-		if( type.equals(JBossServer.DEPLOY_CUSTOM) && !folders.contains(custom) && !custom.equals(serverHome))
-			folders.add(custom);
-
-		IModule[] modules2 = org.eclipse.wst.server.core.ServerUtil.getModules(server.getServerType().getRuntimeType().getModuleTypes());
-		if (modules2 != null) {
-			int size = modules2.length;
-			for (int i = 0; i < size; i++) {
-				IModule[] module = new IModule[] { modules2[i] };
-				IStatus status = server.canModifyModules(module, null, null);
-				if (status != null && status.getSeverity() != IStatus.ERROR) {
-					String tempFolder = PublishUtil.getDeployRootFolder(module, ds).toString(); 
-					if( !folders.contains(tempFolder))
-						folders.add(tempFolder);
-				}
-			}
-		}
-		folders.remove(insideServer); // doesn't need to be added to deployment scanner
-		String[] folders2 = (String[]) folders.toArray(new String[folders.size()]);
-		return folders2;
-	}
-
-	protected void ensureDeployLocationAdded(IServer server, MBeanServerConnection connection) throws Exception {
-		String[] folders2 = getDeployLocationFolders(server);
-		ensureDeployLocationAdded(server, connection, folders2);
-	}
-	
-	protected void ensureDeployLocationAdded(IServer server, 
+	private void ensureDeployLocationAdded(IServer server, 
 			MBeanServerConnection connection, String[] folders2) throws Exception {
 		for( int i = 0; i < folders2.length; i++ ) {
 			String asURL = encode(folders2[i]);

Modified: trunk/as/plugins/org.jboss.ide.eclipse.as.management.as71/src/org/jboss/ide/eclipse/as/internal/management/as71/AS71Manager.java
===================================================================
--- trunk/as/plugins/org.jboss.ide.eclipse.as.management.as71/src/org/jboss/ide/eclipse/as/internal/management/as71/AS71Manager.java	2012-03-13 23:23:11 UTC (rev 39485)
+++ trunk/as/plugins/org.jboss.ide.eclipse.as.management.as71/src/org/jboss/ide/eclipse/as/internal/management/as71/AS71Manager.java	2012-03-14 05:54:45 UTC (rev 39486)
@@ -31,7 +31,6 @@
 import java.util.HashSet;
 import java.util.List;
 import java.util.Set;
-import java.util.concurrent.ExecutionException;
 import java.util.concurrent.Future;
 
 import javax.security.auth.callback.Callback;

Modified: trunk/as/plugins/org.jboss.ide.eclipse.as.management.as71/src/org/jboss/ide/eclipse/as/internal/management/as71/AS7Messages.java
===================================================================
--- trunk/as/plugins/org.jboss.ide.eclipse.as.management.as71/src/org/jboss/ide/eclipse/as/internal/management/as71/AS7Messages.java	2012-03-13 23:23:11 UTC (rev 39485)
+++ trunk/as/plugins/org.jboss.ide.eclipse.as.management.as71/src/org/jboss/ide/eclipse/as/internal/management/as71/AS7Messages.java	2012-03-14 05:54:45 UTC (rev 39486)
@@ -22,7 +22,7 @@
 	public static String OperationOnUnitRolledBack;
 	public static String OperationNotExecConfigRequiresRestart;
 	static {
-		NLS.initializeMessages("org.jboss.ide.eclipse.as.management.as7.AS7Messages", //$NON-NLS-1$ 
+		NLS.initializeMessages("org.jboss.ide.eclipse.as.internal.management.as71.AS7Messages", //$NON-NLS-1$ 
 				AS7Messages.class);
 	}
 

Modified: trunk/as/plugins/org.jboss.ide.eclipse.as.ui/jbossui/org/jboss/ide/eclipse/as/ui/editor/DeploymentModuleOptionCompositeAssistant.java
===================================================================
--- trunk/as/plugins/org.jboss.ide.eclipse.as.ui/jbossui/org/jboss/ide/eclipse/as/ui/editor/DeploymentModuleOptionCompositeAssistant.java	2012-03-13 23:23:11 UTC (rev 39485)
+++ trunk/as/plugins/org.jboss.ide.eclipse.as.ui/jbossui/org/jboss/ide/eclipse/as/ui/editor/DeploymentModuleOptionCompositeAssistant.java	2012-03-14 05:54:45 UTC (rev 39486)
@@ -55,6 +55,7 @@
 import org.eclipse.ui.forms.widgets.Section;
 import org.eclipse.wst.server.core.IModule;
 import org.eclipse.wst.server.core.IRuntime;
+import org.eclipse.wst.server.core.IServer;
 import org.eclipse.wst.server.core.IServerWorkingCopy;
 import org.eclipse.wst.server.ui.ServerUICore;
 import org.eclipse.wst.server.ui.internal.command.ServerCommand;
@@ -67,6 +68,7 @@
 import org.jboss.ide.eclipse.as.core.server.IJBossServerRuntime;
 import org.jboss.ide.eclipse.as.core.server.internal.JBossServer;
 import org.jboss.ide.eclipse.as.core.server.internal.ServerAttributeHelper;
+import org.jboss.ide.eclipse.as.core.server.internal.extendedproperties.ServerExtendedProperties;
 import org.jboss.ide.eclipse.as.core.util.DeploymentPreferenceLoader.DeploymentModulePrefs;
 import org.jboss.ide.eclipse.as.core.util.DeploymentPreferenceLoader.DeploymentPreferences;
 import org.jboss.ide.eclipse.as.core.util.IJBossRuntimeResourceConstants;
@@ -214,11 +216,13 @@
 
 	public boolean enableMetadataRadio() {
 		String mode = getHelper().getAttribute(IDeployableServer.SERVER_MODE, LocalPublishMethod.LOCAL_PUBLISH_METHOD); 
-		if(mode.equals("rse"))
+		if(!LocalPublishMethod.LOCAL_PUBLISH_METHOD.equals(mode))
 			return false;
-		if( ServerUtil.isJBoss7(page.getServer().getServerType()))
-			return false;
-		return true;
+		IServer s = page.getServer().getOriginal();
+		ServerExtendedProperties props = (ServerExtendedProperties)s.loadAdapter(ServerExtendedProperties.class, null);
+		if( props == null )
+			return true;
+		return props.getMultipleDeployFolderSupport() != ServerExtendedProperties.DEPLOYMENT_SCANNER_NO_SUPPORT;
 	}
 	
 	public boolean showTempAndDeployTexts() {



More information about the jbosstools-commits mailing list