Search in sources :

Example 1 with WorkspaceRecord

use of org.apache.jackrabbit.core.cluster.WorkspaceRecord in project jackrabbit by apache.

the class SearchIndex method getChangeLogRecords.

/**
     * Polls the underlying journal for events of the type ChangeLogRecord that
     * happened after a given revision, on a given workspace.
     *
     * @param revision
     *            starting revision
     * @param workspace
     *            the workspace name
     * @return
     */
private List<ChangeLogRecord> getChangeLogRecords(long revision, final String workspace) {
    log.debug("Get changes from the Journal for revision {} and workspace {}.", revision, workspace);
    ClusterNode cn = getContext().getClusterNode();
    if (cn == null) {
        return Collections.emptyList();
    }
    Journal journal = cn.getJournal();
    final List<ChangeLogRecord> events = new ArrayList<ChangeLogRecord>();
    ClusterRecordDeserializer deserializer = new ClusterRecordDeserializer();
    RecordIterator records = null;
    try {
        records = journal.getRecords(revision);
        while (records.hasNext()) {
            Record record = records.nextRecord();
            if (!record.getProducerId().equals(cn.getId())) {
                continue;
            }
            ClusterRecord r = null;
            try {
                r = deserializer.deserialize(record);
            } catch (JournalException e) {
                log.error("Unable to read revision '" + record.getRevision() + "'.", e);
            }
            if (r == null) {
                continue;
            }
            r.process(new ClusterRecordProcessor() {

                public void process(ChangeLogRecord record) {
                    String eventW = record.getWorkspace();
                    if (eventW != null ? eventW.equals(workspace) : workspace == null) {
                        events.add(record);
                    }
                }

                public void process(LockRecord record) {
                }

                public void process(NamespaceRecord record) {
                }

                public void process(NodeTypeRecord record) {
                }

                public void process(PrivilegeRecord record) {
                }

                public void process(WorkspaceRecord record) {
                }
            });
        }
    } catch (JournalException e1) {
        log.error(e1.getMessage(), e1);
    } finally {
        if (records != null) {
            records.close();
        }
    }
    return events;
}
Also used : ClusterNode(org.apache.jackrabbit.core.cluster.ClusterNode) RecordIterator(org.apache.jackrabbit.core.journal.RecordIterator) ClusterRecord(org.apache.jackrabbit.core.cluster.ClusterRecord) JournalException(org.apache.jackrabbit.core.journal.JournalException) ArrayList(java.util.ArrayList) LockRecord(org.apache.jackrabbit.core.cluster.LockRecord) NamespaceRecord(org.apache.jackrabbit.core.cluster.NamespaceRecord) Journal(org.apache.jackrabbit.core.journal.Journal) ClusterRecordDeserializer(org.apache.jackrabbit.core.cluster.ClusterRecordDeserializer) WorkspaceRecord(org.apache.jackrabbit.core.cluster.WorkspaceRecord) NodeTypeRecord(org.apache.jackrabbit.core.cluster.NodeTypeRecord) PrivilegeRecord(org.apache.jackrabbit.core.cluster.PrivilegeRecord) ClusterRecordProcessor(org.apache.jackrabbit.core.cluster.ClusterRecordProcessor) ChangeLogRecord(org.apache.jackrabbit.core.cluster.ChangeLogRecord) ClusterRecord(org.apache.jackrabbit.core.cluster.ClusterRecord) Record(org.apache.jackrabbit.core.journal.Record) NamespaceRecord(org.apache.jackrabbit.core.cluster.NamespaceRecord) ChangeLogRecord(org.apache.jackrabbit.core.cluster.ChangeLogRecord) PrivilegeRecord(org.apache.jackrabbit.core.cluster.PrivilegeRecord) NodeTypeRecord(org.apache.jackrabbit.core.cluster.NodeTypeRecord) LockRecord(org.apache.jackrabbit.core.cluster.LockRecord) WorkspaceRecord(org.apache.jackrabbit.core.cluster.WorkspaceRecord)

Aggregations

ArrayList (java.util.ArrayList)1 ChangeLogRecord (org.apache.jackrabbit.core.cluster.ChangeLogRecord)1 ClusterNode (org.apache.jackrabbit.core.cluster.ClusterNode)1 ClusterRecord (org.apache.jackrabbit.core.cluster.ClusterRecord)1 ClusterRecordDeserializer (org.apache.jackrabbit.core.cluster.ClusterRecordDeserializer)1 ClusterRecordProcessor (org.apache.jackrabbit.core.cluster.ClusterRecordProcessor)1 LockRecord (org.apache.jackrabbit.core.cluster.LockRecord)1 NamespaceRecord (org.apache.jackrabbit.core.cluster.NamespaceRecord)1 NodeTypeRecord (org.apache.jackrabbit.core.cluster.NodeTypeRecord)1 PrivilegeRecord (org.apache.jackrabbit.core.cluster.PrivilegeRecord)1 WorkspaceRecord (org.apache.jackrabbit.core.cluster.WorkspaceRecord)1 Journal (org.apache.jackrabbit.core.journal.Journal)1 JournalException (org.apache.jackrabbit.core.journal.JournalException)1 Record (org.apache.jackrabbit.core.journal.Record)1 RecordIterator (org.apache.jackrabbit.core.journal.RecordIterator)1