{"action":"created","comment":{"url":"https://api.github.com/repos/hazelcast/hazelcast/pulls/comments/36734831","id":36734831,"diff_hunk":"@@ -0,0 +1,248 @@\n+/*\n+ * Copyright (c) 2008-2015, Hazelcast, Inc. All Rights Reserved.\n+ *\n+ * Licensed under the Apache License, Version 2.0 (the \"License\");\n+ * you may not use this file except in compliance with the License.\n+ * You may obtain a copy of the License at\n+ *\n+ * http://www.apache.org/licenses/LICENSE-2.0\n+ *\n+ * Unless required by applicable law or agreed to in writing, software\n+ * distributed under the License is distributed on an \"AS IS\" BASIS,\n+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n+ * See the License for the specific language governing permissions and\n+ * limitations under the License.\n+ */\n+\n+package com.hazelcast.client.proxy;\n+\n+import com.hazelcast.client.impl.ClientMessageDecoder;\n+import com.hazelcast.client.impl.protocol.ClientMessage;\n+import com.hazelcast.client.impl.protocol.codec.RingbufferAddAllCodec;\n+import com.hazelcast.client.impl.protocol.codec.RingbufferAddCodec;\n+import com.hazelcast.client.impl.protocol.codec.RingbufferCapacityCodec;\n+import com.hazelcast.client.impl.protocol.codec.RingbufferHeadSequenceCodec;\n+import com.hazelcast.client.impl.protocol.codec.RingbufferReadManyCodec;\n+import com.hazelcast.client.impl.protocol.codec.RingbufferReadOneCodec;\n+import com.hazelcast.client.impl.protocol.codec.RingbufferRemainingCapacityCodec;\n+import com.hazelcast.client.impl.protocol.codec.RingbufferSizeCodec;\n+import com.hazelcast.client.impl.protocol.codec.RingbufferTailSequenceCodec;\n+import com.hazelcast.client.spi.ClientProxy;\n+import com.hazelcast.client.spi.impl.ClientInvocation;\n+import com.hazelcast.client.spi.impl.ClientInvocationFuture;\n+import com.hazelcast.client.util.ClientDelegatingFuture;\n+import com.hazelcast.core.ICompletableFuture;\n+import com.hazelcast.core.IFunction;\n+import com.hazelcast.nio.serialization.Data;\n+import com.hazelcast.nio.serialization.SerializationService;\n+import com.hazelcast.ringbuffer.OverflowPolicy;\n+import com.hazelcast.ringbuffer.ReadResultSet;\n+import com.hazelcast.ringbuffer.Ringbuffer;\n+import com.hazelcast.ringbuffer.impl.client.PortableReadResultSet;\n+import com.hazelcast.util.ExceptionUtil;\n+\n+import java.util.ArrayList;\n+import java.util.Collection;\n+import java.util.List;\n+\n+import static com.hazelcast.ringbuffer.impl.RingbufferProxy.MAX_BATCH_SIZE;\n+import static com.hazelcast.util.Preconditions.checkFalse;\n+import static com.hazelcast.util.Preconditions.checkNotNegative;\n+import static com.hazelcast.util.Preconditions.checkNotNull;\n+import static com.hazelcast.util.Preconditions.checkTrue;\n+\n+public class ClientRingbufferProxy<E> extends ClientProxy implements Ringbuffer<E> {\n+\n+    private static final ClientMessageDecoder ADD_ASYNC_ASYNC_RESPONSE_DECODER = new ClientMessageDecoder() {\n+        @Override\n+        public Long decodeClientMessage(ClientMessage clientMessage) {\n+            return RingbufferAddCodec.decodeResponse(clientMessage).response;\n+        }\n+    };\n+\n+    private static final ClientMessageDecoder ADD_ALL_ASYNC_RESPONSE_DECODER = new ClientMessageDecoder() {\n+        @Override\n+        public Long decodeClientMessage(ClientMessage clientMessage) {\n+            return RingbufferAddAllCodec.decodeResponse(clientMessage).response;\n+        }\n+    };\n+\n+    private ClientMessageDecoder readManyAsyncResponseDecoder;\n+\n+    private int partitionId;\n+    private volatile long capacity = -1;\n+\n+    public ClientRingbufferProxy(String serviceName, String objectName) {\n+        super(serviceName, objectName);\n+    }\n+\n+    @Override\n+    protected void onInitialize() {\n+        partitionId = getContext().getPartitionService().getPartitionId(getName());\n+        final SerializationService serializationService = getContext().getSerializationService();\n+\n+        readManyAsyncResponseDecoder = new ClientMessageDecoder() {\n+            @Override\n+            public PortableReadResultSet decodeClientMessage(ClientMessage clientMessage) {\n+                Data response = RingbufferReadManyCodec.decodeResponse(clientMessage).response;\n+                PortableReadResultSet readResultSet = serializationService.toObject(response);\n+                readResultSet.setSerializationService(serializationService);\n+                return readResultSet;\n+            }\n+        };\n+    }\n+\n+    @Override\n+    public long capacity() {\n+        if (capacity == -1) {\n+            ClientMessage request = RingbufferCapacityCodec.encodeRequest(getName());\n+            ClientMessage response = invoke(request);\n+            RingbufferCapacityCodec.ResponseParameters resultParameters = RingbufferCapacityCodec.decodeResponse(response);\n+            capacity = resultParameters.response;\n+        }\n+\n+        return capacity;\n+    }\n+\n+    @Override\n+    public long size() {\n+        ClientMessage request = RingbufferSizeCodec.encodeRequest(getName());\n+        ClientMessage response = invoke(request);\n+        RingbufferSizeCodec.ResponseParameters resultParameters = RingbufferSizeCodec.decodeResponse(response);\n+        return resultParameters.response;\n+    }\n+\n+    @Override\n+    public long tailSequence() {\n+        ClientMessage request = RingbufferTailSequenceCodec.encodeRequest(getName());\n+        ClientMessage response = invoke(request);\n+        RingbufferTailSequenceCodec.ResponseParameters resultParameters = RingbufferTailSequenceCodec.decodeResponse(response);\n+        return resultParameters.response;\n+    }\n+\n+    @Override\n+    public long headSequence() {\n+        ClientMessage request = RingbufferHeadSequenceCodec.encodeRequest(getName());\n+        ClientMessage response = invoke(request);\n+        RingbufferHeadSequenceCodec.ResponseParameters resultParameters = RingbufferHeadSequenceCodec.decodeResponse(response);\n+        return resultParameters.response;\n+    }\n+\n+    @Override\n+    public long remainingCapacity() {\n+        ClientMessage request = RingbufferRemainingCapacityCodec.encodeRequest(getName());\n+        ClientMessage response = invoke(request);\n+        RingbufferRemainingCapacityCodec.ResponseParameters resultParameters\n+                = RingbufferRemainingCapacityCodec.decodeResponse(response);\n+        return resultParameters.response;\n+    }\n+\n+    @Override\n+    public long add(E item) {\n+        checkNotNull(item, \"item can't be null\");\n+\n+        Data element = toData(item);\n+        ClientMessage request = RingbufferAddCodec.encodeRequest(getName(), OverflowPolicy.OVERWRITE.getId(), element);\n+        ClientMessage response = invoke(request);\n+        RingbufferAddCodec.ResponseParameters resultParameters = RingbufferAddCodec.decodeResponse(response);\n+        return resultParameters.response;\n+    }\n+\n+    @Override\n+    public ICompletableFuture<Long> addAsync(E item, OverflowPolicy overflowPolicy) {\n+        checkNotNull(item, \"item can't be null\");\n+        checkNotNull(overflowPolicy, \"overflowPolicy can't be null\");\n+\n+        Data element = toData(item);\n+        ClientMessage request = RingbufferAddCodec.encodeRequest(getName(), overflowPolicy.getId(), element);\n+        request.setPartitionId(partitionId);\n+\n+        try {\n+            ClientInvocationFuture invocationFuture = new ClientInvocation(getClient(), request).invoke();\n+            return new ClientDelegatingFuture<Long>(\n+                    invocationFuture,\n+                    getContext().getSerializationService(),\n+                    ADD_ASYNC_ASYNC_RESPONSE_DECODER);\n+        } catch (Exception e) {\n+            throw ExceptionUtil.rethrow(e);\n+        }\n+    }\n+\n+    @Override\n+    public E readOne(long sequence) throws InterruptedException {\n+        checkSequence(sequence);\n+\n+        ClientMessage request = RingbufferReadOneCodec.encodeRequest(getName(), sequence);\n+        ClientMessage response = invoke(request);\n+        RingbufferReadOneCodec.ResponseParameters resultParameters = RingbufferReadOneCodec.decodeResponse(response);\n+        return toObject(resultParameters.response);\n+    }\n+\n+    @Override\n+    public ICompletableFuture<Long> addAllAsync(Collection<? extends E> collection, OverflowPolicy overflowPolicy) {\n+        checkNotNull(collection, \"collection can't be null\");\n+        checkNotNull(overflowPolicy, \"overflowPolicy can't be null\");\n+        checkFalse(collection.isEmpty(), \"collection can't be empty\");\n+        checkTrue(collection.size() <= MAX_BATCH_SIZE, \"collection can't be larger than \" + MAX_BATCH_SIZE);\n+\n+        final List<Data> valueList = new ArrayList<Data>(collection.size());\n+        for (E e : collection) {\n+            throwExceptionIfNull(e);\n+            valueList.add(toData(e));\n+        }\n+\n+        ClientMessage request = RingbufferAddAllCodec.encodeRequest(getName(), valueList, overflowPolicy.getId());\n+        request.setPartitionId(partitionId);\n+\n+        try {\n+            ClientInvocationFuture invocationFuture = new ClientInvocation(getClient(), request).invoke();\n+            return new ClientDelegatingFuture<Long>(\n+                    invocationFuture,\n+                    getContext().getSerializationService(),\n+                    ADD_ALL_ASYNC_RESPONSE_DECODER);\n+        } catch (Exception e) {\n+            throw ExceptionUtil.rethrow(e);\n+        }\n+    }\n+\n+    @Override\n+    public ICompletableFuture<ReadResultSet<E>> readManyAsync(long startSequence, int minCount,\n+                                                              int maxCount, IFunction<E, Boolean> filter) {\n+\n+        checkSequence(startSequence);\n+        checkNotNegative(minCount, \"minCount can't be smaller than 0\");\n+        checkTrue(maxCount >= minCount, \"maxCount should be equal or larger than minCount\");\n+        checkTrue(minCount <= capacity(), \"the minCount should be smaller than or equal to the capacity\");\n+        checkTrue(maxCount <= MAX_BATCH_SIZE, \"maxCount can't be larger than \" + MAX_BATCH_SIZE);\n+\n+        ClientMessage request = RingbufferReadManyCodec.encodeRequest(\n+                getName(),\n+                startSequence,\n+                minCount,\n+                maxCount,\n+                toData(filter));\n+        request.setPartitionId(partitionId);\n+\n+        try {\n+            ClientInvocationFuture invocationFuture = new ClientInvocation(getClient(), request).invoke();\n+            return new ClientDelegatingFuture<ReadResultSet<E>>(\n+                    invocationFuture,\n+                    getContext().getSerializationService(),\n+                    readManyAsyncResponseDecoder);\n+        } catch (Exception e) {\n+            throw ExceptionUtil.rethrow(e);\n+        }\n+    }\n+\n+    private static void checkSequence(long sequence) {\n+        if (sequence < 0) {\n+            throw new IllegalArgumentException(\"sequence can't be smaller than 0, but was: \" + sequence);\n+        }\n+    }\n+\n+    @Override\n+    protected <T> T invoke(ClientMessage req) {\n+        req.setPartitionId(partitionId);\n+        return super.invoke(req);","path":"hazelcast-client-new/src/main/java/com/hazelcast/client/proxy/ClientRingbufferProxy.java","position":246,"original_position":246,"commit_id":"8ab749c846b493f1383bae9b94a11f278ea93a48","original_commit_id":"8ab749c846b493f1383bae9b94a11f278ea93a48","user":{"login":"pveentjer","id":105243,"avatar_url":"https://avatars.githubusercontent.com/u/105243?v=3","gravatar_id":"","url":"https://api.github.com/users/pveentjer","html_url":"https://github.com/pveentjer","followers_url":"https://api.github.com/users/pveentjer/followers","following_url":"https://api.github.com/users/pveentjer/following{/other_user}","gists_url":"https://api.github.com/users/pveentjer/gists{/gist_id}","starred_url":"https://api.github.com/users/pveentjer/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/pveentjer/subscriptions","organizations_url":"https://api.github.com/users/pveentjer/orgs","repos_url":"https://api.github.com/users/pveentjer/repos","events_url":"https://api.github.com/users/pveentjer/events{/privacy}","received_events_url":"https://api.github.com/users/pveentjer/received_events","type":"User","site_admin":false},"body":"Why do you think it is invoked on a random node? The partition id is set.","created_at":"2015-08-11T11:29:16Z","updated_at":"2015-08-11T11:29:16Z","html_url":"https://github.com/hazelcast/hazelcast/pull/5861#discussion_r36734831","pull_request_url":"https://api.github.com/repos/hazelcast/hazelcast/pulls/5861","_links":{"self":{"href":"https://api.github.com/repos/hazelcast/hazelcast/pulls/comments/36734831"},"html":{"href":"https://github.com/hazelcast/hazelcast/pull/5861#discussion_r36734831"},"pull_request":{"href":"https://api.github.com/repos/hazelcast/hazelcast/pulls/5861"}}},"pull_request":{"url":"https://api.github.com/repos/hazelcast/hazelcast/pulls/5861","id":41641892,"html_url":"https://github.com/hazelcast/hazelcast/pull/5861","diff_url":"https://github.com/hazelcast/hazelcast/pull/5861.diff","patch_url":"https://github.com/hazelcast/hazelcast/pull/5861.patch","issue_url":"https://api.github.com/repos/hazelcast/hazelcast/issues/5861","number":5861,"state":"open","locked":false,"title":"Ringbuffer for new client","user":{"login":"pveentjer","id":105243,"avatar_url":"https://avatars.githubusercontent.com/u/105243?v=3","gravatar_id":"","url":"https://api.github.com/users/pveentjer","html_url":"https://github.com/pveentjer","followers_url":"https://api.github.com/users/pveentjer/followers","following_url":"https://api.github.com/users/pveentjer/following{/other_user}","gists_url":"https://api.github.com/users/pveentjer/gists{/gist_id}","starred_url":"https://api.github.com/users/pveentjer/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/pveentjer/subscriptions","organizations_url":"https://api.github.com/users/pveentjer/orgs","repos_url":"https://api.github.com/users/pveentjer/repos","events_url":"https://api.github.com/users/pveentjer/events{/privacy}","received_events_url":"https://api.github.com/users/pveentjer/received_events","type":"User","site_admin":false},"body":"","created_at":"2015-08-05T04:23:56Z","updated_at":"2015-08-11T11:29:16Z","closed_at":null,"merged_at":null,"merge_commit_sha":"1251ff741a13c8b77e985d136e9df848840f53bc","assignee":null,"milestone":{"url":"https://api.github.com/repos/hazelcast/hazelcast/milestones/61","html_url":"https://github.com/hazelcast/hazelcast/milestones/3.6","labels_url":"https://api.github.com/repos/hazelcast/hazelcast/milestones/61/labels","id":982584,"number":61,"title":"3.6","description":"","creator":{"login":"enesakar","id":234086,"avatar_url":"https://avatars.githubusercontent.com/u/234086?v=3","gravatar_id":"","url":"https://api.github.com/users/enesakar","html_url":"https://github.com/enesakar","followers_url":"https://api.github.com/users/enesakar/followers","following_url":"https://api.github.com/users/enesakar/following{/other_user}","gists_url":"https://api.github.com/users/enesakar/gists{/gist_id}","starred_url":"https://api.github.com/users/enesakar/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/enesakar/subscriptions","organizations_url":"https://api.github.com/users/enesakar/orgs","repos_url":"https://api.github.com/users/enesakar/repos","events_url":"https://api.github.com/users/enesakar/events{/privacy}","received_events_url":"https://api.github.com/users/enesakar/received_events","type":"User","site_admin":false},"open_issues":148,"closed_issues":206,"state":"open","created_at":"2015-02-17T09:27:09Z","updated_at":"2015-08-11T11:27:27Z","due_on":null,"closed_at":null},"commits_url":"https://api.github.com/repos/hazelcast/hazelcast/pulls/5861/commits","review_comments_url":"https://api.github.com/repos/hazelcast/hazelcast/pulls/5861/comments","review_comment_url":"https://api.github.com/repos/hazelcast/hazelcast/pulls/comments{/number}","comments_url":"https://api.github.com/repos/hazelcast/hazelcast/issues/5861/comments","statuses_url":"https://api.github.com/repos/hazelcast/hazelcast/statuses/8ab749c846b493f1383bae9b94a11f278ea93a48","head":{"label":"pveentjer:feature/3.x/ringbuffer-newclient","ref":"feature/3.x/ringbuffer-newclient","sha":"8ab749c846b493f1383bae9b94a11f278ea93a48","user":{"login":"pveentjer","id":105243,"avatar_url":"https://avatars.githubusercontent.com/u/105243?v=3","gravatar_id":"","url":"https://api.github.com/users/pveentjer","html_url":"https://github.com/pveentjer","followers_url":"https://api.github.com/users/pveentjer/followers","following_url":"https://api.github.com/users/pveentjer/following{/other_user}","gists_url":"https://api.github.com/users/pveentjer/gists{/gist_id}","starred_url":"https://api.github.com/users/pveentjer/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/pveentjer/subscriptions","organizations_url":"https://api.github.com/users/pveentjer/orgs","repos_url":"https://api.github.com/users/pveentjer/repos","events_url":"https://api.github.com/users/pveentjer/events{/privacy}","received_events_url":"https://api.github.com/users/pveentjer/received_events","type":"User","site_admin":false},"repo":{"id":10990111,"name":"hazelcast","full_name":"pveentjer/hazelcast","owner":{"login":"pveentjer","id":105243,"avatar_url":"https://avatars.githubusercontent.com/u/105243?v=3","gravatar_id":"","url":"https://api.github.com/users/pveentjer","html_url":"https://github.com/pveentjer","followers_url":"https://api.github.com/users/pveentjer/followers","following_url":"https://api.github.com/users/pveentjer/following{/other_user}","gists_url":"https://api.github.com/users/pveentjer/gists{/gist_id}","starred_url":"https://api.github.com/users/pveentjer/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/pveentjer/subscriptions","organizations_url":"https://api.github.com/users/pveentjer/orgs","repos_url":"https://api.github.com/users/pveentjer/repos","events_url":"https://api.github.com/users/pveentjer/events{/privacy}","received_events_url":"https://api.github.com/users/pveentjer/received_events","type":"User","site_admin":false},"private":false,"html_url":"https://github.com/pveentjer/hazelcast","description":"Open Source In-Memory Data Grid","fork":true,"url":"https://api.github.com/repos/pveentjer/hazelcast","forks_url":"https://api.github.com/repos/pveentjer/hazelcast/forks","keys_url":"https://api.github.com/repos/pveentjer/hazelcast/keys{/key_id}","collaborators_url":"https://api.github.com/repos/pveentjer/hazelcast/collaborators{/collaborator}","teams_url":"https://api.github.com/repos/pveentjer/hazelcast/teams","hooks_url":"https://api.github.com/repos/pveentjer/hazelcast/hooks","issue_events_url":"https://api.github.com/repos/pveentjer/hazelcast/issues/events{/number}","events_url":"https://api.github.com/repos/pveentjer/hazelcast/events","assignees_url":"https://api.github.com/repos/pveentjer/hazelcast/assignees{/user}","branches_url":"https://api.github.com/repos/pveentjer/hazelcast/branches{/branch}","tags_url":"https://api.github.com/repos/pveentjer/hazelcast/tags","blobs_url":"https://api.github.com/repos/pveentjer/hazelcast/git/blobs{/sha}","git_tags_url":"https://api.github.com/repos/pveentjer/hazelcast/git/tags{/sha}","git_refs_url":"https://api.github.com/repos/pveentjer/hazelcast/git/refs{/sha}","trees_url":"https://api.github.com/repos/pveentjer/hazelcast/git/trees{/sha}","statuses_url":"https://api.github.com/repos/pveentjer/hazelcast/statuses/{sha}","languages_url":"https://api.github.com/repos/pveentjer/hazelcast/languages","stargazers_url":"https://api.github.com/repos/pveentjer/hazelcast/stargazers","contributors_url":"https://api.github.com/repos/pveentjer/hazelcast/contributors","subscribers_url":"https://api.github.com/repos/pveentjer/hazelcast/subscribers","subscription_url":"https://api.github.com/repos/pveentjer/hazelcast/subscription","commits_url":"https://api.github.com/repos/pveentjer/hazelcast/commits{/sha}","git_commits_url":"https://api.github.com/repos/pveentjer/hazelcast/git/commits{/sha}","comments_url":"https://api.github.com/repos/pveentjer/hazelcast/comments{/number}","issue_comment_url":"https://api.github.com/repos/pveentjer/hazelcast/issues/comments{/number}","contents_url":"https://api.github.com/repos/pveentjer/hazelcast/contents/{+path}","compare_url":"https://api.github.com/repos/pveentjer/hazelcast/compare/{base}...{head}","merges_url":"https://api.github.com/repos/pveentjer/hazelcast/merges","archive_url":"https://api.github.com/repos/pveentjer/hazelcast/{archive_format}{/ref}","downloads_url":"https://api.github.com/repos/pveentjer/hazelcast/downloads","issues_url":"https://api.github.com/repos/pveentjer/hazelcast/issues{/number}","pulls_url":"https://api.github.com/repos/pveentjer/hazelcast/pulls{/number}","milestones_url":"https://api.github.com/repos/pveentjer/hazelcast/milestones{/number}","notifications_url":"https://api.github.com/repos/pveentjer/hazelcast/notifications{?since,all,participating}","labels_url":"https://api.github.com/repos/pveentjer/hazelcast/labels{/name}","releases_url":"https://api.github.com/repos/pveentjer/hazelcast/releases{/id}","created_at":"2013-06-27T07:15:08Z","updated_at":"2015-04-22T04:00:47Z","pushed_at":"2015-08-11T10:59:24Z","git_url":"git://github.com/pveentjer/hazelcast.git","ssh_url":"git@github.com:pveentjer/hazelcast.git","clone_url":"https://github.com/pveentjer/hazelcast.git","svn_url":"https://github.com/pveentjer/hazelcast","homepage":"www.hazelcast.com","size":78531,"stargazers_count":0,"watchers_count":0,"language":"Java","has_issues":false,"has_downloads":true,"has_wiki":false,"has_pages":false,"forks_count":1,"mirror_url":null,"open_issues_count":0,"forks":1,"open_issues":0,"watchers":0,"default_branch":"master"}},"base":{"label":"hazelcast:master","ref":"master","sha":"42c497fd2cd5fae3f6097086045dc581c227ac64","user":{"login":"hazelcast","id":1453152,"avatar_url":"https://avatars.githubusercontent.com/u/1453152?v=3","gravatar_id":"","url":"https://api.github.com/users/hazelcast","html_url":"https://github.com/hazelcast","followers_url":"https://api.github.com/users/hazelcast/followers","following_url":"https://api.github.com/users/hazelcast/following{/other_user}","gists_url":"https://api.github.com/users/hazelcast/gists{/gist_id}","starred_url":"https://api.github.com/users/hazelcast/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/hazelcast/subscriptions","organizations_url":"https://api.github.com/users/hazelcast/orgs","repos_url":"https://api.github.com/users/hazelcast/repos","events_url":"https://api.github.com/users/hazelcast/events{/privacy}","received_events_url":"https://api.github.com/users/hazelcast/received_events","type":"Organization","site_admin":false},"repo":{"id":3786237,"name":"hazelcast","full_name":"hazelcast/hazelcast","owner":{"login":"hazelcast","id":1453152,"avatar_url":"https://avatars.githubusercontent.com/u/1453152?v=3","gravatar_id":"","url":"https://api.github.com/users/hazelcast","html_url":"https://github.com/hazelcast","followers_url":"https://api.github.com/users/hazelcast/followers","following_url":"https://api.github.com/users/hazelcast/following{/other_user}","gists_url":"https://api.github.com/users/hazelcast/gists{/gist_id}","starred_url":"https://api.github.com/users/hazelcast/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/hazelcast/subscriptions","organizations_url":"https://api.github.com/users/hazelcast/orgs","repos_url":"https://api.github.com/users/hazelcast/repos","events_url":"https://api.github.com/users/hazelcast/events{/privacy}","received_events_url":"https://api.github.com/users/hazelcast/received_events","type":"Organization","site_admin":false},"private":false,"html_url":"https://github.com/hazelcast/hazelcast","description":"Open Source In-Memory Data Grid","fork":false,"url":"https://api.github.com/repos/hazelcast/hazelcast","forks_url":"https://api.github.com/repos/hazelcast/hazelcast/forks","keys_url":"https://api.github.com/repos/hazelcast/hazelcast/keys{/key_id}","collaborators_url":"https://api.github.com/repos/hazelcast/hazelcast/collaborators{/collaborator}","teams_url":"https://api.github.com/repos/hazelcast/hazelcast/teams","hooks_url":"https://api.github.com/repos/hazelcast/hazelcast/hooks","issue_events_url":"https://api.github.com/repos/hazelcast/hazelcast/issues/events{/number}","events_url":"https://api.github.com/repos/hazelcast/hazelcast/events","assignees_url":"https://api.github.com/repos/hazelcast/hazelcast/assignees{/user}","branches_url":"https://api.github.com/repos/hazelcast/hazelcast/branches{/branch}","tags_url":"https://api.github.com/repos/hazelcast/hazelcast/tags","blobs_url":"https://api.github.com/repos/hazelcast/hazelcast/git/blobs{/sha}","git_tags_url":"https://api.github.com/repos/hazelcast/hazelcast/git/tags{/sha}","git_refs_url":"https://api.github.com/repos/hazelcast/hazelcast/git/refs{/sha}","trees_url":"https://api.github.com/repos/hazelcast/hazelcast/git/trees{/sha}","statuses_url":"https://api.github.com/repos/hazelcast/hazelcast/statuses/{sha}","languages_url":"https://api.github.com/repos/hazelcast/hazelcast/languages","stargazers_url":"https://api.github.com/repos/hazelcast/hazelcast/stargazers","contributors_url":"https://api.github.com/repos/hazelcast/hazelcast/contributors","subscribers_url":"https://api.github.com/repos/hazelcast/hazelcast/subscribers","subscription_url":"https://api.github.com/repos/hazelcast/hazelcast/subscription","commits_url":"https://api.github.com/repos/hazelcast/hazelcast/commits{/sha}","git_commits_url":"https://api.github.com/repos/hazelcast/hazelcast/git/commits{/sha}","comments_url":"https://api.github.com/repos/hazelcast/hazelcast/comments{/number}","issue_comment_url":"https://api.github.com/repos/hazelcast/hazelcast/issues/comments{/number}","contents_url":"https://api.github.com/repos/hazelcast/hazelcast/contents/{+path}","compare_url":"https://api.github.com/repos/hazelcast/hazelcast/compare/{base}...{head}","merges_url":"https://api.github.com/repos/hazelcast/hazelcast/merges","archive_url":"https://api.github.com/repos/hazelcast/hazelcast/{archive_format}{/ref}","downloads_url":"https://api.github.com/repos/hazelcast/hazelcast/downloads","issues_url":"https://api.github.com/repos/hazelcast/hazelcast/issues{/number}","pulls_url":"https://api.github.com/repos/hazelcast/hazelcast/pulls{/number}","milestones_url":"https://api.github.com/repos/hazelcast/hazelcast/milestones{/number}","notifications_url":"https://api.github.com/repos/hazelcast/hazelcast/notifications{?since,all,participating}","labels_url":"https://api.github.com/repos/hazelcast/hazelcast/labels{/name}","releases_url":"https://api.github.com/repos/hazelcast/hazelcast/releases{/id}","created_at":"2012-03-21T12:25:18Z","updated_at":"2015-08-10T00:22:56Z","pushed_at":"2015-08-11T11:28:09Z","git_url":"git://github.com/hazelcast/hazelcast.git","ssh_url":"git@github.com:hazelcast/hazelcast.git","clone_url":"https://github.com/hazelcast/hazelcast.git","svn_url":"https://github.com/hazelcast/hazelcast","homepage":"www.hazelcast.com","size":146565,"stargazers_count":1201,"watchers_count":1201,"language":"Java","has_issues":true,"has_downloads":true,"has_wiki":false,"has_pages":false,"forks_count":581,"mirror_url":null,"open_issues_count":501,"forks":581,"open_issues":501,"watchers":1201,"default_branch":"master"}},"_links":{"self":{"href":"https://api.github.com/repos/hazelcast/hazelcast/pulls/5861"},"html":{"href":"https://github.com/hazelcast/hazelcast/pull/5861"},"issue":{"href":"https://api.github.com/repos/hazelcast/hazelcast/issues/5861"},"comments":{"href":"https://api.github.com/repos/hazelcast/hazelcast/issues/5861/comments"},"review_comments":{"href":"https://api.github.com/repos/hazelcast/hazelcast/pulls/5861/comments"},"review_comment":{"href":"https://api.github.com/repos/hazelcast/hazelcast/pulls/comments{/number}"},"commits":{"href":"https://api.github.com/repos/hazelcast/hazelcast/pulls/5861/commits"},"statuses":{"href":"https://api.github.com/repos/hazelcast/hazelcast/statuses/8ab749c846b493f1383bae9b94a11f278ea93a48"}}}}