Skip to content

Commit 96a72c0

Browse files
Move try/catch to catch any error at parseInputJSonMessage function. (#542)
* Move try/catch to catch any error at parseInputJSonMessage function. * Catch JSONException when the json message is invalid.
1 parent 1d49eef commit 96a72c0

File tree

1 file changed

+38
-46
lines changed

1 file changed

+38
-46
lines changed

java/src/main/java/com/genexus/webpanels/GXWebPanel.java

Lines changed: 38 additions & 46 deletions
Original file line numberDiff line numberDiff line change
@@ -514,62 +514,55 @@ protected class DynAjaxEvent {
514514
HashSet<String> inParmsMetadataHash;
515515
boolean anyError;
516516

517-
private void parseInputJSonMessage(JSONObject objMessage, GXWebPanel targetObj) throws JSONException {
518-
if (objMessage.has("parms"))
519-
inParmsValues = objMessage.getJSONArray("parms");
520-
if (objMessage.has("hsh"))
521-
inHashValues = objMessage.getJSONArray("hsh");
522-
if (objMessage.has("events"))
523-
events = objMessage.getJSONArray("events");
524-
if (objMessage.has("cmpCtx"))
525-
cmpContext = objMessage.getString("cmpCtx");
526-
this.targetObj = targetObj;
527-
try
528-
{
529-
String pckgName = (objMessage.has("pkgName") && objMessage.getString("pkgName").length() > 0)? objMessage.getString("pkgName") + ".": "";
530-
if (objMessage.has("MPage") && objMessage.getBoolean("MPage"))
531-
{
532-
if (objMessage.has("objClass"))
533-
{
517+
private void parseInputJSonMessage(String jsonMessage, GXWebPanel targetObj) throws JSONException {
518+
try {
519+
JSONObject objMessage = new JSONObject(jsonMessage);
520+
if (objMessage.has("parms"))
521+
inParmsValues = objMessage.getJSONArray("parms");
522+
if (objMessage.has("hsh"))
523+
inHashValues = objMessage.getJSONArray("hsh");
524+
if (objMessage.has("events"))
525+
events = objMessage.getJSONArray("events");
526+
if (objMessage.has("cmpCtx"))
527+
cmpContext = objMessage.getString("cmpCtx");
528+
this.targetObj = targetObj;
529+
String pckgName = (objMessage.has("pkgName") && objMessage.getString("pkgName").length() > 0) ? objMessage.getString("pkgName") + "." : "";
530+
if (objMessage.has("MPage") && objMessage.getBoolean("MPage")) {
531+
if (objMessage.has("objClass")) {
534532
String fullClassName = pckgName + objMessage.getString("objClass") + "_impl";
535533
Class<?> webComponentClass = targetObj.getClass().forName(fullClassName);
536-
GXWebPanel webComponent = (GXWebPanel) webComponentClass.getConstructor(new Class<?>[] { int.class, ModelContext.class }).newInstance(new Object[] {new Integer(remoteHandle), context});
534+
GXWebPanel webComponent = (GXWebPanel) webComponentClass.getConstructor(new Class<?>[]{int.class, ModelContext.class}).newInstance(new Object[]{new Integer(remoteHandle), context});
537535
this.targetObj = webComponent;
538536
}
539-
}
540-
else
541-
{
542-
if (!cmpContext.equals("") && objMessage.has("objClass"))
543-
{
537+
} else {
538+
if (!cmpContext.equals("") && objMessage.has("objClass")) {
544539
String fullClassName = pckgName + objMessage.getString("objClass") + "_impl";
545540
GXWebComponent webComponent = WebUtils.getWebComponent(getClass(), fullClassName, remoteHandle, context);
546541
this.targetObj = webComponent;
547542
}
548543
}
549-
}
550-
catch (Exception e)
551-
{
544+
if (objMessage.has("grids"))
545+
parseGridsDataParms((JSONObject) objMessage.get("grids"));
546+
if (objMessage.has("grid"))
547+
grid = objMessage.getInt("grid");
548+
else
549+
grid = 0;
550+
if (objMessage.has("row"))
551+
row = objMessage.getString("row");
552+
else
553+
row = "";
554+
if (objMessage.has("pRow"))
555+
pRow = objMessage.getString("pRow");
556+
if (objMessage.has("gxstate")) {
557+
parseGXStateParms(objMessage.getJSONObject("gxstate"));
558+
}
559+
if (objMessage.has("fullPost")) {
560+
parseGXStateParms(objMessage.getJSONObject("fullPost"));
561+
}
562+
} catch (Exception e) {
552563
e.printStackTrace();
553564
this.targetObj = new GXWebComponentNull(remoteHandle, context);
554565
}
555-
if (objMessage.has("grids"))
556-
parseGridsDataParms((JSONObject)objMessage.get("grids"));
557-
if (objMessage.has("grid"))
558-
grid = objMessage.getInt("grid");
559-
else
560-
grid = 0;
561-
if (objMessage.has("row"))
562-
row = objMessage.getString("row");
563-
else
564-
row = "";
565-
if (objMessage.has("pRow"))
566-
pRow = objMessage.getString("pRow");
567-
if (objMessage.has("gxstate")) {
568-
parseGXStateParms(objMessage.getJSONObject("gxstate"));
569-
}
570-
if (objMessage.has("fullPost")) {
571-
parseGXStateParms(objMessage.getJSONObject("fullPost"));
572-
}
573566
}
574567

575568
private void parseGridsDataParms(JSONObject gxGrids)
@@ -1101,8 +1094,7 @@ private void doInvoke(Object [] MethodParms) throws IllegalArgumentException,
11011094

11021095
public String invoke(String JsonMessage, GXWebPanel targetObj)
11031096
throws Exception {
1104-
JSONObject objMessage = new JSONObject(JsonMessage);
1105-
parseInputJSonMessage(objMessage, targetObj);
1097+
parseInputJSonMessage(JsonMessage, targetObj);
11061098
this.targetObj.setFullAjaxMode();
11071099
this.targetObj.createObjects();
11081100
this.targetObj.initialize();

0 commit comments

Comments
 (0)