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.35 -r1.36 --- openacs-4/packages/acs-service-contract/tcl/acs-service-contract-procs.tcl 6 Dec 2018 23:16:30 -0000 1.35 +++ openacs-4/packages/acs-service-contract/tcl/acs-service-contract-procs.tcl 3 Sep 2024 15:37:33 -0000 1.36 @@ -57,14 +57,16 @@ set proc_name [acs_sc_generate_name $contract $impl $operation] - if { [info commands $proc_name] ne "" } { - return [ad_apply $proc_name $call_args] + if { [namespace which $proc_name] ne "" } { + # ns_log warning "CALL FORMER ad_apply [list $proc_name {*}$call_args]" + # ns_log warning "$proc_name {*}$call_args" + return [$proc_name {*}$call_args] } if { $error_p } { error "Operation $operation is not implemented in '$impl' implementation of contract '$contract'" } else { - ns_log warning "ACS-SC: Function Not Found: $proc_name [info commands $proc_name]" + ns_log warning "ACS-SC: Function Not Found: $proc_name [namespace which $proc_name]" } return } @@ -86,13 +88,23 @@ @param contract the contract name @param impl the implementation name - @return 0 or 1 + @return boolean @author Neophytos Demetriou } { - - return [db_string binding_exists_p {}] - + return [db_string binding_exists_p { + select case when exists + (select 1 from acs_sc_bindings + where contract_id = (select contract_id + from acs_sc_contracts + where contract_name = :contract) + and impl_id = (select impl_id + from acs_sc_impls + where impl_name = :impl + and impl_contract_name = :contract)) + then 1 else 0 end + from dual + }] } ad_proc -private acs_sc_generate_name { @@ -243,7 +255,7 @@ # Check, if the wrapper exists already # set proc_name [acs_sc_generate_name $impl_contract_name $impl_name $impl_operation_name] - if {[info commands ::$proc_name] eq ""} { + if {[namespace which ::$proc_name] eq ""} { # # Create it new. #