Changes On Branch Release_1.4.1
Not logged in

Many hyperlinks are disabled.
Use anonymous login to enable hyperlinks.

Changes In Branch Release_1.4.1 Excluding Merge-Ins

This is equivalent to a diff from 8d3a4854e2 to 1165efefab

2011-03-19 01:43
Correct typo check-in: 9697f83d44 user: gerald tags: trunk
2011-03-18 19:59
correct package version numbers to 1.4.1 Closed-Leaf check-in: 1165efefab user: gerald tags: Release_1.4.1
2011-03-17 05:09
Fixes for tickets: [668852fcac], [aa05504f11] and [7eb636dce1] check-in: 112f7b64d7 user: gerald tags: Release_1.4.1
2011-03-16 00:45
Only call ProcessImportXml when we have xml check-in: a53a2d4652 user: gerald tags: Release_1.4.1
2011-02-26 05:42
Remove trash files Closed-Leaf check-in: 8d3a4854e2 user: gerald tags: Release_1.4.0
2011-02-26 05:40
Version 1.4.0 migration from https://code.google.com/p/tclws/ check-in: 36a93e0054 user: gerald tags: Release_1.4.0

Changes to ClientSide.tcl.

40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
###############################################################################

package require WS::Utils
#package require Tcl 8.5
if {![llength [info command dict]]} {
    package require dict
}
package require tdom
package require http 2
package require log
package require uri

catch {
    package require tls
    http::register https 443 ::tls::socket
}

package provide WS::Client 1.4.0

namespace eval ::WS::Client {
    ##
    ## serviceArr is indexed by service name and contains a dictionary that
    ## defines the service.  The dictionary has the following structure:
    ##   targetNamespace - the target namespace
    ##   operList - list of operations







|









|







40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
###############################################################################

package require WS::Utils
#package require Tcl 8.5
if {![llength [info command dict]]} {
    package require dict
}
package require tdom 0.8
package require http 2
package require log
package require uri

catch {
    package require tls
    http::register https 443 ::tls::socket
}

package provide WS::Client 1.4.1

namespace eval ::WS::Client {
    ##
    ## serviceArr is indexed by service name and contains a dictionary that
    ## defines the service.  The dictionary has the following structure:
    ##   targetNamespace - the target namespace
    ##   operList - list of operations
1546
1547
1548
1549
1550
1551
1552
1553
1554
1555
1556
1557
1558
1559
1560
    variable serviceArr

    ::log::log debug "In parseResults $serviceName $operationName {$inXML}"

    set serviceInfo $serviceArr($serviceName)
    set outTransform [dict get $serviceInfo outTransform]
    if {![string equal $outTransform {}]} {
        set query [$outTransform $serviceName $operationName REPLY $inXML]
    }

