VA Smalltalk Readme


Contents


Welcome to VA Smalltalk Version 9.0

VA Smalltalk enables software developers to create highly portable, scaleable, multi-tier business applications using object-oriented technology. VA Smalltalk allows for incremental and rapid development of new Smalltalk applications. Developers can build and deploy enterprise Web service solutions for dynamic e-business using VA Smalltalk.


What's New in V9.0

Late-breaking news, technical tips, and product updates

Please refer to the Instantiations Smalltalk home page for technical information including tips and product updates made after this product release. The web page includes information about what's included in the release, and how to contact us as well as hints and tips for using and deploying VA Smalltalk.

You can download the latest product updates, as well as product add-ons, from the Instantiations Smalltalk download page.


Version 9.0 files and installation

Distribution files

VA Smalltalk distribution files are divided into development time components and runtime components.

Each VA Smalltalk platform has two downloadable development time components:

Product Installer
The product installer installs the Client and Manager components of the VA Smalltalk product as well as a development IDE setup tool. The Client component contains the VA Smalltalk development IDE. The Manager component contains the VA Smalltalk library (source code repository) file and the EMSRV code used to access the repository file in a team environment.
Documentation Installer
The documentation installer installs a local copy of the VA Smalltalk documentation onto your workstation.

Each VA Smalltalk platform has one downloadable run time component:

Server Runtime
This is the runtime support needed for deploying Smalltalk applications developed using VA Smalltalk. There is no formal install program for Server Runtime. You simply use unzip to unpack the runtime files and add your packaged Smalltalk application into the resulting directory structure. You must download and unpack the correct Server Runtime package for your workstation operating system. The files needed to include at runtime are listed in Redistributable Runtime Files.

 


Installing VA Smalltalk

Windows

If you are new to VA Smalltalk, we recommend that you install the documentation locally using the VA Smalltalk Documentation Installer, VA Smalltalk Documentation 9.0.0.exe, for easy reference before you install the VA Smalltalk product.

Run the downloaded VA Smalltalk Product Installer, VA Smalltalk 9.0.0.exe.

Complete installation instructions, such as how to set up EMSRV, can be found in the Installation Guide. The Installation Guide can be read online at Installation Guide, or locally after you run the VA Smalltalk Documentation Installer.

If you are doing a Custom install to install the Manager on a different machine than the Client(s), we recommend you install the Manager first.

Once you have installed the Manager and the Client, refer to the Installation Guide for further instructions on how to use the Environments tool to configure your environment so you can launch VA Smalltalk.

If you are using the headless installer to install the Manager alone, make sure the directory into which you want to install the manager has been created  before starting the  headless install. Refer to the Installation Guide for further instructions.

If you are installing on Windows Server: 
Problem:
The manager is not installed when installing the product with both client and server portions present (the typical or default installation configuration).
Workaround:
Copy %tmp%\Instantiations\VA Smalltalk\9.0\manager\mgr90tmp.dat to <mgrroot> and rename it mgr90.dat. By default, <mgrroot> is C:\ProgramData\Instantiations\VA Smalltalk\9.0\manager. to determine %tmp%, open a command terminal and enter echo %tmp% .

 


VA Smalltalk Migration Guide

If you have a version of VisualAge Smalltalk or VA Smalltalk already installed, please refer to the Migration Guide for important information before using VA Smalltalk V9.0. The Migration Guide can be read online at Migration Guide, as a pdf or it can be read locally if you installed local documentation.


Corrections and Enhancements

This section lists the corrections and enhancements introduced by each release of the VA Smalltalk product.


