Servoy 6.0 beta 1

We are pleased to announce the immediate availability of Servoy 6.0 beta 1.

This version is available through the download option on the Servoy website and auto update.
Always make a backup of your current Servoy installation (directory and database) before installing/upgrading.
To update a Servoy eclipse open Check for updates via help menu.

For all the highlights read the wiki

Known issue: JSUnit icon is missing

Smartclient Changes
[fix] 371604 databaseManager.refreshRecordFromDatabase does not set the foundset selected record index

Webclient Changes
[fix] 370865 Continuations do not work correctly when the methods are invoked from anchor tag links in HTML_AREA non-editable fields

Developer Changes
[enh] 367990 Create data source directly from sql query (shortcut method, combining 2 others)
[enh] 239552 show more object size properties (on status-bar)
[chg] 355291 Form Editor: more fine grained layering controls
[fix] 219170 JavaScript has a preference to auto indent code when pasting it in, but this doesn’t work so well
[fix] 330419 Open media files from solution explorer using the viewer that is configured in Eclipse to open files of the specific type
[fix] 370529 Selecting multiple objects in form designer is time consuming
[fix] 369179 XML conversion to javascript literal object.

Server Changes
[fix] 362632 ConfigServlet easier network settings admin page.
[fix] 373559 Pushing more LaF options via admin page

Plugin Changes
[chg] 125194,337854 support more than Post/Get on http plugin (supports now all http actions)

Is there a list of ‘Must Do…’ changes in a a solution to move from V5.1.7 to 6, to prevent them breaking?

@Kahuna
Perhaps you could provide yours… :wink:

ALL fields in ALL table-view forms are not applied to the right style.

I have this style:

field
{
	font: 11pt "Tahoma";
	font-weight: normal;
	color: #000000;
	text-align: left; 
	margin: 0px 0px 0px 3px;
	background-color: #ffffff;
	border-style: solid;
	border-color: #aaaaaa;
	border-width: 1px 1px 1px 1px;
}
field.bold
{
	font-weight: bold;
}

field.list
{
	border-width: 0px 1px 1px 0px;
	border-color: #ffffff;
}

All fields have the style: list.

here is screenshot: (and what you see is not Tahoma 11pt)
[attachment=0]Schermafbeelding 2011-04-08 om 20.25.54.png[/attachment]

filed a case: 374443

Thomas Parry:
@Kahuna
Perhaps you could provide yours… :wink:

Not tried it yet - which is the purpose of the question - were you being sarcastic Thomas??

I was kind of hoping Servoy had a quick start guide such as - here’s what you need to change to get running???

@Kahuna :lol:
Well here’s my first:
returning data from an authenticator module method called by a login module fails (null returned) whereas in 5.2.7 it worked fine. (So wait for this to be fixed…)

Thomas Parry:
@Kahuna :lol:
Well here’s my first:
returning data from an authenticator module method called by a login module fails (null returned) whereas in 5.2.7 it worked fine. (So wait for this to be fixed…)

Well that is a bug and not an expected change of behavior going from 5.1.x to 6.0. Which is what Ian was asking for.

@kahuna, I think for now you need to scan all the [enh] tagged issues in the release notes of 6.0a1 up to this version and see if that affects your code.

Thanks for the Heads up on the bugs Guys. I think we’ll leave it alone for another beta or two.

Hope Servoy manage to get a How To … up on the WIKI soon for the roll-over, I think they did something similar for 4 to 5 if my memory serves me well, but certainly Bob Cusik did a great job of explaining the differences and how to handle 5 in his Servoy Camp slides.

Thomas Parry:
returning data from an authenticator module method called by a login module fails (null returned) whereas in 5.2.7 it worked fine. (So wait for this to be fixed…)

Tom,

This is not an issue with the authenticator, but with serialization of the resulting object.
It works fine with returning a simple value, but I did see an error with returning a data set.

What are you returning?
What does the stack trace in the logs say?

Rob

I think for now you need to scan all the [enh] tagged issues in the release notes of 6.0a1 up to this version and see if that affects your code.

No need for this, just read the Release Notes on the wiki: http://wiki.servoy.com/display/beta/New+in+this+release. It contains a complete overview of all things new and improved in Servoy 6 up to Servoy 6.0 A7 (B1 additions will be added today.)

The paragraph “Solution Development” starts of with a list of the behavior changes which you would need to review to see if they might impact your solution. Besides those, your solution should just work.

Now, additionally there are the new things that were introduced that you might want to start using, possibly replacing now deprecated API. The new items in the scripting API and also the list of items we deprecated are also listed in the Solution Development section of the release notes. (Note that deprecated doesn’t mean that it won’t work anymore, it just means that there is a better way to do things. Also note that in Servoy 6 warning markers are generated in Servoy Developer for JavaScript code that uses deprecated scripting API)

Thirdly we introduced much better designtime validation of the JavaScript code, which most likely results in loads of warnings. Note these are warnings, not errors, so your solution could work just fine. However, the new refactoring functionality and/or the improved JavaScript search, search for references and Call Hierargy all depend on the build/validation process in Servoy Developer being able to completely analyse your code. Many of the builder/validator warnings generated in Servoy Developer are indications that that process cannot resolve references to objects or properties of objects that you refer to in your code. Besides a possible bug in your code here and there, most of these warnings can be solved by properly annotating your methods with JSDoc that document that parameters and the returnType of the method.

The Script Editor section in the Release Notes on the wiki contains an extensive overview of the options you have in the JSDoc area.

