{"action":"created","issue":{"url":"https://api.github.com/repos/chrsmithdemos/google-api-java-client/issues/802","labels_url":"https://api.github.com/repos/chrsmithdemos/google-api-java-client/issues/802/labels{/name}","comments_url":"https://api.github.com/repos/chrsmithdemos/google-api-java-client/issues/802/comments","events_url":"https://api.github.com/repos/chrsmithdemos/google-api-java-client/issues/802/events","html_url":"https://github.com/chrsmithdemos/google-api-java-client/issues/802","id":59553639,"number":802,"title":"The Java classes generated by Google Cloud Endpoints should not be final","user":{"login":"GoogleCodeExporter","id":9614759,"avatar_url":"https://avatars.githubusercontent.com/u/9614759?v=3","gravatar_id":"","url":"https://api.github.com/users/GoogleCodeExporter","html_url":"https://github.com/GoogleCodeExporter","followers_url":"https://api.github.com/users/GoogleCodeExporter/followers","following_url":"https://api.github.com/users/GoogleCodeExporter/following{/other_user}","gists_url":"https://api.github.com/users/GoogleCodeExporter/gists{/gist_id}","starred_url":"https://api.github.com/users/GoogleCodeExporter/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/GoogleCodeExporter/subscriptions","organizations_url":"https://api.github.com/users/GoogleCodeExporter/orgs","repos_url":"https://api.github.com/users/GoogleCodeExporter/repos","events_url":"https://api.github.com/users/GoogleCodeExporter/events{/privacy}","received_events_url":"https://api.github.com/users/GoogleCodeExporter/received_events","type":"User","site_admin":false},"labels":[{"url":"https://api.github.com/repos/chrsmithdemos/google-api-java-client/labels/auto-migrated","name":"auto-migrated","color":"ededed"},{"url":"https://api.github.com/repos/chrsmithdemos/google-api-java-client/labels/Component-Google-APIs","name":"Component-Google-APIs","color":"ededed"},{"url":"https://api.github.com/repos/chrsmithdemos/google-api-java-client/labels/Priority-Medium","name":"Priority-Medium","color":"ededed"},{"url":"https://api.github.com/repos/chrsmithdemos/google-api-java-client/labels/Type-Enhancement","name":"Type-Enhancement","color":"ededed"}],"state":"open","locked":false,"assignee":null,"milestone":null,"comments":4,"created_at":"2015-03-02T21:25:27Z","updated_at":"2015-03-02T21:25:28Z","closed_at":null,"body":"```\nVersion of google-api-java-client = 1.15.0-rc.\n\nJava environment (e.g. Java 6, Android 2.3, App Engine)?\nGAE/J SDK 1.8.1.1 with Eclipse 4.2.2 and Android SDK 4.2.2.  GPE for Eclipse \n4.2 is 3.2.4.v201306061638-rel-r42.  Windows 7 32bit.\n\nDescribe the problem.\nThe Java classes generated by the \"Generate Cloud Endpoint Client Library\" \nwizard of GPE are final and have private members (regardless of how the \ndeveloper declared them in the server code).  This makes it awkward for the \ndeveloper to add functionality to the generated code.\n\n(This issue may apply to the code generated for other platforms as well.)\n\nHow would you expect it to be fixed?\n\nI believe that the keyword 'final' should not be included in the declaration of \nthe generated classes.  Also, the access level of the generated member \nattributes should be determined by one of these means (rather than always \nsetting it to private):\n\n1. The access level of the generated attributes should reflect that of the \nserver code they were generated from.\n2. The access level could be specified in the @ApiMethod annotation,\n3. The access level could always be 'protected'.\n\nMy preference is #1.\n\nThis defect report follows from:\nhttps://code.google.com/p/google-plugin-for-eclipse/issues/detail?id=216\nhttp://stackoverflow.com/questions/17180690/json-deserializing-issues-when-using\n-both-gae-endpoints-and-gcm-on-android\n\n```\n\nOriginal issue reported on code.google.com by `t...@malcolmson.ca` on 19 Jun 2013 at 9:46"},"comment":{"url":"https://api.github.com/repos/chrsmithdemos/google-api-java-client/issues/comments/76828206","html_url":"https://github.com/chrsmithdemos/google-api-java-client/issues/802#issuecomment-76828206","issue_url":"https://api.github.com/repos/chrsmithdemos/google-api-java-client/issues/802","id":76828206,"user":{"login":"GoogleCodeExporter","id":9614759,"avatar_url":"https://avatars.githubusercontent.com/u/9614759?v=3","gravatar_id":"","url":"https://api.github.com/users/GoogleCodeExporter","html_url":"https://github.com/GoogleCodeExporter","followers_url":"https://api.github.com/users/GoogleCodeExporter/followers","following_url":"https://api.github.com/users/GoogleCodeExporter/following{/other_user}","gists_url":"https://api.github.com/users/GoogleCodeExporter/gists{/gist_id}","starred_url":"https://api.github.com/users/GoogleCodeExporter/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/GoogleCodeExporter/subscriptions","organizations_url":"https://api.github.com/users/GoogleCodeExporter/orgs","repos_url":"https://api.github.com/users/GoogleCodeExporter/repos","events_url":"https://api.github.com/users/GoogleCodeExporter/events{/privacy}","received_events_url":"https://api.github.com/users/GoogleCodeExporter/received_events","type":"User","site_admin":false},"created_at":"2015-03-02T21:25:27Z","updated_at":"2015-03-02T21:25:27Z","body":"```\nRegarding the access level...\n\nYes, the members can be accessed via the getter/setters, but then my subclass \nwould be more like an external class.  I'm hoping to create subclasses that are \nfairly natural and simple.\n\nI guess my perspective is that, since you have plain setters (ones that do \nnothing else but change the value and are not synchronized), why not let a \nsubclass have direct access.  It is functionally no different than my subclass \nusing the getter/setters but makes for a more natural subclass.\n\nMore importantly, why not reflect the access level that I specify in the server \nclass (where possible)?  If I make the attribute protected, or even public, why \noverride the programmers' own decision when generating the client class?  \n\nI realize that you have to worry about mappings between languages, so it is not \nas simple as I make it sound, but I still think it could work.\n```\n\nOriginal comment by `t...@malcolmson.ca` on 20 Jun 2013 at 4:14"}}