Hi there!

This one is good! ;D
I have nodetypes as follows:

Hierarchy:

CMSObject
 Hierarchy
   Page
   Fragment

We only create nodes of type Page and Fragment and a page can contain
several fragments because hierarchy node specifies that one or more
CMSObjects can be children of nodes of it. And of course nodes that
extends it.

Well I can save a page with it's fragments. That works well. just adding
them as childrens. That's great!

And I can retrieve the page also! Normal eh? But not! This piece of code
fails:
Page page = pageManager.getPage("/test002.psml");
System.out.println("This is page " + page.getId());

 // Temp test
 JetspeedPageImpl jspage = (JetspeedPageImpl) page;

---->>> Here it fails: Because proxy inside the collection
 for(Iterator<JetspeedCMSObject> it = jspage.getChildren().iterator();
it.hasNext(); )
{
        JetspeedFragmentImpl child = (JetspeedFragmentImpl) it.next();
        if(child instanceof JetspeedFragmentImpl)
        {
                System.out.println("Is Fragment: " + child.getId());
        }
}

And it fails because the proxy fails to load childrens on first try.
Don't know why because of log problem I have (I have open another
thread). 
SEE DEBUG BELOW 

Curious thing is that it tries to load two times the fragment inside the
page. One as page and one as fragment. (Check last two lines of first
try).

When I stop to debug before that point I can use the watch window in
eclipse and click on the proxy that fills the collection. This causes it
to try loading. It shows same error. But if I try a second time it
shows. Last line with:
"Target loaded".

So it works! But only the second time.

Mmmmmmmmm. Strange...

Any help on this?

Thank you in advance.
========================= NOTICE (UPDATE)===================
I added a try like this before the sentence that fails:
        List<JetspeedCMSObject> child = jspage.getChildren();
        try
        {
                child.iterator();
        }catch(Exception ex)
        {
                log.debug("Exception occurred: " + ex.getMessage());
        }

And found a error like this one:

DEBUG
org.apache.jetspeed.page.TestJackrabbitPageManager.testBasicGetPage(TestJackrabbitPageManager.java:216):
 Exception occurred: Cannot set the field parentFolder in the class : 
org.apache.jetspeed.om.model.JetspeedFragmentImpl; nested exception is 
java.lang.IllegalArgumentException: Cannot invoke 
org.apache.jetspeed.om.model.JetspeedCMSObjectImpl.setParentFolder on bean 
class 'class org.apache.jetspeed.om.model.JetspeedFragmentImpl' - argument type 
mismatch - had objects of type "org.apache.jetspeed.om.model.JetspeedPageImpl" 
but expected signature "org.apache.jetspeed.om.model.interfaces.JetspeedFolder"

But why the second time it works?! With this try and catch everything
works well...

===========================================================


============================================ LOG =================


DEBUG
org.apache.jackrabbit.ocm.manager.objectconverter.impl.SimpleFieldsHelper.retrieveSimpleField(SimpleFieldsHelper.java:184):
 retrieveSimpleField: Use default value from property definition for missing 
mapped property j2:name of class 'org.apache.jetspeed.om.model.JetspeedPageImpl'
DEBUG
org.apache.jackrabbit.ocm.manager.collectionconverter.impl.NTCollectionConverterImpl.doGetCollection(NTCollectionConverterImpl.java:230):
 Collection node found : /test002.psml/P-129b887435c-10000
DEBUG
org.apache.jackrabbit.ocm.manager.objectconverter.impl.SimpleFieldsHelper.retrieveSimpleField(SimpleFieldsHelper.java:184):
 retrieveSimpleField: Use default value from property definition for missing 
mapped property j2:title of class 
'org.apache.jetspeed.om.model.JetspeedFragmentImpl'
DEBUG
org.apache.jackrabbit.ocm.manager.objectconverter.impl.SimpleFieldsHelper.retrieveSimpleField(SimpleFieldsHelper.java:184):
 retrieveSimpleField: Use default value from property definition for missing 
mapped property j2:name of class 
'org.apache.jetspeed.om.model.JetspeedFragmentImpl'
DEBUG
org.apache.jackrabbit.ocm.manager.objectconverter.impl.SimpleFieldsHelper.retrieveSimpleField(SimpleFieldsHelper.java:184):
 retrieveSimpleField: Use default value from property definition for missing 
mapped property j2:name of class 'org.apache.jetspeed.om.model.JetspeedPageImpl'

============= SECOND TRY WITH eclipse debugging after this it works.
DEBUG
org.apache.jackrabbit.ocm.manager.collectionconverter.impl.NTCollectionConverterImpl.doGetCollection(NTCollectionConverterImpl.java:230):
 Collection node found : /test002.psml/P-129b887435c-10000
DEBUG
org.apache.jackrabbit.ocm.manager.objectconverter.impl.AbstractLazyLoader.getTarget(AbstractLazyLoader.java:59):
 Target loaded








Reply via email to