Revision: 3746
Author: [email protected]
Date: Fri Jul 16 08:41:08 2010
Log: Added an exception to the network conflict resolver's update exception
method. This allows other listeners to check the type of exception to look
for access denied exceptions instead of generic failures connecting to the
server.
http://code.google.com/p/power-architect/source/detail?r=3746
Modified:
/trunk/src/main/java/ca/sqlpower/architect/enterprise/NetworkConflictResolver.java
/trunk/src/main/java/ca/sqlpower/architect/swingui/ArchitectSwingSessionContextImpl.java
/trunk/src/main/java/ca/sqlpower/architect/swingui/ArchitectSwingSessionImpl.java
/trunk/src/main/java/ca/sqlpower/architect/swingui/PlayPenComponent.java
/trunk/src/main/java/ca/sqlpower/architect/swingui/enterprise/ServerProjectsManagerPanel.java
=======================================
---
/trunk/src/main/java/ca/sqlpower/architect/enterprise/NetworkConflictResolver.java
Wed Jun 23 13:50:03 2010
+++
/trunk/src/main/java/ca/sqlpower/architect/enterprise/NetworkConflictResolver.java
Fri Jul 16 08:41:08 2010
@@ -166,7 +166,7 @@
} catch (AccessDeniedException e) {
List<UpdateListener> listenersToRemove = new
ArrayList<UpdateListener>();
for (UpdateListener listener : updateListeners) {
- if
(listener.updateException(NetworkConflictResolver.this)) {
+ if
(listener.updateException(NetworkConflictResolver.this, e)) {
listenersToRemove.add(listener);
}
}
@@ -324,11 +324,11 @@
if (!postingJSON.get()) {
decodeMessage(json.getString("data"),
json.getInt("currentRevision"));
}
- } catch (AccessDeniedException ade) {
+ } catch (AccessDeniedException e) {
interrupt();
List<UpdateListener> listenersToRemove =
new ArrayList<UpdateListener>();
for (UpdateListener listener :
updateListeners) {
- if
(listener.updateException(NetworkConflictResolver.this)) {
+ if
(listener.updateException(NetworkConflictResolver.this, e)) {
listenersToRemove.add(listener);
}
}
@@ -342,14 +342,14 @@
UserPromptResponse.OK,
"OK", "OK").promptUser("");
} else {
- throw ade;
+ throw e;
}
} catch (Exception e) {
// TODO: Discard corrupt workspace and
start again from scratch.
interrupt();
List<UpdateListener> listenersToRemove =
new ArrayList<UpdateListener>();
for (UpdateListener listener :
updateListeners) {
- if
(listener.updateException(NetworkConflictResolver.this)) {
+ if
(listener.updateException(NetworkConflictResolver.this, e)) {
listenersToRemove.add(listener);
}
}
@@ -977,7 +977,16 @@
* listener list and should not receive any more calls
*/
public boolean updatePerformed(NetworkConflictResolver resolver);
- public boolean updateException(NetworkConflictResolver resolver);
+
+ /**
+ * Called when an exception is thrown from the server on an
update. One
+ * special exception passed in this call is the
+ * {...@link AccessDeniedException}. If the exception is an
+ * {...@link AccessDeniedException} then the user does not have valid
+ * permissions to do the operation they were attempting and the
+ * exception is not a fatal one.
+ */
+ public boolean updateException(NetworkConflictResolver resolver,
Throwable t);
/**
* Notifies listeners that the workspace was deleted.
=======================================
---
/trunk/src/main/java/ca/sqlpower/architect/swingui/ArchitectSwingSessionContextImpl.java
Fri Jul 16 08:37:22 2010
+++
/trunk/src/main/java/ca/sqlpower/architect/swingui/ArchitectSwingSessionContextImpl.java
Fri Jul 16 08:41:08 2010
@@ -253,7 +253,7 @@
return false;
}
- public boolean updateException(NetworkConflictResolver
resolver) {
+ public boolean updateException(NetworkConflictResolver
resolver, Throwable t) {
if (loading) {
swingSession.getUndoManager().setLoading(false);
loading = false;
@@ -318,12 +318,16 @@
newSecuritySession.getUpdater().addListener(new
NetworkConflictResolver.UpdateListener() {
public boolean updatePerformed(NetworkConflictResolver
resolver) {return false;}
- public boolean updateException(NetworkConflictResolver
resolver) {
+ public boolean updateException(NetworkConflictResolver
resolver, Throwable t) {
+ if (t instanceof AccessDeniedException) return
false;
+
newSecuritySession.close();
ArchitectClientSideSession.getSecuritySessions().remove(serverInfo.getServerAddress());
+ final String errorMessage = "Error accessing
security session.";
+ logger.error(errorMessage, t);
+
SPSUtils.showExceptionDialogNoReport(frames.get(0), errorMessage, t);
//If you try to create a new security session here
because creating the first
//one failed the same error message can continue
to repeat.
- //TODO May want to warn the user with a nicer
dialog.
return true;
}
=======================================
---
/trunk/src/main/java/ca/sqlpower/architect/swingui/ArchitectSwingSessionImpl.java
Mon Jul 12 14:17:47 2010
+++
/trunk/src/main/java/ca/sqlpower/architect/swingui/ArchitectSwingSessionImpl.java
Fri Jul 16 08:41:08 2010
@@ -465,7 +465,7 @@
Class<?> osxAdapter =
ArchitectSwingSessionImpl.class.getClassLoader().loadClass("ca.sqlpower.architect.swingui.OSXAdapter");
//$NON-NLS-1$
// The main registration method. Takes quitAction,
prefsAction, aboutAction.
- Class[] defArgs = { Action.class, Action.class,
Action.class };
+ Class<?>[] defArgs = { Action.class, Action.class,
Action.class };
Method registerMethod =
osxAdapter.getDeclaredMethod("registerMacOSXApplication", defArgs);
//$NON-NLS-1$
Object[] args = { exitAction, prefAction, aboutAction };
registerMethod.invoke(osxAdapter, args);
@@ -1201,7 +1201,7 @@
return true; // true indicates that the listener
should be removed
}
- public boolean updateException(NetworkConflictResolver
resolver) {return false;}
+ public boolean updateException(NetworkConflictResolver
resolver, Throwable t) {return false;}
public void preUpdatePerformed(NetworkConflictResolver
resolver) {
//do nothing
=======================================
---
/trunk/src/main/java/ca/sqlpower/architect/swingui/PlayPenComponent.java
Fri Jul 16 07:18:35 2010
+++
/trunk/src/main/java/ca/sqlpower/architect/swingui/PlayPenComponent.java
Fri Jul 16 08:41:08 2010
@@ -105,7 +105,7 @@
return true;
}
- public boolean updateException(NetworkConflictResolver resolver)
{return false;}
+ public boolean updateException(NetworkConflictResolver resolver,
Throwable t) {return false;}
public void preUpdatePerformed(NetworkConflictResolver resolver) {
//do nothing
=======================================
---
/trunk/src/main/java/ca/sqlpower/architect/swingui/enterprise/ServerProjectsManagerPanel.java
Mon Jul 12 08:21:11 2010
+++
/trunk/src/main/java/ca/sqlpower/architect/swingui/enterprise/ServerProjectsManagerPanel.java
Fri Jul 16 08:41:08 2010
@@ -144,7 +144,7 @@
return true;
}
- public boolean
updateException(NetworkConflictResolver resolver) {
+ public boolean
updateException(NetworkConflictResolver resolver, Throwable t) {
return false;
}