From 13417cf9c6eec555b51da49742e47939d2f5715b Mon Sep 17 00:00:00 2001 From: James Moger <james.moger@gitblit.com> Date: Fri, 19 Oct 2012 22:47:33 -0400 Subject: [PATCH] Exclude submodules from zip downloads (issue 151) --- src/com/gitblit/utils/JsonUtils.java | 23 ++++++++++++++++++++++- 1 files changed, 22 insertions(+), 1 deletions(-) diff --git a/src/com/gitblit/utils/JsonUtils.java b/src/com/gitblit/utils/JsonUtils.java index aea46bb..24f4ecb 100644 --- a/src/com/gitblit/utils/JsonUtils.java +++ b/src/com/gitblit/utils/JsonUtils.java @@ -32,6 +32,7 @@ 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 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); @@ -295,13 +297,32 @@ JsonDeserializationContext jsonDeserializationContext) { try { synchronized (dateFormat) { - return dateFormat.parse(jsonElement.getAsString()); + Date date = dateFormat.parse(jsonElement.getAsString()); + return new Date((date.getTime() / 1000) * 1000); } } catch (ParseException e) { throw new JsonSyntaxException(jsonElement.getAsString(), e); } } } + + 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 { -- Gitblit v1.9.1