org.apache.directory.server.core.changelog
Interface ChangeLog

All Known Implementing Classes:
DefaultChangeLog

public interface ChangeLog

A facade for the change log subsystem. It exposes the functionality needed to interact with the facility to query for changes, take snapshots, and revert the server to an earlier revision.

Version:
$Rev$, $Date$
Author:
Apache Directory Project

Method Summary
 void destroy()
           
 ChangeLogSearchEngine getChangeLogSearchEngine()
          Gets the change log query engine which would be used to ask questions about what changed, when, how and by whom.
 ChangeLogStore getChangeLogStore()
           
 long getCurrentRevision()
          Gets the current revision for the server.
 Tag getLatest()
           
 TagSearchEngine getTagSearchEngine()
          Gets the tag search engine used to query the snapshots taken.
 void init(DirectoryService service)
           
 boolean isEnabled()
          Checks whether or not the change log has been enabled to track changes.
 boolean isExposeChangeLog()
           
 boolean isLogSearchSupported()
          Returns whether or not this ChangeLogService supports searching for changes.
 boolean isTagSearchSupported()
          Returns whether or not this ChangeLogService supports searching for snapshot tags.
 boolean isTagStorageSupported()
          Returns whether or not this ChangeLogService stores snapshot tags.
 ChangeLogEvent log(LdapPrincipal principal, org.apache.directory.shared.ldap.ldif.LdifEntry forward, org.apache.directory.shared.ldap.ldif.LdifEntry reverse)
          Records a change as a forward LDIF, a reverse change to revert the change and the authorized principal triggering the revertable change event.
 ChangeLogEvent log(LdapPrincipal principal, org.apache.directory.shared.ldap.ldif.LdifEntry forward, java.util.List<org.apache.directory.shared.ldap.ldif.LdifEntry> reverses)
          Records a change as a forward LDIF, some reverse changes to revert the change and the authorized principal triggering the revertable change event.
 void setChangeLogStore(ChangeLogStore store)
           
 void setEnabled(boolean enabled)
           
 void setExposeChangeLog(boolean exposeChangeLog)
          Exposes the contents of ChangeLog to clients if set to true.
 void setPartitionSuffix(java.lang.String suffix)
          The prefix of the partition.
 void setRevisionsContainerName(java.lang.String revContainerName)
          The name of the revisions container under the partition.
 void setTagsContainerName(java.lang.String tagContainerName)
          The name of the tags container under the partition.
 void sync()
           
 Tag tag()
          Creates a snapshot of the server at the current revision.
 Tag tag(long revision)
          Creates a tag for a snapshot of the server in a specific state at a revision.
 Tag tag(long revision, java.lang.String description)
          Creates a tag for a snapshot of the server in a specific state at a revision.
 Tag tag(java.lang.String description)
          Creates a snapshot of the server at the current revision.
 

Method Detail

isEnabled

boolean isEnabled()
Checks whether or not the change log has been enabled to track changes.

Returns:
true if the change log is tracking changes, false otherwise

setEnabled

void setEnabled(boolean enabled)

getChangeLogStore

ChangeLogStore getChangeLogStore()

setChangeLogStore

void setChangeLogStore(ChangeLogStore store)

getCurrentRevision

long getCurrentRevision()
                        throws java.lang.Exception
Gets the current revision for the server.

Returns:
the current revision
Throws:
java.lang.Exception - if there is a problem accessing this information

log

ChangeLogEvent log(LdapPrincipal principal,
                   org.apache.directory.shared.ldap.ldif.LdifEntry forward,
                   org.apache.directory.shared.ldap.ldif.LdifEntry reverse)
                   throws java.lang.Exception
Records a change as a forward LDIF, a reverse change to revert the change and the authorized principal triggering the revertable change event.

Parameters:
principal - the authorized LDAP principal triggering the change
forward - LDIF of the change going to the next state
reverse - LDIF (anti-operation): the change required to revert this change
Returns:
the new revision reached after having applied the forward LDIF
Throws:
java.lang.Exception - if there are problems logging the change

log

ChangeLogEvent log(LdapPrincipal principal,
                   org.apache.directory.shared.ldap.ldif.LdifEntry forward,
                   java.util.List<org.apache.directory.shared.ldap.ldif.LdifEntry> reverses)
                   throws java.lang.Exception
Records a change as a forward LDIF, some reverse changes to revert the change and the authorized principal triggering the revertable change event.

