From 17afae888c5d9b666ccab6c3701aedc45d72c45e Mon Sep 17 00:00:00 2001 From: Anand Varkey Philips Date: Tue, 27 Nov 2018 01:27:42 +0530 Subject: [PATCH 1/7] Adding Github pull request and issue templates Adding issue templates --- .github/ISSUE_TEMPLATE/bug_report.md | 25 +++++++++++++++++++++++ .github/ISSUE_TEMPLATE/feature_request.md | 17 +++++++++++++++ 2 files changed, 42 insertions(+) create mode 100644 .github/ISSUE_TEMPLATE/bug_report.md create mode 100644 .github/ISSUE_TEMPLATE/feature_request.md diff --git a/.github/ISSUE_TEMPLATE/bug_report.md b/.github/ISSUE_TEMPLATE/bug_report.md new file mode 100644 index 0000000..7dc5182 --- /dev/null +++ b/.github/ISSUE_TEMPLATE/bug_report.md @@ -0,0 +1,25 @@ +--- +name: Bug report +about: Create a report to help us improve + +--- + +**Describe the bug** +A clear and concise description of what the bug is. + +**To Reproduce** +Steps to reproduce the behavior: +1. Go to '...' +2. Click on '....' +3. Scroll down to '....' +4. See error + +**Expected behavior** +A clear and concise description of what you expected to happen. + +**Screenshots** +If applicable, add screenshots to help explain your problem. + + +**Additional context** +Add any other context about the problem here. diff --git a/.github/ISSUE_TEMPLATE/feature_request.md b/.github/ISSUE_TEMPLATE/feature_request.md new file mode 100644 index 0000000..066b2d9 --- /dev/null +++ b/.github/ISSUE_TEMPLATE/feature_request.md @@ -0,0 +1,17 @@ +--- +name: Feature request +about: Suggest an idea for this project + +--- + +**Is your feature request related to a problem? Please describe.** +A clear and concise description of what the problem is. Ex. I'm always frustrated when [...] + +**Describe the solution you'd like** +A clear and concise description of what you want to happen. + +**Describe alternatives you've considered** +A clear and concise description of any alternative solutions or features you've considered. + +**Additional context** +Add any other context or screenshots about the feature request here. From 7712031363a2ea1f32d4192d49944fe5c4bdf1a8 Mon Sep 17 00:00:00 2001 From: Anand Varkey Philips Date: Tue, 27 Nov 2018 02:46:48 +0530 Subject: [PATCH 2/7] Adding templates and documentation - licence - enhanced readme file - pull request and bug report templates - code of conduct - contributing guidelines --- .github/CODE_OF_CONDUCT.md | 76 +++++++ .github/CONTRIBUTING.md | 40 ++++ .../feature_request.md => FEATURE_REQUEST.md} | 0 .../bug_report.md => ISSUE_TEMPLATE.md} | 0 .github/PULL_REQUEST_TEMPLATE.md | 23 ++ .../README-IMAGES/enterprise-validator.png | Bin README.md => .github/README.md | 59 +---- LICENSE | 201 ++++++++++++++++++ .../io/exnihilo/validator/config/Config.java | 2 +- src/main/resources/static/css/bulma.css | 2 +- 10 files changed, 348 insertions(+), 55 deletions(-) create mode 100644 .github/CODE_OF_CONDUCT.md create mode 100644 .github/CONTRIBUTING.md rename .github/{ISSUE_TEMPLATE/feature_request.md => FEATURE_REQUEST.md} (100%) rename .github/{ISSUE_TEMPLATE/bug_report.md => ISSUE_TEMPLATE.md} (100%) create mode 100644 .github/PULL_REQUEST_TEMPLATE.md rename README-images/enterprise-validator-image.PNG => .github/README-IMAGES/enterprise-validator.png (100%) rename README.md => .github/README.md (57%) create mode 100644 LICENSE diff --git a/.github/CODE_OF_CONDUCT.md b/.github/CODE_OF_CONDUCT.md new file mode 100644 index 0000000..cf36513 --- /dev/null +++ b/.github/CODE_OF_CONDUCT.md @@ -0,0 +1,76 @@ +# Contributor Covenant Code of Conduct + +## Our Pledge + +In the interest of fostering an open and welcoming environment, we as +contributors and maintainers pledge to making participation in our project and +our community a harassment-free experience for everyone, regardless of age, body +size, disability, ethnicity, sex characteristics, gender identity and expression, +level of experience, education, socio-economic status, nationality, personal +appearance, race, religion, or sexual identity and orientation. + +## Our Standards + +Examples of behavior that contributes to creating a positive environment +include: + +* Using welcoming and inclusive language +* Being respectful of differing viewpoints and experiences +* Gracefully accepting constructive criticism +* Focusing on what is best for the community +* Showing empathy towards other community members + +Examples of unacceptable behavior by participants include: + +* The use of sexualized language or imagery and unwelcome sexual attention or + advances +* Trolling, insulting/derogatory comments, and personal or political attacks +* Public or private harassment +* Publishing others' private information, such as a physical or electronic + address, without explicit permission +* Other conduct which could reasonably be considered inappropriate in a + professional setting + +## Our Responsibilities + +Project maintainers are responsible for clarifying the standards of acceptable +behavior and are expected to take appropriate and fair corrective action in +response to any instances of unacceptable behavior. + +Project maintainers have the right and responsibility to remove, edit, or +reject comments, commits, code, wiki edits, issues, and other contributions +that are not aligned to this Code of Conduct, or to ban temporarily or +permanently any contributor for other behaviors that they deem inappropriate, +threatening, offensive, or harmful. + +## Scope + +This Code of Conduct applies both within project spaces and in public spaces +when an individual is representing the project or its community. Examples of +representing a project or community include using an official project e-mail +address, posting via an official social media account, or acting as an appointed +representative at an online or offline event. Representation of a project may be +further defined and clarified by project maintainers. + +## Enforcement + +Instances of abusive, harassing, or otherwise unacceptable behavior may be +reported by contacting the project team at anandvarkeyphilips@gmail.com. All +complaints will be reviewed and investigated and will result in a response that +is deemed necessary and appropriate to the circumstances. The project team is +obligated to maintain confidentiality with regard to the reporter of an incident. +Further details of specific enforcement policies may be posted separately. + +Project maintainers who do not follow or enforce the Code of Conduct in good +faith may face temporary or permanent repercussions as determined by other +members of the project's leadership. + +## Attribution + +This Code of Conduct is adapted from the [Contributor Covenant][homepage], version 1.4, +available at https://www.contributor-covenant.org/version/1/4/code-of-conduct.html + +[homepage]: https://www.contributor-covenant.org + +For answers to common questions about this code of conduct, see +https://www.contributor-covenant.org/faq \ No newline at end of file diff --git a/.github/CONTRIBUTING.md b/.github/CONTRIBUTING.md new file mode 100644 index 0000000..a6bc3d8 --- /dev/null +++ b/.github/CONTRIBUTING.md @@ -0,0 +1,40 @@ +# Contributing to Enterprise Validator + +:+1::tada: First off all, thanks for taking the time to contribute! :tada::+1: + +We love participation. We are ready to listen and discuss about changing underlying technologies or anything you love to talk about.. + +[How Can I Contribute?](#how-can-i-contribute) + * [Bug Report Template](ISSUE_TEMPLATE.md) + * [Feature Request Template](FEATURE_REQUEST.md) + * [Pull Request Template](PULL_REQUEST_TEMPLATE.md) + +## Code of Conduct + +This project and everyone participating in it is governed by the [Code of Conduct](CODE_OF_CONDUCT.md). By participating, you are expected to uphold this code. + +## I don't want to read this whole thing I just have a question!!! + +> **Note:** Please don't file an issue to ask a question. You'll get faster results by using the resources below. + + If chat is more your speed, you can join the Gitter team: + +* [Join the Gitter Chat](https://gitter.im/enterprise-validator/Lobby/) + +### How do I make a contribution? + Never made an open source contribution before? Wondering how contributions work in the in our project? Here's a quick rundown! + + 1. Find an issue that you are interested in addressing or a feature that you would like to add. + 2. Fork the repository associated with the issue to your local GitHub organization. This means that you will have a copy of the repository under **your-GitHub-username/repository-name**. + 3. Clone the repository to your local machine using **git clone https://github.com/github-username/repository-name.git**. + 4. Create a new branch for your fix using **git checkout -b branch-name-here**. + 5. Make the appropriate changes for the issue you are trying to address or the feature that you want to add. + 6. Use **git add insert-paths-of-changed-files-here** to add the file contents of the changed files to the "snapshot" git uses to manage the state of the project, also known as the index. + 7. Use **git commit -m "Insert a short message of the changes made here"** to store the contents of the index with a descriptive message. + 8. Push the changes to the remote repository using **git push origin branch-name-here**. + 9. Submit a pull request to the upstream repository. + 10. Title the pull request with a short description of the changes made and the issue or bug number associated with your change. For example, you can title an issue like so "Added more log outputting to resolve #4352". + 11. In the description of the pull request, explain the changes that you made, any issues you think exist with the pull request you made, and any questions you have for the maintainer. It's OK if your pull request is not perfect (no pull request is), the reviewer will be able to help you fix any problems and improve it! + 12. Wait for the pull request to be reviewed by a maintainer. + 13. Make changes to the pull request if the reviewing maintainer recommends them. + 14. Celebrate your success after your pull request is merged! \ No newline at end of file diff --git a/.github/ISSUE_TEMPLATE/feature_request.md b/.github/FEATURE_REQUEST.md similarity index 100% rename from .github/ISSUE_TEMPLATE/feature_request.md rename to .github/FEATURE_REQUEST.md diff --git a/.github/ISSUE_TEMPLATE/bug_report.md b/.github/ISSUE_TEMPLATE.md similarity index 100% rename from .github/ISSUE_TEMPLATE/bug_report.md rename to .github/ISSUE_TEMPLATE.md diff --git a/.github/PULL_REQUEST_TEMPLATE.md b/.github/PULL_REQUEST_TEMPLATE.md new file mode 100644 index 0000000..ada5359 --- /dev/null +++ b/.github/PULL_REQUEST_TEMPLATE.md @@ -0,0 +1,23 @@ +* **Please check if the PR fulfills these requirements** +- [ ] The commit message follows our guidelines +- [ ] Tests for the changes have been added (for bug fixes / features) +- [ ] Docs have been added / updated (for bug fixes / features) + + +* **What kind of change does this PR introduce?** (Bug fix, feature, docs update, ...) + + + +* **What is the current behavior?** (You can also link to an open issue here) + + + +* **What is the new behavior (if this is a feature change)?** + + + +* **Does this PR introduce a breaking change?** (What changes might users need to make in their application due to this PR?) + + + +* **Other information**: \ No newline at end of file diff --git a/README-images/enterprise-validator-image.PNG b/.github/README-IMAGES/enterprise-validator.png similarity index 100% rename from README-images/enterprise-validator-image.PNG rename to .github/README-IMAGES/enterprise-validator.png diff --git a/README.md b/.github/README.md similarity index 57% rename from README.md rename to .github/README.md index 3f8ac25..0bd5a41 100644 --- a/README.md +++ b/.github/README.md @@ -18,7 +18,7 @@ This app also supports Decode from and to Base64 format. Here's the working version of the Application hosted in Microsoft Azure Cloud:
**http://varkeys-rhel-jenkins.westus.cloudapp.azure.com/enterprise-validator/editor** -![Alt text](README-images/enterprise-validator-image.PNG?raw=true "Enterprise Validator Suite") +![Alt text](README-IMAGES/enterprise-validator.png?raw=true "Enterprise Validator Suite") ### Recipe Ingredients * spring-boot-starter-web, spring-boot-starter-freemarker, spring-boot-starter-actuator @@ -27,7 +27,6 @@ Here's the working version of the Application hosted in Microsoft Azure Cloud:) - Work in Progress ### For help and support, -Please contact: [Anand Varkey Philips] (anandvarkeyphilips@gmail.com) (Anand Varkey Philips) +Please contact: [Join the Gitter Chat](https://gitter.im/enterprise-validator/Lobby/) ### Change Log -[comment]: # (REPLACE ME: Add the changelog in below format) - * Version 2.1.0 + * You can view the changes in each releases [here](https://github.com/anandvarkeyphilips/enterprise-validator/releases). -> Released *[26/11/2018]* : 2.1.0 -> -> Changes includes the following: -> -> 1. Docker Configuration completed -> 2. Adding maven wrapper -> 3. Spring Boot 2.0.5.RELEASE -> 4. UI enhancements and fixes - -* Version 2.0.6-RELEASE - -> Released *[16/11/2018]* : 2.0.6.RELEASE -> -> Changes includes the following: -> -> 1. XML Pretty Print Functionality -> 2. Fixing Test Case Issues -> 3. Cleaning up unwanted files -> 4. Adding Actuator Endpoint -> 5. Adding README badges - -* Version 2.0.4-RELEASE - -> Released *[07/11/2018]* : 2.0.4.RELEASE -> -> Changes includes the following: -> -> 1. Added JSON validation and Formatting capabilities. - -* Version 2.0.0-RELEASE - -> Released *[27/10/2018]* : 2.0.0.RELEASE -> -> Changes includes the following: -> -> 1. Added front end-web page for Enterprise YAML Validator. -> 2. Made it a complete standalone microservie app. -> 3. Added JSON validation and Formatting capabilities. - -* Version 1.*-RELEASE - -> Released *[08/10/2018]* : 1.0.0.RELEASE -> -> Changes includes the following: -> -> 1. Initial Commit with only YAML validation service. -> 2. Enabled Jenkins setup and one touch deployment. \ No newline at end of file +### Want to Contribute? + * We love participation. We are ready to listen and discuss about changing underlying technologies or anything.. + You can check the document [here](CONTRIBUTING.md). \ No newline at end of file diff --git a/LICENSE b/LICENSE new file mode 100644 index 0000000..085385c --- /dev/null +++ b/LICENSE @@ -0,0 +1,201 @@ + Apache License + Version 2.0, January 2004 + http://www.apache.org/licenses/ + + TERMS AND CONDITIONS FOR USE, REPRODUCTION, AND DISTRIBUTION + + 1. Definitions. + + "License" shall mean the terms and conditions for use, reproduction, + and distribution as defined by Sections 1 through 9 of this document. + + "Licensor" shall mean the copyright owner or entity authorized by + the copyright owner that is granting the License. + + "Legal Entity" shall mean the union of the acting entity and all + other entities that control, are controlled by, or are under common + control with that entity. For the purposes of this definition, + "control" means (i) the power, direct or indirect, to cause the + direction or management of such entity, whether by contract or + otherwise, or (ii) ownership of fifty percent (50%) or more of the + outstanding shares, or (iii) beneficial ownership of such entity. + + "You" (or "Your") shall mean an individual or Legal Entity + exercising permissions granted by this License. + + "Source" form shall mean the preferred form for making modifications, + including but not limited to software source code, documentation + source, and configuration files. + + "Object" form shall mean any form resulting from mechanical + transformation or translation of a Source form, including but + not limited to compiled object code, generated documentation, + and conversions to other media types. + + "Work" shall mean the work of authorship, whether in Source or + Object form, made available under the License, as indicated by a + copyright notice that is included in or attached to the work + (an example is provided in the Appendix below). + + "Derivative Works" shall mean any work, whether in Source or Object + form, that is based on (or derived from) the Work and for which the + editorial revisions, annotations, elaborations, or other modifications + represent, as a whole, an original work of authorship. For the purposes + of this License, Derivative Works shall not include works that remain + separable from, or merely link (or bind by name) to the interfaces of, + the Work and Derivative Works thereof. + + "Contribution" shall mean any work of authorship, including + the original version of the Work and any modifications or additions + to that Work or Derivative Works thereof, that is intentionally + submitted to Licensor for inclusion in the Work by the copyright owner + or by an individual or Legal Entity authorized to submit on behalf of + the copyright owner. For the purposes of this definition, "submitted" + means any form of electronic, verbal, or written communication sent + to the Licensor or its representatives, including but not limited to + communication on electronic mailing lists, source code control systems, + and issue tracking systems that are managed by, or on behalf of, the + Licensor for the purpose of discussing and improving the Work, but + excluding communication that is conspicuously marked or otherwise + designated in writing by the copyright owner as "Not a Contribution." + + "Contributor" shall mean Licensor and any individual or Legal Entity + on behalf of whom a Contribution has been received by Licensor and + subsequently incorporated within the Work. + + 2. Grant of Copyright License. Subject to the terms and conditions of + this License, each Contributor hereby grants to You a perpetual, + worldwide, non-exclusive, no-charge, royalty-free, irrevocable + copyright license to reproduce, prepare Derivative Works of, + publicly display, publicly perform, sublicense, and distribute the + Work and such Derivative Works in Source or Object form. + + 3. Grant of Patent License. Subject to the terms and conditions of + this License, each Contributor hereby grants to You a perpetual, + worldwide, non-exclusive, no-charge, royalty-free, irrevocable + (except as stated in this section) patent license to make, have made, + use, offer to sell, sell, import, and otherwise transfer the Work, + where such license applies only to those patent claims licensable + by such Contributor that are necessarily infringed by their + Contribution(s) alone or by combination of their Contribution(s) + with the Work to which such Contribution(s) was submitted. If You + institute patent litigation against any entity (including a + cross-claim or counterclaim in a lawsuit) alleging that the Work + or a Contribution incorporated within the Work constitutes direct + or contributory patent infringement, then any patent licenses + granted to You under this License for that Work shall terminate + as of the date such litigation is filed. + + 4. Redistribution. You may reproduce and distribute copies of the + Work or Derivative Works thereof in any medium, with or without + modifications, and in Source or Object form, provided that You + meet the following conditions: + + (a) You must give any other recipients of the Work or + Derivative Works a copy of this License; and + + (b) You must cause any modified files to carry prominent notices + stating that You changed the files; and + + (c) You must retain, in the Source form of any Derivative Works + that You distribute, all copyright, patent, trademark, and + attribution notices from the Source form of the Work, + excluding those notices that do not pertain to any part of + the Derivative Works; and + + (d) If the Work includes a "NOTICE" text file as part of its + distribution, then any Derivative Works that You distribute must + include a readable copy of the attribution notices contained + within such NOTICE file, excluding those notices that do not + pertain to any part of the Derivative Works, in at least one + of the following places: within a NOTICE text file distributed + as part of the Derivative Works; within the Source form or + documentation, if provided along with the Derivative Works; or, + within a display generated by the Derivative Works, if and + wherever such third-party notices normally appear. The contents + of the NOTICE file are for informational purposes only and + do not modify the License. You may add Your own attribution + notices within Derivative Works that You distribute, alongside + or as an addendum to the NOTICE text from the Work, provided + that such additional attribution notices cannot be construed + as modifying the License. + + You may add Your own copyright statement to Your modifications and + may provide additional or different license terms and conditions + for use, reproduction, or distribution of Your modifications, or + for any such Derivative Works as a whole, provided Your use, + reproduction, and distribution of the Work otherwise complies with + the conditions stated in this License. + + 5. Submission of Contributions. Unless You explicitly state otherwise, + any Contribution intentionally submitted for inclusion in the Work + by You to the Licensor shall be under the terms and conditions of + this License, without any additional terms or conditions. + Notwithstanding the above, nothing herein shall supersede or modify + the terms of any separate license agreement you may have executed + with Licensor regarding such Contributions. + + 6. Trademarks. This License does not grant permission to use the trade + names, trademarks, service marks, or product names of the Licensor, + except as required for reasonable and customary use in describing the + origin of the Work and reproducing the content of the NOTICE file. + + 7. Disclaimer of Warranty. Unless required by applicable law or + agreed to in writing, Licensor provides the Work (and each + Contributor provides its Contributions) on an "AS IS" BASIS, + WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or + implied, including, without limitation, any warranties or conditions + of TITLE, NON-INFRINGEMENT, MERCHANTABILITY, or FITNESS FOR A + PARTICULAR PURPOSE. You are solely responsible for determining the + appropriateness of using or redistributing the Work and assume any + risks associated with Your exercise of permissions under this License. + + 8. Limitation of Liability. In no event and under no legal theory, + whether in tort (including negligence), contract, or otherwise, + unless required by applicable law (such as deliberate and grossly + negligent acts) or agreed to in writing, shall any Contributor be + liable to You for damages, including any direct, indirect, special, + incidental, or consequential damages of any character arising as a + result of this License or out of the use or inability to use the + Work (including but not limited to damages for loss of goodwill, + work stoppage, computer failure or malfunction, or any and all + other commercial damages or losses), even if such Contributor + has been advised of the possibility of such damages. + + 9. Accepting Warranty or Additional Liability. While redistributing + the Work or Derivative Works thereof, You may choose to offer, + and charge a fee for, acceptance of support, warranty, indemnity, + or other liability obligations and/or rights consistent with this + License. However, in accepting such obligations, You may act only + on Your own behalf and on Your sole responsibility, not on behalf + of any other Contributor, and only if You agree to indemnify, + defend, and hold each Contributor harmless for any liability + incurred by, or claims asserted against, such Contributor by reason + of your accepting any such warranty or additional liability. + + END OF TERMS AND CONDITIONS + + APPENDIX: How to apply the Apache License to your work. + + To apply the Apache License to your work, attach the following + boilerplate notice, with the fields enclosed by brackets "[]" + replaced with your own identifying information. (Don't include + the brackets!) The text should be enclosed in the appropriate + comment syntax for the file format. We also recommend that a + file or class name and description of purpose be included on the + same "printed page" as the copyright notice for easier + identification within third-party archives. + + Copyright [2018] [Anand Varkey Philips] + + Licensed under the Apache License, Version 2.0 (the "License"); + you may not use this file except in compliance with the License. + You may obtain a copy of the License at + + http://www.apache.org/licenses/LICENSE-2.0 + + Unless required by applicable law or agreed to in writing, software + distributed under the License is distributed on an "AS IS" BASIS, + WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + See the License for the specific language governing permissions and + limitations under the License. \ No newline at end of file diff --git a/src/main/java/io/exnihilo/validator/config/Config.java b/src/main/java/io/exnihilo/validator/config/Config.java index a81f969..8c64752 100644 --- a/src/main/java/io/exnihilo/validator/config/Config.java +++ b/src/main/java/io/exnihilo/validator/config/Config.java @@ -29,7 +29,7 @@ private ApiInfo apiInfo() { "Validates yaml, json and xml files. Hi!!", "API TOS", "Terms of service", - new Contact("Anand Varkey Philips", "about.me/anandvarkeyphilips", "anandvarkey.philips@gmail.com"), + new Contact("Anand Varkey Philips", "about.me/anandvarkeyphilips", "anandvarkeyphilips@gmail.com"), "License of API", "API license URL", Collections.emptyList()); } } diff --git a/src/main/resources/static/css/bulma.css b/src/main/resources/static/css/bulma.css index 4197995..336ff32 100644 --- a/src/main/resources/static/css/bulma.css +++ b/src/main/resources/static/css/bulma.css @@ -10266,7 +10266,7 @@ label.panel-block:hover { .hero-body { flex-grow: 1; flex-shrink: 0; - padding: 3rem 1.5rem; + padding: 1.5rem 1.5rem; } .section { From c1457198c637ccd7c68c05c3e691acc24066da82 Mon Sep 17 00:00:00 2001 From: Anand Varkey Philips Date: Wed, 5 Dec 2018 00:27:06 +0530 Subject: [PATCH 3/7] Adding custom error page,github details and change to MIT Licensed. --- LICENSE | 222 +--------- .../validator/controller/ErrorController.java | 35 ++ .../static/images/GitHub-Mark-32px.png | Bin 0 -> 1714 bytes src/main/resources/templates/editor.ftl | 18 +- src/main/resources/templates/errors/404.ftl | 383 ++++++++++++++++++ 5 files changed, 448 insertions(+), 210 deletions(-) create mode 100644 src/main/java/io/exnihilo/validator/controller/ErrorController.java create mode 100644 src/main/resources/static/images/GitHub-Mark-32px.png create mode 100644 src/main/resources/templates/errors/404.ftl diff --git a/LICENSE b/LICENSE index 085385c..2ce5e92 100644 --- a/LICENSE +++ b/LICENSE @@ -1,201 +1,21 @@ - Apache License - Version 2.0, January 2004 - http://www.apache.org/licenses/ - - TERMS AND CONDITIONS FOR USE, REPRODUCTION, AND DISTRIBUTION - - 1. Definitions. - - "License" shall mean the terms and conditions for use, reproduction, - and distribution as defined by Sections 1 through 9 of this document. - - "Licensor" shall mean the copyright owner or entity authorized by - the copyright owner that is granting the License. - - "Legal Entity" shall mean the union of the acting entity and all - other entities that control, are controlled by, or are under common - control with that entity. For the purposes of this definition, - "control" means (i) the power, direct or indirect, to cause the - direction or management of such entity, whether by contract or - otherwise, or (ii) ownership of fifty percent (50%) or more of the - outstanding shares, or (iii) beneficial ownership of such entity. - - "You" (or "Your") shall mean an individual or Legal Entity - exercising permissions granted by this License. - - "Source" form shall mean the preferred form for making modifications, - including but not limited to software source code, documentation - source, and configuration files. - - "Object" form shall mean any form resulting from mechanical - transformation or translation of a Source form, including but - not limited to compiled object code, generated documentation, - and conversions to other media types. - - "Work" shall mean the work of authorship, whether in Source or - Object form, made available under the License, as indicated by a - copyright notice that is included in or attached to the work - (an example is provided in the Appendix below). - - "Derivative Works" shall mean any work, whether in Source or Object - form, that is based on (or derived from) the Work and for which the - editorial revisions, annotations, elaborations, or other modifications - represent, as a whole, an original work of authorship. For the purposes - of this License, Derivative Works shall not include works that remain - separable from, or merely link (or bind by name) to the interfaces of, - the Work and Derivative Works thereof. - - "Contribution" shall mean any work of authorship, including - the original version of the Work and any modifications or additions - to that Work or Derivative Works thereof, that is intentionally - submitted to Licensor for inclusion in the Work by the copyright owner - or by an individual or Legal Entity authorized to submit on behalf of - the copyright owner. For the purposes of this definition, "submitted" - means any form of electronic, verbal, or written communication sent - to the Licensor or its representatives, including but not limited to - communication on electronic mailing lists, source code control systems, - and issue tracking systems that are managed by, or on behalf of, the - Licensor for the purpose of discussing and improving the Work, but - excluding communication that is conspicuously marked or otherwise - designated in writing by the copyright owner as "Not a Contribution." - - "Contributor" shall mean Licensor and any individual or Legal Entity - on behalf of whom a Contribution has been received by Licensor and - subsequently incorporated within the Work. - - 2. Grant of Copyright License. Subject to the terms and conditions of - this License, each Contributor hereby grants to You a perpetual, - worldwide, non-exclusive, no-charge, royalty-free, irrevocable - copyright license to reproduce, prepare Derivative Works of, - publicly display, publicly perform, sublicense, and distribute the - Work and such Derivative Works in Source or Object form. - - 3. Grant of Patent License. Subject to the terms and conditions of - this License, each Contributor hereby grants to You a perpetual, - worldwide, non-exclusive, no-charge, royalty-free, irrevocable - (except as stated in this section) patent license to make, have made, - use, offer to sell, sell, import, and otherwise transfer the Work, - where such license applies only to those patent claims licensable - by such Contributor that are necessarily infringed by their - Contribution(s) alone or by combination of their Contribution(s) - with the Work to which such Contribution(s) was submitted. If You - institute patent litigation against any entity (including a - cross-claim or counterclaim in a lawsuit) alleging that the Work - or a Contribution incorporated within the Work constitutes direct - or contributory patent infringement, then any patent licenses - granted to You under this License for that Work shall terminate - as of the date such litigation is filed. - - 4. Redistribution. You may reproduce and distribute copies of the - Work or Derivative Works thereof in any medium, with or without - modifications, and in Source or Object form, provided that You - meet the following conditions: - - (a) You must give any other recipients of the Work or - Derivative Works a copy of this License; and - - (b) You must cause any modified files to carry prominent notices - stating that You changed the files; and - - (c) You must retain, in the Source form of any Derivative Works - that You distribute, all copyright, patent, trademark, and - attribution notices from the Source form of the Work, - excluding those notices that do not pertain to any part of - the Derivative Works; and - - (d) If the Work includes a "NOTICE" text file as part of its - distribution, then any Derivative Works that You distribute must - include a readable copy of the attribution notices contained - within such NOTICE file, excluding those notices that do not - pertain to any part of the Derivative Works, in at least one - of the following places: within a NOTICE text file distributed - as part of the Derivative Works; within the Source form or - documentation, if provided along with the Derivative Works; or, - within a display generated by the Derivative Works, if and - wherever such third-party notices normally appear. The contents - of the NOTICE file are for informational purposes only and - do not modify the License. You may add Your own attribution - notices within Derivative Works that You distribute, alongside - or as an addendum to the NOTICE text from the Work, provided - that such additional attribution notices cannot be construed - as modifying the License. - - You may add Your own copyright statement to Your modifications and - may provide additional or different license terms and conditions - for use, reproduction, or distribution of Your modifications, or - for any such Derivative Works as a whole, provided Your use, - reproduction, and distribution of the Work otherwise complies with - the conditions stated in this License. - - 5. Submission of Contributions. Unless You explicitly state otherwise, - any Contribution intentionally submitted for inclusion in the Work - by You to the Licensor shall be under the terms and conditions of - this License, without any additional terms or conditions. - Notwithstanding the above, nothing herein shall supersede or modify - the terms of any separate license agreement you may have executed - with Licensor regarding such Contributions. - - 6. Trademarks. This License does not grant permission to use the trade - names, trademarks, service marks, or product names of the Licensor, - except as required for reasonable and customary use in describing the - origin of the Work and reproducing the content of the NOTICE file. - - 7. Disclaimer of Warranty. Unless required by applicable law or - agreed to in writing, Licensor provides the Work (and each - Contributor provides its Contributions) on an "AS IS" BASIS, - WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or - implied, including, without limitation, any warranties or conditions - of TITLE, NON-INFRINGEMENT, MERCHANTABILITY, or FITNESS FOR A - PARTICULAR PURPOSE. You are solely responsible for determining the - appropriateness of using or redistributing the Work and assume any - risks associated with Your exercise of permissions under this License. - - 8. Limitation of Liability. In no event and under no legal theory, - whether in tort (including negligence), contract, or otherwise, - unless required by applicable law (such as deliberate and grossly - negligent acts) or agreed to in writing, shall any Contributor be - liable to You for damages, including any direct, indirect, special, - incidental, or consequential damages of any character arising as a - result of this License or out of the use or inability to use the - Work (including but not limited to damages for loss of goodwill, - work stoppage, computer failure or malfunction, or any and all - other commercial damages or losses), even if such Contributor - has been advised of the possibility of such damages. - - 9. Accepting Warranty or Additional Liability. While redistributing - the Work or Derivative Works thereof, You may choose to offer, - and charge a fee for, acceptance of support, warranty, indemnity, - or other liability obligations and/or rights consistent with this - License. However, in accepting such obligations, You may act only - on Your own behalf and on Your sole responsibility, not on behalf - of any other Contributor, and only if You agree to indemnify, - defend, and hold each Contributor harmless for any liability - incurred by, or claims asserted against, such Contributor by reason - of your accepting any such warranty or additional liability. - - END OF TERMS AND CONDITIONS - - APPENDIX: How to apply the Apache License to your work. - - To apply the Apache License to your work, attach the following - boilerplate notice, with the fields enclosed by brackets "[]" - replaced with your own identifying information. (Don't include - the brackets!) The text should be enclosed in the appropriate - comment syntax for the file format. We also recommend that a - file or class name and description of purpose be included on the - same "printed page" as the copyright notice for easier - identification within third-party archives. - - Copyright [2018] [Anand Varkey Philips] - - Licensed under the Apache License, Version 2.0 (the "License"); - you may not use this file except in compliance with the License. - You may obtain a copy of the License at - - http://www.apache.org/licenses/LICENSE-2.0 - - Unless required by applicable law or agreed to in writing, software - distributed under the License is distributed on an "AS IS" BASIS, - WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - See the License for the specific language governing permissions and - limitations under the License. \ No newline at end of file +MIT License + +Copyright(c) 2018 Anand Varkey Philips + +Permission is hereby granted, free of charge, to any person obtaining a copy +of this software and associated documentation files (the "Software"), to deal +in the Software without restriction, including without limitation the rights +to use, copy, modify, merge, publish, distribute, sublicense, and/or sell +copies of the Software, and to permit persons to whom the Software is +furnished to do so, subject to the following conditions: + +The above copyright notice and this permission notice shall be included in all +copies or substantial portions of the Software. + +THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR +IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, +FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE +AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER +LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, +OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE +SOFTWARE. \ No newline at end of file diff --git a/src/main/java/io/exnihilo/validator/controller/ErrorController.java b/src/main/java/io/exnihilo/validator/controller/ErrorController.java new file mode 100644 index 0000000..8c93f94 --- /dev/null +++ b/src/main/java/io/exnihilo/validator/controller/ErrorController.java @@ -0,0 +1,35 @@ +package io.exnihilo.validator.controller; + +import lombok.extern.slf4j.Slf4j; +import org.springframework.http.HttpStatus; +import org.springframework.stereotype.Controller; +import org.springframework.web.bind.annotation.RequestMapping; +import org.springframework.web.servlet.ModelAndView; + +import javax.servlet.RequestDispatcher; +import javax.servlet.http.HttpServletRequest; + +@Controller +@Slf4j +public class ErrorController implements org.springframework.boot.web.servlet.error.ErrorController { + + @RequestMapping("/error") + public ModelAndView handleError(HttpServletRequest request) { + Object status = request.getAttribute(RequestDispatcher.ERROR_STATUS_CODE); + if (status != null) { + Integer statusCode = Integer.valueOf(status.toString()); + if (statusCode == HttpStatus.NOT_FOUND.value()) { + log.error("error-404: An attempt to search for {}", request.getRequestURL()); + } else if (statusCode == HttpStatus.INTERNAL_SERVER_ERROR.value()) { + log.error("error-500: An attempt to search for {}", request.getRequestURL()); + } + } + return new ModelAndView("/errors/404"); + } + + @Override + public String getErrorPath() { + + return "/error"; + } +} \ No newline at end of file diff --git a/src/main/resources/static/images/GitHub-Mark-32px.png b/src/main/resources/static/images/GitHub-Mark-32px.png new file mode 100644 index 0000000000000000000000000000000000000000..8b25551a97921681334176ee143b41510a117d86 GIT binary patch literal 1714 zcmaJ?X;2eq7*4oFu!ne{XxAht2qc?8LXr|_LPCfTpaBK7K$c{I0Ld=NLIOeuC;@2) zZ$K%a)k+m-s0>xHmKxL%0V&0TRzzznhgyqrIC$F)0{WwLXLrBvd*^wc_uSc%h%m9E z{W5z3f#4_!7RvAyFh6!S_*<8qJ%KOIm?#E|L=rJQq=gB5C6WLG5;c?r%V0>EmEH#X z5eSwPRa6WXBMs#$5H%GtW2go-in9p>zW@UYDNNWc^XOXZQ? z1QjEV00I#$3^1wQUJ8&-2UsjB-G|9y(LDhMNN3PM{APL4eYi{(m*ERcUnJa{R+-3^ z34^A6;U^v`8N*O6ji%S@sd{fJqD`XFIUJ5zgTe5^5nj414F(y!G&=H(f)Lgzv?>%+ zAsWD}2qhpH7>|TU`X&W6IxDNuO_vET7|j5oG&&VDr!)hUO8+0KR?nh!m<)a!?|%yG zqOwq!CWCcIhE{<$E|F|@g>nP6FoYr6C<8>D?ID9%&5J(4oSbR1I^byW*g@__U z4QsF&uJSEcFeleM3~ChjEQGbHOjsGDMbyAl(p=Ttv9RaVo8~I#js@@Y9C^_2U})yn zzSHU%6FxuY?d;&65MyR({^lU*3$z$ZllDb(o&<7d;A_`h2U+3~BJ2Hv`{W}KEU801#cv_B|9Cm!ynR{S`AMsSn z;7E=B;mb!wx$L;S>yGXG^6=&WlQn9$s?&L%Y1D8TI^MlKB1DqsEng$>f4=xYWBoPI z_S1p!sJ#d2?YI4kPA{k}Eby?F=f-J9zIc`YDl^pzjVm~9ebE?Hn?t0Nx+la|D0MB; z9)2xv1G>a1|A9kQ>~DV<=X3-4yC&n!m8-3K#P z{X@0zRuQsy$+N ziSCoLJU{Z$nQy4A4Y5UJ07$5FA~qL2%Q+cLaqDU?Lz3?=BC5;Nk6BbTmmceEaM>-Z zi>O&-dSE=%ex;vcvCOk{*JQ5^_4M z4lW7%l9IqY(z7pV(?I@@8=KPFO82)O{VDI18-*d-k$YmI^XiuPs_LuFw<^ZcD}yP5 c*NrbeloN*74g`U%%F6r~k%+>C^#XapzmV0H-2eap literal 0 HcmV?d00001 diff --git a/src/main/resources/templates/editor.ftl b/src/main/resources/templates/editor.ftl index 1e16072..b9e697f 100644 --- a/src/main/resources/templates/editor.ftl +++ b/src/main/resources/templates/editor.ftl @@ -1,4 +1,3 @@ - @@ -22,13 +21,13 @@
- +

