org.eaglei.repository
Class Lifecycle

java.lang.Object
  extended by org.eaglei.repository.Lifecycle

public final class Lifecycle
extends java.lang.Object

This is a singleton class that encompasses the application state. It is created and destroyed by Java Servlet Container webapp lifecycle events, through initialize() and destroy() hooks.

Version:
$Id: $
Author:
Larry Stone Started April 2010

Field Summary
static java.util.Date STARTUP
          Mark the startup time for display in admin page, etc.
 
Constructor Summary
Lifecycle(javax.servlet.ServletContext sc)
          Constructor for Lifecycle.
 
Method Summary
 void clearLastModified(javax.servlet.http.HttpServletRequest request)
          Reset the double-buffered new value for the global "last modified" timestamp, in case a transaction gets rolled back.
 void commitLastModified(javax.servlet.http.HttpServletRequest request)
          Really Update the repo's global "last modified" timestamp to the cached double-buffered value.
static void decacheAll()
          Call the decache() method of all classes with the HasContentCache annotation.
 void destroy(javax.servlet.ServletContext sc)
          destroy - shut down this application and release resources.
 void finishInitialize()
          finishInitialize - setup at construct time
static java.lang.String getGraphInitFile(org.openrdf.model.URI uri)
          Get the init file (relative resource path) for given graph URI.
static java.lang.String getInitFileVersion(org.openrdf.model.URI uri)
          Gets the version that would be set by loading the RDF from given init file; this is the value of owl:versionInfo on the given URI, if any, in the serialized RDF fiel found on resourcePath.
static Lifecycle getInstance()
          Get the singleton instance.
 java.util.Date getLastModified()
          Gets the most recent "last modified" timestamp applied to provenance metadata.
 org.openrdf.repository.Repository getSesameRepository()
          getSesameRepository
 java.io.Reader getWebappResourceAsReader(java.lang.String path)
          Read a resource file out of the webapp, path is relative to webapp root and MUST NOT begin with '/' -- e.g.
static void initialize(javax.servlet.ServletContext sc)
          Web app initialization hook that initiates the bootstrap process: 1.
 boolean isSessionStale(javax.servlet.http.HttpSession session)
          Compare current webapp generation with value (if any) cached in session, also update session's generation to current.
 void loadEmptyGraphFromInit(org.openrdf.repository.RepositoryConnection rc, org.openrdf.model.URI graphURI, boolean ifEmpty)
          Initialize an empty named graph from its registered "initial contents" file (a webapp resource).
 void notifyDataReplaced()
          Hook to signal to the application that all RDF data has been replaced, e.g.
 void updateLastModified(javax.servlet.http.HttpServletRequest request, java.util.Date lm)
          Update the PER-REQUEST CACHED date that MIGHT eventually be used to update the repo's global "last modified" timestamp.
 
Methods inherited from class java.lang.Object
clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait
 

Field Detail

STARTUP

public static final java.util.Date STARTUP
Mark the startup time for display in admin page, etc.

Constructor Detail

Lifecycle

public Lifecycle(javax.servlet.ServletContext sc)

Constructor for Lifecycle.

Parameters:
sc - a ServletContext object.
Method Detail

getInstance

public static Lifecycle getInstance()
Get the singleton instance. Will return null unless the initialization has run.

Returns:
the singleton, a Lifecycle object.

initialize

public static void initialize(javax.servlet.ServletContext sc)
Web app initialization hook that initiates the bootstrap process: 1. find and load the configuration properties file. 2. configure log4j 3. set up sesame repository based on configs

Parameters:
sc - the ServletContext object.

finishInitialize

public void finishInitialize()
                      throws java.io.IOException,
                             org.openrdf.OpenRDFException

finishInitialize - setup at construct time

Throws:
java$io$IOException - if any.
org.openrdf.OpenRDFException - if any.
java.io.IOException

destroy

public void destroy(javax.servlet.ServletContext sc)
             throws org.openrdf.repository.RepositoryException

destroy - shut down this application and release resources.

Parameters:
sc - a ServletContext object.
Throws:
org.openrdf.repository.RepositoryException - if any.

getInitFileVersion

public static java.lang.String getInitFileVersion(org.openrdf.model.URI uri)
                                           throws java.io.IOException,
                                                  org.openrdf.rio.RDFParseException,
                                                  org.openrdf.rio.RDFHandlerException
