Servoy 5.0 Final

Servoy announcements

Servoy 5.0 Final

Postby Jan Blok » Fri Nov 13, 2009 11:28 pm

We are pleased to announce the immediate availability of Servoy 5.0 final release

This version is available through the download page on the Servoy website (developer section).

If you find a bug or have a feature request, please file a case in our support system

We want to say thanks to all the Servoy 5.0 beta/release candidate testers, for all the testing they already did, for them this version will also be available through auto update. (see separate post in "Latest Releases" forum)


Developer Changes:
[new] Unit testing support
[new] JavaScript Function parameter and JSDoc support
[new] Configurable JavaScript formatting
[new] Integration with SQL Explorer Eclipse plugin
[new] Basic JavaScript profiler
[new] Eclipse update to 3.5/Galileo
[new] Tomcat update to version 6.0.20
[new] Sybase update to version 11 (this drops all sybase support for Mac PPC!)

Client Changes:
[new] Data Drag and Drop
[new] Client Design mode
[new] Full support for linked relations in scripting and UI design
[new] Improved form inheritance support
[new] Webclient anchoring support
[new] Windows key shortcuts plugin
[new] Foundset multiselect support
[new] ValueList fallback support
[new] Extended i18n support

Deployment Changes:
[new] Applicationserver clustering using Terracotta
[new] Maintenance mode with pre- and post import hooks
[new] Mark Database Servers as a clone of ...., to have Servoy automatically update mulitple clones of the same database datamodel on import

Detailed overview

Developer Changes:
[new] JSUnit support (automated testing of JavaScript functions). See JSUnit node in the Solution Explorer View, on a solution there is a context menu to start the tests for all JavaScript methods in the solution starting with "test"
[new] Possible to specify the function parameters in function declaration like:
function x(text)
* Possible to place comments outside the function declaration in the comments above (see JSDoc toolkit at ... gReference for the standard way of documenting JS code).

[new] Possible to assign values to the parameters of a function when the function is assigned to an event/command in the Properties pane in Developer
[new] Methods attached to events and commands now automatically get a JSEvent where applicable
[new] Methods that are called by events like a Button's onAction now automatically receive a JSEvent object as first argument.
* Legacy code that re-uses methods for both event handlers and inline usage might behave differently because of the unexpected first argument passing when triggered by an event

[new] Events and Methods show their default arguments in properties pane in Developer
[new] Configurable JavaScript formatting (can be shared in a profile format, to have all developer in a team use the same coding convention)
[new] Integration with Eclipse SQL Explorer, have to be installed separately via eclipse update mechanism like doing for SVN. Eclipse SQL Explorere, sees the database connections defined in Servoy automatically (see: data tab in Table editor and the Context menu entry for Database Servers)
[new] Basic javascript profiler view
[new] Component templates:
Allows for storing a all form property settings in a template: See context menu of a form. If elements are selected o the form while saving the template, the elements are also part of the template.
When creating a new form, it's possible to select one of the previously saved templates. All form properties and possible elements with their properties will be copied onto the newly created form
Templates that contain elements can also be used to copy the group of elements to an existing form (in this case form properties contained in the template are not taken into account)
A list of saved Templates can be found under Resources in the Solution Explorer.
Templates are part of the Resources project and thus can be saved in a Team Provider and thus shared among developers
Note: Templates are 'templates', meaning that altering a previously saved template doesn't alter all the locations where the template was previously used to create a form and move elements on an existing form.

