RavenclawDev: returning frame from a back end; with lists

Antoine Raux antoine at cs.cmu.edu
Fri Oct 13 09:45:39 EDT 2006


Hi Svetlana,

 

Are you using actual tab characters between slot names and values or spaces?
RavenClaw expect tab characters there (e.g. between "error" and "false",
"results" and ":1", etc). Otherwise I can't see anything strange in your
frame. If that's not it, could you send the exact exception and line number?

 

antoine

 

  _____  

From: ravenclaw-developers-bounces at LOGANBERRY.srv.cs.cmu.edu
[mailto:ravenclaw-developers-bounces at LOGANBERRY.srv.cs.cmu.edu] On Behalf Of
Svetlana Stenchikova
Sent: Friday, October 13, 2006 9:25 AM
To: Dan Bohus
Cc: ravenclaw-developers at cs.cmu.edu
Subject: Re: RavenclawDev: returning frame from a back end; with lists

 

Mistyped email - sorry -:

     String str = 
      "{\n" +
        "error   false\n" +
        "results :1\n" +
        "{\n" +
                "{\n"  +
                        "date_time       {\n" +
                                "time    {\n" +
                                 "       start_time      1700\n" +
                                 "       end_time        1800\n" +
                                "}\n" +
                                "date    {\n" +
                                "        valid_date      true\n" +
                                "        year    2006\n" +
                                "        month   10\n" +
                                "        day     11\n" +
                                "        weekday 3\n" +
                                "}\n" +
                          "}\n" +
                   "}\n" +
          "}\n" +
    "}";
 

On 10/13/06, Dan Bohus <dbohus at cs.cmu.edu> wrote:

Hi Svetlana, 

 

Hmm, sorry, I'm a bit confused by the beginning of it.

 

      String str = "{\nerror   false\n}";
  /    "{\n" +
        "error   false\n" +

 

Does that compile in java? Or is that just a mistype in the email. O/w I
can't see anything with the naked eye, but you might try setting a
breakpoint right on the line in FrameConcept.cpp where RavenClaw crashes and
see what the problem is. Sorry I can't be more helpful, I hope you'll sort
it out. We should have had this "string frame" format documented somewhere
really well. 

 

-Dan

 

 

 

  _____  

From: Svetlana Stenchikova [mailto:svetastenchikova at gmail.com] 
Sent: Friday, October 13, 2006 12:14 AM
To: Dan Bohus
Cc: ravenclaw-developers at cs.cmu.edu
Subject: Re: RavenclawDev: returning frame from a back end; with lists

 

Hi, 

I am now trying to hard-code a string to return, just for a test:

      String str = "{\nerror   false\n}";
  /    "{\n" +
        "error   false\n" +
        "results :1\n" +
        "{\n" +
                "{\n"  +
                        "date_time       {\n" +
                                "time    {\n" +
                                 "       start_time      1700\n" +
                                 "       end_time        1800\n" +
                                "}\n" +
                                "date    {\n" +
                                "        valid_date      true\n" +
                                "        year    2006\n" +
                                "        month   10\n" +
                                "        day     11\n" +
                                "        weekday 3\n" +
                                "}\n" +
                          "}\n" +
                   "}\n" +
          "}\n" +
    "}";
    GFrame newframe = new Clause("");
    newframe.setProperty(":outframe", str);

and getting exception in FrameConcept.cpp on line 288

Can anyone see a problem with this hard-coded string?

thanks,
Svetlana

On 10/12/06, Svetlana Stenchikova <svetastenchikova at gmail.com> wrote:

OK, it worked after several replacements were done to the string:

    GFrame eventAdded = new Clause("");
    
    String strRes = tempFrame.toString();
    
    String newstr1 =  strRes.replaceAll("\\{c", "{\n");
    String newstr2 =  newstr1.replaceAll("\\\"", "");
    String newstr =  newstr2.replaceAll("\\}", "\n}");
    
    eventAdded.setProperty(":outframe", newstr);

thanks,
Svetlana

 

On 10/11/06, Dan Bohus < dbohus at cs.cmu.edu <mailto:dbohus at cs.cmu.edu> >
wrote:

Hi Svetlana, 

 

