{"id":14973028,"url":"https://github.com/croz-ltd/nrich","last_synced_at":"2025-04-07T06:13:17.530Z","repository":{"id":37099095,"uuid":"431779743","full_name":"croz-ltd/nrich","owner":"croz-ltd","description":"Nrich is a Java library developed at CROZ whose purpose is to make development of applications on JVM a little easier.","archived":false,"fork":false,"pushed_at":"2024-10-10T08:51:57.000Z","size":3610,"stargazers_count":48,"open_issues_count":2,"forks_count":4,"subscribers_count":10,"default_branch":"master","last_synced_at":"2024-10-30T06:24:34.907Z","etag":null,"topics":["croz","csrf","encryption","jackson","java","jpa","nrich","query","search","security","spring-boot","spring-framework","validation"],"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/croz-ltd.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":"CONTRIBUTING.md","funding":null,"license":"LICENSE","code_of_conduct":"CODE_OF_CONDUCT.md","threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":"support/documentation/architecture/decisions/0001-record-architecture-decisions.md","governance":null,"roadmap":null,"authors":null,"dei":null,"publiccode":null,"codemeta":null}},"created_at":"2021-11-25T09:07:49.000Z","updated_at":"2024-10-29T11:27:12.000Z","dependencies_parsed_at":"2024-11-15T03:18:21.850Z","dependency_job_id":"3a8610cf-7075-46b1-a0e1-c803ef9fd65a","html_url":"https://github.com/croz-ltd/nrich","commit_stats":{"total_commits":1137,"total_committers":13,"mean_commits":87.46153846153847,"dds":"0.10202286719437115","last_synced_commit":"6b885a8540129c5846783a8c3efb6f025abc8b25"},"previous_names":[],"tags_count":41,"template":false,"template_full_name":null,"repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/croz-ltd%2Fnrich","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/croz-ltd%2Fnrich/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/croz-ltd%2Fnrich/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/croz-ltd%2Fnrich/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/croz-ltd","download_url":"https://codeload.github.com/croz-ltd/nrich/tar.gz/refs/heads/master","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":247601449,"owners_count":20964864,"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":["croz","csrf","encryption","jackson","java","jpa","nrich","query","search","security","spring-boot","spring-framework","validation"],"created_at":"2024-09-24T13:47:58.770Z","updated_at":"2025-04-07T06:13:17.508Z","avatar_url":"https://github.com/croz-ltd.png","language":"Java","funding_links":[],"categories":["工具库"],"sub_categories":[],"readme":"[![Build](https://github.com/croz-ltd/nrich/actions/workflows/build.yml/badge.svg?branch=master)](https://github.com/croz-ltd/nrich/actions/workflows/build.yml)\n[![Codecov](https://codecov.io/gh/croz-ltd/nrich/branch/master/graph/badge.svg)](https://codecov.io/gh/croz-ltd/nrich)\n[![License](https://img.shields.io/github/license/croz-ltd/nrich?color=yellow\u0026logo=apache)](https://github.com/croz-ltd/nrich/blob/master/LICENSE)\n[![Maven Central](https://maven-badges.herokuapp.com/maven-central/net.croz.nrich/nrich-core-api/badge.svg?color=blue)](https://search.maven.org/search?q=net.croz.nrich)\n[![JavaDoc](https://img.shields.io/badge/API%20doc-Javadoc-brightgreen)](https://croz-ltd.github.io/nrich)\n\n# nrich\n\nNrich is a Java library developed at CROZ whose purpose is to make development of applications on the JVM a little easier.\nIt was created by combining modules that were found useful on multiple projects into a common library.\nThe library is based on the Spring Framework, and as such provides Spring Boot starters for most of the modules to make the configuration easier.\n\nMost functionality groups are composed of multiple modules:\n\n- api - has the `api` suffix and contains classes that represent API of the module (service interfaces, parameters, return types...)\n- implementation - contains actual api implementation\n- spring boot starter - has the `spring-boot-starter` suffix and contains Spring Boot auto-configuration of the specified module\n\nIn the Spring Boot environment only spring boot starter modules should be added as dependencies.\n\n## Compatibility\n\nThe following table contains nrich versions with a corresponding minimum Java and Spring version.\n\n| Nrich version | Java version | Spring Boot Version |\n|---------------|--------------|---------------------|\n| 1.0.x - 1.1.x | 1.8          | 2.3.3.RELEASE       |\n| 1.2.x         | 1.8          | 2.6.4               |\n| 1.3.x         | 1.8          | 2.6.6               |\n| 1.4.x         | 1.8          | 2.6.6               |\n| 1.5.x - 1.7.x | 1.8          | 2.7.4               |\n| 1.8.x         | 1.8          | 2.7.7               |\n| 2.0.0         | 17           | 3.1.3               |\n\n## Modules\n\nNrich is composed of following modules:\n\n### [nrich-bom](nrich-bom/README.md)\n\nProvides managed dependencies for all nrich modules as well as for libraries used inside those modules that are not covered by Spring Boot dependencies.\n\n### [nrich-core-api](nrich-core-api/README.md)\n\nThis module contains common classes that are used throughout the library.\n\n### [nrich-encrypt](nrich-encrypt/README.md)\n\nThe module achieves easier encryption and decryption by being able to encrypt method results and decrypt method arguments.\nMethods whose results should be encrypted and/or arguments decrypted can be marked using annotations or as properties specified\nin the property file (such as `application.yml`).\n\n### [nrich-excel](nrich-excel/README.md)\n\nProvides easier generation of excel reports from provided data and templates.\nDefault implementation uses `Apache POI`library but tries to simplify usage.\n\n### [nrich-form-configuration](nrich-form-configuration/README.md)\n\nProvides mapping of server-side class constraints to client-side form constraints.\nThe purpose of `nrich-form-configuration` is to provide a central place for constraint definitions.\nThe client registers a form to the class that defines constraints, which enables him to request information for the registered form.\nSupplied information contains constraints with their error messages, which are specified in the class.\nThe client is then responsible for processing and applying them to the form.\n\n### [nrich-jackson](nrich-jackson/README.md)\n\nSets commonly used defaults for standard Jackson properties (as an example `FAIL_ON_EMPTY_BEANS: false`) to avoid repetition in projects.\nThe module also provides Jackson modules that serialize empty strings to null and serialize class names to fully-qualified class names for\nclasses that are annotated with `@Entity` annotation or are from a package defined in a given list.\n\n### [nrich-logging](nrich-logging/README.md)\n\nProvides a logging service for consistent error logging in a standard format.\nProvided logging service can also resolve verbosity and logging levels for each exception.\nThis module is used in [nrich-webmvc](nrich-webmvc/README.md) module for exception logging but can easily be replaced with some other custom implementation.\n\n### [nrich-notification](nrich-notification/README.md)\n\nIntended for addition of specified notifications into the server-side response, which can later be shown on the client-side.\n`nrich-notification` supports three different notification severity levels and can also include a list of validation errors.\nDefinition and resolution of messages is realized with Spring's `MessageSource` feature.\n\n### [nrich-registry](nrich-registry/README.md)\n\nSimplifies the administration of specified JPA entities and provides a formatted representation of them that client-side can interpret and create dynamic forms and grids.\nGenerated forms and grids can be used for entity editing without additional implementation on the server-side.\nThe module also provides methods for searching, creating, updating and deleting entities through a REST API.\n\n### [nrich-search](nrich-search/README.md)\n\nSimplifies the querying of entities.\n`nrich-search` is based on top of the Spring Data JPA library and was created as a means of simplifying the creation of queries for various search forms on the client-side.\nQueries can be automatically formed from different types of inputs, such as a query class or a string with a list of search fields.\nAlso, special configuration class is used to define how provided query values are used in query creation.\n\n### [nrich-security-csrf](nrich-security-csrf/README.md)\n\nIntended as a replacement for Spring Security csrf functionality.\n`nrich-security-csrf` works with both Spring Web MVC and WebFlux libraries.\nClients should define the initial token url and after that send the generated token with each request in a header or as a parameter.\n\n### [nrich-spring-boot](nrich-spring-boot/README.md)\n\nAdds additional functionality to Spring Boot that is used within nrich.\n\n### [nrich-spring](nrich-spring/README.md)\n\nContains utility classes for Spring access, such as `ApplicationContextHolder` for resolving of `ApplicationContext` from static context.\n\n### [nrich-validation](nrich-validation/README.md)\n\nContains additional `jakarta-validation-api` constraints and validators that proved to be commonly used, such as `NotNullWhen` validator.\n\n### [nrich-webmvc](nrich-webmvc/README.md)\n\nProvides additional functionality built on top of the Spring Web MVC framework.\nMain purpose is to handle exceptions through `NotificationErrorHandlingRestControllerAdvice` that handles exceptions by logging them,\nand then creating and sending notifications to the client-side with exception's description.\nThe module uses the [nrich-notification](nrich-notification/README.md) module for notification handling and [nrich-logging](nrich-logging/README.md) for logging.\n`nrich-webmvc` also adds additional classes that handle binding (i.e. transforming empty string to null) and locale resolving.\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fcroz-ltd%2Fnrich","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fcroz-ltd%2Fnrich","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fcroz-ltd%2Fnrich/lists"}