[new] Support for use of globals variables inside custom valuelists (like:|globals.CONTACT_TYPE_CONTACT)
[new] Support for background-images in style sheets: background-image: url(media:///header-bg.png);
[new] Method Editor supports multi-line variables
[new] Exceptions thrown in TableEvents will cause the save to fail. The exception will be set on the failed record, retrievable through databaseManager.getFailedRecords()
[new] Import .servoy file in Servoy Developer, directly into workspace
[new] i18n key/message synchronization via team support
[new] i18n is file based in developer, to allow SVN/CVS usage on i18n content
[new] Ability to bind a valuelist to a global method for retrieval of valuelist data
[new] Ability to externalize hardcoded strings to i18n keys (accessible through context menu of i18n node in solution Explorer)
[new] Improved debug scripting console (called Interactive console), including code completion
[new] regex node listed under JSLib
[new] Option to turn on Javascript Strict mode in Developer, see the JavaScript preferences. More waring are reported. For example:
function x(a,a) {...} //will raise a warning about the duplicate arguments
function x(a) {var a = 10} //will raise a warning about hiding an argument
if (x = 10) //will raise a warning about doing an assignment ("if ((x = 10))" will not!)
var a = 10; var a = 11 //will raise warning about redeclaration of variable
function x() { if (true) { return 1} else {}} //will raise warning about inconsistent returns
function x() {var x; x; x = 10} //will raise warning about useless expression

[new] Warnings in Developer for elements outside form boundaries
-Elements (partly) located outside the bounderies of a form (outside the defined height and width of a form) will generate warning markers as of 4.2, because elements placed this way will result in scrollbars in the Webclient, while the Smart Client won't
-more solution integrity checks, to produce warning if possible problems are detected

Important: This release contains a developer workspace migration, it will merge servoy form items (files) into the form file, resulting in far less files and better developer performance.
It is strongly recommended to:
A) When using the Servoy Team provider / repository, every developer can convert the workspace
B) When using SVN/CVS:
1-make sure all solution data from all developers is committed
2-have one developer do the workspace migrate action
3-commit the new version (in case of SVN/CVS)
4-have the other developers use "team update" on the the non-active(!) solutions
Warning: A converted workspace cannot be used by an older Servoy developer version

Servoy client:
[new] Data Drag and Drop & Client Design mode:
-In developer see the form events onDrag, onDragOver and onDrop event on Forms
-Client designmode (resize and relocate elements on a form in the client by user drag/drop/select actions, see controller.get/setDesignMode())
-See the servoy_sample_solutionModel for DnD in client design mode
-Added controller.recreateUI(): brings a loaded form in sync with it's solutionModel blueprint (important for client design)

[new] Full support for linked relations in scripting and UI design:
-Support in UI to place dataproviders multiple (linked) relations deep
-Support for placing a tab on a tabPanel over multiple (linked) relations
-Support to sort over multiple (linked) relations

[new] Smart Client combobox dropdown width calculation based on dropdown content
[new] Support added for searching/sorting on aggregates
[new] Forms can be created without having a datasource (table) assigned
[new] Ability to create forms without formparts (so you can define all form parts in the child form)
[new] JSEvent (object used by window plugin and drag and drop events) Note: application.getLastKeyModifiers has been deprecated
-data: allows you to add custom data to the event, useful for drag 'n' drop events
-getElementName(): get the name of the element that triggered the event
-getFormName(): get the name of the form that triggered the event
-getModifiers(): gets the modifiers that were applied to the event trigger
-getSource(): object reference to the element that triggered the event (same as: forms.xxxx.elements.yyyy)
-getTimeStamp(): the timestamp when the event trigger occurred
-getType(): gets the type of event
-getX(): returns the x coordinateof the cursor at the moment of the event trigger
-getY(): returns the y coordinateof the cursor at the moment of the event trigger

[new] Foundset multiselect support (JSFoundSet.multiSelect, JSFoundSet.getSelectedIndexes(), JSFoundSet.getSelectedRecords(), JSFoundSet.setSelectedRecords())
[enh] Extended i18n support:
-Support added in i18n area for country and variant: en_US vs. en_UK etc.
-Support for any combination of Language and Country in the i18n area

[new] .newRecord(index): allows to create a new record at a certain index
[new] valuelist fallback support, to lookup/display values which are not longer selectable for end user
[new] Added group/ungroup support to group elements together: The group can be named, so it can be scripted against.
-Resizing a group will rezise the elements in the group.
-group can be saved as a template

[new] Advanced operators for relation definition:
-Case insensitive equal: #= -Case insensitive not euqal: #!=
-Case insensitive like: #like
-Case insensitive not like: #not like
-Null or equal: ^||=
-Null or greater than: ^||>
-Null or smaller than: ^||<
-Null or greater or equal to: ^||>=
-Null or smaller or equal to: ^||<=
-Null or not equal to: ^||!=
-Null or like: ^||like
-Null or not like: ^||not like
-Null or case insensitive equal: ^||#=
-Null or case insensitive not like: ^||#!=

