Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
22 changes: 22 additions & 0 deletions java/src/main/java/com/genexus/GxUserType.java
Original file line number Diff line number Diff line change
@@ -1,9 +1,13 @@
package com.genexus;

import com.genexus.xml.GXXMLSerializable;
import java.util.HashMap;
import json.org.json.JSONObject;
import org.apache.logging.log4j.Logger;

public abstract class GxUserType extends GXXMLSerializable implements Cloneable, java.io.Serializable, IGXAssigned
{
private static Logger log = org.apache.logging.log4j.LogManager.getLogger(GxUserType.class);

public GxUserType(ModelContext context, String type)
{
Expand All @@ -28,4 +32,22 @@ public boolean getIsAssigned() {
public void setIsAssigned(boolean bAssigned) {
bIsAssigned = bAssigned;
}

protected Object getJsonObjectFromHashMap( Object userType) {
JSONObject jsonObj = new JSONObject();
try {
if (userType instanceof HashMap)
jsonObj = new json.org.json.JSONObject((HashMap)userType);
}
catch(Exception e) {
log.error("Could not create Json Object", e);
}
return jsonObj;
}

protected void setHashMapFromJson(String json) {
fromjson(json);
}

protected void fromjson(String json){}
}
85 changes: 85 additions & 0 deletions java/src/main/java/com/genexus/util/GXHashMap.java
Original file line number Diff line number Diff line change
@@ -0,0 +1,85 @@
package com.genexus.util;

import com.fasterxml.jackson.core.JsonProcessingException;
import com.fasterxml.jackson.databind.ObjectMapper;
import org.apache.logging.log4j.Logger;

import java.lang.reflect.ParameterizedType;
import java.lang.reflect.Type;
import java.util.HashMap;
import java.util.Map;
import java.util.Vector;

public class GXHashMap<K, V> extends HashMap<K, V> {
private static Logger log = org.apache.logging.log4j.LogManager.getLogger(GXHashMap.class);
private static final ObjectMapper objectMapper = new ObjectMapper();

public void setHashMap(GXHashMap<K, V> hashMap) {
putAll(hashMap);
}

public boolean get(K key, V[] value) {
if (containsKey(key)) {
value[0] = get(key);
return true;
}
return false;
}

public boolean removeKey(K key) {
if (containsKey(key)) {
if (remove(key) != null)
return true;
}
return false;
}

public void removeKeys(Vector<K> keys) {
for (int i = 0; i < keys.size(); i++) {
removeKey(keys.get(i));
}
}

public void removeAll(GXHashMap<K, V> hashMap) {
for (Map.Entry<K, V> entry : hashMap.entrySet()) {
removeKey(entry.getKey());
}
}

public String toJson() {
try {
return objectMapper.writeValueAsString(this);
}
catch (JsonProcessingException e) {
log.error("Could not obtain json form Dictionary", e);
return "";
}
}

public void fromJson(String json) {
Type type = new ParameterizedType() {
@Override
public Type[] getActualTypeArguments() {
return ((ParameterizedType) getClass().getEnclosingClass().getGenericSuperclass()).getActualTypeArguments();
}

@Override
public Type getRawType() {
return HashMap.class;
}

@Override
public Type getOwnerType() {
return null;
}
};

try {
this.clear();
this.putAll(objectMapper.readValue(json, objectMapper.getTypeFactory().constructType(type)));
}
catch (JsonProcessingException e) {
log.error("Could not set Dictionary from json", e);
}
}
}