[GemStone-Smalltalk] Getting started with Gembuilder for VW

Annick Fron list at afceurope.com
Thu Dec 20 02:53:41 PST 2018


Hi Martin,

	I have made some progress with the class mapping. Still, I am struggling with inheritance, because it seems you need to respect the hierarchy to map classes. I wanted to use the « createInGs » menu from a whole package in Visualworks, but it looks like it does not respect this precedence.

	This would be nice though !

	Best regards

	Annick

> Le 21 nov. 2018 à 17:32, Martin McClure <martin.mcclure at gemtalksystems.com> a écrit :
> 
> On 11/21/18 6:54 AM, Annick Fron wrote:
>> Hi Martin,
>> 
>> 	This was helpful.
>> 	But my main issue is that I have the same classes both in UserGlobals and UserClasses, and sometimes with a different version.
>> 	If I user the right click menu « create in Gs » on a class in a browser, it creates it in UserClasses. But if I define connectors, it adds the same class name in UserGlobals.
> 
> Ooh, that inconsistency *may* be a bug. We'll investigate that -- thanks
> for bringing it to our attention.
> 
> In the meantime, I recommend turning off generateClientClasses and
> generateServerClasses. Then, when connectors connect at login they will
> just map the client and server classes together, and not generate any
> new classes. You can still use the browser's "create in GS" and "compile
> in GS" with those options turned off.
> 
>> 	Besides, all my classes have a namespace, e.g. Compet.Competition.
> 
> This could also be the source of some of the difficulty. GemStone does
> not have VW-style namespaces, and the design of GBS long pre-dates the
> time when VW added namespaces.
> 
> By default, connectors only look in the Smalltalk namespace on VW.
> However, as documented on page 72 of the GBS Users Guide, you can use a
> VW fully-qualified name when creating a connector.
> 
>> 
>> 	What is the difference between:
>> 
>> 	GBSM evaluate: ‘MyClass myInstances’ 
>> and
>> 	MyNamespace.MyClass myInstances performOnGsServer: #myInstances
> 
> I think that the latter would actually be:
> 
> 	MyNamespace.MyClass performOnGsServer: #myInstances
> 
> With that change, the effect will be the same, the mechanism different.
> #evaluate: invokes the compiler on the server, and evaluates the
> resulting method. #performOnGsServer: does not involve the compiler, it
> just sends a message. In this case it doesn't matter much which you use,
> but if the necessary code already exists on the server I find it
> slightly more elegant to just send the message.
> 
> Regards,
> -Martin



More information about the GemStone-Smalltalk mailing list