/*
* Copyright (c) 2013 Nuxeo SA (http://nuxeo.com/) and others.
*
* All rights reserved. This program and the accompanying materials
* are made available under the terms of the Eclipse Public License v1.0
* which accompanies this distribution, and is available at
* http://www.eclipse.org/legal/epl-v10.html
*
* Contributors:
* Florent Guillaume
*/
package org.nuxeo.ecm.core.storage.sql.listeners;
import org.nuxeo.ecm.core.api.ClientException;
import org.nuxeo.ecm.core.api.ConcurrentUpdateException;
import org.nuxeo.ecm.core.api.CoreSession;
import org.nuxeo.ecm.core.api.DocumentModel;
import org.nuxeo.ecm.core.api.event.DocumentEventTypes;
import org.nuxeo.ecm.core.event.Event;
import org.nuxeo.ecm.core.event.EventBundle;
import org.nuxeo.ecm.core.event.EventContext;
import org.nuxeo.ecm.core.event.PostCommitEventListener;
import org.nuxeo.ecm.core.event.impl.DocumentEventContext;
public class DummyAsyncRetryListener implements PostCommitEventListener {
protected static int countHandled;
protected static int countOk;
@Override
public void handleEvent(EventBundle events) throws ClientException {
countHandled++;
// accessing the iterator reconnects the events
DocumentModel doc = null;
for (Event event : events) {
EventContext context = event.getContext();
if (!(context instanceof DocumentEventContext)) {
continue;
}
DocumentEventContext documentEventContext = (DocumentEventContext) context;
doc = documentEventContext.getSourceDocument();
}
if (countHandled == 1) {
// simulate error
throw new ConcurrentUpdateException();
}
if (doc != null
&& ((String) doc.getPropertyValue("dc:title")).startsWith("title")) {
countOk++;
}
}
public static void clear() {
countHandled = 0;
countOk = 0;
}
public static int getCountHandled() {
return countHandled;
}
public static int getCountOk() {
return countOk;
}
}