Saturday, December 22, 2012

Spring 3.1 Web Service RESTful separate JSON into one method and XML into one method(avoid parallel JAXB2/Jackson annotations)




 


Related article:

Spring 3.1 Web Service RESTful part01 - JSON and XML

Sample Web Application using Spring MVC Framework

Simple Java app using Spring Framework


Environment:
Jdk1.7.07
Maven 3.0.4
Spring Framework version 3.1.1.RELEASE
Spring Source Tools Suits(STS) 3.0

Download Source code here
To open the source code:
File --> Import --> Maven --> Existing Maven Projects


If you are new to Maven, please visit  Maven Tutorial.


In previous post, I created the  Web Service RESTful with combination JSON and XML. This post is the extension to separate JSON into one method and XML into one method.
Every thing is the same  Spring 3.1 Web Service RESTful part01 - JSON and XML except the EmployeeController.java class.


@Controller
public class EmployeeController {
	private Logger logger = LoggerFactory.getLogger(getClass());

	/**
	 * Sample URL: http://localhost:8080/app0142/restful/employeeid/1 
	 */
	@RequestMapping(value="/employeeid/{id}", method=RequestMethod.GET, headers="Accept=application/xml")
	public @ResponseBody Employee getEmployeeByIdAsXML(@PathVariable Integer id) {
		logger.trace("Serving resource for id As XML: " + id);
		return new Employee(id,"WhiteXML","Rose","whiterose","whiterose1@gmail.com","123456789","img_whiterose");
	}
	
	@RequestMapping(value="/employeeid/{id}", method=RequestMethod.GET, headers="Accept=application/json")
	public @ResponseBody Employee getEmployeeByIdAsJSON(@PathVariable Integer id) {
		logger.trace("Serving resource for id As JSON : " + id);
		return new Employee(id,"WhiteJSON","Rose","whiterose","whiterose1@gmail.com","123456789","img_whiterose");
	}
	
}

Testing

1)JSON



2)XML



Sunday, October 28, 2012

Sample Java Application using Spring Framework with xmlns:p



Related article:

Java HelloWorld sample with decoupled

Simple Java app using Spring Framework

Sample Java Application using Spring Framework with xmlns:p="http://www.springframework.org/schema/p"

Environment:
Jdk1.7.07
Maven 3.0.4
Spring3.1.1
Spring Tools Suits(STS) 3.0
Download Source code here
To open the source code:
File --> Import --> Maven --> Existing Maven Projects
If you are new to Maven, please visit  Maven Tutorial.




package org.sample.app;

import org.sample.message.MessageRenderer;
import org.springframework.context.ApplicationContext;
import org.springframework.context.support.ClassPathXmlApplicationContext;


public class HelloWorldSpringDI {

 public static void main(String[] args) {

  // Initialize Spring application context
  ApplicationContext ctx = new ClassPathXmlApplicationContext("app-context.xml");
  
  MessageRenderer mr = ctx.getBean("renderer", MessageRenderer.class);
  mr.render();
  
 }
}
package org.sample.message;

public interface MessageProvider {

 public String getMessage();
 
}

package org.sample.message;

public interface MessageRenderer {

 public void render();
 
 public void setMessageProvider(MessageProvider provider);
 
 public MessageProvider getMessageProvider();
 
}

package org.sample.message.impl;

import org.sample.message.MessageProvider;

public class HelloWorldMessageProvider implements MessageProvider {

 public String getMessage() {
  
  return "Hello World!";
 }
 
}

package org.sample.message.impl;

import org.sample.message.MessageProvider;
import org.sample.message.MessageRenderer;

public class StandardOutMessageRenderer implements MessageRenderer {

    private MessageProvider messageProvider = null;
 
 public void render() {
        if (messageProvider == null) {
            throw new RuntimeException(
                    "You must set the property messageProvider of class:"
                            + StandardOutMessageRenderer.class.getName());
        }

        System.out.println(messageProvider.getMessage()); 
 }

 public void setMessageProvider(MessageProvider provider) {
        this.messageProvider = provider;  
 }

 public MessageProvider getMessageProvider() {
        return this.messageProvider;
 }
 
}

app-context.xml


 

 



log4j.xml


 
 
  
  
   
  
 
 
 



 
 



 



 








 
 
  
  
 
 


