No viable alternative at input 'row'

40 views
Skip to first unread message

Rob Breidecker

unread,
May 14, 2010, 10:46:04 AM5/14/10
to tellurium-users
I have just updated Tellurium from 0.7.0-rc2 to 0.7.0. I'm now getting
a number of errors in my tests that are similar to this one.

This is my definition...
ui.Form(uid: "myForm", clocator: [id: "myForm"]) {
Container(uid: "myDetails", clocator: [tag: "div", id:
"myDetails"]) {
Table(uid: "myTable", clocator: [tag: "table", id: "myTable"]) {
CheckBox(uid: "row:*, column:1", clocator: [tag: "td/input",
type: "checkbox"])
}
}
}

When I run my test I get this error...
line 1:4 no viable alternative at character '*'
line 1:0 no viable alternative at input 'row'
java.lang.NullPointerException: Cannot invoke method getId() on null
object
at
org.codehaus.groovy.runtime.NullObject.invokeMethod(NullObject.java:
77)
at
org.codehaus.groovy.runtime.callsite.PogoMetaClassSite.call(PogoMetaClassSite.java:
45)
at
org.codehaus.groovy.runtime.callsite.CallSiteArray.defaultCall(CallSiteArray.java:
40)
at
org.codehaus.groovy.runtime.callsite.NullCallSite.call(NullCallSite.java:
17)
at
org.codehaus.groovy.runtime.callsite.CallSiteArray.defaultCall(CallSiteArray.java:
40)
at
org.codehaus.groovy.runtime.callsite.PojoMetaMethodSite.call(PojoMetaMethodSite.java:
54)
at
org.codehaus.groovy.runtime.callsite.AbstractCallSite.call(AbstractCallSite.java:
121)
at
org.telluriumsource.ui.builder.UiObjectBuilder.internBuild(UiObjectBuilder.groovy:
86)

I also get similar errors when using the word "all" on a List
component. I read another post from about a month ago that said there
are various words that are reserved and can't be used. If so, how do I
specify Tables and Lists?

Best Regards,
Rob

--
You received this message because you are subscribed to the Google Groups "tellurium-users" group.
To post to this group, send email to telluri...@googlegroups.com.
To unsubscribe from this group, send email to tellurium-use...@googlegroups.com.
For more options, visit this group at http://groups.google.com/group/tellurium-users?hl=en.

Jian Fang

unread,
May 14, 2010, 10:53:14 AM5/14/10
to telluri...@googlegroups.com
Hi Rob,

The reason is that 0.7.0 included UDL implementation and the uid should use UDL syntax.
For example, in your case, your UI module should be defined as


ui.Form(uid: "myForm", clocator: [id: "myForm"]) {
   Container(uid: "myDetails", clocator: [tag: "div", id:
"myDetails"]) {
       Table(uid: "myTable", clocator: [tag: "table", id: "myTable"]) {
           CheckBox(uid: "{row:all, column:1}", clocator: [tag: "td/input",
type: "checkbox"])
       }
   }
}

More details here:
http://code.google.com/p/aost/wiki/Tellurium070Update#Tellurium_UID_Description_Language

Thanks,

Jian

On Fri, May 14, 2010 at 10:46 AM, Rob Breidecker <rbre...@gmail.com> wrote:
I have just updated Tellurium from 0.7.0-rc2 to 0.7.0. I'm now getting
a number of errors in my tests that are similar to this one.

