Title: State checking for extending abstract classes · Issue #131 · liquid-java/liquidjava · GitHub
Open Graph Title: State checking for extending abstract classes · Issue #131 · liquid-java/liquidjava
X Title: State checking for extending abstract classes · Issue #131 · liquid-java/liquidjava
Description: Currently, reusing state refinements from an abstract superclass in a concrete class is not fully implemented, and gives an error like the one below. Example for abstract class java.net.URLConnection: @ExternalRefinementsFor("java.net.UR...
Open Graph Description: Currently, reusing state refinements from an abstract superclass in a concrete class is not fully implemented, and gives an error like the one below. Example for abstract class java.net.URLConnecti...
X Description: Currently, reusing state refinements from an abstract superclass in a concrete class is not fully implemented, and gives an error like the one below. Example for abstract class java.net.URLConnecti...
Opengraph URL: https://github.com/liquid-java/liquidjava/issues/131
X: @github
Domain: Github.com
{"@context":"https://schema.org","@type":"DiscussionForumPosting","headline":"State checking for extending abstract classes","articleBody":"Currently, reusing state refinements from an abstract superclass in a concrete class is not fully implemented, and gives an error like the one below.\n\u003cimg width=\"1718\" height=\"850\" alt=\"Image\" src=\"https://github.com/user-attachments/assets/1cd0d7af-57e3-4b45-8e36-7fa4f4be5504\" /\u003e\n\nExample for abstract class `java.net.URLConnection`:\n```java\n@ExternalRefinementsFor(\"java.net.URLConnection\")\n@StateSet({\"setup\", \"connected\"})\npublic interface URLConnectionRefinements {\n \n @StateRefinement(to=\"setup(this)\")\n public void URLConnection(URL url);\n\n @StateRefinement(from=\"setup(this)\")\n public void setDoInput(boolean doinput);\n\n @StateRefinement(from=\"setup(this)\", to=\"connected(this)\")\n public void connect();\n\n @StateRefinement(from=\"connected(this)\")\n public Object getContent();\n \n}\n```\n\nExtended in class `URLExt`:\n```java\nclass URLExt extends URLConnection{\n\n public URLExt(URL url){\n super(url);\n }\n\n @Override\n public void connect() throws IOException {\n // TODO Auto-generated method stub\n throw new UnsupportedOperationException(\"Unimplemented method 'connect'\");\n }\n \n}```\n\nTested in:\n```java\nclass Testurl {\n void test() throws URISyntaxException, IOException {\n\n URLExt u = new URLExt(new URI(\"http://example.com\").toURL());\n u.setDoInput(false); // should not be an error but it is \n u.getContent(); // should be an error\n\n }\n}\n```\n\n","author":{"url":"https://github.com/CatarinaGamboa","@type":"Person","name":"CatarinaGamboa"},"datePublished":"2025-12-10T15:00:42.000Z","interactionStatistic":{"@type":"InteractionCounter","interactionType":"https://schema.org/CommentAction","userInteractionCount":0},"url":"https://github.com/131/liquidjava/issues/131"}
| 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:316e0db6-d748-12d2-538c-1d226aee3ea0 |
| current-catalog-service-hash | 81bb79d38c15960b92d99bca9288a9108c7a47b18f2423d0f6438c5b7bcd2114 |
| request-id | 9ABC:14E806:6BFFC2:8F0565:6A62A2BE |
| html-safe-nonce | 9767046c67f31290f1412afaa7766a7df08de6c2e20a4a548bf9fcf5aceedfbc |
| visitor-payload | eyJyZWZlcnJlciI6IiIsInJlcXVlc3RfaWQiOiI5QUJDOjE0RTgwNjo2QkZGQzI6OEYwNTY1OjZBNjJBMkJFIiwidmlzaXRvcl9pZCI6IjY5ODk5NTQ1ODYxOTcwMDkwODYiLCJyZWdpb25fZWRnZSI6ImlhZCIsInJlZ2lvbl9yZW5kZXIiOiJpYWQifQ== |
| visitor-hmac | da16f836c0116aff9100b0ee8ba3c89ddb2b967821a118d61bed635e3b79e367 |
| hovercard-subject-tag | issue:3715577839 |
| 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/liquid-java/liquidjava/131/issue_layout |
| twitter:image | https://opengraph.githubassets.com/bf7e249e7799adf2a6615085103a28174ce15a170f535c76b174ab8034c77084/liquid-java/liquidjava/issues/131 |
| twitter:card | summary_large_image |
| og:image | https://opengraph.githubassets.com/bf7e249e7799adf2a6615085103a28174ce15a170f535c76b174ab8034c77084/liquid-java/liquidjava/issues/131 |
| og:image:alt | Currently, reusing state refinements from an abstract superclass in a concrete class is not fully implemented, and gives an error like the one below. Example for abstract class java.net.URLConnecti... |
| og:image:width | 1200 |
| og:image:height | 600 |
| og:site_name | GitHub |
| og:type | object |
| og:author:username | CatarinaGamboa |
| hostname | github.com |
| expected-hostname | github.com |
| None | a6443033349a18134b517627f043d4a59a5110337b879810c7229c2c7e28eda0 |
| turbo-cache-control | no-preview |
| go-import | github.com/liquid-java/liquidjava git https://github.com/liquid-java/liquidjava.git |
| octolytics-dimension-user_id | 242831829 |
| octolytics-dimension-user_login | liquid-java |
| octolytics-dimension-repository_id | 258218369 |
| octolytics-dimension-repository_nwo | liquid-java/liquidjava |
| octolytics-dimension-repository_public | true |
| octolytics-dimension-repository_is_fork | false |
| octolytics-dimension-repository_network_root_id | 258218369 |
| octolytics-dimension-repository_network_root_nwo | liquid-java/liquidjava |
| 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 | d6c6cacbe32d3ddfd1796fbd1a39b8fb47b87daf |
| ui-target | full |
| theme-color | #1e2327 |
| color-scheme | light dark |
Links:
Viewport: width=device-width