Gets the version that would be set by loading the RDF from given init file; this is the value of owl:versionInfo on the given URI, if any, in the serialized RDF fiel found on resourcePath.

Parameters:
uri - the uri of the graph, subject of owl:versionInfo
Returns:
the exact content of the versionInfo literal or null if none found.
Throws:
java.io.IOException
org.openrdf.rio.RDFParseException
org.openrdf.rio.RDFHandlerException

getGraphInitFile

public static java.lang.String getGraphInitFile(org.openrdf.model.URI uri)
Get the init file (relative resource path) for given graph URI.

Returns:
relative path or null if there is none for this URI.

loadEmptyGraphFromInit

public void loadEmptyGraphFromInit(org.openrdf.repository.RepositoryConnection rc,
                                   org.openrdf.model.URI graphURI,
                                   boolean ifEmpty)
                            throws org.openrdf.repository.RepositoryException,
                                   java.io.IOException,
                                   org.openrdf.rio.RDFParseException
Initialize an empty named graph from its registered "initial contents" file (a webapp resource). Typically this only actually loads the graph during the initial bootstrap of a new repo when the entire Sesame repository is empty, although it is also used by some upgrade procedures.

Parameters:
rc - the sesame repo
graphURI - name of the graph
ifEmpty - when true only load an empty graph
Throws:
org.openrdf.repository.RepositoryException
java.io.IOException
org.openrdf.rio.RDFParseException

getSesameRepository

public org.openrdf.repository.Repository getSesameRepository()
                                                      throws javax.servlet.ServletException

getSesameRepository

Returns:
the Repository object.
Throws:
javax.servlet.ServletException - if any.

notifyDataReplaced

public void notifyDataReplaced()
Hook to signal to the application that all RDF data has been replaced, e.g. after restoring a complete backup of all graphs. This is responsible for updating or invalidating all memory caches that depend on the RDF contents.


isSessionStale

public boolean isSessionStale(javax.servlet.http.HttpSession session)
Compare current webapp generation with value (if any) cached in session, also update session's generation to current.

Parameters:
session - a HttpSession object.
Returns:
a boolean, true if the session is "stale" (e.g. after a global restore of RDF db)

getWebappResourceAsReader

public java.io.Reader getWebappResourceAsReader(java.lang.String path)
                                         throws javax.servlet.ServletException
Read a resource file out of the webapp, path is relative to webapp root and MUST NOT begin with '/' -- e.g. "repository/styles/foo.xsl".

Parameters:
path - relative path to resource file, a String object.
Returns:
a Reader object open on the resource, or null if not available.
Throws:
javax.servlet.ServletException

updateLastModified

public void updateLastModified(javax.servlet.http.HttpServletRequest request,
                               java.util.Date lm)
Update the PER-REQUEST CACHED date that MIGHT eventually be used to update the repo's global "last modified" timestamp. Change it ONLY if the profferred value is later. It should reflect the latest last-modified time on ANY resource instance. We need this double-buffer because lastModified should NOT be changed until AFTER the concurrent RDF changes are committed. See the cleanup route in RepositoryServlet which handles that. NOTE that this change will not be visible until commitLastModified is called, and can be undone by clearLastModified.

Parameters:
request - the current servlet request
lm - date of new most recent dcterms:modified

clearLastModified

public void clearLastModified(javax.servlet.http.HttpServletRequest request)
Reset the double-buffered new value for the global "last modified" timestamp, in case a transaction gets rolled back.

Parameters:
request - the current servlet request

commitLastModified

public void commitLastModified(javax.servlet.http.HttpServletRequest request)
Really Update the repo's global "last modified" timestamp to the cached double-buffered value. This MUST ONLY be called after the relevant RDF changes to resources have been committed.

Parameters:
request - the current servlet request

getLastModified

public java.util.Date getLastModified()
Gets the most recent "last modified" timestamp applied to provenance metadata.

Returns:
date of most recent dcterms:modified, or repository startup time by default

decacheAll

public static void decacheAll()
Call the decache() method of all classes with the HasContentCache annotation. This gets called when the RDF database was replaced so in-memory caches must be invalidated.



Copyright © 2009-2011 Eagle-I. All Rights Reserved.