{"action":"created","issue":{"url":"https://api.github.com/repos/m-m-m/util/issues/163","repository_url":"https://api.github.com/repos/m-m-m/util","labels_url":"https://api.github.com/repos/m-m-m/util/issues/163/labels{/name}","comments_url":"https://api.github.com/repos/m-m-m/util/issues/163/comments","events_url":"https://api.github.com/repos/m-m-m/util/issues/163/events","html_url":"https://github.com/m-m-m/util/issues/163","id":124619392,"number":163,"title":"uti-property: create new module with generic bean and property support","user":{"login":"hohwille","id":1923119,"avatar_url":"https://avatars.githubusercontent.com/u/1923119?v=3","gravatar_id":"","url":"https://api.github.com/users/hohwille","html_url":"https://github.com/hohwille","followers_url":"https://api.github.com/users/hohwille/followers","following_url":"https://api.github.com/users/hohwille/following{/other_user}","gists_url":"https://api.github.com/users/hohwille/gists{/gist_id}","starred_url":"https://api.github.com/users/hohwille/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/hohwille/subscriptions","organizations_url":"https://api.github.com/users/hohwille/orgs","repos_url":"https://api.github.com/users/hohwille/repos","events_url":"https://api.github.com/users/hohwille/events{/privacy}","received_events_url":"https://api.github.com/users/hohwille/received_events","type":"User","site_admin":false},"labels":[{"url":"https://api.github.com/repos/m-m-m/util/labels/enhancement","name":"enhancement","color":"84b6eb"},{"url":"https://api.github.com/repos/m-m-m/util/labels/util-property","name":"util-property","color":"f7c6c7"}],"state":"open","locked":false,"assignee":{"login":"hohwille","id":1923119,"avatar_url":"https://avatars.githubusercontent.com/u/1923119?v=3","gravatar_id":"","url":"https://api.github.com/users/hohwille","html_url":"https://github.com/hohwille","followers_url":"https://api.github.com/users/hohwille/followers","following_url":"https://api.github.com/users/hohwille/following{/other_user}","gists_url":"https://api.github.com/users/hohwille/gists{/gist_id}","starred_url":"https://api.github.com/users/hohwille/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/hohwille/subscriptions","organizations_url":"https://api.github.com/users/hohwille/orgs","repos_url":"https://api.github.com/users/hohwille/repos","events_url":"https://api.github.com/users/hohwille/events{/privacy}","received_events_url":"https://api.github.com/users/hohwille/received_events","type":"User","site_admin":false},"milestone":{"url":"https://api.github.com/repos/m-m-m/util/milestones/20","html_url":"https://github.com/m-m-m/util/milestones/release:8.0.0","labels_url":"https://api.github.com/repos/m-m-m/util/milestones/20/labels","id":1113188,"number":20,"title":"release:8.0.0","description":"Next major release with java8 support.","creator":{"login":"hohwille","id":1923119,"avatar_url":"https://avatars.githubusercontent.com/u/1923119?v=3","gravatar_id":"","url":"https://api.github.com/users/hohwille","html_url":"https://github.com/hohwille","followers_url":"https://api.github.com/users/hohwille/followers","following_url":"https://api.github.com/users/hohwille/following{/other_user}","gists_url":"https://api.github.com/users/hohwille/gists{/gist_id}","starred_url":"https://api.github.com/users/hohwille/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/hohwille/subscriptions","organizations_url":"https://api.github.com/users/hohwille/orgs","repos_url":"https://api.github.com/users/hohwille/repos","events_url":"https://api.github.com/users/hohwille/events{/privacy}","received_events_url":"https://api.github.com/users/hohwille/received_events","type":"User","site_admin":false},"open_issues":3,"closed_issues":0,"state":"open","created_at":"2015-05-16T09:34:52Z","updated_at":"2016-01-09T23:37:21Z","due_on":null,"closed_at":null},"comments":12,"created_at":"2016-01-03T00:13:28Z","updated_at":"2016-02-13T11:16:10Z","closed_at":null,"body":"After years of pain with implementing stupid Java beans with tons of boilerplate code and after some experiments with JavaFx properties I want to start a new approach:\r\n* create your beans as interfaces\r\n* instantiate your beans from interface as dynamic proxies via some factory.\r\n* support for default methods\r\n* ability for easy fabrication via static method in interface\r\n* allow JavaFx compatible properties with additional features such as validation and type information.\r\n* allow read only view on bean\r\n* support prototype of bean with default values\r\n* support for dynamic beans that can be extended with properties on the fly (e.g. for JSON/XML binding of new properties added in a new version of a REST-service but not yet known in the type-safe code but still available in the object even after re-marshalling.\r\n* support for fast, simple and powerful introspection (unlike reflection hell).\r\n* support both for regular getters/setters as well as property access methods (both via JavaFx conventions as well as DOT.NET style with Capitalized property as method name).\r\n\r\nAll possible with Java8 today. Approach is worth to be implemented, evaluated and used in practice.\r\nBTW: Would be the perfect solution for mmm-client."},"comment":{"url":"https://api.github.com/repos/m-m-m/util/issues/comments/183644632","html_url":"https://github.com/m-m-m/util/issues/163#issuecomment-183644632","issue_url":"https://api.github.com/repos/m-m-m/util/issues/163","id":183644632,"user":{"login":"hohwille","id":1923119,"avatar_url":"https://avatars.githubusercontent.com/u/1923119?v=3","gravatar_id":"","url":"https://api.github.com/users/hohwille","html_url":"https://github.com/hohwille","followers_url":"https://api.github.com/users/hohwille/followers","following_url":"https://api.github.com/users/hohwille/following{/other_user}","gists_url":"https://api.github.com/users/hohwille/gists{/gist_id}","starred_url":"https://api.github.com/users/hohwille/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/hohwille/subscriptions","organizations_url":"https://api.github.com/users/hohwille/orgs","repos_url":"https://api.github.com/users/hohwille/repos","events_url":"https://api.github.com/users/hohwille/events{/privacy}","received_events_url":"https://api.github.com/users/hohwille/received_events","type":"User","site_admin":false},"created_at":"2016-02-13T11:16:10Z","updated_at":"2016-02-13T11:16:10Z","body":"Thanks for your feedback. I am getting to the point that hibernate is just\ntoo complex and does too much magic behind the scenes such as writing\nchanges to DB automatically on TX commit. Also classic RDBMS is just pain.\nHave a look at orient repo in m-m-m for modern approach with OrientDb.\nHowever for your Usecase you can habe an interface with getters and setters\nthat you implement as plain JPA bean to work with hibernate. Then you can\nalso derive a bean interface Form your IF and use that as TO. You can then\nuse property bindings in UI.\nAm 13.02.2016 12:05 nachm. schrieb \"Simon Spielmann\" <\nnotifications@github.com>:\n\n> I played a little bit with your implementation. My first experiment was\n> what will hibernate say to you \"proxied\" beans. Sadly that's not working,\n> since hibernate does not support mapping of entities which are interfaces\n> (see https://hibernate.atlassian.net/browse/HHH-4413).\n>\n> —\n> Reply to this email directly or view it on GitHub\n> <https://github.com/m-m-m/util/issues/163#issuecomment-183643431>.\n>\n"}}