Tuesday, July 29, 2014

JAX-RS Tutorilas: Hello World Example



Following is simple JAX-RS tutorial, which sends “Hello World” text as response string using JAX-RS API and Jersey implementation.
Technologies and Tools used in this article:

1.    JDK 
2.    Eclipse 
3.    Tomcat
4.    Maven 
5.    Jersey 1.8

Create Maven Web Project


Create a Maven web project and name it "helloworld" .
  • File -> New -> Other -> Maven Project -> Next
  • Select maven-archetype-webapp
  • Select Next
  • Type Group Id, Artifact Id and Package name
  • And select Finish

Add Project Dependencies


Add Jersey repository using Maven. Use following URL to get appropriate repository.
Now update pom.xml file.
File : pom.xml

<project ... >
...
        ...
<dependencies>
                ...
                ...

<dependency>
<groupId>com.sun.jersey</groupId>
<artifactId>jersey-server</artifactId>
<version>1.8</version>
</dependency>

</dependencies>
<build>
<finalName>helloworld</finalName>
</build>


</project>

Create REST Service


Now it is time to create a class which serves as REST service.
Create class named “RestService” and a public method “getMessage
package com.zain.restapi;

import javax.ws.rs.core.Response;
import javax.ws.rs.GET;
import javax.ws.rs.Path;


@Path("/message")
public class RestService {

 @GET
 public Response getMessage() {

  String message = "Hello World!";

  return Response.status(200).entity(message).type("text/plain").build();
 }
}

Note:

@Path annotation act as routing which map incoming URI to appropriate Class

Update web.xml for Jersey configuration

In web.xml, add servlet with class “com.sun.jersey.spi.container.servlet.ServletContainer

File : web.xml

<web-app  version="2.4"
       xmlns="http://java.sun.com/xml/ns/j2ee"
       xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
       xsi:schemaLocation="http://java.sun.com/xml/ns/j2ee
       http://java.sun.com/xml/ns/j2ee/web-app_2_4.xsd">
      
       <servlet>
              <servlet-name>jersey-serlvet</servlet-name>
              <servlet-class>
                     com.sun.jersey.spi.container.servlet.ServletContainer
                </servlet-class>
              <init-param>
                   <param-name>com.sun.jersey.config.property.packages</param-name>
                   <param-value>com.zain.restapi</param-value>
              </init-param>
              <load-on-startup>1</load-on-startup>
       </servlet>

       <servlet-mapping>
              <servlet-name>jersey-serlvet</servlet-name>
              <url-pattern>/rest/*</url-pattern>
       </servlet-mapping>
</web-app>   

Directory Structure


Final project directory structure


 Demo


To execute this application you need to type following URL
http://localhost:8080/{project name}/{jersey servlet name}/{@path param value}
here is actual URL for this tutorial.


Source Code


Download source code from this Github link

References


Read More...

Sunday, July 27, 2014

Sass Tutorials


Sass (Syntactically Awesome Stylesheets) is scripting language which produces Cascading Style Sheets (CSS).

Sass is compatible with all CSS version and has assorted features. It is open source and developed in Ruby.

What does Sass do?

In simple terms by using Sass and its features we can create robust and large Style sheet with less effort and in less time.

How to Install Sass?

Sass requires Ruby, so if you are using Windows System then you need to install Ruby first.
Here is URL of Ruby Installer.

Otherwise if you use Mac or Linux System then you don’t need Ruby, it is pre-configured.

Use following commands to install Sass

sudo gem install sass

use following command to verify  Sass is installed properly or not.

sass  -v

To begin with Sass, create Sass “main.scss” file and CSS “main.css” file

Then run following command

sass --watch main.scss:main.css

It will update main.css file whenever you do changes and save Sass file.

Sass Script


1. Variable

Sass variable is use to store information at one place and can be used at various place through out the whole Style Sheet.


$base-font: Arial, sans-serif; $base-color: #555;
h1{ font: 100% $base-font; color: $base-color; }

2. Nesting

Nesting is associated to CSS control structure define under enclosing brackets.


section {
  div {
    padding: 10px;
    position: relative;  }
  p { margin: 10px}
} 
Which produce following CSS style.


section div {
  padding: 10px;
  position: relative;
}

section p {
  margin: 10px;
}


3. Mixins


Mixins allow you to group set of CSS code and reuse it by including whole set of those code inside other CSS selectors. it looks like function with parameter.


@mixin border-radius($box-sizing) {   -webkit-box-sizing: $box-sizing;
 -moz-box-sizing:
 $box-sizing;  -ms-box-sizing: $box-sizing;  box-sizing: $box-sizing; } .container{ @include border-radius(border-box); }

4. Extends

Extends is like inheritance where you can share CSS properties from one selector to another.


.button {
  padding: 10px;
  height :30px;
  line-height: 30px;
}

.red-button{
  @extend .button;
  background: red;
}
.green-button {
 @extend .button;
 background: green;
}


5. Partials / Import

Partials are Sass files starts with underscore in beginning of their names.  underscore indicate Sass that it is a Partial and Sass does not convert it into CSS file. you rather include this Partial in other Sass files using @import keyword. Partials create structure of Style files and can be reuse in many other files.


// _base.scss

body {
  font-family : Arial, Verdana;
  margin: 0 10px;
}
// home.scss

@import 'base';

p {
    background-color: #eee;
}

6. Operators


Sass provides +, -, *,  % and / operators to perform mathematical operations.


$width: 900px;

.md-1 {
  width: $width;
}

.md-2{
  width: $width/2;
}

.md-4{
  width: $width/4;
}

References

Read More...

Thursday, July 24, 2014

JAX-RS Tutorials: REST API using Java

jax-rs-tutorials


JAX-RS is API specification for RESTful web services using Java. RESTful web services is implementation of REST (Representational State Transfer) which is architectural design for distributed system or in general we can say JAX-RS is a set of APIs to develop REST service. 

This is a brief introduction about REST and JAX-RS. You can find more information on REST on Wiki and JAX-RS Official Site.

What is REST?


  1. Representational state transfer is an abstraction of the architecture of the World Wide Web. More precisely, REST is an architectural style consisting of a coordinated set of architectural constraints (source Wikipedia)

    As JAX-RS is only a specification, we need to use it's implemented library to create RESTful web service.

  2. Following are such list of libraries

    • RESTeasy, JBoss's implementation.
    • Restlet, created by Jerome Louvel, a pioneer in REST frameworks

    For this JAX-RS tutorials set we will use Jersey library and Maven for dependency management.


Quick Start

Following are some start-up JAX-RS examples.

  • Simple Hello World Example 
    simple 
    JAX-RS tutorial, which sends “Hello World” text as response string using JAX-RS API and Jersey implementation.
  • JSON Response Example

Read More...