-
Notifications
You must be signed in to change notification settings - Fork 8
Roadmap
cyriux edited this page Apr 23, 2012
·
7 revisions
- Add desirable features
- Comment/Vote existing features
- Explicitly declare your intent in the code, e.g. with annotations
- Verify that the code matches the declared intent, e.g. that a ValueObject is actually immutable
- Verify Dependencies based on predefined or custom rules, e.g. that a ValueObject must never depend on an Entity
- Extract documentation from the declared intents, for a documentation relevant and always in sync with the code
- Declare a stereotype for your classes using built-in annotations such as @com.patternity.annotation.ddd.ValueObject, or your own annotations @MyVO, itself meta-annotated with the built-in annotations e.g. @com.patternity.annotation.ddd.ValueObject
- Declare a package-level design intent in the package-info.java using built-in or custom annotations
- @ValueObject must have all their fields final
- @ValueObject must have equals and hashcode methods explicitly overriden
- @ValueObject must not depend (members, return value, throws clause, superclass and interfaces) on @Entity
- @ValueObject must not depend on @Service
- Every class in package annotated with @DomainLayer in its package-info.java must not depend on any class in packages annotated with @ApplicationLayer or with @PresentationLayer (recursive or not first...)
- Every class in package annotated with @ForbiddenDependencies("javax.") in its package-info.java must not depend on any class from javax. or any subpackage
Given a package-info in com.mycompany.mybilling with @DomainModel and @Domain("Billing")
And containing the following classes: ModelElement, ClassElement, FieldElement, MethodElement And with a class ModelElementUtil marked with @Utility
When I run the tool
Then I find a file in target/patternity/mybilling/billing.html with a glossary of ClassElement, FieldElement, MethodElement only
And each first sentence of their class-level Javadoc is quoted in the glossary