Corrections and Product Enhancements in V9.0

  Case   Title
  -----  ----------------------------------------------------------
   56470 Increase stack overflow warning size for 64-bit
   57875 A class variable name must not be the same as a class instance variable name 
   59316 Adaptive Tenuring Enhancement to Garbage Collector 
   61735 SCISOCKET PlatformFunction definition uses incorrect return value declaration
   61755 32-bit to 64-bit Image Conversion
   61781 Fix OSSslStructure thread-safety issue
   61808 Subclasses of OSStructure cannot use Is in #regenerateDefinitions class method 
   61812 [Win] SciBlockingDispatcher>>#callGetAddrinfoWith:with:with:with: negated Return codes result in 'unknown error' 
   61820 Fix Transcript menu revert behavior
   61835 EtClassDefinitionCompiler does not inspect deep enough for Class and PseudoVar removals
   61840 VA 8.6.3 AbtTCPInetHost>>#getHostByName: fails if no IP addresses available
   61871 Re-enable packager logging 
   61873 SciError>>#printOn: gives incomplete output 
   61898 VMprSmallIntegerQuo and VMprSmallIntegerRem primitives for V9.0
   61924 WkTableWidgetView layout problem
   61942 Assignment tracking not working properly in code analysis
   61944 SSLSockets should never do a partial read/write
   61960 OpenSSL Elliptic Curve Support
   61972 Remove CgRGBColor References from CwUseCases
   61980 Update to:do: message send in WkTableWidgetSelectionColorExampleView
   61986 Missing javascript: method on GRDelegatingStream 
   61992 Add capability to Sunit browser to hide the counts while running 
   62001 SstTcpLightTransport class>>#officialHostNameFor: incorrectly handles new socket address representation
   62006 SstSmtpAddress dNU #family
   62050  Test DateAndTime usage of #copy is not deep enough...modifies the original object 
   62090 EsSmalltalkNamespace unmanagedNames stopped working correctly in some scenarios in 8.6.2
   62093 Test Problem reading certain Jpg file 
   62116 Scintilla version update for V9.0
   62117 #fromUrl: can compute an 'address' which is an SciError and proceeds anyway
   62153 Turn Wrap on by default in Find/Replace dialog
   62179 Move asyncExecFirstInUI: into CommonWidgets
   62185 More information on Transcript when starting the image 
   62194 EsTimeZoneDatabase class>>createDummyTimeZoneNameForSeconds: answers #UTC instead of 'UTC for 0 offset 
   62198 Scintilla Code Editor indicators may not update properly in all cases
   62203 Modify SciSslSocketConfiguration's #= and #hash to consider all the inst vars
   62245 Seaside is not included in the list of available XD Features 
   62253 Update EpImageInstructions to include crypto.ic 
   62273 64-bit Native ObjectDumper is broken 
   62294 Async break in StsWorkspace>>scUpdateMenuBarItemsFor:
   62295 Incorrect 64-bit port of allPrinterScreenInfos 
   62311 Add SetProcessAffinityMask API 
   62317 WASstRequestConverter>>responseFrom: should produce correct GMT date string for HTTP header 
   62393 Process>>attributes interruptible lazy init bug 
   62437 Add 750ms delay to EpImageInstructions class>>#createICFrom: 
   62472 Fix OpenSSL notifyLibraryInitialized methods to not use #subApplications
   62520 Infinite loop on parsing empty multipart post requests
   62521 Optimized performance and memory profile of multipart form processing
   62524 CwWidgetLayout example broken because bandGC not initialized
   62537 Add Collection>>#count: utility method

Components and Features

The following sections list some important information about some of the components and features. For the latest product information, please refer to Instantiations Smalltalk web page.


Application Builder

On AIX, turn NumLock off when dropping parts

Be sure that your numlock key is turned off if you are using the composition editor. The numlock will prevent parts from being dropped on the Composition Editor.

On UNIX, "X Error: BadWindow" message appears for Slider part

Each time the Slider part is repainted the "X Error: BadWindow (invalid Window parameter)" message is printed in the xterm window where VA Smalltalk was launched.

The Slider part still functions normally.


Base

(8.5) Limitations to CwRebar

The rebar control consists of one or more bands, each of which may contain a child widget control. Neither the color of the rebar control nor the colors of the individual bands is settable. Rebars with fixed-width bands should be placed in a fixed size window.

(8.5.2) An INI file is required for packaged applications