    set expectedMsgType [dict get $serviceInfo operation $operationName outputs]
    dom parse $inXML doc
    $doc documentElement top
    set xns {
        ENV http://schemas.xmlsoap.org/soap/envelope/







|







1546
1547
1548
1549
1550
1551
1552
1553
1554
1555
1556
1557
1558
1559
1560
    variable serviceArr

    ::log::log debug "In parseResults $serviceName $operationName {$inXML}"

    set serviceInfo $serviceArr($serviceName)
    set outTransform [dict get $serviceInfo outTransform]
    if {![string equal $outTransform {}]} {
        set inXML [$outTransform $serviceName $operationName REPLY $inXML]
    }

    set expectedMsgType [dict get $serviceInfo operation $operationName outputs]
    dom parse $inXML doc
    $doc documentElement top
    set xns {
        ENV http://schemas.xmlsoap.org/soap/envelope/
1568
1569
1570
1571
1572
1573
1574
1575

1576
1577
1578
1579
1580
1581
1582
    $doc selectNodesNamespaces $xns
    set body [$top selectNodes ENV:Body]
    set rootNode [$body childNodes]
    ::log::log debug "Have [llength $rootNode]"
    if {[llength $rootNode] > 1} {
        foreach tmp $rootNode {
            #puts "\t Got {[$tmp localName]} looking for {$expectedMsgType}"
            if {[string equal [$tmp localName] $expectedMsgType]} {

                set rootNode $tmp
                break
            }
        }
    }
    if {![string equal $rootNode {}]} {
        set rootName [$rootNode localName]







|
>







1568
1569
1570
1571
1572
1573
1574
1575
1576
1577
1578
1579
1580
1581
1582
1583
    $doc selectNodesNamespaces $xns
    set body [$top selectNodes ENV:Body]
    set rootNode [$body childNodes]
    ::log::log debug "Have [llength $rootNode]"
    if {[llength $rootNode] > 1} {
        foreach tmp $rootNode {
            #puts "\t Got {[$tmp localName]} looking for {$expectedMsgType}"
            if {[string equal [$tmp localName] $expectedMsgType] ||
                [string equal [$tmp nodeName] $expectedMsgType]} {
                set rootNode $tmp
                break
            }
        }
    }
    if {![string equal $rootNode {}]} {
        set rootName [$rootNode localName]
1623
1624
1625
1626
1627
1628
1629
1630
1631
1632
1633
1634
1635
1636
1637
1638
1639
1640

1641
1642
1643
1644
1645
1646
1647
1648
1649
1650
1651
1652
1653
            "Bad reply type, received '$rootName; but expected '$expectedMsgType'."
    }

    ##
    ## Convert the packet to a dictionary
    ##
    set results {}
    set headerRootNode [$rootNode selectNodes ENV:Header]
    foreach outHeaderType [dict get $serviceInfo operation $operationName soapReplyHeader] {
        if {[string equal $outHeaderType {}]} {
            continue
        }
        ::log::log debug "Calling [list ::WS::Utils::convertTypeToDict Client $serviceName $rootNode $outHeaderType $rootNode]"
        set xns [dict get [::WS::Utils::GetServiceTypeDef Client $serviceName $outputHeaderType] xns]
        set node [$headerRootNode selectNodes $xns:outHeaderType]
        if {[llength $outHeaderAttrs]} {
            ::WS::Utils::setAttr $node $outHeaderAttrs
        }

        lappend results [::WS::Utils::convertTypeToDict Client $serviceName $node $outHeaderType $rootNode]
    }
    ::log::log debug "Calling [list ::WS::Utils::convertTypeToDict Client $serviceName $rootNode $expectedMsgType $rootNode]"
    if {![string equal $rootName {}]} {
        lappend results [::WS::Utils::convertTypeToDict \
                         Client $serviceName $rootNode $expectedMsgType $rootNode]
    }
    set results [join $results]
    $doc delete
    set ::errorCode {}
    set ::errorInfo {}

    return $results







|




<





>
|

|


|







1624
1625
1626
1627
1628
1629
1630
1631
1632
1633
1634
1635

1636
1637
1638
1639
1640
1641
1642
1643
1644
1645
1646
1647
1648
1649
1650
1651
1652
1653
1654
            "Bad reply type, received '$rootName; but expected '$expectedMsgType'."
    }

    ##
    ## Convert the packet to a dictionary
    ##
    set results {}
    set headerRootNode [$top selectNodes ENV:Header]
    foreach outHeaderType [dict get $serviceInfo operation $operationName soapReplyHeader] {
        if {[string equal $outHeaderType {}]} {
            continue
        }

        set xns [dict get [::WS::Utils::GetServiceTypeDef Client $serviceName $outputHeaderType] xns]
        set node [$headerRootNode selectNodes $xns:outHeaderType]
        if {[llength $outHeaderAttrs]} {
            ::WS::Utils::setAttr $node $outHeaderAttrs
        }
        ::log::log debug "Calling [list ::WS::Utils::convertTypeToDict Client $serviceName $node $outHeaderType $headerRootNode]"
        lappend results [::WS::Utils::convertTypeToDict Client $serviceName $node $outHeaderType $headerRootNode]
    }
    ::log::log debug "Calling [list ::WS::Utils::convertTypeToDict Client $serviceName $rootNode $expectedMsgType $body]"
    if {![string equal $rootName {}]} {
        lappend results [::WS::Utils::convertTypeToDict \
                         Client $serviceName $rootNode $expectedMsgType $body]
    }
    set results [join $results]
    $doc delete
    set ::errorCode {}
    set ::errorInfo {}

    return $results
1904
1905
1906
1907
1908
1909
1910

1911



1912
1913
1914
1915
1916
1917
1918
        $header appendChild [$doc createElement $xns:$inputHeaderType headerData]
        ::WS::Utils::convertDictToEncodedType Client $serviceName $doc $headerData $argList $inputHeaderType
    }

    $env appendChild [$doc createElement "SOAP-ENV:Body" bod]

    set callXns [dict get $serviceInfo operation $operationName xns]

    $bod appendChild [$doc createElement $callXns:$operationName reply]



    $reply  setAttribute \
        SOAP-ENV:encodingStyle "http://schemas.xmlsoap.org/soap/encoding/"

    ::WS::Utils::convertDictToEncodedType Client $serviceName $doc $reply $argList $msgType

    append xml  \
        {<?xml version="1.0"  encoding="utf-8"?>} \







>
|
>
>
>







1905
1906
1907
1908
1909
1910
1911
1912
1913
1914
1915
1916
1917
1918
1919
1920
1921
1922
1923
        $header appendChild [$doc createElement $xns:$inputHeaderType headerData]
        ::WS::Utils::convertDictToEncodedType Client $serviceName $doc $headerData $argList $inputHeaderType
    }

