)]}'
{"java/src/main/java/monasca/api/app/validation/DimensionValidation.java":[{"author":{"_account_id":11809,"name":"Craig Bryant","email":"craig.bryant@hpe.com","username":"craig-bryant"},"change_message_id":"8488851422ecf0cce3a1493e010ac82fb607f915","unresolved":false,"context_lines":[{"line_number":173,"context_line":"   * Validates a dimension key"},{"line_number":174,"context_line":"   * @param key"},{"line_number":175,"context_line":"   */"},{"line_number":176,"context_line":"  public static void validateKey(String key) {"},{"line_number":177,"context_line":"    if(key !\u003d null) {"},{"line_number":178,"context_line":"      if (Strings.isNullOrEmpty(key)) {"},{"line_number":179,"context_line":"        throw Exceptions.unprocessableEntity(\"Dimension key cannot be empty\");"}],"source_content_type":"text/x-java","patch_set":4,"id":"9a061dce_c92781b4","line":176,"range":{"start_line":176,"start_character":21,"end_line":176,"end_character":32},"updated":"2016-04-06 18:05:42.000000000","message":"This method duplicates code in the functions above. Can you refactor these so the above methods call these methods?","commit_id":"a41affac1326982f9ef459ab4eff65df9e8fe701"},{"author":{"_account_id":18286,"name":"Shinya Kawabata","email":"s-kawabata@wx.jp.nec.com","username":"kawabata"},"change_message_id":"6fa14519a83e46d06a9d0c1494494ef3e3016b0f","unresolved":false,"context_lines":[{"line_number":173,"context_line":"   * Validates a dimension key"},{"line_number":174,"context_line":"   * @param key"},{"line_number":175,"context_line":"   */"},{"line_number":176,"context_line":"  public static void validateKey(String key) {"},{"line_number":177,"context_line":"    if(key !\u003d null) {"},{"line_number":178,"context_line":"      if (Strings.isNullOrEmpty(key)) {"},{"line_number":179,"context_line":"        throw Exceptions.unprocessableEntity(\"Dimension key cannot be empty\");"}],"source_content_type":"text/x-java","patch_set":4,"id":"9a061dce_04df8e0d","line":176,"range":{"start_line":176,"start_character":21,"end_line":176,"end_character":32},"in_reply_to":"9a061dce_c92781b4","updated":"2016-04-07 04:39:39.000000000","message":"Done","commit_id":"a41affac1326982f9ef459ab4eff65df9e8fe701"},{"author":{"_account_id":11809,"name":"Craig Bryant","email":"craig.bryant@hpe.com","username":"craig-bryant"},"change_message_id":"8488851422ecf0cce3a1493e010ac82fb607f915","unresolved":false,"context_lines":[{"line_number":174,"context_line":"   * @param key"},{"line_number":175,"context_line":"   */"},{"line_number":176,"context_line":"  public static void validateKey(String key) {"},{"line_number":177,"context_line":"    if(key !\u003d null) {"},{"line_number":178,"context_line":"      if (Strings.isNullOrEmpty(key)) {"},{"line_number":179,"context_line":"        throw Exceptions.unprocessableEntity(\"Dimension key cannot be empty\");"},{"line_number":180,"context_line":"      }"}],"source_content_type":"text/x-java","patch_set":4,"id":"9a061dce_06104858","line":177,"range":{"start_line":177,"start_character":4,"end_line":177,"end_character":6},"updated":"2016-04-06 18:05:42.000000000","message":"Needs a space after the if","commit_id":"a41affac1326982f9ef459ab4eff65df9e8fe701"},{"author":{"_account_id":18286,"name":"Shinya Kawabata","email":"s-kawabata@wx.jp.nec.com","username":"kawabata"},"change_message_id":"6fa14519a83e46d06a9d0c1494494ef3e3016b0f","unresolved":false,"context_lines":[{"line_number":174,"context_line":"   * @param key"},{"line_number":175,"context_line":"   */"},{"line_number":176,"context_line":"  public static void validateKey(String key) {"},{"line_number":177,"context_line":"    if(key !\u003d null) {"},{"line_number":178,"context_line":"      if (Strings.isNullOrEmpty(key)) {"},{"line_number":179,"context_line":"        throw Exceptions.unprocessableEntity(\"Dimension key cannot be empty\");"},{"line_number":180,"context_line":"      }"}],"source_content_type":"text/x-java","patch_set":4,"id":"9a061dce_44e506da","line":177,"range":{"start_line":177,"start_character":4,"end_line":177,"end_character":6},"in_reply_to":"9a061dce_06104858","updated":"2016-04-07 04:39:39.000000000","message":"Done","commit_id":"a41affac1326982f9ef459ab4eff65df9e8fe701"},{"author":{"_account_id":11809,"name":"Craig Bryant","email":"craig.bryant@hpe.com","username":"craig-bryant"},"change_message_id":"8488851422ecf0cce3a1493e010ac82fb607f915","unresolved":false,"context_lines":[{"line_number":198,"context_line":"   * Validates a dimension value"},{"line_number":199,"context_line":"   * @param value"},{"line_number":200,"context_line":"   */"},{"line_number":201,"context_line":"  public static void validateValue(String value) {"},{"line_number":202,"context_line":"    if(value !\u003d null) {"},{"line_number":203,"context_line":"      if (Strings.isNullOrEmpty(value)) {"},{"line_number":204,"context_line":"        throw Exceptions.unprocessableEntity(\"Dimension value cannot be empty\");"}],"source_content_type":"text/x-java","patch_set":4,"id":"9a061dce_692f5588","line":201,"range":{"start_line":201,"start_character":21,"end_line":201,"end_character":34},"updated":"2016-04-06 18:05:42.000000000","message":"Same comment about reuse as validateKey","commit_id":"a41affac1326982f9ef459ab4eff65df9e8fe701"},{"author":{"_account_id":18286,"name":"Shinya Kawabata","email":"s-kawabata@wx.jp.nec.com","username":"kawabata"},"change_message_id":"6fa14519a83e46d06a9d0c1494494ef3e3016b0f","unresolved":false,"context_lines":[{"line_number":198,"context_line":"   * Validates a dimension value"},{"line_number":199,"context_line":"   * @param value"},{"line_number":200,"context_line":"   */"},{"line_number":201,"context_line":"  public static void validateValue(String value) {"},{"line_number":202,"context_line":"    if(value !\u003d null) {"},{"line_number":203,"context_line":"      if (Strings.isNullOrEmpty(value)) {"},{"line_number":204,"context_line":"        throw Exceptions.unprocessableEntity(\"Dimension value cannot be empty\");"}],"source_content_type":"text/x-java","patch_set":4,"id":"9a061dce_84d39e03","line":201,"range":{"start_line":201,"start_character":21,"end_line":201,"end_character":34},"in_reply_to":"9a061dce_692f5588","updated":"2016-04-07 04:39:39.000000000","message":"Done","commit_id":"a41affac1326982f9ef459ab4eff65df9e8fe701"},{"author":{"_account_id":11809,"name":"Craig Bryant","email":"craig.bryant@hpe.com","username":"craig-bryant"},"change_message_id":"8488851422ecf0cce3a1493e010ac82fb607f915","unresolved":false,"context_lines":[{"line_number":199,"context_line":"   * @param value"},{"line_number":200,"context_line":"   */"},{"line_number":201,"context_line":"  public static void validateValue(String value) {"},{"line_number":202,"context_line":"    if(value !\u003d null) {"},{"line_number":203,"context_line":"      if (Strings.isNullOrEmpty(value)) {"},{"line_number":204,"context_line":"        throw Exceptions.unprocessableEntity(\"Dimension value cannot be empty\");"},{"line_number":205,"context_line":"      }"}],"source_content_type":"text/x-java","patch_set":4,"id":"9a061dce_86045818","line":202,"range":{"start_line":202,"start_character":4,"end_line":202,"end_character":6},"updated":"2016-04-06 18:05:42.000000000","message":"Needs a space after the if","commit_id":"a41affac1326982f9ef459ab4eff65df9e8fe701"},{"author":{"_account_id":18286,"name":"Shinya Kawabata","email":"s-kawabata@wx.jp.nec.com","username":"kawabata"},"change_message_id":"6fa14519a83e46d06a9d0c1494494ef3e3016b0f","unresolved":false,"context_lines":[{"line_number":199,"context_line":"   * @param value"},{"line_number":200,"context_line":"   */"},{"line_number":201,"context_line":"  public static void validateValue(String value) {"},{"line_number":202,"context_line":"    if(value !\u003d null) {"},{"line_number":203,"context_line":"      if (Strings.isNullOrEmpty(value)) {"},{"line_number":204,"context_line":"        throw Exceptions.unprocessableEntity(\"Dimension value cannot be empty\");"},{"line_number":205,"context_line":"      }"}],"source_content_type":"text/x-java","patch_set":4,"id":"9a061dce_24ea92ac","line":202,"range":{"start_line":202,"start_character":4,"end_line":202,"end_character":6},"in_reply_to":"9a061dce_86045818","updated":"2016-04-07 04:39:39.000000000","message":"Done","commit_id":"a41affac1326982f9ef459ab4eff65df9e8fe701"},{"author":{"_account_id":11809,"name":"Craig Bryant","email":"craig.bryant@hpe.com","username":"craig-bryant"},"change_message_id":"8488851422ecf0cce3a1493e010ac82fb607f915","unresolved":false,"context_lines":[{"line_number":204,"context_line":"        throw Exceptions.unprocessableEntity(\"Dimension value cannot be empty\");"},{"line_number":205,"context_line":"      }"},{"line_number":206,"context_line":"      if (value.length() \u003e 255) {"},{"line_number":207,"context_line":"        throw Exceptions.unprocessableEntity(\"Dimension value \u0027%s\u0027 must be 255 characters or less\","},{"line_number":208,"context_line":"                                             value);"},{"line_number":209,"context_line":"      }"},{"line_number":210,"context_line":"      if (!VALID_DIMENSION_NAME.matcher(value).matches()) {"}],"source_content_type":"text/x-java","patch_set":4,"id":"9a061dce_29671dea","line":207,"range":{"start_line":207,"start_character":46,"end_line":207,"end_character":61},"updated":"2016-04-06 18:05:42.000000000","message":"Would be really useful to have the key passed to this method in order to give a better error message","commit_id":"a41affac1326982f9ef459ab4eff65df9e8fe701"},{"author":{"_account_id":18286,"name":"Shinya Kawabata","email":"s-kawabata@wx.jp.nec.com","username":"kawabata"},"change_message_id":"6fa14519a83e46d06a9d0c1494494ef3e3016b0f","unresolved":false,"context_lines":[{"line_number":204,"context_line":"        throw Exceptions.unprocessableEntity(\"Dimension value cannot be empty\");"},{"line_number":205,"context_line":"      }"},{"line_number":206,"context_line":"      if (value.length() \u003e 255) {"},{"line_number":207,"context_line":"        throw Exceptions.unprocessableEntity(\"Dimension value \u0027%s\u0027 must be 255 characters or less\","},{"line_number":208,"context_line":"                                             value);"},{"line_number":209,"context_line":"      }"},{"line_number":210,"context_line":"      if (!VALID_DIMENSION_NAME.matcher(value).matches()) {"}],"source_content_type":"text/x-java","patch_set":4,"id":"9a061dce_643e4a29","line":207,"range":{"start_line":207,"start_character":46,"end_line":207,"end_character":61},"in_reply_to":"9a061dce_29671dea","updated":"2016-04-07 04:39:39.000000000","message":"To achieve this function, it may need many modification of code and code may be more complicate. So I didn\u0027t do that.","commit_id":"a41affac1326982f9ef459ab4eff65df9e8fe701"}],"java/src/main/java/monasca/api/app/validation/Validation.java":[{"author":{"_account_id":11809,"name":"Craig Bryant","email":"craig.bryant@hpe.com","username":"craig-bryant"},"change_message_id":"8488851422ecf0cce3a1493e010ac82fb607f915","unresolved":false,"context_lines":[{"line_number":98,"context_line":"      if (dimensionArr.length \u003d\u003d 2) {"},{"line_number":99,"context_line":"        DimensionValidation.validateKey(dimensionArr[0]);"},{"line_number":100,"context_line":"        if (dimensionArr[1].contains(\"|\")) {"},{"line_number":101,"context_line":"          List\u003cString\u003e dimensionValueArr \u003d Splitter.on(\u0027|\u0027).splitToList(dimensionArr[1]);"},{"line_number":102,"context_line":"          for (String dimensionValue : dimensionValueArr) {"},{"line_number":103,"context_line":"            DimensionValidation.validateValue(dimensionValue);"},{"line_number":104,"context_line":"          }"}],"source_content_type":"text/x-java","patch_set":4,"id":"9a061dce_29aefde5","line":101,"range":{"start_line":101,"start_character":43,"end_line":101,"end_character":59},"updated":"2016-04-06 18:05:42.000000000","message":"This creates a new Splitter every time. Maybe create one like COMMA_SPLITTER?","commit_id":"a41affac1326982f9ef459ab4eff65df9e8fe701"},{"author":{"_account_id":18286,"name":"Shinya Kawabata","email":"s-kawabata@wx.jp.nec.com","username":"kawabata"},"change_message_id":"6fa14519a83e46d06a9d0c1494494ef3e3016b0f","unresolved":false,"context_lines":[{"line_number":98,"context_line":"      if (dimensionArr.length \u003d\u003d 2) {"},{"line_number":99,"context_line":"        DimensionValidation.validateKey(dimensionArr[0]);"},{"line_number":100,"context_line":"        if (dimensionArr[1].contains(\"|\")) {"},{"line_number":101,"context_line":"          List\u003cString\u003e dimensionValueArr \u003d Splitter.on(\u0027|\u0027).splitToList(dimensionArr[1]);"},{"line_number":102,"context_line":"          for (String dimensionValue : dimensionValueArr) {"},{"line_number":103,"context_line":"            DimensionValidation.validateValue(dimensionValue);"},{"line_number":104,"context_line":"          }"}],"source_content_type":"text/x-java","patch_set":4,"id":"9a061dce_440a267a","line":101,"range":{"start_line":101,"start_character":43,"end_line":101,"end_character":59},"in_reply_to":"9a061dce_29aefde5","updated":"2016-04-07 04:39:39.000000000","message":"Done","commit_id":"a41affac1326982f9ef459ab4eff65df9e8fe701"},{"author":{"_account_id":11809,"name":"Craig Bryant","email":"craig.bryant@hpe.com","username":"craig-bryant"},"change_message_id":"8488851422ecf0cce3a1493e010ac82fb607f915","unresolved":false,"context_lines":[{"line_number":110,"context_line":"      if (dimensionArr.length \u003d\u003d 1) {"},{"line_number":111,"context_line":"        DimensionValidation.validateKey(dimensionArr[0]);"},{"line_number":112,"context_line":"        dimensions.put(dimensionArr[0], \"\");"},{"line_number":113,"context_line":"      }"},{"line_number":114,"context_line":"    }"},{"line_number":115,"context_line":""},{"line_number":116,"context_line":"    //DimensionValidation.validate(dimensions);"}],"source_content_type":"text/x-java","patch_set":4,"id":"9a061dce_69e2b530","line":113,"range":{"start_line":113,"start_character":6,"end_line":113,"end_character":7},"updated":"2016-04-06 18:05:42.000000000","message":"This silently ignores dimensionArr.length \u003e 2","commit_id":"a41affac1326982f9ef459ab4eff65df9e8fe701"},{"author":{"_account_id":18286,"name":"Shinya Kawabata","email":"s-kawabata@wx.jp.nec.com","username":"kawabata"},"change_message_id":"6fa14519a83e46d06a9d0c1494494ef3e3016b0f","unresolved":false,"context_lines":[{"line_number":110,"context_line":"      if (dimensionArr.length \u003d\u003d 1) {"},{"line_number":111,"context_line":"        DimensionValidation.validateKey(dimensionArr[0]);"},{"line_number":112,"context_line":"        dimensions.put(dimensionArr[0], \"\");"},{"line_number":113,"context_line":"      }"},{"line_number":114,"context_line":"    }"},{"line_number":115,"context_line":""},{"line_number":116,"context_line":"    //DimensionValidation.validate(dimensions);"}],"source_content_type":"text/x-java","patch_set":4,"id":"9a061dce_240f3289","line":113,"range":{"start_line":113,"start_character":6,"end_line":113,"end_character":7},"in_reply_to":"9a061dce_69e2b530","updated":"2016-04-07 04:39:39.000000000","message":"Done","commit_id":"a41affac1326982f9ef459ab4eff65df9e8fe701"}]}
