org.stefaniuk.json.service
Class JsonServiceRegistry

java.lang.Object
  extended by org.stefaniuk.json.service.JsonServiceRegistry

public class JsonServiceRegistry
extends Object

JSON service registry.

A registry class that holds all classes provided by a developer that are available to a JSON-RPC client. This is the main class that should be utilised in a user code. Multiple instances can be created or the singleton pattern could be used. The last one is probably more desirable in most use cases.

A class can be registered/unregistered by passing a class name as an argument of register/unregister method. Instance of that class will be created by the service invoker object only once, when a first call is made to any of the exposed methods or when service mapping description is produced.

It is user's responsibility to pass incoming HTTP request to the registry object for method to be executed. From inside of a Java servlet this can be achieved by calling handle method on the registry object itself:

 registry.handle(request, response, NameOfClass.class);
 
From a controller (using Spring Framework) this can be done by calling static method handle from JsonServiceUtil class:

 JsonServiceUtil.handle(registry, request, response, NameOfClass.class);
 

Since:
2010/09/20
Version:
1.0.0
Author:
Daniel Stefaniuk

Constructor Summary
JsonServiceRegistry()
          Constructor
 
Method Summary
 JsonServiceRegistry clearRegistry()
          Removes all JSON-RPC objects from the registry.
static JsonServiceRegistry getInstance()
          Singleton pattern provided out of the box.
 OutputStream getServiceMap(Class<?> clazz, javax.servlet.http.HttpServletResponse response)
          Produces Service Mapping Description for a given JSON-RPC class.
 OutputStream getServiceMap(Class<?> clazz, OutputStream os)
          Produces Service Mapping Description for a given JSON-RPC class.
 OutputStream handle(javax.servlet.http.HttpServletRequest request, javax.servlet.http.HttpServletResponse response, Class<?> clazz)
          Handles HTTP request.
 OutputStream handle(javax.servlet.http.HttpServletRequest request, javax.servlet.http.HttpServletResponse response, Object obj)
          Handles HTTP request.
 OutputStream handle(javax.servlet.http.HttpServletRequest request, OutputStream os, Class<?> clazz)
          Handles HTTP request.
 OutputStream handle(javax.servlet.http.HttpServletRequest request, OutputStream os, Class<?> clazz, String method, Object... args)
          Handles HTTP request.
 OutputStream handle(InputStream is, OutputStream os, Class<?> clazz)
          Handles request as an input stream.
 OutputStream handle(InputStream is, OutputStream os, Class<?> clazz, String method, Object... args)
          Handles request as an input stream.
 boolean isSingleton()
          Is this object a singleton?
 JsonServiceRegistry register(Class<?> clazz)
          Registers a class to make it available to a JSON-RPC client.
 JsonServiceRegistry register(Object obj)
          Registers class by passing its instance to make it available to a JSON-RPC client.
 JsonServiceRegistry setRegistry(Class<?>[] classes)
          Registers an array of classes to make them available to a JSON-RPC client.
 JsonServiceRegistry unregister(Class<?> clazz)
          Unregisters class.
 JsonServiceRegistry unregister(Object obj)
          Unregisters class by passing its instance.
 
Methods inherited from class java.lang.Object
clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait
 

Constructor Detail

JsonServiceRegistry

public JsonServiceRegistry()
Constructor

Method Detail

getInstance

public static JsonServiceRegistry getInstance()
Singleton pattern provided out of the box.

Returns:
Returns JsonServiceRegistry singleton object.

isSingleton

public boolean isSingleton()
Is this object a singleton?

Returns:

register

public JsonServiceRegistry register(Class<?> clazz)
Registers a class to make it available to a JSON-RPC client.

Parameters:
clazz - Class
Returns:
Returns JsonServiceRegistry object.

register

public JsonServiceRegistry register(Object obj)
Registers class by passing its instance to make it available to a JSON-RPC client.

Parameters:
obj - Instance of a class.
Returns:
Returns JsonServiceRegistry object.

setRegistry

public JsonServiceRegistry setRegistry(Class<?>[] classes)
Registers an array of classes to make them available to a JSON-RPC client.

Parameters:
classes - Array of classes.
Returns:
Returns JsonServiceRegistry object.

unregister

public JsonServiceRegistry unregister(Class<?> clazz)
Unregisters class.

Parameters:
clazz - Class
Returns:
Returns JsonServiceRegistry object.

unregister

public JsonServiceRegistry unregister(Object obj)
Unregisters class by passing its instance.

Parameters:
obj - Instance of a class.
Returns:
Returns JsonServiceRegistry object.

clearRegistry

public JsonServiceRegistry clearRegistry()
Removes all JSON-RPC objects from the registry.

Returns:
Returns JsonServiceRegistry object.

getServiceMap

public OutputStream getServiceMap(Class<?> clazz,
                                  OutputStream os)
Produces Service Mapping Description for a given JSON-RPC class.

Parameters:
clazz - Class
os - Output stream
Returns:
Returns output stream.

getServiceMap

public OutputStream getServiceMap(Class<?> clazz,
                                  javax.servlet.http.HttpServletResponse response)
Produces Service Mapping Description for a given JSON-RPC class.

Parameters:
clazz - Class
response - HTTP response
Returns:
Returns output stream.

handle

public OutputStream handle(InputStream is,
                           OutputStream os,
                           Class<?> clazz)
Handles request as an input stream.

Parameters:
is - Input stream
os - Output stream
clazz - Class
Returns:
Returns output stream.

handle

public OutputStream handle(InputStream is,
                           OutputStream os,
                           Class<?> clazz,
                           String method,
                           Object... args)
Handles request as an input stream.

Parameters:
is - Input stream
os - Output stream
clazz - Class
method - Method to call.
args - Arguments passed to the method.
Returns:
Returns output stream.

handle

public OutputStream handle(javax.servlet.http.HttpServletRequest request,
                           javax.servlet.http.HttpServletResponse response,
                           Class<?> clazz)
Handles HTTP request.

Parameters:
request - HTTP request
response - HTTP response
clazz - Class
Returns:
Returns output stream.
Throws:
IOException

handle

public OutputStream handle(javax.servlet.http.HttpServletRequest request,
                           javax.servlet.http.HttpServletResponse response,
                           Object obj)
Handles HTTP request.

Parameters:
request - HTTP request
response - HTTP response
obj - Already instantiated object
Returns:
Returns output stream.
Throws:
IOException

handle

public OutputStream handle(javax.servlet.http.HttpServletRequest request,
                           OutputStream os,
                           Class<?> clazz)
Handles HTTP request.

Parameters:
request - HTTP request
os - Output stream
clazz - Class
Returns:
Returns output stream.

handle

public OutputStream handle(javax.servlet.http.HttpServletRequest request,
                           OutputStream os,
                           Class<?> clazz,
                           String method,
                           Object... args)
Handles HTTP request.

Parameters:
request - HTTP request
os - Output stream
clazz - Class
method - Method to call.
args - Arguments passed to the method.
Returns:
Returns output stream.


Copyright © 2013. All Rights Reserved.