Skip to main content

Notice: This Wiki is now read only and edits are no longer possible. Please see: https://gitlab.eclipse.org/eclipsefdn/helpdesk/-/wikis/Wiki-shutdown-plan for the plan.

Jump to: navigation, search

Difference between revisions of "Texo"

(Texo Components)
(Quick Start)
Line 33: Line 33:
 
== Quick Start ==
 
== Quick Start ==
  
The quick start let you generate code in a few minutes:
+
The [[Texo/QuickStart|quick start]] page lets you generate code in just a few steps...
* Download & install Texo through the update manager
+
* Create a java project (plugin or normal)
+
* Take an ecore or xsd file, or use this file here, place this file somewhere in the java project
+
* Add the following dependencies to the java project:
+
* Right click on the ecore or xsd file and do Texo > Generate Code. This will create a new folder (src-gen) in the project with the generated code.
+
* Add this new folder as source folder to the project. You will probably get compile errors as not all dependencies are set. To get rid of these add the following plugins to the dependency:
+
** org.eclipse.emf.ecore
+
** org.eclipse.emf.texo
+
If you have a normal java project then you need to set these dependencies as jar files. The org.eclipse.emf.ecore.jar and org.eclipse.emf.texo.jar files can be found in the eclipse installation in the plugins folder.
+
 
+
As a next step you can try the following:
+
* make it more complex by using more complex models or generate for multiple models at the same time.
+
* try overriding templates
+
* do XML/XMI serialization. Note that for XML/XMI serialization you sometimes have to implement the String conversion methods in the generated ModelFactory class (see the UnsupportedOperationExceptions which are possibly generated there now).
+
  
 
== Texo Components ==
 
== Texo Components ==

Revision as of 12:18, 7 March 2010

Introduction

The goal of the Texo project is to provide model and template driven development technology for web application development projects. Texo will be based on and use components currently present in the Eclipse Modeling Framework (EMF) and Eclipse Modeling Framework Technology (EMFT) projects. Texo is a proposed open source component in the Eclipse Modeling Framework Technology (EMFT) project.

The original project proposal can be found here.

Benefits of using Texo

Benefits of using current Texo (January 2010):

  • Code Generation:
    • Generates true pojo's from an Ecore model or XSD without direct compile time link to EMF, Texo or other framework types. Facilitates integration of EMF concepts with other frameworks such as Google Web Toolkit or Object Relational Mapping solutions
    • Supports manual change of generated code (the same approach as EMF)
    • Code generation based on easy readable and overridable templates
  • XML support
    • Supports XML Schema constructs (as EMF)
    • XML and XMI Serialization
  • Runtime model support, key to implementing generic functionality as security, archiving, query generation and generic web services.
  • Supports java annotations and annotations defined in the model, to drive code generation and to be translated into java source code annotation


New functionality which is being developed right now gives these additional benefits:

  • Artifact generation can be controlled in detail using model annotations.
  • Multiple annotation models (JPA, Hibernate Search, etc.) supported
  • Easy integration with RIA user interface through a generic model-driven JSON service

Further in the future, Texo will be extended to generate the web user interface layer. This will give additional benefits in terms of increased developer productiviy and quality.


Texo.annotated model runtime.png


Download & Install

Quick Start

The quick start page lets you generate code in just a few steps...

Texo Components

The initial release of Texo will consist of several components:

  • Code generation for server oriented applications with support for in-model and in-source annotations, manual code changes are supported in the same way as with EMF. Templates can be added/overridden by users.
  • XML Serialization
  • Tool support for creating annotated models
  • JPA annotation generation
  • Model-driven JSON serialization support

Next phase:

  • Add more annotation models (for example: Hibernate Search, jaxb, Seam, EJB3)
  • The next phase will focus on generating User Interface code for GWT or RIA frameworks such as Smartclient or Extjs.
  • Test case/class generation

Documentation

The following pages contain detailed information on different parts of the Texo solution:

  • Generate Artifacts: describes how to generate code from one or more xsd/ecore files.
  • Template Overriding: discusses how the Texo templates can be overridden in a development project.
  • Runtime Model: describes the runtime model access to Texo generated objects.
  • XML-XMI Serialization: covers the main api to convert Texo generated pojo's from and to XML and XMI.
  • JSON Web Service: describes how the model-driven JSON webservice is implemented and how it can be used by RIA web ui's.
  • EMF Conversion: discusses the Texo-EMF conversion API which make it possible to convert any Texo generated pojo from/to an EObject. This is useful for when you want to make use of other EMF components like EMF Compare.
  • Test data generation: Texo is tested with about 20 models, the test-cases involve conversion from and to EMF, XML and XMI. An important foundation of the test cases is the automatic generation of test data on the basis of the model. This gives a better test coverage and makes it very easy to add new test models to the system and integrate them in the main test runs.

Main Design Concepts

The Texo project is based on a number of main design concepts and philosophies.

  • Annotated Models and Model Annotations: Texo uses annotated models for artifact generation. Multiple annotation models are support (JPA, model oriented, etc.) and model annotations can be converted to java annotations or other output. Annotations are set manually and further created by Model Annotators.
  • Runtime model: Texo (just as EMF) supports working with the domain model at runtime. Texo generates Model wrappers to give generated pojo's a Model api.
  • Working with generated artifacts: Texo follows the same philosophy as EMF: generated code can be manually changed, manual changes will be kept/maintained when re-generating the code.

For a more detailed description visit the Design Concepts page.

Texo and EMF

Texo is related to EMF and makes use of specific EMF components. Both Texo and EMF generate java code representing an ecore model in Java. There are however several distinctive differences between the approach chosen and code generation implemented by EMF and Texo. This is covered in detail on this page.

Developing

Developer information (CVS, how to setup a developers environment) can be found on the Developers page.

Current Status

Currently (March 2010) the following has been implemented:

  • pojo generation with runtime model
  • Featuremap support
  • XML Serialization

We are currently working on:

  • Support template overriding
  • Model-driven JSON service
  • Code generation
  • some initial tool support for creating annotated models
  • JPA Annotation model

In the next phase support for Generic/Parameterized types will be added.

Back to the top