Skip to content

Commit 2955b76

Browse files
dmendezBeta Bot
authored andcommitted
Cherry pick branch 'genexuslabs:fix-issue202370-queda-vacio-diccionario-evento' into beta
1 parent 63e9fc8 commit 2955b76

File tree

3 files changed

+55
-51
lines changed

3 files changed

+55
-51
lines changed

gxweb/src/main/java/com/genexus/internet/HttpAjaxContext.java

Lines changed: 17 additions & 13 deletions
Original file line numberDiff line numberDiff line change
@@ -746,7 +746,7 @@ private boolean checkFileExists(String fileName)
746746
boolean fileExists = false;
747747
try
748748
{
749-
fileExists = ApplicationContext.getInstance().checkIfResourceExist(getDefaultPath() + staticContentBase + fileName);
749+
fileExists = ApplicationContext.getInstance().checkIfResourceExist(getDefaultPath() + staticContentBase + fileName);
750750
}
751751
catch (Exception e)
752752
{
@@ -886,18 +886,22 @@ public void ajax_rsp_assign_sdt_attri( String CmpContext, boolean IsMasterPage,
886886
{
887887
try {
888888
JSONObjectWrapper obj = getGxObject(AttValues, CmpContext, IsMasterPage);
889-
if (obj != null && (!isUndefinedOutParam( AttName, SdtObj) || dynAjaxEventContext.isParmModified(AttName, SdtObj)))
890-
{
891-
if (SdtObj instanceof IGxJSONAble)
892-
obj.put(AttName, ((IGxJSONAble)SdtObj).GetJSONObject());
893-
else
894-
{
895-
if (SdtObj.getClass().isArray())
896-
{
897-
obj.put(AttName, ObjArrayToJSONArray(SdtObj));
898-
}
899-
}
900-
}
889+
if (obj != null) {
890+
if (SdtObj instanceof com.genexus.util.GXHashMap) {
891+
obj.put(AttName, ((com.genexus.util.jsonsableHash) SdtObj).toJson());
892+
}
893+
else {
894+
if ((!isUndefinedOutParam(AttName, SdtObj) || dynAjaxEventContext.isParmModified(AttName, SdtObj))) {
895+
if (SdtObj instanceof IGxJSONAble)
896+
obj.put(AttName, ((IGxJSONAble) SdtObj).GetJSONObject());
897+
else {
898+
if (SdtObj.getClass().isArray()) {
899+
obj.put(AttName, ObjArrayToJSONArray(SdtObj));
900+
}
901+
}
902+
}
903+
}
904+
}
901905
}
902906
catch (JSONException e) {
903907
logger.error(String.format("Could not serialize Object '%s' to JSON", AttName), e);

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

Lines changed: 32 additions & 38 deletions
Original file line numberDiff line numberDiff line change
@@ -770,47 +770,41 @@ private void SetFieldValue(Object targetObj, String fieldName, Object value) thr
770770
if (field != null)
771771
{
772772
Class fieldType = field.getType();
773-
if (IGxJSONSerializable.class.isAssignableFrom(field.getType()))
774-
{
775-
Class[] cArg = new Class[1];
776-
cArg[0] = String.class;
777-
Object fieldInstance = PrivateUtilities.getFieldValue(targetObj, fieldName);
778-
Method mth;
779-
if (value instanceof JSONArray || value instanceof JSONObjectWrapper)
780-
{
781-
mth = field.getType().getMethod("FromJSONObject", new Class[]{Object.class});
782-
mth.invoke(fieldInstance , new Object[]{value});
783-
}
784-
else
785-
{
786-
mth = field.getType().getMethod("fromJSonString", cArg);
787-
mth.invoke(fieldInstance , new Object[]{value.toString()});
788-
}
789-
790-
PrivateUtilities.setFieldValue(targetObj, field.getName(), fieldInstance);
773+
Object fieldInstance = PrivateUtilities.getFieldValue(targetObj, fieldName);
774+
Method mth;
775+
if (com.genexus.util.GXHashMap.class.isAssignableFrom(field.getType())) {
776+
mth = field.getType().getMethod("fromJson", new Class[]{Object.class});
777+
mth.invoke(fieldInstance, new Object[]{value});
791778
}
792-
else
793-
{
794-
try
795-
{
796-
if (fieldType.isArray())
797-
{
798-
Object tempArray = getArrayFieldValue(fieldType, value);
799-
if (tempArray != null)
800-
{
801-
value = tempArray;
802-
}
779+
else {
780+
if (IGxJSONSerializable.class.isAssignableFrom(field.getType())) {
781+
Class[] cArg = new Class[1];
782+
cArg[0] = String.class;
783+
if (value instanceof JSONArray || value instanceof JSONObjectWrapper) {
784+
mth = field.getType().getMethod("FromJSONObject", new Class[]{Object.class});
785+
mth.invoke(fieldInstance, new Object[]{value});
786+
} else {
787+
mth = field.getType().getMethod("fromJSonString", cArg);
788+
mth.invoke(fieldInstance, new Object[]{value.toString()});
803789
}
804-
else {
805-
if (fieldType == java.util.Date.class)
806-
value = localUtil.ctot(value.toString(), 0);
807-
else
808-
value = GXutil.convertObjectTo(value, fieldType);
790+
791+
PrivateUtilities.setFieldValue(targetObj, field.getName(), fieldInstance);
792+
} else {
793+
try {
794+
if (fieldType.isArray()) {
795+
Object tempArray = getArrayFieldValue(fieldType, value);
796+
if (tempArray != null) {
797+
value = tempArray;
798+
}
799+
} else {
800+
if (fieldType == java.util.Date.class)
801+
value = localUtil.ctot(value.toString(), 0);
802+
else
803+
value = GXutil.convertObjectTo(value, fieldType);
804+
}
805+
PrivateUtilities.setFieldValue(targetObj, field.getName(), value);
806+
} catch (Exception e) {
809807
}
810-
PrivateUtilities.setFieldValue(targetObj, field.getName(), value);
811-
}
812-
catch (Exception e)
813-
{
814808
}
815809
}
816810
}
Lines changed: 6 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,6 @@
1+
package com.genexus.util;
2+
3+
public interface jsonsableHash {
4+
public String toJson();
5+
public void fromJson(String json);
6+
}

0 commit comments

Comments
 (0)