Enterprise Validator

- Now you can validate JSON and YAML easily!!
- A YAML validator better than the YAML Lint.
+ Now you can validate JSON and YAML easily!!
+ A YAML validator better than the YAML Lint.
A JSON validator and formatter that follows the JSON spec at JSON.org.

@@ -49,7 +48,7 @@
                     
-
+
@@ -57,10 +56,11 @@ diff --git a/src/main/resources/templates/errors/404.ftl b/src/main/resources/templates/errors/404.ftl new file mode 100644 index 0000000..f0d3222 --- /dev/null +++ b/src/main/resources/templates/errors/404.ftl @@ -0,0 +1,383 @@ + + + + + + + Page not found! + + +
+
+
    +
  • k
  • +
  • v
  • +
  • n
  • +
  • z
  • +
  • i
  • +
  • x
  • +
  • m
  • +
  • e
  • +
  • t
  • +
  • a
  • +
  • x
  • +
  • l
  • +
  • 4
  • +
  • 0
  • +
  • 4
  • +
  • y
  • +
  • y
  • +
  • w
  • +
  • v
  • +
  • b
  • +
  • o
  • +
  • q
  • +
  • d
  • +
  • y
  • +
  • p
  • +
  • a
  • +
  • p
  • +
  • a
  • +
  • g
  • +
  • e
  • +
  • v
  • +
  • j
  • +
  • a
  • +
  • n
  • +
  • o
  • +
  • t
  • +
  • s
  • +
  • c
  • +
  • e
  • +
  • w
  • +
  • v
  • +
  • x
  • +
  • e
  • +
  • p
  • +
  • c
  • +
  • f
  • +
  • h
  • +
  • q
  • +
  • e
  • +
  • f
  • +
  • o
  • +
  • u
  • +
  • n
  • +
  • d
  • +
  • s
  • +
  • w
  • +
  • q
  • +
  • v
  • +
  • o
  • +
  • s
  • +
  • m
  • +
  • v
  • +
  • f
  • +
  • u
  • +
