org.eaglei.repository
Class Lifecycle

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

public 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
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(java.util.Date lm)
          Update the repo's global "last modified" timestamp, changing it ONLY if the profferred value is later.
 
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(java.util.Date lm)
Update the repo's global "last modified" timestamp, changing it ONLY if the profferred value is later. It should reflect the latest last-modified time on ANY resource instance.

Parameters:
lm - date of new most recent dcterms:modified

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.