{"id":22907436,"url":"https://github.com/oswaldobapvicjr/confectory","last_synced_at":"2025-05-08T22:18:05.004Z","repository":{"id":41038741,"uuid":"170908032","full_name":"oswaldobapvicjr/confectory","owner":"oswaldobapvicjr","description":"The modular configuration framework for Java applications","archived":false,"fork":false,"pushed_at":"2025-05-06T14:42:55.000Z","size":1920,"stargazers_count":9,"open_issues_count":1,"forks_count":5,"subscribers_count":2,"default_branch":"master","last_synced_at":"2025-05-08T22:17:54.621Z","etag":null,"topics":["configuration","configuration-management","deserialization","ini","java","java-library","json","json-parser","jsonpath","properties","toml","xml","yaml","yaml-parser"],"latest_commit_sha":null,"homepage":"","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/oswaldobapvicjr.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":null,"funding":null,"license":"LICENSE","code_of_conduct":"CODE_OF_CONDUCT.md","threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":"SECURITY.md","support":null,"governance":null,"roadmap":null,"authors":null,"dei":null,"publiccode":null,"codemeta":null,"zenodo":null}},"created_at":"2019-02-15T18:09:33.000Z","updated_at":"2025-05-06T14:42:57.000Z","dependencies_parsed_at":"2023-02-15T19:30:34.721Z","dependency_job_id":"f707281b-67ca-400c-91bb-1e9e7d42df70","html_url":"https://github.com/oswaldobapvicjr/confectory","commit_stats":null,"previous_names":[],"tags_count":17,"template":false,"template_full_name":null,"repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/oswaldobapvicjr%2Fconfectory","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/oswaldobapvicjr%2Fconfectory/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/oswaldobapvicjr%2Fconfectory/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/oswaldobapvicjr%2Fconfectory/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/oswaldobapvicjr","download_url":"https://codeload.github.com/oswaldobapvicjr/confectory/tar.gz/refs/heads/master","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":253155004,"owners_count":21862625,"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":["configuration","configuration-management","deserialization","ini","java","java-library","json","json-parser","jsonpath","properties","toml","xml","yaml","yaml-parser"],"created_at":"2024-12-14T03:15:12.341Z","updated_at":"2025-05-08T22:18:04.988Z","avatar_url":"https://github.com/oswaldobapvicjr.png","language":"Java","funding_links":[],"categories":[],"sub_categories":[],"readme":"![confectory-logo](resources/confectory-logo.svg)\n\n[![Contributors](https://img.shields.io/github/contributors-anon/oswaldobapvicjr/confectory)](https://github.com/oswaldobapvicjr/confectory/graphs/contributors)\n[![GitHub Workflow Status](https://img.shields.io/github/actions/workflow/status/oswaldobapvicjr/confectory/maven.yml?branch=master)](https://github.com/oswaldobapvicjr/confectory/actions/workflows/maven.yml)\n[![Coverage](https://img.shields.io/codecov/c/github/oswaldobapvicjr/confectory)](https://codecov.io/gh/oswaldobapvicjr/confectory)\n[![License](https://img.shields.io/badge/license-apache%202.0-brightgreen.svg)](https://opensource.org/licenses/Apache-2.0)\n[![Maven Central](https://maven-badges.herokuapp.com/maven-central/net.obvj/confectory-core/badge.svg)](https://maven-badges.herokuapp.com/maven-central/net.obvj/confectory-core)\n[![Javadoc](https://javadoc.io/badge2/net.obvj/confectory-core/javadoc.svg)](https://javadoc.io/doc/net.obvj/confectory-core)\n\n\nThe modular, multi-format configuration framework for Java applications.\n\n---\n\n## Overview\n\n**Confectory** is a modular framework designed to hide the complexity of handling multiple configuration files for Java applications in general, providing a **reliable** and **fast** API for parsing data from different **sources** (file or URL) in a variety of formats, and allowing data access using a **unified query language**.\n\n````mermaid\nflowchart TD\n    User([\"User\"]) --\u003e|\"property\"| c(((\"`**confectory**`\"))):::larger\n    User --\u003e|\"xpath\"| c\n    User --\u003e|\"jsonpath\"| c\n\n    c--\u003eproperties(\"properties\"):::condensed\n    c--\u003eini(\"INI\"):::expanded\n    c--\u003exml(\"XML\"):::expanded\n    c--\u003ejson(\"JSON\"):::expanded\n    c--\u003eyaml(\"YAML\"):::expanded\n    c--\u003etoml(\"TOML\"):::expanded\n\n    classDef larger font-size:18pt\n    classDef condensed letter-spacing:-0.8px\n    classDef expanded letter-spacing:1.2px\n````\n\n## Features\n\n- Easy configuration setup via **intuitive API**\n- Simple data query using **JSONPath**, **XPath**, or user-defined beans\n- Support for the **best providers** available in the community (e.g.: Jackson, GSON)\n- **Multiple configuration formats** (e.g.: XML, JSON, or YAML) with custom **precedence levels**\n- **Lazy loading** of configuration sources\n\n\n## Examples\n\n### 1. Load data from a local Properties file in the classpath:\n\n```mermaid\nflowchart LR\n  subgraph Configuration\n    direction LR\n    object[\"☕ Properties\"]\n  end\n  u([\"User\"]) -- 1️⃣ build --\u003e Configuration\n  object -- 2️⃣ load --\u003e file[\"📄 application.properties\"]\n  u -- 3️⃣ get...(key) --\u003e Configuration\n```\n\n````java\nConfiguration config = Configuration.builder()\n        .source(\"classpath://application.properties\")\n        .build();\n````\n\nThen access document data using one of the *getter* methods, using keys:\n````java\nSystem.out.println(config.getBoolean(\"web.enable\"));\n````\n\n\n### 2. Load data from a JSON document in a Web server:\n\n```mermaid\nflowchart LR\n  subgraph Configuration\n    direction LR\n    object[\"⭕ JSONObject\"]\n  end\n  u([\"User\"]) -- 1️⃣ build --\u003e Configuration\n  object -- 2️⃣ load --\u003e file[\"🌍 URL(time.jsontest.com)\"]\n  u -- 3️⃣ get...(jsonpath) --\u003e Configuration\n```\n\n````java\nConfiguration\u003cJSONObject\u003e config = Configuration.\u003cJSONObject\u003ebuilder()\n        .source(\"http://time.jsontest.com\")\n        .mapper(new JSONObjectMapper())\n        .build();\n````\n\nThen access document data using [JSONPath expressions](https://goessner.net/articles/JsonPath/index.html#e2):\n````java\nSystem.out.println(config.getString(\"$.time\"));\n````\n\n\u003e ℹ️ [Find more examples in the wiki.](https://github.com/oswaldobapvicjr/confectory/wiki/Examples/)\n\n\n## How to include it\n\nConfectory was designed to work with the lowest possible number of transitive dependencies. So, we offer separate modules that can be selected according to the client's needs, optimizing your application:\n\n| Module                                                                                                                                   | Providers         | Properties | XML     | JSON    | YAML    | TOML    |\n|------------------------------------------------------------------------------------------------------------------------------------------|-------------------|:----------:|:-------:|:-------:|:-------:|:-------:|\n| [**confectory-core**](https://maven-badges.herokuapp.com/maven-central/net.obvj/confectory-core)                                         | Java + json-smart | \u0026#9745;    | \u0026#9745; | \u0026#9745; |         |         |\n| [**confectory-datamapper-json-org**](https://maven-badges.herokuapp.com/maven-central/net.obvj/confectory-datamapper-json-org)           | Json.org          | \u0026#9745;    | \u0026#9745; | \u0026#9745; |         |         |\n| [**confectory-datamapper-gson**](https://maven-badges.herokuapp.com/maven-central/net.obvj/confectory-datamapper-gson)                   | Google Gson       |            |         | \u0026#9745; |         |         |\n| [**confectory-datamapper-jackson2-json**](https://maven-badges.herokuapp.com/maven-central/net.obvj/confectory-datamapper-jackson2-json) | Jackson 2         |            |         | \u0026#9745; |         |         |\n| [**confectory-datamapper-jackson2-toml**](https://maven-badges.herokuapp.com/maven-central/net.obvj/confectory-datamapper-jackson2-toml) | Jackson 2         |            |         | \u0026#9745; |         | \u0026#9745; |\n| [**confectory-datamapper-jackson2-xml**](https://maven-badges.herokuapp.com/maven-central/net.obvj/confectory-datamapper-jackson2-xml)   | Jackson 2         |            | \u0026#9745; | \u0026#9745; |         |         |\n| [**confectory-datamapper-jackson2-yaml**](https://maven-badges.herokuapp.com/maven-central/net.obvj/confectory-datamapper-jackson2-yaml) | Jackson 2         |            |         | \u0026#9745; | \u0026#9745; |         |\n| [**confectory-datamapper-saxon12**](https://maven-badges.herokuapp.com/maven-central/net.obvj/confectory-datamapper-saxon12)             | Saxon-HE 12       |            | \u0026#9745; |         |         |         |\n| [**confectory-datamapper-snakeyaml**](https://maven-badges.herokuapp.com/maven-central/net.obvj/confectory-datamapper-snakeyaml)         | SnakeYAML         |            |         | \u0026#9745; | \u0026#9745; |         |\n\n\n## Contributing\n\nIf you want to contribute to the **Confectory** project, check the [issues](http://obvj.net/confectory/issues) page, or write an e-mail to [oswaldo@obvj.net](mailto:oswaldo@obvj.net).\n\n**Confectory** uses [GitHub Actions](https://docs.github.com/actions) for CI/CD.\n\n---\n\nThe Confectory logo and the file-factory animation were created with [Inkscape](http://www.inkscape.org) and [Natron](https://natrongithub.github.io), both **free and open-source** Software tools.\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Foswaldobapvicjr%2Fconfectory","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Foswaldobapvicjr%2Fconfectory","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Foswaldobapvicjr%2Fconfectory/lists"}