{"id":23244657,"url":"https://github.com/bytemechanics/standalone-ignite","last_synced_at":"2025-04-06T00:16:41.162Z","repository":{"id":54828828,"uuid":"118515146","full_name":"bytemechanics/standalone-ignite","owner":"bytemechanics","description":"Library to reduce the code necessary to start and make a controlled shutdown of standalone applications","archived":false,"fork":false,"pushed_at":"2021-10-16T21:46:40.000Z","size":878,"stargazers_count":1,"open_issues_count":0,"forks_count":0,"subscribers_count":2,"default_branch":"master","last_synced_at":"2025-02-12T06:24:24.582Z","etag":null,"topics":["boot","java","library","standalone","startup"],"latest_commit_sha":null,"homepage":"https://standalone-ignite.bytemechanics.org","language":"Java","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"apache-2.0","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/bytemechanics.png","metadata":{"files":{"readme":"README.md","changelog":"CHANGELOG.md","contributing":null,"funding":null,"license":"LICENSE","code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null}},"created_at":"2018-01-22T21:05:21.000Z","updated_at":"2021-10-16T21:46:43.000Z","dependencies_parsed_at":"2022-08-14T04:10:10.804Z","dependency_job_id":null,"html_url":"https://github.com/bytemechanics/standalone-ignite","commit_stats":null,"previous_names":[],"tags_count":18,"template":false,"template_full_name":null,"repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/bytemechanics%2Fstandalone-ignite","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/bytemechanics%2Fstandalone-ignite/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/bytemechanics%2Fstandalone-ignite/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/bytemechanics%2Fstandalone-ignite/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/bytemechanics","download_url":"https://codeload.github.com/bytemechanics/standalone-ignite/tar.gz/refs/heads/master","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":247415967,"owners_count":20935387,"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":["boot","java","library","standalone","startup"],"created_at":"2024-12-19T07:10:10.980Z","updated_at":"2025-04-06T00:16:41.147Z","avatar_url":"https://github.com/bytemechanics.png","language":"Java","funding_links":[],"categories":[],"sub_categories":[],"readme":"# Standalone ignite\n[![Latest version](https://maven-badges.herokuapp.com/maven-central/org.bytemechanics/standalone-ignite/badge.svg)](https://maven-badges.herokuapp.com/maven-central/org.bytemechanics/standalone-ignite/badge.svg)\n[![Quality Gate](https://sonarcloud.io/api/project_badges/measure?project=org.bytemechanics%3Astandalone-ignite\u0026metric=alert_status)](https://sonarcloud.io/dashboard/index/org.bytemechanics%3Astandalone-ignite)\n[![Coverage](https://sonarcloud.io/api/project_badges/measure?project=org.bytemechanics%3Astandalone-ignite\u0026metric=coverage)](https://sonarcloud.io/dashboard/index/org.bytemechanics%3Astandalone-ignite)\n[![License](https://img.shields.io/badge/License-Apache%202.0-blue.svg)](https://opensource.org/licenses/Apache-2.0)\n\nLibrary to reduce the code necessary to start and make a controlled shutdown of standalone applications. The scope of this library is to provide solutions for:\n* Easy parse of command line parameters\n* Easy start and stop daemons (standalone services) inside your standalone application\n* Easy detection of O.S. stop requirement to make a graceful shutdown\n\n## Motivation\nSome times make something so simple as batch generates a lot of boilerplate source with this library we intend to make this startup easier and faster as well as keeping the control of all startup process.\n\n## Requirements\nJDK8\n\n## Quick start\n(Please read our [Javadoc](https://standalone-ignite.bytemechanics.org/javadoc/index.html) for further information)\n1. First of all include the Jar file in your compile and execution classpath.\n\n### Maven\n```Maven\n\t\u003cdependency\u003e\n\t\t\u003cgroupId\u003eorg.bytemechanics\u003c/groupId\u003e\n\t\t\u003cartifactId\u003estandalone-ignite\u003c/artifactId\u003e\n\t\t\u003cversion\u003eX.X.X\u003c/version\u003e\n\t\u003c/dependency\u003e\n```\n### Graddle\n```Gradle\ndependencies {\n    compile 'org.bytemechanics:standalone-ignite:X.X.X'\n}\n```\n\n2. Create the standalone application main class\n```Java\npackage mypackage;\n```\n\n3. If some parameters are needed, create an enumerate with all necessary parameters\n```Java\npackage mypackage;\n\nimport java.util.Optional;\nimport java.util.function.Function;\nimport org.bytemechanics.standalone.ignite.beans.DefaultParameterContainer;\n\npublic enum StandaloneAppTestParameter implements Parameter{\n\n\tBOOLEANVALUE(boolean.class,\"boolean value\"),\n\tINTVALUE(int.class,\"int value\"),\n\tLONGVALUE(long.class,\"long value\"),\n\tFLOATVALUE(float.class,\"float value\"),\n\tDOUBLEVALUE(double.class,\"double value\"),\n\tSTRINGVALUE(String.class,\"string value\"),\n\t;\n\t\n\tprivate final DefaultParameterContainer container;\n\t\n\t\u003cT extends Object\u003e StandaloneAppTestParameter(final Class\u003cT\u003e _type,final String _description){\n\t\tthis(_type,_description,null,null);\n\t}\n\t\u003cT extends Object\u003e StandaloneAppTestParameter(final Class\u003cT\u003e _type,final String _description,final String _default){\n\t\tthis(_type,_description,_default,null);\n\t}\n\t\u003cT extends Object\u003e StandaloneAppTestParameter(final Class\u003cT\u003e _type,final String _description,final String _default,final Function\u003cString,T\u003e _parser){\n\t\tthis.container=DefaultParameterContainer.builder()\n\t\t\t\t\t\t\t\t\t\t\t\t.name(name())\n\t\t\t\t\t\t\t\t\t\t\t\t.type(_type)\n\t\t\t\t\t\t\t\t\t\t\t\t.description(_description)\n\t\t\t\t\t\t\t\t\t\t\t\t.defaultValue(_default)\n\t\t\t\t\t\t\t\t\t\t\t\t.parser((Function\u003cString,Object\u003e)_parser)\n\t\t\t\t\t\t\t\t\t\t\t.build();\n\t}\n\n\t@Override\n\tpublic Class getType() {\n\t\treturn this.container.getType();\n\t}\n\n\t@Override\n\tpublic Function\u003cString, Object\u003e getParser() {\n\t\treturn this.container.getParser();\n\t}\n\n\t@Override\n\tpublic Optional\u003cObject\u003e getValue() {\n\t\treturn this.container.getValue();\n\t}\n\n\t@Override\n\tpublic Parameter setValue(Object _value) {\n\t\treturn this.container.setValue(_value);\n\t}\n\n\t@Override\n\tpublic Optional\u003cString\u003e getDefaultValue() {\n\t\treturn this.container.getDefaultValue();\n\t}\n\n\t@Override\n\tpublic String getDescription() {\n\t\treturn this.container.getDescription();\n\t}\n}\n```\n\n4. Into your main instantiate Standalone\n* Option 1: Using `org.bytemechanics.standalone.ignite.Ignitable` interface\n```Java\npackage mypackage;\n\nimport java.util.Optional;\nimport java.util.function.Function;\nimport org.bytemechanics.standalone.ignite.Ignitable;\nimport org.bytemechanics.standalone.ignite.beans.DefaultParameterContainer;\n\n\npublic final class StandaloneApp implements Ignitable{\n\n\t@Override\n\tpublic void startup() {\n\t\t// start your application\n\t}\n\n\t@Override\n\tpublic void shutdown() {\n\t\t// shutdown your application (optional)\n\t}\n\n\t(...)\n\n\tpublic static final void main(final String... _args){\n\t\tStandalone.builder(StandaloneApp::new)\n\t\t\t\t\t.arguments(_args)\n\t\t\t\t\t(...)\n\t\t\t\t\t.parameters(StandaloneAppTestParameter.class)\n\t\t\t\t\t(...)\n\t\t\t\t.build()\n\t\t\t\t\t.ignite();\n\t}\n}\n```\n* Option 2: Using `org.bytemechanics.standalone.ignite.IgnitableAdapter` abstract class\n```Java\npackage mypackage;\n\nimport java.util.Optional;\nimport java.util.function.Function;\nimport org.bytemechanics.standalone.ignite.IgnitableAdapter;\n\n\npublic final class StandaloneApp extends IgnitableAdapter{\n\n\t@Override\n\tpublic void startup() {\n\t\t// start your application\n\t}\n\n\t@Override\n\tpublic void shutdown() {\n\t\t// shutdown your application (optional)\n\t}\n\t(...)\n\n\tpublic static final void main(final String... _args){\n\t\tStandalone.builder(StandaloneApp::new)\n\t\t\t\t\t.arguments(_args)\n\t\t\t\t\t(...)\n\t\t\t\t\t.parameters(StandaloneAppTestParameter.class)\n\t\t\t\t\t(...)\n\t\t\t\t.build()\n\t\t\t\t\t.ignite();\n\t}\n}\n```\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fbytemechanics%2Fstandalone-ignite","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fbytemechanics%2Fstandalone-ignite","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fbytemechanics%2Fstandalone-ignite/lists"}