{"action":"created","comment":{"url":"https://api.github.com/repos/ow2-proactive/scheduling/pulls/comments/181827565","pull_request_review_id":112519500,"id":181827565,"diff_hunk":"@@ -0,0 +1,145 @@\n+/*\n+ * ProActive Parallel Suite(TM):\n+ * The Open Source library for parallel and distributed\n+ * Workflows & Scheduling, Orchestration, Cloud Automation\n+ * and Big Data Analysis on Enterprise Grids & Clouds.\n+ *\n+ * Copyright (c) 2007 - 2017 ActiveEon\n+ * Contact: contact@activeeon.com\n+ *\n+ * This library is free software: you can redistribute it and/or\n+ * modify it under the terms of the GNU Affero General Public License\n+ * as published by the Free Software Foundation: version 3 of\n+ * the License.\n+ *\n+ * This program is distributed in the hope that it will be useful,\n+ * but WITHOUT ANY WARRANTY; without even the implied warranty of\n+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the\n+ * GNU Affero General Public License for more details.\n+ *\n+ * You should have received a copy of the GNU Affero General Public License\n+ * along with this program. If not, see <http://www.gnu.org/licenses/>.\n+ *\n+ * If needed, contact us to obtain a release under GPL Version 2 or 3\n+ * or a different license than the AGPL.\n+ */\n+package org.ow2.proactive.scheduler.synchronization;\n+\n+import java.io.IOException;\n+import java.io.Serializable;\n+import java.util.Collection;\n+import java.util.Map;\n+import java.util.Set;\n+import java.util.function.BiConsumer;\n+import java.util.function.BiFunction;\n+import java.util.function.Function;\n+\n+import org.objectweb.proactive.annotation.PublicAPI;\n+import org.ow2.proactive.scheduler.common.task.TaskId;\n+\n+\n+/**\n+ * @author ActiveEon Team\n+ * @since 27/03/2018\n+ */\n+public interface SynchronizationInternal extends Serializable {\n+\n+    // Channel Operations\n+\n+    boolean createChannel(String originator, TaskId taskid, String name, boolean isPersistent) throws IOException;\n+\n+    boolean createChannelIfAbsent(String originator, TaskId taskid, String name, boolean isPersistent)\n+            throws IOException;\n+\n+    boolean deleteChannel(String originator, TaskId taskid, String name) throws IOException;\n+\n+    // Standard map operations\n+\n+    int size(String originator, TaskId taskid, String channel) throws InvalidChannelException;\n+\n+    boolean isEmpty(String originator, TaskId taskid, String channel) throws InvalidChannelException;\n+\n+    boolean containsKey(String originator, TaskId taskid, String channel, String key) throws InvalidChannelException;\n+\n+    boolean containsValue(String originator, TaskId taskid, String channel, Serializable value)\n+            throws InvalidChannelException;\n+\n+    <T extends Serializable> T get(String originator, TaskId taskid, String channel, String key)\n+            throws InvalidChannelException;\n+\n+    <T extends Serializable> T put(String originator, TaskId taskid, String channel, String key, T value)\n+            throws InvalidChannelException, IOException;\n+\n+    <T extends Serializable> T remove(String originator, TaskId taskid, String channel, String key)\n+            throws InvalidChannelException, IOException;\n+\n+    <T extends Serializable> void putAll(String originator, TaskId taskid, String channel,\n+            Map<? extends String, ? extends T> m) throws InvalidChannelException, IOException;\n+\n+    void clear(String originator, TaskId taskid, String channel) throws InvalidChannelException, IOException;\n+\n+    Set<String> keySet(String originator, TaskId taskid, String channel) throws InvalidChannelException;\n+\n+    <T extends Serializable> Collection<T> values(String originator, TaskId taskid, String channel)\n+            throws InvalidChannelException;\n+\n+    <T extends Serializable> Set<Map.Entry<String, T>> entrySet(String originator, TaskId taskid, String channel)\n+            throws InvalidChannelException;\n+\n+    <T extends Serializable> T getOrDefault(String originator, TaskId taskid, String channel, String key,\n+            T defaultValue) throws InvalidChannelException;\n+\n+    void forEach(String originator, TaskId taskid, String channel, String action)\n+            throws InvalidChannelException, CompilationException;\n+\n+    void replaceAll(String originator, TaskId taskid, String channel, String function)\n+            throws InvalidChannelException, CompilationException, IOException;\n+\n+    <T extends Serializable> T putIfAbsent(String originator, TaskId taskid, String channel, String key, T value)\n+            throws InvalidChannelException, IOException;\n+\n+    <T extends Serializable> boolean remove(String originator, TaskId taskid, String channel, String key, T value)\n+            throws InvalidChannelException, IOException;\n+\n+    <T extends Serializable> boolean replace(String originator, TaskId taskid, String channel, String key, T oldValue,\n+            T newValue) throws InvalidChannelException, IOException;\n+\n+    <T extends Serializable> T replace(String originator, TaskId taskid, String channel, String key, T value)\n+            throws InvalidChannelException, IOException;\n+\n+    <T extends Serializable> T computeIfAbsent(String originator, TaskId taskid, String channel, String key,\n+            String mappingFunction) throws InvalidChannelException, CompilationException, IOException;\n+\n+    <T extends Serializable> T computeIfPresent(String originator, TaskId taskid, String channel, String key,\n+            String remappingFunction) throws InvalidChannelException, CompilationException, IOException;","path":"scheduler/scheduler-api/src/main/java/org/ow2/proactive/scheduler/synchronization/SynchronizationInternal.java","position":114,"original_position":114,"commit_id":"c36755b6e6431c89815148c9f88103a1eb2ded0f","original_commit_id":"c36755b6e6431c89815148c9f88103a1eb2ded0f","user":{"login":"sonarqube-activeeon","id":14940028,"avatar_url":"https://avatars1.githubusercontent.com/u/14940028?v=4","gravatar_id":"","url":"https://api.github.com/users/sonarqube-activeeon","html_url":"https://github.com/sonarqube-activeeon","followers_url":"https://api.github.com/users/sonarqube-activeeon/followers","following_url":"https://api.github.com/users/sonarqube-activeeon/following{/other_user}","gists_url":"https://api.github.com/users/sonarqube-activeeon/gists{/gist_id}","starred_url":"https://api.github.com/users/sonarqube-activeeon/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/sonarqube-activeeon/subscriptions","organizations_url":"https://api.github.com/users/sonarqube-activeeon/orgs","repos_url":"https://api.github.com/users/sonarqube-activeeon/repos","events_url":"https://api.github.com/users/sonarqube-activeeon/events{/privacy}","received_events_url":"https://api.github.com/users/sonarqube-activeeon/received_events","type":"User","site_admin":false},"body":"![MINOR](https://sonarsource.github.io/sonar-github/severity-minor.png 'Severity: MINOR') Remove the redundant '!unknownSymbol!' thrown exception declaration(s). [![rule](https://sonarsource.github.io/sonar-github/rule.png)](https://sonarcloud.io/coding_rules#rule_key=squid%3ARedundantThrowsDeclarationCheck)\n","created_at":"2018-04-16T17:42:20Z","updated_at":"2018-04-16T17:42:20Z","html_url":"https://github.com/ow2-proactive/scheduling/pull/3187#discussion_r181827565","pull_request_url":"https://api.github.com/repos/ow2-proactive/scheduling/pulls/3187","author_association":"NONE","_links":{"self":{"href":"https://api.github.com/repos/ow2-proactive/scheduling/pulls/comments/181827565"},"html":{"href":"https://github.com/ow2-proactive/scheduling/pull/3187#discussion_r181827565"},"pull_request":{"href":"https://api.github.com/repos/ow2-proactive/scheduling/pulls/3187"}}},"pull_request":{"url":"https://api.github.com/repos/ow2-proactive/scheduling/pulls/3187","id":181484215,"html_url":"https://github.com/ow2-proactive/scheduling/pull/3187","diff_url":"https://github.com/ow2-proactive/scheduling/pull/3187.diff","patch_url":"https://github.com/ow2-proactive/scheduling/pull/3187.patch","issue_url":"https://api.github.com/repos/ow2-proactive/scheduling/issues/3187","number":3187,"state":"open","locked":false,"title":"Synchronization API","user":{"login":"fviale","id":3063713,"avatar_url":"https://avatars0.githubusercontent.com/u/3063713?v=4","gravatar_id":"","url":"https://api.github.com/users/fviale","html_url":"https://github.com/fviale","followers_url":"https://api.github.com/users/fviale/followers","following_url":"https://api.github.com/users/fviale/following{/other_user}","gists_url":"https://api.github.com/users/fviale/gists{/gist_id}","starred_url":"https://api.github.com/users/fviale/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/fviale/subscriptions","organizations_url":"https://api.github.com/users/fviale/orgs","repos_url":"https://api.github.com/users/fviale/repos","events_url":"https://api.github.com/users/fviale/events{/privacy}","received_events_url":"https://api.github.com/users/fviale/received_events","type":"User","site_admin":false},"body":" - Added Synchronization interface in scheduler-api which defines the Synchronization service API\r\n - Added SynchronizationInternal interface which is an extension of the Synchronization interface with additional internal information such as the Task ID originating the operation\r\n - Added AOSynchronization active object as the implementation of the service\r\n - Added SynchronizationWrapper which acts as the frontend for the user\r\n - Modified SchedulerFrontend to start the service automatically with the scheduler\r\n - Created the \"synchronizationapi\" binding, in all scripts (selection, task, cleaning, etc...)\r\n - Add the possibility to use the Sychronization API in JavaExecutable\r\n - Allow ProActive Programming to be used in forked task jvms (this is done by properly forwarding the node.ini ProActive configuration and java.security.policy from the node to the forked JVM)\r\n - Include the node.ini configuration as resource inside the rm-node jar. This is to allow default parameters.\r\n - Added unit tests and functional test","created_at":"2018-04-13T13:12:46Z","updated_at":"2018-04-16T17:42:20Z","closed_at":null,"merged_at":null,"merge_commit_sha":"cdd5c41ee8b7382ca38e8a29177f9169441f0841","assignee":null,"assignees":[],"requested_reviewers":[],"requested_teams":[],"labels":[],"milestone":null,"commits_url":"https://api.github.com/repos/ow2-proactive/scheduling/pulls/3187/commits","review_comments_url":"https://api.github.com/repos/ow2-proactive/scheduling/pulls/3187/comments","review_comment_url":"https://api.github.com/repos/ow2-proactive/scheduling/pulls/comments{/number}","comments_url":"https://api.github.com/repos/ow2-proactive/scheduling/issues/3187/comments","statuses_url":"https://api.github.com/repos/ow2-proactive/scheduling/statuses/c36755b6e6431c89815148c9f88103a1eb2ded0f","head":{"label":"fviale:master","ref":"master","sha":"c36755b6e6431c89815148c9f88103a1eb2ded0f","user":{"login":"fviale","id":3063713,"avatar_url":"https://avatars0.githubusercontent.com/u/3063713?v=4","gravatar_id":"","url":"https://api.github.com/users/fviale","html_url":"https://github.com/fviale","followers_url":"https://api.github.com/users/fviale/followers","following_url":"https://api.github.com/users/fviale/following{/other_user}","gists_url":"https://api.github.com/users/fviale/gists{/gist_id}","starred_url":"https://api.github.com/users/fviale/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/fviale/subscriptions","organizations_url":"https://api.github.com/users/fviale/orgs","repos_url":"https://api.github.com/users/fviale/repos","events_url":"https://api.github.com/users/fviale/events{/privacy}","received_events_url":"https://api.github.com/users/fviale/received_events","type":"User","site_admin":false},"repo":{"id":78038357,"name":"scheduling","full_name":"fviale/scheduling","owner":{"login":"fviale","id":3063713,"avatar_url":"https://avatars0.githubusercontent.com/u/3063713?v=4","gravatar_id":"","url":"https://api.github.com/users/fviale","html_url":"https://github.com/fviale","followers_url":"https://api.github.com/users/fviale/followers","following_url":"https://api.github.com/users/fviale/following{/other_user}","gists_url":"https://api.github.com/users/fviale/gists{/gist_id}","starred_url":"https://api.github.com/users/fviale/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/fviale/subscriptions","organizations_url":"https://api.github.com/users/fviale/orgs","repos_url":"https://api.github.com/users/fviale/repos","events_url":"https://api.github.com/users/fviale/events{/privacy}","received_events_url":"https://api.github.com/users/fviale/received_events","type":"User","site_admin":false},"private":false,"html_url":"https://github.com/fviale/scheduling","description":"Multi-platform Scheduling and Workflows Engine","fork":true,"url":"https://api.github.com/repos/fviale/scheduling","forks_url":"https://api.github.com/repos/fviale/scheduling/forks","keys_url":"https://api.github.com/repos/fviale/scheduling/keys{/key_id}","collaborators_url":"https://api.github.com/repos/fviale/scheduling/collaborators{/collaborator}","teams_url":"https://api.github.com/repos/fviale/scheduling/teams","hooks_url":"https://api.github.com/repos/fviale/scheduling/hooks","issue_events_url":"https://api.github.com/repos/fviale/scheduling/issues/events{/number}","events_url":"https://api.github.com/repos/fviale/scheduling/events","assignees_url":"https://api.github.com/repos/fviale/scheduling/assignees{/user}","branches_url":"https://api.github.com/repos/fviale/scheduling/branches{/branch}","tags_url":"https://api.github.com/repos/fviale/scheduling/tags","blobs_url":"https://api.github.com/repos/fviale/scheduling/git/blobs{/sha}","git_tags_url":"https://api.github.com/repos/fviale/scheduling/git/tags{/sha}","git_refs_url":"https://api.github.com/repos/fviale/scheduling/git/refs{/sha}","trees_url":"https://api.github.com/repos/fviale/scheduling/git/trees{/sha}","statuses_url":"https://api.github.com/repos/fviale/scheduling/statuses/{sha}","languages_url":"https://api.github.com/repos/fviale/scheduling/languages","stargazers_url":"https://api.github.com/repos/fviale/scheduling/stargazers","contributors_url":"https://api.github.com/repos/fviale/scheduling/contributors","subscribers_url":"https://api.github.com/repos/fviale/scheduling/subscribers","subscription_url":"https://api.github.com/repos/fviale/scheduling/subscription","commits_url":"https://api.github.com/repos/fviale/scheduling/commits{/sha}","git_commits_url":"https://api.github.com/repos/fviale/scheduling/git/commits{/sha}","comments_url":"https://api.github.com/repos/fviale/scheduling/comments{/number}","issue_comment_url":"https://api.github.com/repos/fviale/scheduling/issues/comments{/number}","contents_url":"https://api.github.com/repos/fviale/scheduling/contents/{+path}","compare_url":"https://api.github.com/repos/fviale/scheduling/compare/{base}...{head}","merges_url":"https://api.github.com/repos/fviale/scheduling/merges","archive_url":"https://api.github.com/repos/fviale/scheduling/{archive_format}{/ref}","downloads_url":"https://api.github.com/repos/fviale/scheduling/downloads","issues_url":"https://api.github.com/repos/fviale/scheduling/issues{/number}","pulls_url":"https://api.github.com/repos/fviale/scheduling/pulls{/number}","milestones_url":"https://api.github.com/repos/fviale/scheduling/milestones{/number}","notifications_url":"https://api.github.com/repos/fviale/scheduling/notifications{?since,all,participating}","labels_url":"https://api.github.com/repos/fviale/scheduling/labels{/name}","releases_url":"https://api.github.com/repos/fviale/scheduling/releases{/id}","deployments_url":"https://api.github.com/repos/fviale/scheduling/deployments","created_at":"2017-01-04T17:41:08Z","updated_at":"2018-04-16T11:02:15Z","pushed_at":"2018-04-16T11:02:12Z","git_url":"git://github.com/fviale/scheduling.git","ssh_url":"git@github.com:fviale/scheduling.git","clone_url":"https://github.com/fviale/scheduling.git","svn_url":"https://github.com/fviale/scheduling","homepage":"http://www.activeeon.com/workflows-scheduling","size":72348,"stargazers_count":0,"watchers_count":0,"language":"Java","has_issues":false,"has_projects":true,"has_downloads":true,"has_wiki":true,"has_pages":false,"forks_count":0,"mirror_url":null,"archived":false,"open_issues_count":0,"license":{"key":"agpl-3.0","name":"GNU Affero General Public License v3.0","spdx_id":"AGPL-3.0","url":"https://api.github.com/licenses/agpl-3.0"},"forks":0,"open_issues":0,"watchers":0,"default_branch":"master"}},"base":{"label":"ow2-proactive:master","ref":"master","sha":"d198a23a5c65a174462e888795a9442af6c6f9dc","user":{"login":"ow2-proactive","id":11553998,"avatar_url":"https://avatars1.githubusercontent.com/u/11553998?v=4","gravatar_id":"","url":"https://api.github.com/users/ow2-proactive","html_url":"https://github.com/ow2-proactive","followers_url":"https://api.github.com/users/ow2-proactive/followers","following_url":"https://api.github.com/users/ow2-proactive/following{/other_user}","gists_url":"https://api.github.com/users/ow2-proactive/gists{/gist_id}","starred_url":"https://api.github.com/users/ow2-proactive/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/ow2-proactive/subscriptions","organizations_url":"https://api.github.com/users/ow2-proactive/orgs","repos_url":"https://api.github.com/users/ow2-proactive/repos","events_url":"https://api.github.com/users/ow2-proactive/events{/privacy}","received_events_url":"https://api.github.com/users/ow2-proactive/received_events","type":"Organization","site_admin":false},"repo":{"id":35725079,"name":"scheduling","full_name":"ow2-proactive/scheduling","owner":{"login":"ow2-proactive","id":11553998,"avatar_url":"https://avatars1.githubusercontent.com/u/11553998?v=4","gravatar_id":"","url":"https://api.github.com/users/ow2-proactive","html_url":"https://github.com/ow2-proactive","followers_url":"https://api.github.com/users/ow2-proactive/followers","following_url":"https://api.github.com/users/ow2-proactive/following{/other_user}","gists_url":"https://api.github.com/users/ow2-proactive/gists{/gist_id}","starred_url":"https://api.github.com/users/ow2-proactive/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/ow2-proactive/subscriptions","organizations_url":"https://api.github.com/users/ow2-proactive/orgs","repos_url":"https://api.github.com/users/ow2-proactive/repos","events_url":"https://api.github.com/users/ow2-proactive/events{/privacy}","received_events_url":"https://api.github.com/users/ow2-proactive/received_events","type":"Organization","site_admin":false},"private":false,"html_url":"https://github.com/ow2-proactive/scheduling","description":"Multi-platform Scheduling and Workflows Engine","fork":false,"url":"https://api.github.com/repos/ow2-proactive/scheduling","forks_url":"https://api.github.com/repos/ow2-proactive/scheduling/forks","keys_url":"https://api.github.com/repos/ow2-proactive/scheduling/keys{/key_id}","collaborators_url":"https://api.github.com/repos/ow2-proactive/scheduling/collaborators{/collaborator}","teams_url":"https://api.github.com/repos/ow2-proactive/scheduling/teams","hooks_url":"https://api.github.com/repos/ow2-proactive/scheduling/hooks","issue_events_url":"https://api.github.com/repos/ow2-proactive/scheduling/issues/events{/number}","events_url":"https://api.github.com/repos/ow2-proactive/scheduling/events","assignees_url":"https://api.github.com/repos/ow2-proactive/scheduling/assignees{/user}","branches_url":"https://api.github.com/repos/ow2-proactive/scheduling/branches{/branch}","tags_url":"https://api.github.com/repos/ow2-proactive/scheduling/tags","blobs_url":"https://api.github.com/repos/ow2-proactive/scheduling/git/blobs{/sha}","git_tags_url":"https://api.github.com/repos/ow2-proactive/scheduling/git/tags{/sha}","git_refs_url":"https://api.github.com/repos/ow2-proactive/scheduling/git/refs{/sha}","trees_url":"https://api.github.com/repos/ow2-proactive/scheduling/git/trees{/sha}","statuses_url":"https://api.github.com/repos/ow2-proactive/scheduling/statuses/{sha}","languages_url":"https://api.github.com/repos/ow2-proactive/scheduling/languages","stargazers_url":"https://api.github.com/repos/ow2-proactive/scheduling/stargazers","contributors_url":"https://api.github.com/repos/ow2-proactive/scheduling/contributors","subscribers_url":"https://api.github.com/repos/ow2-proactive/scheduling/subscribers","subscription_url":"https://api.github.com/repos/ow2-proactive/scheduling/subscription","commits_url":"https://api.github.com/repos/ow2-proactive/scheduling/commits{/sha}","git_commits_url":"https://api.github.com/repos/ow2-proactive/scheduling/git/commits{/sha}","comments_url":"https://api.github.com/repos/ow2-proactive/scheduling/comments{/number}","issue_comment_url":"https://api.github.com/repos/ow2-proactive/scheduling/issues/comments{/number}","contents_url":"https://api.github.com/repos/ow2-proactive/scheduling/contents/{+path}","compare_url":"https://api.github.com/repos/ow2-proactive/scheduling/compare/{base}...{head}","merges_url":"https://api.github.com/repos/ow2-proactive/scheduling/merges","archive_url":"https://api.github.com/repos/ow2-proactive/scheduling/{archive_format}{/ref}","downloads_url":"https://api.github.com/repos/ow2-proactive/scheduling/downloads","issues_url":"https://api.github.com/repos/ow2-proactive/scheduling/issues{/number}","pulls_url":"https://api.github.com/repos/ow2-proactive/scheduling/pulls{/number}","milestones_url":"https://api.github.com/repos/ow2-proactive/scheduling/milestones{/number}","notifications_url":"https://api.github.com/repos/ow2-proactive/scheduling/notifications{?since,all,participating}","labels_url":"https://api.github.com/repos/ow2-proactive/scheduling/labels{/name}","releases_url":"https://api.github.com/repos/ow2-proactive/scheduling/releases{/id}","deployments_url":"https://api.github.com/repos/ow2-proactive/scheduling/deployments","created_at":"2015-05-16T13:38:55Z","updated_at":"2018-04-12T18:53:42Z","pushed_at":"2018-04-16T14:37:05Z","git_url":"git://github.com/ow2-proactive/scheduling.git","ssh_url":"git@github.com:ow2-proactive/scheduling.git","clone_url":"https://github.com/ow2-proactive/scheduling.git","svn_url":"https://github.com/ow2-proactive/scheduling","homepage":"http://www.activeeon.com/workflows-scheduling","size":73436,"stargazers_count":25,"watchers_count":25,"language":"Java","has_issues":true,"has_projects":true,"has_downloads":true,"has_wiki":true,"has_pages":false,"forks_count":39,"mirror_url":null,"archived":false,"open_issues_count":169,"license":{"key":"agpl-3.0","name":"GNU Affero General Public License v3.0","spdx_id":"AGPL-3.0","url":"https://api.github.com/licenses/agpl-3.0"},"forks":39,"open_issues":169,"watchers":25,"default_branch":"master"}},"_links":{"self":{"href":"https://api.github.com/repos/ow2-proactive/scheduling/pulls/3187"},"html":{"href":"https://github.com/ow2-proactive/scheduling/pull/3187"},"issue":{"href":"https://api.github.com/repos/ow2-proactive/scheduling/issues/3187"},"comments":{"href":"https://api.github.com/repos/ow2-proactive/scheduling/issues/3187/comments"},"review_comments":{"href":"https://api.github.com/repos/ow2-proactive/scheduling/pulls/3187/comments"},"review_comment":{"href":"https://api.github.com/repos/ow2-proactive/scheduling/pulls/comments{/number}"},"commits":{"href":"https://api.github.com/repos/ow2-proactive/scheduling/pulls/3187/commits"},"statuses":{"href":"https://api.github.com/repos/ow2-proactive/scheduling/statuses/c36755b6e6431c89815148c9f88103a1eb2ded0f"}},"author_association":"OWNER"}}
{"actor":{"display_login":"sonarqube-activeeon"}}