You must always specify (or default to) an INI file when running VA Smalltalk. The INI file can:

   abt -imyapp.icx -ini:c:\any.ini

(8.5.2) The EsTimeZoneApp application must be included in all reduced run time packaging instructions

The EsTimeZoneApp is required in all reduced runtime images. It is included automatically in the reduced runtime packaging instructions shipped with VA Smalltalk (AbtBaseEpRuntimeImagePackagingInstructions and AbtEpRuntimeImagePackagingInstructions), but must be added in the #applicationNamesToPackage method of any other reduced runtime packaging instructions.

(8.5.1) VerifyMemorySpaces, VerifyVMSlots, VerifyImage

VerifyMemorySpaces, VerifyVMSlots, VerifyImage can be used to identify Smalltalk memory corruption. Since these primitives write to the TTY Transcript, the image to be verified must be started with the '-l' command line option in order to collect the verification information.


Communications

(8.6.2) Multipart Forms Retains Trailing Whitespace before final CR/LF

Processing of multipart forms in 8.6.1 inadvertently stripped all trailing whitespace instead of removing only the trailing cr/lf.  In 8.6.2, the processing will only remove the trailing cf/lf and leave the trailing whitespace intact.


Database

(8.6) GLORP - Low-level database exceptions detected by GLORP can now optionally be logged to the TranscriptTTY

The default action is to continue to create GLORP exceptions and signal them when low-level exceptions are encountered. This behavior can be overridden by executing VADatabaseAccessor loggingErrorsEnabled: true.  When set to true, GLORP will continue to create and signal GLORP exceptions, but will also write the details of the low-level exception encountered to the TranscriptTTY.  If running GLORP in a development image, the exception information will be written to the Transcript.  If running in a runtime environment, the exception information will be written to the log file specified by the -l<filename> command line option.

(8.5.2) DB2 CLI Fixed Character Length Fields of length 1 can now optionally return the single character string as a String rather than converting it to a Character

The default action is to continue to return single character strings as Character objects.  This behavior can be overridden per connection by sending keepSingleCharStringsAsString: true to each AbtIbmCliDatabaseConnection instance created.

(8.5.2) Improved packaging rules to include Abt*Field classes referenced in the typeDict and unifiedFieldMapping class variables of the AbtDatabaseManager subclasses

The database manager typeDict and unifiedFieldMapping dictionaries are created when the database feature(s) are loaded into the image.  The Abt*Field classes mapped through these dictionaries are typically not directly referenced by code,  but are located by lookup through these dictionaries. As a result, the necessary Abt*Field classes are not included in packaged image by default. The new packaging rules force the related Abt*Field classes to be part of a packaged image that includes database feature(s).

Get schema function on Stored Procedure Specification Settings

When using stored procedures with the new Oracle 8 database connection, the Get schema function on the Stored Procedure Specification Settings view only works for procedures that are not contained in packages. Users must manually define host variables for procedures that are contained in packages.

On UNIX, running Database Features

On UNIX, if you are using database features and experience a core dump when exiting VA Smalltalk, comment out the PlatformLibrary>>shutDown method. An alternative solution for your packaged application is to execute the following code when exiting:

   System primitiveExit

Oracle initialization mode can be changed without subclassing AbtOracle8DatabaseManager

Prior to this fix, the only provided method for changing the Oracle initialization mode was to create a subclass of AbtOracle8DatabaseManager in order to override the #userDefinedInitializeMode method. While this method is still available, it is now possible to change the default initialization mode by setting a class variable. The provided method for doing this is AbtOracle8DatabaseManager class>>#defaultInitializeMode:. The shipped default value is OCI_DEFAULT, which is unchanged from previous VA Smalltalk version. See the comment in AbtOracle8DatabaseManager class>>#defaultInitializeMode: for other possible values.

Prerequisite AbtRecordStructureApp in Database Applications

Some database applications will need to add a prerequisite for the AbtRecordStructureApp application. Applications that use Database Parts will not need to add this prerequisite because the parts will include the AbtRecordStructureApp application. If an application manipulates instances of any of the subclasses of AbtRow, they will probably need to add this prerequisite.

