Technosoft has rich experience of creating large scale enterprise applications using Tapestry (4.0). Following is snapshot of our experience with Tapestry based applications.
Being foundation of framework the Tapestry page consists of all the page related UI and business logic ranging from persisting form values, listeners, interaction with other pages etc. We have created simple to complex UI pages with listeners and even handlers. These pages use most of components available in core framework libraries including but not limited to ActionLink, DirectLink, Image, Radio, Submit, Any, RadioGroup, Block, ExternalLink, Insert, TextField, Body, Foreach, LinkSubmit, Checkbox, Form, Select, DatePicker, PageLink, ServiceLink, Delegator, Hidden, PropertySelection etc. Depending upon the requirements and nature of page corresponding page java class implements listeners like PageBeginRenderListener and contains even handlers and other page processing methods. The page specification files (.page) files are accordingly tailored to declare embedded components, beans, properties etc for page. Generating dynamic contents for the page are important part of application and this feature is implemented fully on server side using page java class and zero code in HTML templates. Thus there is clear separation of concerns (UI, Business logic, data) that makes maintenance easy and increases team productivity.
Contrib. library is collection of powerful add-on components for Tapestry contributed by the community. We have used the various contrib. components like DateField, PopupLink, MultiplePropertySelection, Table etc. Also we have customized the Table component by updating source code to customize the navigational styles of the components.
We have created custom, reusable components for Tapestry during implementation of various applications. These components ranges from simple login components to complex GUIs, Search components, Menu and menu bar components, portlet components, and Tree like structures etc. These components are parameterized as well as self-sufficient and highly reusable.
The Tacos library project provides components and Ajax behavior for the Tapestry framework. AJAX has been essential ingredient of most of application we developed. AJAX based implementation is based upon components provided by TACOS library. The components used from this library include AjaxDirectLink, AjaxEventSubmit, AjaxForm, AjaxLinkSubmit, AjaxSubmit, Autocompleter, DatePicker etc.
True benefits of IoC (Inversion of control) and DI (Dependency Injections) in Tapestry framework are revealed when it is integrated with Spring. In our Tapestry development we have successfully integrated and used Tapestry with frameworks like Spring, Hibernate and ACEGI using hive module. Tapestry services are exposed as Spring Beans that can be used anywhere by simply injecting through annotations. A role based database dependent security framework is implemented through Tapestry integration with ACEGI framework. Similarly the business logic layer is written as spring beans that uses hibernate DAO classes to access database.
Tapestry annotations are handy feature to reduce code and write clear behavior. We have frequently used Tapestry annotations in applications. Various annotations used consist of @Asset, @Bean, @InitialValue, @InjectObject,@InjectState, @Persist etc. These annotations not only control the way code should behave but also reduces LOC dramatically.
We have written many Tapestry custom services as standalone functionality that is usually not page-specific. These services are highly reusable code injected in many pages where needed. Along with writing totally new services wrapper services are also written on existing Tapestry services to customize their behavior e.g. writing wrapper to Tapestry Reset service to avoid it called directly by users.
We have integrated and used the reporting services of Pentaho BI suit with Tapestry. Pentaho solutions are created for reports in various formats and these reports are made available to user through Tapestry interface.
Various other libraries and framework have been utilized in our Tapestry development to ease development and provide rich feature to end users. This list includes Lucene for searching, POI used in reporting to access MS based file formats, JFreeChart, Log4J, XML Manipulation libraries, JS Calendar etc.
Technosoft has extensive Tapestry Spring and Hibernate experience. Hibernate and Spring frameworks. We have also done automatic Hibernate model generation using HibernateTools plug-in. Code quality is our basic ingredient and we have enforced this using various eclipse based plug-ins like checkstyle, CPD, Jalopy and CAP. Strict JDK 1.5 features are followed like enhanced loops, annotations etc.
Technosoft has worked on the above technologies for over two year. We are very confident that our Tapestry skills are superb and we can efficiently deliver quality work using Tapestry. In addition to Tapestry Technosoft has also worked on Struts, Struts2, Spring, Hibernate, Axis, Tiles and GWT.
Technosoft can provide technical consultancy, further R&D services, as well as help in developing Tapestry based solutions at very affordable price. We will be happy to work with you and save your IT team’s time on learning curve and development effort.
Our dedicated teams of Microsoft and Sun Certified professionals are ready to help!
If you are having trouble implementing a similar project, send email to email@example.com and in the subject line enter WSMXO and your mail will be automatically forwarded to the technology expert in this area. Or click here to submit your technical query to our support forum. We can review your code to make it operational or can stare you in the right direction.
* Logo is trademark of IBM.
"We’ve been working with Technosoft for two years and as a start-up with limited funding they have never once lacked professionalism. The team at Technosoft communicates efficiently, the performance on projects is excellent and we continue to push through on our development roadmap. Technosoft met the criteria for the initial project we engaged in and thereafter have worked closely with our company to meet deadlines, maintain on-going development and support our product."