Parameters:
principal - the authorized LDAP principal triggering the change
forward - LDIF of the change going to the next state
reverses - LDIF (anti-operation): the changes required to revert this change
Returns:
the new revision reached after having applied the forward LDIF
Throws:
java.lang.Exception - if there are problems logging the change

isLogSearchSupported

boolean isLogSearchSupported()
Returns whether or not this ChangeLogService supports searching for changes.

Returns:
true if log searching is supported, false otherwise

isTagSearchSupported

boolean isTagSearchSupported()
Returns whether or not this ChangeLogService supports searching for snapshot tags.

Returns:
true if snapshot tag searching is supported, false otherwise

isTagStorageSupported

boolean isTagStorageSupported()
Returns whether or not this ChangeLogService stores snapshot tags.

Returns:
true if this ChangeLogService supports tag storage, false otherwise

getChangeLogSearchEngine

ChangeLogSearchEngine getChangeLogSearchEngine()
Gets the change log query engine which would be used to ask questions about what changed, when, how and by whom. It may not be supported by all implementations. Some implementations may simply log changes without direct access to those changes from within the server.

Returns:
the change log query engine
Throws:
java.lang.UnsupportedOperationException - if the change log is not searchable

getTagSearchEngine

TagSearchEngine getTagSearchEngine()
Gets the tag search engine used to query the snapshots taken. If this ChangeLogService does not support a taggable and searchable store then an UnsupportedOperationException will result.

Returns:
the snapshot query engine for this store
Throws:
java.lang.UnsupportedOperationException - if the tag searching is not supported

tag

Tag tag(long revision)
        throws java.lang.Exception
Creates a tag for a snapshot of the server in a specific state at a revision. If the ChangeLog has a TaggableChangeLogStore then the tag is stored. If it does not then it's up to callers to track this tag since it will not be stored by this service.

Parameters:
revision - the revision to tag the snapshot
Returns:
the Tag associated with the revision
Throws:
java.lang.Exception - if there is a problem taking a tag
java.lang.IllegalArgumentException - if the revision is out of range (less than 0 and greater than the current revision)

tag

Tag tag(long revision,
        java.lang.String description)
        throws java.lang.Exception
Creates a tag for a snapshot of the server in a specific state at a revision. If the ChangeLog has a TaggableChangeLogStore then the tag is stored. If it does not then it's up to callers to track this tag since it will not be stored by this service.

Parameters:
revision - the revision to tag the snapshot
description - some information about what the snapshot tag represents
Returns:
the Tag associated with the revision
Throws:
java.lang.Exception - if there is a problem taking a tag
java.lang.IllegalArgumentException - if the revision is out of range (less than 0 and greater than the current revision)

tag

Tag tag(java.lang.String description)
        throws java.lang.Exception
Creates a snapshot of the server at the current revision.

Parameters:
description - some information about what the snapshot tag represents
Returns:
the revision at which the tag is created
Throws:
java.lang.Exception - if there is a problem taking a tag

tag

Tag tag()
        throws java.lang.Exception
Creates a snapshot of the server at the current revision.

Returns:
the revision at which the tag is created
Throws:
java.lang.Exception - if there is a problem taking a tag

getLatest

Tag getLatest()
              throws java.lang.Exception
Throws:
java.lang.Exception

init

void init(DirectoryService service)
          throws java.lang.Exception
Throws:
java.lang.Exception

sync

void sync()
          throws java.lang.Exception
Throws:
java.lang.Exception

destroy

void destroy()
             throws java.lang.Exception
Throws:
java.lang.Exception

setExposeChangeLog

void setExposeChangeLog(boolean exposeChangeLog)
Exposes the contents of ChangeLog to clients if set to true. Default setting is false.

Parameters:
exposeChangeLog - true to expose the contents, false to not expose.

isExposeChangeLog

boolean isExposeChangeLog()

setPartitionSuffix

void setPartitionSuffix(java.lang.String suffix)
The prefix of the partition. Default value is ou=changelog.

Parameters:
suffix - suffix value to be set for the changelog partition

setRevisionsContainerName

void setRevisionsContainerName(java.lang.String revContainerName)
The name of the revisions container under the partition. Default value is ou=revisions

Parameters:
revContainerName - the name of the revisions container

setTagsContainerName

void setTagsContainerName(java.lang.String tagContainerName)
The name of the tags container under the partition. Default value is ou=tags

Parameters:
tagContainerName - the name of the revisions container


Copyright © 2003-2009 Apache Software Foundation. All Rights Reserved.