{"action":"closed","issue":{"url":"https://api.github.com/repos/RepreZen/JsonOverlay/issues/1","repository_url":"https://api.github.com/repos/RepreZen/JsonOverlay","labels_url":"https://api.github.com/repos/RepreZen/JsonOverlay/issues/1/labels{/name}","comments_url":"https://api.github.com/repos/RepreZen/JsonOverlay/issues/1/comments","events_url":"https://api.github.com/repos/RepreZen/JsonOverlay/issues/1/events","html_url":"https://github.com/RepreZen/JsonOverlay/issues/1","id":307212152,"number":1,"title":"Improve means of accessing non-model features in generated APIs","user":{"login":"andylowry","id":108675,"avatar_url":"https://avatars2.githubusercontent.com/u/108675?v=4","gravatar_id":"","url":"https://api.github.com/users/andylowry","html_url":"https://github.com/andylowry","followers_url":"https://api.github.com/users/andylowry/followers","following_url":"https://api.github.com/users/andylowry/following{/other_user}","gists_url":"https://api.github.com/users/andylowry/gists{/gist_id}","starred_url":"https://api.github.com/users/andylowry/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/andylowry/subscriptions","organizations_url":"https://api.github.com/users/andylowry/orgs","repos_url":"https://api.github.com/users/andylowry/repos","events_url":"https://api.github.com/users/andylowry/events{/privacy}","received_events_url":"https://api.github.com/users/andylowry/received_events","type":"User","site_admin":false},"labels":[],"state":"closed","locked":false,"assignee":null,"assignees":[],"milestone":null,"comments":1,"created_at":"2018-03-21T11:45:25Z","updated_at":"2018-03-22T12:26:16Z","closed_at":"2018-03-22T12:26:16Z","author_association":"CONTRIBUTOR","body":"There are a number of methods in generated overlay interfaces and classes that have little or nothing to do with the generated model, but rather represent common functionality in the JsonOverlay framework. Some, like `is...Reference` and `get...Reference` are generated alongside model-related methods. Others, like `isPresent`, `pathInParent`, `find`, etc. are inherited. These methods complicate the API, and they represent unfortunate _de facto_ reserved names. \r\n\r\nA better approach would be to leave all these features out of the generated API, and provide these features via methods of an adapter class, which could be applied to any overlay object. The class could either be instantiated with an overlay instance, and could alternatively offer its features via static methods that take an overlay object as an argument.\r\n\r\nThe adapter class would be part of the overlay framework and so would have access to otherwise protected methods and data members of overlay objects. Those protected members could then be named in a collision-avoidance manner (.e.g with initial `_`) without affecting the public API of either the adapter or the adpated overlay object."}}
{"actor":{"display_login":"andylowry"}}