Do not get scared by the shear number of warnings you might have in your solution when you first open it up in Servoy Developer in Servoy 6: documenting 1 method with JSDoc might solve many warnings throughout your code.

If you run into anything that doesn’t work like it worked in Servoy 6 and it’s not listed under the behavior changes in the release notes, please let us know, so we can either fix it, or update the release notes accordingly

Hope this helps,

Paul

pbakker:
Hope this helps,

Paul

Yes that helps a lot thanks Paul.

I reckon we will wait for the next beta before venturing into 6 but for the first time in a while I’m getting excited about Servoy again! Looking forward to trying out some of these new tools.

Thanks fro the feedback - we’ll keep an eye on the Wiki a bit more closely.

rgansevles:

Thomas Parry:
returning data from an authenticator module method called by a login module fails (null returned) whereas in 5.2.7 it worked fine. (So wait for this to be fixed…)

Tom,

This is not an issue with the authenticator, but with serialization of the resulting object.
It works fine with returning a simple value, but I did see an error with returning a data set.

What are you returning?
What does the stack trace in the logs say?

Rob

Hi Rob,

I see the same issue in the current 5.2.7i1 build. I also return a dataset and get null. In the server log, I see this

java.lang.NoSuchMethodError: com.servoy.j2db.server.headlessclient.HeadlessClientFactoryInternal.createAuthenticator(Ljava/lang/String;Ljava/lang/String;[Ljava/lang/Object;)Lcom/servoy/j2db/ISessionClient;
at com.servoy.j2db.server.Zo.run(Zo.java:26)
at java.lang.Thread.run(Unknown Source)

patrick:
java.lang.NoSuchMethodError: com.servoy.j2db.server.headlessclient.HeadlessClientFactoryInternal.createAuthenticator(Ljava/lang/String;Ljava/lang/String;[Ljava/lang/Object;)Lcom/servoy/j2db/ISessionClient;
at com.servoy.j2db.server.Zo.run(Zo.java:26)
at java.lang.Thread.run(Unknown Source)

Patrick,

You need to get new server jars when running from svn trunk, this method has been removed.

Rob

@Rob,
Servoy 6.0 beta 1 installed from scratch.
A login module method based on the example for the enhanced security (onDataChange user name) calls an authenticator method (in another module) with the name of the user in order to do:

var dataset = databaseManager.getDataSetByQuery(<server name>, query, args, 10)

which then returns the dataset (which comprises 4 columns: staff_id (integer) user_name (string) name_last (string) and name_first(string)).

The authenticator method does its job properly then returns the dataset to the login module calling method where it is assigned to a form var. The contents are null.

This works in 5.2.7 but not in 6.0 b1

The log file has an error indicating some zip file cannot be opened and then the json error. I have attached the log file.

servoy_log.txt (5.88 KB)

Tom,

The authenticator (data set serialization) issue is fixed in next Servoy 6 build.

Rob

@Rob
I shall look forward to testing it in 6. but I would hope that this could be back ported to 5.2.x since I had issues with getting a byte array back from the authenticator (json serialisation).

Tom,

We will not port this back to miminize porting risks, Servoy 6 is expected to be final in July.

Rob

Hi Servoy,

What is the correct way to document in Servoy the properties of custom JavaScript “types” using JSDoc?

For example, in a form named “customTypes” we have something similar to:

/**
* Custom type for form parameters
*
* @constructor
* @param {String} _name
* @param {Object} [_value]
*/
function FormParam(_name, _value)
{
    /** @type {String} */
    this.name = _name;
    /** @type {Object} */
    this.value = _value;
}

/**
* Custom complex type which uses another custom type as a property
*
* @constructor
* @param {String} _formName
*/
function ComplexType(_formName)
{
    /** @type {String} */
    this.formName = _formName;
    /** @type {forms.customTypes.FormParam} */
    this.formParam = new forms.customTypes.FormParam('SPECIAL_PARAM_NAME');
}

Now when we use the custom ComplexType, the code completion works correctly but only for its own properties. If we try to access some of the properties of its formParam property, we get a warning that the property is not defined:

function doSomething()
{
    //create a custom type - note that adding the @type tag to explicitly specify the custom type does not help in resolving the described issue
    /** @type {forms.customTypes.ComplexType} */
    var _complexType = new forms.customTypes.ComplexType('someFormName');
    //here the "value" property of the formParam is "unknown" - the warning which we get is: "The property value is undefined in _complextType.formParam"
    _complextType.formParam.value = {foo: 123};
}

Is the above usage supported by Servoy? Are we missing something in the properties documentation for the custom types? When we inspect the “formParam” property of the _complexType variable in the example above, the tooltip in Servoy is something like:


formParam
Type
{forms.customTypes.FormParam} *

Note the trailing * at the end of the tooltip text - is this an indication of incorrect parsing of the @type JSDoc tag when the custom property is defined or are we using it incorrectly?

Any help on this is greatly appreciated!

does

var _complexType = new forms.customTypes.ComplexType(‘someFormName’);
_complexType.formName.AStringFunction()

work?

But i need to look into this, we don’t have full support for those types that are “packaged” (forms.xxx.Yyyy)

rossen:

do: this.formParam = new FormParam(‘SPECIAL_PARAM_NAME’); (instead of the package before it)

in your script.

Currently it is not supported that if you are in a js file A and you reference something in B that everything in B also get resolved (so things from a js file C)
This is currently not possible because that would make everything very slow (because constantly everything needs to be resolved not to mention recursion B reference C and C references B)

So try to keep everything local.