[new] optional logging level parameter to application.output(...). See Application - Constants - LOGGINGLEVEL
[new] onRightClick event on fields
[new] onFocusGained/Lost events on Forms: to get notified of form elements getting or loosing focus
[new] onDataBroadcast event on Solution: to get notified of incoming dataBroadCasts
[new] controller.getFormContext(): function to get the parent form stack of a visible form
[new] application.isInDeveloper(): returns true if running developer. application.getApplicationType() will start to return the same values per client in application server and developer
[new] option to name locks and consecutively release only the locks with the specified name, instead of releaseAllLocks (see optional parameters on databaseManager.acquireLock and databaseManager.releaseAllLocks)
-Servoy locks can also be turned into real database lock (select-for-update statement, admin-page option)

[new] afterRecordInsert/afterRecordUpdate/afterRecordDelete events on table level, to complement the existing onRecordXxxx events that fire before the action
[new] support for onAction on label linked to field using labelFor to render the Column header: overrides onSort in TableView, allowing method triggering in findMode
[enh] improved tabSequence support in Tableview
[new] JSColumn.isUUID(): check if the columns is marked as UUID
[new] JScolumn.getTitle(): returns the title from the properties
[new] JSColumn.getForeignType(): returns the type
[new] JSColumn.getScale(): returns the precision of a a numeric column (Note: JSColumn.getLength() now returns the length of a numeric column properly)
[new] foundset.loadRecords(pk): to load a single record by its primary key value (only single column number/UUID are supported)
[new] application.showCalendar(Date): to show the calendar with the specified date allready selected (since 4.1.3)
[new] JSRecord node under the Database Manager, with functions .getPKs() and .isEditing()
[new] UUID object node under application with functions .toBytes() and .toString().

[new] Improved of GlobalMethod column converter, the attached method will receive more information/arguments
[new] Added solutionModel types for Servoy objects for testing the type of objects using the operators instanceof and typeof
[new] solutionModel.cloneComponent(...): duplicates an element in the solutionModel
[new] solutionModel.cloneForm(...): duplicates a form in the solutionModel
[new] JSForm.getParts(): returns the parts
[new] JSPart.getPartYOffset(): returns the Y offset
[new] element.getAbsoluteFormLocationY(): returns the absolute location for the solutionModel
[new] support to create style sheets at runtime through the SolutionModel
[new] solutionModel.newMedia support
[new] Forms references in a globals variable / global variable holding an (associative) array will not be removed from memory

[new] Terracotta integration for clustering Servoy application servers (documentation how to setup a cluster will follow soon)
[new] Multiple database model updates during import, when dbservers are flagged as cloneFrom base dbserver, to support switchServer better in SaaS env.
[new] solution import has an option to report what it did change on datamodel(s)
[new] Ability to disable batchprocessors (all or individual) on the admin page, so they do not start automatically on server (re)start
[new] Application Server maintenance mode
-scripting support before and after import solution at the server,when the importing solution contains modules starting with 'before_import' and/or 'after_import, those are started by batchprocessor (during these solution executions a special maintanance plugin is usable to alter the database datamodel)
[new] Added option to limit the upload size of files through media fields in the Web client (admin-page option)

Servoy WebClient:
[new] WebClient anchoring support, can be globally disabled on admin page if unwanted behavior
[chg] Webclient javascript will run in interpreted mode, instead of compiled mode, allowing the use on continuations

[new] massive update on public api at:
-3rd party Servoy aware beans can use Servoy property editors: If your bean info class calls pd.setValue("servoy_property_editor", "dataProvider") and the property type is String, Servoy Developer will use the data provider property editor from Servoy on a bean.
[new] REST web service plugin, which makes it possible to expose (form) methods as REST API handlers:
-The REST API is accessible through the url: : http://domain:port/servoy-service/rest_ ... e/formName
-The form needs to have the following methods:
-GET: ws_read()
-POST: ws_create()
-DELETE: ws_delete()
-PUT: ws_update()
-A sample solution is included in the Servoy distribution (servoy_sample_rest_ws.servoy), detailing how to retrieve data from the http request and to return a response.
[new] 'window' plugin which allows to register methods to be fired based on key combination pressed (SC and WC). See plugins.window.create/removeShortcut()
[new] number of bytes to read from a file using plugins.file.readFile('somefile', noOfBytes): to read the bom for a file with a bom
Jan Blok
Jan Blok
Posts: 2684
Joined: Mon Jun 23, 2003 11:15 am
Location: Amsterdam

Return to Announcements

Who is online

Users browsing this forum: No registered users and 1 guest