Giter Site home page Giter Site logo

glassdb's Introduction

GsDevKitBuild Status

Work in Progress eventual replacement for glassdb/glass project

Installation

Gofer new
  package: 'GsUpgrader-Core';
  repository: (MCGitHubRepository location: 'github://GsDevKit/gsUpgrader:dev/repository');
  load.
(Smalltalk at: #GsUpgrader) upgradeGsDevKit.

glassdb's People

Contributors

googlecodeexporter avatar jbrichau avatar

Watchers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar

glassdb's Issues

Creating class with nil superclass

~From Hernan: 

 I'm trying to create a class  without superclass (that is, nil as 
superclass) and I can't because UndefinedObject does not implement 
#subclass:instVarName:... 


Back in July I switched to using
#instVarNames:classVars:classInstVars:poolDictionaries:inDictionary:category:
for creating classes from Monticello and if anyone attempts to create a
subclass of nil itself, they will run into trouble, because that method
isn't implemented in UndefinedObject... 

Need to fix that.

internal bug: 40431

Original issue reported on code.google.com by [email protected] on 13 Jan 2010 at 8:53

atEnd fails for compressed files

What steps will reproduce the problem?
| file |
file := GsFile openReadOnServerCompressed: 'nohup.out.gz' .
Array with: file position with: file fileSize with: file atEnd
anArray( 0, 2833, true)

| file |
file := GsFile openReadOnServer: 'nohup.out.gz' .
Array with: file position with: file fileSize with: file atEnd
anArray( 0, 2833, false)

What is the expected output? What do you see instead?
atEnd = false



Original issue reported on code.google.com by [email protected] on 28 Jan 2010 at 8:22

#theNonMetaClass packaged oddly

It should be in one of the mcz packages, but is in SessionMethods symbol
dictionary ... also it's in an odd method category

Original issue reported on code.google.com by [email protected] on 13 Jan 2010 at 9:25

Date class>>readFrom: interprets '01/12/10' as '01/12/1910'

From Norbert:

there is a problem with Date in gemstone. I discovered using my pier blog.
The problem is that

(Date readFrom: (Date today asString readStream)) year

is 1910. The publication set by pier is a short form of mm/dd/yy and it
seems that on save time when it gets parsed the year becomes 1910.

In Date>>readFrom:

there the lines

year < 10 ifTrue: [year := 2000 + year]
                ifFalse: [ year < 1900 ifTrue: [ year := 1900 + year]].

So from this year on printing and parsing are not complementary.

-----
From Gerhard:

I think the follwing timestamps should return the same result:

(TimeStamp fromString: '01/12/10 09:43:29') asSeconds -2870781391
(TimeStamp fromString: '01/12/2010 09:43:29') asSeconds 284978609

Tested with GemStone 2.3.1.6! (Metacello 0.232.3)

It does work in Pharo or Squeak.


Original issue reported on code.google.com by [email protected] on 27 Jan 2010 at 5:59

DateAndTimeANSI>>dayOfWeek does not play well with timezones

TimeZone current dstPrintString. " SAST "
(DateAndTime year: 2010 month: 1 day: 24) dayOfWeek "A Sunday, returns 7,
should have returned 1".

What is the expected output? What do you see instead?

I expected the Sunday to be listed as day 1.

Please provide any additional information below:

Fix is to add the offset to the seconds, like so:
^(seconds + offset) // 60 // 60 // 24 + 1 \\ 7 + 1

Further methods that might need to take into consideration offset:

asDays
asSeconds
asPosixSeconds
DateAndTime>>asDuration

Original issue reported on code.google.com by danie%[email protected] on 26 Jan 2010 at 2:55

Mod deflate and keepalive in Apache keeps connections open too long

~From Ramon: 

I think somethings wrong with the FastCGI implementation. 

Everything seems to work fine until you enable mod deflate. With mod
deflate enabled, and keep alives on, Apache works fine and serves up a
static xml file or html file compressed just fine, but if you hit gemstone
the page is served fine, compressed, but the connection is held open until
the keepalive timeout expires. Disabling keep alives allows the connection
to die immediately, but is not really a great solution. 

I put this in the root virtual host... 


<IfModule deflate> 
# http compression 
DeflateCompressionLevel 9 
SetOutputFilter DEFLATE 
AddOutputFilterByType DEFLATE text/html text/plain text/xml application/xml
application/xhtml+xml text/javascript text/css 
BrowserMatch ^Mozilla/4 gzip-only-text/html 
BrowserMatch ^Mozilla/4.0[678] no-gzip 
BrowserMatch \bMSIE !no-gzip !gzip-only-text/html 
</IfModule> 


9:51amDale 

What is the desired bahavior? 
9:52amRamon 

that it knows when the connection is over and closes it 
9:52amDale 

on the Gemstone-side? 
9:52amRamon 

I'm unsure where the problem lies, but it's not apache, I tested with
static file to make sure 

apache disconnects immediately when finished serving the file 

but if you hit a gemstone page, apache holds the connection open for
whatever you keep alive timeout is, not sure how apache and fastgci
communicate or how mod deflate interacts with that 
9:54amDale 

Is it the connection to the browser that is kept alive or is the connection
between Apache and GemStone that is kept alive 
9:54amRamon 

in fact, I belive, just enabling mod deflate, without even putting anything
into your config, causes this to happen 

the browser 

could be both, don't know 
9:56amDale 

hmmm...I'll look at the code ... it interesting that the keepAlive setting
is the culprit ... 
9:56amRamon 

yup, and it only happens in the presense of mod deflate, otherwise the keep
alive stuff works as it should


Original issue reported on code.google.com by [email protected] on 14 Jan 2010 at 12:39

Bug/Error after using a string as a Monticello version

~From Paul: 

===== Your comments ============================================ 
Hi, 

So I thought it would be a good idea to use a word for the version 
number of a monticello commit a week or so ago.  Now when I want to 
load that commit or save what I have as another version, I get tons of 
errors.  I chose to use a word to signify that it is the deployment 
version of a package, in which I deleted all the half baked ideas I 
was exploring and just kept the bits that did the work. 

For instance, instead of LaBoquitas-pad.23.mcz I changed it to 
LasBoquitas-pad.slice1.mcz  It saved just fine but now I cannot save 
the changes I have made since then to another repository or load the 
LasBoquitas-pad.slice1.mcz.  I can change the 
LasBoquitas-pad.slice1.mcz to LasBoquitas-pad.23.mcz in the filesystem 
and load it just fine.  But then I cannot save it afterwards. 


The error when saving is: "An attempt was made to create an instance 
of Float from ReadStream but either the format is incorrect or the 
contents of ReadStream are incomplete." 