If you package your application and get the error The attribute Pub <Attr name> does not exist at runtime, you need to include the AbtRecordStructureApp application.


DBCS

Display Resolution for DBCS machines

To ensure all information is displayed on your computer, we encourage you to use the highest resolution offered by your display terminal.


Documentation and Helps

Identifying browser and newsreader on UNIX

If you get no response from Smalltalk when requesting Help (from the Help menu or F1), the most likely cause is that the browser and/or the newsreader installed on the system cannot be found. To correct this problem, edit the INI file (for example, abt.ini) and add links to the installed browser and/or newsreader in the [Help] stanza -- you will see examples of specifying Firefox and Thunderbird. You can specify either a complete path to the browser and/or newsreader (not usually necessary) or a relative path.

Accessing documentation on UNIX

Enter one of the following URLs into your browser:


Domino Connection

Using an English version of IBM Notes

The NLS versions of IBM Notes must be installed on the native Operating System (OS) platforms, in order for Notes to work. If a US-English version of Lotus Notes is installed on the native OS, then the user will not be able to input either SBCS or DBCS characters correctly. This is a restriction with IBM Notes.

Error detaching documents using Domino Connection

When detaching a file attachment using the Domino connection, the detached file is corrupted. The problem only shows up if the attachment is BASE64 encoded.  Detaching the same attachment using the IBM Notes client works fine. Detaching via Domino connection also works fine if the file has been attached manually using the IBM Notes client.


EMSRV

(7.5.2) Native password validation on Linux

EMSRV native password validation on Linux uses Pluggable Authentication Modules (PAM). The sample PAM file shipped with VA Smalltalk is correct for older Linux distributions, but does not work for newer distributions.


OLE

Copying from Windows Explorer into an OLE Client part

Use copy and paste to share OLE objects between the Windows Explorer and an OLE Client part. Dropping an OLE object that was dragged from the Windows Explorer onto an OLE Client part does not work.


Packaging

No additional information at this time.


Seaside

(9.0) Level of code

Seaside 3.2 / Grease 1.2 level of function is delivered in this release (see the Notes section of each Configuration Map for the exact Monticello package version). This includes the following:

(8.6.2) Secure HTTP support

The WASstServerAdaptor and the Seaside Control Panel have been updated to allow the specification of 'protocol'. Currently 'protocol' can be 'http' or 'https'. To establish a secure (https) connection, you will need to provide a cert.pem file and a key.pem file in the same directory as your image.  For testing purposes, you can copy \samples\ssl\vast_client.pem and \samples\ssl\vast_client_key.pem to the image directory and rename them cert.pem and key.pem.

(8.6.2) Compensating for the lack of continuation support in VA Smalltalk Seaside

http://www.instantiations.com/docs/FAQ/wwhelp/wwhimpl/js/html/wwhelp.htm#href=va15001.html provides an explanation of the continuation workaround and a complete re-implementation of the Contact, ContactListView, ContactView, ScrapBook, SimpleAnchor, and WebCounter example classes shown in Dynamic Web development with Seaside.

(8.0.1) Seaside Support Documentation

Seaside support is documented in Dynamic Web development with Seaside.

(8.0.1) Limitations


Server

(7.5.1) HTTP server access log

An SST HTTP server can write an "access" log containing an entry for each request received by the server. Entries in the log are formatted according to the default format used by the Apache HTTP server in order to enable tooling for Apache logs to be used for SST logs as well.

The access log is initialized in SstHttpServer>>startUp. If an access log is desired, it can be specified in 2 ways:

  1. The application can send SstHttpServer>>accessLogFormatPolicy: AND SstHttpServer>>accessLog: prior to sending SstHttpServer>>startUp.
  2. The application can be started with the following command line switch: -sstaccesslog.  This will cause a log file named httpd.log to be written in the current directory.

(8.5) Performance improvement in writing walkback log

