{"action":"created","comment":{"url":"https://api.github.com/repos/dunglas/DunglasJsonLdApiBundle/pulls/comments/28315684","id":28315684,"diff_hunk":"@@ -0,0 +1,36 @@\n+<?php\n+\n+/*\n+ * This file is part of the DunglasJsonLdApiBundle package.\n+ *\n+ * (c) Kévin Dunglas <dunglas@gmail.com>\n+ *\n+ * For the full copyright and license information, please view the LICENSE\n+ * file that was distributed with this source code.\n+ */\n+\n+namespace Dunglas\\JsonLdApiBundle\\Api\\Filter;\n+\n+/**\n+ * Filters applicable on a resource.\n+ *\n+ * @author Kévin Dunglas <dunglas@gmail.com>\n+ */\n+interface FilterInterface\n+{\n+    const STRATEGY_EXACT = 'exact';","path":"Api/Filter/FilterInterface.php","position":21,"original_position":21,"commit_id":"da7a263a0af91b7ba483851b62d919c86150fcdc","original_commit_id":"da7a263a0af91b7ba483851b62d919c86150fcdc","user":{"login":"sroze","id":804625,"avatar_url":"https://avatars.githubusercontent.com/u/804625?v=3","gravatar_id":"","url":"https://api.github.com/users/sroze","html_url":"https://github.com/sroze","followers_url":"https://api.github.com/users/sroze/followers","following_url":"https://api.github.com/users/sroze/following{/other_user}","gists_url":"https://api.github.com/users/sroze/gists{/gist_id}","starred_url":"https://api.github.com/users/sroze/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/sroze/subscriptions","organizations_url":"https://api.github.com/users/sroze/orgs","repos_url":"https://api.github.com/users/sroze/repos","events_url":"https://api.github.com/users/sroze/events{/privacy}","received_events_url":"https://api.github.com/users/sroze/received_events","type":"User","site_admin":false},"body":"I don't think that's the place of this constant since it's not something \"abstract\" but related to an implementation. What about an `applyFilter` method that would extract the filtering logic in that class ?","created_at":"2015-04-14T10:27:01Z","updated_at":"2015-04-14T10:27:01Z","html_url":"https://github.com/dunglas/DunglasJsonLdApiBundle/pull/30#discussion_r28315684","pull_request_url":"https://api.github.com/repos/dunglas/DunglasJsonLdApiBundle/pulls/30","_links":{"self":{"href":"https://api.github.com/repos/dunglas/DunglasJsonLdApiBundle/pulls/comments/28315684"},"html":{"href":"https://github.com/dunglas/DunglasJsonLdApiBundle/pull/30#discussion_r28315684"},"pull_request":{"href":"https://api.github.com/repos/dunglas/DunglasJsonLdApiBundle/pulls/30"}}},"pull_request":{"url":"https://api.github.com/repos/dunglas/DunglasJsonLdApiBundle/pulls/30","id":33236926,"html_url":"https://github.com/dunglas/DunglasJsonLdApiBundle/pull/30","diff_url":"https://github.com/dunglas/DunglasJsonLdApiBundle/pull/30.diff","patch_url":"https://github.com/dunglas/DunglasJsonLdApiBundle/pull/30.patch","issue_url":"https://api.github.com/repos/dunglas/DunglasJsonLdApiBundle/issues/30","number":30,"state":"open","locked":false,"title":"Major refactoring","user":{"login":"dunglas","id":57224,"avatar_url":"https://avatars.githubusercontent.com/u/57224?v=3","gravatar_id":"","url":"https://api.github.com/users/dunglas","html_url":"https://github.com/dunglas","followers_url":"https://api.github.com/users/dunglas/followers","following_url":"https://api.github.com/users/dunglas/following{/other_user}","gists_url":"https://api.github.com/users/dunglas/gists{/gist_id}","starred_url":"https://api.github.com/users/dunglas/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/dunglas/subscriptions","organizations_url":"https://api.github.com/users/dunglas/orgs","repos_url":"https://api.github.com/users/dunglas/repos","events_url":"https://api.github.com/users/dunglas/events{/privacy}","received_events_url":"https://api.github.com/users/dunglas/received_events","type":"User","site_admin":false},"body":"This a large rework and cleanup:\r\n- JSON-LD and Hydra logic are now decoupled from the code classes (it should be possible to support other formats such as HAL now)\r\n- `Filter` and `Operation` are now classes instead of dirty arrays\r\n- See the `services.yml` file to see how operations and filters must be registered now\r\n- I've introduced a factory to build custom operations\r\n- The DataProvider system changed to be simpler and more extensible\r\n- Improvements and reorganization everywhere (removed some circular references, better SOLID respect)\r\n\r\nHowever, this is also a huge BC break but I think that this cleanup work was necessary before the first release.\r\n\r\nSpeaking about releases, an option is to rename the current master branch to a 0.1.x branch and make this pr being the new master branch. That will allow existing projets to continue working but I'll prefer that everyone migrate its code. What do you think @sroze @deuzu @theofidry?","created_at":"2015-04-14T08:44:26Z","updated_at":"2015-04-14T10:27:01Z","closed_at":null,"merged_at":null,"merge_commit_sha":"a41e7f5339a9e69c505c4f53766b397f91bb61a0","assignee":{"login":"dunglas","id":57224,"avatar_url":"https://avatars.githubusercontent.com/u/57224?v=3","gravatar_id":"","url":"https://api.github.com/users/dunglas","html_url":"https://github.com/dunglas","followers_url":"https://api.github.com/users/dunglas/followers","following_url":"https://api.github.com/users/dunglas/following{/other_user}","gists_url":"https://api.github.com/users/dunglas/gists{/gist_id}","starred_url":"https://api.github.com/users/dunglas/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/dunglas/subscriptions","organizations_url":"https://api.github.com/users/dunglas/orgs","repos_url":"https://api.github.com/users/dunglas/repos","events_url":"https://api.github.com/users/dunglas/events{/privacy}","received_events_url":"https://api.github.com/users/dunglas/received_events","type":"User","site_admin":false},"milestone":{"url":"https://api.github.com/repos/dunglas/DunglasJsonLdApiBundle/milestones/1","html_url":"https://github.com/dunglas/DunglasJsonLdApiBundle/milestones/0.1.0","labels_url":"https://api.github.com/repos/dunglas/DunglasJsonLdApiBundle/milestones/1/labels","id":1051450,"number":1,"title":"0.1.0","description":"","creator":{"login":"dunglas","id":57224,"avatar_url":"https://avatars.githubusercontent.com/u/57224?v=3","gravatar_id":"","url":"https://api.github.com/users/dunglas","html_url":"https://github.com/dunglas","followers_url":"https://api.github.com/users/dunglas/followers","following_url":"https://api.github.com/users/dunglas/following{/other_user}","gists_url":"https://api.github.com/users/dunglas/gists{/gist_id}","starred_url":"https://api.github.com/users/dunglas/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/dunglas/subscriptions","organizations_url":"https://api.github.com/users/dunglas/orgs","repos_url":"https://api.github.com/users/dunglas/repos","events_url":"https://api.github.com/users/dunglas/events{/privacy}","received_events_url":"https://api.github.com/users/dunglas/received_events","type":"User","site_admin":false},"open_issues":3,"closed_issues":2,"state":"open","created_at":"2015-04-03T08:19:58Z","updated_at":"2015-04-14T08:44:26Z","due_on":null,"closed_at":null},"commits_url":"https://api.github.com/repos/dunglas/DunglasJsonLdApiBundle/pulls/30/commits","review_comments_url":"https://api.github.com/repos/dunglas/DunglasJsonLdApiBundle/pulls/30/comments","review_comment_url":"https://api.github.com/repos/dunglas/DunglasJsonLdApiBundle/pulls/comments{/number}","comments_url":"https://api.github.com/repos/dunglas/DunglasJsonLdApiBundle/issues/30/comments","statuses_url":"https://api.github.com/repos/dunglas/DunglasJsonLdApiBundle/statuses/da7a263a0af91b7ba483851b62d919c86150fcdc","head":{"label":"dunglas:refactoring","ref":"refactoring","sha":"da7a263a0af91b7ba483851b62d919c86150fcdc","user":{"login":"dunglas","id":57224,"avatar_url":"https://avatars.githubusercontent.com/u/57224?v=3","gravatar_id":"","url":"https://api.github.com/users/dunglas","html_url":"https://github.com/dunglas","followers_url":"https://api.github.com/users/dunglas/followers","following_url":"https://api.github.com/users/dunglas/following{/other_user}","gists_url":"https://api.github.com/users/dunglas/gists{/gist_id}","starred_url":"https://api.github.com/users/dunglas/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/dunglas/subscriptions","organizations_url":"https://api.github.com/users/dunglas/orgs","repos_url":"https://api.github.com/users/dunglas/repos","events_url":"https://api.github.com/users/dunglas/events{/privacy}","received_events_url":"https://api.github.com/users/dunglas/received_events","type":"User","site_admin":false},"repo":{"id":29501260,"name":"DunglasJsonLdApiBundle","full_name":"dunglas/DunglasJsonLdApiBundle","owner":{"login":"dunglas","id":57224,"avatar_url":"https://avatars.githubusercontent.com/u/57224?v=3","gravatar_id":"","url":"https://api.github.com/users/dunglas","html_url":"https://github.com/dunglas","followers_url":"https://api.github.com/users/dunglas/followers","following_url":"https://api.github.com/users/dunglas/following{/other_user}","gists_url":"https://api.github.com/users/dunglas/gists{/gist_id}","starred_url":"https://api.github.com/users/dunglas/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/dunglas/subscriptions","organizations_url":"https://api.github.com/users/dunglas/orgs","repos_url":"https://api.github.com/users/dunglas/repos","events_url":"https://api.github.com/users/dunglas/events{/privacy}","received_events_url":"https://api.github.com/users/dunglas/received_events","type":"User","site_admin":false},"private":false,"html_url":"https://github.com/dunglas/DunglasJsonLdApiBundle","description":"JSON-LD and Hydra REST API generator for Symfony","fork":false,"url":"https://api.github.com/repos/dunglas/DunglasJsonLdApiBundle","forks_url":"https://api.github.com/repos/dunglas/DunglasJsonLdApiBundle/forks","keys_url":"https://api.github.com/repos/dunglas/DunglasJsonLdApiBundle/keys{/key_id}","collaborators_url":"https://api.github.com/repos/dunglas/DunglasJsonLdApiBundle/collaborators{/collaborator}","teams_url":"https://api.github.com/repos/dunglas/DunglasJsonLdApiBundle/teams","hooks_url":"https://api.github.com/repos/dunglas/DunglasJsonLdApiBundle/hooks","issue_events_url":"https://api.github.com/repos/dunglas/DunglasJsonLdApiBundle/issues/events{/number}","events_url":"https://api.github.com/repos/dunglas/DunglasJsonLdApiBundle/events","assignees_url":"https://api.github.com/repos/dunglas/DunglasJsonLdApiBundle/assignees{/user}","branches_url":"https://api.github.com/repos/dunglas/DunglasJsonLdApiBundle/branches{/branch}","tags_url":"https://api.github.com/repos/dunglas/DunglasJsonLdApiBundle/tags","blobs_url":"https://api.github.com/repos/dunglas/DunglasJsonLdApiBundle/git/blobs{/sha}","git_tags_url":"https://api.github.com/repos/dunglas/DunglasJsonLdApiBundle/git/tags{/sha}","git_refs_url":"https://api.github.com/repos/dunglas/DunglasJsonLdApiBundle/git/refs{/sha}","trees_url":"https://api.github.com/repos/dunglas/DunglasJsonLdApiBundle/git/trees{/sha}","statuses_url":"https://api.github.com/repos/dunglas/DunglasJsonLdApiBundle/statuses/{sha}","languages_url":"https://api.github.com/repos/dunglas/DunglasJsonLdApiBundle/languages","stargazers_url":"https://api.github.com/repos/dunglas/DunglasJsonLdApiBundle/stargazers","contributors_url":"https://api.github.com/repos/dunglas/DunglasJsonLdApiBundle/contributors","subscribers_url":"https://api.github.com/repos/dunglas/DunglasJsonLdApiBundle/subscribers","subscription_url":"https://api.github.com/repos/dunglas/DunglasJsonLdApiBundle/subscription","commits_url":"https://api.github.com/repos/dunglas/DunglasJsonLdApiBundle/commits{/sha}","git_commits_url":"https://api.github.com/repos/dunglas/DunglasJsonLdApiBundle/git/commits{/sha}","comments_url":"https://api.github.com/repos/dunglas/DunglasJsonLdApiBundle/comments{/number}","issue_comment_url":"https://api.github.com/repos/dunglas/DunglasJsonLdApiBundle/issues/comments{/number}","contents_url":"https://api.github.com/repos/dunglas/DunglasJsonLdApiBundle/contents/{+path}","compare_url":"https://api.github.com/repos/dunglas/DunglasJsonLdApiBundle/compare/{base}...{head}","merges_url":"https://api.github.com/repos/dunglas/DunglasJsonLdApiBundle/merges","archive_url":"https://api.github.com/repos/dunglas/DunglasJsonLdApiBundle/{archive_format}{/ref}","downloads_url":"https://api.github.com/repos/dunglas/DunglasJsonLdApiBundle/downloads","issues_url":"https://api.github.com/repos/dunglas/DunglasJsonLdApiBundle/issues{/number}","pulls_url":"https://api.github.com/repos/dunglas/DunglasJsonLdApiBundle/pulls{/number}","milestones_url":"https://api.github.com/repos/dunglas/DunglasJsonLdApiBundle/milestones{/number}","notifications_url":"https://api.github.com/repos/dunglas/DunglasJsonLdApiBundle/notifications{?since,all,participating}","labels_url":"https://api.github.com/repos/dunglas/DunglasJsonLdApiBundle/labels{/name}","releases_url":"https://api.github.com/repos/dunglas/DunglasJsonLdApiBundle/releases{/id}","created_at":"2015-01-19T23:05:56Z","updated_at":"2015-04-14T10:23:04Z","pushed_at":"2015-04-14T08:47:59Z","git_url":"git://github.com/dunglas/DunglasJsonLdApiBundle.git","ssh_url":"git@github.com:dunglas/DunglasJsonLdApiBundle.git","clone_url":"https://github.com/dunglas/DunglasJsonLdApiBundle.git","svn_url":"https://github.com/dunglas/DunglasJsonLdApiBundle","homepage":"http://dunglas.fr/2015/04/mes-slides-du-symfony-live-2015-a-la-decouverte-de-api-platform/","size":1189,"stargazers_count":72,"watchers_count":72,"language":"PHP","has_issues":true,"has_downloads":true,"has_wiki":true,"has_pages":false,"forks_count":6,"mirror_url":null,"open_issues_count":6,"forks":6,"open_issues":6,"watchers":72,"default_branch":"master"}},"base":{"label":"dunglas:master","ref":"master","sha":"a944aeede680861eba36737ce3e0d2d5c8571279","user":{"login":"dunglas","id":57224,"avatar_url":"https://avatars.githubusercontent.com/u/57224?v=3","gravatar_id":"","url":"https://api.github.com/users/dunglas","html_url":"https://github.com/dunglas","followers_url":"https://api.github.com/users/dunglas/followers","following_url":"https://api.github.com/users/dunglas/following{/other_user}","gists_url":"https://api.github.com/users/dunglas/gists{/gist_id}","starred_url":"https://api.github.com/users/dunglas/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/dunglas/subscriptions","organizations_url":"https://api.github.com/users/dunglas/orgs","repos_url":"https://api.github.com/users/dunglas/repos","events_url":"https://api.github.com/users/dunglas/events{/privacy}","received_events_url":"https://api.github.com/users/dunglas/received_events","type":"User","site_admin":false},"repo":{"id":29501260,"name":"DunglasJsonLdApiBundle","full_name":"dunglas/DunglasJsonLdApiBundle","owner":{"login":"dunglas","id":57224,"avatar_url":"https://avatars.githubusercontent.com/u/57224?v=3","gravatar_id":"","url":"https://api.github.com/users/dunglas","html_url":"https://github.com/dunglas","followers_url":"https://api.github.com/users/dunglas/followers","following_url":"https://api.github.com/users/dunglas/following{/other_user}","gists_url":"https://api.github.com/users/dunglas/gists{/gist_id}","starred_url":"https://api.github.com/users/dunglas/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/dunglas/subscriptions","organizations_url":"https://api.github.com/users/dunglas/orgs","repos_url":"https://api.github.com/users/dunglas/repos","events_url":"https://api.github.com/users/dunglas/events{/privacy}","received_events_url":"https://api.github.com/users/dunglas/received_events","type":"User","site_admin":false},"private":false,"html_url":"https://github.com/dunglas/DunglasJsonLdApiBundle","description":"JSON-LD and Hydra REST API generator for Symfony","fork":false,"url":"https://api.github.com/repos/dunglas/DunglasJsonLdApiBundle","forks_url":"https://api.github.com/repos/dunglas/DunglasJsonLdApiBundle/forks","keys_url":"https://api.github.com/repos/dunglas/DunglasJsonLdApiBundle/keys{/key_id}","collaborators_url":"https://api.github.com/repos/dunglas/DunglasJsonLdApiBundle/collaborators{/collaborator}","teams_url":"https://api.github.com/repos/dunglas/DunglasJsonLdApiBundle/teams","hooks_url":"https://api.github.com/repos/dunglas/DunglasJsonLdApiBundle/hooks","issue_events_url":"https://api.github.com/repos/dunglas/DunglasJsonLdApiBundle/issues/events{/number}","events_url":"https://api.github.com/repos/dunglas/DunglasJsonLdApiBundle/events","assignees_url":"https://api.github.com/repos/dunglas/DunglasJsonLdApiBundle/assignees{/user}","branches_url":"https://api.github.com/repos/dunglas/DunglasJsonLdApiBundle/branches{/branch}","tags_url":"https://api.github.com/repos/dunglas/DunglasJsonLdApiBundle/tags","blobs_url":"https://api.github.com/repos/dunglas/DunglasJsonLdApiBundle/git/blobs{/sha}","git_tags_url":"https://api.github.com/repos/dunglas/DunglasJsonLdApiBundle/git/tags{/sha}","git_refs_url":"https://api.github.com/repos/dunglas/DunglasJsonLdApiBundle/git/refs{/sha}","trees_url":"https://api.github.com/repos/dunglas/DunglasJsonLdApiBundle/git/trees{/sha}","statuses_url":"https://api.github.com/repos/dunglas/DunglasJsonLdApiBundle/statuses/{sha}","languages_url":"https://api.github.com/repos/dunglas/DunglasJsonLdApiBundle/languages","stargazers_url":"https://api.github.com/repos/dunglas/DunglasJsonLdApiBundle/stargazers","contributors_url":"https://api.github.com/repos/dunglas/DunglasJsonLdApiBundle/contributors","subscribers_url":"https://api.github.com/repos/dunglas/DunglasJsonLdApiBundle/subscribers","subscription_url":"https://api.github.com/repos/dunglas/DunglasJsonLdApiBundle/subscription","commits_url":"https://api.github.com/repos/dunglas/DunglasJsonLdApiBundle/commits{/sha}","git_commits_url":"https://api.github.com/repos/dunglas/DunglasJsonLdApiBundle/git/commits{/sha}","comments_url":"https://api.github.com/repos/dunglas/DunglasJsonLdApiBundle/comments{/number}","issue_comment_url":"https://api.github.com/repos/dunglas/DunglasJsonLdApiBundle/issues/comments{/number}","contents_url":"https://api.github.com/repos/dunglas/DunglasJsonLdApiBundle/contents/{+path}","compare_url":"https://api.github.com/repos/dunglas/DunglasJsonLdApiBundle/compare/{base}...{head}","merges_url":"https://api.github.com/repos/dunglas/DunglasJsonLdApiBundle/merges","archive_url":"https://api.github.com/repos/dunglas/DunglasJsonLdApiBundle/{archive_format}{/ref}","downloads_url":"https://api.github.com/repos/dunglas/DunglasJsonLdApiBundle/downloads","issues_url":"https://api.github.com/repos/dunglas/DunglasJsonLdApiBundle/issues{/number}","pulls_url":"https://api.github.com/repos/dunglas/DunglasJsonLdApiBundle/pulls{/number}","milestones_url":"https://api.github.com/repos/dunglas/DunglasJsonLdApiBundle/milestones{/number}","notifications_url":"https://api.github.com/repos/dunglas/DunglasJsonLdApiBundle/notifications{?since,all,participating}","labels_url":"https://api.github.com/repos/dunglas/DunglasJsonLdApiBundle/labels{/name}","releases_url":"https://api.github.com/repos/dunglas/DunglasJsonLdApiBundle/releases{/id}","created_at":"2015-01-19T23:05:56Z","updated_at":"2015-04-14T10:23:04Z","pushed_at":"2015-04-14T08:47:59Z","git_url":"git://github.com/dunglas/DunglasJsonLdApiBundle.git","ssh_url":"git@github.com:dunglas/DunglasJsonLdApiBundle.git","clone_url":"https://github.com/dunglas/DunglasJsonLdApiBundle.git","svn_url":"https://github.com/dunglas/DunglasJsonLdApiBundle","homepage":"http://dunglas.fr/2015/04/mes-slides-du-symfony-live-2015-a-la-decouverte-de-api-platform/","size":1189,"stargazers_count":72,"watchers_count":72,"language":"PHP","has_issues":true,"has_downloads":true,"has_wiki":true,"has_pages":false,"forks_count":6,"mirror_url":null,"open_issues_count":6,"forks":6,"open_issues":6,"watchers":72,"default_branch":"master"}},"_links":{"self":{"href":"https://api.github.com/repos/dunglas/DunglasJsonLdApiBundle/pulls/30"},"html":{"href":"https://github.com/dunglas/DunglasJsonLdApiBundle/pull/30"},"issue":{"href":"https://api.github.com/repos/dunglas/DunglasJsonLdApiBundle/issues/30"},"comments":{"href":"https://api.github.com/repos/dunglas/DunglasJsonLdApiBundle/issues/30/comments"},"review_comments":{"href":"https://api.github.com/repos/dunglas/DunglasJsonLdApiBundle/pulls/30/comments"},"review_comment":{"href":"https://api.github.com/repos/dunglas/DunglasJsonLdApiBundle/pulls/comments{/number}"},"commits":{"href":"https://api.github.com/repos/dunglas/DunglasJsonLdApiBundle/pulls/30/commits"},"statuses":{"href":"https://api.github.com/repos/dunglas/DunglasJsonLdApiBundle/statuses/da7a263a0af91b7ba483851b62d919c86150fcdc"}}}}