+
+
+

We couldn't find what you were looking for.

+

Unfortunately the page you were looking for could not be found. It may be + temporarily unavailable, moved or no longer exist.

+

Check the URL you entered for any mistakes and try again. Alternatively, search + for whatever is missing or take a look around the rest of our site.

+ +
+
+ + + + \ No newline at end of file From 688f80a071b08a328883559ab8be780ec0b7323c Mon Sep 17 00:00:00 2001 From: Anand Varkey Philips Date: Sat, 8 Dec 2018 00:30:11 +0530 Subject: [PATCH 4/7] Updating application logo/icon styling --- src/main/resources/static/favicon-1024.png | Bin 63152 -> 47035 bytes src/main/resources/static/favicon-256.png | Bin 8510 -> 16342 bytes src/main/resources/static/favicon.ico | Bin 15406 -> 839 bytes 3 files changed, 0 insertions(+), 0 deletions(-) diff --git a/src/main/resources/static/favicon-1024.png b/src/main/resources/static/favicon-1024.png index 5df14b797d0de113e93827a70b570f1bd94ec550..1cc89827c4f23a01fe52459250dd6e40366d0cb4 100644 GIT binary patch literal 47035 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�dM+uo|JMTp-Roj?F5d}8 zihqS8?TLtg;p%S3%+VLqeV4-j%7XtDOuJA^<5ueeA3N68PFPmV7b)mN$AOQ*!{8-7 z=g)Y3^fCD`UnPMZapNBw~z0hjjsU&F3iX?5A4y>>O%iKfFMJ7yzhJttsS zyG@&{G&I-^T+jU}eaAIwS)c$GjTOc2<&M;XN7Q^CXQGT|3h9@1Fb*TW=d=KLPhP=b#Q}r zLC$qPe27EYhCPG+qNratu5QSIgZ2dra*i=4W<_Yp^!UnCVGy9OS3(A}Kw-HkEdSmh z7eXR*#7F7fJ~jeK^NpLF5&kMNaFTxs@kpfoH^WYi5u&6FW zv6K#Rg;#P&0JvAtVSiSBMaTtx0NEm1ptxV*2deeY3`nJVdxsolOLR&q!O7XS!#L{KOvE##;E zdu%+(qzn~HWUFc$hM=lk5HM>0ajm9qOT8vivA#f;uOVr31f?u>k<^pMx6==X`B-ci zxrVg5KK;&WhiPBjRwl+v2Zb?37msE+-&u_Ot?1=gj~3{tLm<<7o7%ljyW<_)l=*e3 ziCBZquD!-wjOsE0E3oyboDwlWkLc3)!>S%OV>2|uN|>>QhGvTDl!QzykaF;D+h z_Fg(5kVX-v;mR++SSs;O8L^nN%5n0<1VSSDRStZ^J>u5)^A$xr01xNB#FHOafTP57 z71&!jjE{z#03Ciqw`0@m!?J1sKN9!#EGH$=cJC}n_v?l@>}I_Fh1kJql-;H|DRR<# z^NEKMo5Yaoc6<<^@pN zrjBqDvf(7u74tx3Q0j@`_K1ANI!y-uaaEeXQx%(nFp$dTJomS7N6PfLh+6EevKj|9 zu_>4#Ow*^;5xO-51`#|zQs+m6kE5B16--$Pf7ZmpSZvqFxwrE}KF1Q)xe8YVK!9Z|Qjl!x+2ow(UodFw!ST(EXPIZ$EW zgful%kXyZ6Y>Z4QJ6ZIVwF^pSornYgkYHHTGdOpg|Da|i^5Gx4uK;!?NR2NC^jtHs zI;bVicoSmnZrGs{Ltwb1MsqLAphx`aR$g+6lW%yuMJ-eSw0m0+ZAPUfC-%` zGh165QvLYps%?nE@+7hEn5=HDx<%kD|HmrLh}?qe4t^^ypNX`ra}5%%14;orC9#(_ z4$q_o+nV`BIjUS4>PNKjWjpE^=E9ci1GAJrIV)X=j&+I_eJZ`u{i|J@B6-I{deJPP zDEPy?yCLdM{pYe9`hHZuAg9l}X*6{2Lv#3nTVu9F0Rd@-ngBb5zg{6zU=>q^YliSH zP0mlnb@ZZdGZDbw|H&`atj=JBPA>@a*8oH}|K3n4p(b!Ue@w?!#iDGo_coMgHlg%G zf6e`Nh+$F}2MS5tYHe@twp;(i;9s)@nYK6aR8sesHr8(Byp3RL9|_Skd&8Te-2|Ao zyRtvT?&WoEPv9xjd`EaKmH~#15-S68n}>6GqQ+hG{(BzT1r{v_;}M_Rn^X|RN#t*h zJag?---4dGd{Yw5NUniIMB{<86`g4@Sl*y5TI9?}qUyoqVn-yFuOi>^mM{BtWUR)6 zlBGJot2?dn0m?=!sJwr3PYUtkW4xNiO?TJ-o=z9^u`)^;gzBl#{z>G3Z)|WOzdK9& zGM)O2q(q{?R_YzzWdgDjBnbMyoXlBt71cP?smsx>m8q8QBSDci{(!QO9W#i=6zveS zz1Crz+5Ib)I)aG%Xi)?c@vE>?DQ`LxmH?%E4%%9D&BJ!!MUx(Ic#`R`3i?RpbFK9I z3643uPsO?f6x9W0vu-hyEjRaW`McIaDcJ9gil$~Y2^}mZyK{xZa~ab#7ME!%uxgM* zq?S=x)`Il1raJegh3pcWC7@t*Uv8)YMjV8p%gt|n5L@JNs&0T=K%R_pfx}puMVv6I z&tW0YCMhP{q_g^f;p9sTl2KGuf}$#qS%i~aWJSpEUuc}t2$q))^@CPWXvt7$9{kJ5 zU>1b3h{XldVY=*pT=O`=F6^I5<)tpTT+QqAq7(40Fx59QAS@)+ z3=n9J=Bp$cNMobix-R@Td|EhEL-SEao(Ld$J4s4z zO5dq%J>dOY9-gEj^8S}lFYv)C&F&?K`XM&G+;)nJ$t{;-*TGAs)gRVucp`N=sOF_M zS)dS-yeN3NMjBTKVn|vNf=^IRCywZ1IS>Z|Tgp%OFvZia*sbC)ejoDn+qmqHYD5rU zV7chu+b@h?KV7bn>{w_not5sG7=M4hFC zi?mSu2%}dSyiUrbB0u|Pgey_|ctD)scFbZKs7GSMV|0u^*GM7Uew~D;IFRsEGMa$x zlR{D`x@w1pG`}6AGhsBV2~t&H#!{&~wf^PHq++*^z<)3gtqx_L-Yhm4<6KaVlPC2- zXv~fec4c{lx}?VH(2^N3K|7Kn6S>T;namwK+t!G!U_g`m2rP<^_C9&gw9SEh4gls$WFfyl^9UCp>hRveIBBJ4_2V zfEQoo^3t02&dbrak0a#h_vs66ga>uq-$i_JQXQ8rQO;xl7b969J2Y<29Y&FcFcCYjUMpS4~e;fGS(jh&MR;JPDK1bJ;rAeEFonZ z(f0dkv$4NdhyTU!oU9K)NfjDl5w3rrMoAdl!62})miM#MZofU`oBP@W#yd~>fGst^HA_+*U3Hyt%q7YzKCZpmc8!UEg; zl*E)*(g>)7Vxvi3Kz*v5QikC8PVg+_PO8R$Y9p@Me=WaVIO&M3 z%Yd>|+ud?bKo?LukLprT&?tqkXwd+l*KSxnQjt{5?K$HC2#}aR1^RI41 z`P<7=Nk{Y@3@ zXoslUf8%%p+4Lvs;1OG>g<4=?o&y=hJNyBplT7p!jiRz+G%{5{Elap{}MB&Vs zXm1}#K8^Gf5KMjH-+!{8N;#(w(0k(va3f4P#Mi_dKoaq)Qt#vB23jP&X_2f`LYt*( zkeCz!zfowJEp*jjYHblvh>NpaGmHEo#9o`n_UosCfTw0q55(ZES= zKrT)Vr-6eA=en$^ZHs2tY=3)8Z^vVLI{^6t-S{Ao2cZ*0X4nm|WWYeJSWu)Yi?Lvi zt_m$_zZ5}_=~u=$4Hf^vF|*tBX~|;R$^KUC@7hOeP&-QSb5J5r)(eLQ9&LMPEJ`+R zb@OYS9_i)7L&`B7RfNW2JL-(r&2zI$tajOQ$Y3>Mn7`hiuy2fJx{+I}M3mZzoj(b9 z*~=6|F}Ra|JvwYC6*IIRiqx#O9Y;+LN3B?W@}ZAuMseVZF(o*k_?VN*00JnfJ4{gC z)S2W1+Cdb%8%%#3URx_1_JH^dLSa4iPWwK~^T~S_mMG!Ya3ZWfkBsLX)?6=DqI;A; zNIFrCm+_$1;&=GBGlY*B#knizvQz_So_GSHkh5XI?__j+5Z#-5T&L>(kq3Fw0B)ga zlpF9kH?_hpt4qouQD7}H5;ZB0ae>bqoJ3hDIB{I_zD=TF2a^TdPMg62`s9~SAJ5d* zc4q+z)Lz~IbbXPJ6!s|po=8P1TJ2yjCpdlHw>1xrXb?>4n_q)3@qU8T057{^M0$o= z@;f6^rvp3OZM=vE2q2wNBs)X>5OPE|K!S>83S9?u7xh~%q*a#R8yV0EJkW}FGu-p5 zjz}*;GHUT?2(t5NEROO zwT&Yh4Q0Y@yn6Bt(o5NBb(f>^Dp#I0pH&FoBS+b`rAEzI7cz8hyO&#zn15kaW&9xw&T%<5~T>eXCH2 zaap019KfWnBlW10b_V<6os-79JYw#&I5+CxI`~F)ML#XQD*hH)FX&4 z^JvZ^sLT5}f?rOl^#Ifx;uaNq@DUSm<8m|b8zAtXgo~TNZHKxtP&eibG*0+~EEef` z1}CEH=;br07pDO~ z#p8p-`2gijT^tHoXhe;zGwcr20$KjfN^_uxev^Ze7ILh&Ubyr^TwE@Ev@(qJtrl6l z?8I7&oC_=7!~<{yRxp)4<8>Y^Nc+N_1k%oUo;Bc6-|6#NmI!uXbWa}=Txd85Brq@P z96J>D-va!03n201YT&#!zWfuVJ3tF02#0>^A$O4kRllD?ZK6&Sm}+Kg8yNbIC~g&5 zA>tMVj~_I_?Uh<#$TpJmwh)W;t1AOxN|}@E=DEi#?+?5_p2=i!E9^jzE~AaWEHuZJ zfF9PZ5ty2!JxLE>mx7)VL>zpR#Lp=wGpjs`aPcN#WjuF(JUex?!hLlcW5xj$B}%5d+55H zJO-aFV{GR^a-o{rn`7j_!3@SG#Pja30Kut0_HIp|v=#2T=zl(p#(6ni3T5}h@7zYQ z>>Zqqr^iM{zSQr<7FjGJG=2LEWDmP@wxYKhC>d)$*pX#1+b!nYss|2=U{&J~a^p4q zu1aeJIoKX^ZG&n{g09n08fn`9)Lxv~&Ke6OJsEc)Ro9~^0(cfieZ?Mvb*O#R4DO0$vVYH%?_Qs%s| zLMmZ4QVD~`01ypqEGHBVw+*b9qQIu|#JWJ!31t1br$=4{F96guNT4H zk)XE50ec(0yuB_p()i5JsXp70Z7xWgffNu_?^;%*CK6xKfPZot{>cK?E_$|2r@VTY zYH$Ps0CX!UyzV|4#abYhiJ+Cc5Sd0bYE(g*Q!W?rI088 zxwgrHG6q~0J6QME9u+SGJf{g%=4ePkHmiexuYAx|arop_wMEy$fMqi+lmrn8tvz-w zT4R+~x4D{2E{VA~4MlGvZCz07q|?Qr;I1!a?ZQabaV5Q+kS5WKIKwpmyoR^y1SJ^u zzJyp!giOc;%62>5Wo!lpYlR>co2_OLpGI=FLA7*&?6YH0lVHYznBtqjB{l{*YRWJ! zIGRiv+y)_TjOBY95cvi(1=ya@ORET2aul3Tq8@@zL0RX~;gIoACt8CTcm8Qow7fMM z9kQkuD6~2;38@O<&T0a$?rxAkpwd$wmdQ=%MumT=3DlKvKe0OS5fBF|*xGkptLE6d z=fDm0Z#ex~5atG3$NoapTa54xVV$Q`JBYtvyj*mf@J}&L-s;*>{NuMWOG|?|Yna9V zKXt`|9aP@au0BNl!x8m2!!%I2UX7BtSYR!9%(Ybx%uBV54GYt!+0Q|M#nP+=BMZS` z^8r14%?C!t(x6oNMmB>_4X`=GH|u2YyZvqimy-~v5o{a{V6G4V#H3)pCiZz(=LH1_ z3UWv`5hzm=)q&v*L6g}Pc~`oG=u5qkzLrU*!(8_#cvM(VeMFvVSlxtNYWTRt6UyzfCo^1fw^b@-lNvJV_#&c*(?@wDL z^vQhI8ch)V$NkuBGBKzak5m-pAATNoo4;e5Cr#ini^Vlh4{*2yu{5lgrsiqnbHhUH zUA~e|8f9!^nTn??!R9%qm0+4!_L_+*XC54s90B3{8v>2;A5+KR{);q27D1(cGDX)t zW@+dIQX;sS){^Sd6apuM8v}(+XPyE5at{JYryBS z7wCA-g9r9rXm-Y0K~h|f;KKK}OYnk(m%Z`(?pIh2v#36at)(wkFMMeQlB%&T#B7?t zjaO!N@C*w<3>^mOa9Z&7?^5P-E+)O0;4qrS!&SApyv5Y?daY4_(Q>PHdRd>AYidgCh1@h> z88$^zb3w_|nOK%jf5<+9ud6|92!*>TTNF>~!H;tBEm#O&mP z8Rb29;3s(HH*Z29>?G`;Jh*`@W@o;=N}H*xv5NuKtopT4WVI@gPuV4ngDyb4(E*U&UjG{+`3R*iyAxCyqJ zFg||YxVVsGI`hEmV&e$7XAdGN%jA}Jl-bao$RzVw{8MOj&T2`cx@XXLccJVRPN?*! zgdt`bQdRHOr}!?u3DyRrzkO zbi14>o&`y2_21F}u?5TDABK|)L_a42KsTR#=1OM@aNZaYxQ2>kTXC4!VLW(p`MCW9O5P3`)LAo|o|Xc{(49&05ZCrm>Fx+xv}&-Rr({eW$)P(ori)G4!} zC0uX=N+Sq{&k)Kwx(iURT=1P-1HarK)u<1UNLz!D^MD$@x2 z1d0)Mpt}ZW8ZNV1a+v#18XX|J)8Ih!@WrX`QG~qG_JTzaD3%D1fhln_rtkZH~i|X zsavh7bb^^CMWxa&*5tRwvZi&4e_PT_MKC&pL> z!9geP`{5Vt0~dlT0U`nJx;AIA9o`6r(8U*@7(3F3VTXzRVJ=lX7@6OR+iGGZ&>Z6% zi|Kx0D010e?araN*dLE%qaH}iT!#OCtdCN}>y~vv5D-xMp)6o4{HTS&dZe`UG8)wiVWa;s06}&c zXkx+m&!*-xmJenzUeyKm+$=W#uQ?CKhv?<;;NJD`kcJ=rYjKgSlGKJ?dYLV&(M6NR z^|6QQ*SKlx6SMVnkFrk>{yJEh9xZSy6J^5!kXM>_I)75!s?2aUQ>obq=Sof7$)# zA`{oB?mTcK5op;x6Z3gPibG9_0Y5?GFfdF2#4Ogp8xbJnGe-$h;XPq+;t*!*U_d|7 zw?oEQh-D`iac)%*ZQL}6FYLn3i8e2U*N9nr4#gyY;ntF@xIqG2K|p{7D_o%umBt@H zu*u3Z6HSaKM0yPfWR-5kxRrw*I|*z*xyQHwu@8#ViVrf6CYN;-I_EN3R14s~Rl~)4 zDy@$B;_!olRTN1KaORci>gcRN-Wh#!&>RfT!8(x@HSHdAIlx1Zj3k!Cp_@Bkk{CgF zlma5i5j|OrVk!;jm{{3a&N!{~iIAO*YL3*CxA@c+(Q!YkD>P@oVjziRh`SEgdFX2JNr~J9Y z@`BHZU@j=KZB%;8o=!)G)%=SGOjiDEp5@6}>D8zR=?ABoKkH(yY3B~2P@e>7h3L^2 z{tv;307fvqST`cYo4Yd*6*g5a_F>gKaCtiC$5TsZ^7|UCpTpN!NN5R~34cZ8cR;pR z$dqzq0Is~r+?IS-eUvD+ZN;J}Rc2C$l)CYKAGKu?Pj7vnLdkMia_jq0GrGuzdgPaZ!&zB=CwvYLNtGwj(Fq+vMcw1 zo1LK$1rh8=34mNOu$`cvbu^gB{R#iOC4G*`LqI$*FRH#ag>I=vs9-mVoi^!ny*{2S zkXU(2!AXE#6_TM9lsNi{&aU~g#&17?8{Qs~Pi7ePd)lS*FJ5`{PPa=_5Bka$p=AoM%`jHke;>fOPv+vqc zALItR(ee>=nd?n1Do;1}Ap!*Y3Lp2v{@9k5Q>DAW#|Zb+2_c_>{lIvxS|gLW z|G*8&rrDutD5eExQ`RMx`9Kl+xIE4-JJhS_9k}68V}W*-zcSx?4e1$qnka2;%H|stRT5D}lfNC$*bT z`^yioUArKyCmK{#;QX8j!+ysG-Q_bs%8ByNy#)5~EY7R6K~gHLWF;A8uQ=AY>%OfJ z5yuW+PoyF=qRI!$6SVy0CtG|fkI+qUY%`X%X>SAOXxSH*P){dC@n;###_%$bZEy7MuCTp&=H%1_*;F-I|bGf@v~bNc=8FlrR~YB9f? z4wmRlBw?mMDl;{*HyE5sOHOm1f;CHqHzWA|putLf)rBF1a=ZG5FL5AUb_ejWsUgQ6 z@w!(ufj)B+{FMx{FRc;oAbf{rXT`26uI~OH0xddcDpkW@BuM2cMdb>@)WTMO$8g)g zYOxv?)0V_2ev}*l>)?bCojB+#0#KknvbN!u-B&1Sm>P7b=Hg~(>rNzr^(GeKJLgtB z=o{0tr|iDjzOTReb2Te9D^F`WC0MVISoCyf-pd((ZQbmtCV5xz(%-Y!T~wH4#iQ{0 z_}agHIm!gL3BKGWE8#5^$mwSs=*jhd`C|1&g0;tb1`|@^A)y}5^YsOGWZ!XQrcy-qqJ)d-@~2Gh0SH^7PTxzK&g zGbJUZ`19w_vXT1-;c_l>a&%OZ6$=^+9(vN_z5jTxTLTCRdIts^tLFKgIo7~6k(_Gs$LPA4xEp2Uk19^FQ0}iiDnZdOU zh0w>nBwiy<@6%y_3tcuI^`5;AO07rsiVJ|oP*se)13s|CQCm^2{Gn0tAjx1=bj>RC z_4SR~qNsQ|=UdZAr@4bo&#Ls7J)Ml#NIEa=P1(*xapaAdaO81ckvm~$C-?E=$7#~n zMC0S*Wg6=0Ty8l%pkzllBzU|!rLKwkY(KgdC0dE7kn@_qV9m2;Y$6BmjVzmdUlFVromiS^jncPRJ#D@np~1fxFyWzD`ES zS|?;rpe&z@t!Sw9LNaomI?|-po%V{#r~F!L>gz{;RaI3rWYOPw;=845`ld~rg3@-P z$813P?gRF-)!4H^?L|Bm-@Qu6PjPei^2?_huW{yCjC>Lw|CEc$2jvrftvm%k7Tbz8 z6$xSbfM+}?EG&$Nr1jz5VBn|KT8Pk(aU5<7&CRVm)zBnVjHZvwxCSea+@)A4@QG-) zdr3TRy zJt3FY#p1(0%P)V&e2^n@E*u{pm(ksh$S5A*>AxuA?G$ut=oKGr=59JMoeDDuI{R|5 zqTw1PTXEkl$V6wqCbQ2|&**wuQkKAAjDKouH2gTv@8^&N4;NK5-IKSk_rs&nj1*l< z+};UC6b>*jl=9FiISJ6Va3|=m7RYR{YMjT3`-hq>Ljjg9YHe+8E-i%=OPm6b_}FVq8FmBd9CESQQdDjnE{i5OjuK2b5RIO+NGp?c&h0BqVIY zMx#IKBs7{jcN!H1H}IvyE62c&=)zhj@n?411of@S)SieJ^FW?a)FfG93xN0*^~ALpfFZ0^8c!LPbSIH#cPO##S~*>lzs; z14FF?xui;uQ>0pLrpo&?UHOej(AuF)ZTLr|y4#4rZ3vyXM zyGWtU>10ndKTrtltlD>DmAAy%6!M~_;?JqUWt}ohi$LCD@8O}` z-ME;Noy~1Iq1Ueez2jH(*w~o44%vkP&aHx6)jAtC=KNkJn@(h7l!$dyVDwjpi0VHJ ze|rO*v6HM84|SWd_u<+udqp*}M0U3CUdWFAC0aC?v?rSXy+^mbV$jnI6nTvfq;$QH zC+pY~@$~oBN~~tapfv2=A|l|86{k|fj?=P6_m$d+xetfzgYw&CE2`aq{rvLzu4a6t z6VgW|(wMCM4$&fkCm1=;VzTGMhYx3qiiw?zyu*c%Q&dp&*VXLFz>yP2$#&F}J<*(b zzAXwliL}(L0^uiP{Ci_#W3Y6@-$9v5B1OH~L~8I9IC$FAr+6>ZS+a41yu5N!N{WL3 zEf-p(MQ0+A5z5DE$srI2v&x_y>uplAvRvQh=jSJ5=@B32JutJOmOjL@C@8&gGZ&YU zHFzC#`?%wnIVL+O#^IT+Z~_s}xR#cd(|953-IeI&&)DyS;-o-i)>1-+9)SKRySj7B z2MDV1YJN~`4-dn3nC8D^CG{(M`AR*qTdAB|L3{{`0QXDBf)V^{d0SUk7evo2)Z1}2 zE-1{3t@G&Z#TT*-nIq654VV-%YQDHPXpw+Cs)C5&Xl#WJ**3Dceaes88}Tvdy3T=t zfjg~`9P%;5V$n~oWMV)7Im~9NI3-)0k&=Nrmpb_tzYBBc4nzqCPcr zJL;ccDMTgZ0|NsYj#xjat|cO~XU7(NlC@-uz|lFcY(=Z3BZwTsIr^$HF&2nAU$ykM z;DFs<&jqErlCpu;e3bW5~U1K|x^fndz0KYE-qZx)sz~7SFi&X}Ybbavpu;W>6s^A%-?*&kjk&OYTPhU8v7h>^V=EWta+X zK84HCBdlA8Gw<8CZ$00;ySLQF`Awrn60}ZNvY(;6>wvvXJkFcz=F8D8?2m6n>Z=@A zO_Q!BNpq_$pp=AE-a8#xy0I*mQP3cTWssfEarcN+&QWvo_Fk=hhp8GAcbq2E=o6vF zoo1>uoxItKizX@{`l}vUHhkXL&220Q=q>U05s#@Sb*ECMv8Vk)Hfv2_i^tKMJ12X} z>^xv^PM@V+R839IP;hs5chQmc8^PU$G7AxUtEDMdiNKbU$Ja$8A|i}nxMtj^_1S1`W{sdY?)50 zEyWW+7+BwW`(+Y#3a=|t>kgQbk-cK1__I^doLglATb|O}KiP8-=7R5$r3bhl z%`dWL88PmC3(BbYlowH;*ZaOtFsuBH*#4Rd!x@GmR zkFv34UmgisO_lh$)yEGkGMM{ZfdgF&;!95`dzJmhCTSB!{d)DI?if-IJXHL8k_U!hL}A38c- zr?*Cua#etptcQJ(Al4&$a2P{}U;*96r@=%Atf~qg-0+;NwIC6|af89+;Ow468 z^)SgK4zCP2mu*@MqNc=#2Qw%MFw(oE>4bw9-N9?eQD6oL{$6Cd3>PI>(cI?n(PYsm= zzq;8XtEH`-2sbJ7&C24W)YJ{N4GnLPkjo0%Y&IOD`k)nZ+lV#N*3~Y~tw`sI z7CGSPXB*}w)mj*SA*PNtw=@C{eP6$R^`Z6aY*BIXSo)aCaoj~jwJ?sDAy!Zo0yabp z;=Mzlbrg}oGlAx&mF_v$30n`%TCGHjmXakJ1;*~T68jZkS6_x*9jPg_8w#2VyGB96 zM&2GzK0#|PlGqiXuVswB_o4eKxbBTBX=fu=1R1cm$MZ3ZM~54c&T@ZEs~`T4=@LAQ zH1_?(g-a|IYC$XEmMEf;*05jPZ{v)4(*Hv7x;jub^cC_yuWMN+4hfJwDbEYwBX>7t zGmQhS#l>Jt;T?7()evz1{{47bb9}!GQ#=4h`&j*1+Sr7Pk3<8}(z@#pF!;QhE9nh( zdIuH%q^|pmG;739lRSe`NP$&YxVOl~Py0oS48ygktrUKdeUeP%rjOmM;^||6|sY5Knamp{+IxFfcr z*3XIV@29;!u%~J~MITd`L6ZfjOmhFl`SDOufh|K;^y<02gM}pwmWg~yZzp@;85D|b{=gg* zrs#A1lh`QbI}iMl79lnc<(g&xi5RQ2zZ74V2F(L3qJ{|mZqLhYDE#a}_##wq50SJV zz1OL{>S+Z}$R&ftm6*Y8dGch(w}OI#b{+O7K7dcC-NRo0eOzCHVPX^XxePgwd){p8 z+wMsVMgC;wG*9>BTGAsE{G<(F2%xQ^mt2IP>NjBhNkmww=9Z-#o{6@>GSpY1U($&0 zH6Z`HQSwXcf?X?TsmC7rS0B~ciYDqgxTD{>@w#~=O0cB!E<)3T>m%NB>z({QY3m!d zvc?_mNI&{WwxM`^y|yjAvTfVIo~XS*T-@mN!(mWa(Ec9rRQFH{%x}F*gtr~hpZ(+K-#jCGiE zG4V>v^Apn8c@C=VdBoVb2M&;@vjDXX9*#CVoaZUnX)a0u`P*~3wHD)XnEux2Nr-~F ze+J??VB)Xg_<5ixUitUiarDcAx5W>W_%`qli6EwM_CHV5gN>y4%Y%=M!jP(*Nd)Q~ z#RKP+HiS$h$i;elJX?#mri^JG2ku8+8j-5?U{vP!bT`T zuKaY^&eb5foE*=3R0t4bv4~HG^5Vg_Z&HF6jt<>Z2<$Ok&wAI(pbPs4P@omhC$paf zsLk`|XZsOjxKqh`=T#7o=?D^Xr2XodO(wjP;_+%GQaWZV`}zn!7go_TSt7W2vni_A zkKq5BA5ZqY3mPX>bt~1Jq2FnV0edfn>R-q(>0u62C=Ap9x<4^Vl!wT+D$!p&=SVD_C$wT2qSs9@_T#I#$T}I9H89v;#+#Ao zaV?_9aqH=+g=ynemjt$ilEvYn5bx`_^9d{PK_{sOP!gyq}qx%3kNzJfN@CwkRO@YyWn`qJ!_5~<3-oT(B>%l?# zO>RG=1X1*AgmOTc}8f;kYCw}YE9n|4z`QAFm1-g++ZDm!9(f6&jTC{;H)VQEma{C6g=B zoW4J{kLR>EtyUggI9e0XGE^Ho%z9829^^XQPZ?HPY^avvr-xGUxU~177hoYbkWuZ0N*{kB6F^=;Wyt#80+si6GF1h+w7mXsm|<*Z z*C(Hrn)>~e8{+I(z~*OwD;ER&`?Jt>h^#2!B#Sr!fU5@YSXLTFf|7_u_Xj1Xb@L4D zl9<_KUU*(_v?u#HCw27nT;6{F{(Z#Tf0SM-ilccx;t{|5aUV0kCSU|i$LAn>^V$w> z9wi5ihia-xhY}gVDsQROpRsR%HV zz_hl(8(*?Fc%aBmPhjOs($dnRnx(zyCt40|VfrnX8xkB@DdS%ce|1%NUxrJughriftdz!rv+$f_Y;1m5Sg+tB_ahAOI?#gF9q<1{PCYopBWFm2mRL^NX4Bo|H5 z2-c-x;~Dz3i;2yR$I8JJENO3J9%rpI=Ppm&cqIVU3upC1QQ$UMMf-Q7dikQRRjdgr z6!KgxZ|}K*CIirceUuN`k*l&ug$p1%)hKU0u@)!CimvV*J3Qwia|N_`+7kLrM$r%r zXqDTeM19Y0?`2O>!Jr*05d_zGx6A28p8n7{nXraVAOEY^4<1c%D3Y z@)zLXuQP^MWoXOQhW z{%x>5_OpV!>UAad6H2#oAttyA(XNdLX1e*Op)(wg#KS}Jl>-e=PF^Vp7@WpYmC|682v3Nk+!GTqH$Sp%KE*a_;sjX#IPSD> z7->Q2d0Ib~Adn9wP*5Ftv!|D(UW9}=QABVKq+4wWCRnjd8SBSLZXv_pBQ7T9{=%EJ z^0H|QC2sCL22)4|XMJSEnxEEKr`+yPJ-wH)n^$QiaNOS%5}yLxYNpzG7{#56B!995QdA|u>1Zs6>@=krq8~3 z)ZD{^sR1WjxtYBO&5|YvDV`-^T+Mi^~jg)PI2&f&@*K{8d(Eu8iKdD46wj}EWI zrRTAh$IBNtu?mR(Fo)z54h{}aGctao^0x0)aB%P)Uw8U!de+UDBqAd6298%#_xJDP zcFNlzjxbcOHO)5yQqIF3-q}=vG1jzW1t$?jlMM^-0?EpS(^Gj4>XeV)Q8?d@6o7{^ zQ`z|kYvUBU1qHdbk;PjQS~3<7VUwIeNpavVy9mvDU_->%2&PjMTx|CB9uYSvWuaFf zoXI}2@}?NNi;B-wIZ(?w-`&V33!t3c7wWpn*3~tujr|SdDW>G6Muc_@QnXrGLE(8F zNq$MuYT+$P{m}X-5XovLSPyyzrj3&~K}p>lF1&UX>K#o{v^xfj)Gbw_IAI%k9elJ7 z3@73}=(hxzc2r*;IX9lv)w^@Z+enFsljc=BU<&Q$=H_;f_9Tkx_Cln8QN}QW`7!GU z`-q6+r}retu_R9^YUy=C_-|=2QIuPsBFWo}{WPEAonJRNILIs?X4dW?n@Dly=>(EZ zOioQ5xC{PsZlnb=(UoUbGWlknDky2i;V8K`-(!@+~=L~N7!HcKCOiJE{`AbBV zH$4KapD{G~pt0=V-90@cAsqCs&InhRTpn7IiSn>uSc&qm#v9I#%Q!dBrqy8cfXaEY z{L5#GWjuRk&jer_)MUZ(fF>hfA=;jMI~N*X2|0|u?`WIQ_e2IW#yz4km9t%3sV5s# z9>dUgkYbvTOlZzt>?v}sxE&p@?vGV=!38ylOoIH-dsngv(8h;n5-r!+*~wfBGQesm z?*)iYR$=!fs2^{eLIG?oD=seHjVoaM=g`pE&QYVE*bn-tu3YEww#e_fAgk0QkMFw( zas_yMdw(VZu$c^Tdp-0~1=6hE>XH>o8#fM*e){xD`Fl@~M~(R)abDoQ*v~m~rgSQ=DZuB<4(vWvaFeS}hk3}%mi_4D>16|9A5%eW45y>=j# z1Z`LxF1CKWP8(9Y79ZRX($h>stCFdR&uTzFX^VZYTefUjH$Ec+*kQSACGU@hZ``g# zl;FF(TC@$e5&Q(SSBsaClKO|7D7kQTNa!pa)i?Hv2I2c-)iA>F`xDPFtBT}#P@c_? zr=X&3HbPyht3x-TK&l8=F)3Z$A6t_r zqL$|E9uY5C32q~b`XWg|p~D^KLUqzDgiU;We2Q^t14*_KWMTypJp352(QNHpQ2BSG zHw>5ls?qaV=RCKm6BnL_oo4vj{MgO7tbScIk6ym4bk!)2r2>N!F=L}>7j zC;9Eaf8_L>g&%AsKc%?HZ(GT4|8IZ9)q;OG$Z!9jfBfH#xRs3czZ~&DkNiJ0IBPcl x7YzQNSN-4p@&C`v|92y@HicdbiTv>%>Q`R5_o0g|DP+G?Rrc>>Y&Z7$e*jfu%jEz7 literal 63152 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 diff --git a/src/main/resources/static/favicon-256.png b/src/main/resources/static/favicon-256.png index cc45fff68317b6d3017c477be055ed45b2d8ad02..63976f936970d790769ed024e065e8939745a783 100644 GIT binary patch literal 16342 zcmcJ$`9GB3|37|aY=dM<7_v=;#+IdoY>i6BR+Fb9TTPLr7)z3EFiJHf#uBo`=qVvj zJ7HQ3k}X@wR$?rnEZO-UulGOj{pIt68^U#Uo$H*(oh6zBa90)pN(2C_+wk)w0Dh_f zOgRCdlMH~UXPjfh82}9IOirD&y3_ybSwNcPKM5=C_AjRjY8fXcWllVdqP^lZL7AYg zJb3k^Eo%S4-M6A>*-`7^S`oWP?oC9Ea<5%L%NkOY4spgAemPAxJb?IYdN+78@ny~C zR&w>+g`+k)%>{RRisn{>=C7Fe*IrysU$14S1zEeY6Ft_P*_m}z;FNG{Hh5K#OVF~a;^R-o}$LRIha6< zZ5d-O2Ls?`FA6{oU53F)aNT5Uvq!2`v|>1V+=L|>^9(K!cq8$MyMcjMGJ^kxJ$bU{ zU+etWb9L)+1V-GqYCrctcX#*8@Z&rxtm5XkUJ=fdmy0ib3QSKjLhS)wbYimF84T&6 z+8HXk3s4R-yfLFUV@B<==r50X|41NG(BWos94PFK#WNJNcgxuPaWRsHDod8J4@>p% zv9I`{wL6PWpvD4_MgKu7w#~Cr5W=%`PMlcBF`io~Bp9DLbMJ*^MqR}cQ%Zb8HZCh@qOBrv1Wyiq9WdY0ij8#Jzj^xl`Z{Z-&RnI{%Avvw&Ezi7 ziQ^G6ho{;fs~p0O3R(n-xf9VQ>WH(Ul zH*Lxw=KY)XCYvj_QHZqhvI?%h#0#og;aZ)+c=fHK>FUdh34~Bn)0Rg)Ze@MsG?xTo zyAa;t6pBn!Q)L;Vt{^%*02)u3t~Nv=aI$;xpWb1ld4MM>eB>~r+dY9eC@ykW)QN_` za+Z2K(ZbO451V@ls^>dF(>3)xgkkX|4=s3lP}r|qTU*Lw-T~qa--^a#eD+w*!wd@1 zwhz%rHbk8t{_{RVQii&bfSwnnc65Q)>FEESpbt>dev%#SuR$^=I7bL$2P{cCqW;{a zcGwW|xbRV{#E-Z2o^}o%tR^+eihw`B$#O_d>k7`+x+rrei z2{?YrQI1UOd;|-l+djPyZ}&kvGz0zPT@2BMUm-o?v~sf{)6l6WLyE(_w{Yl<)9Unz<-5(NE}mRarVQzDGdNJ)f