    $env appendChild [$doc createElement "SOAP-ENV:Body" bod]

    set callXns [dict get $serviceInfo operation $operationName xns]
    if {![string is space $callXns]} {
        $bod appendChild [$doc createElement $callXns:$operationName reply]
    } else {
        $bod appendChild [$doc createElement $operationName reply]
    }
    $reply  setAttribute \
        SOAP-ENV:encodingStyle "http://schemas.xmlsoap.org/soap/encoding/"

    ::WS::Utils::convertDictToEncodedType Client $serviceName $doc $reply $argList $msgType

    append xml  \
        {<?xml version="1.0"  encoding="utf-8"?>} \
2935
2936
2937
2938
2939
2940
2941





2942
2943
2944
2945
2946
2947
2948

    append xml  \
        {<?xml version="1.0"  encoding="utf-8"?>} \
        "\n" \
        [$doc asXML -indent none -doctypeDeclaration 0]
    #regsub "<!DOCTYPE\[^>\]*>\n" [::dom::DOMImplementation serialize $doc] {} xml
    $doc delete






    ::log::log debug "Leaving ::::WS::Client::buildRestCallquery with {$xml}"

    return $xml

}








>
>
>
>
>







2940
2941
2942
2943
2944
2945
2946
2947
2948
2949
2950
2951
2952
2953
2954
2955
2956
2957
2958

    append xml  \
        {<?xml version="1.0"  encoding="utf-8"?>} \
        "\n" \
        [$doc asXML -indent none -doctypeDeclaration 0]
    #regsub "<!DOCTYPE\[^>\]*>\n" [::dom::DOMImplementation serialize $doc] {} xml
    $doc delete

    set inTransform [dict get $serviceInfo inTransform]
    if {![string equal $inTransform {}]} {
        set xml [$inTransform $serviceName $operationName REQUEST $xml $url $argList]
    }

    ::log::log debug "Leaving ::::WS::Client::buildRestCallquery with {$xml}"

    return $xml

}

2991
2992
2993
2994
2995
2996
2997




