Yes, I'm always deleting the indexes before invoking my tests. I will download the new DerefTest and check the differences with my application so I could detect what I'm doing wrong.

And sure, no problem with reusing my test .

Thanks Marcel.

Alvaro

--
Alvaro Gonzalez de Paz
Germinus XXI
http://www.germinus.com

Avda. de Manoteras, 44. 2ยช planta.
28050 - Madrid (Spain)
Tel (+34) 91 296 12 34
Fax (+34) 91 296 12 30



Marcel Reutegger wrote:

Hi Alvaro,

thanks for testing the rc3 release of jackrabbit.

I've slightly rewritten your test case and added it to the o.a.j.core.query.DerefTest test class in jackrabbit (I hope you don't mind...)

The test runs fine in trunk also against the rc3.

Could you please check that you are working with a clean index. rc3 is not 100% compatible with any previous 'release'. You have to delete all the indexes and let jackrabbit re-index the workspaces. If I remember correctly this is also mentioned in the release notes, but I'm not sure.

regards
 marcel

Alvaro Gonzalez wrote:

Hi all,
I have downloaded jackrabbit-1.0-rc3 and tested with my application. Almost everything works fine but i have discovered a problem with jcr:deref queries (yes I am "jcr:deref-boy" :- )). In my application there are several nodes that have a reference property to a version of a particular node (actually a reference to jcr:frozenNode). Prior to 1.0-rc3 version works fine, but with the last release a query searching for this nodes returns 0 results. I don't know if it is correct to use references to nodes in the version workspace or it is a problem of the Query Manager.

I have tested it with version 0.9-rc1-incubating and with some house-made versions and it worked well.

Here is a a JUnit method that tests this issue:


public void testVersionDerefSearch() throws Exception { Session currentSession = JCRUtil.currentSession();
       Node myRootNode = currentSession.getRootNode().addNode("root");
       currentSession.save();
       try {
Node referenced = myRootNode.addNode("referenced"); referenced.addMixin("mix:versionable");
           currentSession.save();
           Version version = referenced.checkin();
Node referencedVersionNode = version.getNode("jcr:frozenNode"); Value referenceValue = currentSession.getValueFactory().createValue(referencedVersionNode);
           Node referencer  = myRootNode.addNode("referencer");
           referencer.setProperty("aReference",referenceValue);
           currentSession.save();
String query="/"+myRootNode.getPath()+"/[EMAIL PROTECTED]/jcr:deref(@aReference,'*')"; QueryManager qm = currentSession.getWorkspace().getQueryManager();
           Query q = qm.createQuery(query, Query.XPATH);
           QueryResult qr =  q.execute();
           NodeIterator ni = qr.getNodes();
           assertEquals("Must find one result in query",1,ni.getSize());
           while (ni.hasNext()) {
               Node node = (Node) ni.next();
assertTrue(node.getProperty("jcr:frozenUuid").getString().equals(referenced.getUUID()));
           }                  } finally {
           myRootNode.remove();
       }
   }


Regards,
 Alvaro




Reply via email to