By default, when an error occurs, the walkback information is written to TranscriptTTY. This causes the walkback information to be written to the console or to a log file identified by the -l command line option. Since TranscriptTTY output is written unbuffered character-at-a-time, it can be very time consuming to write a large volume of walkback information.

An alternative output mechanism is avasilable. When it is enabled, this mechanism writes the walkback information to a file stream. This is a buffered operation which can be more than an order of magnitude faster than writing to TranscriptTTY.

To enable writing the walkback information to a file stream, you must provide the name of the walkback log in the INI file:

  [Kernel]
  walkbackFilename=myWalkback.log

(6.0) SST IIOP Support is Obsolete

CORBA IIOP facilities provided by SST in previous releases are obsolete as of this release. The implementation provided in previous releases continues to be shipped with this release, but all methods have been recategorized as 'OBSOLETE'. There will be no further development or enhancement of these facilities, and they may be removed from the product in a future release.

Customer applications which made use of these facilities in a previous release will continue to be supported as they are migrated to this current release.

Customers are advised to make use of Web Services technologies, such as XML and WSDL, for future interoperability strategies.

(8.0.2) Support for JDK 1.3 through JDK 1.7 using RMI

The RMI in Server Smalltalk has been tested with JDK 1.3 through JDK1.7, using the same techniques that were required for JDK 1.2.

Using XD Interactive Debugger over TCP/IP with no nameserver

When trying to use the interactive debugger, if you are getting the error EHOSTNOTFOUND or EADDRNOTAVAIL from the run time side, the problem may be that your run time machine cannot resolve the TCP/IP address of your development machine. You can work around this problem by adding an entry to the hosts file on the run time machine for your development machine.

(8.6) Support for inbound multipart form/mixed data

Support has been added for inbound multipart processing for form and mixed multipart subtypes in the Server Smalltalk - HTTP framework. 

Multipart is a MIME data type. It was originally defined as part of HTML 4.0.  There are several multipart subtypes; we are providing initial support for form and mixed subtypes..  The multipart/form subtype is most commonly used for submitting files via HTTP.    The protocol is similar to chunked transfer encoding, but in this case, each part of the transmission corresponds to the user entries from an HTML form.   

In the VA Smalltalk implementation, Incoming messages are parsed and "assembled"  by classes  in the Sst Http layer which process the incoming buffer of the socket stream and convert it to an instance of SstByteMessage, which then becomes part of an SstHttpRequest.  

SstByteMessages have simple content -- a byte array.  A Lookup Table has been  added to SstByteMessage to store the message parts. A multipart-aware application can then extract the multipart content; the SstByteMessage will continue to function as it always has with the rest of the existing framework and previously built applications.    


VA Assist

Uninstalling VA Assist

Uninstalling VA Assist is a bit involved. To uninstall the feature,

  1. Start with an image named the generic name: abt.icx.
  2. Launch the image.
  3. Disable VA Assist (From the Transcript choose Tools -> VA Assist Pro -> Disable)
  4. Save (using the Transcript File -> Save Image) and restart the image.
  5. Uninstall the feature. There are two ways to do this:
  6. Save the image using the Transcript File -> Save Image.

Restoring VA Assist Settings

(8.6.2) Saving VA Assist Settings in 8.6.2 generated a settings file with invalid code. The symptom of the problem is that settings do not restore properly. To correct the settings in the file,

No changes to settings files generated in 8.6.2 or later is needed.


Web Connection

Web Connection does not support DBCS characters for Cookies

DBCS cookies are not supported using the Servlet Interface. This is a limitation of the HTTP Server.

(8.6.1) Web Connection no longer supports Netscape's NSAPI and IBM ICS interfaces

Legacy makefiles instructions and export definitions that reference these interfaces have been left intact, however these interfaces are no longer supported.


WebServices