This is my definition...
ui.Form(uid: "myForm", clocator: [id: "myForm"]) {
   Container(uid: "myDetails", clocator: [tag: "div", id:
"myDetails"]) {
       Table(uid: "myTable", clocator: [tag: "table", id: "myTable"]) {
           CheckBox(uid: "row:all, column:1}", clocator: [tag: "td/input",

Rob Breidecker

unread,
May 14, 2010, 11:02:29 AM5/14/10
to tellurium-users
Jian,

I changed the "*" to "all".

This is my new definition...
ui.Form(uid: "myForm", clocator: [id: "myForm"]) {
Container(uid: "myDetails", clocator: [tag: "div", id:
"myDetails"]) {
Table(uid: "myTable", clocator: [tag: "table", id: "myTable"]) {
CheckBox(uid: "row:all, column:1", clocator: [tag: "td/input",
type: "checkbox"])
}
}
}

The error related to "*" is now gone from my error message. However,
I'm still getting the following error...
From your reply, it sounds like I shouldn't be getting this error. Do
you agree?

Thanks,
Rob




On May 14, 9:53 am, Jian Fang <john.jian.f...@gmail.com> wrote:
> Hi Rob,
>
> The reason is that 0.7.0 included UDL implementation and the uid should use
> UDL syntax.
> For example, in your case, your UI module should be defined as
>
> ui.Form(uid: "myForm", clocator: [id: "myForm"]) {
>    Container(uid: "myDetails", clocator: [tag: "div", id:
> "myDetails"]) {
>        Table(uid: "myTable", clocator: [tag: "table", id: "myTable"]) {
>            CheckBox(uid: "{row:all, column:1}", clocator: [tag: "td/input",
> type: "checkbox"])
>        }
>    }
>
> }
>
> More details here:http://code.google.com/p/aost/wiki/Tellurium070Update#Tellurium_UID_D...
> > tellurium-use...@googlegroups.com<tellurium-users%2Bunsu...@googlegroups.com>
> > .
> > For more options, visit this group at
> >http://groups.google.com/group/tellurium-users?hl=en.
>
> --
> You received this message because you are subscribed to the Google Groups "tellurium-users" group.
> To post to this group, send email to telluri...@googlegroups.com.
> To unsubscribe from this group, send email to tellurium-use...@googlegroups.com.
> For more options, visit this group athttp://groups.google.com/group/tellurium-users?hl=en.

Jian Fang

unread,
May 14, 2010, 11:12:53 AM5/14/10
to telluri...@googlegroups.com
Hi Rob,

You need "{}" for the "row:all, column:1" portion. The reason is that we can use UDL
to define id for the element in a UI template and we can the use id instead of index to
reference them. Another advantage is that the UI module can handle the challenge that
someone changes the position of a column.

For example, if we have the following UI module,

 
    ui.StandardTable(uid: "GT", clocator: [id: "xyz"], ht: "tbody"){
     
TextBox(uid: "{header: first} as One", clocator: [tag: "th", text: "one"], self: true)
     
TextBox(uid: "{header: 2} as Two", clocator: [tag: "th", text: "two"], self: true)
     
TextBox(uid: "{header: last} as Three", clocator: [tag: "th", text: "three"], self: true)
     
TextBox(uid: "{row: 1, column -> One} as A", clocator: [tag: "div", class: "abc"])
     
Container(uid: "{row: 1, column -> Two} as B"){
       
InputBox(uid: "Input", clocator: [tag: "input", class: "123"])
       
Container(uid: "Some", clocator: [tag: "div", class: "someclass"]){
         
Span(uid: "Span", clocator: [tag: "span", class: "x"])
         
UrlLink(uid: "Link", clocator: [:])
       
}
     
}
     
TextBox(uid: "{row: 1, column -> Three} as Hello", clocator: [tag: "td"], self: true)
   
}
We can use the IDs to reference the elements to be more expressive.

    getText "GT.A"
    keyType
"GT.B.Input", input
    click
"GT.B.Some.Link"

Also, The TextBox A will be tied to the header "One". Even the header "One" changes its position, the TextBox
will still stay valid. This is a feature requested by a user and a very cool feature.

Thanks,

Jian

Rob Breidecker

unread,
May 14, 2010, 12:54:23 PM5/14/10
to tellurium-users
Your suggestion worked. I'm looking forward to trying some of the
advanced techniques you described in your last message.

Thanks,
Rob

On May 14, 10:12 am, Jian Fang <john.jian.f...@gmail.com> wrote:
> Hi Rob,
>
> > <tellurium-users%2Bunsu...@googlegroups.com<tellurium-users%252Buns...@googlegroups.com>

Jian Fang

unread,
May 14, 2010, 1:03:33 PM5/14/10
to telluri...@googlegroups.com
Cool. Please do follow up with your experience with the new features in 0.7.0.

Thanks,

Jian
Reply all
Reply to author
Forward
0 new messages