7)!rUip`^nr84^d0akc-T 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 Date: Sat, 8 Dec 2018 00:30:50 +0530 Subject: [PATCH 5/7] Application Name-Automatic Property Expansion with Spring Boot --- pom.xml | 1 + .../io/exnihilo/validator/EnterpriseValidator.java | 13 ++++++++++--- src/main/resources/application.yml | 5 ++++- 3 files changed, 15 insertions(+), 4 deletions(-) diff --git a/pom.xml b/pom.xml index dc8faa2..9aa1217 100644 --- a/pom.xml +++ b/pom.xml @@ -8,6 +8,7 @@ enterprise-validator 2.1.0 jar + Enterprise Validator 1.8 diff --git a/src/main/java/io/exnihilo/validator/EnterpriseValidator.java b/src/main/java/io/exnihilo/validator/EnterpriseValidator.java index cfb80ad..61eb14c 100644 --- a/src/main/java/io/exnihilo/validator/EnterpriseValidator.java +++ b/src/main/java/io/exnihilo/validator/EnterpriseValidator.java @@ -1,6 +1,7 @@ package io.exnihilo.validator; import lombok.extern.slf4j.Slf4j; +import org.springframework.beans.factory.annotation.Value; import org.springframework.boot.autoconfigure.SpringBootApplication; import org.springframework.boot.builder.SpringApplicationBuilder; import org.springframework.boot.context.ApplicationPidFileWriter; @@ -16,27 +17,33 @@ * There are lots of customizations available. * * @author Anand Varkey Philips - * @since 2.0.6.RELEASE + * @since 2.0.6.RELEASE */ @EnableSwagger2 @Slf4j @SpringBootApplication public class EnterpriseValidator { + private static String applicationName; private static final ZoneId ZONE_ID = ZoneId.of("Asia/Kolkata"); public static final DateTimeFormatter DATE_TIME_FORMATTER = DateTimeFormatter.ofPattern("dd:MMM:YYY hh:mm:ss:SSS a"); + @Value("${application.name}") + public void setApplicationName(String applicationName) { + this.applicationName = applicationName; + } + public static void main(String[] args) { SpringApplicationBuilder app = new SpringApplicationBuilder(EnterpriseValidator.class); app.build().addListeners(new ApplicationPidFileWriter()); app.run(); - log.info("Enterprise Validator Application is started at Indian Standard Time: {}", + log.info("{} Application is started at Indian Standard Time: {}", applicationName, ZonedDateTime.now(ZONE_ID).format(DATE_TIME_FORMATTER)); } @PreDestroy void logExit() { - log.info("Enterprise Validator Application is being gracefully stopped at Indian Standard Time: {}", + log.info("{} Application is being gracefully stopped at Indian Standard Time: {}", applicationName, ZonedDateTime.now(ZONE_ID).format(DATE_TIME_FORMATTER)); } } \ No newline at end of file diff --git a/src/main/resources/application.yml b/src/main/resources/application.yml index fcdf37d..2271470 100644 --- a/src/main/resources/application.yml +++ b/src/main/resources/application.yml @@ -13,4 +13,7 @@ management: web.exposure.include: "*" web.exposure.exclude: loggers endpoint: - shutdown.enabled: true \ No newline at end of file + shutdown.enabled: true + +application.version: @project.version@ +application.name: @project.name@ \ No newline at end of file From 0089ca6ff0c43facec3819231388f39ad816ce51 Mon Sep 17 00:00:00 2001 From: Anand Varkey Philips Date: Sun, 9 Dec 2018 18:06:38 +0530 Subject: [PATCH 6/7] Adding openshift profile for Openshift deployment --- pom.xml | 2 +- src/main/resources/application.yml | 30 +++++++++++++++++++++++------- 2 files changed, 24 insertions(+), 8 deletions(-) diff --git a/pom.xml b/pom.xml index 9aa1217..898f27c 100644 --- a/pom.xml +++ b/pom.xml @@ -6,7 +6,7 @@ io.exnihilo enterprise-validator - 2.1.0 + 2.2.0 jar Enterprise Validator diff --git a/src/main/resources/application.yml b/src/main/resources/application.yml index 2271470..1ee2368 100644 --- a/src/main/resources/application.yml +++ b/src/main/resources/application.yml @@ -1,13 +1,18 @@ +application: + name: @project.name@ + artifactId: @project.artifactId@ + version: @project.version@ +spring: + profiles.active: default + pid.fail-on-write-error: true + pid.file: /packages/config/${application.artifactId}/${application.artifactId}.pid server: port: 8090 - servlet.context-path: /enterprise-validator + servlet.context-path: /${application.artifactId} logging: level.root: info level.io.exnihilo: debug - file: /packages/logs/enterprise-validator/enterprise-validator.log -spring.pid.fail-on-write-error: true -spring.pid.file: /packages/config/enterprise-validator/enterprise-validator.pid - + file: /packages/logs/${application.artifactId}/${application.artifactId}.log management: endpoints: web.exposure.include: "*" @@ -15,5 +20,16 @@ management: endpoint: shutdown.enabled: true -application.version: @project.version@ -application.name: @project.name@ \ No newline at end of file +--- +#This section contains the properties that will be over-written for the Docker environment +spring: + profiles: openshift + pid.fail-on-write-error: true + pid.file: ${application.artifactId}.pid +server: + port: 8080 + servlet.context-path: / +logging: + level.root: info + level.io.exnihilo: info + file: logs/${application.artifactId}.log From 3c0cc4c15546af209363e8ac053dc8d1d7028b65 Mon Sep 17 00:00:00 2001 From: Anand Varkey Philips Date: Tue, 11 Dec 2018 02:51:25 +0530 Subject: [PATCH 7/7] Adding Azure Docker Container and Openshift details --- .github/README.md | 23 ++++++++++++++--------- 1 file changed, 14 insertions(+), 9 deletions(-) diff --git a/.github/README.md b/.github/README.md index 0bd5a41..88f6cdf 100644 --- a/.github/README.md +++ b/.github/README.md @@ -1,22 +1,27 @@ # Welcome to the Enterprise Validator -[![Build Status](http://varkeys-rhel-jenkins.westus.cloudapp.azure.com:8080/buildStatus/icon?job=pipeline-job)](http://varkeys-rhel-jenkins.westus.cloudapp.azure.com:8080/job/pipeline-job/) +![GitHub release](https://img.shields.io/github/release/anandvarkeyphilips/enterprise-validator.svg) [![Gitter chat](https://badges.gitter.im/gitterHQ/gitter.png)](https://gitter.im/enterprise-validator/Lobby) [![GitHub issues](https://img.shields.io/github/issues/anandvarkeyphilips/enterprise-validator.svg)](https://github.com/anandvarkeyphilips/enterprise-validator/issues) [![GitHub forks](https://img.shields.io/github/forks/anandvarkeyphilips/enterprise-validator.svg)](https://github.com/anandvarkeyphilips/enterprise-validator/network) -![GitHub release](https://img.shields.io/github/release/anandvarkeyphilips/enterprise-validator.svg) +[![Build Status](http://varkeys-rhel-jenkins.westus.cloudapp.azure.com:8080/buildStatus/icon?job=pipeline-job)](http://varkeys-rhel-jenkins.westus.cloudapp.azure.com:8080/job/pipeline-job/) ### Getting Started -YAML validator is better than http://www.yamllint.com. -YAML Validator follows YAML spec, support multiple doc feature which is not supported my YAML Lint. -JSON validator and formatter follows the JSON spec at http://json.org/. -Also, now you dont have to use https://www.base64decode.org/, -This app also supports Decode from and to Base64 format. +This Spring Boot Fully executable stand alone application is made for enterprises which cannot access/use public +websites for data validation and manipulation. This app provides, + +YAML validator which is better than http://www.yamllint.com as this app follows YAML spec, support multiple doc feature +which is not supported my YAML Lint. JSON validator and formatter follows the JSON spec at http://json.org/. Also, now +you dont have to use https://www.base64decode.org/ as this app also provides options for Decode from and to Base64 format. -Here's the working version of the Application hosted in Microsoft Azure Cloud:
-**http://varkeys-rhel-jenkins.westus.cloudapp.azure.com/enterprise-validator/editor** +Here's the Docker container version of the Application hosted in Microsoft Azure Cloud: +**http://enterprise-validator.centralus.azurecontainer.io:8090/enterprise-validator/editor** +Here's the fatty jar Application running in Microsoft Azure RHEL VM(May Have Issues): +**http://varkeys-rhel-jenkins.westus.cloudapp.azure.com/enterprise-validator/editor** +Here's the Openshift version of the Application hosted in Redhat Openshift(May Have Issues): +**http://enterprise-validator-enterprise-validator.7e14.starter-us-west-2.openshiftapps.com/editor** ![Alt text](README-IMAGES/enterprise-validator.png?raw=true "Enterprise Validator Suite")