[jbosstools-commits] JBoss Tools SVN: r39503 - in trunk/as/plugins: org.jboss.ide.eclipse.as.core/jbosscore/org/jboss/ide/eclipse/as/core/server/internal and 7 other directories.
jbosstools-commits at lists.jboss.org
jbosstools-commits at lists.jboss.org
Wed Mar 14 10:37:17 EDT 2012
Author: rob.stryker at jboss.com
Date: 2012-03-14 10:37:16 -0400 (Wed, 14 Mar 2012)
New Revision: 39503
Added:
trunk/as/plugins/org.jboss.ide.eclipse.as.core/jbosscore/org/jboss/ide/eclipse/as/core/server/internal/v7/AS7DeploymentScannerUtility.java
trunk/as/plugins/org.jboss.ide.eclipse.as.ui/jbossui/org/jboss/ide/eclipse/as/ui/dialogs/ModifyDeploymentScannerIntervalDialog.java
Modified:
trunk/as/plugins/org.jboss.ide.eclipse.as.core/jbosscore/org/jboss/ide/eclipse/as/core/server/UnitedServerListener.java
trunk/as/plugins/org.jboss.ide.eclipse.as.core/jbosscore/org/jboss/ide/eclipse/as/core/server/internal/ExtendedServerPropertiesAdapterFactory.java
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.jmx.integration/src/org/jboss/ide/eclipse/as/jmx/integration/JMXServerLifecycleListener.java
trunk/as/plugins/org.jboss.ide.eclipse.as.ui/jbossui/org/jboss/ide/eclipse/as/ui/JBossServerUIPlugin.java
trunk/as/plugins/org.jboss.ide.eclipse.as.ui/jbossui/org/jboss/ide/eclipse/as/ui/console/ShowConsoleServerStateListener.java
trunk/as/plugins/org.jboss.ide.eclipse.as.ui/jbossui/org/jboss/ide/eclipse/as/ui/views/server/extensions/XPathRuntimeListener.java
trunk/as/plugins/org.jboss.ide.eclipse.as.ui/jbossui/org/jboss/ide/eclipse/as/ui/wizards/JBInitialSelectionProvider.java
Log:
JBIDE-11275 - deployment scanner at 0 shows dialog now in trunk
Modified: trunk/as/plugins/org.jboss.ide.eclipse.as.core/jbosscore/org/jboss/ide/eclipse/as/core/server/UnitedServerListener.java
===================================================================
--- trunk/as/plugins/org.jboss.ide.eclipse.as.core/jbosscore/org/jboss/ide/eclipse/as/core/server/UnitedServerListener.java 2012-03-14 14:34:20 UTC (rev 39502)
+++ trunk/as/plugins/org.jboss.ide.eclipse.as.core/jbosscore/org/jboss/ide/eclipse/as/core/server/UnitedServerListener.java 2012-03-14 14:37:16 UTC (rev 39503)
@@ -12,7 +12,10 @@
import org.eclipse.core.runtime.IStatus;
import org.eclipse.wst.server.core.IRuntime;
+import org.eclipse.wst.server.core.IRuntimeLifecycleListener;
import org.eclipse.wst.server.core.IServer;
+import org.eclipse.wst.server.core.IServerLifecycleListener;
+import org.eclipse.wst.server.core.IServerListener;
import org.eclipse.wst.server.core.ServerEvent;
/**
@@ -22,7 +25,8 @@
* @author Rob Stryker
*
*/
-public class UnitedServerListener {
+public class UnitedServerListener implements
+ IServerLifecycleListener, IServerListener, IRuntimeLifecycleListener {
public void init(IServer server) {}
public void serverAdded(IServer server) {}
@@ -46,4 +50,18 @@
}
public void runtimeRemoved(IRuntime runtime) {
}
+
+ // Utility method
+ public boolean serverSwitchesToState(ServerEvent event, int state) {
+ int eventKind = event.getKind();
+ if ((eventKind & ServerEvent.SERVER_CHANGE) != 0) {
+ // server change event
+ if ((eventKind & ServerEvent.STATE_CHANGE) != 0) {
+ if( event.getServer().getServerState() == state ) {
+ return true;
+ }
+ }
+ }
+ return false;
+ }
}
Modified: trunk/as/plugins/org.jboss.ide.eclipse.as.core/jbosscore/org/jboss/ide/eclipse/as/core/server/internal/ExtendedServerPropertiesAdapterFactory.java
===================================================================
--- trunk/as/plugins/org.jboss.ide.eclipse.as.core/jbosscore/org/jboss/ide/eclipse/as/core/server/internal/ExtendedServerPropertiesAdapterFactory.java 2012-03-14 14:34:20 UTC (rev 39502)
+++ trunk/as/plugins/org.jboss.ide.eclipse.as.core/jbosscore/org/jboss/ide/eclipse/as/core/server/internal/ExtendedServerPropertiesAdapterFactory.java 2012-03-14 14:37:16 UTC (rev 39503)
@@ -34,10 +34,14 @@
return (ServerExtendedProperties)ret;
}
- @Override
public Object getAdapter(Object adaptableObject, Class adapterType) {
- if( adapterType != ServerExtendedProperties.class )
- return null;
+ ServerExtendedProperties props = getExtendedProperties(adaptableObject);
+ if( adapterType.isAssignableFrom(props.getClass()))
+ return props;
+ return null;
+ }
+
+ public ServerExtendedProperties getExtendedProperties(Object adaptableObject) {
String typeId = null;
IServer s = null;
IRuntime r = null;
@@ -87,10 +91,12 @@
}
return null;
}
-
- @Override
+
public Class[] getAdapterList() {
- return new Class[]{ ServerExtendedProperties.class};
+ return new Class[]{ ServerExtendedProperties.class,
+ JBossExtendedProperties.class,
+ JBossAS7ExtendedProperties.class,
+ JBossAS710ExtendedProperties.class};
}
}
Added: trunk/as/plugins/org.jboss.ide.eclipse.as.core/jbosscore/org/jboss/ide/eclipse/as/core/server/internal/v7/AS7DeploymentScannerUtility.java
===================================================================
--- trunk/as/plugins/org.jboss.ide.eclipse.as.core/jbosscore/org/jboss/ide/eclipse/as/core/server/internal/v7/AS7DeploymentScannerUtility.java (rev 0)
+++ trunk/as/plugins/org.jboss.ide.eclipse.as.core/jbosscore/org/jboss/ide/eclipse/as/core/server/internal/v7/AS7DeploymentScannerUtility.java 2012-03-14 14:37:16 UTC (rev 39503)
@@ -0,0 +1,110 @@
+/*******************************************************************************
+ * Copyright (c) 2011 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.util.HashMap;
+import java.util.List;
+
+import org.eclipse.core.runtime.IStatus;
+import org.eclipse.core.runtime.Status;
+import org.eclipse.wst.server.core.IServer;
+import org.jboss.dmr.ModelNode;
+import org.jboss.ide.eclipse.as.core.JBossServerCorePlugin;
+import org.jboss.ide.eclipse.as.core.server.v7.management.AS7ManagementDetails;
+import org.jboss.ide.eclipse.as.management.core.IJBoss7ManagerService;
+import org.jboss.ide.eclipse.as.management.core.JBoss7ManagerUtil;
+
+public class AS7DeploymentScannerUtility {
+
+ public IStatus addDeploymentScanner(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);
+ }
+
+ public IStatus removeDeploymentScanner(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);
+ }
+
+ public boolean updateDeploymentScannerInterval(final IServer server, String scannerName, int newValue) {
+ ModelNode op = new ModelNode();
+ op.get("operation").set("write-attribute"); //$NON-NLS-1$ //$NON-NLS-2$
+ op.get("name").set("scan-interval"); //$NON-NLS-1$ //$NON-NLS-2$
+ op.get("value").set(newValue); //$NON-NLS-1$
+ 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);
+ try {
+ executeWithResult(server, request);
+ } catch(Exception e) {
+ return false;
+ }
+ return true;
+ }
+
+ public HashMap<String, Integer> getDeploymentScannerIntervals(final IServer server) {
+ ModelNode op = new ModelNode();
+ op.get("operation").set("read-attribute"); //$NON-NLS-1$ //$NON-NLS-2$
+ op.get("name").set("scan-interval"); //$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", "*"); //$NON-NLS-1$ //$NON-NLS-2$
+ final String request = op.toJSONString(true);
+ ModelNode response = null;
+ try {
+ response = executeWithResult(server, request);
+ } catch(Exception e) {
+ return new HashMap<String, Integer>();
+ }
+
+ HashMap<String, Integer> retval=new HashMap<String, Integer>();
+ List<ModelNode> list = response.asList();
+ for( int i = 0; i <list.size(); i++ ) {
+ ModelNode address = list.get(i).get("address"); //$NON-NLS-1$
+ String scannerName = address.asList().get(1).get("scanner").asString(); //$NON-NLS-1$
+ ModelNode intVal = list.get(i).get("result"); //$NON-NLS-1$
+ int intVal2 = intVal.asBigInteger().intValue();
+ retval.put(scannerName, new Integer(intVal2));
+ }
+ return retval;
+ }
+
+ protected IStatus execute(final IServer server, final String request) {
+ try {
+ ModelNode node = executeWithResult(server, request);
+ return Status.OK_STATUS;
+ } catch( Exception e ) {
+ // TODO Throw new checked exception
+ return new Status(IStatus.ERROR, JBossServerCorePlugin.PLUGIN_ID, e.getMessage(), e);
+ }
+ }
+ protected ModelNode executeWithResult(final IServer server, final String request) throws Exception {
+ 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 result;
+ }
+}
Modified: 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 2012-03-14 14:34:20 UTC (rev 39502)
+++ trunk/as/plugins/org.jboss.ide.eclipse.as.core/jbosscore/org/jboss/ide/eclipse/as/core/server/internal/v7/LocalJBoss7DeploymentScannerAdditions.java 2012-03-14 14:37:16 UTC (rev 39503)
@@ -89,13 +89,14 @@
}
}
+ AS7DeploymentScannerUtility util = new AS7DeploymentScannerUtility();
// Do the removes
Iterator<String> i = removed.iterator();
String scannerName = null;
while(i.hasNext()) {
scannerName = i.next();
- IStatus s = removeOneFolder(server, scannerName);
+ IStatus s = util.removeDeploymentScanner(server, scannerName);
if( s.isOK()) {
props.remove(scannerName);
}
@@ -108,7 +109,7 @@
while(i.hasNext()) {
path = i.next();
newScannerName = findNextScannerName(props);
- IStatus s = addOneFolder(server, newScannerName, path);
+ IStatus s = util.addDeploymentScanner(server, newScannerName, path);
if( s.isOK()){
props.put(newScannerName, path);
}
@@ -135,55 +136,9 @@
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);
- }
- }
- }
+ if( accepts(event.getServer()) && serverSwitchesToState(event, IServer.STATE_STARTED)){
+ modifyDeploymentScanners(event);
}
}
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-14 14:34:20 UTC (rev 39502)
+++ trunk/as/plugins/org.jboss.ide.eclipse.as.jmx.integration/src/org/jboss/ide/eclipse/as/jmx/integration/JMXServerLifecycleListener.java 2012-03-14 14:37:16 UTC (rev 39503)
@@ -42,6 +42,10 @@
return false;
}
+ protected void verifyPrimaryScannerEnablement() {
+ // Do Nothing
+ }
+
protected void modifyDeploymentScanners(ServerEvent event){
String[] folders = getDeployLocationFolders(event.getServer());
if( folders.length > 0 )
Modified: trunk/as/plugins/org.jboss.ide.eclipse.as.ui/jbossui/org/jboss/ide/eclipse/as/ui/JBossServerUIPlugin.java
===================================================================
--- trunk/as/plugins/org.jboss.ide.eclipse.as.ui/jbossui/org/jboss/ide/eclipse/as/ui/JBossServerUIPlugin.java 2012-03-14 14:34:20 UTC (rev 39502)
+++ trunk/as/plugins/org.jboss.ide.eclipse.as.ui/jbossui/org/jboss/ide/eclipse/as/ui/JBossServerUIPlugin.java 2012-03-14 14:37:16 UTC (rev 39503)
@@ -1,24 +1,13 @@
-/*
- * JBoss, Home of Professional Open Source
- * Copyright 2006, JBoss Inc., and individual contributors as indicated
- * by the @authors tag. See the copyright.txt in the distribution for a
- * full listing of individual contributors.
- *
- * This is free software; you can redistribute it and/or modify it
- * under the terms of the GNU Lesser General Public License as
- * published by the Free Software Foundation; either version 2.1 of
- * the License, or (at your option) any later version.
- *
- * This software is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
- * Lesser General Public License for more details.
- *
- * You should have received a copy of the GNU Lesser General Public
- * License along with this software; if not, write to the Free
- * Software Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA
- * 02110-1301 USA, or see the FSF site: http://www.fsf.org.
- */
+/*******************************************************************************
+ * 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.ui;
import java.util.MissingResourceException;
@@ -37,6 +26,7 @@
import org.jboss.ide.eclipse.as.core.JBossServerCorePlugin;
import org.jboss.ide.eclipse.as.core.server.UnitedServerListenerManager;
import org.jboss.ide.eclipse.as.ui.console.ShowConsoleServerStateListener;
+import org.jboss.ide.eclipse.as.ui.dialogs.ModifyDeploymentScannerIntervalDialog.DeploymentScannerUIServerStartedListener;
import org.jboss.ide.eclipse.as.ui.dialogs.ServerAlreadyStartedDialog.ServerAlreadyStartedHandler;
import org.jboss.ide.eclipse.as.ui.views.server.extensions.XPathRuntimeListener;
import org.jboss.ide.eclipse.as.ui.wizards.JBInitialSelectionProvider;
@@ -66,12 +56,14 @@
}
private static JBInitialSelectionProvider selectionProvider;
+ private static DeploymentScannerUIServerStartedListener as7ScannerAssist;
/**
* This method is called upon plug-in activation
*/
public void start(BundleContext context) throws Exception {
super.start(context);
selectionProvider = new JBInitialSelectionProvider();
+ as7ScannerAssist = new DeploymentScannerUIServerStartedListener();
Preferences prefs = getPluginPreferences();
if( !prefs.getBoolean(IPreferenceKeys.ENABLED_DECORATORS)) {
@@ -87,6 +79,7 @@
}
savePluginPreferences();
UnitedServerListenerManager.getDefault().addListener(ShowConsoleServerStateListener.getDefault());
+ UnitedServerListenerManager.getDefault().addListener(as7ScannerAssist);
ServerCore.addServerLifecycleListener(selectionProvider);
ServerCore.addRuntimeLifecycleListener(XPathRuntimeListener.getDefault());
ExtensionManager.getDefault().setAlreadyStartedHandler(new ServerAlreadyStartedHandler());
@@ -100,6 +93,7 @@
ServerCore.removeRuntimeLifecycleListener(XPathRuntimeListener.getDefault());
ServerCore.removeServerLifecycleListener(selectionProvider);
UnitedServerListenerManager.getDefault().removeListener(ShowConsoleServerStateListener.getDefault());
+ UnitedServerListenerManager.getDefault().removeListener(as7ScannerAssist);
JBossServerUISharedImages.instance().cleanup();
super.stop(context);
}
Modified: trunk/as/plugins/org.jboss.ide.eclipse.as.ui/jbossui/org/jboss/ide/eclipse/as/ui/console/ShowConsoleServerStateListener.java
===================================================================
--- trunk/as/plugins/org.jboss.ide.eclipse.as.ui/jbossui/org/jboss/ide/eclipse/as/ui/console/ShowConsoleServerStateListener.java 2012-03-14 14:34:20 UTC (rev 39502)
+++ trunk/as/plugins/org.jboss.ide.eclipse.as.ui/jbossui/org/jboss/ide/eclipse/as/ui/console/ShowConsoleServerStateListener.java 2012-03-14 14:37:16 UTC (rev 39503)
@@ -34,35 +34,26 @@
public void serverChanged(ServerEvent event) {
final IServer server = event.getServer();
JBossServer jbs = (JBossServer)server.loadAdapter(JBossServer.class, new NullProgressMonitor());
- if( jbs != null ) {
- 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_STARTING ) {
- // do not launch console for remotes, for now
- String type = DeploymentPreferenceLoader.getCurrentDeploymentMethodTypeId(server, LocalPublishMethod.LOCAL_PUBLISH_METHOD);
- if( !type.equals(LocalPublishMethod.LOCAL_PUBLISH_METHOD))
- return;
-
- new Thread() {
- public void run() {
- try {
- // delay to insure the server gets a chance to actually launch
- Thread.sleep(3000);
- } catch(InterruptedException ie) {}
- Display.getDefault().asyncExec(new Runnable() {
- public void run() {
- ILaunch launch = server.getLaunch();
- if( launch != null && launch.getProcesses().length > 0)
- new ShowInConsoleAction(getNullSelectionProvider()).perform(server);
- }
- });
- }
- }.start();
- }
+ if( jbs != null && serverSwitchesToState(event, IServer.STATE_STARTING)) {
+ // do not launch console for remotes, for now
+ String type = DeploymentPreferenceLoader.getCurrentDeploymentMethodTypeId(server, LocalPublishMethod.LOCAL_PUBLISH_METHOD);
+ if( !type.equals(LocalPublishMethod.LOCAL_PUBLISH_METHOD))
+ return;
+ new Thread() {
+ public void run() {
+ try {
+ // delay to insure the server gets a chance to actually launch
+ Thread.sleep(3000);
+ } catch(InterruptedException ie) {}
+ Display.getDefault().asyncExec(new Runnable() {
+ public void run() {
+ ILaunch launch = server.getLaunch();
+ if( launch != null && launch.getProcesses().length > 0)
+ new ShowInConsoleAction(getNullSelectionProvider()).perform(server);
+ }
+ });
}
- }
+ }.start();
}
}
Added: trunk/as/plugins/org.jboss.ide.eclipse.as.ui/jbossui/org/jboss/ide/eclipse/as/ui/dialogs/ModifyDeploymentScannerIntervalDialog.java
===================================================================
--- trunk/as/plugins/org.jboss.ide.eclipse.as.ui/jbossui/org/jboss/ide/eclipse/as/ui/dialogs/ModifyDeploymentScannerIntervalDialog.java (rev 0)
+++ trunk/as/plugins/org.jboss.ide.eclipse.as.ui/jbossui/org/jboss/ide/eclipse/as/ui/dialogs/ModifyDeploymentScannerIntervalDialog.java 2012-03-14 14:37:16 UTC (rev 39503)
@@ -0,0 +1,293 @@
+/*******************************************************************************
+* 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.ui.dialogs;
+
+import java.util.ArrayList;
+import java.util.HashMap;
+import java.util.Iterator;
+import java.util.Set;
+
+import org.eclipse.core.runtime.IProgressMonitor;
+import org.eclipse.core.runtime.IStatus;
+import org.eclipse.core.runtime.Status;
+import org.eclipse.core.runtime.jobs.Job;
+import org.eclipse.core.runtime.preferences.IEclipsePreferences;
+import org.eclipse.core.runtime.preferences.InstanceScope;
+import org.eclipse.jface.dialogs.IDialogConstants;
+import org.eclipse.jface.dialogs.IMessageProvider;
+import org.eclipse.jface.dialogs.TitleAreaDialog;
+import org.eclipse.jface.viewers.CellEditor;
+import org.eclipse.jface.viewers.ICellModifier;
+import org.eclipse.jface.viewers.ILabelProviderListener;
+import org.eclipse.jface.viewers.IStructuredContentProvider;
+import org.eclipse.jface.viewers.ITableLabelProvider;
+import org.eclipse.jface.viewers.TableViewer;
+import org.eclipse.jface.viewers.TextCellEditor;
+import org.eclipse.jface.viewers.Viewer;
+import org.eclipse.swt.SWT;
+import org.eclipse.swt.events.SelectionEvent;
+import org.eclipse.swt.events.SelectionListener;
+import org.eclipse.swt.graphics.Image;
+import org.eclipse.swt.layout.GridData;
+import org.eclipse.swt.layout.GridLayout;
+import org.eclipse.swt.widgets.Button;
+import org.eclipse.swt.widgets.Composite;
+import org.eclipse.swt.widgets.Control;
+import org.eclipse.swt.widgets.Display;
+import org.eclipse.swt.widgets.Shell;
+import org.eclipse.swt.widgets.Table;
+import org.eclipse.swt.widgets.TableColumn;
+import org.eclipse.swt.widgets.TableItem;
+import org.eclipse.wst.server.core.IServer;
+import org.eclipse.wst.server.core.ServerEvent;
+import org.jboss.ide.eclipse.as.core.server.UnitedServerListener;
+import org.jboss.ide.eclipse.as.core.server.internal.extendedproperties.JBossExtendedProperties;
+import org.jboss.ide.eclipse.as.core.server.internal.extendedproperties.ServerExtendedProperties;
+import org.jboss.ide.eclipse.as.core.server.internal.v7.AS7DeploymentScannerUtility;
+import org.jboss.ide.eclipse.as.ui.JBossServerUIPlugin;
+import org.osgi.service.prefs.BackingStoreException;
+
+public class ModifyDeploymentScannerIntervalDialog extends TitleAreaDialog {
+
+ public static final String AS7_IGNORE_ZERO_INTERVAL_SCANNER_SETTING = "AS7_IGNORE_ZERO_INTERVAL_SCANNER_SETTING"; //$NON-NLS-1$
+
+ public static class DeploymentScannerUIServerStartedListener extends UnitedServerListener {
+ public void serverChanged(ServerEvent event) {
+ IServer s = event.getServer();
+ JBossExtendedProperties props = (JBossExtendedProperties)
+ s.loadAdapter(JBossExtendedProperties.class, null);
+ if( props != null && props.getMultipleDeployFolderSupport() == ServerExtendedProperties.DEPLOYMENT_SCANNER_AS7_MANAGEMENT_SUPPORT) {
+ if( serverSwitchesToState(event, IServer.STATE_STARTED)) {
+ // Don't do any potentially long-running tasks here.
+ launchJob(s);
+ }
+ }
+ }
+
+ private void launchJob(final IServer server) {
+ new Job("Checking Deployment Scanners for server") {
+ protected IStatus run(IProgressMonitor monitor) {
+ IEclipsePreferences prefs = InstanceScope.INSTANCE.getNode(JBossServerUIPlugin.PLUGIN_ID);
+ boolean ignore = prefs.getBoolean(AS7_IGNORE_ZERO_INTERVAL_SCANNER_SETTING, false);
+ if( !ignore ) {
+ final HashMap<String, Integer> map =
+ new AS7DeploymentScannerUtility().getDeploymentScannerIntervals(server);
+ if( hasScannersAtZero(server,map)) {
+ Display.getDefault().asyncExec(new Runnable() {
+ public void run() {
+ // NOW launch the dialog
+ launchDialog(server, map);
+ }
+ });
+ }
+ }
+ return Status.OK_STATUS;
+ }
+ }.schedule();
+ }
+
+ private void launchDialog(final IServer server, HashMap<String, Integer> map) {
+ ModifyDeploymentScannerIntervalDialog d =
+ new ModifyDeploymentScannerIntervalDialog(
+ server, map,
+ Display.getDefault().getActiveShell());
+ d.open();
+
+ final ArrayList<String> changed = d.getChanged();
+ final HashMap<String, Integer> changedMap = d.getChangedMap();
+ boolean neverAskAgainSetting = d.getAskAgainSelection();
+
+ if( neverAskAgainSetting ) {
+ IEclipsePreferences prefs = InstanceScope.INSTANCE.getNode(JBossServerUIPlugin.PLUGIN_ID);
+ prefs.putBoolean(AS7_IGNORE_ZERO_INTERVAL_SCANNER_SETTING, true);
+ try {
+ prefs.flush();
+ } catch(BackingStoreException e) {
+ }
+ }
+
+ if( changed.size() > 0 ) {
+ new Job("Updating server's deployment scanners") {
+ protected IStatus run(IProgressMonitor monitor) {
+ return updateServersScanners(server, changed, changedMap);
+ }
+ }.schedule();
+ }
+ }
+
+ private IStatus updateServersScanners(IServer server, ArrayList<String> changed, HashMap<String, Integer> changedMap) {
+ AS7DeploymentScannerUtility util = new AS7DeploymentScannerUtility();
+ Iterator<String> i = changed.iterator();
+ while(i.hasNext()) {
+ String t = i.next();
+ util.updateDeploymentScannerInterval(server, t, changedMap.get(t).intValue());
+ }
+ return Status.OK_STATUS;
+ }
+
+ private boolean hasScannersAtZero(IServer server, HashMap<String, Integer> map ) {
+ // check if any have 0
+ Iterator<Integer> it = map.values().iterator();
+ while(it.hasNext()) {
+ if( it.next().intValue() <= 0) {
+ return true;
+ }
+ }
+ return false;
+ }
+ }
+
+ private IServer server;
+ private HashMap<String, Integer> map;
+ private TableViewer tv;
+ private ArrayList<String> changed = new ArrayList<String>();
+ private boolean askAgainSelected = false;
+ private String[] headings = new String[]{
+ "Scanner Name", "Scanner Interval"
+ };
+ public ModifyDeploymentScannerIntervalDialog(
+ IServer server, HashMap<String, Integer> map, Shell parentShell) {
+ super(parentShell);
+ this.map = map;
+ this.server = server;
+ }
+
+ public ArrayList<String> getChanged() {
+ return changed;
+ }
+
+ public HashMap<String, Integer> getChangedMap() {
+ return map;
+ }
+
+ public boolean getAskAgainSelection() {
+ return askAgainSelected;
+ }
+
+ protected Control createContents(Composite parent) {
+ Control c = super.createContents(parent);
+ setMessage("One or more deployment scanners have a scan-interval of 0.\nThese scanners are inactive. If this is intentional, press 'OK'.", IMessageProvider.WARNING );
+ setTitle("Inactive Deployment Scanner?");
+ getShell().setText("Inactive Deployment Scanner?");
+ return c;
+ }
+
+ protected void createButtonsForButtonBar(Composite parent) {
+ createButton(parent, IDialogConstants.OK_ID, IDialogConstants.OK_LABEL, true);
+ }
+
+ protected Control createDialogArea(Composite parent) {
+ Composite main = new Composite((Composite)super.createDialogArea(parent), SWT.NONE);
+ main.setLayoutData(new GridData(GridData.FILL_BOTH));
+ main.setLayout(new GridLayout(1,false));
+
+ // Add the TableViewer
+ tv = new TableViewer(main, SWT.FULL_SELECTION);
+ tv.setContentProvider(new ScannerContentProvider());
+ tv.setLabelProvider(new ScannerLabelProvider());
+
+ // Set up the table
+ Table table = tv.getTable();
+ table.setLayoutData(new GridData(GridData.FILL_BOTH));
+
+ TableColumn tc1 = new TableColumn(table, SWT.CENTER);
+ tc1.setText(headings[0]);
+ tc1.setWidth(150);
+ TableColumn tc2 = new TableColumn(table, SWT.CENTER);
+ tc2.setText(headings[1]);
+
+ for (int i = 0, n = table.getColumnCount(); i < n; i++) {
+ table.getColumn(i).pack();
+ }
+
+ table.setHeaderVisible(true);
+ table.setLinesVisible(true);
+
+ // Create the cell editors
+ CellEditor[] editors = new CellEditor[4];
+ editors[0] = null;
+ editors[1] = new TextCellEditor(table);
+
+ // Set the editors, cell modifier, and column properties
+ tv.setColumnProperties(headings);
+ tv.setCellModifier(new ScannerCellModifier());
+ tv.setCellEditors(editors);
+
+ tv.setInput(map);
+
+ final Button askAgain = new Button(main, SWT.CHECK);
+ askAgain.setText("Don't ask this again.");
+ askAgain.addSelectionListener(new SelectionListener() {
+ public void widgetSelected(SelectionEvent e) {
+ askAgainSelected = askAgain.getSelection();
+ }
+ public void widgetDefaultSelected(SelectionEvent e) {
+ askAgainSelected = askAgain.getSelection();
+ }
+ });
+ return main;
+ }
+
+ private class ScannerContentProvider implements IStructuredContentProvider {
+ public void dispose() {
+ }
+ public void inputChanged(Viewer viewer, Object oldInput, Object newInput) {
+ }
+ public Object[] getElements(Object inputElement) {
+ Set<String> s = map.keySet();
+ return s.toArray(new String[s.size()]);
+ }
+ }
+
+ private class ScannerLabelProvider implements ITableLabelProvider {
+ public String getColumnText(Object element, int columnIndex) {
+ if( columnIndex == 0 )
+ return element.toString();
+ return map.get(element).toString();
+ }
+ public void addListener(ILabelProviderListener listener) {
+ }
+ public void dispose() {
+ }
+ public boolean isLabelProperty(Object element, String property) {
+ return false;
+ }
+ public void removeListener(ILabelProviderListener listener) {
+ }
+ public Image getColumnImage(Object element, int columnIndex) {
+ return null;
+ }
+ }
+
+ private class ScannerCellModifier implements ICellModifier {
+
+ @Override
+ public boolean canModify(Object element, String property) {
+ return property.equals(headings[1]);
+ }
+ public Object getValue(Object element, String property) {
+ return map.get(element).toString();
+ }
+ public void modify(Object element, String property, Object value) {
+ String element2 = ((TableItem)element).getText();
+ if( !value.toString().equals(map.get(element2).toString())) {
+ if( !changed.contains(element2))
+ changed.add(element2);
+ try {
+ map.put(element2, Integer.parseInt(value.toString()));
+ tv.refresh();
+ } catch(NumberFormatException nfe) {
+ // intentionally ignore. Do NOTHING.
+ }
+ }
+ }
+ }
+}
Modified: trunk/as/plugins/org.jboss.ide.eclipse.as.ui/jbossui/org/jboss/ide/eclipse/as/ui/views/server/extensions/XPathRuntimeListener.java
===================================================================
--- trunk/as/plugins/org.jboss.ide.eclipse.as.ui/jbossui/org/jboss/ide/eclipse/as/ui/views/server/extensions/XPathRuntimeListener.java 2012-03-14 14:34:20 UTC (rev 39502)
+++ trunk/as/plugins/org.jboss.ide.eclipse.as.ui/jbossui/org/jboss/ide/eclipse/as/ui/views/server/extensions/XPathRuntimeListener.java 2012-03-14 14:37:16 UTC (rev 39503)
@@ -19,8 +19,9 @@
import org.eclipse.wst.server.core.ServerCore;
import org.jboss.ide.eclipse.as.core.extensions.descriptors.XPathCategory;
import org.jboss.ide.eclipse.as.core.extensions.descriptors.XPathModel;
+import org.jboss.ide.eclipse.as.core.server.UnitedServerListener;
-public class XPathRuntimeListener implements IRuntimeLifecycleListener {
+public class XPathRuntimeListener extends UnitedServerListener {
public static XPathRuntimeListener instance;
public static XPathRuntimeListener getDefault() {
if( instance == null )
@@ -28,14 +29,6 @@
return instance;
}
- protected XPathRuntimeListener() {
-
- }
-
- public void runtimeAdded(IRuntime runtime) {
- }
- public void runtimeRemoved(IRuntime runtime) {
- }
public void runtimeChanged(IRuntime runtime) {
IViewPart part = PlatformUI.getWorkbench().getActiveWorkbenchWindow().getActivePage().findView("org.eclipse.wst.server.ui.ServersView");
IServer[] allServers = ServerCore.getServers();
Modified: trunk/as/plugins/org.jboss.ide.eclipse.as.ui/jbossui/org/jboss/ide/eclipse/as/ui/wizards/JBInitialSelectionProvider.java
===================================================================
--- trunk/as/plugins/org.jboss.ide.eclipse.as.ui/jbossui/org/jboss/ide/eclipse/as/ui/wizards/JBInitialSelectionProvider.java 2012-03-14 14:34:20 UTC (rev 39502)
+++ trunk/as/plugins/org.jboss.ide.eclipse.as.ui/jbossui/org/jboss/ide/eclipse/as/ui/wizards/JBInitialSelectionProvider.java 2012-03-14 14:37:16 UTC (rev 39503)
@@ -10,6 +10,9 @@
******************************************************************************/
package org.jboss.ide.eclipse.as.ui.wizards;
+import java.util.ArrayList;
+import java.util.Arrays;
+
import org.eclipse.core.runtime.preferences.IEclipsePreferences;
import org.eclipse.core.runtime.preferences.InstanceScope;
import org.eclipse.wst.server.core.IServer;
@@ -32,36 +35,36 @@
}
public IServerType getInitialSelection(IServerType[] serverTypes) {
+ ArrayList<IServerType> types = new ArrayList<IServerType>();
+ types.addAll(Arrays.asList(serverTypes));
- if (serverTypes == null)
- return null;
-
// Find the last-selected one
- IEclipsePreferences prefs = new InstanceScope().getNode(JBossServerUIPlugin.PLUGIN_ID);
+ IEclipsePreferences prefs = InstanceScope.INSTANCE.getNode(JBossServerUIPlugin.PLUGIN_ID);
String last = prefs.get(LAST_SERVER_CREATED_KEY, null);
- if( last != null ) {
- IServer s = ServerCore.findServer(last);
- if( s != null ) {
- for( int i = 0; i < serverTypes.length; i++ )
- if( serverTypes[i].getId().equals(s.getServerType().getId()))
- return serverTypes[i];
- }
- }
+ IServer lastServer = last == null ? null : ServerCore.findServer(last);
+ IServerType lastType = lastServer == null ? null : lastServer.getServerType();
+ if( lastType != null && types.contains(lastType))
+ return lastType;
- // return default
- int size = serverTypes.length;
- for (int i = 0; i < size; i++) {
- if( serverTypes[i].getId().equals(IJBossToolingConstants.SERVER_AS_51))
- return serverTypes[i];
- }
+ // return default server type
+ IServerType defaultType = getDefaultServerType();
+ if( types.contains(defaultType))
+ return defaultType;
+
+ // Else, just choose whatever they give us
return serverTypes[0];
}
+
+ public IServerType getDefaultServerType() {
+ String newestJBoss = IJBossToolingConstants.SERVER_AS_71;
+ return ServerCore.findServerType(newestJBoss);
+ }
private static String LAST_SERVER_CREATED_KEY = "org.jboss.ide.eclipse.as.ui.wizards.LAST_SERVER_CREATED"; //$NON-NLS-1$
public void serverAdded(IServer server) {
if( server != null ) {
- IEclipsePreferences prefs = new InstanceScope().getNode(JBossServerUIPlugin.PLUGIN_ID);
+ IEclipsePreferences prefs = InstanceScope.INSTANCE.getNode(JBossServerUIPlugin.PLUGIN_ID);
prefs.put(LAST_SERVER_CREATED_KEY, server.getId());
try {
prefs.flush();
More information about the jbosstools-commits
mailing list