org.apache.openjpa.persistence.jest
Class JESTContext

java.lang.Object
  extended by org.apache.openjpa.persistence.jest.JESTContext
All Implemented Interfaces:
JPAServletContext

public class JESTContext
extends Object
implements JPAServletContext

An operational context combines a persistence context and a HTTP execution context expressed as a request and response.
This context parses the HTTP request URL to identity the command and then executes it.

Author:
Pinaki Poddar

Field Summary
protected static PrototypeFactory<String,JESTCommand> _cf
           
static Localizer _loc
           
protected  Log _log
           
protected  MetaDataRepository _repos
           
static String CONTEXT_ROOT
           
static String JEST_TEMPLATE
           
static char QUERY_SEPARATOR
           
 
Constructor Summary
JESTContext(String unit, OpenJPAEntityManagerFactory emf, HttpServletRequest request, HttpServletResponse response)
           
 
Method Summary
 void execute()
          Executes the request.
(package private)  void findResource(String rsrc)
          A resource is always looked up with respect to this class.
static String getAction(String path)
          Gets the action from the given path.
 OpenJPAEntityManager getPersistenceContext()
          Gets the persistence context.
 String getPersistenceUnitName()
          Gets the name of the persistence unit.
 HttpServletRequest getRequest()
          Gets the request.
 String getRequestURI()
          Get the requested URI.
 HttpServletResponse getResponse()
          Gets the response.
(package private)  boolean isContextRoot(String path)
          Is this path a context root?
(package private)  boolean isEmpty(String s)
           
 void log(short level, String message)
          Logging message.
 ClassMetaData resolve(String alias)
          Resolve the given alias to meta-data of the persistent type.
 
Methods inherited from class java.lang.Object
clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait
 

Field Detail

_repos

protected MetaDataRepository _repos

_log

protected Log _log

_cf

protected static PrototypeFactory<String,JESTCommand> _cf

_loc

public static final Localizer _loc

QUERY_SEPARATOR

public static final char QUERY_SEPARATOR
See Also:
Constant Field Values

CONTEXT_ROOT

public static final String CONTEXT_ROOT
See Also:
Constant Field Values

JEST_TEMPLATE

public static final String JEST_TEMPLATE
See Also:
Constant Field Values
Constructor Detail

JESTContext

public JESTContext(String unit,
                   OpenJPAEntityManagerFactory emf,
                   HttpServletRequest request,
                   HttpServletResponse response)
Method Detail

getPersistenceUnitName

public String getPersistenceUnitName()
Gets the name of the persistence unit.

Specified by:
getPersistenceUnitName in interface JPAServletContext

getPersistenceContext

public OpenJPAEntityManager getPersistenceContext()
Gets the persistence context. The persistence context is lazily constructed because all commands may not need it.

Specified by:
getPersistenceContext in interface JPAServletContext

getRequest

public HttpServletRequest getRequest()
Gets the request.

Specified by:
getRequest in interface JPAServletContext

getRequestURI

public String getRequestURI()
Description copied from interface: JPAServletContext
Get the requested URI.

Specified by:
getRequestURI in interface JPAServletContext
Returns:

getResponse

public HttpServletResponse getResponse()
Gets the response.

Specified by:
getResponse in interface JPAServletContext

execute

public void execute()
             throws Exception
Executes the request.
Execution starts with parsing the request path. The first path segment is interpreted as action key, and if a action with the given key is registered then the control is delegated to the command. The command parses the entire request for requisite qualifiers and arguments and if the parse is successful then the command is executed in this context.
If path is null, or no command is registered for the action or the command can not parse the request, then a last ditch attempt is made to find a resource. This fallback lookup is important because the response can contain hyperlinks to stylesheets or scripts. The browser will resolve such hyperlinks relative to the original response.
For example, let the original request URL be:
http://host:port/demo/jest/find?type=Actor&Robert
The response to this request is a HTML page that contained a hyperlink to jest.css stylesheet in its <head> section.
<link ref="jest.css" .....>
The browser will resolve the hyperlink by sending back another request as
http://host:port/demo/jest/find/jest.css

Throws:
Exception

getAction

public static String getAction(String path)
Gets the action from the given path.

Parameters:
path - a string
Returns:
if null, returns context root i.e. '/' character. Otherwise, if the path starts with context root, then returns the substring before the next '/' character or end of the string, whichever is earlier. If the path does not start with context root, returns the substring before the first '/' character or end of the string, whichever is earlier.

resolve

public ClassMetaData resolve(String alias)
Description copied from interface: JPAServletContext
Resolve the given alias to meta-data of the persistent type.

Specified by:
resolve in interface JPAServletContext
Parameters:
alias - a moniker for the Java type. It can be fully qualified type name or entity name or simple name of the actual persistent Java class.
Returns:
meta-data for the given name.

findResource

void findResource(String rsrc)
            throws ProcessingException
A resource is always looked up with respect to this class.

Parameters:
rsrc -
Throws:
ProcessingException

log

public void log(short level,
                String message)
Description copied from interface: JPAServletContext
Logging message.

Specified by:
log in interface JPAServletContext
Parameters:
level - OpenJPA defined log levels. Invalid levels will print the message on console.
message - a printable message.

isContextRoot

boolean isContextRoot(String path)
Is this path a context root?

Parameters:
path -
Returns:

isEmpty

boolean isEmpty(String s)


Copyright © 2006-2012 Apache Software Foundation. All Rights Reserved.