summaryrefslogtreecommitdiffstats
path: root/src/com/gitblit/utils/JsonUtils.java
diff options
context:
space:
mode:
Diffstat (limited to 'src/com/gitblit/utils/JsonUtils.java')
-rw-r--r--src/com/gitblit/utils/JsonUtils.java20
1 files changed, 20 insertions, 0 deletions
diff --git a/src/com/gitblit/utils/JsonUtils.java b/src/com/gitblit/utils/JsonUtils.java
index bc9a1e00..24f4ecb8 100644
--- a/src/com/gitblit/utils/JsonUtils.java
+++ b/src/com/gitblit/utils/JsonUtils.java
@@ -32,6 +32,7 @@ import java.util.Locale;
import java.util.Map;
import java.util.TimeZone;
+import com.gitblit.Constants.AccessPermission;
import com.gitblit.GitBlitException.ForbiddenException;
import com.gitblit.GitBlitException.NotAllowedException;
import com.gitblit.GitBlitException.UnauthorizedException;
@@ -266,6 +267,7 @@ public class JsonUtils {
public static Gson gson(ExclusionStrategy... strategies) {
GsonBuilder builder = new GsonBuilder();
builder.registerTypeAdapter(Date.class, new GmtDateTypeAdapter());
+ builder.registerTypeAdapter(AccessPermission.class, new AccessPermissionTypeAdapter());
builder.setPrettyPrinting();
if (!ArrayUtils.isEmpty(strategies)) {
builder.setExclusionStrategies(strategies);
@@ -303,6 +305,24 @@ public class JsonUtils {
}
}
}
+
+ private static class AccessPermissionTypeAdapter implements JsonSerializer<AccessPermission>, JsonDeserializer<AccessPermission> {
+
+ private AccessPermissionTypeAdapter() {
+ }
+
+ @Override
+ public synchronized JsonElement serialize(AccessPermission permission, Type type,
+ JsonSerializationContext jsonSerializationContext) {
+ return new JsonPrimitive(permission.code);
+ }
+
+ @Override
+ public synchronized AccessPermission deserialize(JsonElement jsonElement, Type type,
+ JsonDeserializationContext jsonDeserializationContext) {
+ return AccessPermission.fromCode(jsonElement.getAsString());
+ }
+ }
public static class ExcludeField implements ExclusionStrategy {