Author: rob.stryker(a)jboss.com
Date: 2011-11-30 06:31:46 -0500 (Wed, 30 Nov 2011)
New Revision: 36774
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/util/PollThreadUtils.java
trunk/as/plugins/org.jboss.ide.eclipse.as.ui/jbossui/org/jboss/ide/eclipse/as/ui/launch/UserPassCredentialProvider.java
Log:
JBIDE-10283 - code cleanup
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
10:54:34 UTC (rev 36773)
+++
trunk/as/plugins/org.jboss.ide.eclipse.as.core/jbosscore/org/jboss/ide/eclipse/as/core/server/IProvideCredentials.java 2011-11-30
11:31:46 UTC (rev 36774)
@@ -25,8 +25,6 @@
/**
* 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
10:54:34 UTC (rev 36773)
+++
trunk/as/plugins/org.jboss.ide.eclipse.as.core/jbosscore/org/jboss/ide/eclipse/as/core/server/internal/PollThread.java 2011-11-30
11:31:46 UTC (rev 36774)
@@ -23,6 +23,7 @@
import org.jboss.ide.eclipse.as.core.server.IServerStatePoller;
import org.jboss.ide.eclipse.as.core.server.IServerStatePoller.PollingException;
import org.jboss.ide.eclipse.as.core.server.IServerStatePoller.RequiresInfoException;
+import org.jboss.ide.eclipse.as.core.util.PollThreadUtils;
/**
*
@@ -303,9 +304,6 @@
}
public static void fireRequestCredentials(boolean expectedState, IServerStatePoller
poller) {
- IProvideCredentials handler = ExtensionManager
- .getDefault().getFirstCredentialProvider(poller,
- poller.getRequiredProperties());
- handler.handle(poller, poller.getRequiredProperties());
+ PollThreadUtils.requestCredentialsAsynch(poller, poller.getRequiredProperties());
}
}
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
10:54:34 UTC (rev 36773)
+++
trunk/as/plugins/org.jboss.ide.eclipse.as.core/jbosscore/org/jboss/ide/eclipse/as/core/util/PollThreadUtils.java 2011-11-30
11:31:46 UTC (rev 36774)
@@ -131,59 +131,69 @@
* @param requester
* @param requiredProps
*/
- public static void requestCredentialsAsynch(INeedCredentials requester,
List<String> requiredProps) {
+ public static void requestCredentialsAsynch(final INeedCredentials requester, final
List<String> requiredProps) {
+ new Thread() {
+ public void run() {
+ requestCredentialsSynchronous(requester, requiredProps);
+ }
+ }.start();
+ }
+
+ /**
+ * The credential provider is alerted that credentials are needed.
+ * The calling thread will block until this method is finished.
+ * The requester will be told of its credentials by the provider.
+ *
+ * @param requester
+ * @param requiredProps
+ * @return
+ */
+
+ public static void requestCredentialsSynchronous(final 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.
+ * The calling thread will block until this method is finished.
+ * A dummy requester is created, which will receive the properties.
+ * It will then return them to the caller directly.
*
* @param requester
* @param requiredProps
- * @return
+ * @return Properties
*/
- public static Properties requestCredentialsSynchronous(final IServerProvider requester,
List<String> requiredProps) {
+ public static Properties requestCredentialsSynchronous(final IServerProvider server,
List<String> requiredProps) {
+ NeedCredentials requester = new NeedCredentials(server.getServer(), 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
- }
+ provider.handle(requester, requiredProps);
+ return requester.getReturnedCredentials();
+ }
+
+ public static class NeedCredentials implements INeedCredentials {
+ private IServer server;
+ private List<String> requiredProps;
+ private Properties returnedCredentials;
+ public NeedCredentials(IServer server, List<String> requiredProps) {
+ this.server = server;
+ this.requiredProps = requiredProps;
}
- return returnedProps[0];
+ public IServer getServer() {
+ return server;
+ }
+ public List<String> getRequiredProperties() {
+ return requiredProps;
+ }
+ public void provideCredentials(Properties credentials) {
+ returnedCredentials = credentials;
+ }
+ public Properties getReturnedCredentials() {
+ return returnedCredentials;
+ }
}
}
Modified:
trunk/as/plugins/org.jboss.ide.eclipse.as.ui/jbossui/org/jboss/ide/eclipse/as/ui/launch/UserPassCredentialProvider.java
===================================================================
---
trunk/as/plugins/org.jboss.ide.eclipse.as.ui/jbossui/org/jboss/ide/eclipse/as/ui/launch/UserPassCredentialProvider.java 2011-11-30
10:54:34 UTC (rev 36773)
+++
trunk/as/plugins/org.jboss.ide.eclipse.as.ui/jbossui/org/jboss/ide/eclipse/as/ui/launch/UserPassCredentialProvider.java 2011-11-30
11:31:46 UTC (rev 36774)
@@ -52,7 +52,7 @@
*/
public void handle(final INeedCredentials inNeed,
final List<String> requiredProperties) {
- Display.getDefault().asyncExec(new Runnable() {
+ Display.getDefault().syncExec(new Runnable() {
public void run() {
IServer server = inNeed.getServer();
IServerWorkingCopy copy = server.createWorkingCopy();
Show replies by date