From 52a25895b6171be179fab98bc514ced005966d92 Mon Sep 17 00:00:00 2001 From: Justin Robbins Date: Sun, 12 Jan 2014 10:25:39 -0700 Subject: [PATCH] Update README.md --- README.md | 62 ++++++++++++++++++++++--------------------------------- 1 file changed, 25 insertions(+), 37 deletions(-) diff --git a/README.md b/README.md index 76ac406b0..62a222944 100644 --- a/README.md +++ b/README.md @@ -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) @@ -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/).