{"action":"created","comment":{"url":"https://api.github.com/repos/liferay/liferay-faces-util/pulls/comments/49796357","id":49796357,"diff_hunk":"@@ -16,17 +16,18 @@\n \t\t</system-event-listener>\n \t</application>\n \t<factory>\n+\t\t<application-factory>com.liferay.faces.util.application.internal.ApplicationFactoryUtilImpl</application-factory>\n \t\t<partial-view-context-factory>com.liferay.faces.util.context.internal.PartialViewContextFactoryImpl</partial-view-context-factory>\n \t\t<faces-context-factory>com.liferay.faces.util.context.internal.FacesContextFactoryUtilImpl</faces-context-factory>\n \t\t<render-kit-factory>com.liferay.faces.util.render.internal.RenderKitFactoryUtilImpl</render-kit-factory>\n \t\t<factory-extension>\n \t\t\t<util:browser-sniffer-factory>com.liferay.faces.util.client.internal.BrowserSnifferFactoryImpl</util:browser-sniffer-factory>\n-\t\t\t<util:component-resource-factory>com.liferay.faces.util.application.internal.ComponentResourceFactoryImpl</util:component-resource-factory>\n \t\t\t<util:faces-context-helper-factory>com.liferay.faces.util.context.internal.FacesContextHelperFactoryImpl</util:faces-context-helper-factory>\n \t\t\t<util:faces-request-context-factory>com.liferay.faces.util.context.internal.FacesRequestContextFactoryImpl</util:faces-request-context-factory>\n \t\t\t<util:faces-url-encoder-factory>com.liferay.faces.util.render.internal.FacesURLEncoderFactoryImpl</util:faces-url-encoder-factory>\n \t\t\t<util:jsp-adapter-factory>com.liferay.faces.util.jsp.internal.JspAdapterFactoryImpl</util:jsp-adapter-factory>\n \t\t\t<util:message-context-factory>com.liferay.faces.util.context.internal.MessageContextFactoryImpl</util:message-context-factory>\n+\t\t\t<util:resource-dependency-handler-factory>com.liferay.faces.util.application.internal.ResourceDependencyHandlerFactoryImpl</util:resource-dependency-handler-factory>","path":"util/src/main/resources/META-INF/faces-config.xml","position":16,"original_position":16,"commit_id":"5c55aa63ce610dcbd9dbe1bdafec2f3aae9374a7","original_commit_id":"5c55aa63ce610dcbd9dbe1bdafec2f3aae9374a7","user":{"login":"stiemannkj1","id":3483874,"avatar_url":"https://avatars.githubusercontent.com/u/3483874?v=3","gravatar_id":"","url":"https://api.github.com/users/stiemannkj1","html_url":"https://github.com/stiemannkj1","followers_url":"https://api.github.com/users/stiemannkj1/followers","following_url":"https://api.github.com/users/stiemannkj1/following{/other_user}","gists_url":"https://api.github.com/users/stiemannkj1/gists{/gist_id}","starred_url":"https://api.github.com/users/stiemannkj1/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/stiemannkj1/subscriptions","organizations_url":"https://api.github.com/users/stiemannkj1/orgs","repos_url":"https://api.github.com/users/stiemannkj1/repos","events_url":"https://api.github.com/users/stiemannkj1/events{/privacy}","received_events_url":"https://api.github.com/users/stiemannkj1/received_events","type":"User","site_admin":false},"body":"In a perfect world `ResourceDependencyHandler` would be like `ResourceHandler` and be implemented as a delegation chain. Currently the Javadoc requires that it be implemented that way, but we could remove need for a `ResourceDependencyHandlerFactory` by detecting the `ResourceDependencyHandler` class in the `faces-config.xml`:\r\n\r\n```\r\n<!-- ... -->\r\n    <application-extension>\r\n        <util:resource-dependency-handler>\r\n            com.liferay.faces.util.application.internal.ResourceDependencyHandlerImpl\r\n        </util:resource-dependency-handler>\r\n    </application-extension>\r\n</application>\r\n```\r\n\r\nOnce the class is detected, the `ApplicationUtilImpl` or `UIViewRootUtilImpl` could instantiate it with reflection similar to `FactoryFinder` and put it in a delegation chain (probably just a `List<ResourceDependencyHandler>` would be fine).","created_at":"2016-01-14T22:36:45Z","updated_at":"2016-01-14T22:36:45Z","html_url":"https://github.com/liferay/liferay-faces-util/pull/16#discussion_r49796357","pull_request_url":"https://api.github.com/repos/liferay/liferay-faces-util/pulls/16","_links":{"self":{"href":"https://api.github.com/repos/liferay/liferay-faces-util/pulls/comments/49796357"},"html":{"href":"https://github.com/liferay/liferay-faces-util/pull/16#discussion_r49796357"},"pull_request":{"href":"https://api.github.com/repos/liferay/liferay-faces-util/pulls/16"}}},"pull_request":{"url":"https://api.github.com/repos/liferay/liferay-faces-util/pulls/16","id":56100703,"html_url":"https://github.com/liferay/liferay-faces-util/pull/16","diff_url":"https://github.com/liferay/liferay-faces-util/pull/16.diff","patch_url":"https://github.com/liferay/liferay-faces-util/pull/16.patch","issue_url":"https://api.github.com/repos/liferay/liferay-faces-util/issues/16","number":16,"state":"open","locked":false,"title":"FACES-2531 Suppress the rendering of component resources marked as not renderable (create new API and implementation for handling resource dependencies in UIViewRoot)","user":{"login":"stiemannkj1","id":3483874,"avatar_url":"https://avatars.githubusercontent.com/u/3483874?v=3","gravatar_id":"","url":"https://api.github.com/users/stiemannkj1","html_url":"https://github.com/stiemannkj1","followers_url":"https://api.github.com/users/stiemannkj1/followers","following_url":"https://api.github.com/users/stiemannkj1/following{/other_user}","gists_url":"https://api.github.com/users/stiemannkj1/gists{/gist_id}","starred_url":"https://api.github.com/users/stiemannkj1/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/stiemannkj1/subscriptions","organizations_url":"https://api.github.com/users/stiemannkj1/orgs","repos_url":"https://api.github.com/users/stiemannkj1/repos","events_url":"https://api.github.com/users/stiemannkj1/events{/privacy}","received_events_url":"https://api.github.com/users/stiemannkj1/received_events","type":"User","site_admin":false},"body":null,"created_at":"2016-01-14T22:03:42Z","updated_at":"2016-01-14T22:36:45Z","closed_at":null,"merged_at":null,"merge_commit_sha":"c119b4cff2d013be762146d9954f488943d7d985","assignee":null,"milestone":null,"commits_url":"https://api.github.com/repos/liferay/liferay-faces-util/pulls/16/commits","review_comments_url":"https://api.github.com/repos/liferay/liferay-faces-util/pulls/16/comments","review_comment_url":"https://api.github.com/repos/liferay/liferay-faces-util/pulls/comments{/number}","comments_url":"https://api.github.com/repos/liferay/liferay-faces-util/issues/16/comments","statuses_url":"https://api.github.com/repos/liferay/liferay-faces-util/statuses/5c55aa63ce610dcbd9dbe1bdafec2f3aae9374a7","head":{"label":"stiemannkj1:suppress-rendering-of-resources-FACES-2531","ref":"suppress-rendering-of-resources-FACES-2531","sha":"5c55aa63ce610dcbd9dbe1bdafec2f3aae9374a7","user":{"login":"stiemannkj1","id":3483874,"avatar_url":"https://avatars.githubusercontent.com/u/3483874?v=3","gravatar_id":"","url":"https://api.github.com/users/stiemannkj1","html_url":"https://github.com/stiemannkj1","followers_url":"https://api.github.com/users/stiemannkj1/followers","following_url":"https://api.github.com/users/stiemannkj1/following{/other_user}","gists_url":"https://api.github.com/users/stiemannkj1/gists{/gist_id}","starred_url":"https://api.github.com/users/stiemannkj1/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/stiemannkj1/subscriptions","organizations_url":"https://api.github.com/users/stiemannkj1/orgs","repos_url":"https://api.github.com/users/stiemannkj1/repos","events_url":"https://api.github.com/users/stiemannkj1/events{/privacy}","received_events_url":"https://api.github.com/users/stiemannkj1/received_events","type":"User","site_admin":false},"repo":{"id":42178745,"name":"liferay-faces-util","full_name":"stiemannkj1/liferay-faces-util","owner":{"login":"stiemannkj1","id":3483874,"avatar_url":"https://avatars.githubusercontent.com/u/3483874?v=3","gravatar_id":"","url":"https://api.github.com/users/stiemannkj1","html_url":"https://github.com/stiemannkj1","followers_url":"https://api.github.com/users/stiemannkj1/followers","following_url":"https://api.github.com/users/stiemannkj1/following{/other_user}","gists_url":"https://api.github.com/users/stiemannkj1/gists{/gist_id}","starred_url":"https://api.github.com/users/stiemannkj1/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/stiemannkj1/subscriptions","organizations_url":"https://api.github.com/users/stiemannkj1/orgs","repos_url":"https://api.github.com/users/stiemannkj1/repos","events_url":"https://api.github.com/users/stiemannkj1/events{/privacy}","received_events_url":"https://api.github.com/users/stiemannkj1/received_events","type":"User","site_admin":false},"private":false,"html_url":"https://github.com/stiemannkj1/liferay-faces-util","description":"","fork":true,"url":"https://api.github.com/repos/stiemannkj1/liferay-faces-util","forks_url":"https://api.github.com/repos/stiemannkj1/liferay-faces-util/forks","keys_url":"https://api.github.com/repos/stiemannkj1/liferay-faces-util/keys{/key_id}","collaborators_url":"https://api.github.com/repos/stiemannkj1/liferay-faces-util/collaborators{/collaborator}","teams_url":"https://api.github.com/repos/stiemannkj1/liferay-faces-util/teams","hooks_url":"https://api.github.com/repos/stiemannkj1/liferay-faces-util/hooks","issue_events_url":"https://api.github.com/repos/stiemannkj1/liferay-faces-util/issues/events{/number}","events_url":"https://api.github.com/repos/stiemannkj1/liferay-faces-util/events","assignees_url":"https://api.github.com/repos/stiemannkj1/liferay-faces-util/assignees{/user}","branches_url":"https://api.github.com/repos/stiemannkj1/liferay-faces-util/branches{/branch}","tags_url":"https://api.github.com/repos/stiemannkj1/liferay-faces-util/tags","blobs_url":"https://api.github.com/repos/stiemannkj1/liferay-faces-util/git/blobs{/sha}","git_tags_url":"https://api.github.com/repos/stiemannkj1/liferay-faces-util/git/tags{/sha}","git_refs_url":"https://api.github.com/repos/stiemannkj1/liferay-faces-util/git/refs{/sha}","trees_url":"https://api.github.com/repos/stiemannkj1/liferay-faces-util/git/trees{/sha}","statuses_url":"https://api.github.com/repos/stiemannkj1/liferay-faces-util/statuses/{sha}","languages_url":"https://api.github.com/repos/stiemannkj1/liferay-faces-util/languages","stargazers_url":"https://api.github.com/repos/stiemannkj1/liferay-faces-util/stargazers","contributors_url":"https://api.github.com/repos/stiemannkj1/liferay-faces-util/contributors","subscribers_url":"https://api.github.com/repos/stiemannkj1/liferay-faces-util/subscribers","subscription_url":"https://api.github.com/repos/stiemannkj1/liferay-faces-util/subscription","commits_url":"https://api.github.com/repos/stiemannkj1/liferay-faces-util/commits{/sha}","git_commits_url":"https://api.github.com/repos/stiemannkj1/liferay-faces-util/git/commits{/sha}","comments_url":"https://api.github.com/repos/stiemannkj1/liferay-faces-util/comments{/number}","issue_comment_url":"https://api.github.com/repos/stiemannkj1/liferay-faces-util/issues/comments{/number}","contents_url":"https://api.github.com/repos/stiemannkj1/liferay-faces-util/contents/{+path}","compare_url":"https://api.github.com/repos/stiemannkj1/liferay-faces-util/compare/{base}...{head}","merges_url":"https://api.github.com/repos/stiemannkj1/liferay-faces-util/merges","archive_url":"https://api.github.com/repos/stiemannkj1/liferay-faces-util/{archive_format}{/ref}","downloads_url":"https://api.github.com/repos/stiemannkj1/liferay-faces-util/downloads","issues_url":"https://api.github.com/repos/stiemannkj1/liferay-faces-util/issues{/number}","pulls_url":"https://api.github.com/repos/stiemannkj1/liferay-faces-util/pulls{/number}","milestones_url":"https://api.github.com/repos/stiemannkj1/liferay-faces-util/milestones{/number}","notifications_url":"https://api.github.com/repos/stiemannkj1/liferay-faces-util/notifications{?since,all,participating}","labels_url":"https://api.github.com/repos/stiemannkj1/liferay-faces-util/labels{/name}","releases_url":"https://api.github.com/repos/stiemannkj1/liferay-faces-util/releases{/id}","created_at":"2015-09-09T13:04:41Z","updated_at":"2015-09-09T13:04:42Z","pushed_at":"2016-01-14T22:02:59Z","git_url":"git://github.com/stiemannkj1/liferay-faces-util.git","ssh_url":"git@github.com:stiemannkj1/liferay-faces-util.git","clone_url":"https://github.com/stiemannkj1/liferay-faces-util.git","svn_url":"https://github.com/stiemannkj1/liferay-faces-util","homepage":null,"size":363,"stargazers_count":0,"watchers_count":0,"language":"Java","has_issues":false,"has_downloads":true,"has_wiki":true,"has_pages":false,"forks_count":0,"mirror_url":null,"open_issues_count":0,"forks":0,"open_issues":0,"watchers":0,"default_branch":"master"}},"base":{"label":"liferay:master","ref":"master","sha":"7a6ce1a7ae98df0ab0e3adda218a683d46233a18","user":{"login":"liferay","id":131436,"avatar_url":"https://avatars.githubusercontent.com/u/131436?v=3","gravatar_id":"","url":"https://api.github.com/users/liferay","html_url":"https://github.com/liferay","followers_url":"https://api.github.com/users/liferay/followers","following_url":"https://api.github.com/users/liferay/following{/other_user}","gists_url":"https://api.github.com/users/liferay/gists{/gist_id}","starred_url":"https://api.github.com/users/liferay/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/liferay/subscriptions","organizations_url":"https://api.github.com/users/liferay/orgs","repos_url":"https://api.github.com/users/liferay/repos","events_url":"https://api.github.com/users/liferay/events{/privacy}","received_events_url":"https://api.github.com/users/liferay/received_events","type":"Organization","site_admin":false},"repo":{"id":41882236,"name":"liferay-faces-util","full_name":"liferay/liferay-faces-util","owner":{"login":"liferay","id":131436,"avatar_url":"https://avatars.githubusercontent.com/u/131436?v=3","gravatar_id":"","url":"https://api.github.com/users/liferay","html_url":"https://github.com/liferay","followers_url":"https://api.github.com/users/liferay/followers","following_url":"https://api.github.com/users/liferay/following{/other_user}","gists_url":"https://api.github.com/users/liferay/gists{/gist_id}","starred_url":"https://api.github.com/users/liferay/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/liferay/subscriptions","organizations_url":"https://api.github.com/users/liferay/orgs","repos_url":"https://api.github.com/users/liferay/repos","events_url":"https://api.github.com/users/liferay/events{/privacy}","received_events_url":"https://api.github.com/users/liferay/received_events","type":"Organization","site_admin":false},"private":false,"html_url":"https://github.com/liferay/liferay-faces-util","description":"","fork":false,"url":"https://api.github.com/repos/liferay/liferay-faces-util","forks_url":"https://api.github.com/repos/liferay/liferay-faces-util/forks","keys_url":"https://api.github.com/repos/liferay/liferay-faces-util/keys{/key_id}","collaborators_url":"https://api.github.com/repos/liferay/liferay-faces-util/collaborators{/collaborator}","teams_url":"https://api.github.com/repos/liferay/liferay-faces-util/teams","hooks_url":"https://api.github.com/repos/liferay/liferay-faces-util/hooks","issue_events_url":"https://api.github.com/repos/liferay/liferay-faces-util/issues/events{/number}","events_url":"https://api.github.com/repos/liferay/liferay-faces-util/events","assignees_url":"https://api.github.com/repos/liferay/liferay-faces-util/assignees{/user}","branches_url":"https://api.github.com/repos/liferay/liferay-faces-util/branches{/branch}","tags_url":"https://api.github.com/repos/liferay/liferay-faces-util/tags","blobs_url":"https://api.github.com/repos/liferay/liferay-faces-util/git/blobs{/sha}","git_tags_url":"https://api.github.com/repos/liferay/liferay-faces-util/git/tags{/sha}","git_refs_url":"https://api.github.com/repos/liferay/liferay-faces-util/git/refs{/sha}","trees_url":"https://api.github.com/repos/liferay/liferay-faces-util/git/trees{/sha}","statuses_url":"https://api.github.com/repos/liferay/liferay-faces-util/statuses/{sha}","languages_url":"https://api.github.com/repos/liferay/liferay-faces-util/languages","stargazers_url":"https://api.github.com/repos/liferay/liferay-faces-util/stargazers","contributors_url":"https://api.github.com/repos/liferay/liferay-faces-util/contributors","subscribers_url":"https://api.github.com/repos/liferay/liferay-faces-util/subscribers","subscription_url":"https://api.github.com/repos/liferay/liferay-faces-util/subscription","commits_url":"https://api.github.com/repos/liferay/liferay-faces-util/commits{/sha}","git_commits_url":"https://api.github.com/repos/liferay/liferay-faces-util/git/commits{/sha}","comments_url":"https://api.github.com/repos/liferay/liferay-faces-util/comments{/number}","issue_comment_url":"https://api.github.com/repos/liferay/liferay-faces-util/issues/comments{/number}","contents_url":"https://api.github.com/repos/liferay/liferay-faces-util/contents/{+path}","compare_url":"https://api.github.com/repos/liferay/liferay-faces-util/compare/{base}...{head}","merges_url":"https://api.github.com/repos/liferay/liferay-faces-util/merges","archive_url":"https://api.github.com/repos/liferay/liferay-faces-util/{archive_format}{/ref}","downloads_url":"https://api.github.com/repos/liferay/liferay-faces-util/downloads","issues_url":"https://api.github.com/repos/liferay/liferay-faces-util/issues{/number}","pulls_url":"https://api.github.com/repos/liferay/liferay-faces-util/pulls{/number}","milestones_url":"https://api.github.com/repos/liferay/liferay-faces-util/milestones{/number}","notifications_url":"https://api.github.com/repos/liferay/liferay-faces-util/notifications{?since,all,participating}","labels_url":"https://api.github.com/repos/liferay/liferay-faces-util/labels{/name}","releases_url":"https://api.github.com/repos/liferay/liferay-faces-util/releases{/id}","created_at":"2015-09-03T20:31:40Z","updated_at":"2016-01-14T00:04:57Z","pushed_at":"2016-01-14T22:03:42Z","git_url":"git://github.com/liferay/liferay-faces-util.git","ssh_url":"git@github.com:liferay/liferay-faces-util.git","clone_url":"https://github.com/liferay/liferay-faces-util.git","svn_url":"https://github.com/liferay/liferay-faces-util","homepage":null,"size":458,"stargazers_count":2,"watchers_count":2,"language":"Java","has_issues":true,"has_downloads":true,"has_wiki":true,"has_pages":false,"forks_count":4,"mirror_url":null,"open_issues_count":1,"forks":4,"open_issues":1,"watchers":2,"default_branch":"master"}},"_links":{"self":{"href":"https://api.github.com/repos/liferay/liferay-faces-util/pulls/16"},"html":{"href":"https://github.com/liferay/liferay-faces-util/pull/16"},"issue":{"href":"https://api.github.com/repos/liferay/liferay-faces-util/issues/16"},"comments":{"href":"https://api.github.com/repos/liferay/liferay-faces-util/issues/16/comments"},"review_comments":{"href":"https://api.github.com/repos/liferay/liferay-faces-util/pulls/16/comments"},"review_comment":{"href":"https://api.github.com/repos/liferay/liferay-faces-util/pulls/comments{/number}"},"commits":{"href":"https://api.github.com/repos/liferay/liferay-faces-util/pulls/16/commits"},"statuses":{"href":"https://api.github.com/repos/liferay/liferay-faces-util/statuses/5c55aa63ce610dcbd9dbe1bdafec2f3aae9374a7"}}}}