I haven't tried loading it in a few days and don't want to in the 
event it wipes out my changes during that time.  I have uncompressed 
the .mcz file and changed the string in the file 'version', but that 
doesn't seem to have helped.  I have backed up my repository so don't 
think I am at risk of losing my changes, I just can no longer use 
Monticello with this package. For other packages it works just fine. 

===== Your comments end ======================================= 
===== Backtrace ================================================== 
... 
... 
===== Backtrace end ============================================= 
27 May 2009 9:54:45 am 

Client VM: unix - a SmalltalkImage 
Client Image: Pharo0.1 [Latest update: #10259] 
GemTools Client: GemStone-dkh.467 
GLASS: GLASS.230-dkh.231 

===== Client Version Report ============================================ 
cpuArchitecture: ia32 
cpuKind: x86_64 
gsBuildArchitecture: ia32 (Linux) 
gsBuildDate: Thu Dec  4 11:33:32 2008 
gsRelease: 2.3.1 
gsVersion: 2.3.1 
nodeName: paul-laptop 
osName: Linux 
osRelease: 2.6.28-12-generic 
osVersion: #43-Ubuntu SMP Fri May 1 19:31:32 UTC 2009 
processId: 16950 
processorCount: 2 

===== Stone Version Report =========================================== 
cpuArchitecture: x86-64 
cpuKind: x86_64 
gsBuildArchitecture: x86-64 (Linux) 
gsBuildDate: Thu Dec  4 11:33:32 2008 
gsRelease: 2.3.1 
gsVersion: 2.3.1 
nodeName: paul-laptop 
osName: Linux 
osRelease: 2.6.28-12-generic 
osVersion: #43-Ubuntu SMP Fri May 1 19:31:32 UTC 2009 
processId: 16881 
processorCount: 2 

===== Preferences ============================================ 
annotationPanes=true 
mercuryPanel=true 
optionalButtons=true 
syntaxHighlightingAsYouType=true 

Original issue reported on code.google.com by [email protected] on 13 Jan 2010 at 11:42

working copy package name algorithm slightly off

MCVersionNode>>packageName and MCRepositoryNode>>workingCopyFor: should 
be using this algorithm to extract package name from working copies: 

| all wc | 
all := MCWorkingCopy allManagers select: [:ea | | pName | 
  pName := ea package name. 
  (packageName beginsWith: pName)  
    and: [ (packageName size = pName size)  
             or: [ (packageName at: pName size + 1) = $- ]]]. 
all isEmpty ifTrue: [^ nil]. 
wc := all detectMax: [:ea | ea package name size]  

Original issue reported on code.google.com by [email protected] on 13 Jan 2010 at 9:22

possible infinite loop in 3.0 utf decoding primitive

running Seaside unit tests in 3.0, I hit in infinite loop, two samples of
the stack with USR1 resulted in the same stack: 

Signal SIGUSR1 received printingStack ... 
Begin attempt to print C-level stack at: Fri Jul 17 16:31:07 PDT 2009 

Thread 4 (Thread 0x4275f950 (LWP 17541)): 
#0  0x00007f56ed15a941 in recv () from /lib/libpthread.so.0 
#1  0x00007f56ebe87598 in SocketRead () 
#2  0x00007f56ebe7aac1 in stnOobReaderThreadFn () 
#3  0x00007f56ed1533f7 in start_thread () from /lib/libpthread.so.0 
#4  0x00007f56ec4fab3d in clone () from /lib/libc.so.6 
#5  0x0000000000000000 in ?? () 
Thread 3 (Thread 0x40a78950 (LWP 17542)): 
#0  0x00007f56ed15a941 in recv () from /lib/libpthread.so.0 
#1  0x00007f56ebe87408 in SocketRead2 () 
#2  0x00007f56ebe7ad37 in shrpcmonSocketReadFn () 
#3  0x00007f56ed1533f7 in start_thread () from /lib/libpthread.so.0 
#4  0x00007f56ec4fab3d in clone () from /lib/libc.so.6 
#5  0x0000000000000000 in ?? () 
Thread 2 (Thread 0x41279950 (LWP 17543)): 
#0  0x00007f56ec4f1c86 in poll () from /lib/libc.so.6 
#1  0x00007f56ebdb426a in timeoutThreadFn () at intloopamd64.asmm4:7419 
#2  0x00007f56ed1533f7 in start_thread () from /lib/libpthread.so.0 
#3  0x00007f56ec4fab3d in clone () from /lib/libc.so.6 
#4  0x0000000000000000 in ?? () 
Thread 1 (Thread 0x7f56ed56c6f0 (LWP 17537)): 
#0  0x00007f56ed15b34f in waitpid () from /lib/libpthread.so.0 
#1  0x00007f56ebe54292 in forkAndWait ( 
#2  0x00007f56ebe54458 in HostPrintCStack () 
#3  0x00007f56ebe8debf in HostFaultHandler () 
#4  <signal handler called> 
#5  0x00007f56ebdc5a2c in om::decodeUTF8_493 () at intloopamd64.asmm4:7419 
#6  0x00007f56e79e7917 in ?? () 
#7  0x00007f56e1908ed8 in ?? () 
#8  0x00007f56ebd4b9ab in IntLpBCLoop () at intloopam64.m4:1 
#9  0x00007f56ebd31bf8 in IntLpSupControlLoop () 
#10 0x00007f56ebd287e1 in IntContinue () 
#11 0x00007f56ebc3fe0d in GemDoContinue () 
#12 0x00007f56ebc03650 in dispatchLoop () 
#13 0x00007f56ebc051c9 in GemDoRpcLoop () 
#14 0x00007f56ebbfca7e in doConnect () 
#15 0x00007f56ebbfd64a in dispatchCommand () 
#16 0x00007f56ebbfdcaf in Gdbg () 
#17 0x00007f56ebc05c3f in gemMain () 
#18 0x0000000000401465 in main (argc=4, argv=0x7ffff55865c8) 

Need to do a little more work to isolate which unit test is causing the
infinite loop (as we didn't get a Smalltalk stack from USR1)... 

Original issue reported on code.google.com by [email protected] on 13 Jan 2010 at 9:34

  • Blocking: #111

FastCGI handler + cookies

~From Ken: 

The current FastCGI handler is adding expiration dates to my cookies   
when I really don't want it to. 

FSSeasideHandler>>addCookie:toStream: gets a lot simpler (and does   
what I want w.r.t. expiration dates) if I change it to simply: 

> addCookie: aWACookie toStream: aStream 
>         aStream nextPutAll: 'Set-Cookie: '. 
>         aWACookie writeOn: aStream. 
>         aStream 
>                 nextPut: Character cr; 
>                 nextPut: Character lf 

Maybe it's just left-over debugging code, or maybe somebody's front- 
end needed the current implementation, but this one works for me on   
Apache and nginx. 

--

Original issue reported on code.google.com by [email protected] on 13 Jan 2010 at 9:32

class hierarchy corruption possible when ivar shadowing occurs

Given a class hierarcy like the following: 

  A () 
    B (ivar) 
    C (ivar) 

an error will occur if an attempt is made to move the ivar instance
variable to A (and remove it from B and C) to achieve the following hierarchy: 

  A (ivar) 
    B () 
    C () 

The shadowing error occurs when rebuilding subclasses of the new class A
... When it occurs the browser will end up showing something like the
following: 

  A () 
  A (ivar) 
  B (ivar) 
  C (ivar) 

Where class A shows up twice in the browser, once for the new class A and
once for the old superclass of B and or C... 

The fix involves catching the shadowed ivar error and scheduling recompiles
for all of the subclasses of the class that originally created the error,,, 

This problem has shown up when trying to load Pier 1.2 on top of Pier 1.1
in GLASS


Original issue reported on code.google.com by [email protected] on 13 Jan 2010 at 8:51

SeasideHTTPService>>unwrapCookies has problem when cookies turned on

I think there is a bug in SeasideHTTPService>>unwrapCookies: 

unwrapCookies: aHttpRequest 

   | cookies | 
   aHttpRequest hasCookie 
      ifTrue: [ cookies := aHttpRequest cookies ] 
      ifFalse: [ cookies := Dictionary new. ]. 
   ^ cookies 

The ifTrue: block is not right. The parameter aHttpRequest is from class 
HTTPGet and this does not have a cookies method. It has only a cookie 
method. 

Original issue reported on code.google.com by [email protected] on 13 Jan 2010 at 11:32

Beware autoCommit and autoMigrate

~From Danie: 

During our upgrade, we realised that MCPlatformSupport autoCommit and 
autoMigrate is true by default. 

We needed that to be false so that we can load in our code and then 
first run our migrations. In fact, generally we prefer to control when 
we commit when we are in a topaz session. 

I think I understand the reasoning behind this (you want this to 
happen automatically in GemTools). It confused me for quite a time 
that that migrations did not want to work as expected :-) 


------------- 

Perhaps the defaults should be off when GemTools is not involved

Original issue reported on code.google.com by [email protected] on 13 Jan 2010 at 9:26

Need float to string method that is common between Squeak and GemStone

Hi, I have a compatibility issue between Gemstone and Squeak. My
application needs to display a Float (SmallDouble in Gemstone) asString,
formatting with 3 decimals. 

Ej: 3.234897234 -> '3.234' 

On Squeak I am  doing: 

SomeClass>>stringFromFloat: aFloat 
  aFloat isNil 
      ifTrue: [^''] 
      ifFalse: [ ^aFloat roundTo: 0.001 asString]. 

And on Gemstone I do: 

SomeClass>>stringFromFloat: aFloat 
    aFloat isNil 
        ifTrue: [^''] 
        ifFalse: [ ^aFloat asStringUsingFormat: #(10 3 false)]. 


I don't found a common method to do that so I have to modify this methods
on each ambient.  Wich is the correct solution for that? 

I am using Squeak for development and Gemstone for deploy. I would like the
process of put my code in production was trivial. Is it possible? 

Original issue reported on code.google.com by [email protected] on 13 Jan 2010 at 9:40

confusing differences browser in Pharo tools

Edit a couple of methods in the Maglev .mcz
open Monticello tool, pick Maglev, pick cache , pick changes

The PatchBrowser is showing 
  One would think the patch browser would show
    changes from ancestor to current, but it actually shows
  changes from image  to the  ancestor.

  So the window should have a title or info line
  saying "changes from image  to ... " in some form, 
  Then it would be clear that the "Install" button means revert .


Original issue reported on code.google.com by [email protected] on 13 Jan 2010 at 9:31

  • Blocking: #88

Commit failure because of gate Semaphore in FSGsSocketServer

FSSeasideHandler>>#'answerResponderRoleCheckingLock:' line 28 attempts to
commit an instance of a subclass of ExceptionA. This object holds an
ExceptionHandler that includes an ExecutableBlock. This block seems to
include sufficient context that it includes the gate semaphore in
FSGsSocketServer. In general, it appears that persisting exceptions runs a
risk of dragging disallowed objects to the database.

Original issue reported on code.google.com by [email protected] on 13 Jan 2010 at 11:19

Base64MimeConverter(c)>>encodeInteger: uses wrong length

  I believe the send of      _digitLength
  should be                digitLength


category: '*squeak'
classmethod: Base64MimeConverter
encodeInteger: int
    | strm |
    "Encode an integer of any length and return the MIME string"

    strm := ReadWriteStream on: (ByteArray new: int digitLength).
    1 to: int _digitLength do: [:ii | strm nextPut: (int digitAt: ii)].
    strm reset.
    ^ ((self mimeEncode: strm) contents) copyUpTo: $=    "remove padding"
%


Original issue reported on code.google.com by [email protected] on 13 Jan 2010 at 9:04

TDD in TestRunner

I should be able to define undefined class names in the TestCase, and once
defined it should recompile. That would allow real #tdd on #gs64 

(http://twitter.com/emaringolo/statuses/4642302959)

Original issue reported on code.google.com by [email protected] on 13 Jan 2010 at 9:18

UserDefinedError defaulAction ends up with bogus error message

self error: 'blah' should end up showing 'blah' as the messageText on 
the client, instead the error string is show as: 

'The Specified Error Dictionary contains no information for error number
2318 in the...' 

I assume that this might be related to the fact that the category field 
is repurposed at times for the new ANSI scheme...

Original issue reported on code.google.com by [email protected] on 13 Jan 2010 at 11:30

MNU in pharo tools during Merge

 #operation   is the selector not understood

[1] Exception >> signal (envId 0)
    res: nil
    receiver: aMessageNotUnderstood
[2] Object >> doesNotUnderstand:args:envId: (envId 0)
    aSymbol: #'operation'
    anArray: anArray( )
    envId: 0
    ex: aMessageNotUnderstood
    receiver: aMCConflictNode
[3] Object >> _doesNotUnderstand:args:envId: (envId 0)
    aSymbol: #'operation'
    anArray: anArray( )
    envId: 0
    aProc: nil
    prefix: nil
    receiver: aMCConflictNode
[4] MCPatchAwareNode >> install (envId 0)
    loader: aMCPackageLoader
    receiver: aMCConflictNode
[5] MCCmdInstallOperation >> execute (envId 0)
    receiver: aMCCmdInstallOperation
[6] [] in  OBCommand >> clientExecute (envId 0)
    self: aMCCmdInstallOperation
    receiver: aMCCmdInstallOperation
[7] OBUpdateConcentrator >> recordUpdatesDuring: (envId 0)
    aBlock: anExecBlock0
    self: anOBUpdateConcentrator
    receiver: anOBUpdateConcentrator
[8] OBCommand >> clientExecute (envId 0)
    self: aMCCmdInstallOperation
    receiver: aMCCmdInstallOperation
[9] System class >> _gsReturnToC (envId 0)
    receiver: nil


Original issue reported on code.google.com by [email protected] on 13 Jan 2010 at 9:20

GemTools 2.3.1 preview missing OBMorphicIcons>>arrowUpAndDown?

~From Thierry: 

On a Mac, when opening a System browser from GemTools 2.3.1 preview, 
to GLASS beta 11, after few clicks on the right panel, I get an error: 

Message not Understood: OBMorphicIcons>>arrowUpAndDown. 

If the System browser is closed and then reopened, then error goes 
away for few clicks, but it eventually comes back. 

It seems to happen when looking at the class side of the class 
Behavior. I tried few other classes and this was fine. 
--------------- 

Here's the implementation: 

arrowUpAndDown 

    ^self overriddenAndOverrides

Original issue reported on code.google.com by [email protected] on 13 Jan 2010 at 9:24

  • Blocking: #88

SpError will catch all ExceptionA exceptions ... not correct

While working with a GemStone application that Tobias sent to me  
(help with performance), I discovered that SpError was catching 
Notifications incorrectly. With James' help we tracked the problem down 
and have a proposed solution. 

GemStone-Exceptions-dkh.33 has the proposed fix. 

Tobias is using Hyper for his own RESTful web server based on GLASS,  
which explains why we haven't seen this problem in the wild for  
Seaside users

Original issue reported on code.google.com by [email protected] on 13 Jan 2010 at 11:31

SmalltalkProxy>>addToStartUpList: should be implemented

Casting a vote for inclusion of another "do nothing" method in the   
Bootstrap package. 

        SmalltalkProxy>>addToStartUpList: anObject after: anotherObject 
                "Do nothing for now. Semantics for what needs to be started
at   
'start up' differs between GemStone and Squeak" 

Original issue reported on code.google.com by [email protected] on 13 Jan 2010 at 9:21

Can't use localhost with new version of SeasideHTTPService

Using the instructions at: 

http://gemstonesoup.wordpress.com/2009/04/15/glass-beta-update-working-with-soap
-preview/#Hyper


I was able to update my GemTools client and GLASS code to the versions that
would enable me to 
use Hyper as my HTTP server. 

The instructions for modifying: 

/opt/gemstone/GemStone64Bit2.3.1-x86_64.Linux/seaside/bin/startSeaside_Hyper 

worked great as well, and the server started up nicely. 

However, when trying to point FireFox to the url: 
http://localhost:9765/seaside 

I got an error loading the page.  This worked previously with the Swazoo 
code ( By a fortuitous coincidence I had tried it out just before updating to 
Glass.230-dkh.231 ...) . 

The error was resolved by specifying the server machine name instead of
localhost: 
http://sally:9765/seaside 




===== Your comments end ======================================= 
===== Backtrace ================================================== 
... 
... 
===== Backtrace end ============================================= 
21 May 2009 4:06 pm 

Client VM: unix - a SmalltalkImage 
Client Image: Pharo0.1 [Latest update: #10243] 
GemTools Client: GemStone-dkh.467 
GLASS: GLASS.230-dkh.229 

===== Client Version Report ============================================ 
cpuArchitecture: ia32 
cpuKind: x86_64 
gsBuildArchitecture: ia32 (Linux) 
gsBuildDate: Thu Dec  4 11:33:32 2008 
gsRelease: 2.3.1 
gsVersion: 2.3.1 
nodeName: sally 
osName: Linux 
osRelease: 2.6.24-19-generic 
osVersion: #1 SMP Wed Jun 18 14:15:37 UTC 2008 
processId: 32744 
processorCount: 2 

===== Stone Version Report =========================================== 
cpuArchitecture: x86-64 
cpuKind: x86_64 
gsBuildArchitecture: x86-64 (Linux) 
gsBuildDate: Thu Dec  4 11:33:32 2008 
gsRelease: 2.3.1 
gsVersion: 2.3.1 
nodeName: sally 
osName: Linux 
osRelease: 2.6.24-19-generic 
osVersion: #1 SMP Wed Jun 18 14:15:37 UTC 2008 
processId: 338 
processorCount: 2 

===== Preferences ============================================ 
annotationPanes=true 
mercuryPanel=true 
optionalButtons=true 
syntaxHighlightingAsYouType=true

Original issue reported on code.google.com by [email protected] on 13 Jan 2010 at 11:44

usability issues with Pharo tools

Observations from using the new Pharo tools for Ruby development:

The new .mcz and Metacello tools will be a big help.

It is nice to be able to open class hierarchy browsers directly,
but all the other problems below mean no net change in ease of 
basic code browsing.

In a method source pane, the ctl-F key binding is broken.

In a class hierarchy browser, select a method.
Then in the top-right pane (list of methods) 
middle-click on the already selected method , and pick 
either implementors or senders.
Even though I have already selected a method I have to  make a choice
from a list; I should not have to make any choice.

Browsers give too much space to the top half panes.
  Open a new class hierarchy browser .
  Move the middle divider so top panes are 1.3 inches high,
  and method source pane is 4.5 inches high

  Then pick a large method.
  Increase size of the hierarchy browser window to try to see
  all the source.  When method source pane is 6.1 inches high,
  the top half has grown to 3.0 inches, thus the 1.3/4.5 ratio
  previously set is destroyed in a manner making it difficult
  to browse large methods. 
  A smart browser would hold top half size constant, once it was 
  altered from the default, and only increase method source
  pane size.  An even smarter browser would automatically
  adjust the ratio as needed to show most of a large method.

If I try to left button double-click on a keyword with leading underscore,
it still does not include the underscore in the selected characters.
I am programming in an ANSI Smalltalk and don't want to see Squeak
stupidities like this.

If these tools are supposed to be really smart, they would
set the top-half vertical size in an implementors-of or
senders-of browser to be just big enough to display the number
of implementors or senders.

Original issue reported on code.google.com by [email protected] on 13 Jan 2010 at 9:27

directory test in GciLibrary class>>current is a red herring

either wire out the file existence test for the mac or put in the proper
test for a file in the resource directory on mac ... 

we were mislead by the fact that we could put a new gciForMacintosh.so file
in the .image directory (where the test is) but we were still using a
different .so file to load ...even when changing file names ... 

at a minimum we should put an explanatory comment...

GemTools 1.0-beta.1

Original issue reported on code.google.com by [email protected] on 13 Jan 2010 at 9:00

  • Blocking: #88

ServerFileDirectory needs to be added to MockGemStone

----- "Sebastian Van Lacke" <[email protected]> wrote: 

| Hi, I am working on a form containing a fileUpload input. When the 
| user submit the form I get a WAFile instance.  
| Then I need to save this file on disk, using a relative path to the 
| site dirctory served by Apache. I don't know what kind of file/stream 
| I have to use. Better if it is compatible with Squeak plataform. 
|  
| Thanks,  
|  
| Sebastian 

Sebastian, 

To be compatible with Squeak (or close to it), use ServerFileDirectory and
#newFileNamed: to get the equivalent of a FileStream. 

ServerFileDirectory is preferable to using FileDirectory (in GemStone),
because FileDirectory uses GCI to transfer the bytes to disk. 

Presumably a ServerFileDirectory class can be added to Squeak (perhaps in
MockGemStone) that delegates to FileDirectory... 

Dale


Original issue reported on code.google.com by [email protected] on 13 Jan 2010 at 9:38

Need 'SmalltalkImage current platformName' for Squeak compatibility

I'm working on the Graphviz port to GS and was wondering if there is   
an equivalent to... 

SmalltalkImage current platformName 

...that will work in both Squeak and GS? 

What is the preferred way to get the platform in GS? 

i've been lazy to date, and hardcoded a #isGemStone method, but would   
like to stay compatible with Squeak if possible. 

Original issue reported on code.google.com by [email protected] on 13 Jan 2010 at 9:03

Swazoo and SwazooSeaside packages unloads

~From Andrey: 

===== Your comments ============================================ 
After upgrading GLASS to latest version. Swazoo and SwazooSeaside 
package are unloads. 

===== Your comments end ======================================= 
===== Backtrace ================================================== 
... 
... 
===== Backtrace end ============================================= 
21 June 2009 2:13:04 am 

Client VM: unix - a SmalltalkImage 
Client Image: Pharo0.1 [Latest update: #10243] 
GemTools Client: GemStone-dkh.467 
GLASS: GLASS.230-dkh.231 

===== Client Version Report ============================================ 
cpuArchitecture: ia32 
cpuKind: i686 
gsBuildArchitecture: ia32 (Linux) 
gsBuildDate: Thu Dec  4 11:33:32 2008 
gsRelease: 2.3.1 
gsVersion: 2.3.1 
nodeName: smalltalk 
osName: Linux 
osRelease: 2.6.24-24-server 
osVersion: #1 SMP Wed Apr 15 16:36:01 UTC 2009 
processId: 4673 
processorCount: 2 

===== Stone Version Report =========================================== 
cpuArchitecture: x86-64 
cpuKind: x86_64 
gsBuildArchitecture: x86-64 (Linux) 
gsBuildDate: Thu Dec  4 11:33:32 2008 
gsRelease: 2.3.1 
gsVersion: 2.3.1 
nodeName: debian 
osName: Linux 
osRelease: 2.6.26-2-amd64 
osVersion: #1 SMP Thu May 28 21:28:49 UTC 2009 
processId: 5014 
processorCount: 2 

===== Preferences ============================================ 
annotationPanes=true 
mercuryPanel=true 
optionalButtons=true 
syntaxHighlightingAsYouType=true 

Original issue reported on code.google.com by [email protected] on 13 Jan 2010 at 11:28

hierarchy implementors goes outside of hierarchy browser

Given this hierarchy in a hierarchy browser opened on A
  Object
    A
     B
     C
     D

And given that Object>>name  is remplemented in
   B>>name
   C>>name

If you select B>>name and do hierarchy  implementors,
you get  a list showng   Object>>name ,  B>>name

If you then select Object>>name
and ask for  hierarchy  implementors  you get a whole bunch
of other subclasses of Object that are not displayed in the
current hierarchy browser, like GsFile>>name ... .  
What I wanted was to find other classes within those opened 
in the hierarchy browser that implemented    name    .

Original issue reported on code.google.com by [email protected] on 14 Jan 2010 at 12:56

SoapExampleClient error

~From Dario: 

i have Gemstone 2.3.1 update to GLASS.230-dhk.231. 
Hyper server started on port 50081 

GemTools is update to Gemstone-dkh.467. 

I set: 

    SoapExampleClient hostAddress: #monviso ( my server in a local area
network ) 

    SoapExampleClient port: 50081 

    SoapSetting defaultPort: 50081 

    SoapSetting defaultSendingPort: 50081 


I register services with: 

    SoapExampleServiceImpl registerAllServices 



Now when do command: 

    SoapExampleClient new callHelloWorld 

    the system raise the error : 'SoapNoNamespacePrefix: Namespace prefix
must be provided! signal: 'Namespace prefix must be provided !' 

Original issue reported on code.google.com by [email protected] on 13 Jan 2010 at 11:26

isOnLinux answers false on Linux if /boot not mounted

GemTools logins fail with a DNU on some Linux
systems. This is rather discouraging for new users.

On Linux, it's a common practice to put /boot on a separate boot
partition, and to not automatically mount this partition at boot
time. On Linux systems configured this way, the GemTools fail to find
the GCI library, and give a DNU walkback on an attempt to log in.

GciLibrary class>>isOnLinux is answering false, when it should answer
true. This in turn is exposing a bug in GciLibrary class>>moduleName,
which is not handling unknown platforms correctly.

The current code for #moduleName:

moduleName

    | path |
    self isOnWindows     ifTrue: [path := 'gciForWindows.dll'    ] ifFalse: [
    self isOnLinux         ifTrue: [path := 'gciForLinux.so'        ]
ifFalse: [
    self isOnMacintosh     ifTrue: [path := 'gciForMacintosh.so'    ]]].
    (path notEmpty and: [FileDirectory default fileExists: path]) ifTrue:
[^path].
    self error: 'Library file not found!'.


What's failing is the "path notEmpty" test, since path is nil. The
test should be "path ~~ nil".


The current code for #isOnLinux:

isOnLinux

    ^(FileDirectory on: '/boot/grub') exists.

This will always answer false on systems that do not mount the /boot
partition, or on systems where the user does not have read permissions
on /boot. A better implementation, which relies only on the proc
pseudo-filesystem created by the Linux kernel:

isOnLinux

    | dir file |
    dir := FileDirectory on: '/proc'.
    dir exists ifFalse: [^false].
    (dir fileExists: 'version') ifFalse: [^false].
    file := dir readOnlyFileNamed: 'version'.
    file == nil ifTrue: [^false].
    ^(file next: 5) = 'Linux'

Original issue reported on code.google.com by [email protected] on 13 Jan 2010 at 9:36

  • Blocking: #88

TransientRandom shouldn't use session serial number to make unique seeds

~From Gerhard: 

We have a lot of issues with hanging fastcgi session. 
They session seems to be some kind of long running transactions, which seems 
running forever. 
Is it possible to find out whats going on on such fastcgi sessions. 
Is it possible to stop a session and have a backtrace? 

Now to the interesting part. 
During this exercise I have also checked the FASTCGI logs and found some 
strange entries (see below) 
A lot of these Exceptions are inside each fastcgi log file. 
BTW we are still using Seaside shipped with GS 2.2.5.1! 

After some hours I found out that a RcKeyValueDictionary returns an 
exception if nil is used as key. 

at: aKey ifAbsent: aBlock 

"Returns the value that corresponds to aKey.  If no such key/value pair 
exists, 
 returns the result of evaluating the zero-argument block aBlock." 

| hash | 
aKey == nil ifTrue: [ ^ self _error: #rtErrNilKey ]. 

hash := self hashFunction: aKey. 
^ (self _rcAt: hash) at: aKey ifAbsent: aBlock 

Not sure if this could or should be changed. 
This leads me to .. 

handleKeyRequest: aRequest 
    | key handler keyString | 
    "Under some circumstances, HTTP fields are collections of values" 
    key :=    [keyString := aRequest at: self handlerField. 
            (keyString isKindOf: OrderedCollection) ifTrue: [keyString := 
keyString first]. 
            WAExternalID fromString: keyString] on: Error do: [:e | FSLog 
log: e displayString. nil]. 
    "*** obi *** changed to avoid exception if nil is used as key" 
    handler := key == nil ifTrue: [nil] ifFalse: [handlersByKey at: key 
ifAbsent: [nil]]. 
    ^ (handler notNil and: [handler isActive]) 
        ifTrue: [handler handleRequest: aRequest] 
        ifFalse: [self handleExpiredRequest: aRequest] 

Still not the root cause of the problem! 

Investigations continue .... 

Now i get "seed out of range" in my FSLog log files, 
which I get from this code! 

seed: aSeed 
  (aSeed <= 0 or:[aSeed >= 2147483646]) ifTrue:[ 
     self error:'seed out of range: ', aSeed asString 
  ]. 
  seed := aSeed. 
  hi := lo := nil. 

After some more hours I find that code in TransientRandom! 

initialize 
    "adjust the default seed by session serial number so that vms started at 
same time won't get same seed" 
    "*** obi *** avoid serial numbers > 32768 > ((GsSession serialOfSession: 
System session) bitShift: 16))" 
    super initialize. 
    self seed: (seed bitXor: (System session bitShift: 16)). 

This code seems to create sometimes a number higher than 2147483646 if 
your serial of your session becomes higher than 32768  which is the case in 
our database! 
As workaround I am using now only the session id instead of the serial! 

Cheers 
Gerhard 



 ----------- Internal FASTCGI L 
OG ENTRY: anArray----------- 
----------- Internal FASTCGI ERROR Encountered: 2009-07-09T07:57:24+02:00 
InterpreterError 2090: An illegal attempt was made to store nil as a key in 
the dictionary <a 
RcKeyValueDictionary( nWjo7HqjV-i8Rn2c->aWADocumentHandler, 
sJwJprEYl7AOHAbG->aWADocumentHand 
ler, NKIrxFEC8sI5mbqQ->aWADocumentHandler, 
CIPWWV5YEhUgEDSY->aWADocumentHandler, dYXAcWEnnFls 
C6-6->aWADocumentHandler, ANftzNKZHgZTKCxS->aWADocumentHandler, 
LFfvyBkjx28cQoh3->aWADocument 
Handler, RTPCn9pO44ujTzsp->aWADocumentHandler, 
1AXAljiNFjGLsxT-->aWADocumentHandler, YQESKa-2 
KbADzhBV->aWADocumentHandler, m7gWzG9531a-URYF->aWADocumentHandler, 
rmKLMQtVyNKK56ei->aWADocu 
mentHandler, 43oGbNY15mHA2E9i->aWADocumentHandler, 
70OwTx8yjGfaZz3P->aWADocumentHandler, MERi 
bYJ4F8qZkME9->aWADocumentHandler, tgVtELaNF3O74jOl->aWADocumentHandler, 
KCUoqJ4QTcy0lj1C->aWA 
DocumentHandler, UbXz9YFHlLiG8LsZ->aWADocumentHandler, ...)>. 
1 SeasidePlatformSupport class >> logError:title: @2 line 4  [GsMethod OOP 
18787042305] 
2 FSSeasideHandler >> internalServerMalfunction: @21 line 16  [GsMethod OOP 
18787761153] 
3 ComplexBlock in FSSeasideHandler >> answerResponderRoleCheckingLock: @49 
line 48  [GsMethod 
 OOP 80432154113] 
4 ExceptionA >> valueHandler: @7 line 8  [GsMethod OOP 17933527809] 
5 ComplexBlock in ExceptionHandler >> valueHandlerBlock @6 line 5  [GsMethod 
OOP 17933428225] 
6 ComplexBlock in ExecutableBlock >> ensure: @4 line 11  [GsMethod OOP 
15157071873] 
7 ComplexBlock in ExecutableBlock >> ensure: @6 line 11  [GsMethod OOP 
15157071873] 
8 ExceptionHandler >> valueHandlerBlock @10 line 6  [GsMethod OOP 
17933428225] 
9 ExceptionHandler >> caughtException @3 line 4  [GsMethod OOP 17933427713] 
10 ExceptionHandler >> caughtEx:number:cat:args: @15 line 19  [GsMethod OOP 
18708189953] 
11 ComplexBlock in ExceptionHandler >> try:on:in:do: @9 line 9  [GsMethod 
OOP 17933425921] 
12 Exception >> _signal:number:args: @2 line 7  [GsMethod OOP 15157083137] 
13 Exception >> resignal:number:args: @5 line 11  [GsMethod OOP 15157083393] 
14 ExceptionA >> doResignal @13 line 12  [GsMethod OOP 17933436417] 
15 ExceptionHandler >> caughtException @4 line 5  [GsMethod OOP 17933427713] 
16 ExceptionHandler >> caughtEx:number:cat:args: @15 line 19  [GsMethod OOP 
18708189953] 
17 ComplexBlock in ExceptionHandler >> try:on:in:do: @9 line 9  [GsMethod 
OOP 17933425921] 
18 Exception >> _signal:number:args: @2 line 7  [GsMethod OOP 15157083137] 
19 System class >> signal:args:signalDictionary: @5 line 13  [GsMethod OOP 
17215472129] 
20 Object >> _error:args: @7 line 10  [GsMethod OOP 15160393473] 
21 Object >> _error: @2 line 5  [GsMethod OOP 15160885249] 
22 RcKeyValueDictionary >> at:ifAbsent: @3 line 7  [GsMethod OOP 
17755095553] 
23 WARegistry >> handleKeyRequest: @15 line 7  [GsMethod OOP 18724398081] 
24 WARegistry >> handleRequest: @5 line 3  [GsMethod OOP 18724398849] 
25 WAApplication >> handleRequest: @10 line 6  [GsMethod OOP 18720801793] 
26 WADispatcher >> handleRequest: @7 line 5  [GsMethod OOP 18782107649] 
27 ComplexBlock in FSSeasideHandler >> answerResponderRoleCheckingLock: @11 
line 10  [GsMetho 
d OOP 80432154113] 
28 ExceptionHandler >> try:on:in:do: @13 line 13  [GsMethod OOP 17933425921] 
29 ExceptionSet >> try:on:do: @2 line 4  [GsMethod OOP 17933425409] 
30 ComplexBlock in ExecutableBlock >> on:do: @2 line 8  [GsMethod OOP 
17933422849] 
31 ComplexVCBlock in FSSeasideHandler >> answerResponderRoleCheckingLock: 
@17 line 11  [GsMet 
hod OOP 80432154113] 
32 ComplexBlock in ExecutableBlock >> ensure: @4 line 11  [GsMethod OOP 
15157071873] 
33 ComplexVCBlock in ExecutableBlock >> ensure: @6 line 11  [GsMethod OOP 
15157071873] 
34 TransientRecursionLock >> critical: @15 line 8  [GsMethod OOP 
18721979905] 
35 ComplexVCBlock in FSSeasideHandler >> answerResponderRoleCheckingLock: 
@45 line 6  [GsMeth 
od OOP 80432154113] 
36 ExceptionHandler >> try:on:in:do: @13 line 13  [GsMethod OOP 17933425921] 
37 ExceptionA class >> try:on:do: @2 line 4  [GsMethod OOP 17942070017] 
38 ComplexVCBlock in ExecutableBlock >> on:do: @2 line 8  [GsMethod OOP 
17933422849] 
39 FSSeasideHandler >> answerResponderRoleCheckingLock: @52 line 46 
[GsMethod OOP 8043215411 
3] 
40 FSSeasideHandler >> answerResponderRole: @3 line 6  [GsMethod OOP 
18787761921] 
41 FSResponderRole >> answer @2 line 4  [GsMethod OOP 18782822657] 
42 FSRole >> handleConnection @3 line 5  [GsMethod OOP 18782809601] 
43 FSConnection >> unsafeServe @4 line 8  [GsMethod OOP 18782914561] 
44 ComplexBlock in FSConnection >> safeServe @5 line 8  [GsMethod OOP 
18782929665] 
45 ExceptionHandler >> try:on:in:do: @13 line 13  [GsMethod OOP 17933425921] 

Original issue reported on code.google.com by [email protected] on 13 Jan 2010 at 9:39

HyHTTPClientTests>>test61KeyServerGet occasionally fails

If I change SpIPAddress class>>hostName:port: to be 

hostName: aHostNameString port: aPortNumber  
    "^an SpSocketAddress 
    I translate aHostNameString to an IP address and then create 
    a new instance of myself with >>host:port:" 

    ^self host: aHostNameString 
        port: aPortNumber 

instead of: 

hostName: aHostNameString port: aPortNumber  
    "^an SpSocketAddress 
    I translate aHostNameString to an IP address and then create 
    a new instance of myself with >>host:port:" 

    ^self host: (GsSocket getHostAddressByName: aHostNameString) 
        port: aPortNumber 

The test passes ... so the the _early_ getHostAddrssByName: appears to the
be culprit


Original issue reported on code.google.com by [email protected] on 13 Jan 2010 at 9:30

Squeak and GemStone SPORT version should be compatible

~From Andreas: 

A rather painful thing is that I develop on Squeak/Pharo and deploy to
Gemstone. There are still some incompatibilities between those dialects (as
expected) which are real pitfalls. But it's good to know, that this is
beeing worked on, and it will get better and better. I did get some help
from the Sport portability library (but did not manage to install the same
version of it on Squeak like it is within GLASS...).

Original issue reported on code.google.com by [email protected] on 13 Jan 2010 at 11:54

Class versioning reminder

For few minutes I started to wonder what was happening. My changes 
were not visible through the web browser. I then realized that I had 
just added an instance variable. This creates a new class version in 
Gemstone. 

~From an older comment from Dale, re-registering the app did the trick. 

But It would be nice if there was an indication in GemTools that there 
are existing class versions. 

Original issue reported on code.google.com by [email protected] on 13 Jan 2010 at 9:23

Text search causes MNU

In the OB System Browser code pane, I type Ctrl-F to search for something,
it brings up the "Information Required" dialog, and I enter a search term
and then click "OK".   I get an MNU OopType64>>environment. 

Original issue reported on code.google.com by [email protected] on 13 Jan 2010 at 9:29

DateAndTime>>asTime, GS vs Squeak

I found a bug in our application last night which was due in part to   
an incompatibility between Squeak and GemStone's squeak-ish layer. 

* In Squeak, DateAndTime>>asTime returns a Time object that represents   
the time in the DateAndTime's frame of reference: 
        DateAndTime now asUTC asTime "gives current UTC time" 

* In GemStone, DateAndTime>>asTime returns a Time object that is   
translated into local time: 
        DateAndTime now asUTC asTime "gives current local time" 

I fixed this by implementing DateAndTime>>secondsSinceMidnight   
(another Squeak method) and modifying #asTime to use it: 

> secondsSinceMidnight 
>         ^self hour24 * 60 + self minute * 60 + self second 
> 
> asTime 
>         ^Time fromSeconds: self secondsSinceMidnight 

One of the wacky things here is how Squeak's DateAndTime>>midnight   
means "midnight local time", but DateAndTime>>secondsSinceMidnight   
uses "midnight in my frame of reference". And I love the use of   
Smalltalk message precedence in #secondsSinceMidnight (not my idea, I   
saw it in somebody else's code a while ago). 

But curiosities aside, this fix did the trick for us. 

Original issue reported on code.google.com by [email protected] on 13 Jan 2010 at 9:33

url decoding not correct in all cases

Paul submitted the following information: 

HyHTTPClient getUsingURIString: 
'http://www.google.com/search?hl=en&q=harry+potter&btnG=Google+Search&aq=f&oq='.


HyURI fromStream: (ReadStream on: 
'http://www.google.com/search?hl=en&q=harry+potter&btnG=Google+Search&aq=f&oq=')
.


If you inspect the first line in GLASS, you'll notice that Google 
replies with a 400/Bad Request error 

if you inspect the second line you'll notice that in the queries the + 
is replaced with a space.  It happens if the + is %20 as well on other 
websites. 
----  
then submitted this followup: 
it seems if you change HyURI 
decodedHTTPFrom: to 

decodedHTTPFrom: encodedString 
        "^a String 
URI encodes to 7 bit ascii.  I return the decoded form of 
encodedString.  Note that the decoded string is really an octet array 
so that things like UTF-8 can be encoded in a URI." 

        | targetStream asciiStream | 
        targetStream := WriteStream on: String new. 
        asciiStream := ReadStream on: encodedString. 
        [asciiStream atEnd] whileFalse: 
                        [| char | 
                        char := asciiStream next asCharacter. 
                        char == $% 
                                ifTrue: [targetStream nextPut: char] 
                                ifFalse: 
                                        [char == $+ 
                                                ifTrue: [targetStream
nextPut: char] 
                                                ifFalse: [targetStream
nextPut: char]]]. 
                        "char == $% 
                                ifTrue: [targetStream nextPut: (self
charFromNextTwoHexDigitsIn: 
asciiStream)] 
------ 

This isn't really correct, but it indicates the the client shouldn't be
decoding HTTP ... it backs to that I need a definitive set of tests for
where decoding is and is not expected to be done ... 

Original issue reported on code.google.com by [email protected] on 14 Jan 2010 at 12:54

Better bootstrapping instructions

From Norbert:

| Than I did bootstrap the server. I just changed one thing from the
| blog. I don't want to install it in the seaside directory because
| there I have a working installation. So I copied the directory to a
| different and changed the shell scripts and bootstrapped it there. For
| my taste the locations necessary to be changed in the shell scripts
| could be minimized. But it works and is not too hard to achieve. In
| the blog post you write that it is needed for the stone to be shut
| down before copying. A note that you need to start  it before using
| the topaz stuff would be helpful ;)

Original issue reported on code.google.com by [email protected] on 18 Jan 2010 at 5:58

  • Blocking: #91

Better error for UndefinedSymbols

from Hernan: 

Hi Dale, 
 maybe UndefinedSymbol shoud raise an error saying something like 'you 
are sending a message to an undefined symbol bla bla bla'... will make 
the error more evident, don't you think? 

On Wed, Jul 8, 2009 at 1:32 PM, Dale Henrichs<[email protected]>
wrote: 
> Joel, 
> 
> You are tripping across the UndefinedSymbols handling mechanism in GLASS
... when you add or remove parens, you are recompiling the method thus
satisfying the UndefinedSymbol. 
> 
> As a quick workaround, I would suggest that in the Monticello Browser you
select your Milestone package and use the 'recompile package' menu item ...
all of the refs should be fixed at that point. 
> 
> In the future, I think that you should define the symbol
#MilestoneProductionSystem before loading the code. 
> 
> In standard GemStone, undefined symbols are compile errors, so for GLASS
I implemented a workaround that made it possible to have references to
undefined classes that were resolved once the class was defined (by
recompiling the methods - that's the Set that you see in your error
message). This was required for Monticello to work. 
> 
> I don't have a good answer for resolving symbols that refer to non-class
globals. 
> 
> I do recommend that you 'Inspect UndefinedSymbols' (on the Tools menu in
GemTools) after loading packages into GemStone, to uncover these kinds of
issues. 
> 
> Dale 
> 
> ----- "Joel Turnbull" <[email protected]> wrote: 
> 
> | I've been developing a simple web application to manage what I call 
> | Milestones, using Seaside and Magritte. 
> | 
> | I just loaded up the code into a freshly unpacked GLASS appliance 
> | (beta 11). 
> | 
> | I did 
> | UserGlobals at: #MilestoneProductionSystem put: MilestoneSystem new 
> | 
> | When I tried in Seaside to browse my MilestoneRootWidget I got the 
> | error 
> | 
> | MessageNotUnderstood 2010: No method was found for the selector 
> | <#'milestones'> when sent to <aSet( 
> | MilestoneRootWidget->'addMilestone', 
> | MilestoneRootWidget->'editMilestone:', 
> | MilestoneRootWidget->'initializeReport', 
> | MilestoneRootWidget->'refreshReport', 
> | MilestoneRootWidget->'removeMilestone:', 
> | MilestoneRootWidget->'viewMilestone:', Milestone->'changes')> with 
> | arguments 
> | contained in <anArray( )>. 
> | 
> | stemming from this method 
> | 
> | initializeReport 
> | 
> |     report := ( MAReport rows: ( MilestoneProductionSystem 
> | milestones) 
> | description: Milestone new descriptionReport ). 
> |     report addColumn: ( MACommandColumn new addCommandOn: self 
> | selector: 
> | #viewMilestone: text: 'View'). 
> |     report addColumn: ( MACommandColumn new addCommandOn: self 
> | selector: 
> | #editMilestone: text: 'Edit'). 
> |     report addColumn: ( MACommandColumn new addCommandOn: self 
> | selector: 
> | #removeMilestone: text: 'Remove'). 
> | 
> | I found that when I remove some parentheses from the second line like 
> | 
> |     report := ( MAReport rows: MilestoneProductionSystem milestones 
> | description: Milestone new descriptionReport ). 
> | 
> | It fixed the problem. 
> | 
> | Alternatively, when this method gave me a similar error 
> | 
> | changes 
> | 
> |     ^ MilestoneProductionSystem historyOf: self 
> | 
> | I found that adding parentheses fixed it 
> | 
> | changes 
> | 
> |     ^ ( MilestoneProductionSystem historyOf: self ) 
> | 
> | It seems that anywhere MilestoneProductionSystem is referenced I'm 
> | having to 
> | add or remove parentheses. Any idea what is going on here? 
>

Original issue reported on code.google.com by [email protected] on 13 Jan 2010 at 9:40

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    ๐Ÿ–– Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. ๐Ÿ“Š๐Ÿ“ˆ๐ŸŽ‰

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google โค๏ธ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.