Opened 15 years ago

Closed 15 years ago

Last modified 15 years ago

#270 closed defect (fixed)

Fusion reports unreadable error message

Reported by: christinebao Owned by: madair
Priority: P2 Milestone: Future
Component: Core Version: 1.1.1
Severity: Major Keywords:
Cc: Browser: All
External ID: Operating System: All
state: Committed

Description

MapGuide customers report a severe defect that Flexible Web Layout reports unreadable error message.

For example, if the server is down while user do operation, (s)he will get a dialog with long error messages: "FATAL: xml2json: invalid XML document: MgConnectionFailedException : http://127.0.0.1/mapguide2010/mapagent/mapagent.fcgi?version=1.0.0&locale=en&clientagent=Fusion%20Viewer&operation=QUERYMAPFEATURES&session=40d3e074-3ee5-102c-8000-005056c00008_en_7F0000010AFC0AFB0AFA&mapname=Sheboygan4a3b609791c82&geometry=POLYGON((-87.730254250931%2043.73763292302%2C%20-87.730254250931%2043.737069942268%2C%20-87.729691270179%2043.737069942268%2C%20-87.729691270179%2043.73763292302%2C%20-87.730254250931%2043.73763292302))&maxFeatures=1&persist=0&selectionVariant=INTERSECTS&layerNames=&layerAttributeFilter=5 type=0".

This error message is helpless for end users. Customers report that they want a more user friendly message.

This message is from Fusion error handling code (fusion.js line 647)

            if (r.status >= 400) {
                Fusion.reportError(new Fusion.Error(Fusion.Error.FATAL, 
                  'xml2json: invalid XML document: ' + r.statusText  + " : " + r.request.url));
                return;
            }

r.statusText is exception type from MapGuide, for example MgConnectionFailedException.
r.request.url is the long URL.

To improve this:

  1. MapGuide should set the exception message instead of exception type in r.statusText. For example, r.statusText should be "Cannot establish connection" instead of "MgConnectionFailedException". These messages are localized and readable to end users.
  2. Fusion should modify the code of error handling:
                if (r.status >= 400) {
                    Fusion.reportError(new Fusion.Error(Fusion.Error.FATAL, 
                      + r.statusText));
                    return;
                }
    
    

By doing so end user can get a readable error message. For example "FATAL: Cannot establish connection"

Attachments (1)

FusionErrorMessage.patch (473 bytes ) - added by christinebao 15 years ago.

Download all attachments as: .zip

Change History (4)

by christinebao, 15 years ago

Attachment: FusionErrorMessage.patch added

comment:1 by pagameba, 15 years ago

Christine, this looks great, please go ahead and apply the patch.

comment:2 by christinebao, 15 years ago

Component: WidgetsCore
Resolution: fixed
state: NewCommitted
Status: newclosed

The patch is applied.
There are still discussion about how to solve this problem better. If better solution comes out, I'll refine the patch again.

comment:3 by christinebao, 15 years ago

New solution is:

  1. Fusion stay unchanged. When Fusion fires the error event, it will show complete error message including URL etc.
  2. MapGuide template handle the exception, parse the error message and show reasonable message to end users.

The patch is reverted. Fusion keep unchanged.

Note: See TracTickets for help on using tickets.