| Modifier and Type | Method and Description |
|---|---|
protected void |
JournalReader.checkRepositoryHash(String hash)
Compare the repository hash from the journal file with the current hash
obtained from the server.
|
static JournalWriter |
JournalWriter.getInstance(Map<String,String> parameters,
String role,
ServerInterface server)
Create an instance of the proper JournalWriter child class, as determined
by the server parameters.
|
abstract void |
JournalWriter.prepareToWriteJournalEntry()
Concrete sub-classes should insure that a message transport is ready, and
call {@link #writeDocumentHeader(XMLEventWriter) if needed.
|
abstract ConsumerJournalEntry |
JournalReader.readJournalEntry()
Concrete sub-classes should insure that their XMLEventReader is
positioned at the beginning of a JournalEntry, and call
JournalReader.readJournalEntry(XMLEventReader). |
protected ConsumerJournalEntry |
JournalReader.readJournalEntry(XMLEventReader reader)
Read a JournalEntry from the journal, to produce a
ConsumerJournalEntry instance. |
abstract void |
JournalWriter.shutdown() |
abstract void |
JournalReader.shutdown()
Concrete sub-classes should probably synchronize this method, since it
can be called either from the JournalConsumerThread or from the Server.
|
protected void |
JournalWriter.writeDocumentHeader(XMLEventWriter writer)
Subclasses should call this method to initialize a new Journal file.
|
protected void |
JournalWriter.writeDocumentHeader(XMLEventWriter writer,
String repositoryHash,
Date currentDate)
Subclasses should call this method to initialize a new Journal file, if
they already know the repository hash and the current date.
|
protected void |
JournalWriter.writeDocumentTrailer(XMLEventWriter writer)
Subclasses should call this method to close a Journal file.
|
abstract void |
JournalWriter.writeJournalEntry(CreatorJournalEntry journalEntry)
Concrete sub-classes should provide an XMLEventWriter, and call
#writeJournalEntry(XMLEventWriter), after which, they should
probably flush the XMLEventWriter. |
protected void |
JournalWriter.writeJournalEntry(CreatorJournalEntry journalEntry,
XMLEventWriter writer)
Format a JournalEntry object and write a JournalEntry tag to the journal.
|
| Constructor and Description |
|---|
JournalReader(Map<String,String> parameters,
String role,
JournalRecoveryLog recoveryLog,
ServerInterface server)
Concrete sub-classes must implement this constructor.
|
| Modifier and Type | Method and Description |
|---|---|
void |
JournalEntry.addArgument(String key,
InputStream stream)
If handed an InputStream as an argument, copy it to a temp file and store
that File in the arguments map instead.
|
InputStream |
JournalEntry.getStreamArgument(String name)
If they ask for an InputStream argument, get the File from the arguments
map and create an InputStream on that file.
|
Object |
CreatorJournalEntry.invokeAndClose(ManagementDelegate delegate,
JournalWriter writer)
A convenience method that invokes the management method and then closes
the JournalEntry, thereby cleaning up any temp files.
|
void |
ConsumerJournalEntry.invokeMethod(ManagementDelegate delegate,
JournalRecoveryLog recoveryLog) |
Object |
CreatorJournalEntry.invokeMethod(ManagementDelegate delegate,
JournalWriter writer)
Process the management method:
Check the operating mode - if we are in
Read-Only mode, this check will
throw an exception.
Prepare the writer in case we need to initialize a new file with a
repository hash.
Invoke the method on the ManagementDelegate.
Write the full journal entry, including any context changes from the
Management method.
These operations occur within a synchronized block. |
| Modifier and Type | Method and Description |
|---|---|
static Object |
JournalHelper.createInstanceAccordingToParameter(String parameterName,
Class<?>[] argClasses,
Object[] args,
Map<String,String> parameters)
Look in the system parameters and create an instance of the named class.
|
static Object |
JournalHelper.createInstanceFromClassname(String className,
Class<?>[] argClasses,
Object[] args)
Create an instance of the named class.
|
static boolean |
ParameterHelper.getOptionalBooleanParameter(Map<String,String> parameters,
String parameterName,
boolean defaultValue)
Get an optional boolean parameter.
|
static Date |
JournalHelper.parseDate(String date)
Parse a date from the journal.
|
static long |
ParameterHelper.parseParametersForAgeLimit(Map<String,String> parameters)
Get the age limit parameter (or let it default), and convert it to
milliseconds.
|
static long |
ParameterHelper.parseParametersForSizeLimit(Map<String,String> parameters)
Get the size limit parameter (or let it default), and convert it to
bytes.
|
static File |
ParameterHelper.parseParametersForWritableDirectory(Map<String,String> parameters,
String parameterName)
Look in the parameters for the path to a writable directory.
|
| Modifier and Type | Method and Description |
|---|---|
Object |
PutTempStreamMethod.invoke(ManagementDelegate delegate) |
Object |
ModifyDatastreamByValueMethod.invoke(ManagementDelegate delegate) |
abstract Object |
ManagementMethod.invoke(ManagementDelegate delegate)
Each concrete sub-class should use this method to pull the necessary
arguments from the map of the parent JournalEntry, call the appropriate
method on the ManagementDelegate, and perhaps store the result in the
context of the parent JournalEntry (depends on the sub-class).
|
Object |
IngestMethod.invoke(ManagementDelegate delegate) |
Object |
AddRelationshipMethod.invoke(ManagementDelegate delegate) |
| Modifier and Type | Method and Description |
|---|---|
protected void |
MulticastJournalWriter.checkTransportParametersForValidity()
"protected" so we can mock it out in unit tests.
|
abstract void |
Transport.closeFile()
Subclasses should implement this to close a logical journal file.
|
void |
LocalDirectoryTransport.closeFile()
On a request to close the file,
check that we are in a valid state,
close the
XMLEventWriter and the TransportOutputFile,
set the state.
|
long |
JournalEntrySizeEstimator.estimateSize(JournalEntry journalEntry)
Create a modified entry, minus any file arguments, and ask the
JournalWriter to format it so we can check the size.
|
abstract XMLEventWriter |
Transport.getWriter()
Subclasses should implement this to provite an
XMLEventWriter for
the JournalWriter to write to. |
XMLEventWriter |
LocalDirectoryTransport.getWriter()
Check that our current state is correct before filling a request for an
XMLEventWriter. |
abstract void |
Transport.openFile(String repositoryHash,
String filename,
Date currentDate)
Subclasses should implement this to create a new logical journal file.
|
void |
LocalDirectoryTransport.openFile(String repositoryHash,
String filename,
Date currentDate)
On a request to open the file,
check that we are in a valid state,
create the file,
create the
XMLEventWriter for use on the file,
ask the parent to write the header to the file,
set the state.
|
void |
MulticastJournalWriter.prepareToWriteJournalEntry()
Get ready to write a journal entry, insuring that we have an open file.
|
void |
Transport.setState(Transport.State newState)
Subclasses should call this to change the current state, after the
operation has been performed.
|
abstract void |
Transport.shutdown()
Subclasses should implement this to close any resources associated with
the Transport (unless it is already shut down).
|
void |
MulticastJournalWriter.shutdown()
Shut it down
|
void |
LocalDirectoryTransport.shutdown()
On a request to shut down,
check that we are in a valid state,
set the state.
If we have already shut down, a second call is not an error, but requires
no action.
|
void |
Transport.testStateChange(Transport.State desiredState)
Subclasses should call this before attempting an operation that will
change the current state, so if the change is not permitted, it will not
be performed.
|
protected void |
Transport.testWriterState()
Subclasses should call this before executing a
getWriter request. |
void |
TransportParent.writeDocumentHeader(XMLEventWriter writer,
String repositoryHash,
Date currentDate) |
void |
MulticastJournalWriter.writeDocumentHeader(XMLEventWriter writer,
String repositoryHash,
Date currentDate)
make this public so the Transport classes can call it via
TransportParent.
|
void |
TransportParent.writeDocumentTrailer(XMLEventWriter xmlWriter) |
void |
MulticastJournalWriter.writeDocumentTrailer(XMLEventWriter writer)
make this public so the Transport classes can call it via
TransportParent.
|
void |
MulticastJournalWriter.writeJournalEntry(CreatorJournalEntry journalEntry)
Write a journal entry.
|
void |
MulticastJournalWriter.writeJournalEntry(CreatorJournalEntry journalEntry,
XMLEventWriter writer)
make this public, so the TransportRequest class can call it.
|
| Constructor and Description |
|---|
LocalDirectoryTransport(Map<String,String> parameters,
boolean crucial,
TransportParent parent) |
MulticastJournalWriter(Map<String,String> parameters,
String role,
ServerInterface server) |
Transport(Map<String,String> parameters,
boolean crucial,
TransportParent parent) |
| Modifier and Type | Method and Description |
|---|---|
void |
WriteEntryRequest.performRequest(Transport transport) |
abstract void |
TransportRequest.performRequest(Transport transport) |
void |
ShutdownRequest.performRequest(Transport transport) |
void |
OpenFileRequest.performRequest(Transport transport) |
void |
CloseFileRequest.performRequest(Transport transport) |
| Modifier and Type | Method and Description |
|---|---|
void |
RmiTransport.closeFile()
check state, write the file closing, close/flush the writer, send the
close request, set state.
|
void |
RmiJournalReceiverInterface.closeFile() |
void |
RmiJournalReceiver.closeFile()
Request to close a file.
|
XMLEventWriter |
RmiTransport.getWriter()
check state, hand over to the writer
|
void |
RmiJournalReceiverInterface.openFile(String repositoryHash,
String filename) |
void |
RmiJournalReceiver.openFile(String repositoryHash,
String filename)
Request to open a file.
|
void |
RmiTransport.openFile(String repositoryHash,
String filename,
Date currentDate)
check state, send the open request, open a very special writer, write the
file opening, set state
|
void |
RmiTransport.shutdown()
check state, set state.
|
void |
RmiJournalReceiverInterface.writeText(String indexedHash,
String text) |
void |
RmiJournalReceiver.writeText(String indexedHash,
String text)
Request to write text to the current journal file.
|
| Constructor and Description |
|---|
RmiTransport(Map<String,String> parameters,
boolean crucial,
TransportParent parent) |
RmiTransport(Map<String,String> parameters,
boolean crucial,
TransportParent parent,
RmiJournalReceiverInterface rx) |
RmiTransportWriter(RmiJournalReceiverInterface receiver,
String repositoryHash,
String filename)
When the writer is created, open the connection to the receiver.
|
| Modifier and Type | Method and Description |
|---|---|
protected org.fcrepo.server.journal.readerwriter.multifile.JournalInputFile |
MultiFileJournalReader.openNextFile()
Look in the directory for files that match the prefix.
|
protected org.fcrepo.server.journal.readerwriter.multifile.JournalInputFile |
MultiFileFollowingJournalReader.openNextFile()
Ask for a new file, using the superclass method, but if none is found,
wait for a while and ask again.
|
protected org.fcrepo.server.journal.readerwriter.multifile.JournalInputFile |
LockingFollowingJournalReader.openNextFile()
Process the locking mechanism.
|
void |
MultiFileJournalWriter.prepareToWriteJournalEntry()
Before writing an entry, check to see whether we need to close the
current file and/or open a new one.
|
ConsumerJournalEntry |
MultiFileJournalReader.readJournalEntry() |
void |
MultiFileJournalWriter.shutdown()
Close the current journal file.
|
void |
MultiFileJournalReader.shutdown() |
void |
MultiFileFollowingJournalReader.shutdown()
If the server requests a shutdown, stop waiting the next file to come in.
|
void |
LockingFollowingJournalReader.shutdown()
If the server requests a shutdown, stop waiting the next file to come in.
|
void |
MultiFileJournalWriter.writeJournalEntry(CreatorJournalEntry journalEntry)
We've prepared for the entry, so just write it, but remember to
synchronize on the file, so we don't get an asynchronous close while
we're writing.
|
| Constructor and Description |
|---|
LockingFollowingJournalReader(Map<String,String> parameters,
String role,
JournalRecoveryLog recoveryLog,
ServerInterface server)
Require parameters for polling interval, lock request filename and lock
acceptance filename.
|
MultiFileFollowingJournalReader(Map<String,String> parameters,
String role,
JournalRecoveryLog recoveryLog,
ServerInterface server)
Do the super-class constructor, and then find the polling interval.
|
MultiFileJournalReader(Map<String,String> parameters,
String role,
JournalRecoveryLog recoveryLog,
ServerInterface server) |
MultiFileJournalWriter(Map<String,String> parameters,
String role,
ServerInterface server)
Parse the parameters to find out how we are operating.
|
| Modifier and Type | Method and Description |
|---|---|
void |
SingleFileJournalWriter.prepareToWriteJournalEntry()
Make sure that the file has been initialized before writing any journal
entries.
|
ConsumerJournalEntry |
SingleFileJournalReader.readJournalEntry()
Advance past any white space, and then see whether we have any more
JournalEntry tags.
|
void |
SingleFileJournalWriter.shutdown()
Add the document trailer and close the journal file.
|
void |
SingleFileJournalReader.shutdown()
On the first call, Just close the reader.
|
void |
SingleFileJournalWriter.writeJournalEntry(CreatorJournalEntry journalEntry)
Every journal entry just gets added to the file.
|
| Constructor and Description |
|---|
SingleFileJournalReader(Map<String,String> parameters,
String role,
JournalRecoveryLog recoveryLog,
ServerInterface server)
Get the name of the journal file from the server parameters, wrap it in
an XMLEventReader, and advance past the document header to the first
JournalEntry.
|
SingleFileJournalWriter(Map<String,String> parameters,
String role,
ServerInterface server)
Get the name of the journal file from the server parameters, create the
file, wrap it in an XMLEventWriter, and initialize it with a document
header.
|
| Modifier and Type | Method and Description |
|---|---|
protected JournalException |
AbstractXmlReader.getNotCharactersException(QName tagName,
XMLEvent event)
If we encounter an unexpected event when reading the journal file, create
an exception with all of the pertinent information.
|
protected JournalException |
AbstractXmlReader.getNotEndTagException(QName tagName,
XMLEvent event)
Complain when we were expecting a end tag, and didn't find it.
|
protected JournalException |
AbstractXmlReader.getNotNextMemberOrEndOfGroupException(QName groupTagName,
QName memberTagName,
XMLEvent event)
While traversing a group of member tags, we expected either the start of
another member tag, or the end of the group.
|
protected JournalException |
AbstractXmlReader.getNotStartTagException(QName tagName,
XMLEvent event)
Complain when we were expecting a start tag, and didn't find it.
|
| Modifier and Type | Method and Description |
|---|---|
protected String |
AbstractXmlReader.getRequiredAttributeValue(StartElement start,
QName attributeName)
Get the value of a given attribute from this start tag, or complain if
it's not there.
|
protected String |
AbstractXmlReader.readCharactersUntilEndTag(XMLEventReader reader,
QName tagName)
Loop through a series of character events, accumulating the data into a
String.
|
JournalEntryContext |
ContextXmlReader.readContext(XMLEventReader reader)
Read the context tax and populate a JournalEntryContext object.
|
protected XMLEvent |
AbstractXmlReader.readStartTag(XMLEventReader reader,
QName tagName)
Read the next event and complain if it is not the Start Tag that we
expected.
|
Copyright © 2013 DuraSpace. All Rights Reserved.