(8.0) Deserialization of a SOAP Envelope failed when the defining schema contained an element using a ref attribute referring to an imported schema

  Consider the following excerpt from the schema and mapping specs:

  Schema 1:

  <?xml version="1.0" encoding="UTF-8"?>
  <xs:schema xmlns:xs="http://www.w3.org/2001/XMLSchema"
        xmlns="http://exampleSchemas.com/thisSchema"
        xmlns:ais="http://exampleSchemas.com/StatusSchema"
        targetNamespace="http://exampleSchemas.com/thisSchema"
        elementFormDefault="qualified"
        attributeFormDefault="unqualified">
      <xs:import namespace="http://exampleSchemas.com/StatusSchema"   schemaLocation="StatusSchema.xsd"/>
      <xs:element name="SessionRequest" type="StartSessionRequestType"/>
      <xs:element name="SessionResponse" type="StartSessionResponseType"/>
      <xs:complexType name="SessionRequestType"/>
      <xs:complexType name="SessionResponseType">
            <xs:sequence>
                  <xs:element ref="ais:Status" minOccurs="0" maxOccurs="unbounded"/>
                  <xs:element name="SessID" type="xs:string" minOccurs="0"/>
          </xs:sequence>
      </xs:complexType>
  </xs:schema>


  Mapping Spec for SessionRequest:

  <?xml version="1.0"?>
  <!DOCTYPE XmlMappingSpec SYSTEM "abtxmap.dtd">
  <!-- NameSpaceURI must match with the namespace on the Schema                       -->
  <XmlMappingSpec Name="StartSession.map" NameSpaceURI="http://exampleSchemas.com/thisSchema" >    
    <ClassTypeMapping TypeName="SessionRequest" ClassName="ExStartSessionRequest"/>
    <ClassTypeMapping TypeName="SessionResponse" ClassName="ExStartSessionResponse">
            <AttributeMapping ClassAttribute="status" NameSpaceURI="http://exampleSchemas.com/StatusSchema">
                  <SubElement>Status</SubElement>
            </AttributeMapping>
            <AttributeMapping ClassAttribute="sessionId">
                <SubElement>SessID</SubElement>
            </AttributeMapping>
    </ClassTypeMapping>


  Mapping Spec for Status:

  </XmlMappingSpec>
  <?xml version="1.0"?>
  <!DOCTYPE XmlMappingSpec SYSTEM "abtxmap.dtd">
  <!-- NameSpaceURI must match with the namespace on the Schema                       -->
  <XmlMappingSpec Name="TransactionStatus.map" NameSpaceURI="http://exampleSchemas.com/StatusSchema">

    <ClassTypeMapping TypeName="Status" ClassName="ExStatus">
            <AttributeMapping ClassAttribute="returnCode">
                  <SubElement>Code</SubElement>
            </AttributeMapping>
            <AttributeMapping ClassAttribute="returnCodeDescription">
                <SubElement>Description</SubElement>
            </AttributeMapping>
    </ClassTypeMapping>
  </XmlMappingSpec>


  After deploying the web service and sending a request,  the web services framework did not 
  deserialize this response:

  <?xml version="1.0" encoding="UTF-8" standalone="yes"?>
  <env:Envelope xmlns:env="http://schemas.xmlsoap.org/soap/envelope/"
        xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
        xmlns:soapenc="http://schemas.xmlsoap.org/soap/encoding/"
         xmlns:xsd="http://www.w3.org/2001/XMLSchema">
       <env:Body>
        <SessionResponse xmlns="http://exampleSchemas.com/thisSchema"        
       <Status xmlns="http://exampleSchemas.com/StatusSchema">        
             <Code>0</Code>
            <Description>ok</Description>
              </Status>
              <SessionID>ABCDEF</SessionID>
        </StartSessionResponse>
    </env:Body>
  </env:Envelope>

  It reported the error: 

  "XML mapping error ##ObjectInitializationError: ''Unable to process element ''''TransactionStatus'''''''   ".
 
  The problem occurred because the code considered the Status  element to be in the 
  "http://exampleSchemas.com/thisSchema" namespace, not in the namespace of the imported schema. 
  The framework was  modified to take into account the namespace of the prefix on an element with a ref
  attribute.  

(8.0) WSDL deployment fails when a schema attempts to import a schema which is already being imported

