Developer Guide

Quickstart

Preconditions

Please ensure, before you jump into the sample code, that you are familiar with the model driven development process in general. You will find further information about that on the following sides:


Download JEAF Generator Sample Project

If you want to work with JEAF Generator we strongly recommend to checkout our sample project. Jumping through the code is a very meaningful thing to do besides reading all the documentation.

  • anaptecs GitHub Repository
    Clone latest version directly from our GitHub repository


Structure of the example project

As you can see in our Modeling Guide JEAF Generator is able to generate lots of different types of code based on the UML model. To ensure a better overview in the example project we created an independent Maven sub module for every content type that will be generated.


Maven Project Description Git Repository Link
jeaf-generator-sample-project Top level project of sample.  
accounting-model Project contains the UML model of the sample project as well as the appropriate XMI export (sub directory xmi) and a HTML export (sub directory html) of the model. Sub modules that make use of JEAF Generator reference the packaged UML model via Maven dependency.
Define XMI as Input for JEAF Generator
accounting-model
accounting-service-objects Project contains the service objects that are generated from the UML model.
Generating Code for Services
accounting-service-objects
accounting-services-api Project contains the service interfaces of the generated services of the sample project.
Generating Code for Services
accounting-services-api
accounting-services-api-runtime Project contains the generated runtime classes for services that are required by JEAF Framework
Generating Code for Services
accounting-services-api-runtime
accounting-rest Project contains the generated REST facade for services
Generating Code for Services
accounting-rest
accounting-services-impl Project contains the generated stubs for service implementations.
Generating Code for JEAF Components
accounting-services-impl
accounting-services-impl-runtime Project contains the generated runtime classes for JEAF Components
Generating Code for JEAF Components
accounting-services-impl-runtime
accounting-persistent-objects Project contains the generated persistent classes.
Generating Code for JEAF Persistence
accounting-persistent-objects
accounting-domain-objects Project contains the generated domain objects.
Generating Code for Domain Objects
accounting-domain-objects
accounting-pojos Project contains the generated POJOs.
Generating Code for POJOs
accounting-pojos
accounting-object-mappers Project contains generated Object Mappers.
Generating Code for Object Mappings
accounting-object-mappers
accounting-activities-api Project contains the generated interfaces for activities.
Generating Code for JEAF Activities
accounting-activities-api
accounting-activities-impl Project contains the generated stubs for activities.
Generating Code for JEAF Activities
accounting-activities-impl
accounting-service-providers-api Project contains the generated interface for service providers.
Generating Code for JEAF Service Providers
accounting-service-providers-api
accounting-service-providers-impl Project contains the generated stubs for service provider implementations.
Generating Code for JEAF Service Providers
accounting-service-providers-impl
accounting-junit-testcases Project contains the generated stubs to test services.
Generating Code for JEAF Service
accounting-junit-testcases


Note:

  • In general the configuration of the sample project is a very good baseline to setup your projects.

    However in case of the sample project all output will be written to src-gen / res-gen. This will ensure that also code / resources that actually are only generated once are always up-to-date. However in real life this is not a good setup as manual code will be overwritten every time JEAF Generator will be executed :wink:


UML Model

As mentioned several times before JEAF Generator needs an UML model as input for code generation. This sample project here uses a very simple UML model that was created to demonstrate modeling and code generation. Thus the model concentrates mostly on how to model but not on correct representation of a special business.

Most important parts of the model will be shown here. In addition the sample project also contains the MagicDraw UML project files as well as an HTML export of the model.


POJOs

Model of POJOs

Examples

Account.java
AccountBase.java
Booking.java


Service Interface

Model of AccountingService

Examples

AccountingService.java
Company.java
BankType.java
CustomerQuery.java
CustomerLoadStrategy.java


Components

Model of component


Activities

Model of activities

Examples

CreateCustomerActivity.java
CreateCustomerActivityImpl.java


Object Mappings

Model of object mappings

Examples

CustomerToCustomerBOConverter.java


Role Definitions

Model of role definitions


Service Providers

Model of service providers


Persistent Classes

Model of persistent classes