Overview
The JCR Inspector is a small tool to use when debugging and doing JCR development inside of Sakai. It roughly allows you to:
- View Nodes and their properties
- View the high level repository information
- Query the repository with XPATH and SQL
- Start and stop the CHS migration code that is under development
- Dynamically swap the Content Hosting backend for Sakai during runtime (swaps between the original CHS implementation and the JCR implementation).
It currently requires that you have Content Branch SAK-12105 installed (or at least just the API's from it). Sorry, these need to be factored out somehow. Obviously, it requires the sakai-jcr api's to be installed and one of the JCR implementations. (JackRabbit, Xythos, etc). It has only been tested on JackRabbit so far.
It's important to note that this was developed solely as an aid to help working with JCR inside of Sakai. The code is fairly low quality, a large portion of the UI broken, etc. However, it is super useful, so it is slowly getting better.
Installation
There is only a Maven 2 build, but the deployed sakai-jcrinspector-tool.war should work fine inside of either Sakai 2.4.x or trunk.
svn co https://source.sakaiproject.org/contrib/jcr/jcrinspector/trunk jcrinspector mvn clean install sakai:deploy -f jcrinspector/pom.xml
Comments (1)
Jun 19, 2008
John Bush says:
is this tool the only way to trigger migration to JCR right now? If so, it doesn...is this tool the only way to trigger migration to JCR right now? If so, it doesn't appear to be working, I get this when I click on the DB -> JCR Conversion link.
Target exception of class java.lang.IllegalArgumentException
Successive lines until stack trace show causes progressing to exception site:
Error setting dependency requestThreadServiceSwitcher of bean org.sakaiproject.jcrinspector.producers.ImportLegacyCHSProducer
--> Error setting child requestThreadServiceSwitcher of parent org.sakaiproject.jcrinspector.producers.ImportLegacyCHSProducer@80189e to value org.sakaiproject.content.impl.DbContentService@3b8acc
--> argument type mismatch
java.lang.IllegalArgumentException: argument type mismatch
at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:39)
at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:25)
at java.lang.reflect.Method.invoke(Method.java:585)
at uk.org.ponder.saxalizer.SAXAccessMethod.setChildObject(SAXAccessMethod.java:248)
at uk.org.ponder.rsac.RSACBeanLocatorImpl.createBean(RSACBeanLocatorImpl.java:529)
at uk.org.ponder.rsac.RSACBeanLocatorImpl.getLocalBean(RSACBeanLocatorImpl.java:345)
at uk.org.ponder.rsac.RSACBeanLocatorImpl.getBean(RSACBeanLocatorImpl.java:376)
at uk.org.ponder.rsac.PerRequestInfo$1.locateBean(PerRequestInfo.java:49)
at uk.org.ponder.rsf.view.support.AutoComponentProducerManager.wrapProducer(AutoComponentProducerManager.java:104)
at uk.org.ponder.rsf.view.support.ConcreteViewResolver.mapProducers(ConcreteViewResolver.java:181)
at uk.org.ponder.rsf.view.support.ConcreteViewResolver.getProducers(ConcreteViewResolver.java:174)
at uk.org.ponder.rsf.view.support.ViewCollector.fillComponents(ViewCollector.java:50)
at uk.org.ponder.rsf.view.support.LayoutCollector.fillComponents(LayoutCollector.java:68)
at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:39)
at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:25)
at java.lang.reflect.Method.invoke(Method.java:585)