The schema parser in VA Smalltalk is recursive. Whenever a schema import is encountered, a new parser is created which begins to parse that schema. The new parser is added to a stack. This process continues until there are no more schemas to be imported; then the final schema import is completed. The previous import is then completed until the stack is unwound. If an imported schema imports a schema which has already been imported by a previous schema, an infinite loop results and an out of memory condition is encountered. For example:

  WSDL A imports Schema A.

  Schema A imports Schema B.

  Schema B imports Schema A.

Modifications were made to track schemas which have currently begun to be imported and to skip duplicate imports.

(8.0) WSDL and imported schemas using the document/literal or document/literal wrapped style are not deployed/serialized properly

  Deployment Problem

  The typical error message in this situation occurs during deployment with the message:

  'The type an AbtXmlQName(requestheader:WachoviaRequestHeader) for WSDL part ''SomeWSDLPart'' could not be determined'

  The problem occurred when the "document/literal wrapped" style of wsdl was used and the element
  was defined in an imported namespace, e.g.,

  <wsdl:definitions

    ...

    xmlns:importedNamespace="myNamespace2"

  <wsdl:types>

    <xs:schema xmlns:xs="http://www.w3.org/2001/XMLSchema">

      <xs:import namespace="myNamespace2" schemaLocation="C:\aSchemaLocation"/>

    </xs:schema>

  </wsdl:types>

  <wsdl:message name="RequestMessage">

      <wsdl:part element="importedNamespace:Request" name="Request"/>

  </wsdl:message>
 
  An instance of the SstWsdlDefinitions class contains the parsed artifacts of the web service including
  the schemas defined or imported in the types section.  WsdlDefinitions has an instance variable "types"
  which contains an instance of the SstWsdlTypes class.   namespacemappings instance variable.  During parsing
  of the types section, schema namepsaces were added  to a dictionary assigned to this variable.  The schemas
  themselves were placed into the schemas instance variable. Only namespaces of schemas defined wtihin the section
  and schemas directly imported within the types section are included.  However, these imported schemas often
  import other schemas.  The imported schema's namespaces and prefixes are not assigned to the schemas dictionary;
  they appear in the WsdlDefinitons types instance variable in its imports dictionary.  Since this dictionary is
  not searched during the deserialization/serialization process, nor during the wsdl message parsing process, web
  services with this type of schema importation could not be deployed or serialized/deserialized.  

  Code was added to cache all namespaces contained in  imported schemas during parsing; when all schemas were
  imported, iterate through the cache and:

   1. place all namespaces into the SsdWsdlDefinitions namespaceMappings Dictionary

   2. place all schemas in the SstWsdlTypes schemas dictionary


  Serialization Problem

  All necessary namespaces were not included in the Soap request envelope if imported namespaces and
  schemas were needed to fully define the request.

  Code was added to examine all schema elements included in the request and to add their namespaces to
  the Soap envelope.

  Important!

  In order to retain backward compatibility, the new processing has been made optional on a container--wide
  basis.  To use it, create a container using:

    SstWSContainer>>createContainerUsingDocLiteralWrappedNamed: aString

(8.0) An Element with a ref attribute referring to another namespace was serialized incorrectly in the SOAP Envelope

  A schema element which contained a ref attribute to a type in another namespace was not serialized with
  the correct prefix in the Soap request envelope.

  Consider the following excerpt from a schema: 

  ...

  <xs:schema  xmlns:thisNamespace ="http://thisnnamespace.net/"
            xmlns:cust ="http://customer.net/"
            targetNamespace="http://thisnnamespace.net/" >
  <xs:import namespace="http://customer.net/" schemaLocation="C:\theSchemaLocationl"/>
      <xs:element name="StatementRequest">
            <xs:complexType>
                  <xs:sequence>
                        <xs:element ref="cust:Customer"/>
                  </xs:sequence>
            </xs:complexType>
      </xs:element>


