Skip to content

Commit

Permalink
Update README.md
Browse files Browse the repository at this point in the history
  • Loading branch information
justinhrobbins committed Jan 12, 2014
1 parent dc2fa5e commit 52a2589
Showing 1 changed file with 25 additions and 37 deletions.
62 changes: 25 additions & 37 deletions README.md
Original file line number Diff line number Diff line change
Expand Up @@ -6,48 +6,33 @@ View the [Maven site report](http://justinhrobbins.github.io/FlashCards_App/site
## Overview
I use this project as a playground to learn new skills and demonstrate my Java and web development skills.

## Project modules
The documentation below outlines the technologies used in each module of the Flashcards App:
## Technologies
The documentation below outlines the technologies used in this project

### WebServices
JAX-RS web services using the following:
* [Jersey](https://jersey.java.net/) JSR 311: JAX-RS
* [Spring Security](http://static.springsource.org/spring-security/site/index.html) Authentication
* [Spring IOC](http://www.springsource.org/spring-framework)
* [Jackson](http://wiki.fasterxml.com/JacksonHome) JSON processor
* [JAXB](https://jersey.java.net/) Java Architecture for XML Binding (JAXB)
* Spring
** [Spring IOC](http://www.springsource.org/spring-framework)
** [Spring Security](http://static.springsource.org/spring-security/site/index.html) Authentication
** [Spring Data - JPA](http://www.springsource.org/spring-data/jpa) If you are not familiar with Spring Data, you might like to take a look at the [Spring Data Example Showcase](https://github.com/SpringSource/spring-data-jpa-examples/tree/master/spring-data-jpa-showcase) on Github. The project compares a a typical data access implementation with JPA 2 with a less boilerplate Spring Data version.
** Spring RestTemplate
* [JPA](http://www.oracle.com/technetwork/java/javaee/tech/persistence-jsp-140049.html) & [Hibernate](http://hibernate.org/orm/) JPA provider
* [Maven](http://maven.apache.org/) for dependency management, project structure, and site reports
* [JUnit](http://www.junit.org/), [Mockito](http://code.google.com/p/mockito/) and [Hamcrest](http://hamcrest.org/JavaHamcrest/) matchers are used for testing
* [DbUnit](http://www.dbunit.org/) and an embedded [H2](www.h2database.com/) database is used for integration tests
* An embedded [Jetty](http://www.eclipse.org/jetty/) servlet container is used for API integration tests

The web services are modeled after the RESTful API best practices chronicled in the [apigee blog](http://blog.apigee.com/). The API has the following functionality:
* Each JAX-RS resource supports CRUD using the relevant HTTP methods (@POST, @GET, @PUT, @DELETE)
* [Partial updates](http://blog.apigee.com/detail/restful_api_design_can_your_api_give_developers_just_the_information/)
* [API Versioning](http://blog.apigee.com/detail/restful_api_design_tips_for_versioning)
* [Sorting and Pagination](http://blog.apigee.com/detail/restful_api_design_can_your_api_give_developers_just_the_information/)
* [Counts](http://blog.apigee.com/detail/restful_api_design_what_about_counts/)
* Authentication using Basic Auth
* [Custom JSON formatted exceptions](http://blog.apigee.com/detail/restful_api_design_what_about_errors/)
* [JSON request/responses payloads](http://blog.apigee.com/detail/why_you_should_build_your_next_api_using_json/)

### Service
* Spring Services and DI
* I've included two Service implementations which can be used interchangeably:
- [Spring Data - JPA](http://www.springsource.org/spring-data/jpa) repositories. If you are not familiar with Spring Data, you might like to take a look at the [Spring Data Example Showcase](https://github.com/SpringSource/spring-data-jpa-examples/tree/master/spring-data-jpa-showcase) on Github. The project compares a a typical data access implementation with JPA 2 with a less boilerplate Spring Data version. Spring Data evolved out of the [Hades](https://github.com/synyx/hades) open source project.
- JPA version using EntityManager, JPQL, and generic CRUD DAOs
* Transaction management
* Hibernate implementation of JPA

### Domain
* POJO entities and DTOs
* JPA & [Jackson](https://github.com/FasterXML/jackson-annotations) annotations
- Including: @ManyToMany, @ElementCollection, @CollectionTable
### UI Technologies

### GWT
#### GWT
* [Google Web Toolkit](https://developers.google.com/web-toolkit/) (GWT)
* MVP Framework ([Activities and Places framework](https://developers.google.com/web-toolkit/doc/latest/DevGuideMvpActivitiesAndPlaces))
* Views, ClientFactory
* [UiBinder](https://developers.google.com/web-toolkit/doc/latest/DevGuideUiBinder)
* [RestyGWT](http://restygwt.fusesource.org/)

### Struts
#### Struts
* [Struts MVC](http://struts.apache.org/)
- Actions
- [Tiles](http://struts.apache.org/2.x/docs/tiles-plugin.html)
Expand All @@ -57,13 +42,16 @@ The web services are modeled after the RESTful API best practices chronicled in
* [OpenId](http://openid.net/) Authentication
* JSP

### Misc.
In addition to the technology stack outlined above, this project also uses:
* [Maven](http://maven.apache.org/) for dependency management, project structure, and site reports
* [JUnit](http://www.junit.org/), [Mockito](http://code.google.com/p/mockito/) and [Hamcrest](http://hamcrest.org/JavaHamcrest/) matchers are used for testing
* [DbUnit](http://www.dbunit.org/) and an embedded [H2](www.h2database.com/) database is used for integration tests
* An embedded [Jetty](http://www.eclipse.org/jetty/) servlet container is used for API integration tests
* Spring RestTemplate is used as the client for web service integration testing.
## REST API
The web services are modeled after the RESTful API best practices chronicled in the [apigee blog](http://blog.apigee.com/). The API has the following functionality:
* Each JAX-RS resource supports CRUD using the relevant HTTP methods (@POST, @GET, @PUT, @DELETE)
* [Partial updates](http://blog.apigee.com/detail/restful_api_design_can_your_api_give_developers_just_the_information/)
* [API Versioning](http://blog.apigee.com/detail/restful_api_design_tips_for_versioning)
* [Sorting and Pagination](http://blog.apigee.com/detail/restful_api_design_can_your_api_give_developers_just_the_information/)
* [Counts](http://blog.apigee.com/detail/restful_api_design_what_about_counts/)
* Authentication using Basic Auth
* [Custom JSON formatted exceptions](http://blog.apigee.com/detail/restful_api_design_what_about_errors/)
* [JSON request/responses payloads](http://blog.apigee.com/detail/why_you_should_build_your_next_api_using_json/)

## Continuous Integration
Github commits to this project trigger a CI build on [Travis CI](https://travis-ci.org/).
Expand Down

0 comments on commit 52a2589

Please sign in to comment.