{"action":"created","comment":{"url":"https://api.github.com/repos/superdesk/web-publisher/pulls/comments/67311629","id":67311629,"diff_hunk":"@@ -0,0 +1,6 @@\n+services:\n+    # move it into an appropriate place (CoreBundle?)\n+    swp.serializer:\n+        class: SWP\\Bridge\\JMSSerializerBundle\\JMSSerializer","path":"src/SWP/Bundle/BridgeBundle/Resources/config/services.yml","position":4,"original_position":4,"commit_id":"7e94b08fd9c90e0d0759928bb6b9fb0230cfba42","original_commit_id":"7e94b08fd9c90e0d0759928bb6b9fb0230cfba42","user":{"login":"takeit","id":562536,"avatar_url":"https://avatars.githubusercontent.com/u/562536?v=3","gravatar_id":"","url":"https://api.github.com/users/takeit","html_url":"https://github.com/takeit","followers_url":"https://api.github.com/users/takeit/followers","following_url":"https://api.github.com/users/takeit/following{/other_user}","gists_url":"https://api.github.com/users/takeit/gists{/gist_id}","starred_url":"https://api.github.com/users/takeit/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/takeit/subscriptions","organizations_url":"https://api.github.com/users/takeit/orgs","repos_url":"https://api.github.com/users/takeit/repos","events_url":"https://api.github.com/users/takeit/events{/privacy}","received_events_url":"https://api.github.com/users/takeit/received_events","type":"User","site_admin":false},"body":"I created it because I wanted to decouple it from the project. We need serializer for the data transformer (payload => Package). This  transformer is placed inside bridge component, I didnt want to make a dependency on JMS serializer so I created our Serializer Interface which doesnt require JMS serializer at all. JMS serializer implements our serializer interface which makes it possible to use it in our project without hard dependency. Data transformer can work with various serializers with this approach and is not coupled with the JMS bundle itself.","created_at":"2016-06-16T09:11:02Z","updated_at":"2016-06-16T09:11:02Z","html_url":"https://github.com/superdesk/web-publisher/pull/76#discussion_r67311629","pull_request_url":"https://api.github.com/repos/superdesk/web-publisher/pulls/76","_links":{"self":{"href":"https://api.github.com/repos/superdesk/web-publisher/pulls/comments/67311629"},"html":{"href":"https://github.com/superdesk/web-publisher/pull/76#discussion_r67311629"},"pull_request":{"href":"https://api.github.com/repos/superdesk/web-publisher/pulls/76"}}},"pull_request":{"url":"https://api.github.com/repos/superdesk/web-publisher/pulls/76","id":72336722,"html_url":"https://github.com/superdesk/web-publisher/pull/76","diff_url":"https://github.com/superdesk/web-publisher/pull/76.diff","patch_url":"https://github.com/superdesk/web-publisher/pull/76.patch","issue_url":"https://api.github.com/repos/superdesk/web-publisher/issues/76","number":76,"state":"open","locked":false,"title":"[WIP] SWP-60 Design and implement storage","user":{"login":"takeit","id":562536,"avatar_url":"https://avatars.githubusercontent.com/u/562536?v=3","gravatar_id":"","url":"https://api.github.com/users/takeit","html_url":"https://github.com/takeit","followers_url":"https://api.github.com/users/takeit/followers","following_url":"https://api.github.com/users/takeit/following{/other_user}","gists_url":"https://api.github.com/users/takeit/gists{/gist_id}","starred_url":"https://api.github.com/users/takeit/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/takeit/subscriptions","organizations_url":"https://api.github.com/users/takeit/orgs","repos_url":"https://api.github.com/users/takeit/repos","events_url":"https://api.github.com/users/takeit/events{/privacy}","received_events_url":"https://api.github.com/users/takeit/received_events","type":"User","site_admin":false},"body":"| Q             | A\r\n| ------------- | ---\r\n| Bug fix?      | no\r\n| New feature?  | yes\r\n| BC breaks?    | yes\r\n| Deprecations? | yes\r\n| Tests pass?   | yes\r\n| Fixed tickets | [SWP-60](https://dev.sourcefabric.org/browse/SWP-60)\r\n| License       | AGPLv3\r\n\r\n**BC breaks:**\r\n\r\n- re-create the database\r\n\r\n**Depracations:** \r\n- `content` property has been renamed to `body` in Article model - I didn't add the depracation note because we dont release yet\r\n\r\n**Changes:**\r\n\r\n- ContentBundle\r\n    - [x] - make the bundle storage agnostic (Doctrine ORM, Doctrine PHPCR, we can add later Doctrine ODM support (ie. MongoDb etc)) - load mapping files depending on enabled persistence backend\r\n    - [x] - add phpcr mapping\r\n    - [ ] - write tests for Dependency Injection classes\r\n    - [ ] - add doctrine orm mapping for models (can be added later)\r\n    - [x] - add content manager so it can work independently from the persistance backend (ORM, PHPCR etc.) - to save, fetch articles etc\r\n\r\n- BridgeBundle\r\n    - [x] - add Bridge component\r\n    - [x] - add Package and Item basic models\r\n    - [x] - implement validators to validate incoming payload[SWP-143](https://dev.sourcefabric.org/browse/SWP-143) \r\n    - [x] - implement transformers:\r\n         -  [x] - json payload <=> Package/Item\r\n         -  [x] - Package/Item <=> Article\r\n\r\n- Common Component\r\n    - [x] add timestampable, translatable interface and trait\r\n    - [ ] add versionable trait and interface\r\n\r\n- Storage Bundle\r\n    - [x] - register repositories as a services independantly from the selected persistance backend\r\n    - [x] - storage agnostic repositories\r\n    - [x] - drivers implementation - (PHPCR atm)\r\n    - [ ] - create storage agnostic factory to instantiate objects independently from the selected persistence backend\r\n\r\n- Storage Component\r\n    - [x] - added generic interfaces, classes to build storage agnostic layer\r\n    - [x] - load doctrine mapping files automatically\r\n\r\n**TODO:**\r\n - [ ] - add bridge component to git subsplit script\r\n - [ ] - add storage component and storage bundle to git subsplit script\r\n - [ ] - create event listeners so we can dispatch an event and flush/persist data - it will give us more flexibility and will reduce code duplication \r\n\r\n- [ ] - document everything\r\n","created_at":"2016-06-02T12:23:38Z","updated_at":"2016-06-16T09:11:02Z","closed_at":null,"merged_at":null,"merge_commit_sha":"bccb4fafc1711047910a96b9f88c42535d61ac66","assignee":null,"milestone":null,"commits_url":"https://api.github.com/repos/superdesk/web-publisher/pulls/76/commits","review_comments_url":"https://api.github.com/repos/superdesk/web-publisher/pulls/76/comments","review_comment_url":"https://api.github.com/repos/superdesk/web-publisher/pulls/comments{/number}","comments_url":"https://api.github.com/repos/superdesk/web-publisher/issues/76/comments","statuses_url":"https://api.github.com/repos/superdesk/web-publisher/statuses/7e94b08fd9c90e0d0759928bb6b9fb0230cfba42","head":{"label":"takeit:swp-60","ref":"swp-60","sha":"7e94b08fd9c90e0d0759928bb6b9fb0230cfba42","user":{"login":"takeit","id":562536,"avatar_url":"https://avatars.githubusercontent.com/u/562536?v=3","gravatar_id":"","url":"https://api.github.com/users/takeit","html_url":"https://github.com/takeit","followers_url":"https://api.github.com/users/takeit/followers","following_url":"https://api.github.com/users/takeit/following{/other_user}","gists_url":"https://api.github.com/users/takeit/gists{/gist_id}","starred_url":"https://api.github.com/users/takeit/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/takeit/subscriptions","organizations_url":"https://api.github.com/users/takeit/orgs","repos_url":"https://api.github.com/users/takeit/repos","events_url":"https://api.github.com/users/takeit/events{/privacy}","received_events_url":"https://api.github.com/users/takeit/received_events","type":"User","site_admin":false},"repo":{"id":36218538,"name":"web-renderer","full_name":"takeit/web-renderer","owner":{"login":"takeit","id":562536,"avatar_url":"https://avatars.githubusercontent.com/u/562536?v=3","gravatar_id":"","url":"https://api.github.com/users/takeit","html_url":"https://github.com/takeit","followers_url":"https://api.github.com/users/takeit/followers","following_url":"https://api.github.com/users/takeit/following{/other_user}","gists_url":"https://api.github.com/users/takeit/gists{/gist_id}","starred_url":"https://api.github.com/users/takeit/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/takeit/subscriptions","organizations_url":"https://api.github.com/users/takeit/orgs","repos_url":"https://api.github.com/users/takeit/repos","events_url":"https://api.github.com/users/takeit/events{/privacy}","received_events_url":"https://api.github.com/users/takeit/received_events","type":"User","site_admin":false},"private":false,"html_url":"https://github.com/takeit/web-renderer","description":"Superdesk Web renderer","fork":true,"url":"https://api.github.com/repos/takeit/web-renderer","forks_url":"https://api.github.com/repos/takeit/web-renderer/forks","keys_url":"https://api.github.com/repos/takeit/web-renderer/keys{/key_id}","collaborators_url":"https://api.github.com/repos/takeit/web-renderer/collaborators{/collaborator}","teams_url":"https://api.github.com/repos/takeit/web-renderer/teams","hooks_url":"https://api.github.com/repos/takeit/web-renderer/hooks","issue_events_url":"https://api.github.com/repos/takeit/web-renderer/issues/events{/number}","events_url":"https://api.github.com/repos/takeit/web-renderer/events","assignees_url":"https://api.github.com/repos/takeit/web-renderer/assignees{/user}","branches_url":"https://api.github.com/repos/takeit/web-renderer/branches{/branch}","tags_url":"https://api.github.com/repos/takeit/web-renderer/tags","blobs_url":"https://api.github.com/repos/takeit/web-renderer/git/blobs{/sha}","git_tags_url":"https://api.github.com/repos/takeit/web-renderer/git/tags{/sha}","git_refs_url":"https://api.github.com/repos/takeit/web-renderer/git/refs{/sha}","trees_url":"https://api.github.com/repos/takeit/web-renderer/git/trees{/sha}","statuses_url":"https://api.github.com/repos/takeit/web-renderer/statuses/{sha}","languages_url":"https://api.github.com/repos/takeit/web-renderer/languages","stargazers_url":"https://api.github.com/repos/takeit/web-renderer/stargazers","contributors_url":"https://api.github.com/repos/takeit/web-renderer/contributors","subscribers_url":"https://api.github.com/repos/takeit/web-renderer/subscribers","subscription_url":"https://api.github.com/repos/takeit/web-renderer/subscription","commits_url":"https://api.github.com/repos/takeit/web-renderer/commits{/sha}","git_commits_url":"https://api.github.com/repos/takeit/web-renderer/git/commits{/sha}","comments_url":"https://api.github.com/repos/takeit/web-renderer/comments{/number}","issue_comment_url":"https://api.github.com/repos/takeit/web-renderer/issues/comments{/number}","contents_url":"https://api.github.com/repos/takeit/web-renderer/contents/{+path}","compare_url":"https://api.github.com/repos/takeit/web-renderer/compare/{base}...{head}","merges_url":"https://api.github.com/repos/takeit/web-renderer/merges","archive_url":"https://api.github.com/repos/takeit/web-renderer/{archive_format}{/ref}","downloads_url":"https://api.github.com/repos/takeit/web-renderer/downloads","issues_url":"https://api.github.com/repos/takeit/web-renderer/issues{/number}","pulls_url":"https://api.github.com/repos/takeit/web-renderer/pulls{/number}","milestones_url":"https://api.github.com/repos/takeit/web-renderer/milestones{/number}","notifications_url":"https://api.github.com/repos/takeit/web-renderer/notifications{?since,all,participating}","labels_url":"https://api.github.com/repos/takeit/web-renderer/labels{/name}","releases_url":"https://api.github.com/repos/takeit/web-renderer/releases{/id}","deployments_url":"https://api.github.com/repos/takeit/web-renderer/deployments","created_at":"2015-05-25T08:08:52Z","updated_at":"2016-02-11T10:08:35Z","pushed_at":"2016-06-15T13:50:24Z","git_url":"git://github.com/takeit/web-renderer.git","ssh_url":"git@github.com:takeit/web-renderer.git","clone_url":"https://github.com/takeit/web-renderer.git","svn_url":"https://github.com/takeit/web-renderer","homepage":null,"size":1284,"stargazers_count":0,"watchers_count":0,"language":"PHP","has_issues":false,"has_downloads":true,"has_wiki":true,"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":"superdesk:master","ref":"master","sha":"340fb6d20c13cf18028927af1ce7b6456d95b2c2","user":{"login":"superdesk","id":5527298,"avatar_url":"https://avatars.githubusercontent.com/u/5527298?v=3","gravatar_id":"","url":"https://api.github.com/users/superdesk","html_url":"https://github.com/superdesk","followers_url":"https://api.github.com/users/superdesk/followers","following_url":"https://api.github.com/users/superdesk/following{/other_user}","gists_url":"https://api.github.com/users/superdesk/gists{/gist_id}","starred_url":"https://api.github.com/users/superdesk/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/superdesk/subscriptions","organizations_url":"https://api.github.com/users/superdesk/orgs","repos_url":"https://api.github.com/users/superdesk/repos","events_url":"https://api.github.com/users/superdesk/events{/privacy}","received_events_url":"https://api.github.com/users/superdesk/received_events","type":"Organization","site_admin":false},"repo":{"id":36218357,"name":"web-publisher","full_name":"superdesk/web-publisher","owner":{"login":"superdesk","id":5527298,"avatar_url":"https://avatars.githubusercontent.com/u/5527298?v=3","gravatar_id":"","url":"https://api.github.com/users/superdesk","html_url":"https://github.com/superdesk","followers_url":"https://api.github.com/users/superdesk/followers","following_url":"https://api.github.com/users/superdesk/following{/other_user}","gists_url":"https://api.github.com/users/superdesk/gists{/gist_id}","starred_url":"https://api.github.com/users/superdesk/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/superdesk/subscriptions","organizations_url":"https://api.github.com/users/superdesk/orgs","repos_url":"https://api.github.com/users/superdesk/repos","events_url":"https://api.github.com/users/superdesk/events{/privacy}","received_events_url":"https://api.github.com/users/superdesk/received_events","type":"Organization","site_admin":false},"private":false,"html_url":"https://github.com/superdesk/web-publisher","description":"Superdesk Web Publisher - the next generation publishing platform for journalists and newsrooms.","fork":false,"url":"https://api.github.com/repos/superdesk/web-publisher","forks_url":"https://api.github.com/repos/superdesk/web-publisher/forks","keys_url":"https://api.github.com/repos/superdesk/web-publisher/keys{/key_id}","collaborators_url":"https://api.github.com/repos/superdesk/web-publisher/collaborators{/collaborator}","teams_url":"https://api.github.com/repos/superdesk/web-publisher/teams","hooks_url":"https://api.github.com/repos/superdesk/web-publisher/hooks","issue_events_url":"https://api.github.com/repos/superdesk/web-publisher/issues/events{/number}","events_url":"https://api.github.com/repos/superdesk/web-publisher/events","assignees_url":"https://api.github.com/repos/superdesk/web-publisher/assignees{/user}","branches_url":"https://api.github.com/repos/superdesk/web-publisher/branches{/branch}","tags_url":"https://api.github.com/repos/superdesk/web-publisher/tags","blobs_url":"https://api.github.com/repos/superdesk/web-publisher/git/blobs{/sha}","git_tags_url":"https://api.github.com/repos/superdesk/web-publisher/git/tags{/sha}","git_refs_url":"https://api.github.com/repos/superdesk/web-publisher/git/refs{/sha}","trees_url":"https://api.github.com/repos/superdesk/web-publisher/git/trees{/sha}","statuses_url":"https://api.github.com/repos/superdesk/web-publisher/statuses/{sha}","languages_url":"https://api.github.com/repos/superdesk/web-publisher/languages","stargazers_url":"https://api.github.com/repos/superdesk/web-publisher/stargazers","contributors_url":"https://api.github.com/repos/superdesk/web-publisher/contributors","subscribers_url":"https://api.github.com/repos/superdesk/web-publisher/subscribers","subscription_url":"https://api.github.com/repos/superdesk/web-publisher/subscription","commits_url":"https://api.github.com/repos/superdesk/web-publisher/commits{/sha}","git_commits_url":"https://api.github.com/repos/superdesk/web-publisher/git/commits{/sha}","comments_url":"https://api.github.com/repos/superdesk/web-publisher/comments{/number}","issue_comment_url":"https://api.github.com/repos/superdesk/web-publisher/issues/comments{/number}","contents_url":"https://api.github.com/repos/superdesk/web-publisher/contents/{+path}","compare_url":"https://api.github.com/repos/superdesk/web-publisher/compare/{base}...{head}","merges_url":"https://api.github.com/repos/superdesk/web-publisher/merges","archive_url":"https://api.github.com/repos/superdesk/web-publisher/{archive_format}{/ref}","downloads_url":"https://api.github.com/repos/superdesk/web-publisher/downloads","issues_url":"https://api.github.com/repos/superdesk/web-publisher/issues{/number}","pulls_url":"https://api.github.com/repos/superdesk/web-publisher/pulls{/number}","milestones_url":"https://api.github.com/repos/superdesk/web-publisher/milestones{/number}","notifications_url":"https://api.github.com/repos/superdesk/web-publisher/notifications{?since,all,participating}","labels_url":"https://api.github.com/repos/superdesk/web-publisher/labels{/name}","releases_url":"https://api.github.com/repos/superdesk/web-publisher/releases{/id}","deployments_url":"https://api.github.com/repos/superdesk/web-publisher/deployments","created_at":"2015-05-25T08:04:59Z","updated_at":"2016-02-22T08:52:09Z","pushed_at":"2016-06-15T18:32:22Z","git_url":"git://github.com/superdesk/web-publisher.git","ssh_url":"git@github.com:superdesk/web-publisher.git","clone_url":"https://github.com/superdesk/web-publisher.git","svn_url":"https://github.com/superdesk/web-publisher","homepage":"","size":1855,"stargazers_count":5,"watchers_count":5,"language":"PHP","has_issues":true,"has_downloads":true,"has_wiki":true,"has_pages":false,"forks_count":9,"mirror_url":null,"open_issues_count":7,"forks":9,"open_issues":7,"watchers":5,"default_branch":"master"}},"_links":{"self":{"href":"https://api.github.com/repos/superdesk/web-publisher/pulls/76"},"html":{"href":"https://github.com/superdesk/web-publisher/pull/76"},"issue":{"href":"https://api.github.com/repos/superdesk/web-publisher/issues/76"},"comments":{"href":"https://api.github.com/repos/superdesk/web-publisher/issues/76/comments"},"review_comments":{"href":"https://api.github.com/repos/superdesk/web-publisher/pulls/76/comments"},"review_comment":{"href":"https://api.github.com/repos/superdesk/web-publisher/pulls/comments{/number}"},"commits":{"href":"https://api.github.com/repos/superdesk/web-publisher/pulls/76/commits"},"statuses":{"href":"https://api.github.com/repos/superdesk/web-publisher/statuses/7e94b08fd9c90e0d0759928bb6b9fb0230cfba42"}}}}
{"actor":{"display_login":"takeit"}}