James Moger
2012-10-10 20714aee0d2d2a989d93d6065e081aed8ac85fbf
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);
@@ -303,6 +305,24 @@
         }
      }
   }
   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 {