....


   Prior to V8.0, the SOAP serialization would produce the following in a request envelope:

   <SOAP-ENV:Envelope
       xmlns:SOAP-ENV="http://schemas.xmlsoap.org/soap/envelope/"
       xmlns:thisNamespace ="http://thisnnamespace.net/"
      xmlns:cust ="http://customer.net/"
       xmlns:xsd="http://www.w3.org/2001/XMLSchema"
       xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance">
      <SOAP-ENV:Body>
            <thisNamespace:StatementRequest>
                  <thisNamespace:Customer>
                        <cust:Name>Bob Smith</cust:Name>
                        <cust:acctNumber>02789</cust:acctNumber>
                                     </thisNamespace:Customer>
            </thisNamespace:StatementRequest>
      </SOAP-ENV:Body>
   </SOAP-ENV:Envelope>


  The code has been modified to result in the request envelope:

  <SOAP-ENV:Envelope
       xmlns:SOAP-ENV="http://schemas.xmlsoap.org/soap/envelope/"
       xmlns:thisNamespace ="http://thisnnamespace.net/"
      xmlns:cust ="http://customer.net/"
       xmlns:xsd="http://www.w3.org/2001/XMLSchema"
       xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance">
      <SOAP-ENV:Body>
            <thisNamespace:StatementRequest>
                  <cust:Customer>
                        <cust:Name>Bob Smith</cust:Name>
                        <cust:acctNumber>02789</cust:acctNumber>
                                     </cust:Customer>
            </thisNamespace:StatementRequest>
      </SOAP-ENV:Body>
  </SOAP-ENV:Envelope>
 
  Since the Customer complex type is imported from the "http://customer.net/" namespace, the prefix for cust:
  should  be used to qualify it.

(8.6) web services XML directory

The default resource qualifier is <varoot>/xml where <varoot> is the installation directory. A problem occurs on UNIX, and Windows Vista and later with UAC enabled, if a web service attempts to write into this directory since normally this directory can only be written into by the root user. The solution is to use the Environments tool to copy the <varoot>/xml directory to your working environment and update the .INI file for your working environment to point to the new location.

(8.6.1) Soap 1.2 Extensions are now more fully supported

  Wsdl containing Soap 1.2 bindings are now deserialized properly without setting a global namespace variable.

(8.6.1) AbxXmlBasicTools Can now Process AnonymousComplexTypes When Generating Classes from Schemas   


 


XML

XML code page conversion (unsupported encodings)

The XML parser automatically performs code page conversion before attempting to parse an XML stream. Many code pages are handled seamlessly using the default code page conversion routine of the runtime operating system. However, there are some character encodings that cannot be converted. Unsupported code page conversions cause walkbacks at execution time.

The following code pages are not supported:

The VA Smalltalk XML support attempts to map XML character set encodings to valid code pages. The default mappings can be overridden using the API shown in the following example:

 
    AbtXmlStreamConverter mapEncoding: 'UTF-8' toCodePage:  65001.

VA Smalltalk uses the code page conversion support APIs that are built in to each of the supported platforms. Therefore, code page mappings may be different for different operating systems. If you encounter a debugger with the following message it is likely that you have encountered an unmapped or mismapped encoding.

 
    Abt.Nls.160.e: Conversion from code page <sourceCodePage> to code page <targetCodePage> is not
    supported.

Disclaimer

THIS DOCUMENT IS PROVIDED "AS IS" WITHOUT WARRANTY OF ANY KIND. INSTANTIATIONS DISCLAIMS ALL WARRANTIES, WHETHER EXPRESS OR IMPLIED, INCLUDING WITHOUT LIMITATION, THE IMPLIED WARRANTIES OF FITNESS FOR A PARTICULAR PURPOSE AND MERCHANTABILITY WITH RESPECT TO THE INFORMATION IN THIS DOCUMENT. BY FURNISHING THIS DOCUMENT, INSTANTIATIONS GRANTS NO LICENSES TO ANY PATENTS OR COPYRIGHTS.

(C) Copyright Instantiations Corporation 2005, 2017. All rights reserved.