{"action":"created","comment":{"url":"https://api.github.com/repos/hawkular/hawkular-bus/pulls/comments/40805949","id":40805949,"diff_hunk":"@@ -16,243 +16,27 @@\n  */\n package org.hawkular.bus.common;\n \n-import java.io.ByteArrayOutputStream;\n-import java.io.InputStream;\n-import java.lang.reflect.Method;\n-import java.util.Collections;\n-import java.util.HashMap;\n import java.util.Map;\n \n-import org.hawkular.bus.common.msg.features.FailOnUnknownProperties;\n-\n-import com.fasterxml.jackson.annotation.JsonAutoDetect;\n-import com.fasterxml.jackson.annotation.JsonIgnore;\n-import com.fasterxml.jackson.core.JsonFactory;\n-import com.fasterxml.jackson.core.JsonParser;\n-import com.fasterxml.jackson.core.JsonParser.Feature;\n-import com.fasterxml.jackson.core.JsonProcessingException;\n-import com.fasterxml.jackson.databind.DeserializationFeature;\n-import com.fasterxml.jackson.databind.ObjectMapper;\n-\n /**\n- * Basic information that is sent over the message bus.\n- *\n- * The {@link #getMessageId() message ID} is assigned by the messaging framework and so typically is not explicitly set.\n- *\n- * The {@link #getCorrelationId() correlation ID} is a message ID of another message that was sent previously. This is\n- * usually left unset unless this message needs to be correlated with another. As an example, when a process is stopped,\n- * you can correlate the \"Stopped\" event with the \"Stopping\" event so you can later determine how long it took for the\n- * process to stop.\n- *\n- * The {@link #getHeaders() headers} are normally those out-of-band properties that are sent with the message.\n+ * @author <a href=\"https://github.com/ppalaga\">Peter Palaga</a>\n  */\n-public abstract class BasicMessage {\n-    // these are passed out-of-band of the message body - these attributes will therefore not be JSON encoded\n-    @JsonIgnore\n-    private MessageId _messageId;\n-    @JsonIgnore\n-    private MessageId _correlationId;\n-    @JsonIgnore\n-    private Map<String, String> _headers;\n-\n-    /**\n-     * Convenience static method that converts a JSON string to a particular message object.\n-     *\n-     * @param json the JSON string\n-     * @param clazz the class whose instance is represented by the JSON string\n-     *\n-     * @return the message object that was represented by the JSON string\n-     */\n-    public static <T extends BasicMessage> T fromJSON(String json, Class<T> clazz) {\n-        try {\n-            Method buildObjectMapperForDeserializationMethod = findBuildObjectMapperForDeserializationMethod(clazz);\n-\n-            final ObjectMapper mapper = (ObjectMapper) buildObjectMapperForDeserializationMethod.invoke(null);\n-            if (FailOnUnknownProperties.class.isAssignableFrom(clazz)) {\n-                mapper.configure(DeserializationFeature.FAIL_ON_UNKNOWN_PROPERTIES, true);\n-            }\n-\n-            return mapper.readValue(json, clazz);\n-        } catch (Exception e) {\n-            throw new IllegalStateException(\"JSON message cannot be converted to object of type [\" + clazz + \"]\", e);\n-        }\n-    }\n-\n-    /**\n-     * Convenience static method that reads a JSON string from the given stream and converts the JSON\n-     * string to a particular message object. The input stream will remain open so the caller can\n-     * stream any extra data that might appear after it.\n-     *\n-     * Because of the way the JSON parser works, some extra data might have been read from the stream\n-     * that wasn't part of the JSON message but was part of the extra data that came with it. Because of this,\n-     * the caller should no longer use the given stream but instead read the extra data via the returned\n-     * object (see {@link BasicMessageWithExtraData#getBinaryData()}) since it will handle this condition\n-     * properly.\n-     *\n-     * @param in input stream that has a JSON string at the head.\n-     * @param clazz the class whose instance is represented by the JSON string\n-     *\n-     * @return a POJO that contains a message object that was represented by the JSON string found\n-     *         in the stream. This returned POJO will also contain a {@link BinaryData} object that you\n-     *         can use to stream any additional data that came in the given input stream.\n-     */\n-    public static <T extends BasicMessage> BasicMessageWithExtraData<T> fromJSON(InputStream in, Class<T> clazz) {\n-        final T obj;\n-        final byte[] remainder;\n-        try (JsonParser parser = new JsonFactory().configure(Feature.AUTO_CLOSE_SOURCE, false).createParser(in)) {\n-            Method buildObjectMapperForDeserializationMethod = findBuildObjectMapperForDeserializationMethod(clazz);\n-\n-            final ObjectMapper mapper = (ObjectMapper) buildObjectMapperForDeserializationMethod.invoke(null);\n-            if (FailOnUnknownProperties.class.isAssignableFrom(clazz)) {\n-                mapper.configure(DeserializationFeature.FAIL_ON_UNKNOWN_PROPERTIES, true);\n-            }\n-\n-            obj = mapper.readValue(parser, clazz);\n-            final ByteArrayOutputStream remainderStream = new ByteArrayOutputStream();\n-            final int released = parser.releaseBuffered(remainderStream);\n-            remainder = (released > 0) ? remainderStream.toByteArray() : new byte[0];\n-        } catch (Exception e) {\n-            throw new IllegalArgumentException(\"Stream cannot be converted to JSON object of type [\" + clazz + \"]\", e);\n-        }\n-        return new BasicMessageWithExtraData<T>(obj, new BinaryData(remainder, in));\n-    }\n-\n-    private static Method findBuildObjectMapperForDeserializationMethod(Class<? extends BasicMessage> clazz) {\n-        try {\n-            Method m = clazz.getDeclaredMethod(\"buildObjectMapperForDeserialization\");\n-            return m;\n-        } catch (Exception e) {\n-            // the given subclass doesn't have a method to build a mapper, maybe its superclass does.\n-            // eventually we'll get to the BasicMessage class and we know it does have one.\n-            return findBuildObjectMapperForDeserializationMethod((Class<? extends BasicMessage>) clazz.getSuperclass());\n-        }\n-    }\n-\n-    /**\n-     * This is static, so really there is no true overriding it in subclasses.\n-     * However, fromJSON will do the proper reflection in order to invoke\n-     * the proper method for the class that is being deserialized. So subclasses\n-     * that want to provide their own ObjectMapper will define their own\n-     * method that matches the signature of this method and it will be used.\n-     *\n-     * @return object mapper to be used for deserializing JSON.\n-     */\n-    protected static ObjectMapper buildObjectMapperForDeserialization() {\n-        final ObjectMapper mapper = new ObjectMapper();\n-        mapper.configure(DeserializationFeature.FAIL_ON_UNKNOWN_PROPERTIES, false);\n-        return mapper;\n-    }\n-\n-    /**\n-     * Converts this message to its JSON string representation.\n-     *\n-     * @return JSON encoded data that represents this message.\n-     */\n-    public String toJSON() {\n-        final ObjectMapper mapper = buildObjectMapperForSerialization();\n-        try {\n-            return mapper.writeValueAsString(this);\n-        } catch (JsonProcessingException e) {\n-            throw new IllegalStateException(\"Object cannot be parsed as JSON.\", e);\n-        }\n-    }\n+public interface BasicMessage {\n \n-    /**\n-     * @return object mapper to be used to serialize a message to JSON\n-     */\n-    protected ObjectMapper buildObjectMapperForSerialization() {\n-        final ObjectMapper mapper = new ObjectMapper();\n-        mapper.setVisibilityChecker(mapper.getSerializationConfig().getDefaultVisibilityChecker()\n-                .withFieldVisibility(JsonAutoDetect.Visibility.ANY)\n-                .withGetterVisibility(JsonAutoDetect.Visibility.NONE)\n-                .withSetterVisibility(JsonAutoDetect.Visibility.NONE)\n-                .withCreatorVisibility(JsonAutoDetect.Visibility.NONE));\n-        return mapper;\n-    }\n+    String HEADER_BASIC_MESSAGE_CLASS = \"org.hawkular.bus.common.BasicMessage.className\";","path":"hawkular-bus-common/src/main/java/org/hawkular/bus/common/BasicMessage.java","position":159,"original_position":159,"commit_id":"5796b0ed1449b17a78e225be2fbfe8bf0f6a746a","original_commit_id":"5796b0ed1449b17a78e225be2fbfe8bf0f6a746a","user":{"login":"ppalaga","id":1826249,"avatar_url":"https://avatars.githubusercontent.com/u/1826249?v=3","gravatar_id":"","url":"https://api.github.com/users/ppalaga","html_url":"https://github.com/ppalaga","followers_url":"https://api.github.com/users/ppalaga/followers","following_url":"https://api.github.com/users/ppalaga/following{/other_user}","gists_url":"https://api.github.com/users/ppalaga/gists{/gist_id}","starred_url":"https://api.github.com/users/ppalaga/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/ppalaga/subscriptions","organizations_url":"https://api.github.com/users/ppalaga/orgs","repos_url":"https://api.github.com/users/ppalaga/repos","events_url":"https://api.github.com/users/ppalaga/events{/privacy}","received_events_url":"https://api.github.com/users/ppalaga/received_events","type":"User","site_admin":false},"body":"OK, moved to `MessageProcessor`","created_at":"2015-09-30T15:10:25Z","updated_at":"2015-09-30T15:10:25Z","html_url":"https://github.com/hawkular/hawkular-bus/pull/44#discussion_r40805949","pull_request_url":"https://api.github.com/repos/hawkular/hawkular-bus/pulls/44","_links":{"self":{"href":"https://api.github.com/repos/hawkular/hawkular-bus/pulls/comments/40805949"},"html":{"href":"https://github.com/hawkular/hawkular-bus/pull/44#discussion_r40805949"},"pull_request":{"href":"https://api.github.com/repos/hawkular/hawkular-bus/pulls/44"}}},"pull_request":{"url":"https://api.github.com/repos/hawkular/hawkular-bus/pulls/44","id":45936614,"html_url":"https://github.com/hawkular/hawkular-bus/pull/44","diff_url":"https://github.com/hawkular/hawkular-bus/pull/44.diff","patch_url":"https://github.com/hawkular/hawkular-bus/pull/44.patch","issue_url":"https://api.github.com/repos/hawkular/hawkular-bus/issues/44","number":44,"state":"open","locked":false,"title":"Add Message interface","user":{"login":"ppalaga","id":1826249,"avatar_url":"https://avatars.githubusercontent.com/u/1826249?v=3","gravatar_id":"","url":"https://api.github.com/users/ppalaga","html_url":"https://github.com/ppalaga","followers_url":"https://api.github.com/users/ppalaga/followers","following_url":"https://api.github.com/users/ppalaga/following{/other_user}","gists_url":"https://api.github.com/users/ppalaga/gists{/gist_id}","starred_url":"https://api.github.com/users/ppalaga/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/ppalaga/subscriptions","organizations_url":"https://api.github.com/users/ppalaga/orgs","repos_url":"https://api.github.com/users/ppalaga/repos","events_url":"https://api.github.com/users/ppalaga/events{/privacy}","received_events_url":"https://api.github.com/users/ppalaga/received_events","type":"User","site_admin":false},"body":null,"created_at":"2015-09-24T19:06:10Z","updated_at":"2015-09-30T15:10:25Z","closed_at":null,"merged_at":null,"merge_commit_sha":"a43a88771de7fc49877a5608fd5d1c5043b0d4cc","assignee":null,"milestone":null,"commits_url":"https://api.github.com/repos/hawkular/hawkular-bus/pulls/44/commits","review_comments_url":"https://api.github.com/repos/hawkular/hawkular-bus/pulls/44/comments","review_comment_url":"https://api.github.com/repos/hawkular/hawkular-bus/pulls/comments{/number}","comments_url":"https://api.github.com/repos/hawkular/hawkular-bus/issues/44/comments","statuses_url":"https://api.github.com/repos/hawkular/hawkular-bus/statuses/5796b0ed1449b17a78e225be2fbfe8bf0f6a746a","head":{"label":"ppalaga:150923-msg-interface","ref":"150923-msg-interface","sha":"5796b0ed1449b17a78e225be2fbfe8bf0f6a746a","user":{"login":"ppalaga","id":1826249,"avatar_url":"https://avatars.githubusercontent.com/u/1826249?v=3","gravatar_id":"","url":"https://api.github.com/users/ppalaga","html_url":"https://github.com/ppalaga","followers_url":"https://api.github.com/users/ppalaga/followers","following_url":"https://api.github.com/users/ppalaga/following{/other_user}","gists_url":"https://api.github.com/users/ppalaga/gists{/gist_id}","starred_url":"https://api.github.com/users/ppalaga/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/ppalaga/subscriptions","organizations_url":"https://api.github.com/users/ppalaga/orgs","repos_url":"https://api.github.com/users/ppalaga/repos","events_url":"https://api.github.com/users/ppalaga/events{/privacy}","received_events_url":"https://api.github.com/users/ppalaga/received_events","type":"User","site_admin":false},"repo":{"id":30072698,"name":"hawkular-bus","full_name":"ppalaga/hawkular-bus","owner":{"login":"ppalaga","id":1826249,"avatar_url":"https://avatars.githubusercontent.com/u/1826249?v=3","gravatar_id":"","url":"https://api.github.com/users/ppalaga","html_url":"https://github.com/ppalaga","followers_url":"https://api.github.com/users/ppalaga/followers","following_url":"https://api.github.com/users/ppalaga/following{/other_user}","gists_url":"https://api.github.com/users/ppalaga/gists{/gist_id}","starred_url":"https://api.github.com/users/ppalaga/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/ppalaga/subscriptions","organizations_url":"https://api.github.com/users/ppalaga/orgs","repos_url":"https://api.github.com/users/ppalaga/repos","events_url":"https://api.github.com/users/ppalaga/events{/privacy}","received_events_url":"https://api.github.com/users/ppalaga/received_events","type":"User","site_admin":false},"private":false,"html_url":"https://github.com/ppalaga/hawkular-bus","description":"The messaging framework used for communication between Hawkular components","fork":true,"url":"https://api.github.com/repos/ppalaga/hawkular-bus","forks_url":"https://api.github.com/repos/ppalaga/hawkular-bus/forks","keys_url":"https://api.github.com/repos/ppalaga/hawkular-bus/keys{/key_id}","collaborators_url":"https://api.github.com/repos/ppalaga/hawkular-bus/collaborators{/collaborator}","teams_url":"https://api.github.com/repos/ppalaga/hawkular-bus/teams","hooks_url":"https://api.github.com/repos/ppalaga/hawkular-bus/hooks","issue_events_url":"https://api.github.com/repos/ppalaga/hawkular-bus/issues/events{/number}","events_url":"https://api.github.com/repos/ppalaga/hawkular-bus/events","assignees_url":"https://api.github.com/repos/ppalaga/hawkular-bus/assignees{/user}","branches_url":"https://api.github.com/repos/ppalaga/hawkular-bus/branches{/branch}","tags_url":"https://api.github.com/repos/ppalaga/hawkular-bus/tags","blobs_url":"https://api.github.com/repos/ppalaga/hawkular-bus/git/blobs{/sha}","git_tags_url":"https://api.github.com/repos/ppalaga/hawkular-bus/git/tags{/sha}","git_refs_url":"https://api.github.com/repos/ppalaga/hawkular-bus/git/refs{/sha}","trees_url":"https://api.github.com/repos/ppalaga/hawkular-bus/git/trees{/sha}","statuses_url":"https://api.github.com/repos/ppalaga/hawkular-bus/statuses/{sha}","languages_url":"https://api.github.com/repos/ppalaga/hawkular-bus/languages","stargazers_url":"https://api.github.com/repos/ppalaga/hawkular-bus/stargazers","contributors_url":"https://api.github.com/repos/ppalaga/hawkular-bus/contributors","subscribers_url":"https://api.github.com/repos/ppalaga/hawkular-bus/subscribers","subscription_url":"https://api.github.com/repos/ppalaga/hawkular-bus/subscription","commits_url":"https://api.github.com/repos/ppalaga/hawkular-bus/commits{/sha}","git_commits_url":"https://api.github.com/repos/ppalaga/hawkular-bus/git/commits{/sha}","comments_url":"https://api.github.com/repos/ppalaga/hawkular-bus/comments{/number}","issue_comment_url":"https://api.github.com/repos/ppalaga/hawkular-bus/issues/comments{/number}","contents_url":"https://api.github.com/repos/ppalaga/hawkular-bus/contents/{+path}","compare_url":"https://api.github.com/repos/ppalaga/hawkular-bus/compare/{base}...{head}","merges_url":"https://api.github.com/repos/ppalaga/hawkular-bus/merges","archive_url":"https://api.github.com/repos/ppalaga/hawkular-bus/{archive_format}{/ref}","downloads_url":"https://api.github.com/repos/ppalaga/hawkular-bus/downloads","issues_url":"https://api.github.com/repos/ppalaga/hawkular-bus/issues{/number}","pulls_url":"https://api.github.com/repos/ppalaga/hawkular-bus/pulls{/number}","milestones_url":"https://api.github.com/repos/ppalaga/hawkular-bus/milestones{/number}","notifications_url":"https://api.github.com/repos/ppalaga/hawkular-bus/notifications{?since,all,participating}","labels_url":"https://api.github.com/repos/ppalaga/hawkular-bus/labels{/name}","releases_url":"https://api.github.com/repos/ppalaga/hawkular-bus/releases{/id}","created_at":"2015-01-30T13:17:53Z","updated_at":"2015-01-30T13:17:54Z","pushed_at":"2015-09-25T22:56:09Z","git_url":"git://github.com/ppalaga/hawkular-bus.git","ssh_url":"git@github.com:ppalaga/hawkular-bus.git","clone_url":"https://github.com/ppalaga/hawkular-bus.git","svn_url":"https://github.com/ppalaga/hawkular-bus","homepage":null,"size":1061,"stargazers_count":0,"watchers_count":0,"language":"Java","has_issues":false,"has_downloads":true,"has_wiki":false,"has_pages":false,"forks_count":0,"mirror_url":null,"open_issues_count":0,"forks":0,"open_issues":0,"watchers":0,"default_branch":"master"}},"base":{"label":"hawkular:master","ref":"master","sha":"5fe324d11fc050ae03e894b3e8d38dc5e27e3b3d","user":{"login":"hawkular","id":10179627,"avatar_url":"https://avatars.githubusercontent.com/u/10179627?v=3","gravatar_id":"","url":"https://api.github.com/users/hawkular","html_url":"https://github.com/hawkular","followers_url":"https://api.github.com/users/hawkular/followers","following_url":"https://api.github.com/users/hawkular/following{/other_user}","gists_url":"https://api.github.com/users/hawkular/gists{/gist_id}","starred_url":"https://api.github.com/users/hawkular/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/hawkular/subscriptions","organizations_url":"https://api.github.com/users/hawkular/orgs","repos_url":"https://api.github.com/users/hawkular/repos","events_url":"https://api.github.com/users/hawkular/events{/privacy}","received_events_url":"https://api.github.com/users/hawkular/received_events","type":"Organization","site_admin":false},"repo":{"id":29201308,"name":"hawkular-bus","full_name":"hawkular/hawkular-bus","owner":{"login":"hawkular","id":10179627,"avatar_url":"https://avatars.githubusercontent.com/u/10179627?v=3","gravatar_id":"","url":"https://api.github.com/users/hawkular","html_url":"https://github.com/hawkular","followers_url":"https://api.github.com/users/hawkular/followers","following_url":"https://api.github.com/users/hawkular/following{/other_user}","gists_url":"https://api.github.com/users/hawkular/gists{/gist_id}","starred_url":"https://api.github.com/users/hawkular/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/hawkular/subscriptions","organizations_url":"https://api.github.com/users/hawkular/orgs","repos_url":"https://api.github.com/users/hawkular/repos","events_url":"https://api.github.com/users/hawkular/events{/privacy}","received_events_url":"https://api.github.com/users/hawkular/received_events","type":"Organization","site_admin":false},"private":false,"html_url":"https://github.com/hawkular/hawkular-bus","description":"The messaging framework used for communication between Hawkular components","fork":false,"url":"https://api.github.com/repos/hawkular/hawkular-bus","forks_url":"https://api.github.com/repos/hawkular/hawkular-bus/forks","keys_url":"https://api.github.com/repos/hawkular/hawkular-bus/keys{/key_id}","collaborators_url":"https://api.github.com/repos/hawkular/hawkular-bus/collaborators{/collaborator}","teams_url":"https://api.github.com/repos/hawkular/hawkular-bus/teams","hooks_url":"https://api.github.com/repos/hawkular/hawkular-bus/hooks","issue_events_url":"https://api.github.com/repos/hawkular/hawkular-bus/issues/events{/number}","events_url":"https://api.github.com/repos/hawkular/hawkular-bus/events","assignees_url":"https://api.github.com/repos/hawkular/hawkular-bus/assignees{/user}","branches_url":"https://api.github.com/repos/hawkular/hawkular-bus/branches{/branch}","tags_url":"https://api.github.com/repos/hawkular/hawkular-bus/tags","blobs_url":"https://api.github.com/repos/hawkular/hawkular-bus/git/blobs{/sha}","git_tags_url":"https://api.github.com/repos/hawkular/hawkular-bus/git/tags{/sha}","git_refs_url":"https://api.github.com/repos/hawkular/hawkular-bus/git/refs{/sha}","trees_url":"https://api.github.com/repos/hawkular/hawkular-bus/git/trees{/sha}","statuses_url":"https://api.github.com/repos/hawkular/hawkular-bus/statuses/{sha}","languages_url":"https://api.github.com/repos/hawkular/hawkular-bus/languages","stargazers_url":"https://api.github.com/repos/hawkular/hawkular-bus/stargazers","contributors_url":"https://api.github.com/repos/hawkular/hawkular-bus/contributors","subscribers_url":"https://api.github.com/repos/hawkular/hawkular-bus/subscribers","subscription_url":"https://api.github.com/repos/hawkular/hawkular-bus/subscription","commits_url":"https://api.github.com/repos/hawkular/hawkular-bus/commits{/sha}","git_commits_url":"https://api.github.com/repos/hawkular/hawkular-bus/git/commits{/sha}","comments_url":"https://api.github.com/repos/hawkular/hawkular-bus/comments{/number}","issue_comment_url":"https://api.github.com/repos/hawkular/hawkular-bus/issues/comments{/number}","contents_url":"https://api.github.com/repos/hawkular/hawkular-bus/contents/{+path}","compare_url":"https://api.github.com/repos/hawkular/hawkular-bus/compare/{base}...{head}","merges_url":"https://api.github.com/repos/hawkular/hawkular-bus/merges","archive_url":"https://api.github.com/repos/hawkular/hawkular-bus/{archive_format}{/ref}","downloads_url":"https://api.github.com/repos/hawkular/hawkular-bus/downloads","issues_url":"https://api.github.com/repos/hawkular/hawkular-bus/issues{/number}","pulls_url":"https://api.github.com/repos/hawkular/hawkular-bus/pulls{/number}","milestones_url":"https://api.github.com/repos/hawkular/hawkular-bus/milestones{/number}","notifications_url":"https://api.github.com/repos/hawkular/hawkular-bus/notifications{?since,all,participating}","labels_url":"https://api.github.com/repos/hawkular/hawkular-bus/labels{/name}","releases_url":"https://api.github.com/repos/hawkular/hawkular-bus/releases{/id}","created_at":"2015-01-13T17:13:50Z","updated_at":"2015-09-04T16:18:08Z","pushed_at":"2015-09-25T22:56:09Z","git_url":"git://github.com/hawkular/hawkular-bus.git","ssh_url":"git@github.com:hawkular/hawkular-bus.git","clone_url":"https://github.com/hawkular/hawkular-bus.git","svn_url":"https://github.com/hawkular/hawkular-bus","homepage":null,"size":1576,"stargazers_count":3,"watchers_count":3,"language":"Java","has_issues":false,"has_downloads":true,"has_wiki":false,"has_pages":false,"forks_count":10,"mirror_url":null,"open_issues_count":1,"forks":10,"open_issues":1,"watchers":3,"default_branch":"master"}},"_links":{"self":{"href":"https://api.github.com/repos/hawkular/hawkular-bus/pulls/44"},"html":{"href":"https://github.com/hawkular/hawkular-bus/pull/44"},"issue":{"href":"https://api.github.com/repos/hawkular/hawkular-bus/issues/44"},"comments":{"href":"https://api.github.com/repos/hawkular/hawkular-bus/issues/44/comments"},"review_comments":{"href":"https://api.github.com/repos/hawkular/hawkular-bus/pulls/44/comments"},"review_comment":{"href":"https://api.github.com/repos/hawkular/hawkular-bus/pulls/comments{/number}"},"commits":{"href":"https://api.github.com/repos/hawkular/hawkular-bus/pulls/44/commits"},"statuses":{"href":"https://api.github.com/repos/hawkular/hawkular-bus/statuses/5796b0ed1449b17a78e225be2fbfe8bf0f6a746a"}}}}