Class JESTContext
- java.lang.Object
-
- org.apache.openjpa.persistence.jest.JESTContext
-
- All Implemented Interfaces:
JPAServletContext
public class JESTContext extends java.lang.Object implements JPAServletContext
An operational context combines apersistence context
and a HTTP execution context expressed as arequest
andresponse
.
This contextparses
the HTTP request URL to identity the command and thenexecutes
it.- Author:
- Pinaki Poddar
-
-
Field Summary
Fields Modifier and Type Field Description protected static PrototypeFactory<java.lang.String,JESTCommand>
_cf
static Localizer
_loc
protected Log
_log
protected MetaDataRepository
_repos
static java.lang.String
CONTEXT_ROOT
static java.lang.String
JEST_TEMPLATE
static char
QUERY_SEPARATOR
-
Constructor Summary
Constructors Constructor Description JESTContext(java.lang.String unit, OpenJPAEntityManagerFactory emf, javax.servlet.http.HttpServletRequest request, javax.servlet.http.HttpServletResponse response)
-
Method Summary
All Methods Static Methods Instance Methods Concrete Methods Modifier and Type Method Description void
execute()
Executes the request.static java.lang.String
getAction(java.lang.String path)
Gets the action from the given path.OpenJPAEntityManager
getPersistenceContext()
Gets the persistence context.java.lang.String
getPersistenceUnitName()
Gets the name of the persistence unit.javax.servlet.http.HttpServletRequest
getRequest()
Gets the request.java.lang.String
getRequestURI()
Get the requested URI.javax.servlet.http.HttpServletResponse
getResponse()
Gets the response.void
log(short level, java.lang.String message)
Logging message.ClassMetaData
resolve(java.lang.String alias)
Resolve the given alias to meta-data of the persistent type.
-
-
-
Field Detail
-
_repos
protected MetaDataRepository _repos
-
_log
protected Log _log
-
_cf
protected static PrototypeFactory<java.lang.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 java.lang.String CONTEXT_ROOT
- See Also:
- Constant Field Values
-
JEST_TEMPLATE
public static final java.lang.String JEST_TEMPLATE
- See Also:
- Constant Field Values
-
-
Constructor Detail
-
JESTContext
public JESTContext(java.lang.String unit, OpenJPAEntityManagerFactory emf, javax.servlet.http.HttpServletRequest request, javax.servlet.http.HttpServletResponse response)
-
-
Method Detail
-
getPersistenceUnitName
public java.lang.String getPersistenceUnitName()
Gets the name of the persistence unit.- Specified by:
getPersistenceUnitName
in interfaceJPAServletContext
-
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 interfaceJPAServletContext
-
getRequest
public javax.servlet.http.HttpServletRequest getRequest()
Gets the request.- Specified by:
getRequest
in interfaceJPAServletContext
-
getRequestURI
public java.lang.String getRequestURI()
Description copied from interface:JPAServletContext
Get the requested URI.- Specified by:
getRequestURI
in interfaceJPAServletContext
-
getResponse
public javax.servlet.http.HttpServletResponse getResponse()
Gets the response.- Specified by:
getResponse
in interfaceJPAServletContext
-
execute
public void execute() throws java.lang.Exception
Executes the request.
Execution starts with parsing therequest 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 entirerequest
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 tojest.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:
java.lang.Exception
-
getAction
public static java.lang.String getAction(java.lang.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(java.lang.String alias)
Description copied from interface:JPAServletContext
Resolve the given alias to meta-data of the persistent type.- Specified by:
resolve
in interfaceJPAServletContext
- 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.
-
log
public void log(short level, java.lang.String message)
Description copied from interface:JPAServletContext
Logging message.- Specified by:
log
in interfaceJPAServletContext
- Parameters:
level
- OpenJPA definedlog levels
. Invalid levels will print the message on console.message
- a printable message.
-
-