James Moger
2012-10-13 c658df9e87d65b08d5482cf04489cb0532ff83dd
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 {