https://github.com/huluvu424242/rades-annotations
Java Annotationen zur Automatisierung
https://github.com/huluvu424242/rades-annotations
accessors annotation-processor annotations builder-pattern builders generate generator rades
Last synced: 8 months ago
JSON representation
Java Annotationen zur Automatisierung
- Host: GitHub
- URL: https://github.com/huluvu424242/rades-annotations
- Owner: Huluvu424242
- License: lgpl-3.0
- Created: 2018-02-08T18:30:09.000Z (over 7 years ago)
- Default Branch: master
- Last Pushed: 2023-12-05T22:18:12.000Z (almost 2 years ago)
- Last Synced: 2025-01-13T10:49:23.239Z (9 months ago)
- Topics: accessors, annotation-processor, annotations, builder-pattern, builders, generate, generator, rades
- Language: Java
- Homepage: https://huluvu424242.github.io/rades-annotations/index.html
- Size: 717 KB
- Stars: 0
- Watchers: 1
- Forks: 1
- Open Issues: 19
-
Metadata Files:
- Readme: README.adoc
- Changelog: Changelog.adoc
- License: LICENSE
Awesome Lists containing this project
README
[#status]
image:https://maven-badges.herokuapp.com/maven-central/com.github.huluvu424242/rades-annotations/badge.svg?style=flat["Maven Central", link="https://maven-badges.herokuapp.com/maven-central/com.github.huluvu424242/rades-annotations"]
image:https://api.bintray.com/packages/funthomas424242/funthomas424242-libs/rades-annotations/images/download.svg[link="https://bintray.com/funthomas424242/funthomas424242-libs/rades-annotations/_latestVersion"]
image:https://travis-ci.org/Huluvu424242/rades-annotations.svg?branch=master["Build Status", link="https://travis-ci.org/Huluvu424242/rades-annotations"]
image:https://api.codacy.com/project/badge/Grade/88bf76546176437ea389629a2087d1b5["Codacy code quality", link="https://www.codacy.com/app/Huluvu424242/rades-annotations?utm_source=github.com&utm_medium=referral&utm_content=Huluvu424242/rades-annotations&utm_campaign=Badge_Grade"]
image:https://codecov.io/gh/Huluvu424242/rades-annotations/branch/master/graph/badge.svg[link="https://codecov.io/gh/Huluvu424242/rades-annotations"]
image:https://badge.waffle.io/Huluvu424242/rades-annotations.svg?columns=all["Waffle.io - Columns and their card count", link="https://waffle.io/Huluvu424242/rades-annotations"][#main]
= rades-annotationsStellt im Rahmen von link:https://github.com/Huluvu424242/RADeS[Rades] Annotationen zur Automatisierung bereit.
Die angebotenen Annotationen können zur Generierung folgender Pattern genutzt werden:* link:https://en.wikipedia.org/wiki/Builder_pattern[Builder Pattern]
* link:https://sourcemaking.com/design_patterns/private_class_data[Accessor Pattern]Hier finden Sie link:https://huluvu424242.github.io/rades-annotations/index.html[die Projektdokumentation, das Nutzerhandbuch].
[#lombok]
= Noch ein Lombok?Ja dieses Projekt erscheint wie eine Kopie von link://https://projectlombok.org/[Lombok], dennoch erhebt es weder den Anspruch so umfangreich zu sein
noch will es mit lombok in Konkurrenz treten. Auch wird eine andere Technologie zur Umsetzung verwendet. link://https://projectlombok.org/[Lombok]
modifiziert den AST (abstract syntax tree - abstrakten Syntaxbaum) des Java Compilers. Im Gegensatz dazu wird das vorliegende Projekt
rein auf der Basis von Annotationsprozessoren realisiert, unter möglichst geringer Verwendung von Reflection
(Ganz bin ich leider nicht dran vorbei gekommen.).Dieses Projekt besitzt nur ganz wenige Lösungen (aktuell Erstellung von Builder und Accessor einer Domainklasse). Wer mehr Funktionalität benötigt dem
möchte ich tatsächlich die Nutzung von link://https://projectlombok.org/[Lombok] empfehlen.Generell besteht auf Grund der im vorliegenden Projekt gewählten Technologie die Einschränkung, dass nur neue Artifakte (z.B. Klassen) generiert werden können.
Es besteht für Annotationsprozessoren leider keine saubere Möglichkeit bestehenden Kode zu modifizieren. Daher entfallen auch Builder in Form von inneren
Klassen. Wer so etwas sucht, sollte link://https://projectlombok.org/[Lombok] nutzen. Dort können solche Anpassungen mit der verwendeten Technologie realisiert werden.[#quellen]
= Quellen im Internet* Artikel: http://www.baeldung.com/java-annotation-processing-builder
* Artikel: https://www.visma.com/blog/java-annotation-processing-tool-tips-writing-testing/
* Reference Projek: https://github.com/tommy-bo/junit-ignore-processor
* Artikel: https://blog.oio.de/2019/02/18/bessere-builder-in-java-mit-manifold-self-type/#comment-75745# Danksagung
Dieses Projekt wäre ohne die Dienste, welche Open-Source-Projekte großzügig unterstützen, nicht möglich gewesen:* GitHub, welches kostenfrei ermöglicht in der Cloud gemeinsam am Code zu arbeiten und das Beitragen zu Open Source Projekten vereinfacht.
* Travis CI welches kostenfrei cloudbasierte Build-Services bereitstellt, die sich einfach in GitHub integrieren lassen.
* Codacy welches kostenfrei die Programmquellen von Open Source Projekten auf Einhaltung von Programmierregeln untersucht.
* Codev welches kostenfrei die erreichte Codecoverage der Testfälle ermittelt.
* Waffle.io welches für die agile Abarbeitung von Bugs und Features genutzt wird.
* JFrog welches für die Bereitstellung von Bintray, der Distributionsplattform, die verwendet wird, um mögliche Downloads anzubieten. Bintray war wirklich von unschätzbarem Wert, da es nicht nur kostenloses Hosting und Traffic für die Software bietet, sondern es auch sehr einfach macht, ein Repository für benutzerdefinierte Binärformate einzurichten und die Metadaten der Downloads zu verwalten. Dank der einfach zu verwendenden REST-API ist es möglich einen automatisierten Workflow mit GitHub und Travis CI einzurichten, um die Software in kürzester Zeit zu erstellen, hochzuladen und zu katalogisieren.