Author: rob.stryker(a)jboss.com
Date: 2011-11-30 01:37:04 -0500 (Wed, 30 Nov 2011)
New Revision: 36764
Modified:
trunk/as/plugins/org.jboss.ide.eclipse.as.core/jbosscore/org/jboss/ide/eclipse/as/core/server/IProvideCredentials.java
trunk/as/plugins/org.jboss.ide.eclipse.as.core/jbosscore/org/jboss/ide/eclipse/as/core/server/internal/PollThread.java
trunk/as/plugins/org.jboss.ide.eclipse.as.core/jbosscore/org/jboss/ide/eclipse/as/core/server/internal/launch/AbstractJBossStartLaunchConfiguration.java
trunk/as/plugins/org.jboss.ide.eclipse.as.core/jbosscore/org/jboss/ide/eclipse/as/core/server/v7/management/AS7ManagementDetails.java
trunk/as/plugins/org.jboss.ide.eclipse.as.core/jbosscore/org/jboss/ide/eclipse/as/core/util/PollThreadUtils.java
trunk/as/plugins/org.jboss.ide.eclipse.as.management.as7/src/org/jboss/ide/eclipse/as/internal/management/as7/AS7Manager.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.ui/jbossui/org/jboss/ide/eclipse/as/ui/Messages.properties
trunk/as/tests/org.jboss.ide.eclipse.as.test/src/org/jboss/ide/eclipse/as/test/server/JBossManagerTest.java
Log:
JBIDE-10224 - Code cleanup as per max's suggestions, added javadoc, fixed remaining
issue of unnecessary credentialing during startup, fixed innacurate text in credentialing
dialog, removed some deprecated methods
Modified:
trunk/as/plugins/org.jboss.ide.eclipse.as.core/jbosscore/org/jboss/ide/eclipse/as/core/server/IProvideCredentials.java
===================================================================
---
trunk/as/plugins/org.jboss.ide.eclipse.as.core/jbosscore/org/jboss/ide/eclipse/as/core/server/IProvideCredentials.java 2011-11-30
06:34:49 UTC (rev 36763)
+++
trunk/as/plugins/org.jboss.ide.eclipse.as.core/jbosscore/org/jboss/ide/eclipse/as/core/server/IProvideCredentials.java 2011-11-30
06:37:04 UTC (rev 36764)
@@ -25,6 +25,8 @@
/**
* Handles the fetching / requesting and subsequent delivery of these credentials
+ * This method is performed asynchronously, with a Properties object
+ * eventually being delivered to "inNeed" via inNeed.provideCredentials(etc)
*
* @param inNeed the object requiring access to the credentials
* @param requiredProperties a list of required properties
Modified:
trunk/as/plugins/org.jboss.ide.eclipse.as.core/jbosscore/org/jboss/ide/eclipse/as/core/server/internal/PollThread.java
===================================================================
---
trunk/as/plugins/org.jboss.ide.eclipse.as.core/jbosscore/org/jboss/ide/eclipse/as/core/server/internal/PollThread.java 2011-11-30
06:34:49 UTC (rev 36763)
+++
trunk/as/plugins/org.jboss.ide.eclipse.as.core/jbosscore/org/jboss/ide/eclipse/as/core/server/internal/PollThread.java 2011-11-30
06:37:04 UTC (rev 36764)
@@ -49,22 +49,10 @@
private boolean expectedState, abort, stateStartedOrStopped;
private IServerStatePoller poller;
private String abortMessage;
- @Deprecated
- private DelegatingServerBehavior behavior;
private String pollerId;
private IPollResultListener listener;
private IServer server;
- @Deprecated
- public PollThread(boolean expectedState, IServerStatePoller poller,
DelegatingServerBehavior behavior) {
- super(getThreadName(behavior.getServer()));
- this.expectedState = expectedState;
- this.behavior = behavior;
- this.server = behavior.getServer();
- this.poller = poller;
- this.abort = false;
- }
-
public PollThread(boolean expectedState, IServerStatePoller poller, IPollResultListener
listener, IServer server) {
super(getThreadName(server));
this.expectedState = expectedState;
@@ -96,11 +84,10 @@
}
public void run() {
- // Poller not found
+ // Poller not found. Abort
if (poller == null) {
alertEventLogStarting();
alertPollerNotFound();
-// alertBehavior(!expectedState);
alertListener(!expectedState);
return;
}
@@ -130,7 +117,6 @@
poller.cancel(IServerStatePoller.CANCEL);
poller.cleanup();
alertEventLogPollerException(e);
-// alertBehavior(!expectedState);
alertListener(!expectedState);
return;
} catch (RequiresInfoException rie) {
@@ -148,64 +134,73 @@
ServerLogger.getDefault().log(server, s);
}
- // we stopped. Did we abort?
if (stateStartedOrStopped) {
- int state = server.getServerState();
- boolean success = false;
- if (expectedState == IServerStatePoller.SERVER_UP)
- success = state == IServer.STATE_STARTED;
- else
- success = state == IServer.STATE_STOPPED;
-
- poller.cancel(success ? IServerStatePoller.SUCCESS
- : IServerStatePoller.FAILED);
- poller.cleanup();
+ // we stopped. Did we abort?
+ handleUncertainTermination();
} else if (abort) {
+ // Definite abort
poller.cleanup();
alertEventLogAbort();
+ } else if (done) {
+ // the poller has an answer
+ handlePollerHasAnswer();
} else {
- boolean currentState = !expectedState;
- boolean finalAlert = true;
- if (done) {
- // the poller has an answer
- try {
- currentState = poller.getState();
- poller.cleanup();
- alertListener(currentState);
- if (finalAlert) {
- alertEventLog(currentState);
- }
- } catch (PollingException pe) {
- // abort and put the message in event log
- poller.cancel(IServerStatePoller.CANCEL);
- poller.cleanup();
- alertEventLogPollerException(pe);
- alertListener(!expectedState);
- return;
- } catch (RequiresInfoException rie) {
- // You don't have an answer... liar!
- }
- } else {
- // we timed out. get response from preferences
- poller.cancel(IServerStatePoller.TIMEOUT_REACHED);
- int behavior = poller.getTimeoutBehavior();
- poller.cleanup();
- alertEventLogTimeout();
- if (behavior != IServerStatePoller.TIMEOUT_BEHAVIOR_IGNORE) {
- // xnor;
- // if behavior is to succeed and we're expected to go up,
- // we're up
- // if behavior is to fail and we're expecting to be down,
- // we're up (failed to shutdown)
- // all other cases, we're down.
- currentState = (expectedState == (behavior ==
IServerStatePoller.TIMEOUT_BEHAVIOR_SUCCEED));
-// alertBehavior(currentState);
- alertListener(currentState);
- }
+ // we timed out. get response from preferences
+ handleTimeoutTermination();
+ }
+ }
+
+ private void handlePollerHasAnswer() {
+ boolean finalAlert = true;
+ try {
+ boolean currentState = poller.getState();
+ poller.cleanup();
+ alertListener(currentState);
+ if (finalAlert) {
+ alertEventLog(currentState);
}
+ } catch (PollingException pe) {
+ // Poller's answer was exception: abort and put the message in event log
+ poller.cancel(IServerStatePoller.CANCEL);
+ poller.cleanup();
+ alertEventLogPollerException(pe);
+ alertListener(!expectedState);
+ return;
+ } catch (RequiresInfoException rie) {
+ // You don't have an answer... liar!
}
}
+
+ private void handleTimeoutTermination() {
+ poller.cancel(IServerStatePoller.TIMEOUT_REACHED);
+ int behavior = poller.getTimeoutBehavior();
+ poller.cleanup();
+ alertEventLogTimeout();
+ if (behavior != IServerStatePoller.TIMEOUT_BEHAVIOR_IGNORE) {
+ // xnor;
+ // if behavior is to succeed and we're expected to go up,
+ // we're up
+ // if behavior is to fail and we're expecting to be down,
+ // we're up (failed to shutdown)
+ // all other cases, we're down.
+ boolean currentState = (expectedState == (behavior ==
IServerStatePoller.TIMEOUT_BEHAVIOR_SUCCEED));
+ alertListener(currentState);
+ }
+ }
+
+ private void handleUncertainTermination() {
+ int state = server.getServerState();
+ boolean success = false;
+ if (expectedState == IServerStatePoller.SERVER_UP)
+ success = state == IServer.STATE_STARTED;
+ else
+ success = state == IServer.STATE_STOPPED;
+ poller.cancel(success ? IServerStatePoller.SUCCESS
+ : IServerStatePoller.FAILED);
+ poller.cleanup();
+ }
+
private boolean timeoutReached(long startTime, int maxWait) {
return System.currentTimeMillis() >= (startTime + maxWait);
}
Modified:
trunk/as/plugins/org.jboss.ide.eclipse.as.core/jbosscore/org/jboss/ide/eclipse/as/core/server/internal/launch/AbstractJBossStartLaunchConfiguration.java
===================================================================
---
trunk/as/plugins/org.jboss.ide.eclipse.as.core/jbosscore/org/jboss/ide/eclipse/as/core/server/internal/launch/AbstractJBossStartLaunchConfiguration.java 2011-11-30
06:34:49 UTC (rev 36763)
+++
trunk/as/plugins/org.jboss.ide.eclipse.as.core/jbosscore/org/jboss/ide/eclipse/as/core/server/internal/launch/AbstractJBossStartLaunchConfiguration.java 2011-11-30
06:37:04 UTC (rev 36764)
@@ -112,7 +112,6 @@
}
Trace.trace(Trace.STRING_FINEST, "There is no handler available to prompt the
user. The server will be set to started automatically. "); //$NON-NLS-1$
// force server to started mode
- jbsBehavior.setServerStarting();
jbsBehavior.setServerStarted();
return false;
}
Modified:
trunk/as/plugins/org.jboss.ide.eclipse.as.core/jbosscore/org/jboss/ide/eclipse/as/core/server/v7/management/AS7ManagementDetails.java
===================================================================
---
trunk/as/plugins/org.jboss.ide.eclipse.as.core/jbosscore/org/jboss/ide/eclipse/as/core/server/v7/management/AS7ManagementDetails.java 2011-11-30
06:34:49 UTC (rev 36763)
+++
trunk/as/plugins/org.jboss.ide.eclipse.as.core/jbosscore/org/jboss/ide/eclipse/as/core/server/v7/management/AS7ManagementDetails.java 2011-11-30
06:37:04 UTC (rev 36764)
@@ -12,38 +12,25 @@
import java.util.ArrayList;
import java.util.Arrays;
-import java.util.List;
import java.util.Properties;
import org.eclipse.core.runtime.NullProgressMonitor;
import org.eclipse.wst.server.core.IServer;
-import org.jboss.ide.eclipse.as.core.ExtensionManager;
-import org.jboss.ide.eclipse.as.core.server.INeedCredentials;
-import org.jboss.ide.eclipse.as.core.server.IProvideCredentials;
import org.jboss.ide.eclipse.as.core.server.IServerProvider;
import org.jboss.ide.eclipse.as.core.server.internal.v7.JBoss7Server;
+import org.jboss.ide.eclipse.as.core.util.PollThreadUtils;
public class AS7ManagementDetails implements IServerProvider {
private IServer server;
- private String hardHost = null;
- private int hardPort = -1;
public AS7ManagementDetails(IServer server) {
this.server = server;
}
- public AS7ManagementDetails(String host, int port) {
- this.hardHost = host;
- this.hardPort = port;
- }
-
public String getHost() {
- return hardHost == null ? server.getHost() : hardHost;
+ return server.getHost();
}
public int getManagementPort() {
- if( hardPort != -1 )
- return hardPort;
-
JBoss7Server jbossServer = (JBoss7Server) server.loadAdapter(JBoss7Server.class, new
NullProgressMonitor());
if( jbossServer != null )
return jbossServer.getManagementPort();
@@ -61,47 +48,19 @@
public String[] handleCallbacks(String[] prompts) throws UnsupportedOperationException
{
ArrayList<String> requiredProperties = new ArrayList<String>();
requiredProperties.addAll(Arrays.asList(prompts));
- IProvideCredentials handler = ExtensionManager
- .getDefault().getFirstCredentialProvider(this, requiredProperties);
- if( handler == null )
- throw new UnsupportedOperationException();
- final Properties[] returnedProps = new Properties[1];
- final Boolean[] gotProps = new Boolean[1];
- returnedProps[0] = null;
- gotProps[0] = false;
-
- INeedCredentials needs = new INeedCredentials() {
- public IServer getServer() {
- return AS7ManagementDetails.this.getServer();
- }
- public List<String> getRequiredProperties() {
- // ignore
- return null;
- }
- public void provideCredentials(Properties credentials) {
- returnedProps[0] = credentials;
- gotProps[0] = true;
- }
- };
- handler.handle(needs, requiredProperties);
+ Properties props = PollThreadUtils.requestCredentialsSynchronous(this,
requiredProperties);
- while( !gotProps[0]) {
- try {
- Thread.sleep(100);
- } catch(InterruptedException ie) {
- // ignore
- }
- }
-
- if( returnedProps[0] == null )
- return new String[0];
+ if( props == null )
+ return null;
+ // Fit the returned properties in the same order as the request prompts
String[] rets = new String[prompts.length];
for( int i = 0; i < rets.length; i++ ) {
- rets[i] = (String)returnedProps[0].get(prompts[i]);
+ rets[i] = (String)props.get(prompts[i]);
}
return rets;
}
+
public IServer getServer() {
return server;
}
Modified:
trunk/as/plugins/org.jboss.ide.eclipse.as.core/jbosscore/org/jboss/ide/eclipse/as/core/util/PollThreadUtils.java
===================================================================
---
trunk/as/plugins/org.jboss.ide.eclipse.as.core/jbosscore/org/jboss/ide/eclipse/as/core/util/PollThreadUtils.java 2011-11-30
06:34:49 UTC (rev 36763)
+++
trunk/as/plugins/org.jboss.ide.eclipse.as.core/jbosscore/org/jboss/ide/eclipse/as/core/util/PollThreadUtils.java 2011-11-30
06:37:04 UTC (rev 36764)
@@ -10,15 +10,21 @@
******************************************************************************/
package org.jboss.ide.eclipse.as.core.util;
+import java.util.List;
+import java.util.Properties;
+
import org.eclipse.wst.server.core.IServer;
import org.jboss.ide.eclipse.as.core.ExtensionManager;
+import org.jboss.ide.eclipse.as.core.server.INeedCredentials;
+import org.jboss.ide.eclipse.as.core.server.IProvideCredentials;
+import org.jboss.ide.eclipse.as.core.server.IServerProvider;
import org.jboss.ide.eclipse.as.core.server.IServerStatePoller;
-import org.jboss.ide.eclipse.as.core.server.internal.DelegatingServerBehavior;
import org.jboss.ide.eclipse.as.core.server.internal.IPollResultListener;
import org.jboss.ide.eclipse.as.core.server.internal.JBossServer;
import org.jboss.ide.eclipse.as.core.server.internal.PollThread;
import org.jboss.ide.eclipse.as.core.server.internal.ServerAttributeHelper;
import org.jboss.ide.eclipse.as.core.server.internal.ServerStatePollerType;
+import org.jboss.ide.eclipse.as.core.server.v7.management.AS7ManagementDetails;
/**
* @author Rob Stryker
@@ -62,19 +68,6 @@
* Returns the poller for the given poller id.
*
* @param pollerId the id of the poller to use
- * @param expectedState
- * @param server
- * @return
- */
- @Deprecated
- public static IServerStatePoller getPoller(String pollerId, boolean expectedState,
IServer server) {
- return getPoller(pollerId);
- }
-
- /**
- * Returns the poller for the given poller id.
- *
- * @param pollerId the id of the poller to use
* @return the poller for the given id
*/
public static IServerStatePoller getPoller(String pollerId) {
@@ -112,43 +105,9 @@
}
}
- /**
- * Stops the given poll thread and creates a new poll thread for the given
- * expected state and server behavior.
- *
- * @param expectedState the state to wait for
- * @param pollThread the poll thread to stop
- * @param behaviour the server behavior to use.
- * @return
- * @return the new poll thread
- */
- @Deprecated
- public static PollThread pollServer(final boolean expectedState, PollThread
currentPollThread, DelegatingServerBehavior behaviour) {
- IServerStatePoller poller = PollThreadUtils.getPoller(expectedState,
behaviour.getServer());
- return pollServer(expectedState, poller, currentPollThread, behaviour);
- }
/**
* Stops the given poll thread and creates a new poll thread for the given
- * expected state, poller and server behavior.
- *
- * @param expectedState the state to wait for
- * @param poller the poller to use to wait for the expected state
- * @param pollThread the poll thread to stop
- * @param behaviour the server behavior to use.
- * @return the new poll thread
- */
- @Deprecated
- public static PollThread pollServer(boolean expectedState, IServerStatePoller poller,
PollThread currentPollThread,
- DelegatingServerBehavior behaviour) {
- stopPolling(currentPollThread);
- PollThread newPollThread = new PollThread(expectedState, poller, behaviour);
- newPollThread.start();
- return newPollThread;
- }
-
- /**
- * Stops the given poll thread and creates a new poll thread for the given
* expected state, poller, result listener and server.
*
* @param expectedState the state to wait for
@@ -164,5 +123,67 @@
newPollThread.start();
return newPollThread;
}
+
+ /**
+ * The credential provider is alerted that credentials are needed.
+ * The response may come at any time.
+ *
+ * @param requester
+ * @param requiredProps
+ */
+ public static void requestCredentialsAsynch(INeedCredentials requester,
List<String> requiredProps) {
+ IProvideCredentials provider = ExtensionManager.getDefault()
+ .getFirstCredentialProvider(requester, requiredProps);
+ provider.handle(requester, requiredProps);
+ }
+
+ /**
+ * The credential provider is alerted that credentials are needed.
+ * The thread is then delayed until some result is provided.
+ *
+ * @param requester
+ * @param requiredProps
+ * @return
+ */
+ public static Properties requestCredentialsSynchronous(final IServerProvider requester,
List<String> requiredProps) {
+ IProvideCredentials provider = ExtensionManager.getDefault()
+ .getFirstCredentialProvider(requester, requiredProps);
+ final Properties[] returnedProps = new Properties[1];
+ final Boolean[] gotProps = new Boolean[1];
+ returnedProps[0] = null;
+ gotProps[0] = false;
+
+ /*
+ * This dummy requirer will set variables when the credentials finally arrive.
+ * Then this synchronous method can finish.
+ */
+
+ INeedCredentials dummyRequirer = new INeedCredentials() {
+ public IServer getServer() {
+ return requester.getServer();
+ }
+ public List<String> getRequiredProperties() {
+ // ignore
+ return null;
+ }
+ public void provideCredentials(Properties credentials) {
+ returnedProps[0] = credentials;
+ // necessary to have a gotProps since a cancelation on the UI may
+ // set null as the returned properties
+ gotProps[0] = true;
+ }
+ };
+
+ provider.handle(dummyRequirer, requiredProps);
+
+ while( !gotProps[0]) {
+ try {
+ Thread.sleep(100);
+ } catch(InterruptedException ie) {
+ // ignore
+ }
+ }
+ return returnedProps[0];
+ }
}
Modified:
trunk/as/plugins/org.jboss.ide.eclipse.as.management.as7/src/org/jboss/ide/eclipse/as/internal/management/as7/AS7Manager.java
===================================================================
---
trunk/as/plugins/org.jboss.ide.eclipse.as.management.as7/src/org/jboss/ide/eclipse/as/internal/management/as7/AS7Manager.java 2011-11-30
06:34:49 UTC (rev 36763)
+++
trunk/as/plugins/org.jboss.ide.eclipse.as.management.as7/src/org/jboss/ide/eclipse/as/internal/management/as7/AS7Manager.java 2011-11-30
06:37:04 UTC (rev 36764)
@@ -60,15 +60,6 @@
private ServerDeploymentManager manager;
private AS7ManagementDetails details;
- @Deprecated
- public AS7Manager(String host) throws UnknownHostException {
- this(new AS7ManagementDetails(host, MGMT_PORT));
- }
-
- public AS7Manager(String host, int port) throws UnknownHostException {
- this(new AS7ManagementDetails(host, port));
- }
-
public AS7Manager(AS7ManagementDetails details) throws UnknownHostException {
this.details = details;
this.client = ModelControllerClient.Factory.create(details.getHost(),
details.getManagementPort());
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 2011-11-30
06:34:49 UTC (rev 36763)
+++
trunk/as/plugins/org.jboss.ide.eclipse.as.management.as71/src/org/jboss/ide/eclipse/as/internal/management/as71/AS71Manager.java 2011-11-30
06:37:04 UTC (rev 36764)
@@ -67,11 +67,6 @@
private ModelControllerClient client;
private ServerDeploymentManager manager;
private AS7ManagementDetails details;
-
- @Deprecated
- public AS71Manager(String host) throws UnknownHostException {
- this(new AS7ManagementDetails(host, MGMT_PORT));
- }
public AS71Manager(AS7ManagementDetails details) throws UnknownHostException {
this.details = details;
@@ -108,8 +103,10 @@
}
String[] results = details.handleCallbacks(new String[] { name.getPrompt(),
pass.getPrompt()});
- name.setName(results[0]);
- pass.setPassword(results[1].toCharArray());
+ if( results != null && results.length >= 2 ) {
+ name.setName(results[0]);
+ pass.setPassword(results[1].toCharArray());
+ }
}
}
Modified:
trunk/as/plugins/org.jboss.ide.eclipse.as.ui/jbossui/org/jboss/ide/eclipse/as/ui/Messages.properties
===================================================================
---
trunk/as/plugins/org.jboss.ide.eclipse.as.ui/jbossui/org/jboss/ide/eclipse/as/ui/Messages.properties 2011-11-30
06:34:49 UTC (rev 36763)
+++
trunk/as/plugins/org.jboss.ide.eclipse.as.ui/jbossui/org/jboss/ide/eclipse/as/ui/Messages.properties 2011-11-30
06:37:04 UTC (rev 36764)
@@ -56,7 +56,7 @@
sswf_Title=Create a new Local Deployer Server
sswf_BaseName=Local Deployer
-credentials_warning=Your server is responding to JMX inquiries with a Security
Exception.\nYou can try entering new credentials below, or you can double-click\non your
server and verify that the host, JNDI port, username, and password are accurate.\nYou can
also click "ignore" below to begin working with your server,\nbut deploying to
and stopping the server may not function properly.
+credentials_warning=Your server is responding to management inquiries with a Security
Exception.\nYou can enter new credentials below, or you can double-click on your
server\nand verify that the host, relevant ports, username, and password are
accurate.\nYou can also click "ignore" below to begin working with your
server,\nbut deploying to, and stopping, the server may not function properly.
credentials_save=Save these credentials?
#Server View (server and categories, properties)
Modified:
trunk/as/tests/org.jboss.ide.eclipse.as.test/src/org/jboss/ide/eclipse/as/test/server/JBossManagerTest.java
===================================================================
---
trunk/as/tests/org.jboss.ide.eclipse.as.test/src/org/jboss/ide/eclipse/as/test/server/JBossManagerTest.java 2011-11-30
06:34:49 UTC (rev 36763)
+++
trunk/as/tests/org.jboss.ide.eclipse.as.test/src/org/jboss/ide/eclipse/as/test/server/JBossManagerTest.java 2011-11-30
06:37:04 UTC (rev 36764)
@@ -61,7 +61,7 @@
managerProxy.open();
IJBoss7ManagerService manager = managerProxy.getService();
assertNotNull(manager);
- manager.getDeploymentState(new AS7ManagementDetails("fake", 4242),
"fake");
+ manager.getDeploymentState(new MockAS7ManagementDetails("fake", 4242),
"fake");
}
private void registerFakeASService(String version) {
@@ -115,4 +115,24 @@
public void init() throws Exception {
}
}
+
+ public static class MockAS7ManagementDetails extends AS7ManagementDetails {
+ private String host;
+ private int port;
+ public MockAS7ManagementDetails(String host, int port) {
+ super(null);
+ this.host = host;
+ this.port = port;
+ }
+ public String getHost() {
+ return host;
+ }
+
+ public int getManagementPort() {
+ return port;
+ }
+ public String[] handleCallbacks(String[] prompts) throws UnsupportedOperationException
{
+ return new String[]{};
+ }
+ }
}