Title: Cannot call public methods in com.google.cloud.firestore.UpdateBuilder via reflection · Issue #3580 · googleapis/google-cloud-java · GitHub
Open Graph Title: Cannot call public methods in com.google.cloud.firestore.UpdateBuilder via reflection · Issue #3580 · googleapis/google-cloud-java
X Title: Cannot call public methods in com.google.cloud.firestore.UpdateBuilder via reflection · Issue #3580 · googleapis/google-cloud-java
Description: The com.google.cloud.firestore.Transaction and WriteBatch classes are public but they extend a package-private abstract class UpdateBuilder. The public methods inherited from UpdateBuilder cannot be invoked via the Java reflection API du...
Open Graph Description: The com.google.cloud.firestore.Transaction and WriteBatch classes are public but they extend a package-private abstract class UpdateBuilder. The public methods inherited from UpdateBuilder cannot b...
X Description: The com.google.cloud.firestore.Transaction and WriteBatch classes are public but they extend a package-private abstract class UpdateBuilder. The public methods inherited from UpdateBuilder cannot b...
Opengraph URL: https://github.com/googleapis/google-cloud-java/issues/3580
X: @github
Domain: github.com
{"@context":"https://schema.org","@type":"DiscussionForumPosting","headline":"Cannot call public methods in com.google.cloud.firestore.UpdateBuilder via reflection","articleBody":"The com.google.cloud.firestore.Transaction and WriteBatch classes are\r\npublic but they extend a package-private abstract class\r\nUpdateBuilder. The public methods inherited from\r\nUpdateBuilder cannot be invoked via the Java reflection API due to\r\nlong-standing bugs such as JDK-4283544.\r\n\r\nThis is a serious problem for alternative JVM languages which use\r\nreflection to discover Java methods. For example, Clojure uses\r\nreflection in its compiler, and it cannot invoke these methods at all.\r\n\r\nI know at least UpdateBuilder is affected. There may be other\r\ninstances of this pattern that I haven't found.\r\n\r\n**Possible Solution**\r\nFor this specific case, making UpdateBuilder public will fix the\r\nproblem. This should have no impact on other code. The class will\r\nstill not be instantiable because it is also abstract.\r\n\r\nIf there are other package-private classes extended by public API\r\nclasses, they would also need to be declared public.\r\n\r\nVersion: google-cloud-firestore-0.52.0-beta\r\nJava: Oracle JDK 1.8.0_152","author":{"url":"https://github.com/pmoriarty","@type":"Person","name":"pmoriarty"},"datePublished":"2018-08-18T15:00:02.000Z","interactionStatistic":{"@type":"InteractionCounter","interactionType":"https://schema.org/CommentAction","userInteractionCount":0},"url":"https://github.com/3580/google-cloud-java/issues/3580"}
| route-pattern | /_view_fragments/issues/show/:user_id/:repository/:id/issue_layout(.:format) |
| route-controller | voltron_issues_fragments |
| route-action | issue_layout |
| fetch-nonce | v2:85ace93d-2ef3-3ed6-b031-1db174ca86c3 |
| current-catalog-service-hash | 81bb79d38c15960b92d99bca9288a9108c7a47b18f2423d0f6438c5b7bcd2114 |
| request-id | B048:9609B:185FEFB:233E1A1:6A4CEF45 |
| html-safe-nonce | 01ea612d2d55c4917052f73058ff7d8cf9643a3b6cf4117722b8bd0a166dbfac |
| visitor-payload | eyJyZWZlcnJlciI6IiIsInJlcXVlc3RfaWQiOiJCMDQ4Ojk2MDlCOjE4NUZFRkI6MjMzRTFBMTo2QTRDRUY0NSIsInZpc2l0b3JfaWQiOiI2NzkzODQ2NTg4Nzg0NTk3MTciLCJyZWdpb25fZWRnZSI6ImlhZCIsInJlZ2lvbl9yZW5kZXIiOiJpYWQifQ== |
| visitor-hmac | c041b847faa334e08dfd15fce7b9c9b7c6e2447f38c3aaa18aa162b71f00cccc |
| hovercard-subject-tag | issue:351826809 |
| github-keyboard-shortcuts | repository,issues,copilot |
| google-site-verification | Apib7-x98H0j5cPqHWwSMm6dNU4GmODRoqxLiDzdx9I |
| octolytics-url | https://collector.github.com/github/collect |
| analytics-location | / |
| fb:app_id | 1401488693436528 |
| apple-itunes-app | app-id=1477376905, app-argument=https://github.com/_view_fragments/issues/show/googleapis/google-cloud-java/3580/issue_layout |
| twitter:image | https://opengraph.githubassets.com/e6ec42eecd1f63cd3dcec659e228b53ed5849e91a251af9ea5dff7ba8de01fa7/googleapis/google-cloud-java/issues/3580 |
| twitter:card | summary_large_image |
| og:image | https://opengraph.githubassets.com/e6ec42eecd1f63cd3dcec659e228b53ed5849e91a251af9ea5dff7ba8de01fa7/googleapis/google-cloud-java/issues/3580 |
| og:image:alt | The com.google.cloud.firestore.Transaction and WriteBatch classes are public but they extend a package-private abstract class UpdateBuilder. The public methods inherited from UpdateBuilder cannot b... |
| og:image:width | 1200 |
| og:image:height | 600 |
| og:site_name | GitHub |
| og:type | object |
| og:author:username | pmoriarty |
| hostname | github.com |
| expected-hostname | github.com |
| None | 299b43bca6e02ad35197ffeba30d2466846d5fb02ab96fbced5b5e6cec589fb8 |
| turbo-cache-control | no-preview |
| go-import | github.com/googleapis/google-cloud-java git https://github.com/googleapis/google-cloud-java.git |
| octolytics-dimension-user_id | 16785467 |
| octolytics-dimension-user_login | googleapis |
| octolytics-dimension-repository_id | 26181278 |
| octolytics-dimension-repository_nwo | googleapis/google-cloud-java |
| octolytics-dimension-repository_public | true |
| octolytics-dimension-repository_is_fork | false |
| octolytics-dimension-repository_network_root_id | 26181278 |
| octolytics-dimension-repository_network_root_nwo | googleapis/google-cloud-java |
| turbo-body-classes | logged-out env-production page-responsive |
| disable-turbo | false |
| browser-stats-url | https://api.github.com/_private/browser/stats |
| browser-errors-url | https://api.github.com/_private/browser/errors |
| release | efec6750a5afcaeaf5dfcf629f404cf98c8371e3 |
| ui-target | full |
| theme-color | #1e2327 |
| color-scheme | light dark |
Links:
Viewport: width=device-width