{"id":22707079,"url":"https://github.com/fdifrison/state-machine","last_synced_at":"2025-03-29T20:44:41.672Z","repository":{"id":265493293,"uuid":"896111335","full_name":"fdifrison/state-machine","owner":"fdifrison","description":null,"archived":false,"fork":false,"pushed_at":"2024-12-02T08:14:57.000Z","size":20,"stargazers_count":0,"open_issues_count":0,"forks_count":0,"subscribers_count":1,"default_branch":"main","last_synced_at":"2025-02-04T21:45:09.497Z","etag":null,"topics":[],"latest_commit_sha":null,"homepage":null,"language":"Java","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":null,"status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/fdifrison.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":null,"funding":null,"license":null,"code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null,"governance":null,"roadmap":null,"authors":null,"dei":null,"publiccode":null,"codemeta":null}},"created_at":"2024-11-29T15:10:02.000Z","updated_at":"2024-12-02T08:15:00.000Z","dependencies_parsed_at":"2024-11-29T16:35:08.474Z","dependency_job_id":"bc0b0c51-0421-4a53-ac3c-e5557f364197","html_url":"https://github.com/fdifrison/state-machine","commit_stats":null,"previous_names":["fdifrison/state-machine"],"tags_count":0,"template":false,"template_full_name":null,"repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/fdifrison%2Fstate-machine","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/fdifrison%2Fstate-machine/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/fdifrison%2Fstate-machine/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/fdifrison%2Fstate-machine/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/fdifrison","download_url":"https://codeload.github.com/fdifrison/state-machine/tar.gz/refs/heads/main","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":246243564,"owners_count":20746307,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2022-07-04T15:15:14.044Z","host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":[],"created_at":"2024-12-10T10:11:23.852Z","updated_at":"2025-03-29T20:44:41.667Z","avatar_url":"https://github.com/fdifrison.png","language":"Java","funding_links":[],"categories":[],"sub_categories":[],"readme":"# State Machine\n\nA prototype project to handle state changes in pure java, using JDK 23 pattern matching and sealed classes\n\nThe following parts are defined:\n\n* A **State** represent a node in the state machine graph\n* An **Event** represent a trigger from a **State** to another (or to itself potentially); it is a sealed interface that\n  defines a hierarchy between admin and user events. Their distinction lets define a different guarding and logging\n  strategy potentially at each level of the hierarchy.\n* The State transitions are bounded to the definition of the specific event; these are implemented with records that\n  check for the initial state to be legal in the compact constructor and defined a custom constructor where the\n  destination State is coded in the class.\n* The StateMachineService is the heart of the behavior, where custom services can be injected in the event (if defined\n  as Event behavior), see. JwtService for implementing RBAC and EventLogService to audit State change in a custom\n  repository.","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Ffdifrison%2Fstate-machine","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Ffdifrison%2Fstate-machine","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Ffdifrison%2Fstate-machine/lists"}