2998
2999
3000
3001
3002
3003
3004
#
###########################################################################
proc ::WS::Client::parseRestResults {serviceName objectName operationName inXML} {
    variable serviceArr

    ::log::log debug "In parseResults $serviceName $operationName {$inXML}"
    set serviceInfo $serviceArr($serviceName)




    set expectedMsgType [dict get $serviceInfo object $objectName operation $operationName outputs]
    dom parse $inXML doc
    $doc documentElement top
    set xns {}
    foreach tmp [dict get $serviceInfo targetNamespace] {
        lappend xns [lindex $tmp 0] [lindex $tmp 1]
    }







>
>
>
>







3001
3002
3003
3004
3005
3006
3007
3008
3009
3010
3011
3012
3013
3014
3015
3016
3017
3018
#
###########################################################################
proc ::WS::Client::parseRestResults {serviceName objectName operationName inXML} {
    variable serviceArr

    ::log::log debug "In parseResults $serviceName $operationName {$inXML}"
    set serviceInfo $serviceArr($serviceName)
    set outTransform [dict get $serviceInfo outTransform]
    if {![string equal $outTransform {}]} {
        set inXML [$outTransform $serviceName $operationName REPLY $inXML]
    }
    set expectedMsgType [dict get $serviceInfo object $objectName operation $operationName outputs]
    dom parse $inXML doc
    $doc documentElement top
    set xns {}
    foreach tmp [dict get $serviceInfo targetNamespace] {
        lappend xns [lindex $tmp 0] [lindex $tmp 1]
    }

Changes to ServerSide.tcl.

43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
if {![llength [info command dict]]} {
    package require dict
}
package require html
package require log
package require tdom

package provide WS::Server 1.4.0

namespace eval ::WS::Server {
    array set serviceArr {}
    set procInfo {}
    set mode {}
}








|







43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
if {![llength [info command dict]]} {
    package require dict
}
package require html
package require log
package require tdom

package provide WS::Server 1.4.1

namespace eval ::WS::Server {
    array set serviceArr {}
    set procInfo {}
    set mode {}
}

123
124
125
126
127
128
129

130
131
132
133
134
135
136
#                                                      list prior to this call
#               -prefix         - Path prefix used for the namespace and endpoint
#                                 Defaults to "/service/" plus the service name
#               -traceEnabled   - Boolean to enable/disable trace being passed back in exception
#                                 Defaults to "Y"
#               -docFormat      - Format of the documentation for operations ("text" or "html").
#                                 Defaults to "text"

#
#
# Returns :     Nothing
#
# Side-Effects :        None
#
# Exception Conditions :







>







123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
#                                                      list prior to this call
#               -prefix         - Path prefix used for the namespace and endpoint
#                                 Defaults to "/service/" plus the service name
#               -traceEnabled   - Boolean to enable/disable trace being passed back in exception
#                                 Defaults to "Y"
#               -docFormat      - Format of the documentation for operations ("text" or "html").
#                                 Defaults to "text"
#               -stylesheet     - The CSS stylesheet URL used in the HTML documentation
#
#
# Returns :     Nothing
#
# Side-Effects :        None
#
# Exception Conditions :
168
169
170
171
172
173
174

175
176
177
178
179
180
181
        -htmlhead       {TclHttpd Based Web Services}
        -author         {}
        -description    {}
        -mode           {tclhttpd}
        -ports          {80}
        -traceEnabled   {Y}
        -docFormat      {text}

    }
    array set defaults $args
    if {[string equal $defaults(-mode) channel]} {
        set defaults(-ports) {stdin stdout}
        array set defaults $args
    }
    set requiredList {-host -service}







>







169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
        -htmlhead       {TclHttpd Based Web Services}
        -author         {}
        -description    {}
        -mode           {tclhttpd}
        -ports          {80}
        -traceEnabled   {Y}
        -docFormat      {text}
        -stylesheet     {}
    }
    array set defaults $args
    if {[string equal $defaults(-mode) channel]} {
        set defaults(-ports) {stdin stdout}
        array set defaults $args
    }
    set requiredList {-host -service}
1659
1660
1661
1662
1663
1664
1665