Yes, you should indeed return a GFrame from the java backend server. This
GFrame should contain one string element, called :outframe which contains
the string representation you had below of the desired structure (e.g. like
for instance the RoomLine perl returns it). If you look into the
BackendServer for RoomLine, essentially what that does is take that string
representation and put it in an outframe string slot in a galaxy return
frame. 

 

Hope this helps, but let me know if it doesn't

Dan

 

 

  _____  

From: Svetlana Stenchikova [mailto: svetastenchikova at gmail.com] 
Sent: Wednesday, October 11, 2006 3:32 PM
To: Dan Bohus
Cc: ravenclaw-developers at cs.cmu.edu
Subject: Re: RavenclawDev: returning frame from a back end

 

Do you think it is possible to return a structure from a java back-end in a
format expected by RavenClaw?

If so, could you please recomment how, and if not, could someone point to
the place in RavenClaw that I could modify to work around this issue?

I am sorry to bother you with this question, but we have a demo coming up
and listing the events is one of the essential functionality that we wanted
to show. 

Thank you all for your help!

Svetlana

On 10/10/06, Svetlana Stenchikova <svetastenchikova at gmail.com> wrote:

Thanks Dan,

this generally makes sense, but I am not sure how to do this in the java
server.

The operation function in the java galaxy service returns a GFrame. 

I can set properties of this frame in any way, but I must return a GFrame, I
think. I tried declaring an operation that returns String and it causes
runtime exception:
java.lang.ClassCastException: java.lang.String 


This is how a RoomLine return from a perl back end looks like:

{
        suggested_refine        none
        error   false
        results :1
        {
                {
                        date_time       {
                                time    {
                                        start_time      1700
                                        end_time        1800
                                }
                                date   { 
                                        valid_date      true
                                        year    2006
                                        month   10
                                        day     11
                                        weekday 3
                                }
                        }
                        room_size       30
                        room_projector  true
                        room_whiteboard true
                        room_computer   true
                        room_network    true
                        room_location   Wean Hall
                        room_size_spec  large
                        room_number     4625
                }
        }
}


And here is how my java back end frame looks like:

Server environment sending frame:
{c java_be.add_event
   error "false"
   :hub_opaque_data {c admin_info
                       :reply_requested 1
                       :session_id "Default"
                       :tidx 70
                       :scriptless 1
                       :timestamp [array: type GAL_FLOAT_64, 1 elements]
                       :provider_id "[8]"
                       :invoked_stype "java_be" } }

Please make a suggestion on how to return a string from a java server.

thank you,
Svetlana

 

On 10/10/06, Dan Bohus <dbohus at cs.cmu.edu > wrote:

Hi Svetlana, 

 

I think this is the same problem with "Ravenclaw frames" and "galaxy frames"
but on the output side. Basically what you're doing in the code below is
constructing a galaxy frame. Instead ravenclaw expects a single string in
that galaxy frame which contains the information in a single string in the
"string Ravenclaw frame" format. 

 

If this message is too cryptic, let me know and I can send you more details,

Dan

 

  _____  

From: ravenclaw-developers-bounces at LOGANBERRY.srv.cs.cmu.edu
[mailto:ravenclaw-developers-bounces at LOGANBERRY.srv.cs.cmu.edu
<mailto:ravenclaw-developers-bounces at LOGANBERRY.srv.cs.cmu.edu> ] On Behalf
Of Svetlana Stenchikova
Sent: Tuesday, October 10, 2006 5:41 PM
To: ravenclaw-developers at cs.cmu.edu
Subject: RavenclawDev: returning frame from a back end

 

Hi,

How should a  back-end function of a ravenclaw dialog manager format a
frame?

For example,  I am expecting to get a "error" parameter from:

CALL("java_be.add_event <event_add error>backend_error")

backend_error is declared as:
BOOL_SYSTEM_CONCEPT(backend_error)

In the java back-end:

public GFrame serverOpAddEvent(GFrame f) {
...

    GFrame eventAdded = new Clause("event_add");
    
    eventAdded.setProperty("error", "false");

    return eventAdded;
}


But the backend_error in DM does not get initialized. 

Is there a particular way that the return GFrame from the backend server has
to be generated?

Thank you,
Svetlana

 

 

 

 

 

-------------- next part --------------
An HTML attachment was scrubbed...
URL: http://mailman.srv.cs.cmu.edu/pipermail/ravenclaw-developers/attachments/20061013/110eebe7/attachment-0001.html


More information about the Ravenclaw-developers mailing list