blob: a69fc40a09fa31e7a8d1b06c5cb777a0e5e0deda [file] [log] [blame]
package org.ofbiz.jcr.services;
import java.util.Date;
import java.util.Map;
import javax.jcr.Node;
import javax.jcr.RepositoryException;
import javax.jcr.Session;
import javax.jcr.UnsupportedRepositoryOperationException;
import javax.jcr.version.VersionManager;
import org.ofbiz.base.util.Debug;
import org.ofbiz.entity.GenericValue;
import org.ofbiz.jcr.access.jackrabbit.JackrabbitRepositoryAccessor;
import org.ofbiz.jcr.loader.JCRFactoryUtil;
import org.ofbiz.jcr.orm.jackrabbit.JackrabbitNews;
import org.ofbiz.service.DispatchContext;
import org.ofbiz.service.ServiceUtil;
public class JackrabbitServices {
private static String module = JackrabbitServices.class.getName();
public static Map<String, Object> determineJackrabbitRepositorySpeed(DispatchContext ctx, Map<String, Object> context) throws UnsupportedRepositoryOperationException, RepositoryException {
Map<String, Object> result = ServiceUtil.returnSuccess();
GenericValue userLogin = (GenericValue) context.get("userLogin");
Integer maxNodes = (Integer) context.get("maxNodes");
Long start = 0l;
Long diff = 0l;
Session session = JCRFactoryUtil.getSession();
VersionManager vm = session.getWorkspace().getVersionManager();
start = new Date().getTime();
for (int i = 0; i <= maxNodes; i++) {
try {
// add a node
Node n = session.getRootNode().addNode("__Speedtest_Node-" + i);
n.addMixin("mix:versionable");
n.setProperty("anyProperty", "Blah");
session.save();
vm.checkin(n.getPath());
vm.checkout("/__Speedtest_Node-" + i);
// remove the node
session.removeItem("/__Speedtest_Node-" + i);
session.save();
} catch (Exception e) {
Debug.logError(e, module);
}
}
session.logout();
diff = (new Date().getTime() - start);
result.put("repositoryDirectAccessTime", diff.toString());
JackrabbitRepositoryAccessor access = new JackrabbitRepositoryAccessor(userLogin);
start = new Date().getTime();
for (int i = 0; i <= maxNodes; i++) {
try {
JackrabbitNews news = new JackrabbitNews("/__Speedtest_Node-" + i, "de", "", null, "");
access.storeContentObject(news);
access.removeContentObject("/__Speedtest_Node-" + i);
} catch (Exception e) {
Debug.logError(e, module);
}
}
access.closeAccess();
diff = (new Date().getTime() - start);
result.put("repositoryOcmAccessTime", diff.toString());
return result;
}
}