Esiobjects V4.1.1 Changes
Internal Changes
- GTM Supported.
- Error Traps updated through out the code.
- Line lengths checked.
- Generated Code now checked for length.
- Static calls implemented.
- Event now allows a Throw for another interface.
- Parser table moved to a shared global.
- Service cache now common to all processed and is precomputed.
- Service Cache not used in Debug mode.
- Private methods are no longer broken by cache.
- #ifver, #ifnver directives have been added.
- Generated extras fixed.
- Better validation of the Options Block.
- $HANDLE eliminated.
- New Special Variables added:
- $MEMORYOBJECTS
- $PEERS
- $CHILDREN
- $CHILDCNT
- $ROOTOBJECTS
- $DOMAIN
- $EXCEPTION
- $LASTCHILD
- $LOCALOBJECTS
- $SHAREDOBJECTS
- New Functions added:
- $OSR
- $PROTECT
- $CLASSOID
- $DELEGATE
- Updated Type checking.
- $Copy uses Merge command now.
- Debugger/Browser supports large objects.
- ZV now uses a Shared table, allowing large objects to be browsed.
- Shared Tables now used when retrieving Subnodes during a browse.
- Security (Username and password) added.
- Start of the Exception Model added.
- IsA improved for primitive types (String, Numeric, Integer, Boolean, Variant,Any,Object).
- $Domain may now be set.
- Better message when a Null used as an Object Pointer.
- Copyright Notice Updated.
- Concerns eliminated.
- Improved Back Trace on Error.
- Throw Command added.
- New generated method call stubs implemented to improve performance.
- Better validation of internal label calls.
- Quit Command now has better warnings and detection logic, an detect some illegal conditions
- Native commands that are not explicitly handled by a parser table entry, now treat the arguments as expressions.
- Some internal parser cleanup.
- Lock Command Indirection fixed.
- Post Conditional Write Fix for services without Direct I/O access.
- Code body now supports leading comments.
- Pattern Matching now supports the "(" Grouping mechanism.
- Name Pool variable now uses improved lookup mechanism.
- Options block: Throws statement implemented (Verifies objects is a subclass on ESI$Throwable).
- Options block: Static now indicates a Static Method.
- Options block: Abstract now flags an Abstract method.
- Options block: Constant now flags a Constant method.
- Support for Using Input/Output parameters with Delegation.
- $ZTIMESTAMP recognized on Cache platform.
- $ZE implemented for GTM (Eqv. $ZSTATUS).
- Delegation implemented (Via $Delegate).
- Open Command on DSM Supports READ as a valid abbreviation for READONLY.
- Open Command on DSM Supports WRITE as a valid abbreviation for WRITEONLY.
- Primitive Types Now Recognized:
- String
- Numeric
- Variant
- Integer
- Boolean
- Any
- Object
- ZV $Null now no longer crashes the system.
- Objects may be protected against ZV.
- ZV now emits $LASTCHILD & $CHILDCNT.
- Default error handling changed to removed the default protection around a method call.
- $Info now supports code #12, "Protected".
- Improved initialization of $SYSPOOL.
- $EXIST enhanced for performance.
- Stack based objects now created on the heap, and tracked on the Stack.
- Namepool objects may now be used as Domains.
- Destroy Honors protected pointers.
- Improved Unlocking in Destroy command.
- Backend Support for Direct binding of a property to a variable (VESORV).
- New internal server call to Disconnect a session (DISC^VESOSREQ).
- Session Start time now tracked.
- Sessions now define the default implementation to us for BTO (List, Text, Table, NVList).
- Session objects are now protected from browsing.
- Improved session cleanup logic.
- Debugging now disabled while servicing requests from the debugger.
- Command Line TCP Server control tool updated (^VESOTCMN).
- DSM TCP Server closed logic updated to help release the port quicker on OpenVMS.
- TCP Session updated to track connection logic.
- TCP - Property Set fixed to store the value on the correct stack frame.
- TCP - Property $Get fixed to store the value on the correct stack frame.
- TCP - Property $Order fixed to store the direction on the correct stack frame.
- TCP - Property $Normalize fixed to store the value on the correct stack frame.
- TCP - Property $Validate fixed to store the value on the correct stack frame.
- TCP Call logic updated to cleanup the stack correctly.
- TCP - BTO objects may now be used across multiple calls (Client must also maintain the Server Id - The Java gateway does this) .
- XML Parsing support.
- Primitive Class Browser updated.
- Properties now support cache.
- Static Properties now implemented.
- Deprecation of InitSysVars.
- The system call MAXRLN^VESOOPRI now returns this value. The Default value is 512. The Global ^VESoCNFG(1," ","MaxRLn") max be set to change this value.
Class Changes and additions
- Folders now invoke a prepackage mechanism, allowing objects (e.g Class Libraries) to insert bootstrap logic.
- XML related classes added to Base.
- Factory::InitAllSysVars now generated.
- ESI$Environment:
- New Interface: Security
- SetProp & GetProp updated
- New Method: Out
- New Method: Exit
- New Method: Domaintable
- Updated Method: EOVersion (Major & Minor version only i.e. 4.1)
- Updated Method : Output - To write the buffer created by Out
- New Property: Session
- ESI$Class:
- New Method: AddAlias
- Updated to Removed the SubClasses Instance Variable
- Linkage logic updated to reduce events on import.
- Compile Lock reenabled.
- Upgrade logic updated.
- New Sub/Subclass Indexing structure.
- Various Other Updates.
- ESI$ClassLibrary:
- New Method: RemoveAllImports
- New Method: Upgrade::Verify
- AllLibraries
- New Method: Serialization::Prepackage - To allow folders to write out the bootstrap.
- Various Other Updates
- ESI$EsiObject:
- New Method: Serialization::Prepackage - To allow folders to write infomation before the link.
- ESI$Folder:
- Serialization changed to prepackage the contents of the folder
- ESI$List:
- New Method: Serialization StreamSaveXML
- ESI$Table:
- New Method: Serialization StreamSaveXML
- ESI$Text:
- New Method: GetStream
- Updated Method: AppendLine
- ESI$AccesserMethod:
- Added Static Property
- Updated Compile for Static
- ESI$NamedMethod:
- Added Static property
- Updated Compile for Static
- ESI$VariableDictionary:
- Updated compile to generate Factory::InitAllSysVars
- Added UpdateInitAll to compile decendant InitAllSysVars
- ESI$EOVistor - Updated
- ESI$SearchVistor - Updated
- ESI$Session:
- New Propetry: BTOList
- New Propetry: BTONVList
- New Propetry: BTOTable
- New Propetry: BTOText
- ESI$GlobalStream:
- Updated Class: ESI$Interface.
- Updated Class: ESI$UserManager.
- New Class: ESI$Text.Stream.
- New Class: ESI$Throwable.
- New Class: ESI$Exception.
- New Class: ESI$RuntimeException.
- New Class: ESI$IndexedTable.
- Updated Java Code Generation.
- New Class: Base$Attributes.
- New Class: Base$AttributesImplBase$Bag.
- New Method: HasNull
- Base$Map:
- New Method: DestroyAll
- New Method: SetElement
- Updated Method: ReplaceElementAt
- New Class: Base$InternalStream
- New Class: Base$MVariableStream
- New Class: Base$ServerFileStream
- New Class: Base$Stream
- New Class: Base$Text
- New Class: Base$XMLContentHandler
- New Class: Base$XMLReader
- New Class: Base$XMLReaderImpl
- Base Library cleaned up:
- All code brought up to standards outlined in the EsiObjects Conventions paper.
- Nested class Iterator added to each Collection class. CreateIterator will create iterators based on the nested Iterator class, not the old Iterator classes.
User Interface Changes
- Disconnect added to the Session tab frame.
- Manager Add in is now available.
- Title bars now include the session name.
- Session management updated to show a summary and connection info.
- Method Properties: Static option.
- Objects Browser now has a related objects tool bar for Children, Peers, Memory Objects, Local Objects, and Shared Objects.
- Objects Browser now has a symbol selection icon on the tool bar for children.
- Accessor Method Properties: Static Option.
- Adding Services or Renaming them will now normalize the Name (Automatically removed _ and Space).
- Double clicking code now has improved selection logic.
- Add Interface now asks for the name of the Interface to add.
- Added Duplicate to Services – Popup Menu & Main Menu.
Java Gateway
- Timeout implemented during IsReady.
- getServerInfo has 3 new Requests.
TCP Bridge
- A few bugs have been fixed.
New Messages
- OOP_INV_BASEOBJ Invalid Base Object.
- OOP_NOT_STATIC The service @1 is not static.
- PARSE_QARG_ILLEGAL Quit with argument is Illegal in this context.PARSE_TYPE_NULL Type specified as null string - Illegal, specifiy type or Void keyword.
- PARSE_NO_TYPE Type @1 not found.
- PARSE_NO_SRV The operatation [@1] can not be located.
- PARSE_NOT_EXCPT Class @1 is not an Exception.PARSE_NO_LABEL Unable to locate Label [@1].
- PARSE_MAXGEN Generated line too long, truncated. Over by @1 bytes.
- PARSE_STATIC_NOINVAR References to Instances variables are not allowed in static services.
- PARSE_FUNCT_OSM Function $@1 may only be used in OSM.
- PARSE_INTERNAL Internal Parser Error: @1.
- M_ZNOLINE Unable to locate label.
- M_ZNOLABEL Unable to locate label.
Work in progress
- Update Create to use Factory::InitalAllVariables.
- Update Upgrade to removed the old Cache structure and copy in the new.
- Implement direct property binding.
- SSL Session support.
- New variable definition UI.
Functional Problems Addressed
- The following deficiencies have been resolved:
- Lack of Exception Handling.
- When creating a new variable if it started with I% it should be forced to an Instance and the I% stripped. Likewise so should a C% be forces as a Class Variable.
- V of $NULL will hang the system.
- Browsing Large Object causes a problem.
- Event Command should allow interface to be specified.
- Options: section allows "Type=".
- Sync not changing Tab.
- Nested class appears wrong when foreign on a re-load.
- Type/Method checks at compilation (Warning).
- Have Do check the Label.
- Move the Parsing table to ^VESOI.
- Instance variable undefined problem.
- Fix Weird cache Connect problem.
- Fix CompileClassDefs for Compilation of the routine.
- Sync does not scroll the item into view when it is already selected.
- In Object Browser Ctrl+C (Class) does not appear to work.
- Folders that export Libraries can not be imported if the Library does not exist.
- Debug Compile of UI gets an exception when creating a Variable that has a single character name.
- Possible Points of Optimization Addressed
- Create a compiled InitAllSysVar Method.
- Global Call Cache.
- Remove or Rework $Handle & %objcf(%objsp,19).
- Use the $7 & $8 Compiled Tables.
- Remove intercall error trap.