It looks like you have isolated the problem because doing the same thing with a 
class that is known to exist
$xwiki.getDocument('XWiki.XWikiPreferences').getDocument().getxWikiClass().toString()
displays all of the properties in xml format. I also double checked by adding a 
property to Main.WebHome class
and viewing that, it works as expected.

I recommend you double check valdoc, and add
if (valdoc.isNew()) { println("oops I didn't load the document."); }
to your script.

Caleb

Abel Solórzano Astorga wrote:
> Thanks again Caleb,
> 
> I try your suggestion, but I keep getting a null value from *
> valdoc.getDocument().**getxWikiClass().get("Project")*.
> 
> The fields Map (
> *valdoc.getDocument().**getxWikiClass().fields.keySet(**)*) is empty.
> 
> I put the following line on the code:
> 
> *println valdoc.getDocument().getxWikiClass().toString()*
> 
> and the result is
> 
> *<class>
> <name>ValidationSample.TestClass_6</name>
> <customClass></customClass>
> <customMapping></customMapping>
> <defaultViewSheet></defaultViewSheet>
> <defaultEditSheet></defaultEditSheet>
> <defaultWeb></defaultWeb>
> <nameField></nameField>
> <validationScript></validationScript>
> </class>*
> 
> I was expecting to see the properties on the XML.
> 
> Abel
> 
> On Fri, Mar 5, 2010 at 1:45 AM, Caleb James DeLisle <
> calebdeli...@lavabit.com> wrote:
> 
>>
>> Abel Solórzano Astorga wrote:
>>> Thanks Caleb,
>>>
>>> I follow your recommendation, but I am getting a BaseClass with no
>>> properties.
>>> The class I am creating it is supposed to have 4 properties.
>>>
>>> I am using the folling code to use the class:
>>>
>>> *...*
>>>
>>> *docname = xwiki.getUniquePageName("ValidationSample", "TestClass")
>>> valdoc = xwiki.getDocument("ValidationSample." + docname)
>>> ok = valdoc.newObject("ValidationSample.TestClass")
>>> ok = valdoc.updateObjectFromRequest("ValidationSample.TestClass")*
>>> *
>>> ...
>>>
>>> valdoc.use("ValidationSample.TestClass")*
>>>
>>> ValidationSample.TestClass has 4 properties (2 TextAreas and 2 a Static
>>> Lists).
>>>
>>> Then to get the property that I need to dynamically change:
>>>
>>> *field = valdoc.getDocument().getxWikiClass().get("Project")*
>>>
>>> But I get a null value from *
>>> valdoc.getDocument().getxWikiClass().get("Project")*. The BaseClass
>> returned
>> "get" calls getField().getValue() maybe the problem is that BaseCollection
>> is used for objects and xclasses and
>> get is only useful for objects. Try getField()
>>
>>> by *valdoc.getDocument().getxWikiClass() *is a
>>> *ValidationSample.TestClass *class
>>> but the Properties collection is empty.
>> Because of a bug in groovy you can view private fields so you can look
>> directly at the fields in the class with
>>
>> for(String name : valdoc.getDocument().getxWikiClass().fields.keySet()) {
>>    println(name);
>> }
>>
>>
>> Also if you want to change the prettyName of a class property (for
>> example),
>> you would have to cast the field to PropertyClass (didn't test this but it
>> should work.)
>>
>> ((PropertyClass)
>> valdoc.getDocument().getxWikiClass().getField()).setPrettyName("new name");
>>
>>
>> Caleb
>>
>>> Regards,
>>>
>>> Abel
>>>
>>> On Wed, Mar 3, 2010 at 1:04 AM, Caleb James DeLisle <
>>> calebdeli...@lavabit.com> wrote:
>>>
>>>> I can tell you that it can be done, anything which can be done by
>>>> the user can be done with groovy.
>>>>
>>>> document.getxWikiClass().get("propertyName") returns an object of
>>>> type element.
>>>>
>>>>
>> http://maven.xwiki.org/site/xwiki-core-parent/xwiki-core/apidocs/com/xpn/xwiki/api/Element.html
>>>> I think you need to drop out of the api section into the core (which
>>>> requires programming rights but so does groovy)
>>>> document.getDocument().getxWikiClass()
>>>> gives you an object of type BaseClass which I think is what you are
>>>> after.
>>>>
>>>>
>> http://maven.xwiki.org/site/xwiki-core-parent/xwiki-core/apidocs/com/xpn/xwiki/objects/classes/BaseClass.html
>>>>
>>>> Caleb
>>>>
>>>>
>>>> Abel Solórzano Astorga wrote:
>>>>> Hi everybody,
>>>>>
>>>>> Is there a way to dynamically (through groovy code) change the values
>> on
>>>> a
>>>>> static list or on any other property of a xwiki class?
>>>>>
>>>>> I am using *field = document.getxWikiClass().get("propertyName")* to
>> get
>>>> the
>>>>> property.
>>>>>
>>>>> document is of type* com.xpn.xwiki.api.Document*.
>>>>>
>>>>> But when I try to change the value using *
>>>>> field.getPropertyClass().setValues("val1|val2|val3")* I get a *null*
>>>> value
>>>>> from* field.getPropertyClass()*
>>>>>
>>>>> I am following the information on
>>>>> http://www.mail-archive.com/users@xwiki.org/msg10692.html
>>>>>
>>>>> I am using groovy on xwiki 2.0.2.24645
>>>>>
>>>>> Regards
>>>>>
>>>>> Abel
>>>>> _______________________________________________
>>>>> users mailing list
>>>>> users@xwiki.org
>>>>> http://lists.xwiki.org/mailman/listinfo/users
>>>>>
>>>> _______________________________________________
>>>> users mailing list
>>>> users@xwiki.org
>>>> http://lists.xwiki.org/mailman/listinfo/users
>>>>
>>> _______________________________________________
>>> users mailing list
>>> users@xwiki.org
>>> http://lists.xwiki.org/mailman/listinfo/users
>>>
>> _______________________________________________
>> users mailing list
>> users@xwiki.org
>> http://lists.xwiki.org/mailman/listinfo/users
>>
> _______________________________________________
> users mailing list
> users@xwiki.org
> http://lists.xwiki.org/mailman/listinfo/users
> 

_______________________________________________
users mailing list
users@xwiki.org
http://lists.xwiki.org/mailman/listinfo/users

Reply via email to