1666
1667
1668
1669
1670
1671
1672
    ::html::init
    ::html::author $serviceData(-author)
    if {[string equal $serviceData(-description) {}]} {
        ::html::description  "Automatically generated human readable documentation for '$service'"
    } else {
        ::html::description $serviceData(-description)
    }



    set head $serviceData(-htmlhead)
    set msg [::html::head $head]
    append msg [::html::bodyTag]

    array unset serviceData -service
    if {[info exists serviceData(-description)]} {
        set serviceData(-description) [::html::nl2br $serviceData(-description)]







>
>
>







1661
1662
1663
1664
1665
1666
1667
1668
1669
1670
1671
1672
1673
1674
1675
1676
1677
    ::html::init
    ::html::author $serviceData(-author)
    if {[string equal $serviceData(-description) {}]} {
        ::html::description  "Automatically generated human readable documentation for '$service'"
    } else {
        ::html::description $serviceData(-description)
    }
    if {$serviceData(-stylesheet) != ""} {
        ::html::headTag "link rel=\"stylesheet\" type=\"text/css\" href=\"$serviceData(-stylesheet)\""
    }
    set head $serviceData(-htmlhead)
    set msg [::html::head $head]
    append msg [::html::bodyTag]

    array unset serviceData -service
    if {[info exists serviceData(-description)]} {
        set serviceData(-description) [::html::nl2br $serviceData(-description)]

Changes to Utilities.tcl.

40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
###############################################################################

package require Tcl 8.4
if {![llength [info command dict]]} {
    package require dict
}
package require log
package require tdom
package require struct::set

package provide WS::Utils 1.4.0

namespace eval ::WS {}

namespace eval ::WS::Utils {
    set typeInfo {}
    set currentSchema {}
    array set importedXref {}







|


|







40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
###############################################################################

package require Tcl 8.4
if {![llength [info command dict]]} {
    package require dict
}
package require log
package require tdom 0.8
package require struct::set

package provide WS::Utils 1.4.1

namespace eval ::WS {}

namespace eval ::WS::Utils {
    set typeInfo {}
    set currentSchema {}
    array set importedXref {}
1108
1109
1110
1111
1112
1113
1114

1115
1116
1117

1118
1119
1120
1121
1122
1123
1124
1125
1126
1127


1128
1129
1130
1131
1132
1133
1134
    ::log::log debug [list ::WS::Utils::convertTypeToDict $mode $serviceName $node $type $root]
    set typeDefInfo [dict get $typeInfo $mode $serviceName $type]
    ::log::log debug "\t type def = {$typeDefInfo}"
    set xns [dict get $typeDefInfo xns]
    if {[$node hasAttribute href]} {
        set node [GetReferenceNode $root [$node getAttribute href]]
    }

    if {[info exists mutableTypeInfo([list $mode $serviceName $type])]} {
        set type [(*)[lindex mutableTypeInfo([list $mode $serviceName $type]) 0] $mode $serviceName $type $xns $node]
        set typeDefInfo [dict get $typeInfo $mode $serviceName $type]

    }
    set results {}
    #if {$options(parseInAttr)} {
    #    foreach attr [$node attributes] {
    #        if {[llength $attr] == 1} {
    #            dict set results $attr [$node getAttribute $attr]
    #        }
    #    }
    #}
    foreach partName [dict keys [dict get $typeDefInfo definition]] {


        set partType [dict get $typeDefInfo definition $partName type]
        if {[string equal $partName *] && [string equal $partType *]} {
            ##
            ## Type infomation being handled dynamically for this part
            ##
            set savedTypeInfo $typeInfo
            parseDynamicType $mode $serviceName $node $type







>



>









|
>
>







1108
1109
1110
1111
1112
1113
1114
1115
1116
1117
1118
1119
1120
1121
1122
1123
1124
1125
1126
1127
1128
1129
1130
1131
1132
1133
1134
1135
1136
1137
1138
    ::log::log debug [list ::WS::Utils::convertTypeToDict $mode $serviceName $node $type $root]
    set typeDefInfo [dict get $typeInfo $mode $serviceName $type]
    ::log::log debug "\t type def = {$typeDefInfo}"
    set xns [dict get $typeDefInfo xns]
    if {[$node hasAttribute href]} {
        set node [GetReferenceNode $root [$node getAttribute href]]
    }
    ::log::log debug "\t XML of node is [$node asXML]"
    if {[info exists mutableTypeInfo([list $mode $serviceName $type])]} {
        set type [(*)[lindex mutableTypeInfo([list $mode $serviceName $type]) 0] $mode $serviceName $type $xns $node]
        set typeDefInfo [dict get $typeInfo $mode $serviceName $type]
        ::log::log debug "\t type def replaced with = {$typeDefInfo}"
    }
    set results {}
    #if {$options(parseInAttr)} {
    #    foreach attr [$node attributes] {
    #        if {[llength $attr] == 1} {
    #            dict set results $attr [$node getAttribute $attr]
    #        }
    #    }
    #}
    set partsList [dict keys [dict get $typeDefInfo definition]]
    ::log::log debug "\t partsList is {$partsList}"
    foreach partName $partsList {
        set partType [dict get $typeDefInfo definition $partName type]
        if {[string equal $partName *] && [string equal $partType *]} {
            ##
            ## Type infomation being handled dynamically for this part
            ##
            set savedTypeInfo $typeInfo
            parseDynamicType $mode $serviceName $node $type
1172
1173
1174
1175
1176
1177
1178












1179
1180
1181
1182
1183
1184
1185
                    if {![string length $item]} {
                        ::log::log debug "\tSkipping"
                        continue
                    }
                }
            }
        }












        switch $typeInfoList {
            {0 0} {
                ##
                ## Simple non-array
                ##
                if {$options(parseInAttr)} {
                    foreach attr [$item attributes] {







>
>
>
>
>
>
>
>
>
>
>
>







1176
1177
1178
1179
1180
1181
1182
1183
1184
1185
1186
1187
1188
1189
1190
1191
1192
1193
1194
1195
1196
1197
1198
1199
1200
1201
                    if {![string length $item]} {
                        ::log::log debug "\tSkipping"
                        continue
                    }
                }
            }
        }
        set origItemList $item
        set newItemList {}
        foreach item $origItemList {
            if {[$item hasAttribute href]} {
                set oldXML [$item asXML]
                set item [GetReferenceNode $root [$item getAttribute href]]
                ::log::log debug "\t\t Replacing: $oldXML"
                ::log::log debug "\t\t With: [$item asXML]"
            }
            lappend newItemList $item
        }
        set item $newItemList
        switch $typeInfoList {
            {0 0} {
                ##
                ## Simple non-array
                ##
                if {$options(parseInAttr)} {
                    foreach attr [$item attributes] {
2144
2145
2146
2147
2148
2149
2150

2151
2152
2153
2154
2155
2156
2157
2158
2159

2160
2161
2162
2163
2164
2165
2166
2167
2168
2169
2170
2171
2172
2173
2174
2175
2176
2177
2178
2179
2180
2181
2182
    }
    set importedXref($mode,$serviceName,$url) [list $mode $serviceName $tnsCount]
    switch [dict get [::uri::split $url] scheme] {
        file {
            upvar #0 [::uri::geturl $url] token
            set xml $token(data)
            unset token

        }
        http {
            set ncode -1
            catch {
                set token [::http::geturl $url]
                ::http::wait $token
                set ncode [::http::ncode $token]
                set xml [::http::data $token]
                ::http::cleanup $token

            }
            if {$ncode != 200} {
                return \
                    -code error \
                    -errorcode [list WS CLIENT HTTPFAIL $url] \
                    "HTTP get of import file failed '$url'"
            }
        }
        default {
            return \
                -code error \
                -errorcode [list WS CLIENT UNKURLTYP $url] \
                "Unknown URL type '$url'"
        }
    }
    ProcessImportXml $mode $baseUrl $xml $serviceName $serviceInfoVar $tnsCountVar
}


###########################################################################
#
# Private Procedure Header - as this procedure is modified, please be sure
#                            that you update this header block. Thanks.







>









>




|










<







2160
2161
2162
2163
2164
2165
2166
2167
2168
2169
2170
2171
2172
2173
2174
2175
2176
2177
2178
2179
2180
2181
2182
2183
2184
2185
2186
2187
2188
2189
2190
2191
2192

2193
2194
2195
2196
2197
2198
2199
    }
    set importedXref($mode,$serviceName,$url) [list $mode $serviceName $tnsCount]
    switch [dict get [::uri::split $url] scheme] {
        file {
            upvar #0 [::uri::geturl $url] token
            set xml $token(data)
            unset token
            ProcessImportXml $mode $baseUrl $xml $serviceName $serviceInfoVar $tnsCountVar
        }
        http {
            set ncode -1
            catch {
                set token [::http::geturl $url]
                ::http::wait $token
                set ncode [::http::ncode $token]
                set xml [::http::data $token]
                ::http::cleanup $token
                ProcessImportXml $mode $baseUrl $xml $serviceName $serviceInfoVar $tnsCountVar
            }
            if {$ncode != 200} {
                return \
                    -code error \
                    -errorcode [list WS CLIENT HTTPFAIL $url $ncode] \
                    "HTTP get of import file failed '$url'"
            }
        }
        default {
            return \
                -code error \
                -errorcode [list WS CLIENT UNKURLTYP $url] \
                "Unknown URL type '$url'"
        }
    }

}


###########################################################################
#
# Private Procedure Header - as this procedure is modified, please be sure
#                            that you update this header block. Thanks.

Changes to pkgIndex.tcl.

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
# Tcl package index file, version 1.1
# This file is generated by the "pkg_mkIndex" command
# and sourced either when an application starts up or
# by a "package unknown" script.  It invokes the
# "package ifneeded" command to set up package-related
# information so that packages will be loaded automatically
# in response to "package require" commands.  When this
# script is sourced, the variable $dir must contain the
# full path name of this file's directory.

package ifneeded WS::Channel 1.4.0 [list source [file join $dir ChannelServer.tcl]]
package ifneeded WS::CheckAndBuild 0.0.3 [list source [file join $dir CheckAndBuild.tcl]]
package ifneeded WS::Client 1.4.0 [list source [file join $dir ClientSide.tcl]]
package ifneeded WS::Embeded 1.4.0 [list source [file join $dir Embedded.tcl]]
package ifneeded WS::Server 1.4.0 [list source [file join $dir ServerSide.tcl]]
package ifneeded WS::Utils 1.4.0 [list source [file join $dir Utilities.tcl]]
package ifneeded WS::Wub 1.4.0 [list source [file join $dir WubServer.tcl]]
package ifneeded WS::AOLserver 1.4.0 [list source [file join $dir AOLserver.tcl]]
package ifneeded Wsdl 1.0 [list source [file join $dir WubServer.tcl]]












|

|
|



1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
# Tcl package index file, version 1.1
# This file is generated by the "pkg_mkIndex" command
# and sourced either when an application starts up or
# by a "package unknown" script.  It invokes the
# "package ifneeded" command to set up package-related
# information so that packages will be loaded automatically
# in response to "package require" commands.  When this
# script is sourced, the variable $dir must contain the
# full path name of this file's directory.

package ifneeded WS::Channel 1.4.0 [list source [file join $dir ChannelServer.tcl]]
package ifneeded WS::CheckAndBuild 0.0.3 [list source [file join $dir CheckAndBuild.tcl]]
package ifneeded WS::Client 1.4.1 [list source [file join $dir ClientSide.tcl]]
package ifneeded WS::Embeded 1.4.0 [list source [file join $dir Embedded.tcl]]
package ifneeded WS::Server 1.4.1 [list source [file join $dir ServerSide.tcl]]
package ifneeded WS::Utils 1.4.1 [list source [file join $dir Utilities.tcl]]
package ifneeded WS::Wub 1.4.0 [list source [file join $dir WubServer.tcl]]
package ifneeded WS::AOLserver 1.4.0 [list source [file join $dir AOLserver.tcl]]
package ifneeded Wsdl 1.0 [list source [file join $dir WubServer.tcl]]