pom.xml

 4.0.0
 org.springframework.samples.spring
 app2010
 1.0.0.CI-SNAPSHOT
 jar
 Spring Utility
 http://www.springframework.org
 
  <![CDATA[
      This project is a minimal jar utility with Spring configuration.
    ]]>
 
 
  true
  3.1.0.RELEASE
 
 
  
   strict
   
    false
   
  
 

 
  
   junit
   junit
   4.7
   test
  
  
   org.springframework
   spring-test
   ${spring.framework.version}
   test
  
  
   org.springframework
   spring-context
   ${spring.framework.version}
  
  
   log4j
   log4j
   1.2.14
  
 

 
  
   
    
     maven-assembly-plugin
     false
     
      
       project
      
     
    
    
     org.apache.maven.plugins
     maven-jar-plugin
     
      
       target/classes/META-INF/MANIFEST.MF
      
     
    
   
  
  
   
    org.apache.maven.plugins
    maven-compiler-plugin
    
     1.7
     1.7
    
   
   
    org.apache.maven.plugins
    maven-surefire-plugin
    
     
     
      **/*Tests.java
     
     
      **/Abstract*.java
     
    
   
  
  
 

 
  
   Codehaus
   http://repository.codehaus.org/
   
    false
   
  
 
 
  http://www.springframework.org/download
  
   staging
   file:///${user.dir}/target/staging/org.springframework.batch.archetype/${pom.artifactId}
  
  
   spring-release
   Spring Release Repository
   file:///${user.dir}/target/staging/release
  
  
   spring-snapshot
   Spring Snapshot Repository
   file:///${user.dir}/target/staging/snapshot
  
 


Java HelloWorld sample with decoupled

This is Java HelloWorld sample with decoupled.

Download Source code here
package org.sample.app;

public class HelloWorld {

 public static void main(String[] args) {

  System.out.println("Hello World!");

 }
}

package org.sample.app;

public class HelloWorldWithCommandLine {

 public static void main(String[] args) {

  if (args.length > 0) {
   System.out.println(args[0]);
  } else {
   System.out.println("Hello World!");
  }

 }

}

package org.sample.message;

public interface MessageProvider {

 public String getMessage();
 
}
package org.sample.message;

public interface MessageRenderer {

 public void render();
 
 public void setMessageProvider(MessageProvider provider);
 
 public MessageProvider getMessageProvider();
 
}
package org.sample.message.impl;

import org.sample.message.MessageProvider;

public class HelloWorldMessageProvider implements MessageProvider {

 public String getMessage() {
  
  return "Hello World!";
 } 
}
package org.sample.message.impl;

import org.sample.message.MessageProvider;
import org.sample.message.MessageRenderer;

public class StandardOutMessageRenderer implements MessageRenderer {

    private MessageProvider messageProvider = null;
 
 public void render() {
        if (messageProvider == null) {
            throw new RuntimeException(
                    "You must set the property messageProvider of class:"
                            + StandardOutMessageRenderer.class.getName());
        }

        System.out.println(messageProvider.getMessage()); 
 }

 public void setMessageProvider(MessageProvider provider) {
        this.messageProvider = provider;  
 }

 public MessageProvider getMessageProvider() {
        return this.messageProvider;
 }
 
}

package org.sample.app.decoupled;

import org.sample.message.MessageProvider;
import org.sample.message.MessageRenderer;
import org.sample.message.impl.HelloWorldMessageProvider;
import org.sample.message.impl.StandardOutMessageRenderer;


public class HelloWorldDecoupled {

 public static void main(String[] args) {
        MessageRenderer mr = new StandardOutMessageRenderer();
        MessageProvider mp = new HelloWorldMessageProvider();
        mr.setMessageProvider(mp);        
        mr.render();
 }
}
package org.sample.app.decoupled;

import java.io.FileInputStream;
import java.util.Properties;

import org.sample.message.MessageProvider;
import org.sample.message.MessageRenderer;

public class MessageSupportFactory {

    private static MessageSupportFactory instance = null;

    private Properties props = null;

    private MessageRenderer renderer = null;

    private MessageProvider provider = null;

    private MessageSupportFactory() {
        props = new Properties();

        try {
            props.load(new FileInputStream("src/conf/msf.properties"));

            // get the implementation classes
            String rendererClass = props.getProperty("renderer.class");
            String providerClass = props.getProperty("provider.class");

            renderer = (MessageRenderer) Class.forName(rendererClass).newInstance();
            provider = (MessageProvider) Class.forName(providerClass).newInstance();
        } catch (Exception ex) {
            ex.printStackTrace();
        }
    }

    static {
        instance = new MessageSupportFactory();
    }

    public static MessageSupportFactory getInstance() {
        return instance;
    }

    public MessageRenderer getMessageRenderer() {
        return renderer;
    }

    public MessageProvider getMessageProvider() {
        return provider;
    } 
}
package org.sample.app.decoupled;

import org.sample.message.MessageProvider;
import org.sample.message.MessageRenderer;

public class HelloWorldDecoupledWithFactory {

 public static void main(String[] args) {
        MessageRenderer mr = MessageSupportFactory.getInstance().getMessageRenderer();
        MessageProvider mp = MessageSupportFactory.getInstance().getMessageProvider();
        mr.setMessageProvider(mp);
        mr.render();
 }

}