Index: openacs-4/packages/acs-service-contract/tcl/acs-service-contract-procs.tcl =================================================================== RCS file: /usr/local/cvsroot/openacs-4/packages/acs-service-contract/tcl/acs-service-contract-procs.tcl,v diff -u -r1.19 -r1.20 --- openacs-4/packages/acs-service-contract/tcl/acs-service-contract-procs.tcl 10 Sep 2003 14:52:01 -0000 1.19 +++ openacs-4/packages/acs-service-contract/tcl/acs-service-contract-procs.tcl 11 Dec 2003 21:39:55 -0000 1.20 @@ -77,7 +77,7 @@ @author Neophytos Demetriou } { - return [db_string binding_exists_p {select acs_sc_binding__exists_p(:contract,:impl)}] + return [db_string binding_exists_p {*SQL*}] } @@ -107,18 +107,12 @@ } { # LARS set exists_p [acs_sc_binding_exists_p $contract $impl] - + #set exists_p [util_memoize "acs_sc_binding_exists_p $contract $impl"] - + if ![set exists_p] {return ""} - db_0or1row get_alias { - select impl_alias, impl_pl - from acs_sc_impl_aliases - where impl_contract_name = :contract - and impl_operation_name = :operation - and impl_name = :impl - } + db_0or1row get_alias {*SQL*} return [list $impl_alias $impl_pl] @@ -151,50 +145,22 @@ error "ACS-SC: Cannot find alias for $proc_name" } - if {![db_0or1row get_operation_definition { - select - operation_desc, - operation_iscachable_p, - operation_nargs, - operation_inputtype_id, - operation_outputtype_id - from acs_sc_operations - where contract_name = :contract - and operation_name = :operation - }]} { + if {![db_0or1row get_operation_definition {*SQL*}]} { ns_log warning "ACS-SC: operation definition not found for contract $contract operation $operation" return 0 } append docblock "\nacs-service-contract operation. Call via acs_sc_call.\n\n$operation_desc\n\n" - db_foreach operation_inputtype_element { - select - element_name, - acs_sc_msg_type__get_name(element_msg_type_id) as element_msg_type_name, - element_msg_type_isset_p, - element_pos - from acs_sc_msg_type_elements - where msg_type_id = :operation_inputtype_id - order by element_pos asc - } { + db_foreach operation_inputtype_element {*SQL*} { lappend arguments "$element_name" append docblock "\n@param $element_name $element_msg_type_name" if { $element_msg_type_isset_p } { append docblock " \[\]" } } - db_foreach operation_outputtype_element { - select - element_name, - acs_sc_msg_type__get_name(element_msg_type_id) as element_msg_type_name, - element_msg_type_isset_p, - element_pos - from acs_sc_msg_type_elements - where msg_type_id = :operation_outputtype_id - order by element_pos asc - } { + db_foreach operation_outputtype_element {*SQL*} { append docblock "\n@return $element_name - $element_msg_type_name" if { $element_msg_type_isset_p } { append docblock " \[\]" @@ -270,6 +236,8 @@ {arguments ""} {impl ""} } { + Additional documentation and commentary at http://openacs.org/forums/message-view?message_id=108614. + @param contract the contract name @param operation the method to invoke @param arguments list of arguments to pass to the method