From dale.henrichs at gemstone.com Tue Mar 2 02:12:12 2010 From: dale.henrichs at gemstone.com (Dale Henrichs) Date: Mon, 1 Mar 2010 17:12:12 -0800 (PST) Subject: ConfigurationOfSeaside 1.0.3 is available Message-ID: <429263551.265521267492332836.JavaMail.root@gir> ConfigurationOfSeaside is Metacello configuration that provides easy access to Seaside2.8 or Seaside3.0, Magritte and Pier for Squeak and Pharo (soon GemStone, too). To download ConfigurationOfSeaside evaluate the follow expression in Pharo: (Smalltalk at: #Gofer) new squeaksource: 'MetacelloRepository'; package: 'ConfigurationOfSeaside'; load. or the following expressio in Squeak: (Installer squeaksource project: 'MetacelloRepository'; packagesMatching: 'ConfigurationOfSeaside-*') first install. After downloading ConfigurationOfSeaside evaluate one of the following expressions: ConfigurationOfSeaside project latestVersion load: #('Seaside 2.8' 'Seaside 2.8 Examples' 'Magritte Tests' 'Pier Tests' 'Pier AddOns'). or ConfigurationOfSeaside project latestVersion load: #('Seaside 3.0' 'Seaside 3.0 Tests' 'Magritte2 Tests' 'Pier2 Tests' 'Pier2 AddOns'). depending upon whether you want to work with Seaside3.0 or Seaside2.8. Both Seaside 3.0 and Seaside 2.8 cannot coexist in the same image, so you have to make a choice. You can edit the literal array to include only the components that you want loaded into your image. If you want the latest bleeding edge mcz files for Seaside3.0, Magritte, and Pier evaluate the following expression: (Smalltalk at: #Gofer) new squeaksource: 'MetacelloRepository'; package: 'ConfigurationOfPier'; load. ((Smalltalk at: #ConfigurationOfPier) project version: '2.0.3-baseline') load: 'ALL'. Version 1.0.3 is based upon the latest mcz files in the collective Seaside repositories as of this afternoon PST. I've tested ConfigurationOfSeaside on Squeak (trunk and Squeak3.10.2-7179-basic) and Pharo (PharoCore-1.0-10508rc2). Note that there was an issue with loading Psome Pier2 code into Squeak3.10.2-7179-basic. The same code loaded fine into the Squeak trunk. If you want finer control over what is loaded into your image, you can pick and choose from the following Metacello configurations in http://www.squeaksource.com/MetacelloRepository: "Seaside 2.8" ConfigurationOfSeaside28 ConfigurationOfSeaside28Examples ConfigurationOfMagritte ConfigurationOfPier ConfigurationOfPierAddOns "Seaside 3.0" ConfigurationOfSeaside30 ConfigurationOfMagritte2 ConfigurationOfPier2 ConfigurationOfPierAddOns2 As you can imagine, it is easier to use ConfigurationOfSeaside to get started. Dale From macmerik at xs4all.nl Tue Mar 2 13:36:42 2010 From: macmerik at xs4all.nl (Merik Voswinkel) Date: Tue, 2 Mar 2010 13:36:42 +0100 Subject: ConfigurationOfSeaside 1.0.3 is available In-Reply-To: <429263551.265521267492332836.JavaMail.root@gir> References: <429263551.265521267492332836.JavaMail.root@gir> Message-ID: Thank you Dale, Lukas and others) It saves a lot of work to install this way, only about two hours. I get an "MessageNotUnderstood: ByteArray>>isByteString" (reported by my browser as an internal server error when I visit http://localhost:8080/pier I followed (both in Pharo and Squeak Trunk-9560) your instructions precisely for installing Seaside 3.0. No errors at all, great! (Loading the ConfigurationOfSeaside took a lot longer, however). I then evaluated in a Workspace the following expression: PRDistribution new register. And pointed my Browser to http://localhost:8080/pier I then get the "Welcome to Pier" frontpage but without the nice layout, like the CSS is missing. My Safari browser reports (in the activity window) for one of the files generated by Pier: internal server error If I try to load only this file I get a html page : "MessageNotUnderstood: ByteArray>>isByteString" Can anyone help me out how/where to fix this? The error is exactly the same in Pharo and Squeak Trunk, so I guess it must be somewhere in Pier 3.0? Much appreciated, Merik On Mar 2, 2010, at 2:12 AM, Dale Henrichs wrote: > ConfigurationOfSeaside is Metacello configuration that provides easy > access to Seaside2.8 or Seaside3.0, Magritte and Pier for Squeak and > Pharo (soon GemStone, too). > > To download ConfigurationOfSeaside evaluate the follow expression in > Pharo: > > (Smalltalk at: #Gofer) new > squeaksource: 'MetacelloRepository'; > package: 'ConfigurationOfSeaside'; > load. > > or the following expressio in Squeak: > > (Installer squeaksource > project: 'MetacelloRepository'; > packagesMatching: 'ConfigurationOfSeaside-*') first install. > > After downloading ConfigurationOfSeaside evaluate one of the > following expressions: > > ConfigurationOfSeaside project latestVersion > load: #('Seaside 2.8' 'Seaside 2.8 Examples' 'Magritte Tests' > 'Pier Tests' > 'Pier AddOns'). > > or > > ConfigurationOfSeaside project latestVersion > load: #('Seaside 3.0' 'Seaside 3.0 Tests' 'Magritte2 Tests' > 'Pier2 Tests' > 'Pier2 AddOns'). > > depending upon whether you want to work with Seaside3.0 or > Seaside2.8. Both Seaside 3.0 and Seaside 2.8 cannot coexist in the > same image, so you have to make a choice. > > You can edit the literal array to include only the components that > you want loaded into your image. > > If you want the latest bleeding edge mcz files for Seaside3.0, > Magritte, and Pier evaluate the following expression: > > (Smalltalk at: #Gofer) new > squeaksource: 'MetacelloRepository'; > package: 'ConfigurationOfPier'; > load. > ((Smalltalk at: #ConfigurationOfPier) project > version: '2.0.3-baseline') load: 'ALL'. > > Version 1.0.3 is based upon the latest mcz files in the collective > Seaside repositories as of this afternoon PST. > > I've tested ConfigurationOfSeaside on Squeak (trunk and > Squeak3.10.2-7179-basic) and Pharo (PharoCore-1.0-10508rc2). Note > that there was an issue with loading Psome Pier2 code into > Squeak3.10.2-7179-basic. The same code loaded fine into the Squeak > trunk. > > If you want finer control over what is loaded into your image, you > can pick and choose from the following Metacello configurations in http://www.squeaksource.com/MetacelloRepository > : > > "Seaside 2.8" > ConfigurationOfSeaside28 > ConfigurationOfSeaside28Examples > ConfigurationOfMagritte > ConfigurationOfPier > ConfigurationOfPierAddOns > > "Seaside 3.0" > ConfigurationOfSeaside30 > ConfigurationOfMagritte2 > ConfigurationOfPier2 > ConfigurationOfPierAddOns2 > > As you can imagine, it is easier to use ConfigurationOfSeaside to > get started. > > Dale > _______________________________________________ > Magritte, Pier and Related Tools ... > https://www.iam.unibe.ch/mailman/listinfo/smallwiki From dale.henrichs at gemstone.com Tue Mar 2 20:02:37 2010 From: dale.henrichs at gemstone.com (Dale Henrichs) Date: Tue, 2 Mar 2010 11:02:37 -0800 (PST) Subject: ConfigurationOfSeaside 1.0.3 is available In-Reply-To: <305553760.282191267556309992.JavaMail.root@gir> Message-ID: <1754272949.282471267556557224.JavaMail.root@gir> Merik, It looks like you can patch the problem by modifying MAFileModelHandler>>handleFiltered by changing the following line: nextPutAll: self model contents readStream contents; to: nextPutAll: self model contents asString readStream contents; Dale ----- "Merik Voswinkel" wrote: | Thank you Dale, Lukas and others) It saves a lot of work to install | this way, only about two hours. | I get an "MessageNotUnderstood: ByteArray>>isByteString" (reported by | | my browser as an internal server error when I visit | http://localhost:8080/pier | | I followed (both in Pharo and Squeak Trunk-9560) your instructions | precisely for installing Seaside 3.0. No errors at all, great! | (Loading the ConfigurationOfSeaside took a lot longer, however). | | I then evaluated in a Workspace the following expression: | | PRDistribution new register. | | And pointed my Browser to http://localhost:8080/pier | I then get the "Welcome to Pier" frontpage but without the nice | layout, like the CSS is missing. | My Safari browser reports (in the activity window) for one of the | files generated by Pier: internal server error | If I try to load only this file I get a html page : | "MessageNotUnderstood: ByteArray>>isByteString" | | Can anyone help me out how/where to fix this? | The error is exactly the same in Pharo and Squeak Trunk, so I guess it | | must be somewhere in Pier 3.0? | | Much appreciated, | | Merik | | On Mar 2, 2010, at 2:12 AM, Dale Henrichs wrote: | | > ConfigurationOfSeaside is Metacello configuration that provides easy | | > access to Seaside2.8 or Seaside3.0, Magritte and Pier for Squeak and | | > Pharo (soon GemStone, too). | > | > To download ConfigurationOfSeaside evaluate the follow expression in | | > Pharo: | > | > (Smalltalk at: #Gofer) new | > squeaksource: 'MetacelloRepository'; | > package: 'ConfigurationOfSeaside'; | > load. | > | > or the following expressio in Squeak: | > | > (Installer squeaksource | > project: 'MetacelloRepository'; | > packagesMatching: 'ConfigurationOfSeaside-*') first install. | > | > After downloading ConfigurationOfSeaside evaluate one of the | > following expressions: | > | > ConfigurationOfSeaside project latestVersion | > load: #('Seaside 2.8' 'Seaside 2.8 Examples' 'Magritte Tests' | > 'Pier Tests' | > 'Pier AddOns'). | > | > or | > | > ConfigurationOfSeaside project latestVersion | > load: #('Seaside 3.0' 'Seaside 3.0 Tests' 'Magritte2 Tests' | > 'Pier2 Tests' | > 'Pier2 AddOns'). | > | > depending upon whether you want to work with Seaside3.0 or | > Seaside2.8. Both Seaside 3.0 and Seaside 2.8 cannot coexist in the | | > same image, so you have to make a choice. | > | > You can edit the literal array to include only the components that | | > you want loaded into your image. | > | > If you want the latest bleeding edge mcz files for Seaside3.0, | > Magritte, and Pier evaluate the following expression: | > | > (Smalltalk at: #Gofer) new | > squeaksource: 'MetacelloRepository'; | > package: 'ConfigurationOfPier'; | > load. | > ((Smalltalk at: #ConfigurationOfPier) project | > version: '2.0.3-baseline') load: 'ALL'. | > | > Version 1.0.3 is based upon the latest mcz files in the collective | | > Seaside repositories as of this afternoon PST. | > | > I've tested ConfigurationOfSeaside on Squeak (trunk and | > Squeak3.10.2-7179-basic) and Pharo (PharoCore-1.0-10508rc2). Note | > that there was an issue with loading Psome Pier2 code into | > Squeak3.10.2-7179-basic. The same code loaded fine into the Squeak | | > trunk. | > | > If you want finer control over what is loaded into your image, you | | > can pick and choose from the following Metacello configurations in | http://www.squeaksource.com/MetacelloRepository | > : | > | > "Seaside 2.8" | > ConfigurationOfSeaside28 | > ConfigurationOfSeaside28Examples | > ConfigurationOfMagritte | > ConfigurationOfPier | > ConfigurationOfPierAddOns | > | > "Seaside 3.0" | > ConfigurationOfSeaside30 | > ConfigurationOfMagritte2 | > ConfigurationOfPier2 | > ConfigurationOfPierAddOns2 | > | > As you can imagine, it is easier to use ConfigurationOfSeaside to | > get started. | > | > Dale | > _______________________________________________ | > Magritte, Pier and Related Tools ... | > https://www.iam.unibe.ch/mailman/listinfo/smallwiki From dale.henrichs at gemstone.com Tue Mar 2 20:15:19 2010 From: dale.henrichs at gemstone.com (Dale Henrichs) Date: Tue, 2 Mar 2010 11:15:19 -0800 (PST) Subject: ConfigurationOfSeaside 1.0.3 is available In-Reply-To: <997C7240-3A66-4DD1-83FA-2812861BD47E@xs4all.nl> Message-ID: <222348491.283071267557319057.JavaMail.root@gir> Merik, When I try http://localhost:8080/seaside/files/ I get "Error: "/seaside/files/" not found", so I will need a little more info... Dale ----- "Merik Voswinkel" wrote: | I also installed Seaside 2.8. I also executed PRDistribution new | register. I then visited http://localhost:8080/seaside/pier (note the | | '/seaside/pier/' and I do get the generated CSS here. But now all the | | files starting with url 'http://localhost:8080/seaside/files/' give | the error: | "Internal Server ErrorError: This message is not appropriate for this | | object" | | Is this fixable in one of the config files that the | ConfigurationOfSeaside script loads? | | I forgot to type the name Pharo in my previous post: | > (Loading the ConfigurationOfSeaside took a lot longer in Pharo than | | > in Squeak trunk, however). | | | An unrelated question, can I get the debug option in the web error | pages back? | | | Cheers, | | Merik | | | | On Mar 2, 2010, at 1:36 PM, Merik Voswinkel wrote: | | > Thank you Dale, Lukas and others) It saves a lot of work to install | | > this way, only about two hours. | > I get an "MessageNotUnderstood: ByteArray>>isByteString" (reported | | > by my browser as an internal server error when I visit | http://localhost:8080/pier | > | > I followed (both in Pharo and Squeak Trunk-9560) your instructions | | > precisely for installing Seaside 3.0. No errors at all, great! | > (Loading the ConfigurationOfSeaside took a lot longer, however). | > | > I then evaluated in a Workspace the following expression: | > | > PRDistribution new register. | > | > And pointed my Browser to http://localhost:8080/pier | > I then get the "Welcome to Pier" frontpage but without the nice | > layout, like the CSS is missing. | > My Safari browser reports (in the activity window) for one of the | > files generated by Pier: internal server error | > If I try to load only this file I get a html page : | > "MessageNotUnderstood: ByteArray>>isByteString" | > | > Can anyone help me out how/where to fix this? | > The error is exactly the same in Pharo and Squeak Trunk, so I guess | | > it must be somewhere in Pier 3.0? | > | > Much appreciated, | > | > Merik | > | > On Mar 2, 2010, at 2:12 AM, Dale Henrichs wrote: | > | >> ConfigurationOfSeaside is Metacello configuration that provides | >> easy access to Seaside2.8 or Seaside3.0, Magritte and Pier for | >> Squeak and Pharo (soon GemStone, too). | >> | >> To download ConfigurationOfSeaside evaluate the follow expression | | >> in Pharo: | >> | >> (Smalltalk at: #Gofer) new | >> squeaksource: 'MetacelloRepository'; | >> package: 'ConfigurationOfSeaside'; | >> load. | >> | >> or the following expressio in Squeak: | >> | >> (Installer squeaksource | >> project: 'MetacelloRepository'; | >> packagesMatching: 'ConfigurationOfSeaside-*') first install. | >> | >> After downloading ConfigurationOfSeaside evaluate one of the | >> following expressions: | >> | >> ConfigurationOfSeaside project latestVersion | >> load: #('Seaside 2.8' 'Seaside 2.8 Examples' 'Magritte Tests' 'Pier | | >> Tests' | >> 'Pier AddOns'). | >> | >> or | >> | >> ConfigurationOfSeaside project latestVersion | >> load: #('Seaside 3.0' 'Seaside 3.0 Tests' 'Magritte2 Tests' 'Pier2 | | >> Tests' | >> 'Pier2 AddOns'). | >> | >> depending upon whether you want to work with Seaside3.0 or | >> Seaside2.8. Both Seaside 3.0 and Seaside 2.8 cannot coexist in the | | >> same image, so you have to make a choice. | >> | >> You can edit the literal array to include only the components that | | >> you want loaded into your image. | >> | >> If you want the latest bleeding edge mcz files for Seaside3.0, | >> Magritte, and Pier evaluate the following expression: | >> | >> (Smalltalk at: #Gofer) new | >> squeaksource: 'MetacelloRepository'; | >> package: 'ConfigurationOfPier'; | >> load. | >> ((Smalltalk at: #ConfigurationOfPier) project | >> version: '2.0.3-baseline') load: 'ALL'. | >> | >> Version 1.0.3 is based upon the latest mcz files in the collective | | >> Seaside repositories as of this afternoon PST. | >> | >> I've tested ConfigurationOfSeaside on Squeak (trunk and | >> Squeak3.10.2-7179-basic) and Pharo (PharoCore-1.0-10508rc2). Note | | >> that there was an issue with loading Psome Pier2 code into | >> Squeak3.10.2-7179-basic. The same code loaded fine into the Squeak | | >> trunk. | >> | >> If you want finer control over what is loaded into your image, you | | >> can pick and choose from the following Metacello configurations in | http://www.squeaksource.com/MetacelloRepository | >> : | >> | >> "Seaside 2.8" | >> ConfigurationOfSeaside28 | >> ConfigurationOfSeaside28Examples | >> ConfigurationOfMagritte | >> ConfigurationOfPier | >> ConfigurationOfPierAddOns | >> | >> "Seaside 3.0" | >> ConfigurationOfSeaside30 | >> ConfigurationOfMagritte2 | >> ConfigurationOfPier2 | >> ConfigurationOfPierAddOns2 | >> | >> As you can imagine, it is easier to use ConfigurationOfSeaside to | | >> get started. | >> | >> Dale | >> _______________________________________________ | >> Magritte, Pier and Related Tools ... | >> https://www.iam.unibe.ch/mailman/listinfo/smallwiki | > From dtrussardi at tiscali.it Thu Mar 4 18:56:19 2010 From: dtrussardi at tiscali.it (dtrussardi at tiscali.it) Date: Thu, 4 Mar 2010 18:56:19 +0100 Subject: MAToOneRelationDescription error with MAInternalEditorComponent beReadonly property Message-ID: <60372231-0AF1-42B3-8EF3-97B03D2DF992@tiscali.it> Hi, when i define a description based on this code : ^ (MAToOneRelationDescription new) componentClass: MAInternalEditorComponent ; classes: (Array with: MAIndirizzoModel); autoAccessor: 'indirizzoMemo'; label: 'Indirizzo'; comment: 'Indirizzo di riferimento'; priority: 220; beReadonly; yourself where i set beReadonly. A) I found error when display it into: renderViewerOn: html html render: (self component readonly: self isReadonly; yourself) because self component answer nil. B) Another problem is relative to the same description when i rendering it as subComponent but with beReadonly setting. When i do "Save" the container erase errors relative to this subcomponent descriptions . But it's readOnly and d'ont do any control on it. C) I'm interested to incorporate the subComponent at the first level ( without the create buttons ) I create a MAInternalEditorComponent subclass: #MAOneToOneDirectComponent and change the : buildComponent "create new default value for directly rendering the subcomponent without button " self value isNil ifTrue:[ self value: self selected new. component := nil ]. ^ self value isNil ifFalse: [ (self description reference asComponentOn: self value) setParent: super; yourself ] It work fine. But the rendering is with to level the master and the slave. I can incorporate the slave description at first level ? Thanks for any considerations. Dario From nick.ager at gmail.com Sun Mar 7 22:42:46 2010 From: nick.ager at gmail.com (Nick Ager) Date: Sun, 7 Mar 2010 21:42:46 +0000 Subject: PRJQuerySearchWidget Message-ID: <3a06f76f1003071342q69bc53d5ge946c9502ae81381@mail.gmail.com> Hi, I've added a package: "Pier-JQuery" to the repository: "Pier 2 Add-Ons" ( http://source.lukas-renggli.ch/pier2addons) The package contains a single class PRJQuerySearchWidget. PRJQuerySearchWidget, should be a JQuery drop in replacement for PRAjaxSearchWidget (which used Scriptaculous libraries) The widget depends on JQuery and JQWidgetBox-FormExample-* To download the prerequisits: Gofer new squeaksource: 'JQueryWidgetBox'; package: 'JQWidgetBox-Core'; package: 'JQWidgetBox-Dev'; package: 'JQWidgetBox-FormExample-Core'; package: 'JQWidgetBox-FormExample-Dev'; load. JQWidgetExample initialize. or: ((Smalltalk at: #ConfigurationOfJQueryWidgetBox) project version: '1.0') load: 'JQWidgetBox-FormExample-Core'; load: 'JQWidgetBox-FormExample-Dev'. It's working well for me, let me know if there are any problems including it in other projects Cheers Nick -------------- next part -------------- An HTML attachment was scrubbed... URL: From dtrussardi at tiscali.it Tue Mar 9 17:56:07 2010 From: dtrussardi at tiscali.it (dtrussardi at tiscali.it) Date: Tue, 9 Mar 2010 17:56:07 +0100 Subject: MAInternalEditorComponent error Message-ID: Hi, i work with Magritte-Model-lr.394 on pharo. I have a MAAccountModel with descriptionCodice and descriptionIndirizzoMemo. The last is defined as: descriptionIndirizzoMemo ^ (MAToOneRelationDescription new) componentClass: MAInternalEditorComponent ; classes: (Array with: MAIndirizzoModel); selectorAccessor: 'indirizzoMemo'; label: 'Indirizzo'; comment: 'Indirizzo di riferimento'; priority: 220; "beReadonly;" yourself Now MAIndirizzoMemoModel is defined with some other description: descrptionCitta descriptionNumero and other description. ( You can load the file mcz. ) Now when open: MAAccountModel new asComponent i found the error: MessageNotUnderstood: receiver of "isMultipart" is nil isMultipart ^ self children anySatisfy: [ :each | each isMultipart ] The error is erase only with componentClass set to : MAInternalEditorComponent. Any considerations ? Thanks, Dario -------------- next part -------------- A non-text attachment was scrubbed... Name: DTR-DTR.2.mcz Type: application/octet-stream Size: 3385 bytes Desc: not available URL: From p3anoman at gmail.com Tue Mar 9 19:09:22 2010 From: p3anoman at gmail.com (John McKeon) Date: Tue, 9 Mar 2010 13:09:22 -0500 Subject: MAInternalEditorComponent error In-Reply-To: References: Message-ID: <40f637ec1003091009s390c19b2p54e12ae2142b8bac@mail.gmail.com> Hello Dario, You have to initialize that instance variable indirizzoMemo (otherwise there is really nothing to edit, no?) You can do this most easily by adding it as a default for the MAAccountModel>>descriptionIndirizzoMemo description: default: MAIndirizzoModel new; HTH John On Tue, Mar 9, 2010 at 11:56 AM, dtrussardi at tiscali.it < dtrussardi at tiscali.it> wrote: > Hi, > > i work with Magritte-Model-lr.394 on pharo. > > I have a MAAccountModel with descriptionCodice and > descriptionIndirizzoMemo. > > The last is defined as: > > descriptionIndirizzoMemo > ^ (MAToOneRelationDescription new) > componentClass: MAInternalEditorComponent ; > classes: (Array with: MAIndirizzoModel); > selectorAccessor: 'indirizzoMemo'; > > label: 'Indirizzo'; > comment: 'Indirizzo di riferimento'; > priority: 220; > "beReadonly;" > yourself > > Now MAIndirizzoMemoModel is defined with some other description: > > descrptionCitta > descriptionNumero > > and other description. > > ( You can load the file mcz. ) > > > Now when open: MAAccountModel new asComponent > > i found the error: > > MessageNotUnderstood: receiver of "isMultipart" is nil > > > isMultipart > ^ self children anySatisfy: [ :each | each isMultipart ] > > > The error is erase only with componentClass set to : > MAInternalEditorComponent. > > Any considerations ? > > Thanks, > Dario > _______________________________________________ > Magritte, Pier and Related Tools ... > https://www.iam.unibe.ch/mailman/listinfo/smallwiki > -- http://jmck.seasidehosting.st -------------- next part -------------- An HTML attachment was scrubbed... URL: From renggli at gmail.com Tue Mar 9 19:25:07 2010 From: renggli at gmail.com (Lukas Renggli) Date: Tue, 9 Mar 2010 19:25:07 +0100 Subject: MAInternalEditorComponent error In-Reply-To: References: Message-ID: <67628d691003091025y2fa8d100p92861c0b44998f8a@mail.gmail.com> > Now when open: ? ? ? ? ? MAAccountModel new ?asComponent > > ?i found the error: > > ? ? ? ?MessageNotUnderstood: receiver of "isMultipart" is nil > > > ? ? ? ?isMultipart > ? ? ? ?^ self children anySatisfy: [ :each | each isMultipart ] > > > The error is erase only with componentClass set to : ? ?MAInternalEditorComponent. > > Any considerations ? This looks like a bug in the Seaside 3 port of Magritte. Can you check if the following fix solves the problem? Name: Magritte-Seaside-lr.334 Author: lr Time: 9 March 2010, 7:24:18 pm UUID: 8a2ed7db-421a-4bdf-9235-73fcf29f50f4 Ancestors: Magritte-Seaside-lr.333 - fixed various Seaside 3 realted bugs to #isMultipart in MAFileUploadComponent - renamed #isMultipart to #requiresMultipartForm to be more intention revealing Lukas -- Lukas Renggli http://www.lukas-renggli.ch From dtrussardi at tiscali.it Wed Mar 10 10:17:56 2010 From: dtrussardi at tiscali.it (dtrussardi at tiscali.it) Date: Wed, 10 Mar 2010 10:17:56 +0100 Subject: MAInternalEditorComponent error In-Reply-To: <40f637ec1003091009s390c19b2p54e12ae2142b8bac@mail.gmail.com> References: <40f637ec1003091009s390c19b2p54e12ae2142b8bac@mail.gmail.com> Message-ID: <9B519092-C54E-4A06-9226-38466217A7D1@tiscali.it> Hi John, thanks, i have initialize the instance indirizzoMemo and this error is eliminated. I have another question based on this model. If descriptionIndirizzoMemo is set with beReadOnly, when display the MAAccountModel new asComponent the descriptionIndirizzoMemo fields is readonly ( it's ok ) . The problem is when submit the form because the container erase the errors relative to the descriptionIndirizzoMemo fields condition. But it's readOnly and d'ont do any control on it. Or not ? Thanks, Dario > Hello Dario, > You have to initialize that instance variable indirizzoMemo (otherwise there is really nothing to edit, no?) > You can do this most easily by adding it as a default for the MAAccountModel>>descriptionIndirizzoMemo description: > > default: MAIndirizzoModel new; > > > HTH > John > > On Tue, Mar 9, 2010 at 11:56 AM, dtrussardi at tiscali.it wrote: > Hi, > > i work with Magritte-Model-lr.394 on pharo. > > I have a MAAccountModel with descriptionCodice and descriptionIndirizzoMemo. > > The last is defined as: > > descriptionIndirizzoMemo > ^ (MAToOneRelationDescription new) > componentClass: MAInternalEditorComponent ; > classes: (Array with: MAIndirizzoModel); > selectorAccessor: 'indirizzoMemo'; > > label: 'Indirizzo'; > comment: 'Indirizzo di riferimento'; > priority: 220; > "beReadonly;" > yourself > > Now MAIndirizzoMemoModel is defined with some other description: > > descrptionCitta > descriptionNumero > > and other description. > > ( You can load the file mcz. ) > > > Now when open: MAAccountModel new asComponent > > i found the error: > > MessageNotUnderstood: receiver of "isMultipart" is nil > > > isMultipart > ^ self children anySatisfy: [ :each | each isMultipart ] > > > The error is erase only with componentClass set to : MAInternalEditorComponent. > > Any considerations ? > > Thanks, > Dario > _______________________________________________ > Magritte, Pier and Related Tools ... > https://www.iam.unibe.ch/mailman/listinfo/smallwiki > > > > -- > http://jmck.seasidehosting.st > _______________________________________________ > Magritte, Pier and Related Tools ... > https://www.iam.unibe.ch/mailman/listinfo/smallwiki -------------- next part -------------- An HTML attachment was scrubbed... URL: From p3anoman at gmail.com Wed Mar 10 11:33:31 2010 From: p3anoman at gmail.com (John McKeon) Date: Wed, 10 Mar 2010 05:33:31 -0500 Subject: MAInternalEditorComponent error In-Reply-To: <9B519092-C54E-4A06-9226-38466217A7D1@tiscali.it> References: <40f637ec1003091009s390c19b2p54e12ae2142b8bac@mail.gmail.com> <9B519092-C54E-4A06-9226-38466217A7D1@tiscali.it> Message-ID: <40f637ec1003100233q2387e1b0sa3e35fbb57e2cbe8@mail.gmail.com> On Wed, Mar 10, 2010 at 4:17 AM, dtrussardi at tiscali.it < dtrussardi at tiscali.it> wrote: > Hi John, > > thanks, > > i have initialize the instance indirizzoMemo and this error is eliminated. > > I have another question based on this model. > > If descriptionIndirizzoMemo is set with beReadOnly, > > when display the MAAccountModel new asComponent the descriptionIndirizzoMemo > fields is readonly ( it's ok ) . > > The problem is when submit the form because the container erase the errors > relative to the descriptionIndirizzoMemo fields condition. > > > But it's readOnly and d'ont do any control on it. > > Or not ? > I am unsure why you would want it to be read only AND be required. These conditions conflict. Unless the object in the instance var has all its details already filled in from somewhere else and you only want the user to view them? Otherwise, maybe you want to programmatically change the description to be writable at some point.... you can do that by sending beWriteable to the description. Good luck John > > Thanks, > > Dario > > > Hello Dario, > You have to initialize that instance variable indirizzoMemo (otherwise > there is really nothing to edit, no?) > You can do this most easily by adding it as a default for the > MAAccountModel>>descriptionIndirizzoMemo description: > > default: MAIndirizzoModel new; > > > HTH > John > > On Tue, Mar 9, 2010 at 11:56 AM, dtrussardi at tiscali.it < > dtrussardi at tiscali.it> wrote: > >> Hi, >> >> i work with Magritte-Model-lr.394 on pharo. >> >> I have a MAAccountModel with descriptionCodice and >> descriptionIndirizzoMemo. >> >> The last is defined as: >> >> descriptionIndirizzoMemo >> ^ (MAToOneRelationDescription new) >> componentClass: MAInternalEditorComponent ; >> classes: (Array with: MAIndirizzoModel); >> selectorAccessor: 'indirizzoMemo'; >> >> label: 'Indirizzo'; >> comment: 'Indirizzo di riferimento'; >> priority: 220; >> "beReadonly;" >> yourself >> >> Now MAIndirizzoMemoModel is defined with some other description: >> >> descrptionCitta >> descriptionNumero >> >> and other description. >> >> ( You can load the file mcz. ) >> >> >> Now when open: MAAccountModel new asComponent >> >> i found the error: >> >> MessageNotUnderstood: receiver of "isMultipart" is nil >> >> >> isMultipart >> ^ self children anySatisfy: [ :each | each isMultipart ] >> >> >> The error is erase only with componentClass set to : >> MAInternalEditorComponent. >> >> Any considerations ? >> >> Thanks, >> Dario >> _______________________________________________ >> Magritte, Pier and Related Tools ... >> https://www.iam.unibe.ch/mailman/listinfo/smallwiki >> > > > > -- > http://jmck.seasidehosting.st > _______________________________________________ > Magritte, Pier and Related Tools ... > https://www.iam.unibe.ch/mailman/listinfo/smallwiki > > > > _______________________________________________ > Magritte, Pier and Related Tools ... > https://www.iam.unibe.ch/mailman/listinfo/smallwiki > -- http://jmck.seasidehosting.st -------------- next part -------------- An HTML attachment was scrubbed... URL: From marianopeck at gmail.com Wed Mar 10 11:57:22 2010 From: marianopeck at gmail.com (Mariano Martinez Peck) Date: Wed, 10 Mar 2010 11:57:22 +0100 Subject: [Esug-list] GSoC idea: GLORP & Magritte integration In-Reply-To: References: Message-ID: I am one of the developers of SqueakDBX and GlorpDBX so...of course, I really like the idea. Having to create the GLORP mappings in a separate class and then create also the Magritte description (for other purpose, like web description) is not cool. Maybe managing all the metadata (for different purpose lile web, validations, RDB mappings, etc) with the same tool would be cool. What others think ? So, yes, I like it. Can you send me the proposal ? something like what it is in http://gsoc2010.esug.org/ideas.html Someone wants to be the mentor ? Cheers Mariano 2010/3/10 ???? ????????? > GLORP & Magritte both uses a lot of similar techniques. It's not > descriptors only. Accessors and Conditions are other examples. So, why not > clean up everything metamodel-related from GLORP, and utilise Magritte > functionality instead? > > I thing it gives boost to both projects: Magritte will be forced to evolve > and include techniques like collection tracking. GLORP, first of all, will > lost part of it's complexity. And, secondly, it will be possible to use, > say, Chain or Pluggable accessors. > > And there are several sinergy effects expected. First of all, we avoid > double-working when you try to use Magritte and GLORP in one project. Yes, > there are some package fir this, but it built "on top" of both systems, and > provide only very simple and straitforward possibilities. Next, it becomes > easier to implement "list all objects links to this very object", which is > definetly in a lot of relation-databases-based applications. > > Finaly, as far as Magritte is often used (for generating forms, for > example), it will be funny "just add few code and force my code to work with > Postgresql". Really, I think, lot of people described different pieces of > proposed system in their own projects. I personally did. > > _______________________________________________ > Esug-list mailing list > Esug-list at lists.esug.org > http://lists.esug.org/listinfo/esug-list > -------------- next part -------------- An HTML attachment was scrubbed... URL: From marianopeck at gmail.com Wed Mar 10 14:02:17 2010 From: marianopeck at gmail.com (Mariano Martinez Peck) Date: Wed, 10 Mar 2010 14:02:17 +0100 Subject: [Esug-list] GSoC idea: GLORP & Magritte integration In-Reply-To: <4B9795B3.3070508@bigwig.net> References: <4B9795B3.3070508@bigwig.net> Message-ID: Hi Niall. Thank you very much!! It is really interesting. There are two things I would change, if you are agree of course. See below. ==== > Glorp and Magritte both map between model-layer objects and other domains; > in Glorp's case, the relational database, in Magritte's case, the web. Magritte is not ONLY for web development descriptions, but for any description. That's why we are even considerating it for describing the mappings. Although it is obvious that for the web is fits very well and it is widely used for that purpose. > There are many similarities in how each framework maps model-layer class > aspects/instVars/etc. to RDB tables and fields, and to web entities. > Developers of Seaside apps using RDBs, The other thing I would like to change is that not NECESSARY you need seaside. I say this because maybe the student or the mentor want to use Aida or whatever other thing. I think it should concentrate in the interaction between Magritte and Glorp, but too much in the "user" of Magritte (seaside or whatever). I am not sure about this. Just a though. What do you think ? Cheers Mariano > in particular, sometimes feel they are repeating themselves when they code > first the Glorp mappings and then the Magritte mappings, or vice versa. > > The goal of this project is to analyze by experiment how far common aspects > can be extracted to a single core: > > - Are any limitations of one framework revealed by comparison with the > other? > > - Can the API be refactored so that the same concept uses the same method > call in both frameworks? > > - Can a single set of descriptor classes, extended by each framework, be > a common core to both? Can a single set of meta-model walking functions be > used by both? > > - Can a single set of descriptor objects be used by both? > > The output is both a refactored codeset exploiting the commonality that can > sensibly be achieved and an analysis of why more commonality cannot, or > cannot easily, be achieved > > Technical Details > =========== > Glorp and Magritte have good test suites. XP development to ensure > existing facilities remain functional will protect the student from breaking > some facilities as they experiment with refactorings. Maintaining > deprecated methods that call new API in terms of old API may be appropriate > in the project, and may also assist introduction of the results to the > community. > > Benefits to the Student > =============== > Glorp and Magritte are two meta-modelling/mapping frameworks with > impressive capabilities solving real problems: the student who does this > project will acquire significant practical knowledge of this kind of > meta-modelling. Glorp and Magritte are also important parts of one way of > writing Seaside applications: the student who does this project will have > skills that can be turned to practical account in web development. > > Yours faithfully > Niall Ross > > Mariano Martinez Peck wrote: > > I am one of the developers of SqueakDBX and GlorpDBX so...of course, I >> really like the idea. Having to create the GLORP mappings in a separate >> class and then create also the Magritte description (for other purpose, >> like web description) is not cool. Maybe managing all the metadata (for >> different purpose lile web, validations, RDB mappings, etc) with the same >> tool would be cool. >> >> What others think ? >> >> So, yes, I like it. Can you send me the proposal ? something like what it >> is in http://gsoc2010.esug.org/ideas.html >> >> Someone wants to be the mentor ? >> Cheers >> >> Mariano >> >> 2010/3/10 ???? ????????? > >> >> >> GLORP & Magritte both uses a lot of similar techniques. It's not >> descriptors only. Accessors and Conditions are other examples. So, >> why not clean up everything metamodel-related from GLORP, and >> utilise Magritte functionality instead? >> >> I thing it gives boost to both projects: Magritte will be forced >> to evolve and include techniques like collection tracking. GLORP, >> first of all, will lost part of it's complexity. And, secondly, it >> will be possible to use, say, Chain or Pluggable accessors. >> >> And there are several sinergy effects expected. First of all, we >> avoid double-working when you try to use Magritte and GLORP in one >> project. Yes, there are some package fir this, but it built "on >> top" of both systems, and provide only very simple and >> straitforward possibilities. Next, it becomes easier to implement >> "list all objects links to this very object", which is definetly >> in a lot of relation-databases-based applications. >> >> Finaly, as far as Magritte is often used (for generating forms, >> for example), it will be funny "just add few code and force my >> code to work with Postgresql". Really, I think, lot of people >> described different pieces of proposed system in their own >> projects. I personally did. >> >> _______________________________________________ >> Esug-list mailing list >> Esug-list at lists.esug.org >> >> http://lists.esug.org/listinfo/esug-list >> >> >> >> ______________________________________________________________________ >> This email has been scanned by the MessageLabs Email Security System. >> For more information please visit http://www.messagelabs.com/email >> ______________________________________________________________________ >> >> ------------------------------------------------------------------------ >> >> >> _______________________________________________ >> Esug-list mailing list >> Esug-list at lists.esug.org >> http://lists.esug.org/listinfo/esug-list >> >> > > _______________________________________________ > Esug-list mailing list > Esug-list at lists.esug.org > http://lists.esug.org/listinfo/esug-list > -------------- next part -------------- An HTML attachment was scrubbed... URL: From marianopeck at gmail.com Thu Mar 11 00:04:28 2010 From: marianopeck at gmail.com (Mariano Martinez Peck) Date: Thu, 11 Mar 2010 00:04:28 +0100 Subject: [Esug-list] GSoC idea: GLORP & Magritte integration In-Reply-To: References: Message-ID: Ok....It is important what Alan said. However, from my point of view it is worth to see what there is in common and in case that it is not too much, how can we extend or modify Magritte to be that way. The student should also look at keith's Magritte-RDB when we acutally did something similar to this but without Glorp. ???? ????????? do you want to change something to Niall proposal ? In true, please do it as soon as possible and send me the updated version. For the moment at the end you will find the version with my little changed with what I said in my previous mail. Now....we need a mentor. Diogenes Moreira offers to be the co-mentor. He knows a lot of Glorp (he is actually developing with us SqueakDBX/GlorpDBX) and Magritte. His main problem is that his English is not the best one ;) So...we still need a mentor. Volunteers ? Refactoring model mapping commonalities from Glorp and Magritte -------------------------------------------------------------------- Mentor: TBD Second mentor: TBD Level ==== Glorp and Magritte both map between model-layer objects and other domains; in Glorp's case, the relational database, in Magritte's case, the web. The truth is that Magritte is a meta-description framework for all kind of description. However, it is mostly used for web applications. There are many similarities in how each framework maps model-layer class aspects/instVars/etc. to RDB tables and fields, and to web entities. Developers of Seaside or AidaWeb apps using RDBs, in particular, sometimes feel they are repeating themselves when they code first the Glorp mappings and then the Magritte mappings, or vice versa. The goal of this project is to analyze by experiment how far common aspects can be extracted to a single core: - Are any limitations of one framework revealed by comparison with the other? - Can the API be refactored so that the same concept uses the same method call in both frameworks? - Can a single set of descriptor classes, extended by each framework, be a common core to both? Can a single set of meta-model walking functions be used by both? - Can a single set of descriptor objects be used by both? The output is both a refactored codeset exploiting the commonality that can sensibly be achieved and an analysis of why more commonality cannot, or cannot easily, be achieved Technical Details =========== Glorp and Magritte have good test suites. XP development to ensure existing facilities remain functional will protect the student from breaking some facilities as they experiment with refactorings. Maintaining deprecated methods that call new API in terms of old API may be appropriate in the project, and may also assist introduction of the results to the community. Benefits to the Student =============== Glorp and Magritte are two meta-modelling/mapping frameworks with impressive capabilities solving real problems: the student who does this project will acquire significant practical knowledge of this kind of meta-modelling. Glorp and Magritte are also important parts of one way of writing web applications: the student who does this project will have skills that can be turned to practical account in web development. 2010/3/10 ???? ????????? > > Magritte is not ONLY for web development descriptions, but for any > > description. > > Unfortunately, it's very common to use Magritte only as a tool for > generating web-forms. Most if not all Magritte examples are about it. Tool > like Magritte looks very powerful...potentially :) And it's not only about > descriptors. Memento functionality is described in pretty easy-to-understand > way, for example. Conditions structure and validation is very funny, too. I > personally used two described above. > > Firstly, I used magritte-based memento to fight GLORP limitations. GLORP > has no nested UnitOfWorks, and you really need something in realworld > application that will handle "save" button :). So, on "save" button pressing > I begin UnitOfWork, commit memento and then commit UnitOfWork. It works very > funny...but I was forced to implement my own memento class for it. There are > two problems with Magritte mementos, and both leading to idea of > GLORP-Magritte integration: > > a) Magritte's default memento try to manage parallel edits to the model > (and well, GLORP needs something like this, isn't it?). It makes two > "copies" of object, one for manipulating, and other for comparing to "real > object" on commit. It gives possibility to track modification to "real > object". made in period from making memento to commiting it. Well, it > conflicts with GLORP proxies. Instantiating of a proxy forces Magritte think > there are edit conflict...well, you can manage it by using not-default > memento (Caching instead of Checking). > > b) Magritte's mementos can't manage model's behavior. For example, if I > have simple object with two editable fields #price and #amount and one > read-only field #total, it will be impossible to use Magritte's mementos to > edit such an object. Supposing you want to observ #total during edit, i.e. > before commit will happen. To manage this, I made a new Memento class. It > makes a new instance of model's class for caching, and then uses every > not-read-only Accessor to copy values from model to this class (well, it was > little bit harder, but not much). And you see, it's very, very similar to > GLORP caching technique. > > You can overlook this on http://squeaksource.com/SmallPOS.html > > > Secondly, I trying to use (working on it just now) Magritte conditions not > for just making data entry validations, but for implementing fast search and > to build where-clauses for GLORP. And well, trying to do it I feel myself > like...hmmm...translating from one language to another with similar semantic > but different words :) > > I was forced to expand Magritte descriptor's system with "this accessor > should return this value". And GLORP already has it. > > Next, GLORP's blocks parsing technique looks very promising for Magritte. > Magritte has "plugable" condition, but it's out of Magriite concept really. > Parsing of blocks may help a lot, combining "easy to write and read" > advantage of blocks and "it's possible to serialise/manage programmatically" > advantage of explicit using of special classes. GLORP uses block parsing for > very same reasons, I believe. > > > _______________________________________________ > Esug-list mailing list > Esug-list at lists.esug.org > http://lists.esug.org/listinfo/esug-list > -------------- next part -------------- An HTML attachment was scrubbed... URL: From stan.shepherd414 at gmail.com Thu Mar 11 01:15:51 2010 From: stan.shepherd414 at gmail.com (stan shepherd) Date: Thu, 11 Mar 2010 00:15:51 +0000 Subject: Magritte import an existing project In-Reply-To: References: Message-ID: <102261991003101615r1c33b39dkf5e425ffde5e0a72@mail.gmail.com> Hi, is there a utility to automate the 'Magritte-ising' of an existing project? I imagine it would scan the classes, and create the class side descriptors and missing accessors automatically. It would seem useful for quickly evaluating/prototyping what Magritte could add to the current project. I thought I read about this before, but I can't find a reference or any class that seems to do it. Thanks, ? ...Stan From renggli at gmail.com Thu Mar 11 08:22:33 2010 From: renggli at gmail.com (Lukas Renggli) Date: Thu, 11 Mar 2010 08:22:33 +0100 Subject: Magritte import an existing project In-Reply-To: <102261991003101615r1c33b39dkf5e425ffde5e0a72@mail.gmail.com> References: <102261991003101615r1c33b39dkf5e425ffde5e0a72@mail.gmail.com> Message-ID: <67628d691003102322x5d49dbefte364e8110499965f@mail.gmail.com> > Hi, is there a utility to automate the 'Magritte-ising' of an existing > project? I imagine it would scan the classes, and create the class side > descriptors and missing accessors automatically. It would seem useful for > quickly evaluating/prototyping what Magritte could add to the current > project. Not that I know of. There are a few simple lint rules in http://source.lukas-renggli.ch/magritte/Magritte-Critics that can help you to find missing descriptions (and other potential problems) in your model code. Lukas -- Lukas Renggli http://www.lukas-renggli.ch From stan.shepherd414 at gmail.com Thu Mar 11 09:49:55 2010 From: stan.shepherd414 at gmail.com (Stan Shepherd) Date: Thu, 11 Mar 2010 00:49:55 -0800 (PST) Subject: Magritte import an existing project In-Reply-To: <67628d691003102322x5d49dbefte364e8110499965f@mail.gmail.com> References: <102261991003101615r1c33b39dkf5e425ffde5e0a72@mail.gmail.com> <67628d691003102322x5d49dbefte364e8110499965f@mail.gmail.com> Message-ID: <1268297395435-1588628.post@n4.nabble.com> Thanks Lukas, they will be useful. ..Stan -- View this message in context: http://n4.nabble.com/Magritte-import-an-existing-project-tp1588263p1588628.html Sent from the Magritte, Pier and Related Tools mailing list archive at Nabble.com. From razavi at acm.org Thu Mar 11 16:14:17 2010 From: razavi at acm.org (Reza RAZAVI) Date: Thu, 11 Mar 2010 16:14:17 +0100 Subject: Contextual #call: issue In-Reply-To: <3a06f76f1002260836g54a1f04dqc68756f42b7b719a@mail.gmail.co m> References: <3a06f76f1002260332t3f6af2fbq9bfe51766a5f1285@mail.gmail.com> <67628d691002260423p13d05f9bxd8d535fddeba8b2a@mail.gmail.com> <3a06f76f1002260510x4af97109hc8fbbe3cf7dd33f0@mail.gmail.com> <67628d691002260702j17a9c03co26b4cfb9d5135aa7@mail.gmail.com> <3a06f76f1002260836g54a1f04dqc68756f42b7b719a@mail.gmail.com> Message-ID: <8bbtuf$1791mq@smtp.pt.lu> At 17:36 26/02/2010, Nick Ager wrote: >The solution I've finally arrived at is: >1) I've added a method to my custom kernel #editingEnvironment >2) I've overridden #environment in PRPierFrame so that it now reads: > > environment >| environment | >(self context command isView or: [self context command isQuick]) ifTrue: [ >environment := self context structure environment >] ifFalse: [ >environment := self kernel editingEnvironment >]. > >^ environment Hi, I'm testing a specific type of *quick* command (#isQuick returns true). During their execution, triggered by PRContentsWidget >> onAnswerCommand:, they call other components (via #call:). My configuration is Ubuntu, Pharo, Seaside 3, and Pier2. The execution goes on smoothly when triggered via the *commands* toolbar. However, I'm experiencing an issue in the following circomstances: 1) When trying to switch the current template just before the start of the execution, using the above method by Nick. 2) When launching the command via an internal link, and only if I'm not logged in. In both cases the execution stops by the error raised in GRPharoPlatform >> seasideCallbackMarker. It is difficult to characterize the issue since its somehow contextual. But, it seems that #seasideCallbackMarker is sensitive to the components that are present in the current Pier Context. I'd greatly appreciate any feedback on this issue. Regards, Reza From nick.ager at gmail.com Thu Mar 11 17:46:02 2010 From: nick.ager at gmail.com (Nick Ager) Date: Thu, 11 Mar 2010 16:46:02 +0000 Subject: Contextual #call: issue In-Reply-To: <8bbtuf$1791mq@smtp.pt.lu> References: <3a06f76f1002260332t3f6af2fbq9bfe51766a5f1285@mail.gmail.com> <67628d691002260423p13d05f9bxd8d535fddeba8b2a@mail.gmail.com> <3a06f76f1002260510x4af97109hc8fbbe3cf7dd33f0@mail.gmail.com> <67628d691002260702j17a9c03co26b4cfb9d5135aa7@mail.gmail.com> <3a06f76f1002260836g54a1f04dqc68756f42b7b719a@mail.gmail.com> <8bbtuf$1791mq@smtp.pt.lu> Message-ID: <3a06f76f1003110846x5b753bf9ve89a7609f2aa6412@mail.gmail.com> Hi Reza, I see my name mentioned so feel responsible :). However as I'm sure you are aware I'm no expert. For what they are worth, here are some thoughts: * seasideCallbackMarker produces the helpful error: "You can only #call: and #answer: from within a callback or a Task." So presumably you are using #call outside a callback * PRContentWidget>>onChangeContext: handles #isQuick commands differently by directly calling the #onAnswerCommand: . Perhaps examining the call stack within onAnswerCommand in the cases where the command causes and error and when it executes successfully might highlight the difference causing the problem. * I brought lots of trouble on myself when I experimented with some options inside PRContentsWidget and wasn't returning all the child components from PRContentsWidget>>children, but that was probably unique to me. Hope that helps Nick On 11 March 2010 15:14, Reza RAZAVI wrote: > At 17:36 26/02/2010, Nick Ager wrote: > >> The solution I've finally arrived at is: >> 1) I've added a method to my custom kernel #editingEnvironment >> 2) I've overridden #environment in PRPierFrame so that it now reads: >> >> environment >> | environment | >> (self context command isView or: [self context command isQuick]) ifTrue: [ >> environment := self context structure environment >> ] ifFalse: [ >> environment := self kernel editingEnvironment >> ]. >> >> ^ environment >> > > Hi, > > I'm testing a specific type of *quick* command (#isQuick returns true). > During their execution, triggered by PRContentsWidget >> onAnswerCommand:, > they call other components (via #call:). My configuration is Ubuntu, Pharo, > Seaside 3, and Pier2. > > The execution goes on smoothly when triggered via the *commands* toolbar. > However, I'm experiencing an issue in the following circomstances: > 1) When trying to switch the current template just before the start of the > execution, using the above method by Nick. > 2) When launching the command via an internal link, and only if I'm not > logged in. > > In both cases the execution stops by the error raised in GRPharoPlatform >> > seasideCallbackMarker. > > It is difficult to characterize the issue since its somehow contextual. > But, it seems that #seasideCallbackMarker is sensitive to the components > that are present in the current Pier Context. > > I'd greatly appreciate any feedback on this issue. > Regards, > Reza > > > > > > _______________________________________________ > Magritte, Pier and Related Tools ... > https://www.iam.unibe.ch/mailman/listinfo/smallwiki > -------------- next part -------------- An HTML attachment was scrubbed... URL: From nick.ager at gmail.com Thu Mar 11 18:09:00 2010 From: nick.ager at gmail.com (Nick Ager) Date: Thu, 11 Mar 2010 17:09:00 +0000 Subject: Pier user management Message-ID: <3a06f76f1003110909i165e9163yb0ebcdc83f117dc@mail.gmail.com> Hi, Does any know of any Pier add-ons (or Seaside add-ons) for user management? I'm looking for functionality such as: * Handling users forgetting their password * logging on using OpenID * reporting on users who haven't logged on within a specified period. Yours lazily Nick -------------- next part -------------- An HTML attachment was scrubbed... URL: From razavi at acm.org Thu Mar 11 19:27:44 2010 From: razavi at acm.org (Reza RAZAVI) Date: Thu, 11 Mar 2010 19:27:44 +0100 Subject: Contextual #call: issue In-Reply-To: <3a06f76f1003110846x5b753bf9ve89a7609f2aa6412@mail.gmail.co m> References: <3a06f76f1002260332t3f6af2fbq9bfe51766a5f1285@mail.gmail.com> <67628d691002260423p13d05f9bxd8d535fddeba8b2a@mail.gmail.com> <3a06f76f1002260510x4af97109hc8fbbe3cf7dd33f0@mail.gmail.com> <67628d691002260702j17a9c03co26b4cfb9d5135aa7@mail.gmail.com> <3a06f76f1002260836g54a1f04dqc68756f42b7b719a@mail.gmail.com> <8bbtuf$1791mq@smtp.pt.lu> <3a06f76f1003110846x5b753bf9ve89a7609f2aa6412@mail.gmail.com> Message-ID: <8bbtuf$17b98g@smtp.pt.lu> Hi Nick , Thank you for your kind response! At 17:46 11/03/2010, Nick Ager wrote: >* seasideCallbackMarker produces the helpful error: "You can only >#call: and #answer: from within a callback or a Task." So presumably >you are using #call outside a callback An important feature of Pier is its flexibility, in this specific case, allowing dynamic modification of templates and components. My concern could be formulated as follows: is there a context-sensitive relationship between the configuration of templates/components in Pier, and partial continuations in Seaside 3? Why it looks working only in some configurations?! Maybe its simply only related to my specific application case. I've to look at it more closely. >Perhaps examining the call stack within onAnswerCommand in the cases >where the command causes and error and when it executes successfully >might highlight the difference causing the problem. Good idea. Will try it asap. Any other thoughts would be very welcome. Regards, Reza From keith_hodges at yahoo.co.uk Thu Mar 11 19:27:41 2010 From: keith_hodges at yahoo.co.uk (keith) Date: Thu, 11 Mar 2010 18:27:41 +0000 Subject: Pier user management In-Reply-To: <3a06f76f1003110909i165e9163yb0ebcdc83f117dc@mail.gmail.com> References: <3a06f76f1003110909i165e9163yb0ebcdc83f117dc@mail.gmail.com> Message-ID: <397B7724-E911-47F0-B104-3095271D0BED@yahoo.co.uk> On 11 Mar 2010, at 17:09, Nick Ager wrote: > Hi, > > Does any know of any Pier add-ons (or Seaside add-ons) for user > management? I'm looking for functionality such as: > * Handling users forgetting their password > * logging on using OpenID > * reporting on users who haven't logged on within a specified period. > > Yours lazily > > Nick Have a look at squeaksource/Beach there is some user stuff there. Keith From nick.ager at gmail.com Thu Mar 11 21:48:58 2010 From: nick.ager at gmail.com (Nick Ager) Date: Thu, 11 Mar 2010 20:48:58 +0000 Subject: Contextual #call: issue In-Reply-To: <8bbtuf$17b98g@smtp.pt.lu> References: <3a06f76f1002260332t3f6af2fbq9bfe51766a5f1285@mail.gmail.com> <67628d691002260423p13d05f9bxd8d535fddeba8b2a@mail.gmail.com> <3a06f76f1002260510x4af97109hc8fbbe3cf7dd33f0@mail.gmail.com> <67628d691002260702j17a9c03co26b4cfb9d5135aa7@mail.gmail.com> <3a06f76f1002260836g54a1f04dqc68756f42b7b719a@mail.gmail.com> <8bbtuf$1791mq@smtp.pt.lu> <3a06f76f1003110846x5b753bf9ve89a7609f2aa6412@mail.gmail.com> <8bbtuf$17b98g@smtp.pt.lu> Message-ID: <3a06f76f1003111248m187edfb2qd28720c323abde1c@mail.gmail.com> > > > Any other thoughts would be very welcome. > > Another quick thought. Given the environment switching code you're using, if the command changes from an #isQuick command to non-viewing command then environment will change. The value of #environment is used during rendering and also indirectly in call to #children. If there's a mismatch between the environment used within a rendering-callback cycle that's going to confuse Seaside when it processes the callbacks. Nick -------------- next part -------------- An HTML attachment was scrubbed... URL: From razavi at acm.org Fri Mar 12 00:41:10 2010 From: razavi at acm.org (Reza RAZAVI) Date: Fri, 12 Mar 2010 00:41:10 +0100 Subject: Contextual #call: issue In-Reply-To: <3a06f76f1003111248m187edfb2qd28720c323abde1c@mail.gmail.co m> References: <3a06f76f1002260332t3f6af2fbq9bfe51766a5f1285@mail.gmail.com> <67628d691002260423p13d05f9bxd8d535fddeba8b2a@mail.gmail.com> <3a06f76f1002260510x4af97109hc8fbbe3cf7dd33f0@mail.gmail.com> <67628d691002260702j17a9c03co26b4cfb9d5135aa7@mail.gmail.com> <3a06f76f1002260836g54a1f04dqc68756f42b7b719a@mail.gmail.com> <8bbtuf$1791mq@smtp.pt.lu> <3a06f76f1003110846x5b753bf9ve89a7609f2aa6412@mail.gmail.com> <8bbtuf$17b98g@smtp.pt.lu> <3a06f76f1003111248m187edfb2qd28720c323abde1c@mail.gmail.com> Message-ID: <8bbtuf$17d6vl@smtp.pt.lu> At 21:48 11/03/2010, Nick Ager wrote: >If there's a mismatch between the environment used within a >rendering-callback cycle that's going to confuse Seaside when it >processes the callbacks. That sounds a very good point too; thanks Nick! I've to look at what happens more closely, since now I've some clicks "lost", in the sense that when I push the command's link, its execution is not visible, although launched. I know that the execution is launched, since I tracked this down to GRPharoPlatform >> seasideCallbackMarker (as said before, the execution of this command includes calls to other components). It appears that in theses cases, #seasideCallbackMarker finds and returns a context, that of PRContext >> activationCallback. However, the #call: remains ineffective in the sense that the control is not passed to the new component!? Later, Regards, Reza From nick.ager at gmail.com Fri Mar 12 11:11:00 2010 From: nick.ager at gmail.com (Nick Ager) Date: Fri, 12 Mar 2010 10:11:00 +0000 Subject: Pier user management In-Reply-To: <397B7724-E911-47F0-B104-3095271D0BED@yahoo.co.uk> References: <3a06f76f1003110909i165e9163yb0ebcdc83f117dc@mail.gmail.com> <397B7724-E911-47F0-B104-3095271D0BED@yahoo.co.uk> Message-ID: <3a06f76f1003120211j5f7b2f53s9a116402a4c1338c@mail.gmail.com> > > > Have a look at squeaksource/Beach there is some user stuff there. > > Keith Thanks Keith I will do. -------------- next part -------------- An HTML attachment was scrubbed... URL: From norbert at hartl.name Mon Mar 15 09:07:33 2010 From: norbert at hartl.name (Norbert Hartl) Date: Mon, 15 Mar 2010 09:07:33 +0100 Subject: using , as decimal point Message-ID: Hi, I like to use fractions in my web forms. Unfortunately everything regarding numbers is nailed to use a dot (.) as decimal separator. In magritte it should be fairly easy to delegate the decimal point to the MANumberDescription but then there is still Number class>>readFrom: that checks for dot as well. Do you have any ideas how to treat this case? I'm not sure if converting at the appropriate locations is feasible. Norbert From renggli at gmail.com Mon Mar 15 09:10:51 2010 From: renggli at gmail.com (Lukas Renggli) Date: Mon, 15 Mar 2010 09:10:51 +0100 Subject: using , as decimal point In-Reply-To: References: Message-ID: <67628d691003150110h7f43b506w1faee8d054eee5e@mail.gmail.com> > Do you have any ideas how to treat this case? I'm not sure if converting at the appropriate locations is feasible. It is probably the easiest if you replace all the $, with $. before you pass it on to #readFrom: Lukas -- Lukas Renggli http://www.lukas-renggli.ch From norbert at hartl.name Mon Mar 15 09:42:34 2010 From: norbert at hartl.name (Norbert Hartl) Date: Mon, 15 Mar 2010 09:42:34 +0100 Subject: using , as decimal point In-Reply-To: <67628d691003150110h7f43b506w1faee8d054eee5e@mail.gmail.com> References: <67628d691003150110h7f43b506w1faee8d054eee5e@mail.gmail.com> Message-ID: On 15.03.2010, at 09:10, Lukas Renggli wrote: >> Do you have any ideas how to treat this case? I'm not sure if converting at the appropriate locations is feasible. > > It is probably the easiest if you replace all the $, with $. before > you pass it on to #readFrom: > Do you think it is feasible to change MAStringReader>>visitNumberDescription: from (contents occurrencesOf: $.) > 1 ifTrue: [ MAReadError signal ]. to (contents occurrencesOf: aDescription decimalPoint) > 1 ifTrue: [ MAReadError signal ]. (contents occurrencesOf: aDescription decimalPoint) = 1 ifTrue: [ contents := contents copyReplaceAll: aDescription decimalPoint with: '.' ]. ? Norbert From renggli at gmail.com Mon Mar 15 09:52:14 2010 From: renggli at gmail.com (Lukas Renggli) Date: Mon, 15 Mar 2010 09:52:14 +0100 Subject: using , as decimal point In-Reply-To: References: <67628d691003150110h7f43b506w1faee8d054eee5e@mail.gmail.com> Message-ID: <67628d691003150152v33d2a152w117b7c9d037da87c@mail.gmail.com> Yes, that should do it. On 15 March 2010 09:42, Norbert Hartl wrote: > > On 15.03.2010, at 09:10, Lukas Renggli wrote: > >>> Do you have any ideas how to treat this case? I'm not sure if converting at the appropriate locations is feasible. >> >> It is probably the easiest if you replace all the $, with $. before >> you pass it on to #readFrom: >> > Do you think it is feasible to change > > MAStringReader>>visitNumberDescription: > > from > > (contents occurrencesOf: $.) > 1 > ? ? ? ? ? ? ? ?ifTrue: [ MAReadError signal ]. > > to > > (contents occurrencesOf: aDescription decimalPoint) > 1 > ? ? ? ? ? ? ? ?ifTrue: [ MAReadError signal ]. > (contents occurrencesOf: aDescription decimalPoint) = 1 > ? ? ? ? ? ? ? ?ifTrue: [ contents := contents copyReplaceAll: aDescription decimalPoint with: '.' ]. > > ? > > Norbert > _______________________________________________ > Magritte, Pier and Related Tools ... > https://www.iam.unibe.ch/mailman/listinfo/smallwiki > -- Lukas Renggli http://www.lukas-renggli.ch From norbert at hartl.name Wed Mar 17 21:36:57 2010 From: norbert at hartl.name (Norbert Hartl) Date: Wed, 17 Mar 2010 21:36:57 +0100 Subject: Dynamic pages and something like WATask for pier Message-ID: Hi, I'm experimenting at the moment with "dynamic pages". I just need to extend the static pages by one level. I did a subclass of PRPage that answers true on hasChildren call so that PRPathLookup does accept the path being requested. If the page is really requested the last path component is taken as query for an object. I then take a "template page" copy its document and set the parent to the right page. Beside having the need for returning a dummy page on a children call this works out pretty good. If you understand that rather cryptic description :) you may have some hints about that. The second approach is to have something like WATask in pier style. The pages shouldn't be directly accessible via URL. The task should work on editabel pier pages that pass/inject the right objects into page. Let's say there is a three steps task I want to solve. I would start by taking on template page (copying its document) and embedding the first form. On answer it will take the next template page and injects the results from the previous step into the new page. This would lead to a task where the textual decoration and such could be changed by editors and the task by programmers. I'm sorry but I don't know how I can explain that in a more understandable fashion. But maybe you understand it and have some hints or pointers how to approach that use case. Norbert From stan.shepherd414 at gmail.com Fri Mar 19 15:33:05 2010 From: stan.shepherd414 at gmail.com (Stan Shepherd) Date: Fri, 19 Mar 2010 06:33:05 -0800 (PST) Subject: Scaffolding? (was Magritte import an existing project) In-Reply-To: <102261991003101615r1c33b39dkf5e425ffde5e0a72@mail.gmail.com> References: <102261991003101615r1c33b39dkf5e425ffde5e0a72@mail.gmail.com> Message-ID: <1269009185126-1599430.post@n4.nabble.com> Hi, I'm looking at porting Gerhard Obermann's Scaffolding project http://vimeo.com/2231019 http://vimeo.com/2231019 to Pharo/Seaside. A couple of questions: 1) has someone already ported it, that I haven't found? 2) does Magritte already have the equivalent, but I haven't found that? Thanks, ...Stan -- View this message in context: http://n4.nabble.com/Magritte-import-an-existing-project-tp1588263p1599430.html Sent from the Magritte, Pier and Related Tools mailing list archive at Nabble.com. From yanni at rogers.com Fri Mar 19 15:51:02 2010 From: yanni at rogers.com (Yanni Chiu) Date: Fri, 19 Mar 2010 10:51:02 -0400 Subject: Scaffolding? (was Magritte import an existing project) In-Reply-To: <1269009185126-1599430.post@n4.nabble.com> References: <102261991003101615r1c33b39dkf5e425ffde5e0a72@mail.gmail.com> <1269009185126-1599430.post@n4.nabble.com> Message-ID: Stan Shepherd wrote: > Hi, I'm looking at porting Gerhard Obermann's Scaffolding project > http://vimeo.com/2231019 http://vimeo.com/2231019 > to Pharo/Seaside. A couple of questions: > > 1) has someone already ported it, that I haven't found? I have a port. I can make it available, but where? I was not trying very hard to maintain compatibility, since it didn't seem to make sense to try and maintain a GemStone facade in a non-GemStone environment. Also, the "mandator" stuff did not make any sense to me. Incidentally, if you combine Scaffolding with the SqueakSave port I recently put on squeaksource, it works well - up until the point where you need to rebuild your image, then you need to somehow re-construct the SqueakSave image state. > 2) does Magritte already have the equivalent, but I haven't found that? Not sure. -- Yanni From p3anoman at gmail.com Fri Mar 19 17:30:51 2010 From: p3anoman at gmail.com (John McKeon) Date: Fri, 19 Mar 2010 12:30:51 -0400 Subject: Scaffolding? (was Magritte import an existing project) In-Reply-To: References: <102261991003101615r1c33b39dkf5e425ffde5e0a72@mail.gmail.com> <1269009185126-1599430.post@n4.nabble.com> Message-ID: <40f637ec1003190930p6bcd6dedr188d3e6c5cccef34@mail.gmail.com> On Fri, Mar 19, 2010 at 10:51 AM, Yanni Chiu wrote: > Stan Shepherd wrote: > >> Hi, I'm looking at porting Gerhard Obermann's Scaffolding project >> http://vimeo.com/2231019 http://vimeo.com/2231019 to Pharo/Seaside. A >> couple of questions: >> >> 1) has someone already ported it, that I haven't found? >> > > I have a port. I can make it available, but where? Why not Magritte-Addons? I would be interested in seeing that as well. > I was not trying very hard to maintain compatibility, since it didn't seem > to make sense to try and maintain a GemStone facade in a non-GemStone > environment. Also, the "mandator" stuff did not make any sense to me. > > Incidentally, if you combine Scaffolding with the SqueakSave port I > recently put on squeaksource, it works well - up until the point where you > need to rebuild your image, then you need to somehow re-construct the > SqueakSave image state. > > > 2) does Magritte already have the equivalent, but I haven't found that? >> > > Not sure. > The ExampleEditor offers some of the same faculties, but only some, namely a Seaside interface to edit descriptions > -- > Yanni > > > _______________________________________________ > Magritte, Pier and Related Tools ... > https://www.iam.unibe.ch/mailman/listinfo/smallwiki > -- http://jmck.seasidehosting.st -------------- next part -------------- An HTML attachment was scrubbed... URL: From renggli at gmail.com Fri Mar 19 17:46:24 2010 From: renggli at gmail.com (Lukas Renggli) Date: Fri, 19 Mar 2010 17:46:24 +0100 Subject: Dynamic pages and something like WATask for pier In-Reply-To: References: Message-ID: <67628d691003190946x6672955y46ed8815a9118b86@mail.gmail.com> > I'm sorry but I don't know how I can explain that in a more understandable fashion. But maybe you understand it and have some hints or pointers how to approach that use case. What about creating a WATask or WAComponent and embedding it directly as a PRComponent so that you have the complete logic in Seaside code? Lukas -- Lukas Renggli http://www.lukas-renggli.ch From yanni at rogers.com Fri Mar 19 21:34:36 2010 From: yanni at rogers.com (Yanni Chiu) Date: Fri, 19 Mar 2010 16:34:36 -0400 Subject: Scaffolding? (was Magritte import an existing project) In-Reply-To: <40f637ec1003190930p6bcd6dedr188d3e6c5cccef34@mail.gmail.com> References: <102261991003101615r1c33b39dkf5e425ffde5e0a72@mail.gmail.com> <1269009185126-1599430.post@n4.nabble.com> <40f637ec1003190930p6bcd6dedr188d3e6c5cccef34@mail.gmail.com> Message-ID: John McKeon wrote: > > > On Fri, Mar 19, 2010 at 10:51 AM, Yanni Chiu > wrote: > > Stan Shepherd wrote: > > Hi, I'm looking at porting Gerhard Obermann's Scaffolding > project http://vimeo.com/2231019 http://vimeo.com/2231019 to > Pharo/Seaside. A couple of questions: > > 1) has someone already ported it, that I haven't found? > > > I have a port. I can make it available, but where? > > > Why not Magritte-Addons? I would be interested in seeing that as well. Okay, it's in Magritte-Addons (I didn't see a Magritte2-Addons). I had tweaked it for Seaside3. This version no longer depends on a hacked up MockGemStone package, that my original port was using. I noticed a reference in the code to SqsSearch, which is from SqueakSave. If you don't use SqueakSave, then you'll need to roll your own image persistence. From norbert at hartl.name Sat Mar 20 00:53:44 2010 From: norbert at hartl.name (Norbert Hartl) Date: Sat, 20 Mar 2010 00:53:44 +0100 Subject: Dynamic pages and something like WATask for pier In-Reply-To: <67628d691003190946x6672955y46ed8815a9118b86@mail.gmail.com> References: <67628d691003190946x6672955y46ed8815a9118b86@mail.gmail.com> Message-ID: <8B9CFE31-FACA-4A2D-A4F2-B2AD88E39F26@hartl.name> On 19.03.2010, at 17:46, Lukas Renggli wrote: >> I'm sorry but I don't know how I can explain that in a more understandable fashion. But maybe you understand it and have some hints or pointers how to approach that use case. > > What about creating a WATask or WAComponent and embedding it directly > as a PRComponent so that you have the complete logic in Seaside code? > The problem I like to solve is to have an editable page for every single step of the task. Users have to be guided through the process a WATask might fulfill. The help text and description around the component isn't done by a developer and should be accesible by "normal" editors of the CMS. So I would need a series of pier pages were a the logic (each step of a task) is embedded. Or did I misunderstand what you were saying? Norbert From renggli at gmail.com Sat Mar 20 11:20:59 2010 From: renggli at gmail.com (Lukas Renggli) Date: Sat, 20 Mar 2010 11:20:59 +0100 Subject: Dynamic pages and something like WATask for pier In-Reply-To: <8B9CFE31-FACA-4A2D-A4F2-B2AD88E39F26@hartl.name> References: <67628d691003190946x6672955y46ed8815a9118b86@mail.gmail.com> <8B9CFE31-FACA-4A2D-A4F2-B2AD88E39F26@hartl.name> Message-ID: <67628d691003200320t3eedf52cr37fcde0f7915e640@mail.gmail.com> >> What about creating a WATask or WAComponent and embedding it directly >> as a PRComponent so that you have the complete logic in Seaside code? >> > The problem I like to solve is to have an editable page for every single step of the task. Users have to be guided through the process a WATask might fulfill. The help text and description around the component isn't done by a developer and should be accesible by "normal" editors of the CMS. So I would need a series of pier pages were a the logic (each step of a task) is embedded. > > Or did I misunderstand what you were saying? No, I did not fully understand what you tried to do. Another idea: Have a look at the Pier Randomizer plugin. Instead of displaying a set of pages at random, you could implement a similar widget that displayed the pages in sequence. Lukas -- Lukas Renggli http://www.lukas-renggli.ch From dtrussardi at tiscali.it Mon Mar 22 11:27:37 2010 From: dtrussardi at tiscali.it (dtrussardi at tiscali.it) Date: Mon, 22 Mar 2010 11:27:37 +0100 Subject: MAInternalEditorComponent error In-Reply-To: <40f637ec1003100233q2387e1b0sa3e35fbb57e2cbe8@mail.gmail.com> References: <40f637ec1003091009s390c19b2p54e12ae2142b8bac@mail.gmail.com> <9B519092-C54E-4A06-9226-38466217A7D1@tiscali.it> <40f637ec1003100233q2387e1b0sa3e35fbb57e2cbe8@mail.gmail.com> Message-ID: <1A705B5F-B86A-426B-8AF7-3F362C452576@tiscali.it> Hi, i have another problem about MAInternalEditorComponent. I add condition to test right input data: descriptionIndirizzoMemo ^ (MAToOneRelationDescription new) componentClass: MAInternalEditorComponent ; classes: (Array with: MAIndirizzoModel); autoAccessor: 'indirizzoMemo'; label: 'Indirizzo'; comment: 'Indirizzo di riferimento'; priority: 220; beReadonly; addCondition: [:value | | path | path := value getPathIndirizzo. ((GMStaticMapGeocoding getGMapGeocodingFor: path) findTokens: #($,)) first asNumber = 200] labelled: 'Indirizzo non completo - valido'; yourself But the value is set to nil , too when the MAInternalEditorComponent subdata i set right. If the MAInternalEditorComponent subdata is right, i think the conditional value is set to the new value. Or i wrong? In alternative, how i can read, at this level, the MAInternalEditorComponent subdata ? Thanks, Dario > > > On Wed, Mar 10, 2010 at 4:17 AM, dtrussardi at tiscali.it wrote: > Hi John, > > thanks, > > i have initialize the instance indirizzoMemo and this error is eliminated. > > I have another question based on this model. > > If descriptionIndirizzoMemo is set with beReadOnly, > > when display the MAAccountModel new asComponent the descriptionIndirizzoMemo fields is readonly ( it's ok ) . > > The problem is when submit the form because the container erase the errors relative to the descriptionIndirizzoMemo fields condition. > > > But it's readOnly and d'ont do any control on it. > > Or not ? > > I am unsure why you would want it to be read only AND be required. These conditions conflict. Unless the object in the instance var has all its details already filled in from somewhere else and you only want the user to view them? Otherwise, maybe you want to programmatically change the description to be writable at some point.... you can do that by sending beWriteable to the description. > > Good luck > John > > > > Thanks, > > Dario > > >> Hello Dario, >> You have to initialize that instance variable indirizzoMemo (otherwise there is really nothing to edit, no?) >> You can do this most easily by adding it as a default for the MAAccountModel>>descriptionIndirizzoMemo description: >> >> default: MAIndirizzoModel new; >> >> >> HTH >> John >> >> On Tue, Mar 9, 2010 at 11:56 AM, dtrussardi at tiscali.it wrote: >> Hi, >> >> i work with Magritte-Model-lr.394 on pharo. >> >> I have a MAAccountModel with descriptionCodice and descriptionIndirizzoMemo. >> >> The last is defined as: >> >> descriptionIndirizzoMemo >> ^ (MAToOneRelationDescription new) >> componentClass: MAInternalEditorComponent ; >> classes: (Array with: MAIndirizzoModel); >> selectorAccessor: 'indirizzoMemo'; >> >> label: 'Indirizzo'; >> comment: 'Indirizzo di riferimento'; >> priority: 220; >> "beReadonly;" >> yourself >> >> Now MAIndirizzoMemoModel is defined with some other description: >> >> descrptionCitta >> descriptionNumero >> >> and other description. >> >> ( You can load the file mcz. ) >> >> >> Now when open: MAAccountModel new asComponent >> >> i found the error: >> >> MessageNotUnderstood: receiver of "isMultipart" is nil >> >> >> isMultipart >> ^ self children anySatisfy: [ :each | each isMultipart ] >> >> >> The error is erase only with componentClass set to : MAInternalEditorComponent. >> >> Any considerations ? >> >> Thanks, >> Dario >> _______________________________________________ >> Magritte, Pier and Related Tools ... >> https://www.iam.unibe.ch/mailman/listinfo/smallwiki >> >> >> >> -- >> http://jmck.seasidehosting.st >> _______________________________________________ >> Magritte, Pier and Related Tools ... >> https://www.iam.unibe.ch/mailman/listinfo/smallwiki > > > _______________________________________________ > Magritte, Pier and Related Tools ... > https://www.iam.unibe.ch/mailman/listinfo/smallwiki > > > > -- > http://jmck.seasidehosting.st > _______________________________________________ > Magritte, Pier and Related Tools ... > https://www.iam.unibe.ch/mailman/listinfo/smallwiki -------------- next part -------------- An HTML attachment was scrubbed... URL: From dtrussardi at tiscali.it Thu Mar 25 16:56:27 2010 From: dtrussardi at tiscali.it (dtrussardi at tiscali.it) Date: Thu, 25 Mar 2010 16:56:27 +0100 Subject: MADescription beHidden don't update model Message-ID: Hi, i have a model with some descriptions. One of it, descriptionMap, is set with beHidden property because i think to use it only for update the relative cache description into descriptionContainer. The relative code is : ^( super descriptionContainer ) addCondition:[ : memento| memento cache at: self descriptionOK ifTrue: [ memento cache at: self descriptionMap put: 'xyz'. true ] ifFalse:[ false ]. ] labelled: 'Error is not ok; yourself The cache is right update. The problem is to update the model relative to the descriptionMap cache. When confirm the form other instances model is right update but descriptionMap not. Any idea? Thanks, Dario From norbert at hartl.name Fri Mar 26 16:52:54 2010 From: norbert at hartl.name (Norbert Hartl) Date: Fri, 26 Mar 2010 16:52:54 +0100 Subject: Dynamic pages and something like WATask for pier In-Reply-To: <67628d691003200320t3eedf52cr37fcde0f7915e640@mail.gmail.com> References: <67628d691003190946x6672955y46ed8815a9118b86@mail.gmail.com> <8B9CFE31-FACA-4A2D-A4F2-B2AD88E39F26@hartl.name> <67628d691003200320t3eedf52cr37fcde0f7915e640@mail.gmail.com> Message-ID: On 20.03.2010, at 11:20, Lukas Renggli wrote: >>> What about creating a WATask or WAComponent and embedding it directly >>> as a PRComponent so that you have the complete logic in Seaside code? >>> >> The problem I like to solve is to have an editable page for every single step of the task. Users have to be guided through the process a WATask might fulfill. The help text and description around the component isn't done by a developer and should be accesible by "normal" editors of the CMS. So I would need a series of pier pages were a the logic (each step of a task) is embedded. >> >> Or did I misunderstand what you were saying? > > No, I did not fully understand what you tried to do. > > Another idea: Have a look at the Pier Randomizer plugin. Instead of > displaying a set of pages at random, you could implement a similar > widget that displayed the pages in sequence. > Thanks, that is a good example how a set of pages can be rendered. Inside of each of this pages there needs to be a component that has been initialized already. I would do: - lookup template page - make a copy of the page - add a PRComponent as a child that has the same name as the link on that page - add a component with state to PRComponent My problem is that PRComponent only takes componentClass and creates a new component each time. So I need a good way to add an existing component to PRComponent or something similar. Maybe there is another good approach how to inject state into a PRComponent component. Norbert From renggli at gmail.com Fri Mar 26 17:16:19 2010 From: renggli at gmail.com (Lukas Renggli) Date: Fri, 26 Mar 2010 17:16:19 +0100 Subject: Dynamic pages and something like WATask for pier In-Reply-To: References: <67628d691003190946x6672955y46ed8815a9118b86@mail.gmail.com> <8B9CFE31-FACA-4A2D-A4F2-B2AD88E39F26@hartl.name> <67628d691003200320t3eedf52cr37fcde0f7915e640@mail.gmail.com> Message-ID: <67628d691003260916n30ef2733r21283917de2f9fff@mail.gmail.com> > My problem is that PRComponent only takes componentClass and creates a new component each time. So I need a good way to add an existing component to PRComponent or something similar. Maybe there is another good approach how to inject state into a PRComponent component. A new Seaside component is instantiated per embedded-link and per session. That means, if you re-render the same link you get the same component instance with the same state. Furthermore, each PRComponent has a unique link that displays itself. So if you want to reuse the same component instance throughout a session you simply display the default #document that the PRComponent returns. Lukas -- Lukas Renggli http://www.lukas-renggli.ch From norbert at hartl.name Fri Mar 26 18:03:42 2010 From: norbert at hartl.name (Norbert Hartl) Date: Fri, 26 Mar 2010 18:03:42 +0100 Subject: Dynamic pages and something like WATask for pier In-Reply-To: <67628d691003260916n30ef2733r21283917de2f9fff@mail.gmail.com> References: <67628d691003190946x6672955y46ed8815a9118b86@mail.gmail.com> <8B9CFE31-FACA-4A2D-A4F2-B2AD88E39F26@hartl.name> <67628d691003200320t3eedf52cr37fcde0f7915e640@mail.gmail.com> <67628d691003260916n30ef2733r21283917de2f9fff@mail.gmail.com> Message-ID: <445EF907-2624-42A2-9253-5B068679BD68@hartl.name> On 26.03.2010, at 17:16, Lukas Renggli wrote: >> My problem is that PRComponent only takes componentClass and creates a new component each time. So I need a good way to add an existing component to PRComponent or something similar. Maybe there is another good approach how to inject state into a PRComponent component. > > A new Seaside component is instantiated per embedded-link and per > session. That means, if you re-render the same link you get the same > component instance with the same state. > Ah... good to know. I'm more after the initial state. I have a component that has a certain object. If I want to link to this PRComponent and want to let it know about this particular object which way would you go? Is there way to do this with pier functionality? > Furthermore, each PRComponent has a unique link that displays itself. > So if you want to reuse the same component instance throughout a > session you simply display the default #document that the PRComponent > returns. > Sounds great. I think I'm going to need this soon. Norbert From renggli at gmail.com Fri Mar 26 19:14:40 2010 From: renggli at gmail.com (Lukas Renggli) Date: Fri, 26 Mar 2010 19:14:40 +0100 Subject: Dynamic pages and something like WATask for pier In-Reply-To: <445EF907-2624-42A2-9253-5B068679BD68@hartl.name> References: <67628d691003190946x6672955y46ed8815a9118b86@mail.gmail.com> <8B9CFE31-FACA-4A2D-A4F2-B2AD88E39F26@hartl.name> <67628d691003200320t3eedf52cr37fcde0f7915e640@mail.gmail.com> <67628d691003260916n30ef2733r21283917de2f9fff@mail.gmail.com> <445EF907-2624-42A2-9253-5B068679BD68@hartl.name> Message-ID: <67628d691003261114y7295abb8y84e98b88d271d698@mail.gmail.com> >>> My problem is that PRComponent only takes componentClass and creates a new component each time. So I need a good way to add an existing component to PRComponent or something similar. Maybe there is another good approach how to inject state into a PRComponent component. >> >> A new Seaside component is instantiated per embedded-link and per >> session. That means, if you re-render the same link you get the same >> component instance with the same state. >> > Ah... good to know. I'm more after the initial state. I have a component that has a certain object. If I want to link to this PRComponent and want to let it know about this particular object which way would you go? Is there way to do this with pier functionality? If your component is described and the attribute descriptions have their #parameterName: set, then you can initialize these attributes from the link: +comp|param1=value1|param2=value2+ Lukas >> Furthermore, each PRComponent has a unique link that displays itself. >> So if you want to reuse the same component instance throughout a >> session you simply display the default #document that the PRComponent >> returns. >> > Sounds great. I think I'm going to need this soon. > > Norbert > _______________________________________________ > Magritte, Pier and Related Tools ... > https://www.iam.unibe.ch/mailman/listinfo/smallwiki > -- Lukas Renggli http://www.lukas-renggli.ch From norbert at hartl.name Fri Mar 26 19:57:03 2010 From: norbert at hartl.name (Norbert Hartl) Date: Fri, 26 Mar 2010 19:57:03 +0100 Subject: Dynamic pages and something like WATask for pier In-Reply-To: <67628d691003261114y7295abb8y84e98b88d271d698@mail.gmail.com> References: <67628d691003190946x6672955y46ed8815a9118b86@mail.gmail.com> <8B9CFE31-FACA-4A2D-A4F2-B2AD88E39F26@hartl.name> <67628d691003200320t3eedf52cr37fcde0f7915e640@mail.gmail.com> <67628d691003260916n30ef2733r21283917de2f9fff@mail.gmail.com> <445EF907-2624-42A2-9253-5B068679BD68@hartl.name> <67628d691003261114y7295abb8y84e98b88d271d698@mail.gmail.com> Message-ID: <23FDD97E-72D5-4AD3-A194-61368301A0B2@hartl.name> On 26.03.2010, at 19:14, Lukas Renggli wrote: >>>> My problem is that PRComponent only takes componentClass and creates a new component each time. So I need a good way to add an existing component to PRComponent or something similar. Maybe there is another good approach how to inject state into a PRComponent component. >>> >>> A new Seaside component is instantiated per embedded-link and per >>> session. That means, if you re-render the same link you get the same >>> component instance with the same state. >>> >> Ah... good to know. I'm more after the initial state. I have a component that has a certain object. If I want to link to this PRComponent and want to let it know about this particular object which way would you go? Is there way to do this with pier functionality? > > If your component is described and the attribute descriptions have > their #parameterName: set, then you can initialize these attributes > from the link: +comp|param1=value1|param2=value2+ > Well, it is hard to tell what I mean. Ok, let's assume you have user object and that object can hold an instance of another object, let's say a company object that has an address. The editor on the web page has a select list of the available companies and a link to create a new one. That link should be a guided tour to create a new company with three steps. Let us further assume that a new company object has been created and somewhat preconfigured . Now I want to be able to give this comany object to the first page in the set to be edited further. From step1 page to step2 and so on. If everything went well I would add the company object to the user. I hope this is more clear what I meant. Norbert > Lukas > >>> Furthermore, each PRComponent has a unique link that displays itself. >>> So if you want to reuse the same component instance throughout a >>> session you simply display the default #document that the PRComponent >>> returns. >>> >> Sounds great. I think I'm going to need this soon. >> >> Norbert >> _______________________________________________ >> Magritte, Pier and Related Tools ... >> https://www.iam.unibe.ch/mailman/listinfo/smallwiki >> > > -- > Lukas Renggli > http://www.lukas-renggli.ch > > _______________________________________________ > Magritte, Pier and Related Tools ... > https://www.iam.unibe.ch/mailman/listinfo/smallwiki From razavi at acm.org Fri Mar 26 22:32:28 2010 From: razavi at acm.org (Reza RAZAVI) Date: Fri, 26 Mar 2010 22:32:28 +0100 Subject: RFBServer on Pier2 Message-ID: <8bbtuf$1c381m@smtp.pt.lu> At 10:25 27/02/2010, Lukas Renggli wrote: >Load the latest Seaside-Pharo-Tools-Web and the latest RBF server. I >fixed various minor problems, but it basically worked already before. Hi Lukas, This is to confirm that it works perfectly. I just tried it successfully both under OSX by Chicken of the VNC and under Vista by TightVNC. The issue was basically related to my firewall configuration. Thank you again, and my apologies for the delayed feedback due to other obligations. Regards, Reza From tudor.girba at gmail.com Mon Mar 29 00:55:34 2010 From: tudor.girba at gmail.com (Tudor Girba) Date: Mon, 29 Mar 2010 00:55:34 +0200 Subject: error starting pier2 Message-ID: Hi, I get an error when starting Pier2. It seems to be due to ByteArray not understanding isByteString. How to reproduce: - Get the latest Pier2 from hudson.lukas-renggli.ch - Execute: PRDistribution new register - Go to: http://localhost:8080/pier Any idea of what is wrong? Cheers, Doru ----------------- VM: Mac OS - intel - 1058 - Squeak3.8.1 of '28 Aug 2006' [latest update: #6747] Squeak VM 4.2.2b1 Image: PharoCore1.0rc3 [Latest update: #10515] SecurityManager state: Restricted: false FileAccess: true SocketAccess: true Working Dir /Users/girba/Desktop/pier2-1 Trusted Dir /foobar/tooBar/forSqueak/bogus Untrusted Dir /Users/girba/Library/Preferences/Squeak/Internet/My Squeak ByteArray(Object)>>doesNotUnderstand: #isByteString Receiver: #[47 42 32 72 69 65 68 69 82 32 42 47 13 46 105 99 111 110 32 97 32 123 111 117 116 108 10...etc... Arguments and temporary variables: aMessage: isByteString exception: MessageNotUnderstood: ByteArray>>isByteString resumeValue: nil Receiver's instance variables: #[47 42 32 72 69 65 68 69 82 32 42 47 13 46 105 99 111 110 32 97 32 123 111 117 116 108 10...etc... GRPharoUtf8CodecStream>>nextPutAll: Receiver: a GRPharoUtf8CodecStream Arguments and temporary variables: aString: #[47 42 32 72 69 65 68 69 82 32 42 47 13 46 105 99 111 110 32 97 32 12...etc... Receiver's instance variables: stream: a WriteStream '' converter: an UTF8TextConverter binary: false WABufferedResponse(WAResponse)>>nextPutAll: Receiver: a WABufferedResponse status: 200 message: 'OK' Arguments and temporary variables: aStringOrByteArray: #[47 42 32 72 69 65 68 69 82 32 42 47 13 46 105 99 111 110 ...etc... Receiver's instance variables: headers: a WAHeaderFields cookies: an OrderedCollection() status: 200 message: 'OK' contentsStream: a GRPharoUtf8CodecStream MAFileModelHandler>>handleFiltered: Receiver: a MAFileModelHandler Arguments and temporary variables: aRequestContext: a WARequestContext url: '/pier?_s=uYjuOEMpjSerCpLd' response: a WABufferedResponse status: 200 message: 'OK' mimeType: a WAMimeType(text/css) Receiver's instance variables: filter: a WAValueHolder contents: a MAFileModelHandler parent: a WAApplication configuration: a WAUserConfiguration model: a MAExternalFileModel [] in MAFileModelHandler(WARequestHandler)>>handle: Receiver: a MAFileModelHandler Arguments and temporary variables: aRequestContext: a WARequestContext url: '/pier?_s=uYjuOEMpjSerCpLd' Receiver's instance variables: filter: a WAValueHolder contents: a MAFileModelHandler parent: a WAApplication configuration: a WAUserConfiguration model: a MAExternalFileModel BlockClosure>>on:do: Receiver: [closure] in MAFileModelHandler(WARequestHandler)>>handle: Arguments and temporary variables: exception: WACurrentRequestContext handlerAction: [closure] in WACurrentRequestContext class(WADynamicVariable cla...etc... handlerActive: true Receiver's instance variables: outerContext: MAFileModelHandler(WARequestHandler)>>handle: startpc: 32 numArgs: 0 WACurrentRequestContext class(WADynamicVariable class)>>use:during: Receiver: WACurrentRequestContext Arguments and temporary variables: anObject: a WARequestContext url: '/pier?_s=uYjuOEMpjSerCpLd' aBlock: [closure] in MAFileModelHandler(WARequestHandler)>>handle: Receiver's instance variables: superclass: WADynamicVariable methodDict: a MethodDictionary() format: 140 instanceVariables: nil organization: ('as yet unclassified') subclasses: nil name: #WACurrentRequestContext classPool: nil sharedPools: nil environment: Smalltalk category: #'Seaside-Core-RequestHandling' traitComposition: {} localSelectors: nil [] in WARequestContext>>push:while: Receiver: a WARequestContext url: '/pier?_s=uYjuOEMpjSerCpLd' Arguments and temporary variables: aBlock: [closure] in MAFileModelHandler(WARequestHandler)>>handle: Receiver's instance variables: handlers: an OrderedCollection(a MAFileModelHandler a WAApplication a WADispatc...etc... request: a WARequest method: GET uri: /pier?_s=uYjuOEMpjSerCpLd version: HTTP/1...etc... response: a WABufferedResponse status: 200 message: 'OK' codec: a GRPharoUtf8Codec name: 'utf-8' consumer: a WAPathConsumer properties: nil BlockClosure>>ensure: Receiver: [closure] in WARequestContext>>push:while: Arguments and temporary variables: aBlock: [closure] in WARequestContext>>push:while: returnValue: nil b: nil Receiver's instance variables: outerContext: WARequestContext>>push:while: startpc: 42 numArgs: 0 WARequestContext>>push:while: Receiver: a WARequestContext url: '/pier?_s=uYjuOEMpjSerCpLd' Arguments and temporary variables: aRequestHandler: a MAFileModelHandler aBlock: [closure] in MAFileModelHandler(WARequestHandler)>>handle: Receiver's instance variables: handlers: an OrderedCollection(a MAFileModelHandler a WAApplication a WADispatc...etc... request: a WARequest method: GET uri: /pier?_s=uYjuOEMpjSerCpLd version: HTTP/1...etc... response: a WABufferedResponse status: 200 message: 'OK' codec: a GRPharoUtf8Codec name: 'utf-8' consumer: a WAPathConsumer properties: nil MAFileModelHandler(WARequestHandler)>>handle: Receiver: a MAFileModelHandler Arguments and temporary variables: aRequestContext: a WARequestContext url: '/pier?_s=uYjuOEMpjSerCpLd' Receiver's instance variables: filter: a WAValueHolder contents: a MAFileModelHandler parent: a WAApplication configuration: a WAUserConfiguration model: a MAExternalFileModel WAApplication(WARegistry)>>dispatch:to: Receiver: a WAApplication Arguments and temporary variables: aRequestContext: a WARequestContext url: '/pier?_s=uYjuOEMpjSerCpLd' aRequestHandler: a MAFileModelHandler Receiver's instance variables: filter: a WAValueHolder contents: a WAExceptionFilter parent: a WADispatcher configuration: a WAUserConfiguration cache: a WACache WAApplication(WARegistry)>>handleKeyed:with: Receiver: a WAApplication Arguments and temporary variables: aRequestContext: a WARequestContext url: '/pier?_s=uYjuOEMpjSerCpLd' aRequestHandler: a MAFileModelHandler Receiver's instance variables: filter: a WAValueHolder contents: a WAExceptionFilter parent: a WADispatcher configuration: a WAUserConfiguration cache: a WACache WAApplication(WARegistry)>>handleFiltered: Receiver: a WAApplication Arguments and temporary variables: aRequestContext: a WARequestContext url: '/pier?_s=uYjuOEMpjSerCpLd' cookie: nil key: 'uYjuOEMpjSerCpLd' handler: a MAFileModelHandler urlKey: 'uYjuOEMpjSerCpLd' Receiver's instance variables: filter: a WAValueHolder contents: a WAExceptionFilter parent: a WADispatcher configuration: a WAUserConfiguration cache: a WACache WAApplication>>handleFiltered: Receiver: a WAApplication Arguments and temporary variables: aRequestContext: a WARequestContext url: '/pier?_s=uYjuOEMpjSerCpLd' Receiver's instance variables: filter: a WAValueHolder contents: a WAExceptionFilter parent: a WADispatcher configuration: a WAUserConfiguration cache: a WACache WAExceptionFilter(WARequestFilter)>>handleFiltered: Receiver: a WAExceptionFilter Arguments and temporary variables: aRequestContext: a WARequestContext url: '/pier?_s=uYjuOEMpjSerCpLd' Receiver's instance variables: next: a WAValueHolder contents: a WAApplication configuration: a WAUserConfiguration [] in WAExceptionFilter>>handleFiltered: Receiver: a WAExceptionFilter Arguments and temporary variables: aRequestContext: a WARequestContext url: '/pier?_s=uYjuOEMpjSerCpLd' Receiver's instance variables: next: a WAValueHolder contents: a WAApplication configuration: a WAUserConfiguration BlockClosure>>on:do: Receiver: [closure] in WAExceptionFilter>>handleFiltered: Arguments and temporary variables: exception: a WAWalkbackErrorHandler handlerAction: [closure] in WAWalkbackErrorHandler(WAExceptionHandler)>>handleE...etc... handlerActive: false Receiver's instance variables: outerContext: WAExceptionFilter>>handleFiltered: startpc: 32 numArgs: 0 WAWalkbackErrorHandler(WAExceptionHandler)>>handleExceptionsDuring: Receiver: a WAWalkbackErrorHandler Arguments and temporary variables: aBlock: [closure] in WAExceptionFilter>>handleFiltered: Receiver's instance variables: requestContext: a WARequestContext url: '/pier?_s=uYjuOEMpjSerCpLd' WAWalkbackErrorHandler class(WAExceptionHandler class)>>handleExceptionsDuring:context: Receiver: WAWalkbackErrorHandler Arguments and temporary variables: aBlock: [closure] in WAExceptionFilter>>handleFiltered: aRequestContext: a WARequestContext url: '/pier?_s=uYjuOEMpjSerCpLd' Receiver's instance variables: superclass: WADebugErrorHandler methodDict: a MethodDictionary(#open:->a CompiledMethod(1906: WAWalkbackErrorHa...etc... format: 132 instanceVariables: nil organization: ('private' open:) subclasses: nil name: #WAWalkbackErrorHandler classPool: nil sharedPools: nil environment: Smalltalk category: #'Seaside-Development-Core' traitComposition: {} localSelectors: nil WAExceptionFilter>>handleFiltered: Receiver: a WAExceptionFilter Arguments and temporary variables: aRequestContext: a WARequestContext url: '/pier?_s=uYjuOEMpjSerCpLd' Receiver's instance variables: next: a WAValueHolder contents: a WAApplication configuration: a WAUserConfiguration [] in WAApplication(WARequestHandler)>>handle: Receiver: a WAApplication Arguments and temporary variables: aRequestContext: a WARequestContext url: '/pier?_s=uYjuOEMpjSerCpLd' Receiver's instance variables: filter: a WAValueHolder contents: a WAExceptionFilter parent: a WADispatcher configuration: a WAUserConfiguration cache: a WACache BlockClosure>>on:do: Receiver: [closure] in WAApplication(WARequestHandler)>>handle: Arguments and temporary variables: exception: WACurrentRequestContext handlerAction: [closure] in WACurrentRequestContext class(WADynamicVariable cla...etc... handlerActive: true Receiver's instance variables: outerContext: WAApplication(WARequestHandler)>>handle: startpc: 32 numArgs: 0 WACurrentRequestContext class(WADynamicVariable class)>>use:during: Receiver: WACurrentRequestContext Arguments and temporary variables: anObject: a WARequestContext url: '/pier?_s=uYjuOEMpjSerCpLd' aBlock: [closure] in WAApplication(WARequestHandler)>>handle: Receiver's instance variables: superclass: WADynamicVariable methodDict: a MethodDictionary() format: 140 instanceVariables: nil organization: ('as yet unclassified') subclasses: nil name: #WACurrentRequestContext classPool: nil sharedPools: nil environment: Smalltalk category: #'Seaside-Core-RequestHandling' traitComposition: {} localSelectors: nil [] in WARequestContext>>push:while: Receiver: a WARequestContext url: '/pier?_s=uYjuOEMpjSerCpLd' Arguments and temporary variables: aBlock: [closure] in WAApplication(WARequestHandler)>>handle: Receiver's instance variables: handlers: an OrderedCollection(a MAFileModelHandler a WAApplication a WADispatc...etc... request: a WARequest method: GET uri: /pier?_s=uYjuOEMpjSerCpLd version: HTTP/1...etc... response: a WABufferedResponse status: 200 message: 'OK' codec: a GRPharoUtf8Codec name: 'utf-8' consumer: a WAPathConsumer properties: nil BlockClosure>>ensure: Receiver: [closure] in WARequestContext>>push:while: Arguments and temporary variables: aBlock: [closure] in WARequestContext>>push:while: returnValue: nil b: nil Receiver's instance variables: outerContext: WARequestContext>>push:while: startpc: 42 numArgs: 0 WARequestContext>>push:while: Receiver: a WARequestContext url: '/pier?_s=uYjuOEMpjSerCpLd' Arguments and temporary variables: aRequestHandler: a WAApplication aBlock: [closure] in WAApplication(WARequestHandler)>>handle: Receiver's instance variables: handlers: an OrderedCollection(a MAFileModelHandler a WAApplication a WADispatc...etc... request: a WARequest method: GET uri: /pier?_s=uYjuOEMpjSerCpLd version: HTTP/1...etc... response: a WABufferedResponse status: 200 message: 'OK' codec: a GRPharoUtf8Codec name: 'utf-8' consumer: a WAPathConsumer properties: nil WAApplication(WARequestHandler)>>handle: Receiver: a WAApplication Arguments and temporary variables: aRequestContext: a WARequestContext url: '/pier?_s=uYjuOEMpjSerCpLd' Receiver's instance variables: filter: a WAValueHolder contents: a WAExceptionFilter parent: a WADispatcher configuration: a WAUserConfiguration cache: a WACache WADispatcher>>handleFiltered:named: Receiver: a WADispatcher Arguments and temporary variables: aRequestContext: a WARequestContext url: '/pier?_s=uYjuOEMpjSerCpLd' aString: 'pier' Receiver's instance variables: filter: a WAValueHolder contents: a WADispatcher parent: nil configuration: a WAUserConfiguration defaultName: 'browse' handlers: a Dictionary('browse'->a WAApplication 'comet'->a WADispatcher 'confi...etc... WADispatcher>>handleFiltered: Receiver: a WADispatcher Arguments and temporary variables: aRequestContext: a WARequestContext url: '/pier?_s=uYjuOEMpjSerCpLd' handlerName: 'pier' consumer: a WAPathConsumer Receiver's instance variables: filter: a WAValueHolder contents: a WADispatcher parent: nil configuration: a WAUserConfiguration defaultName: 'browse' handlers: a Dictionary('browse'->a WAApplication 'comet'->a WADispatcher 'confi...etc... [] in WADispatcher(WARequestHandler)>>handle: Receiver: a WADispatcher Arguments and temporary variables: aRequestContext: a WARequestContext url: '/pier?_s=uYjuOEMpjSerCpLd' Receiver's instance variables: filter: a WAValueHolder contents: a WADispatcher parent: nil configuration: a WAUserConfiguration defaultName: 'browse' handlers: a Dictionary('browse'->a WAApplication 'comet'->a WADispatcher 'confi...etc... BlockClosure>>on:do: Receiver: [closure] in WADispatcher(WARequestHandler)>>handle: Arguments and temporary variables: exception: WACurrentRequestContext handlerAction: [closure] in WACurrentRequestContext class(WADynamicVariable cla...etc... handlerActive: true Receiver's instance variables: outerContext: WADispatcher(WARequestHandler)>>handle: startpc: 32 numArgs: 0 WACurrentRequestContext class(WADynamicVariable class)>>use:during: Receiver: WACurrentRequestContext Arguments and temporary variables: anObject: a WARequestContext url: '/pier?_s=uYjuOEMpjSerCpLd' aBlock: [closure] in WADispatcher(WARequestHandler)>>handle: Receiver's instance variables: superclass: WADynamicVariable methodDict: a MethodDictionary() format: 140 instanceVariables: nil organization: ('as yet unclassified') subclasses: nil name: #WACurrentRequestContext classPool: nil sharedPools: nil environment: Smalltalk category: #'Seaside-Core-RequestHandling' traitComposition: {} localSelectors: nil [] in WARequestContext>>push:while: Receiver: a WARequestContext url: '/pier?_s=uYjuOEMpjSerCpLd' Arguments and temporary variables: aBlock: [closure] in WADispatcher(WARequestHandler)>>handle: Receiver's instance variables: handlers: an OrderedCollection(a MAFileModelHandler a WAApplication a WADispatc...etc... request: a WARequest method: GET uri: /pier?_s=uYjuOEMpjSerCpLd version: HTTP/1...etc... response: a WABufferedResponse status: 200 message: 'OK' codec: a GRPharoUtf8Codec name: 'utf-8' consumer: a WAPathConsumer properties: nil BlockClosure>>ensure: Receiver: [closure] in WARequestContext>>push:while: Arguments and temporary variables: aBlock: [closure] in WARequestContext>>push:while: returnValue: nil b: nil Receiver's instance variables: outerContext: WARequestContext>>push:while: startpc: 42 numArgs: 0 WARequestContext>>push:while: Receiver: a WARequestContext url: '/pier?_s=uYjuOEMpjSerCpLd' Arguments and temporary variables: aRequestHandler: a WADispatcher aBlock: [closure] in WADispatcher(WARequestHandler)>>handle: Receiver's instance variables: handlers: an OrderedCollection(a MAFileModelHandler a WAApplication a WADispatc...etc... request: a WARequest method: GET uri: /pier?_s=uYjuOEMpjSerCpLd version: HTTP/1...etc... response: a WABufferedResponse status: 200 message: 'OK' codec: a GRPharoUtf8Codec name: 'utf-8' consumer: a WAPathConsumer properties: nil WADispatcher(WARequestHandler)>>handle: Receiver: a WADispatcher Arguments and temporary variables: aRequestContext: a WARequestContext url: '/pier?_s=uYjuOEMpjSerCpLd' Receiver's instance variables: filter: a WAValueHolder contents: a WADispatcher parent: nil configuration: a WAUserConfiguration defaultName: 'browse' handlers: a Dictionary('browse'->a WAApplication 'comet'->a WADispatcher 'confi...etc... [] in WAComancheAdaptor(WAServerAdaptor)>>handleRequest: Receiver: a WAComancheAdaptor Arguments and temporary variables: aRequestContext: a WARequestContext url: '/pier?_s=uYjuOEMpjSerCpLd' Receiver's instance variables: manager: a WAServerManager port: 8080 requestHandler: nil codec: a GRPharoUtf8Codec name: 'utf-8' streamUploads: false service: seaside-8080 [running] port: 8080 BlockClosure>>on:do: Receiver: [closure] in WAComancheAdaptor(WAServerAdaptor)>>handleRequest: Arguments and temporary variables: exception: WAResponseNotification handlerAction: [closure] in WAComancheAdaptor(WAServerAdaptor)>>handleRequest: handlerActive: true Receiver's instance variables: outerContext: WAComancheAdaptor(WAServerAdaptor)>>handleRequest: startpc: 34 numArgs: 0 --- The full stack --- ByteArray(Object)>>doesNotUnderstand: #isByteString GRPharoUtf8CodecStream>>nextPutAll: WABufferedResponse(WAResponse)>>nextPutAll: MAFileModelHandler>>handleFiltered: [] in MAFileModelHandler(WARequestHandler)>>handle: BlockClosure>>on:do: WACurrentRequestContext class(WADynamicVariable class)>>use:during: [] in WARequestContext>>push:while: BlockClosure>>ensure: WARequestContext>>push:while: MAFileModelHandler(WARequestHandler)>>handle: WAApplication(WARegistry)>>dispatch:to: WAApplication(WARegistry)>>handleKeyed:with: WAApplication(WARegistry)>>handleFiltered: WAApplication>>handleFiltered: WAExceptionFilter(WARequestFilter)>>handleFiltered: [] in WAExceptionFilter>>handleFiltered: BlockClosure>>on:do: WAWalkbackErrorHandler(WAExceptionHandler)>>handleExceptionsDuring: WAWalkbackErrorHandler class(WAExceptionHandler class)>>handleExceptionsDuring:context: WAExceptionFilter>>handleFiltered: [] in WAApplication(WARequestHandler)>>handle: BlockClosure>>on:do: WACurrentRequestContext class(WADynamicVariable class)>>use:during: [] in WARequestContext>>push:while: BlockClosure>>ensure: WARequestContext>>push:while: WAApplication(WARequestHandler)>>handle: WADispatcher>>handleFiltered:named: WADispatcher>>handleFiltered: [] in WADispatcher(WARequestHandler)>>handle: BlockClosure>>on:do: WACurrentRequestContext class(WADynamicVariable class)>>use:during: [] in WARequestContext>>push:while: BlockClosure>>ensure: WARequestContext>>push:while: WADispatcher(WARequestHandler)>>handle: [] in WAComancheAdaptor(WAServerAdaptor)>>handleRequest: BlockClosure>>on:do: - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - WAComancheAdaptor(WAServerAdaptor)>>handleRequest: WAComancheAdaptor(WAServerAdaptor)>>handle: [] in WAComancheAdaptor(WAServerAdaptor)>>process: BlockClosure>>ensure: WAComancheAdaptor(WAServerAdaptor)>>process: WAComancheAdaptor>>processHttpRequest: HttpService>>processHttpRequest: [] in HttpAdaptor>>dispatchRequest: BlockClosure>>on:do: HttpService>>handleDispatchErrorsIn: HttpAdaptor>>dispatchRequest: [] in [] in HttpAdaptor>>beginConversation BlockClosure>>on:do: BlockClosure>>valueWithBindingsContext: BlockClosure>>valueWithBindings: BindingsAccessor>>clamp: [] in HttpAdaptor>>beginConversation BlockClosure>>ensure: HttpAdaptor>>beginConversation HttpAdaptor class>>readAndWriteTo:service: HttpAdaptor class>>readAndWriteToSocket:service: HttpService>>serve: [] in HttpService(TcpService)>>value: BlockClosure>>on:do: BlockClosure>>valueWithBindingsContext: BlockClosure>>valueWithBindings: BindingsAccessor>>clamp: [] in BlockClosure>>newProcessWithClampedBindings: BlockClosure>>on:do: BlockClosure>>valueWithBindingsContext: BlockClosure>>valueWithBindings: [] in BlockClosure>>newProcessWithBindings: [] in BlockClosure>>newProcess -- www.tudorgirba.com "Relationships are of two kinds: those we choose and those that happen. They both matter." From marianopeck at gmail.com Mon Mar 29 09:00:51 2010 From: marianopeck at gmail.com (Mariano Martinez Peck) Date: Mon, 29 Mar 2010 04:00:51 -0300 Subject: error starting pier2 In-Reply-To: References: Message-ID: Doru: It was reported several times. Look in this mailing list, the threads with subject: - ConfigurationOfSeaside 1.0.3 is available - uft-8 MAFileModelHandler - Pier-Setup change report (Pier 1 & 2) Cheers Mariano On Sun, Mar 28, 2010 at 7:55 PM, Tudor Girba wrote: > Hi, > > I get an error when starting Pier2. It seems to be due to ByteArray not > understanding isByteString. > > How to reproduce: > - Get the latest Pier2 from hudson.lukas-renggli.ch > - Execute: PRDistribution new register > - Go to: http://localhost:8080/pier > > Any idea of what is wrong? > > Cheers, > Doru > > ----------------- > > VM: Mac OS - intel - 1058 - Squeak3.8.1 of '28 Aug 2006' [latest update: > #6747] Squeak VM 4.2.2b1 > Image: PharoCore1.0rc3 [Latest update: #10515] > > SecurityManager state: > Restricted: false > FileAccess: true > SocketAccess: true > Working Dir /Users/girba/Desktop/pier2-1 > Trusted Dir /foobar/tooBar/forSqueak/bogus > Untrusted Dir /Users/girba/Library/Preferences/Squeak/Internet/My Squeak > > ByteArray(Object)>>doesNotUnderstand: #isByteString > Receiver: #[47 42 32 72 69 65 68 69 82 32 42 47 13 46 105 99 111 110 > 32 97 32 123 111 117 116 108 10...etc... > Arguments and temporary variables: > aMessage: isByteString > exception: MessageNotUnderstood: > ByteArray>>isByteString > resumeValue: nil > Receiver's instance variables: > #[47 42 32 72 69 65 68 69 82 32 42 47 13 46 105 99 111 110 32 97 32 123 111 > 117 116 108 10...etc... > > GRPharoUtf8CodecStream>>nextPutAll: > Receiver: a GRPharoUtf8CodecStream > Arguments and temporary variables: > aString: #[47 42 32 72 69 65 68 69 82 32 42 47 13 46 > 105 99 111 110 32 97 32 12...etc... > Receiver's instance variables: > stream: a WriteStream '' > converter: an UTF8TextConverter > binary: false > > WABufferedResponse(WAResponse)>>nextPutAll: > Receiver: a WABufferedResponse status: 200 message: 'OK' > Arguments and temporary variables: > aStringOrByteArray: #[47 42 32 72 69 65 68 69 82 32 42 > 47 13 46 105 99 111 110 ...etc... > Receiver's instance variables: > headers: a WAHeaderFields > cookies: an OrderedCollection() > status: 200 > message: 'OK' > contentsStream: a GRPharoUtf8CodecStream > > MAFileModelHandler>>handleFiltered: > Receiver: a MAFileModelHandler > Arguments and temporary variables: > aRequestContext: a WARequestContext url: > '/pier?_s=uYjuOEMpjSerCpLd' > response: a WABufferedResponse status: 200 message: > 'OK' > mimeType: a WAMimeType(text/css) > Receiver's instance variables: > filter: a WAValueHolder contents: a > MAFileModelHandler > parent: a WAApplication > configuration: a WAUserConfiguration > model: a MAExternalFileModel > > [] in MAFileModelHandler(WARequestHandler)>>handle: > Receiver: a MAFileModelHandler > Arguments and temporary variables: > aRequestContext: a WARequestContext url: > '/pier?_s=uYjuOEMpjSerCpLd' > Receiver's instance variables: > filter: a WAValueHolder contents: a > MAFileModelHandler > parent: a WAApplication > configuration: a WAUserConfiguration > model: a MAExternalFileModel > > BlockClosure>>on:do: > Receiver: [closure] in MAFileModelHandler(WARequestHandler)>>handle: > Arguments and temporary variables: > exception: WACurrentRequestContext > handlerAction: [closure] in WACurrentRequestContext > class(WADynamicVariable cla...etc... > handlerActive: true > Receiver's instance variables: > outerContext: > MAFileModelHandler(WARequestHandler)>>handle: > startpc: 32 > numArgs: 0 > > WACurrentRequestContext class(WADynamicVariable class)>>use:during: > Receiver: WACurrentRequestContext > Arguments and temporary variables: > anObject: a WARequestContext url: > '/pier?_s=uYjuOEMpjSerCpLd' > aBlock: [closure] in > MAFileModelHandler(WARequestHandler)>>handle: > Receiver's instance variables: > superclass: WADynamicVariable > methodDict: a MethodDictionary() > format: 140 > instanceVariables: nil > organization: ('as yet unclassified') > > subclasses: nil > name: #WACurrentRequestContext > classPool: nil > sharedPools: nil > environment: Smalltalk > category: #'Seaside-Core-RequestHandling' > traitComposition: {} > localSelectors: nil > > [] in WARequestContext>>push:while: > Receiver: a WARequestContext url: '/pier?_s=uYjuOEMpjSerCpLd' > Arguments and temporary variables: > aBlock: [closure] in > MAFileModelHandler(WARequestHandler)>>handle: > Receiver's instance variables: > handlers: an OrderedCollection(a MAFileModelHandler a > WAApplication a WADispatc...etc... > request: a WARequest method: GET uri: > /pier?_s=uYjuOEMpjSerCpLd version: HTTP/1...etc... > response: a WABufferedResponse status: 200 message: > 'OK' > codec: a GRPharoUtf8Codec name: 'utf-8' > consumer: a WAPathConsumer > properties: nil > > BlockClosure>>ensure: > Receiver: [closure] in WARequestContext>>push:while: > Arguments and temporary variables: > aBlock: [closure] in WARequestContext>>push:while: > returnValue: nil > b: nil > Receiver's instance variables: > outerContext: WARequestContext>>push:while: > startpc: 42 > numArgs: 0 > > WARequestContext>>push:while: > Receiver: a WARequestContext url: '/pier?_s=uYjuOEMpjSerCpLd' > Arguments and temporary variables: > aRequestHandler: a MAFileModelHandler > aBlock: [closure] in > MAFileModelHandler(WARequestHandler)>>handle: > Receiver's instance variables: > handlers: an OrderedCollection(a MAFileModelHandler a > WAApplication a WADispatc...etc... > request: a WARequest method: GET uri: > /pier?_s=uYjuOEMpjSerCpLd version: HTTP/1...etc... > response: a WABufferedResponse status: 200 message: > 'OK' > codec: a GRPharoUtf8Codec name: 'utf-8' > consumer: a WAPathConsumer > properties: nil > > MAFileModelHandler(WARequestHandler)>>handle: > Receiver: a MAFileModelHandler > Arguments and temporary variables: > aRequestContext: a WARequestContext url: > '/pier?_s=uYjuOEMpjSerCpLd' > Receiver's instance variables: > filter: a WAValueHolder contents: a > MAFileModelHandler > parent: a WAApplication > configuration: a WAUserConfiguration > model: a MAExternalFileModel > > WAApplication(WARegistry)>>dispatch:to: > Receiver: a WAApplication > Arguments and temporary variables: > aRequestContext: a WARequestContext url: > '/pier?_s=uYjuOEMpjSerCpLd' > aRequestHandler: a MAFileModelHandler > Receiver's instance variables: > filter: a WAValueHolder contents: a > WAExceptionFilter > parent: a WADispatcher > configuration: a WAUserConfiguration > cache: a WACache > > WAApplication(WARegistry)>>handleKeyed:with: > Receiver: a WAApplication > Arguments and temporary variables: > aRequestContext: a WARequestContext url: > '/pier?_s=uYjuOEMpjSerCpLd' > aRequestHandler: a MAFileModelHandler > Receiver's instance variables: > filter: a WAValueHolder contents: a > WAExceptionFilter > parent: a WADispatcher > configuration: a WAUserConfiguration > cache: a WACache > > WAApplication(WARegistry)>>handleFiltered: > Receiver: a WAApplication > Arguments and temporary variables: > aRequestContext: a WARequestContext url: > '/pier?_s=uYjuOEMpjSerCpLd' > cookie: nil > key: 'uYjuOEMpjSerCpLd' > handler: a MAFileModelHandler > urlKey: 'uYjuOEMpjSerCpLd' > Receiver's instance variables: > filter: a WAValueHolder contents: a > WAExceptionFilter > parent: a WADispatcher > configuration: a WAUserConfiguration > cache: a WACache > > WAApplication>>handleFiltered: > Receiver: a WAApplication > Arguments and temporary variables: > aRequestContext: a WARequestContext url: > '/pier?_s=uYjuOEMpjSerCpLd' > Receiver's instance variables: > filter: a WAValueHolder contents: a > WAExceptionFilter > parent: a WADispatcher > configuration: a WAUserConfiguration > cache: a WACache > > WAExceptionFilter(WARequestFilter)>>handleFiltered: > Receiver: a WAExceptionFilter > Arguments and temporary variables: > aRequestContext: a WARequestContext url: > '/pier?_s=uYjuOEMpjSerCpLd' > Receiver's instance variables: > next: a WAValueHolder contents: a WAApplication > configuration: a WAUserConfiguration > > [] in WAExceptionFilter>>handleFiltered: > Receiver: a WAExceptionFilter > Arguments and temporary variables: > aRequestContext: a WARequestContext url: > '/pier?_s=uYjuOEMpjSerCpLd' > Receiver's instance variables: > next: a WAValueHolder contents: a WAApplication > configuration: a WAUserConfiguration > > BlockClosure>>on:do: > Receiver: [closure] in WAExceptionFilter>>handleFiltered: > Arguments and temporary variables: > exception: a WAWalkbackErrorHandler > handlerAction: [closure] in > WAWalkbackErrorHandler(WAExceptionHandler)>>handleE...etc... > handlerActive: false > Receiver's instance variables: > outerContext: WAExceptionFilter>>handleFiltered: > startpc: 32 > numArgs: 0 > > WAWalkbackErrorHandler(WAExceptionHandler)>>handleExceptionsDuring: > Receiver: a WAWalkbackErrorHandler > Arguments and temporary variables: > aBlock: [closure] in > WAExceptionFilter>>handleFiltered: > Receiver's instance variables: > requestContext: a WARequestContext url: > '/pier?_s=uYjuOEMpjSerCpLd' > > WAWalkbackErrorHandler class(WAExceptionHandler > class)>>handleExceptionsDuring:context: > Receiver: WAWalkbackErrorHandler > Arguments and temporary variables: > aBlock: [closure] in > WAExceptionFilter>>handleFiltered: > aRequestContext: a WARequestContext url: > '/pier?_s=uYjuOEMpjSerCpLd' > Receiver's instance variables: > superclass: WADebugErrorHandler > methodDict: a MethodDictionary(#open:->a > CompiledMethod(1906: WAWalkbackErrorHa...etc... > format: 132 > instanceVariables: nil > organization: ('private' open:) > > subclasses: nil > name: #WAWalkbackErrorHandler > classPool: nil > sharedPools: nil > environment: Smalltalk > category: #'Seaside-Development-Core' > traitComposition: {} > localSelectors: nil > > WAExceptionFilter>>handleFiltered: > Receiver: a WAExceptionFilter > Arguments and temporary variables: > aRequestContext: a WARequestContext url: > '/pier?_s=uYjuOEMpjSerCpLd' > Receiver's instance variables: > next: a WAValueHolder contents: a WAApplication > configuration: a WAUserConfiguration > > [] in WAApplication(WARequestHandler)>>handle: > Receiver: a WAApplication > Arguments and temporary variables: > aRequestContext: a WARequestContext url: > '/pier?_s=uYjuOEMpjSerCpLd' > Receiver's instance variables: > filter: a WAValueHolder contents: a > WAExceptionFilter > parent: a WADispatcher > configuration: a WAUserConfiguration > cache: a WACache > > BlockClosure>>on:do: > Receiver: [closure] in WAApplication(WARequestHandler)>>handle: > Arguments and temporary variables: > exception: WACurrentRequestContext > handlerAction: [closure] in WACurrentRequestContext > class(WADynamicVariable cla...etc... > handlerActive: true > Receiver's instance variables: > outerContext: WAApplication(WARequestHandler)>>handle: > startpc: 32 > numArgs: 0 > > WACurrentRequestContext class(WADynamicVariable class)>>use:during: > Receiver: WACurrentRequestContext > Arguments and temporary variables: > anObject: a WARequestContext url: > '/pier?_s=uYjuOEMpjSerCpLd' > aBlock: [closure] in > WAApplication(WARequestHandler)>>handle: > Receiver's instance variables: > superclass: WADynamicVariable > methodDict: a MethodDictionary() > format: 140 > instanceVariables: nil > organization: ('as yet unclassified') > > subclasses: nil > name: #WACurrentRequestContext > classPool: nil > sharedPools: nil > environment: Smalltalk > category: #'Seaside-Core-RequestHandling' > traitComposition: {} > localSelectors: nil > > [] in WARequestContext>>push:while: > Receiver: a WARequestContext url: '/pier?_s=uYjuOEMpjSerCpLd' > Arguments and temporary variables: > aBlock: [closure] in > WAApplication(WARequestHandler)>>handle: > Receiver's instance variables: > handlers: an OrderedCollection(a MAFileModelHandler a > WAApplication a WADispatc...etc... > request: a WARequest method: GET uri: > /pier?_s=uYjuOEMpjSerCpLd version: HTTP/1...etc... > response: a WABufferedResponse status: 200 message: > 'OK' > codec: a GRPharoUtf8Codec name: 'utf-8' > consumer: a WAPathConsumer > properties: nil > > BlockClosure>>ensure: > Receiver: [closure] in WARequestContext>>push:while: > Arguments and temporary variables: > aBlock: [closure] in WARequestContext>>push:while: > returnValue: nil > b: nil > Receiver's instance variables: > outerContext: WARequestContext>>push:while: > startpc: 42 > numArgs: 0 > > WARequestContext>>push:while: > Receiver: a WARequestContext url: '/pier?_s=uYjuOEMpjSerCpLd' > Arguments and temporary variables: > aRequestHandler: a WAApplication > aBlock: [closure] in > WAApplication(WARequestHandler)>>handle: > Receiver's instance variables: > handlers: an OrderedCollection(a MAFileModelHandler a > WAApplication a WADispatc...etc... > request: a WARequest method: GET uri: > /pier?_s=uYjuOEMpjSerCpLd version: HTTP/1...etc... > response: a WABufferedResponse status: 200 message: > 'OK' > codec: a GRPharoUtf8Codec name: 'utf-8' > consumer: a WAPathConsumer > properties: nil > > WAApplication(WARequestHandler)>>handle: > Receiver: a WAApplication > Arguments and temporary variables: > aRequestContext: a WARequestContext url: > '/pier?_s=uYjuOEMpjSerCpLd' > Receiver's instance variables: > filter: a WAValueHolder contents: a > WAExceptionFilter > parent: a WADispatcher > configuration: a WAUserConfiguration > cache: a WACache > > WADispatcher>>handleFiltered:named: > Receiver: a WADispatcher > Arguments and temporary variables: > aRequestContext: a WARequestContext url: > '/pier?_s=uYjuOEMpjSerCpLd' > aString: 'pier' > Receiver's instance variables: > filter: a WAValueHolder contents: a WADispatcher > parent: nil > configuration: a WAUserConfiguration > defaultName: 'browse' > handlers: a Dictionary('browse'->a WAApplication > 'comet'->a WADispatcher 'confi...etc... > > WADispatcher>>handleFiltered: > Receiver: a WADispatcher > Arguments and temporary variables: > aRequestContext: a WARequestContext url: > '/pier?_s=uYjuOEMpjSerCpLd' > handlerName: 'pier' > consumer: a WAPathConsumer > Receiver's instance variables: > filter: a WAValueHolder contents: a WADispatcher > parent: nil > configuration: a WAUserConfiguration > defaultName: 'browse' > handlers: a Dictionary('browse'->a WAApplication > 'comet'->a WADispatcher 'confi...etc... > > [] in WADispatcher(WARequestHandler)>>handle: > Receiver: a WADispatcher > Arguments and temporary variables: > aRequestContext: a WARequestContext url: > '/pier?_s=uYjuOEMpjSerCpLd' > Receiver's instance variables: > filter: a WAValueHolder contents: a WADispatcher > parent: nil > configuration: a WAUserConfiguration > defaultName: 'browse' > handlers: a Dictionary('browse'->a WAApplication > 'comet'->a WADispatcher 'confi...etc... > > BlockClosure>>on:do: > Receiver: [closure] in WADispatcher(WARequestHandler)>>handle: > Arguments and temporary variables: > exception: WACurrentRequestContext > handlerAction: [closure] in WACurrentRequestContext > class(WADynamicVariable cla...etc... > handlerActive: true > Receiver's instance variables: > outerContext: WADispatcher(WARequestHandler)>>handle: > startpc: 32 > numArgs: 0 > > WACurrentRequestContext class(WADynamicVariable class)>>use:during: > Receiver: WACurrentRequestContext > Arguments and temporary variables: > anObject: a WARequestContext url: > '/pier?_s=uYjuOEMpjSerCpLd' > aBlock: [closure] in > WADispatcher(WARequestHandler)>>handle: > Receiver's instance variables: > superclass: WADynamicVariable > methodDict: a MethodDictionary() > format: 140 > instanceVariables: nil > organization: ('as yet unclassified') > > subclasses: nil > name: #WACurrentRequestContext > classPool: nil > sharedPools: nil > environment: Smalltalk > category: #'Seaside-Core-RequestHandling' > traitComposition: {} > localSelectors: nil > > [] in WARequestContext>>push:while: > Receiver: a WARequestContext url: '/pier?_s=uYjuOEMpjSerCpLd' > Arguments and temporary variables: > aBlock: [closure] in > WADispatcher(WARequestHandler)>>handle: > Receiver's instance variables: > handlers: an OrderedCollection(a MAFileModelHandler a > WAApplication a WADispatc...etc... > request: a WARequest method: GET uri: > /pier?_s=uYjuOEMpjSerCpLd version: HTTP/1...etc... > response: a WABufferedResponse status: 200 message: > 'OK' > codec: a GRPharoUtf8Codec name: 'utf-8' > consumer: a WAPathConsumer > properties: nil > > BlockClosure>>ensure: > Receiver: [closure] in WARequestContext>>push:while: > Arguments and temporary variables: > aBlock: [closure] in WARequestContext>>push:while: > returnValue: nil > b: nil > Receiver's instance variables: > outerContext: WARequestContext>>push:while: > startpc: 42 > numArgs: 0 > > WARequestContext>>push:while: > Receiver: a WARequestContext url: '/pier?_s=uYjuOEMpjSerCpLd' > Arguments and temporary variables: > aRequestHandler: a WADispatcher > aBlock: [closure] in > WADispatcher(WARequestHandler)>>handle: > Receiver's instance variables: > handlers: an OrderedCollection(a MAFileModelHandler a > WAApplication a WADispatc...etc... > request: a WARequest method: GET uri: > /pier?_s=uYjuOEMpjSerCpLd version: HTTP/1...etc... > response: a WABufferedResponse status: 200 message: > 'OK' > codec: a GRPharoUtf8Codec name: 'utf-8' > consumer: a WAPathConsumer > properties: nil > > WADispatcher(WARequestHandler)>>handle: > Receiver: a WADispatcher > Arguments and temporary variables: > aRequestContext: a WARequestContext url: > '/pier?_s=uYjuOEMpjSerCpLd' > Receiver's instance variables: > filter: a WAValueHolder contents: a WADispatcher > parent: nil > configuration: a WAUserConfiguration > defaultName: 'browse' > handlers: a Dictionary('browse'->a WAApplication > 'comet'->a WADispatcher 'confi...etc... > > [] in WAComancheAdaptor(WAServerAdaptor)>>handleRequest: > Receiver: a WAComancheAdaptor > Arguments and temporary variables: > aRequestContext: a WARequestContext url: > '/pier?_s=uYjuOEMpjSerCpLd' > Receiver's instance variables: > manager: a WAServerManager > port: 8080 > requestHandler: nil > codec: a GRPharoUtf8Codec name: 'utf-8' > streamUploads: false > service: seaside-8080 [running] port: 8080 > > BlockClosure>>on:do: > Receiver: [closure] in > WAComancheAdaptor(WAServerAdaptor)>>handleRequest: > Arguments and temporary variables: > exception: WAResponseNotification > handlerAction: [closure] in > WAComancheAdaptor(WAServerAdaptor)>>handleRequest: > handlerActive: true > Receiver's instance variables: > outerContext: > WAComancheAdaptor(WAServerAdaptor)>>handleRequest: > startpc: 34 > numArgs: 0 > > > --- The full stack --- > ByteArray(Object)>>doesNotUnderstand: #isByteString > GRPharoUtf8CodecStream>>nextPutAll: > WABufferedResponse(WAResponse)>>nextPutAll: > MAFileModelHandler>>handleFiltered: > [] in MAFileModelHandler(WARequestHandler)>>handle: > BlockClosure>>on:do: > WACurrentRequestContext class(WADynamicVariable class)>>use:during: > [] in WARequestContext>>push:while: > BlockClosure>>ensure: > WARequestContext>>push:while: > MAFileModelHandler(WARequestHandler)>>handle: > WAApplication(WARegistry)>>dispatch:to: > WAApplication(WARegistry)>>handleKeyed:with: > WAApplication(WARegistry)>>handleFiltered: > WAApplication>>handleFiltered: > WAExceptionFilter(WARequestFilter)>>handleFiltered: > [] in WAExceptionFilter>>handleFiltered: > BlockClosure>>on:do: > WAWalkbackErrorHandler(WAExceptionHandler)>>handleExceptionsDuring: > WAWalkbackErrorHandler class(WAExceptionHandler > class)>>handleExceptionsDuring:context: > WAExceptionFilter>>handleFiltered: > [] in WAApplication(WARequestHandler)>>handle: > BlockClosure>>on:do: > WACurrentRequestContext class(WADynamicVariable class)>>use:during: > [] in WARequestContext>>push:while: > BlockClosure>>ensure: > WARequestContext>>push:while: > WAApplication(WARequestHandler)>>handle: > WADispatcher>>handleFiltered:named: > WADispatcher>>handleFiltered: > [] in WADispatcher(WARequestHandler)>>handle: > BlockClosure>>on:do: > WACurrentRequestContext class(WADynamicVariable class)>>use:during: > [] in WARequestContext>>push:while: > BlockClosure>>ensure: > WARequestContext>>push:while: > WADispatcher(WARequestHandler)>>handle: > [] in WAComancheAdaptor(WAServerAdaptor)>>handleRequest: > BlockClosure>>on:do: > - - - - - - - - - - - - - - - > - - - - - - - - - - - - - - - - - - > WAComancheAdaptor(WAServerAdaptor)>>handleRequest: > WAComancheAdaptor(WAServerAdaptor)>>handle: > [] in WAComancheAdaptor(WAServerAdaptor)>>process: > BlockClosure>>ensure: > WAComancheAdaptor(WAServerAdaptor)>>process: > WAComancheAdaptor>>processHttpRequest: > HttpService>>processHttpRequest: > [] in HttpAdaptor>>dispatchRequest: > BlockClosure>>on:do: > HttpService>>handleDispatchErrorsIn: > HttpAdaptor>>dispatchRequest: > [] in [] in HttpAdaptor>>beginConversation > BlockClosure>>on:do: > BlockClosure>>valueWithBindingsContext: > BlockClosure>>valueWithBindings: > BindingsAccessor>>clamp: > [] in HttpAdaptor>>beginConversation > BlockClosure>>ensure: > HttpAdaptor>>beginConversation > HttpAdaptor class>>readAndWriteTo:service: > HttpAdaptor class>>readAndWriteToSocket:service: > HttpService>>serve: > [] in HttpService(TcpService)>>value: > BlockClosure>>on:do: > BlockClosure>>valueWithBindingsContext: > BlockClosure>>valueWithBindings: > BindingsAccessor>>clamp: > [] in BlockClosure>>newProcessWithClampedBindings: > BlockClosure>>on:do: > BlockClosure>>valueWithBindingsContext: > BlockClosure>>valueWithBindings: > [] in BlockClosure>>newProcessWithBindings: > [] in BlockClosure>>newProcess > > > > > -- > www.tudorgirba.com > > "Relationships are of two kinds: those we choose and those that happen. > They both matter." > > > > > _______________________________________________ > Magritte, Pier and Related Tools ... > https://www.iam.unibe.ch/mailman/listinfo/smallwiki > -------------- next part -------------- An HTML attachment was scrubbed... URL: From renggli at gmail.com Mon Mar 29 10:28:23 2010 From: renggli at gmail.com (Lukas Renggli) Date: Mon, 29 Mar 2010 10:28:23 +0200 Subject: error starting pier2 In-Reply-To: References: Message-ID: <67628d691003290128t5bdd7d2aw5c425bf2c980322c@mail.gmail.com> I wasn't aware of this problem. This is fixed in: Name: Magritte-Seaside-lr.335 Author: lr Time: 29 March 2010, 10:27:46 am UUID: 130d3f8d-0a11-49bc-b768-5dafd64f5f69 Ancestors: Magritte-Seaside-lr.334 - serve all files in binary mode Lukas On 29 March 2010 09:00, Mariano Martinez Peck wrote: > Doru: It was reported several times. Look in this mailing list, the threads > with subject: > > - ConfigurationOfSeaside 1.0.3 is available > > - uft-8 MAFileModelHandler > > - Pier-Setup change report (Pier 1 & 2) > > Cheers > > Mariano > > > On Sun, Mar 28, 2010 at 7:55 PM, Tudor Girba wrote: >> >> Hi, >> >> I get an error when starting Pier2. It seems to be due to ByteArray not >> understanding isByteString. >> >> How to reproduce: >> - Get the latest Pier2 from hudson.lukas-renggli.ch >> - Execute: PRDistribution new register >> - Go to: http://localhost:8080/pier >> >> Any idea of what is wrong? >> >> Cheers, >> Doru >> >> ----------------- >> >> VM: Mac OS - intel - 1058 - Squeak3.8.1 of '28 Aug 2006' [latest update: >> #6747] Squeak VM 4.2.2b1 >> Image: PharoCore1.0rc3 [Latest update: #10515] >> >> SecurityManager state: >> Restricted: false >> FileAccess: true >> SocketAccess: true >> Working Dir /Users/girba/Desktop/pier2-1 >> Trusted Dir /foobar/tooBar/forSqueak/bogus >> Untrusted Dir /Users/girba/Library/Preferences/Squeak/Internet/My Squeak >> >> ByteArray(Object)>>doesNotUnderstand: #isByteString >> ? ? ? ?Receiver: #[47 42 32 72 69 65 68 69 82 32 42 47 13 46 105 99 111 >> 110 32 97 32 123 111 117 116 108 10...etc... >> ? ? ? ?Arguments and temporary variables: >> ? ? ? ? ? ? ? ?aMessage: ? ? ? isByteString >> ? ? ? ? ? ? ? ?exception: ? ? ?MessageNotUnderstood: >> ByteArray>>isByteString >> ? ? ? ? ? ? ? ?resumeValue: ? ?nil >> ? ? ? ?Receiver's instance variables: >> #[47 42 32 72 69 65 68 69 82 32 42 47 13 46 105 99 111 110 32 97 32 123 >> 111 117 116 108 10...etc... >> >> GRPharoUtf8CodecStream>>nextPutAll: >> ? ? ? ?Receiver: a GRPharoUtf8CodecStream >> ? ? ? ?Arguments and temporary variables: >> ? ? ? ? ? ? ? ?aString: ? ? ? ?#[47 42 32 72 69 65 68 69 82 32 42 47 13 46 >> 105 99 111 110 32 97 32 12...etc... >> ? ? ? ?Receiver's instance variables: >> ? ? ? ? ? ? ? ?stream: ? ? ? ? a WriteStream '' >> ? ? ? ? ? ? ? ?converter: ? ? ?an UTF8TextConverter >> ? ? ? ? ? ? ? ?binary: ? ? ? ? false >> >> WABufferedResponse(WAResponse)>>nextPutAll: >> ? ? ? ?Receiver: a WABufferedResponse status: 200 message: 'OK' >> ? ? ? ?Arguments and temporary variables: >> ? ? ? ? ? ? ? ?aStringOrByteArray: ? ? #[47 42 32 72 69 65 68 69 82 32 42 >> 47 13 46 105 99 111 110 ...etc... >> ? ? ? ?Receiver's instance variables: >> ? ? ? ? ? ? ? ?headers: ? ? ? ?a WAHeaderFields >> ? ? ? ? ? ? ? ?cookies: ? ? ? ?an OrderedCollection() >> ? ? ? ? ? ? ? ?status: ? ? ? ? 200 >> ? ? ? ? ? ? ? ?message: ? ? ? ?'OK' >> ? ? ? ? ? ? ? ?contentsStream: ? ? ? ? a GRPharoUtf8CodecStream >> >> MAFileModelHandler>>handleFiltered: >> ? ? ? ?Receiver: a MAFileModelHandler >> ? ? ? ?Arguments and temporary variables: >> ? ? ? ? ? ? ? ?aRequestContext: ? ? ? ?a WARequestContext url: >> '/pier?_s=uYjuOEMpjSerCpLd' >> ? ? ? ? ? ? ? ?response: ? ? ? a WABufferedResponse status: 200 message: >> 'OK' >> ? ? ? ? ? ? ? ?mimeType: ? ? ? a WAMimeType(text/css) >> ? ? ? ?Receiver's instance variables: >> ? ? ? ? ? ? ? ?filter: ? ? ? ? a WAValueHolder contents: a >> MAFileModelHandler >> ? ? ? ? ? ? ? ?parent: ? ? ? ? a WAApplication >> ? ? ? ? ? ? ? ?configuration: ?a WAUserConfiguration >> ? ? ? ? ? ? ? ?model: ?a MAExternalFileModel >> >> [] in MAFileModelHandler(WARequestHandler)>>handle: >> ? ? ? ?Receiver: a MAFileModelHandler >> ? ? ? ?Arguments and temporary variables: >> ? ? ? ? ? ? ? ?aRequestContext: ? ? ? ?a WARequestContext url: >> '/pier?_s=uYjuOEMpjSerCpLd' >> ? ? ? ?Receiver's instance variables: >> ? ? ? ? ? ? ? ?filter: ? ? ? ? a WAValueHolder contents: a >> MAFileModelHandler >> ? ? ? ? ? ? ? ?parent: ? ? ? ? a WAApplication >> ? ? ? ? ? ? ? ?configuration: ?a WAUserConfiguration >> ? ? ? ? ? ? ? ?model: ?a MAExternalFileModel >> >> BlockClosure>>on:do: >> ? ? ? ?Receiver: [closure] in >> MAFileModelHandler(WARequestHandler)>>handle: >> ? ? ? ?Arguments and temporary variables: >> ? ? ? ? ? ? ? ?exception: ? ? ?WACurrentRequestContext >> ? ? ? ? ? ? ? ?handlerAction: ?[closure] in WACurrentRequestContext >> class(WADynamicVariable cla...etc... >> ? ? ? ? ? ? ? ?handlerActive: ?true >> ? ? ? ?Receiver's instance variables: >> ? ? ? ? ? ? ? ?outerContext: >> MAFileModelHandler(WARequestHandler)>>handle: >> ? ? ? ? ? ? ? ?startpc: ? ? ? ?32 >> ? ? ? ? ? ? ? ?numArgs: ? ? ? ?0 >> >> WACurrentRequestContext class(WADynamicVariable class)>>use:during: >> ? ? ? ?Receiver: WACurrentRequestContext >> ? ? ? ?Arguments and temporary variables: >> ? ? ? ? ? ? ? ?anObject: ? ? ? a WARequestContext url: >> '/pier?_s=uYjuOEMpjSerCpLd' >> ? ? ? ? ? ? ? ?aBlock: ? ? ? ? [closure] in >> MAFileModelHandler(WARequestHandler)>>handle: >> ? ? ? ?Receiver's instance variables: >> ? ? ? ? ? ? ? ?superclass: ? ? WADynamicVariable >> ? ? ? ? ? ? ? ?methodDict: ? ? a MethodDictionary() >> ? ? ? ? ? ? ? ?format: ? ? ? ? 140 >> ? ? ? ? ? ? ? ?instanceVariables: ? ? ?nil >> ? ? ? ? ? ? ? ?organization: ? ('as yet unclassified') >> >> ? ? ? ? ? ? ? ?subclasses: ? ? nil >> ? ? ? ? ? ? ? ?name: ? #WACurrentRequestContext >> ? ? ? ? ? ? ? ?classPool: ? ? ?nil >> ? ? ? ? ? ? ? ?sharedPools: ? ?nil >> ? ? ? ? ? ? ? ?environment: ? ?Smalltalk >> ? ? ? ? ? ? ? ?category: ? ? ? #'Seaside-Core-RequestHandling' >> ? ? ? ? ? ? ? ?traitComposition: ? ? ? {} >> ? ? ? ? ? ? ? ?localSelectors: ? ? ? ? nil >> >> [] in WARequestContext>>push:while: >> ? ? ? ?Receiver: a WARequestContext url: '/pier?_s=uYjuOEMpjSerCpLd' >> ? ? ? ?Arguments and temporary variables: >> ? ? ? ? ? ? ? ?aBlock: ? ? ? ? [closure] in >> MAFileModelHandler(WARequestHandler)>>handle: >> ? ? ? ?Receiver's instance variables: >> ? ? ? ? ? ? ? ?handlers: ? ? ? an OrderedCollection(a MAFileModelHandler a >> WAApplication a WADispatc...etc... >> ? ? ? ? ? ? ? ?request: ? ? ? ?a WARequest method: GET uri: >> /pier?_s=uYjuOEMpjSerCpLd version: HTTP/1...etc... >> ? ? ? ? ? ? ? ?response: ? ? ? a WABufferedResponse status: 200 message: >> 'OK' >> ? ? ? ? ? ? ? ?codec: ?a GRPharoUtf8Codec name: 'utf-8' >> ? ? ? ? ? ? ? ?consumer: ? ? ? a WAPathConsumer >> ? ? ? ? ? ? ? ?properties: ? ? nil >> >> BlockClosure>>ensure: >> ? ? ? ?Receiver: [closure] in WARequestContext>>push:while: >> ? ? ? ?Arguments and temporary variables: >> ? ? ? ? ? ? ? ?aBlock: ? ? ? ? [closure] in WARequestContext>>push:while: >> ? ? ? ? ? ? ? ?returnValue: ? ?nil >> ? ? ? ? ? ? ? ?b: ? ? ?nil >> ? ? ? ?Receiver's instance variables: >> ? ? ? ? ? ? ? ?outerContext: ? WARequestContext>>push:while: >> ? ? ? ? ? ? ? ?startpc: ? ? ? ?42 >> ? ? ? ? ? ? ? ?numArgs: ? ? ? ?0 >> >> WARequestContext>>push:while: >> ? ? ? ?Receiver: a WARequestContext url: '/pier?_s=uYjuOEMpjSerCpLd' >> ? ? ? ?Arguments and temporary variables: >> ? ? ? ? ? ? ? ?aRequestHandler: ? ? ? ?a MAFileModelHandler >> ? ? ? ? ? ? ? ?aBlock: ? ? ? ? [closure] in >> MAFileModelHandler(WARequestHandler)>>handle: >> ? ? ? ?Receiver's instance variables: >> ? ? ? ? ? ? ? ?handlers: ? ? ? an OrderedCollection(a MAFileModelHandler a >> WAApplication a WADispatc...etc... >> ? ? ? ? ? ? ? ?request: ? ? ? ?a WARequest method: GET uri: >> /pier?_s=uYjuOEMpjSerCpLd version: HTTP/1...etc... >> ? ? ? ? ? ? ? ?response: ? ? ? a WABufferedResponse status: 200 message: >> 'OK' >> ? ? ? ? ? ? ? ?codec: ?a GRPharoUtf8Codec name: 'utf-8' >> ? ? ? ? ? ? ? ?consumer: ? ? ? a WAPathConsumer >> ? ? ? ? ? ? ? ?properties: ? ? nil >> >> MAFileModelHandler(WARequestHandler)>>handle: >> ? ? ? ?Receiver: a MAFileModelHandler >> ? ? ? ?Arguments and temporary variables: >> ? ? ? ? ? ? ? ?aRequestContext: ? ? ? ?a WARequestContext url: >> '/pier?_s=uYjuOEMpjSerCpLd' >> ? ? ? ?Receiver's instance variables: >> ? ? ? ? ? ? ? ?filter: ? ? ? ? a WAValueHolder contents: a >> MAFileModelHandler >> ? ? ? ? ? ? ? ?parent: ? ? ? ? a WAApplication >> ? ? ? ? ? ? ? ?configuration: ?a WAUserConfiguration >> ? ? ? ? ? ? ? ?model: ?a MAExternalFileModel >> >> WAApplication(WARegistry)>>dispatch:to: >> ? ? ? ?Receiver: a WAApplication >> ? ? ? ?Arguments and temporary variables: >> ? ? ? ? ? ? ? ?aRequestContext: ? ? ? ?a WARequestContext url: >> '/pier?_s=uYjuOEMpjSerCpLd' >> ? ? ? ? ? ? ? ?aRequestHandler: ? ? ? ?a MAFileModelHandler >> ? ? ? ?Receiver's instance variables: >> ? ? ? ? ? ? ? ?filter: ? ? ? ? a WAValueHolder contents: a >> WAExceptionFilter >> ? ? ? ? ? ? ? ?parent: ? ? ? ? a WADispatcher >> ? ? ? ? ? ? ? ?configuration: ?a WAUserConfiguration >> ? ? ? ? ? ? ? ?cache: ?a WACache >> >> WAApplication(WARegistry)>>handleKeyed:with: >> ? ? ? ?Receiver: a WAApplication >> ? ? ? ?Arguments and temporary variables: >> ? ? ? ? ? ? ? ?aRequestContext: ? ? ? ?a WARequestContext url: >> '/pier?_s=uYjuOEMpjSerCpLd' >> ? ? ? ? ? ? ? ?aRequestHandler: ? ? ? ?a MAFileModelHandler >> ? ? ? ?Receiver's instance variables: >> ? ? ? ? ? ? ? ?filter: ? ? ? ? a WAValueHolder contents: a >> WAExceptionFilter >> ? ? ? ? ? ? ? ?parent: ? ? ? ? a WADispatcher >> ? ? ? ? ? ? ? ?configuration: ?a WAUserConfiguration >> ? ? ? ? ? ? ? ?cache: ?a WACache >> >> WAApplication(WARegistry)>>handleFiltered: >> ? ? ? ?Receiver: a WAApplication >> ? ? ? ?Arguments and temporary variables: >> ? ? ? ? ? ? ? ?aRequestContext: ? ? ? ?a WARequestContext url: >> '/pier?_s=uYjuOEMpjSerCpLd' >> ? ? ? ? ? ? ? ?cookie: ? ? ? ? nil >> ? ? ? ? ? ? ? ?key: ? ?'uYjuOEMpjSerCpLd' >> ? ? ? ? ? ? ? ?handler: ? ? ? ?a MAFileModelHandler >> ? ? ? ? ? ? ? ?urlKey: ? ? ? ? 'uYjuOEMpjSerCpLd' >> ? ? ? ?Receiver's instance variables: >> ? ? ? ? ? ? ? ?filter: ? ? ? ? a WAValueHolder contents: a >> WAExceptionFilter >> ? ? ? ? ? ? ? ?parent: ? ? ? ? a WADispatcher >> ? ? ? ? ? ? ? ?configuration: ?a WAUserConfiguration >> ? ? ? ? ? ? ? ?cache: ?a WACache >> >> WAApplication>>handleFiltered: >> ? ? ? ?Receiver: a WAApplication >> ? ? ? ?Arguments and temporary variables: >> ? ? ? ? ? ? ? ?aRequestContext: ? ? ? ?a WARequestContext url: >> '/pier?_s=uYjuOEMpjSerCpLd' >> ? ? ? ?Receiver's instance variables: >> ? ? ? ? ? ? ? ?filter: ? ? ? ? a WAValueHolder contents: a >> WAExceptionFilter >> ? ? ? ? ? ? ? ?parent: ? ? ? ? a WADispatcher >> ? ? ? ? ? ? ? ?configuration: ?a WAUserConfiguration >> ? ? ? ? ? ? ? ?cache: ?a WACache >> >> WAExceptionFilter(WARequestFilter)>>handleFiltered: >> ? ? ? ?Receiver: a WAExceptionFilter >> ? ? ? ?Arguments and temporary variables: >> ? ? ? ? ? ? ? ?aRequestContext: ? ? ? ?a WARequestContext url: >> '/pier?_s=uYjuOEMpjSerCpLd' >> ? ? ? ?Receiver's instance variables: >> ? ? ? ? ? ? ? ?next: ? a WAValueHolder contents: a WAApplication >> ? ? ? ? ? ? ? ?configuration: ?a WAUserConfiguration >> >> [] in WAExceptionFilter>>handleFiltered: >> ? ? ? ?Receiver: a WAExceptionFilter >> ? ? ? ?Arguments and temporary variables: >> ? ? ? ? ? ? ? ?aRequestContext: ? ? ? ?a WARequestContext url: >> '/pier?_s=uYjuOEMpjSerCpLd' >> ? ? ? ?Receiver's instance variables: >> ? ? ? ? ? ? ? ?next: ? a WAValueHolder contents: a WAApplication >> ? ? ? ? ? ? ? ?configuration: ?a WAUserConfiguration >> >> BlockClosure>>on:do: >> ? ? ? ?Receiver: [closure] in WAExceptionFilter>>handleFiltered: >> ? ? ? ?Arguments and temporary variables: >> ? ? ? ? ? ? ? ?exception: ? ? ?a WAWalkbackErrorHandler >> ? ? ? ? ? ? ? ?handlerAction: ?[closure] in >> WAWalkbackErrorHandler(WAExceptionHandler)>>handleE...etc... >> ? ? ? ? ? ? ? ?handlerActive: ?false >> ? ? ? ?Receiver's instance variables: >> ? ? ? ? ? ? ? ?outerContext: ? WAExceptionFilter>>handleFiltered: >> ? ? ? ? ? ? ? ?startpc: ? ? ? ?32 >> ? ? ? ? ? ? ? ?numArgs: ? ? ? ?0 >> >> WAWalkbackErrorHandler(WAExceptionHandler)>>handleExceptionsDuring: >> ? ? ? ?Receiver: a WAWalkbackErrorHandler >> ? ? ? ?Arguments and temporary variables: >> ? ? ? ? ? ? ? ?aBlock: ? ? ? ? [closure] in >> WAExceptionFilter>>handleFiltered: >> ? ? ? ?Receiver's instance variables: >> ? ? ? ? ? ? ? ?requestContext: ? ? ? ? a WARequestContext url: >> '/pier?_s=uYjuOEMpjSerCpLd' >> >> WAWalkbackErrorHandler class(WAExceptionHandler >> class)>>handleExceptionsDuring:context: >> ? ? ? ?Receiver: WAWalkbackErrorHandler >> ? ? ? ?Arguments and temporary variables: >> ? ? ? ? ? ? ? ?aBlock: ? ? ? ? [closure] in >> WAExceptionFilter>>handleFiltered: >> ? ? ? ? ? ? ? ?aRequestContext: ? ? ? ?a WARequestContext url: >> '/pier?_s=uYjuOEMpjSerCpLd' >> ? ? ? ?Receiver's instance variables: >> ? ? ? ? ? ? ? ?superclass: ? ? WADebugErrorHandler >> ? ? ? ? ? ? ? ?methodDict: ? ? a MethodDictionary(#open:->a >> CompiledMethod(1906: WAWalkbackErrorHa...etc... >> ? ? ? ? ? ? ? ?format: ? ? ? ? 132 >> ? ? ? ? ? ? ? ?instanceVariables: ? ? ?nil >> ? ? ? ? ? ? ? ?organization: ? ('private' open:) >> >> ? ? ? ? ? ? ? ?subclasses: ? ? nil >> ? ? ? ? ? ? ? ?name: ? #WAWalkbackErrorHandler >> ? ? ? ? ? ? ? ?classPool: ? ? ?nil >> ? ? ? ? ? ? ? ?sharedPools: ? ?nil >> ? ? ? ? ? ? ? ?environment: ? ?Smalltalk >> ? ? ? ? ? ? ? ?category: ? ? ? #'Seaside-Development-Core' >> ? ? ? ? ? ? ? ?traitComposition: ? ? ? {} >> ? ? ? ? ? ? ? ?localSelectors: ? ? ? ? nil >> >> WAExceptionFilter>>handleFiltered: >> ? ? ? ?Receiver: a WAExceptionFilter >> ? ? ? ?Arguments and temporary variables: >> ? ? ? ? ? ? ? ?aRequestContext: ? ? ? ?a WARequestContext url: >> '/pier?_s=uYjuOEMpjSerCpLd' >> ? ? ? ?Receiver's instance variables: >> ? ? ? ? ? ? ? ?next: ? a WAValueHolder contents: a WAApplication >> ? ? ? ? ? ? ? ?configuration: ?a WAUserConfiguration >> >> [] in WAApplication(WARequestHandler)>>handle: >> ? ? ? ?Receiver: a WAApplication >> ? ? ? ?Arguments and temporary variables: >> ? ? ? ? ? ? ? ?aRequestContext: ? ? ? ?a WARequestContext url: >> '/pier?_s=uYjuOEMpjSerCpLd' >> ? ? ? ?Receiver's instance variables: >> ? ? ? ? ? ? ? ?filter: ? ? ? ? a WAValueHolder contents: a >> WAExceptionFilter >> ? ? ? ? ? ? ? ?parent: ? ? ? ? a WADispatcher >> ? ? ? ? ? ? ? ?configuration: ?a WAUserConfiguration >> ? ? ? ? ? ? ? ?cache: ?a WACache >> >> BlockClosure>>on:do: >> ? ? ? ?Receiver: [closure] in WAApplication(WARequestHandler)>>handle: >> ? ? ? ?Arguments and temporary variables: >> ? ? ? ? ? ? ? ?exception: ? ? ?WACurrentRequestContext >> ? ? ? ? ? ? ? ?handlerAction: ?[closure] in WACurrentRequestContext >> class(WADynamicVariable cla...etc... >> ? ? ? ? ? ? ? ?handlerActive: ?true >> ? ? ? ?Receiver's instance variables: >> ? ? ? ? ? ? ? ?outerContext: ? WAApplication(WARequestHandler)>>handle: >> ? ? ? ? ? ? ? ?startpc: ? ? ? ?32 >> ? ? ? ? ? ? ? ?numArgs: ? ? ? ?0 >> >> WACurrentRequestContext class(WADynamicVariable class)>>use:during: >> ? ? ? ?Receiver: WACurrentRequestContext >> ? ? ? ?Arguments and temporary variables: >> ? ? ? ? ? ? ? ?anObject: ? ? ? a WARequestContext url: >> '/pier?_s=uYjuOEMpjSerCpLd' >> ? ? ? ? ? ? ? ?aBlock: ? ? ? ? [closure] in >> WAApplication(WARequestHandler)>>handle: >> ? ? ? ?Receiver's instance variables: >> ? ? ? ? ? ? ? ?superclass: ? ? WADynamicVariable >> ? ? ? ? ? ? ? ?methodDict: ? ? a MethodDictionary() >> ? ? ? ? ? ? ? ?format: ? ? ? ? 140 >> ? ? ? ? ? ? ? ?instanceVariables: ? ? ?nil >> ? ? ? ? ? ? ? ?organization: ? ('as yet unclassified') >> >> ? ? ? ? ? ? ? ?subclasses: ? ? nil >> ? ? ? ? ? ? ? ?name: ? #WACurrentRequestContext >> ? ? ? ? ? ? ? ?classPool: ? ? ?nil >> ? ? ? ? ? ? ? ?sharedPools: ? ?nil >> ? ? ? ? ? ? ? ?environment: ? ?Smalltalk >> ? ? ? ? ? ? ? ?category: ? ? ? #'Seaside-Core-RequestHandling' >> ? ? ? ? ? ? ? ?traitComposition: ? ? ? {} >> ? ? ? ? ? ? ? ?localSelectors: ? ? ? ? nil >> >> [] in WARequestContext>>push:while: >> ? ? ? ?Receiver: a WARequestContext url: '/pier?_s=uYjuOEMpjSerCpLd' >> ? ? ? ?Arguments and temporary variables: >> ? ? ? ? ? ? ? ?aBlock: ? ? ? ? [closure] in >> WAApplication(WARequestHandler)>>handle: >> ? ? ? ?Receiver's instance variables: >> ? ? ? ? ? ? ? ?handlers: ? ? ? an OrderedCollection(a MAFileModelHandler a >> WAApplication a WADispatc...etc... >> ? ? ? ? ? ? ? ?request: ? ? ? ?a WARequest method: GET uri: >> /pier?_s=uYjuOEMpjSerCpLd version: HTTP/1...etc... >> ? ? ? ? ? ? ? ?response: ? ? ? a WABufferedResponse status: 200 message: >> 'OK' >> ? ? ? ? ? ? ? ?codec: ?a GRPharoUtf8Codec name: 'utf-8' >> ? ? ? ? ? ? ? ?consumer: ? ? ? a WAPathConsumer >> ? ? ? ? ? ? ? ?properties: ? ? nil >> >> BlockClosure>>ensure: >> ? ? ? ?Receiver: [closure] in WARequestContext>>push:while: >> ? ? ? ?Arguments and temporary variables: >> ? ? ? ? ? ? ? ?aBlock: ? ? ? ? [closure] in WARequestContext>>push:while: >> ? ? ? ? ? ? ? ?returnValue: ? ?nil >> ? ? ? ? ? ? ? ?b: ? ? ?nil >> ? ? ? ?Receiver's instance variables: >> ? ? ? ? ? ? ? ?outerContext: ? WARequestContext>>push:while: >> ? ? ? ? ? ? ? ?startpc: ? ? ? ?42 >> ? ? ? ? ? ? ? ?numArgs: ? ? ? ?0 >> >> WARequestContext>>push:while: >> ? ? ? ?Receiver: a WARequestContext url: '/pier?_s=uYjuOEMpjSerCpLd' >> ? ? ? ?Arguments and temporary variables: >> ? ? ? ? ? ? ? ?aRequestHandler: ? ? ? ?a WAApplication >> ? ? ? ? ? ? ? ?aBlock: ? ? ? ? [closure] in >> WAApplication(WARequestHandler)>>handle: >> ? ? ? ?Receiver's instance variables: >> ? ? ? ? ? ? ? ?handlers: ? ? ? an OrderedCollection(a MAFileModelHandler a >> WAApplication a WADispatc...etc... >> ? ? ? ? ? ? ? ?request: ? ? ? ?a WARequest method: GET uri: >> /pier?_s=uYjuOEMpjSerCpLd version: HTTP/1...etc... >> ? ? ? ? ? ? ? ?response: ? ? ? a WABufferedResponse status: 200 message: >> 'OK' >> ? ? ? ? ? ? ? ?codec: ?a GRPharoUtf8Codec name: 'utf-8' >> ? ? ? ? ? ? ? ?consumer: ? ? ? a WAPathConsumer >> ? ? ? ? ? ? ? ?properties: ? ? nil >> >> WAApplication(WARequestHandler)>>handle: >> ? ? ? ?Receiver: a WAApplication >> ? ? ? ?Arguments and temporary variables: >> ? ? ? ? ? ? ? ?aRequestContext: ? ? ? ?a WARequestContext url: >> '/pier?_s=uYjuOEMpjSerCpLd' >> ? ? ? ?Receiver's instance variables: >> ? ? ? ? ? ? ? ?filter: ? ? ? ? a WAValueHolder contents: a >> WAExceptionFilter >> ? ? ? ? ? ? ? ?parent: ? ? ? ? a WADispatcher >> ? ? ? ? ? ? ? ?configuration: ?a WAUserConfiguration >> ? ? ? ? ? ? ? ?cache: ?a WACache >> >> WADispatcher>>handleFiltered:named: >> ? ? ? ?Receiver: a WADispatcher >> ? ? ? ?Arguments and temporary variables: >> ? ? ? ? ? ? ? ?aRequestContext: ? ? ? ?a WARequestContext url: >> '/pier?_s=uYjuOEMpjSerCpLd' >> ? ? ? ? ? ? ? ?aString: ? ? ? ?'pier' >> ? ? ? ?Receiver's instance variables: >> ? ? ? ? ? ? ? ?filter: ? ? ? ? a WAValueHolder contents: a WADispatcher >> ? ? ? ? ? ? ? ?parent: ? ? ? ? nil >> ? ? ? ? ? ? ? ?configuration: ?a WAUserConfiguration >> ? ? ? ? ? ? ? ?defaultName: ? ?'browse' >> ? ? ? ? ? ? ? ?handlers: ? ? ? a Dictionary('browse'->a WAApplication >> 'comet'->a WADispatcher 'confi...etc... >> >> WADispatcher>>handleFiltered: >> ? ? ? ?Receiver: a WADispatcher >> ? ? ? ?Arguments and temporary variables: >> ? ? ? ? ? ? ? ?aRequestContext: ? ? ? ?a WARequestContext url: >> '/pier?_s=uYjuOEMpjSerCpLd' >> ? ? ? ? ? ? ? ?handlerName: ? ?'pier' >> ? ? ? ? ? ? ? ?consumer: ? ? ? a WAPathConsumer >> ? ? ? ?Receiver's instance variables: >> ? ? ? ? ? ? ? ?filter: ? ? ? ? a WAValueHolder contents: a WADispatcher >> ? ? ? ? ? ? ? ?parent: ? ? ? ? nil >> ? ? ? ? ? ? ? ?configuration: ?a WAUserConfiguration >> ? ? ? ? ? ? ? ?defaultName: ? ?'browse' >> ? ? ? ? ? ? ? ?handlers: ? ? ? a Dictionary('browse'->a WAApplication >> 'comet'->a WADispatcher 'confi...etc... >> >> [] in WADispatcher(WARequestHandler)>>handle: >> ? ? ? ?Receiver: a WADispatcher >> ? ? ? ?Arguments and temporary variables: >> ? ? ? ? ? ? ? ?aRequestContext: ? ? ? ?a WARequestContext url: >> '/pier?_s=uYjuOEMpjSerCpLd' >> ? ? ? ?Receiver's instance variables: >> ? ? ? ? ? ? ? ?filter: ? ? ? ? a WAValueHolder contents: a WADispatcher >> ? ? ? ? ? ? ? ?parent: ? ? ? ? nil >> ? ? ? ? ? ? ? ?configuration: ?a WAUserConfiguration >> ? ? ? ? ? ? ? ?defaultName: ? ?'browse' >> ? ? ? ? ? ? ? ?handlers: ? ? ? a Dictionary('browse'->a WAApplication >> 'comet'->a WADispatcher 'confi...etc... >> >> BlockClosure>>on:do: >> ? ? ? ?Receiver: [closure] in WADispatcher(WARequestHandler)>>handle: >> ? ? ? ?Arguments and temporary variables: >> ? ? ? ? ? ? ? ?exception: ? ? ?WACurrentRequestContext >> ? ? ? ? ? ? ? ?handlerAction: ?[closure] in WACurrentRequestContext >> class(WADynamicVariable cla...etc... >> ? ? ? ? ? ? ? ?handlerActive: ?true >> ? ? ? ?Receiver's instance variables: >> ? ? ? ? ? ? ? ?outerContext: ? WADispatcher(WARequestHandler)>>handle: >> ? ? ? ? ? ? ? ?startpc: ? ? ? ?32 >> ? ? ? ? ? ? ? ?numArgs: ? ? ? ?0 >> >> WACurrentRequestContext class(WADynamicVariable class)>>use:during: >> ? ? ? ?Receiver: WACurrentRequestContext >> ? ? ? ?Arguments and temporary variables: >> ? ? ? ? ? ? ? ?anObject: ? ? ? a WARequestContext url: >> '/pier?_s=uYjuOEMpjSerCpLd' >> ? ? ? ? ? ? ? ?aBlock: ? ? ? ? [closure] in >> WADispatcher(WARequestHandler)>>handle: >> ? ? ? ?Receiver's instance variables: >> ? ? ? ? ? ? ? ?superclass: ? ? WADynamicVariable >> ? ? ? ? ? ? ? ?methodDict: ? ? a MethodDictionary() >> ? ? ? ? ? ? ? ?format: ? ? ? ? 140 >> ? ? ? ? ? ? ? ?instanceVariables: ? ? ?nil >> ? ? ? ? ? ? ? ?organization: ? ('as yet unclassified') >> >> ? ? ? ? ? ? ? ?subclasses: ? ? nil >> ? ? ? ? ? ? ? ?name: ? #WACurrentRequestContext >> ? ? ? ? ? ? ? ?classPool: ? ? ?nil >> ? ? ? ? ? ? ? ?sharedPools: ? ?nil >> ? ? ? ? ? ? ? ?environment: ? ?Smalltalk >> ? ? ? ? ? ? ? ?category: ? ? ? #'Seaside-Core-RequestHandling' >> ? ? ? ? ? ? ? ?traitComposition: ? ? ? {} >> ? ? ? ? ? ? ? ?localSelectors: ? ? ? ? nil >> >> [] in WARequestContext>>push:while: >> ? ? ? ?Receiver: a WARequestContext url: '/pier?_s=uYjuOEMpjSerCpLd' >> ? ? ? ?Arguments and temporary variables: >> ? ? ? ? ? ? ? ?aBlock: ? ? ? ? [closure] in >> WADispatcher(WARequestHandler)>>handle: >> ? ? ? ?Receiver's instance variables: >> ? ? ? ? ? ? ? ?handlers: ? ? ? an OrderedCollection(a MAFileModelHandler a >> WAApplication a WADispatc...etc... >> ? ? ? ? ? ? ? ?request: ? ? ? ?a WARequest method: GET uri: >> /pier?_s=uYjuOEMpjSerCpLd version: HTTP/1...etc... >> ? ? ? ? ? ? ? ?response: ? ? ? a WABufferedResponse status: 200 message: >> 'OK' >> ? ? ? ? ? ? ? ?codec: ?a GRPharoUtf8Codec name: 'utf-8' >> ? ? ? ? ? ? ? ?consumer: ? ? ? a WAPathConsumer >> ? ? ? ? ? ? ? ?properties: ? ? nil >> >> BlockClosure>>ensure: >> ? ? ? ?Receiver: [closure] in WARequestContext>>push:while: >> ? ? ? ?Arguments and temporary variables: >> ? ? ? ? ? ? ? ?aBlock: ? ? ? ? [closure] in WARequestContext>>push:while: >> ? ? ? ? ? ? ? ?returnValue: ? ?nil >> ? ? ? ? ? ? ? ?b: ? ? ?nil >> ? ? ? ?Receiver's instance variables: >> ? ? ? ? ? ? ? ?outerContext: ? WARequestContext>>push:while: >> ? ? ? ? ? ? ? ?startpc: ? ? ? ?42 >> ? ? ? ? ? ? ? ?numArgs: ? ? ? ?0 >> >> WARequestContext>>push:while: >> ? ? ? ?Receiver: a WARequestContext url: '/pier?_s=uYjuOEMpjSerCpLd' >> ? ? ? ?Arguments and temporary variables: >> ? ? ? ? ? ? ? ?aRequestHandler: ? ? ? ?a WADispatcher >> ? ? ? ? ? ? ? ?aBlock: ? ? ? ? [closure] in >> WADispatcher(WARequestHandler)>>handle: >> ? ? ? ?Receiver's instance variables: >> ? ? ? ? ? ? ? ?handlers: ? ? ? an OrderedCollection(a MAFileModelHandler a >> WAApplication a WADispatc...etc... >> ? ? ? ? ? ? ? ?request: ? ? ? ?a WARequest method: GET uri: >> /pier?_s=uYjuOEMpjSerCpLd version: HTTP/1...etc... >> ? ? ? ? ? ? ? ?response: ? ? ? a WABufferedResponse status: 200 message: >> 'OK' >> ? ? ? ? ? ? ? ?codec: ?a GRPharoUtf8Codec name: 'utf-8' >> ? ? ? ? ? ? ? ?consumer: ? ? ? a WAPathConsumer >> ? ? ? ? ? ? ? ?properties: ? ? nil >> >> WADispatcher(WARequestHandler)>>handle: >> ? ? ? ?Receiver: a WADispatcher >> ? ? ? ?Arguments and temporary variables: >> ? ? ? ? ? ? ? ?aRequestContext: ? ? ? ?a WARequestContext url: >> '/pier?_s=uYjuOEMpjSerCpLd' >> ? ? ? ?Receiver's instance variables: >> ? ? ? ? ? ? ? ?filter: ? ? ? ? a WAValueHolder contents: a WADispatcher >> ? ? ? ? ? ? ? ?parent: ? ? ? ? nil >> ? ? ? ? ? ? ? ?configuration: ?a WAUserConfiguration >> ? ? ? ? ? ? ? ?defaultName: ? ?'browse' >> ? ? ? ? ? ? ? ?handlers: ? ? ? a Dictionary('browse'->a WAApplication >> 'comet'->a WADispatcher 'confi...etc... >> >> [] in WAComancheAdaptor(WAServerAdaptor)>>handleRequest: >> ? ? ? ?Receiver: a WAComancheAdaptor >> ? ? ? ?Arguments and temporary variables: >> ? ? ? ? ? ? ? ?aRequestContext: ? ? ? ?a WARequestContext url: >> '/pier?_s=uYjuOEMpjSerCpLd' >> ? ? ? ?Receiver's instance variables: >> ? ? ? ? ? ? ? ?manager: ? ? ? ?a WAServerManager >> ? ? ? ? ? ? ? ?port: ? 8080 >> ? ? ? ? ? ? ? ?requestHandler: ? ? ? ? nil >> ? ? ? ? ? ? ? ?codec: ?a GRPharoUtf8Codec name: 'utf-8' >> ? ? ? ? ? ? ? ?streamUploads: ?false >> ? ? ? ? ? ? ? ?service: ? ? ? ?seaside-8080 [running] port: 8080 >> >> BlockClosure>>on:do: >> ? ? ? ?Receiver: [closure] in >> WAComancheAdaptor(WAServerAdaptor)>>handleRequest: >> ? ? ? ?Arguments and temporary variables: >> ? ? ? ? ? ? ? ?exception: ? ? ?WAResponseNotification >> ? ? ? ? ? ? ? ?handlerAction: ?[closure] in >> WAComancheAdaptor(WAServerAdaptor)>>handleRequest: >> ? ? ? ? ? ? ? ?handlerActive: ?true >> ? ? ? ?Receiver's instance variables: >> ? ? ? ? ? ? ? ?outerContext: >> WAComancheAdaptor(WAServerAdaptor)>>handleRequest: >> ? ? ? ? ? ? ? ?startpc: ? ? ? ?34 >> ? ? ? ? ? ? ? ?numArgs: ? ? ? ?0 >> >> >> --- The full stack --- >> ByteArray(Object)>>doesNotUnderstand: #isByteString >> GRPharoUtf8CodecStream>>nextPutAll: >> WABufferedResponse(WAResponse)>>nextPutAll: >> MAFileModelHandler>>handleFiltered: >> [] in MAFileModelHandler(WARequestHandler)>>handle: >> BlockClosure>>on:do: >> WACurrentRequestContext class(WADynamicVariable class)>>use:during: >> [] in WARequestContext>>push:while: >> BlockClosure>>ensure: >> WARequestContext>>push:while: >> MAFileModelHandler(WARequestHandler)>>handle: >> WAApplication(WARegistry)>>dispatch:to: >> WAApplication(WARegistry)>>handleKeyed:with: >> WAApplication(WARegistry)>>handleFiltered: >> WAApplication>>handleFiltered: >> WAExceptionFilter(WARequestFilter)>>handleFiltered: >> [] in WAExceptionFilter>>handleFiltered: >> BlockClosure>>on:do: >> WAWalkbackErrorHandler(WAExceptionHandler)>>handleExceptionsDuring: >> WAWalkbackErrorHandler class(WAExceptionHandler >> class)>>handleExceptionsDuring:context: >> WAExceptionFilter>>handleFiltered: >> [] in WAApplication(WARequestHandler)>>handle: >> BlockClosure>>on:do: >> WACurrentRequestContext class(WADynamicVariable class)>>use:during: >> [] in WARequestContext>>push:while: >> BlockClosure>>ensure: >> WARequestContext>>push:while: >> WAApplication(WARequestHandler)>>handle: >> WADispatcher>>handleFiltered:named: >> WADispatcher>>handleFiltered: >> [] in WADispatcher(WARequestHandler)>>handle: >> BlockClosure>>on:do: >> WACurrentRequestContext class(WADynamicVariable class)>>use:during: >> [] in WARequestContext>>push:while: >> BlockClosure>>ensure: >> WARequestContext>>push:while: >> WADispatcher(WARequestHandler)>>handle: >> [] in WAComancheAdaptor(WAServerAdaptor)>>handleRequest: >> BlockClosure>>on:do: >> - - - - - - - - - - - - - - - >> ? ? ? ? ? ? ? ? ? ? ? ?- - - - - - - - - - - - - - - - - - >> WAComancheAdaptor(WAServerAdaptor)>>handleRequest: >> WAComancheAdaptor(WAServerAdaptor)>>handle: >> [] in WAComancheAdaptor(WAServerAdaptor)>>process: >> BlockClosure>>ensure: >> WAComancheAdaptor(WAServerAdaptor)>>process: >> WAComancheAdaptor>>processHttpRequest: >> HttpService>>processHttpRequest: >> [] in HttpAdaptor>>dispatchRequest: >> BlockClosure>>on:do: >> HttpService>>handleDispatchErrorsIn: >> HttpAdaptor>>dispatchRequest: >> [] in [] in HttpAdaptor>>beginConversation >> BlockClosure>>on:do: >> BlockClosure>>valueWithBindingsContext: >> BlockClosure>>valueWithBindings: >> BindingsAccessor>>clamp: >> [] in HttpAdaptor>>beginConversation >> BlockClosure>>ensure: >> HttpAdaptor>>beginConversation >> HttpAdaptor class>>readAndWriteTo:service: >> HttpAdaptor class>>readAndWriteToSocket:service: >> HttpService>>serve: >> [] in HttpService(TcpService)>>value: >> BlockClosure>>on:do: >> BlockClosure>>valueWithBindingsContext: >> BlockClosure>>valueWithBindings: >> BindingsAccessor>>clamp: >> [] in BlockClosure>>newProcessWithClampedBindings: >> BlockClosure>>on:do: >> BlockClosure>>valueWithBindingsContext: >> BlockClosure>>valueWithBindings: >> [] in BlockClosure>>newProcessWithBindings: >> [] in BlockClosure>>newProcess >> >> >> >> >> -- >> www.tudorgirba.com >> >> "Relationships are of two kinds: those we choose and those that happen. >> They both matter." >> >> >> >> >> _______________________________________________ >> Magritte, Pier and Related Tools ... >> https://www.iam.unibe.ch/mailman/listinfo/smallwiki > > > _______________________________________________ > Magritte, Pier and Related Tools ... > https://www.iam.unibe.ch/mailman/listinfo/smallwiki > -- Lukas Renggli http://www.lukas-renggli.ch From nick.ager at gmail.com Mon Mar 29 11:19:52 2010 From: nick.ager at gmail.com (Nick Ager) Date: Mon, 29 Mar 2010 09:19:52 +0000 Subject: PUSecurity Message-ID: <3a06f76f1003290219k4500f83co9f5fdbd5154f1422@mail.gmail.com> Hi, I'm struggling to understand how to use Pier Security. I have a number of different types of users (registeredUsers, projectOwners, AdminUsers, ....). I'd like to enable user specific options on the main pages, and restrict access to specific pages and commands to groups of users. I've grouped my users into different PUGroup s . Then without entirely understanding the intent of the code in PRDistribution>>root : self rootPage enumerator with; all; do: [ :each | each securityDecoration owner: self kernel users anyOne. each securityDecoration group: self kernel groups anyOne ]. self makePrivate: self systemPage. I modified my own configuration code to read: self homePage enumerator with; all; do: [ :each | each securityDecoration owner: self kernel users anyOne. each securityDecoration group: self kernel groups anyOne. each securityDecoration group: self kernel registeredUserGroup. each securityDecoration group: self kernel projectUserGroup. each securityDecoration group: self kernel adminUserGroup. ]. I can see that PUSecurity>>hasPermission:for: and PRStructure>>isAllowedCommand:in: should reveal the secrets of how security is designed to work, however the following code assumes all decorations satisfy the conditions PRStructure>>isAllowedCommand:in: ^ self decorations allSatisfy: [ :each | each isAllowedCommand: aCommandClass in: aContext ] In my case this tests fails as not all decorations are allowed. For example if a user is in the group "projectOwners", isAllowedCommand:in: fails for the security decorator for "registeredUserGroup" and "adminUserGroup". With my limited understanding I would have expect the above loop to read "anySatisfy:" rather than "allSatisfy" . Clearly I've a misunderstanding about how Pier security is designed to function. Any pointers gratefully received. Thanks Nick -------------- next part -------------- An HTML attachment was scrubbed... URL: From tudor.girba at gmail.com Mon Mar 29 11:55:50 2010 From: tudor.girba at gmail.com (Tudor Girba) Date: Mon, 29 Mar 2010 11:55:50 +0200 Subject: error starting pier2 In-Reply-To: <67628d691003290128t5bdd7d2aw5c425bf2c980322c@mail.gmail.com> References: <67628d691003290128t5bdd7d2aw5c425bf2c980322c@mail.gmail.com> Message-ID: Thanks, Lukas. Doru On 29 Mar 2010, at 10:28, Lukas Renggli wrote: > I wasn't aware of this problem. This is fixed in: > > Name: Magritte-Seaside-lr.335 > Author: lr > Time: 29 March 2010, 10:27:46 am > UUID: 130d3f8d-0a11-49bc-b768-5dafd64f5f69 > Ancestors: Magritte-Seaside-lr.334 > > - serve all files in binary mode > > Lukas > > On 29 March 2010 09:00, Mariano Martinez Peck > wrote: >> Doru: It was reported several times. Look in this mailing list, the >> threads >> with subject: >> >> - ConfigurationOfSeaside 1.0.3 is available >> >> - uft-8 MAFileModelHandler >> >> - Pier-Setup change report (Pier 1 & 2) >> >> Cheers >> >> Mariano >> >> >> On Sun, Mar 28, 2010 at 7:55 PM, Tudor Girba >> wrote: >>> >>> Hi, >>> >>> I get an error when starting Pier2. It seems to be due to >>> ByteArray not >>> understanding isByteString. >>> >>> How to reproduce: >>> - Get the latest Pier2 from hudson.lukas-renggli.ch >>> - Execute: PRDistribution new register >>> - Go to: http://localhost:8080/pier >>> >>> Any idea of what is wrong? >>> >>> Cheers, >>> Doru >>> >>> ----------------- >>> >>> VM: Mac OS - intel - 1058 - Squeak3.8.1 of '28 Aug 2006' [latest >>> update: >>> #6747] Squeak VM 4.2.2b1 >>> Image: PharoCore1.0rc3 [Latest update: #10515] >>> >>> SecurityManager state: >>> Restricted: false >>> FileAccess: true >>> SocketAccess: true >>> Working Dir /Users/girba/Desktop/pier2-1 >>> Trusted Dir /foobar/tooBar/forSqueak/bogus >>> Untrusted Dir /Users/girba/Library/Preferences/Squeak/Internet/My >>> Squeak >>> >>> ByteArray(Object)>>doesNotUnderstand: #isByteString >>> Receiver: #[47 42 32 72 69 65 68 69 82 32 42 47 13 46 105 >>> 99 111 >>> 110 32 97 32 123 111 117 116 108 10...etc... >>> Arguments and temporary variables: >>> aMessage: isByteString >>> exception: MessageNotUnderstood: >>> ByteArray>>isByteString >>> resumeValue: nil >>> Receiver's instance variables: >>> #[47 42 32 72 69 65 68 69 82 32 42 47 13 46 105 99 111 110 32 97 >>> 32 123 >>> 111 117 116 108 10...etc... >>> >>> GRPharoUtf8CodecStream>>nextPutAll: >>> Receiver: a GRPharoUtf8CodecStream >>> Arguments and temporary variables: >>> aString: #[47 42 32 72 69 65 68 69 82 32 42 >>> 47 13 46 >>> 105 99 111 110 32 97 32 12...etc... >>> Receiver's instance variables: >>> stream: a WriteStream '' >>> converter: an UTF8TextConverter >>> binary: false >>> >>> WABufferedResponse(WAResponse)>>nextPutAll: >>> Receiver: a WABufferedResponse status: 200 message: 'OK' >>> Arguments and temporary variables: >>> aStringOrByteArray: #[47 42 32 72 69 65 68 69 >>> 82 32 42 >>> 47 13 46 105 99 111 110 ...etc... >>> Receiver's instance variables: >>> headers: a WAHeaderFields >>> cookies: an OrderedCollection() >>> status: 200 >>> message: 'OK' >>> contentsStream: a GRPharoUtf8CodecStream >>> >>> MAFileModelHandler>>handleFiltered: >>> Receiver: a MAFileModelHandler >>> Arguments and temporary variables: >>> aRequestContext: a WARequestContext url: >>> '/pier?_s=uYjuOEMpjSerCpLd' >>> response: a WABufferedResponse status: 200 >>> message: >>> 'OK' >>> mimeType: a WAMimeType(text/css) >>> Receiver's instance variables: >>> filter: a WAValueHolder contents: a >>> MAFileModelHandler >>> parent: a WAApplication >>> configuration: a WAUserConfiguration >>> model: a MAExternalFileModel >>> >>> [] in MAFileModelHandler(WARequestHandler)>>handle: >>> Receiver: a MAFileModelHandler >>> Arguments and temporary variables: >>> aRequestContext: a WARequestContext url: >>> '/pier?_s=uYjuOEMpjSerCpLd' >>> Receiver's instance variables: >>> filter: a WAValueHolder contents: a >>> MAFileModelHandler >>> parent: a WAApplication >>> configuration: a WAUserConfiguration >>> model: a MAExternalFileModel >>> >>> BlockClosure>>on:do: >>> Receiver: [closure] in >>> MAFileModelHandler(WARequestHandler)>>handle: >>> Arguments and temporary variables: >>> exception: WACurrentRequestContext >>> handlerAction: [closure] in WACurrentRequestContext >>> class(WADynamicVariable cla...etc... >>> handlerActive: true >>> Receiver's instance variables: >>> outerContext: >>> MAFileModelHandler(WARequestHandler)>>handle: >>> startpc: 32 >>> numArgs: 0 >>> >>> WACurrentRequestContext class(WADynamicVariable class)>>use:during: >>> Receiver: WACurrentRequestContext >>> Arguments and temporary variables: >>> anObject: a WARequestContext url: >>> '/pier?_s=uYjuOEMpjSerCpLd' >>> aBlock: [closure] in >>> MAFileModelHandler(WARequestHandler)>>handle: >>> Receiver's instance variables: >>> superclass: WADynamicVariable >>> methodDict: a MethodDictionary() >>> format: 140 >>> instanceVariables: nil >>> organization: ('as yet unclassified') >>> >>> subclasses: nil >>> name: #WACurrentRequestContext >>> classPool: nil >>> sharedPools: nil >>> environment: Smalltalk >>> category: #'Seaside-Core-RequestHandling' >>> traitComposition: {} >>> localSelectors: nil >>> >>> [] in WARequestContext>>push:while: >>> Receiver: a WARequestContext url: '/pier?_s=uYjuOEMpjSerCpLd' >>> Arguments and temporary variables: >>> aBlock: [closure] in >>> MAFileModelHandler(WARequestHandler)>>handle: >>> Receiver's instance variables: >>> handlers: an OrderedCollection(a >>> MAFileModelHandler a >>> WAApplication a WADispatc...etc... >>> request: a WARequest method: GET uri: >>> /pier?_s=uYjuOEMpjSerCpLd version: HTTP/1...etc... >>> response: a WABufferedResponse status: 200 >>> message: >>> 'OK' >>> codec: a GRPharoUtf8Codec name: 'utf-8' >>> consumer: a WAPathConsumer >>> properties: nil >>> >>> BlockClosure>>ensure: >>> Receiver: [closure] in WARequestContext>>push:while: >>> Arguments and temporary variables: >>> aBlock: [closure] in >>> WARequestContext>>push:while: >>> returnValue: nil >>> b: nil >>> Receiver's instance variables: >>> outerContext: WARequestContext>>push:while: >>> startpc: 42 >>> numArgs: 0 >>> >>> WARequestContext>>push:while: >>> Receiver: a WARequestContext url: '/pier?_s=uYjuOEMpjSerCpLd' >>> Arguments and temporary variables: >>> aRequestHandler: a MAFileModelHandler >>> aBlock: [closure] in >>> MAFileModelHandler(WARequestHandler)>>handle: >>> Receiver's instance variables: >>> handlers: an OrderedCollection(a >>> MAFileModelHandler a >>> WAApplication a WADispatc...etc... >>> request: a WARequest method: GET uri: >>> /pier?_s=uYjuOEMpjSerCpLd version: HTTP/1...etc... >>> response: a WABufferedResponse status: 200 >>> message: >>> 'OK' >>> codec: a GRPharoUtf8Codec name: 'utf-8' >>> consumer: a WAPathConsumer >>> properties: nil >>> >>> MAFileModelHandler(WARequestHandler)>>handle: >>> Receiver: a MAFileModelHandler >>> Arguments and temporary variables: >>> aRequestContext: a WARequestContext url: >>> '/pier?_s=uYjuOEMpjSerCpLd' >>> Receiver's instance variables: >>> filter: a WAValueHolder contents: a >>> MAFileModelHandler >>> parent: a WAApplication >>> configuration: a WAUserConfiguration >>> model: a MAExternalFileModel >>> >>> WAApplication(WARegistry)>>dispatch:to: >>> Receiver: a WAApplication >>> Arguments and temporary variables: >>> aRequestContext: a WARequestContext url: >>> '/pier?_s=uYjuOEMpjSerCpLd' >>> aRequestHandler: a MAFileModelHandler >>> Receiver's instance variables: >>> filter: a WAValueHolder contents: a >>> WAExceptionFilter >>> parent: a WADispatcher >>> configuration: a WAUserConfiguration >>> cache: a WACache >>> >>> WAApplication(WARegistry)>>handleKeyed:with: >>> Receiver: a WAApplication >>> Arguments and temporary variables: >>> aRequestContext: a WARequestContext url: >>> '/pier?_s=uYjuOEMpjSerCpLd' >>> aRequestHandler: a MAFileModelHandler >>> Receiver's instance variables: >>> filter: a WAValueHolder contents: a >>> WAExceptionFilter >>> parent: a WADispatcher >>> configuration: a WAUserConfiguration >>> cache: a WACache >>> >>> WAApplication(WARegistry)>>handleFiltered: >>> Receiver: a WAApplication >>> Arguments and temporary variables: >>> aRequestContext: a WARequestContext url: >>> '/pier?_s=uYjuOEMpjSerCpLd' >>> cookie: nil >>> key: 'uYjuOEMpjSerCpLd' >>> handler: a MAFileModelHandler >>> urlKey: 'uYjuOEMpjSerCpLd' >>> Receiver's instance variables: >>> filter: a WAValueHolder contents: a >>> WAExceptionFilter >>> parent: a WADispatcher >>> configuration: a WAUserConfiguration >>> cache: a WACache >>> >>> WAApplication>>handleFiltered: >>> Receiver: a WAApplication >>> Arguments and temporary variables: >>> aRequestContext: a WARequestContext url: >>> '/pier?_s=uYjuOEMpjSerCpLd' >>> Receiver's instance variables: >>> filter: a WAValueHolder contents: a >>> WAExceptionFilter >>> parent: a WADispatcher >>> configuration: a WAUserConfiguration >>> cache: a WACache >>> >>> WAExceptionFilter(WARequestFilter)>>handleFiltered: >>> Receiver: a WAExceptionFilter >>> Arguments and temporary variables: >>> aRequestContext: a WARequestContext url: >>> '/pier?_s=uYjuOEMpjSerCpLd' >>> Receiver's instance variables: >>> next: a WAValueHolder contents: a WAApplication >>> configuration: a WAUserConfiguration >>> >>> [] in WAExceptionFilter>>handleFiltered: >>> Receiver: a WAExceptionFilter >>> Arguments and temporary variables: >>> aRequestContext: a WARequestContext url: >>> '/pier?_s=uYjuOEMpjSerCpLd' >>> Receiver's instance variables: >>> next: a WAValueHolder contents: a WAApplication >>> configuration: a WAUserConfiguration >>> >>> BlockClosure>>on:do: >>> Receiver: [closure] in WAExceptionFilter>>handleFiltered: >>> Arguments and temporary variables: >>> exception: a WAWalkbackErrorHandler >>> handlerAction: [closure] in >>> WAWalkbackErrorHandler(WAExceptionHandler)>>handleE...etc... >>> handlerActive: false >>> Receiver's instance variables: >>> outerContext: WAExceptionFilter>>handleFiltered: >>> startpc: 32 >>> numArgs: 0 >>> >>> WAWalkbackErrorHandler(WAExceptionHandler)>>handleExceptionsDuring: >>> Receiver: a WAWalkbackErrorHandler >>> Arguments and temporary variables: >>> aBlock: [closure] in >>> WAExceptionFilter>>handleFiltered: >>> Receiver's instance variables: >>> requestContext: a WARequestContext url: >>> '/pier?_s=uYjuOEMpjSerCpLd' >>> >>> WAWalkbackErrorHandler class(WAExceptionHandler >>> class)>>handleExceptionsDuring:context: >>> Receiver: WAWalkbackErrorHandler >>> Arguments and temporary variables: >>> aBlock: [closure] in >>> WAExceptionFilter>>handleFiltered: >>> aRequestContext: a WARequestContext url: >>> '/pier?_s=uYjuOEMpjSerCpLd' >>> Receiver's instance variables: >>> superclass: WADebugErrorHandler >>> methodDict: a MethodDictionary(#open:->a >>> CompiledMethod(1906: WAWalkbackErrorHa...etc... >>> format: 132 >>> instanceVariables: nil >>> organization: ('private' open:) >>> >>> subclasses: nil >>> name: #WAWalkbackErrorHandler >>> classPool: nil >>> sharedPools: nil >>> environment: Smalltalk >>> category: #'Seaside-Development-Core' >>> traitComposition: {} >>> localSelectors: nil >>> >>> WAExceptionFilter>>handleFiltered: >>> Receiver: a WAExceptionFilter >>> Arguments and temporary variables: >>> aRequestContext: a WARequestContext url: >>> '/pier?_s=uYjuOEMpjSerCpLd' >>> Receiver's instance variables: >>> next: a WAValueHolder contents: a WAApplication >>> configuration: a WAUserConfiguration >>> >>> [] in WAApplication(WARequestHandler)>>handle: >>> Receiver: a WAApplication >>> Arguments and temporary variables: >>> aRequestContext: a WARequestContext url: >>> '/pier?_s=uYjuOEMpjSerCpLd' >>> Receiver's instance variables: >>> filter: a WAValueHolder contents: a >>> WAExceptionFilter >>> parent: a WADispatcher >>> configuration: a WAUserConfiguration >>> cache: a WACache >>> >>> BlockClosure>>on:do: >>> Receiver: [closure] in >>> WAApplication(WARequestHandler)>>handle: >>> Arguments and temporary variables: >>> exception: WACurrentRequestContext >>> handlerAction: [closure] in WACurrentRequestContext >>> class(WADynamicVariable cla...etc... >>> handlerActive: true >>> Receiver's instance variables: >>> outerContext: >>> WAApplication(WARequestHandler)>>handle: >>> startpc: 32 >>> numArgs: 0 >>> >>> WACurrentRequestContext class(WADynamicVariable class)>>use:during: >>> Receiver: WACurrentRequestContext >>> Arguments and temporary variables: >>> anObject: a WARequestContext url: >>> '/pier?_s=uYjuOEMpjSerCpLd' >>> aBlock: [closure] in >>> WAApplication(WARequestHandler)>>handle: >>> Receiver's instance variables: >>> superclass: WADynamicVariable >>> methodDict: a MethodDictionary() >>> format: 140 >>> instanceVariables: nil >>> organization: ('as yet unclassified') >>> >>> subclasses: nil >>> name: #WACurrentRequestContext >>> classPool: nil >>> sharedPools: nil >>> environment: Smalltalk >>> category: #'Seaside-Core-RequestHandling' >>> traitComposition: {} >>> localSelectors: nil >>> >>> [] in WARequestContext>>push:while: >>> Receiver: a WARequestContext url: '/pier?_s=uYjuOEMpjSerCpLd' >>> Arguments and temporary variables: >>> aBlock: [closure] in >>> WAApplication(WARequestHandler)>>handle: >>> Receiver's instance variables: >>> handlers: an OrderedCollection(a >>> MAFileModelHandler a >>> WAApplication a WADispatc...etc... >>> request: a WARequest method: GET uri: >>> /pier?_s=uYjuOEMpjSerCpLd version: HTTP/1...etc... >>> response: a WABufferedResponse status: 200 >>> message: >>> 'OK' >>> codec: a GRPharoUtf8Codec name: 'utf-8' >>> consumer: a WAPathConsumer >>> properties: nil >>> >>> BlockClosure>>ensure: >>> Receiver: [closure] in WARequestContext>>push:while: >>> Arguments and temporary variables: >>> aBlock: [closure] in >>> WARequestContext>>push:while: >>> returnValue: nil >>> b: nil >>> Receiver's instance variables: >>> outerContext: WARequestContext>>push:while: >>> startpc: 42 >>> numArgs: 0 >>> >>> WARequestContext>>push:while: >>> Receiver: a WARequestContext url: '/pier?_s=uYjuOEMpjSerCpLd' >>> Arguments and temporary variables: >>> aRequestHandler: a WAApplication >>> aBlock: [closure] in >>> WAApplication(WARequestHandler)>>handle: >>> Receiver's instance variables: >>> handlers: an OrderedCollection(a >>> MAFileModelHandler a >>> WAApplication a WADispatc...etc... >>> request: a WARequest method: GET uri: >>> /pier?_s=uYjuOEMpjSerCpLd version: HTTP/1...etc... >>> response: a WABufferedResponse status: 200 >>> message: >>> 'OK' >>> codec: a GRPharoUtf8Codec name: 'utf-8' >>> consumer: a WAPathConsumer >>> properties: nil >>> >>> WAApplication(WARequestHandler)>>handle: >>> Receiver: a WAApplication >>> Arguments and temporary variables: >>> aRequestContext: a WARequestContext url: >>> '/pier?_s=uYjuOEMpjSerCpLd' >>> Receiver's instance variables: >>> filter: a WAValueHolder contents: a >>> WAExceptionFilter >>> parent: a WADispatcher >>> configuration: a WAUserConfiguration >>> cache: a WACache >>> >>> WADispatcher>>handleFiltered:named: >>> Receiver: a WADispatcher >>> Arguments and temporary variables: >>> aRequestContext: a WARequestContext url: >>> '/pier?_s=uYjuOEMpjSerCpLd' >>> aString: 'pier' >>> Receiver's instance variables: >>> filter: a WAValueHolder contents: a >>> WADispatcher >>> parent: nil >>> configuration: a WAUserConfiguration >>> defaultName: 'browse' >>> handlers: a Dictionary('browse'->a >>> WAApplication >>> 'comet'->a WADispatcher 'confi...etc... >>> >>> WADispatcher>>handleFiltered: >>> Receiver: a WADispatcher >>> Arguments and temporary variables: >>> aRequestContext: a WARequestContext url: >>> '/pier?_s=uYjuOEMpjSerCpLd' >>> handlerName: 'pier' >>> consumer: a WAPathConsumer >>> Receiver's instance variables: >>> filter: a WAValueHolder contents: a >>> WADispatcher >>> parent: nil >>> configuration: a WAUserConfiguration >>> defaultName: 'browse' >>> handlers: a Dictionary('browse'->a >>> WAApplication >>> 'comet'->a WADispatcher 'confi...etc... >>> >>> [] in WADispatcher(WARequestHandler)>>handle: >>> Receiver: a WADispatcher >>> Arguments and temporary variables: >>> aRequestContext: a WARequestContext url: >>> '/pier?_s=uYjuOEMpjSerCpLd' >>> Receiver's instance variables: >>> filter: a WAValueHolder contents: a >>> WADispatcher >>> parent: nil >>> configuration: a WAUserConfiguration >>> defaultName: 'browse' >>> handlers: a Dictionary('browse'->a >>> WAApplication >>> 'comet'->a WADispatcher 'confi...etc... >>> >>> BlockClosure>>on:do: >>> Receiver: [closure] in >>> WADispatcher(WARequestHandler)>>handle: >>> Arguments and temporary variables: >>> exception: WACurrentRequestContext >>> handlerAction: [closure] in WACurrentRequestContext >>> class(WADynamicVariable cla...etc... >>> handlerActive: true >>> Receiver's instance variables: >>> outerContext: >>> WADispatcher(WARequestHandler)>>handle: >>> startpc: 32 >>> numArgs: 0 >>> >>> WACurrentRequestContext class(WADynamicVariable class)>>use:during: >>> Receiver: WACurrentRequestContext >>> Arguments and temporary variables: >>> anObject: a WARequestContext url: >>> '/pier?_s=uYjuOEMpjSerCpLd' >>> aBlock: [closure] in >>> WADispatcher(WARequestHandler)>>handle: >>> Receiver's instance variables: >>> superclass: WADynamicVariable >>> methodDict: a MethodDictionary() >>> format: 140 >>> instanceVariables: nil >>> organization: ('as yet unclassified') >>> >>> subclasses: nil >>> name: #WACurrentRequestContext >>> classPool: nil >>> sharedPools: nil >>> environment: Smalltalk >>> category: #'Seaside-Core-RequestHandling' >>> traitComposition: {} >>> localSelectors: nil >>> >>> [] in WARequestContext>>push:while: >>> Receiver: a WARequestContext url: '/pier?_s=uYjuOEMpjSerCpLd' >>> Arguments and temporary variables: >>> aBlock: [closure] in >>> WADispatcher(WARequestHandler)>>handle: >>> Receiver's instance variables: >>> handlers: an OrderedCollection(a >>> MAFileModelHandler a >>> WAApplication a WADispatc...etc... >>> request: a WARequest method: GET uri: >>> /pier?_s=uYjuOEMpjSerCpLd version: HTTP/1...etc... >>> response: a WABufferedResponse status: 200 >>> message: >>> 'OK' >>> codec: a GRPharoUtf8Codec name: 'utf-8' >>> consumer: a WAPathConsumer >>> properties: nil >>> >>> BlockClosure>>ensure: >>> Receiver: [closure] in WARequestContext>>push:while: >>> Arguments and temporary variables: >>> aBlock: [closure] in >>> WARequestContext>>push:while: >>> returnValue: nil >>> b: nil >>> Receiver's instance variables: >>> outerContext: WARequestContext>>push:while: >>> startpc: 42 >>> numArgs: 0 >>> >>> WARequestContext>>push:while: >>> Receiver: a WARequestContext url: '/pier?_s=uYjuOEMpjSerCpLd' >>> Arguments and temporary variables: >>> aRequestHandler: a WADispatcher >>> aBlock: [closure] in >>> WADispatcher(WARequestHandler)>>handle: >>> Receiver's instance variables: >>> handlers: an OrderedCollection(a >>> MAFileModelHandler a >>> WAApplication a WADispatc...etc... >>> request: a WARequest method: GET uri: >>> /pier?_s=uYjuOEMpjSerCpLd version: HTTP/1...etc... >>> response: a WABufferedResponse status: 200 >>> message: >>> 'OK' >>> codec: a GRPharoUtf8Codec name: 'utf-8' >>> consumer: a WAPathConsumer >>> properties: nil >>> >>> WADispatcher(WARequestHandler)>>handle: >>> Receiver: a WADispatcher >>> Arguments and temporary variables: >>> aRequestContext: a WARequestContext url: >>> '/pier?_s=uYjuOEMpjSerCpLd' >>> Receiver's instance variables: >>> filter: a WAValueHolder contents: a >>> WADispatcher >>> parent: nil >>> configuration: a WAUserConfiguration >>> defaultName: 'browse' >>> handlers: a Dictionary('browse'->a >>> WAApplication >>> 'comet'->a WADispatcher 'confi...etc... >>> >>> [] in WAComancheAdaptor(WAServerAdaptor)>>handleRequest: >>> Receiver: a WAComancheAdaptor >>> Arguments and temporary variables: >>> aRequestContext: a WARequestContext url: >>> '/pier?_s=uYjuOEMpjSerCpLd' >>> Receiver's instance variables: >>> manager: a WAServerManager >>> port: 8080 >>> requestHandler: nil >>> codec: a GRPharoUtf8Codec name: 'utf-8' >>> streamUploads: false >>> service: seaside-8080 [running] port: 8080 >>> >>> BlockClosure>>on:do: >>> Receiver: [closure] in >>> WAComancheAdaptor(WAServerAdaptor)>>handleRequest: >>> Arguments and temporary variables: >>> exception: WAResponseNotification >>> handlerAction: [closure] in >>> WAComancheAdaptor(WAServerAdaptor)>>handleRequest: >>> handlerActive: true >>> Receiver's instance variables: >>> outerContext: >>> WAComancheAdaptor(WAServerAdaptor)>>handleRequest: >>> startpc: 34 >>> numArgs: 0 >>> >>> >>> --- The full stack --- >>> ByteArray(Object)>>doesNotUnderstand: #isByteString >>> GRPharoUtf8CodecStream>>nextPutAll: >>> WABufferedResponse(WAResponse)>>nextPutAll: >>> MAFileModelHandler>>handleFiltered: >>> [] in MAFileModelHandler(WARequestHandler)>>handle: >>> BlockClosure>>on:do: >>> WACurrentRequestContext class(WADynamicVariable class)>>use:during: >>> [] in WARequestContext>>push:while: >>> BlockClosure>>ensure: >>> WARequestContext>>push:while: >>> MAFileModelHandler(WARequestHandler)>>handle: >>> WAApplication(WARegistry)>>dispatch:to: >>> WAApplication(WARegistry)>>handleKeyed:with: >>> WAApplication(WARegistry)>>handleFiltered: >>> WAApplication>>handleFiltered: >>> WAExceptionFilter(WARequestFilter)>>handleFiltered: >>> [] in WAExceptionFilter>>handleFiltered: >>> BlockClosure>>on:do: >>> WAWalkbackErrorHandler(WAExceptionHandler)>>handleExceptionsDuring: >>> WAWalkbackErrorHandler class(WAExceptionHandler >>> class)>>handleExceptionsDuring:context: >>> WAExceptionFilter>>handleFiltered: >>> [] in WAApplication(WARequestHandler)>>handle: >>> BlockClosure>>on:do: >>> WACurrentRequestContext class(WADynamicVariable class)>>use:during: >>> [] in WARequestContext>>push:while: >>> BlockClosure>>ensure: >>> WARequestContext>>push:while: >>> WAApplication(WARequestHandler)>>handle: >>> WADispatcher>>handleFiltered:named: >>> WADispatcher>>handleFiltered: >>> [] in WADispatcher(WARequestHandler)>>handle: >>> BlockClosure>>on:do: >>> WACurrentRequestContext class(WADynamicVariable class)>>use:during: >>> [] in WARequestContext>>push:while: >>> BlockClosure>>ensure: >>> WARequestContext>>push:while: >>> WADispatcher(WARequestHandler)>>handle: >>> [] in WAComancheAdaptor(WAServerAdaptor)>>handleRequest: >>> BlockClosure>>on:do: >>> - - - - - - - - - - - - - - - >>> - - - - - - - - - - - - - - - - - - >>> WAComancheAdaptor(WAServerAdaptor)>>handleRequest: >>> WAComancheAdaptor(WAServerAdaptor)>>handle: >>> [] in WAComancheAdaptor(WAServerAdaptor)>>process: >>> BlockClosure>>ensure: >>> WAComancheAdaptor(WAServerAdaptor)>>process: >>> WAComancheAdaptor>>processHttpRequest: >>> HttpService>>processHttpRequest: >>> [] in HttpAdaptor>>dispatchRequest: >>> BlockClosure>>on:do: >>> HttpService>>handleDispatchErrorsIn: >>> HttpAdaptor>>dispatchRequest: >>> [] in [] in HttpAdaptor>>beginConversation >>> BlockClosure>>on:do: >>> BlockClosure>>valueWithBindingsContext: >>> BlockClosure>>valueWithBindings: >>> BindingsAccessor>>clamp: >>> [] in HttpAdaptor>>beginConversation >>> BlockClosure>>ensure: >>> HttpAdaptor>>beginConversation >>> HttpAdaptor class>>readAndWriteTo:service: >>> HttpAdaptor class>>readAndWriteToSocket:service: >>> HttpService>>serve: >>> [] in HttpService(TcpService)>>value: >>> BlockClosure>>on:do: >>> BlockClosure>>valueWithBindingsContext: >>> BlockClosure>>valueWithBindings: >>> BindingsAccessor>>clamp: >>> [] in BlockClosure>>newProcessWithClampedBindings: >>> BlockClosure>>on:do: >>> BlockClosure>>valueWithBindingsContext: >>> BlockClosure>>valueWithBindings: >>> [] in BlockClosure>>newProcessWithBindings: >>> [] in BlockClosure>>newProcess >>> >>> >>> >>> >>> -- >>> www.tudorgirba.com >>> >>> "Relationships are of two kinds: those we choose and those that >>> happen. >>> They both matter." >>> >>> >>> >>> >>> _______________________________________________ >>> Magritte, Pier and Related Tools ... >>> https://www.iam.unibe.ch/mailman/listinfo/smallwiki >> >> >> _______________________________________________ >> Magritte, Pier and Related Tools ... >> https://www.iam.unibe.ch/mailman/listinfo/smallwiki >> > > > > -- > Lukas Renggli > http://www.lukas-renggli.ch > > _______________________________________________ > Magritte, Pier and Related Tools ... > https://www.iam.unibe.ch/mailman/listinfo/smallwiki -- www.tudorgirba.com "From an abstract enough point of view, any two things are similar." From renggli at gmail.com Mon Mar 29 11:57:09 2010 From: renggli at gmail.com (Lukas Renggli) Date: Mon, 29 Mar 2010 11:57:09 +0200 Subject: PUSecurity In-Reply-To: <3a06f76f1003290219k4500f83co9f5fdbd5154f1422@mail.gmail.com> References: <3a06f76f1003290219k4500f83co9f5fdbd5154f1422@mail.gmail.com> Message-ID: <67628d691003290257i3503ad80l7899bf94c594b934@mail.gmail.com> > each securityDecoration owner: self kernel users anyOne. > each securityDecoration group: self kernel groups anyOne ]. The code above uses #anyOne under the assumption that there is only a single user, as soon as you have more users this doesn't work anymore. > each securityDecoration owner: self kernel users anyOne. > each securityDecoration group: self kernel groups anyOne. > each securityDecoration group: self kernel registeredUserGroup. > each securityDecoration group: self kernel projectUserGroup. > each securityDecoration group: self kernel adminUserGroup. PUSecurity only has one group and one owner, if you call it multiple times you override the previous setting. > Clearly I've a misunderstanding about how Pier security is designed to > function. Any pointers gratefully received. PUSecurity works like file-permissions in Unix. A structure has a single owner and a single group assigned. Furthermore the allowed commands can be assigned for each structure to the owner of the structure, the group of the structure and all other users (anybody that is not the owner and not within the group). Finally there is a user-specific flag called 'superuser' that gives all the permissions in all contexts and avoids any security checks. Lukas -- Lukas Renggli http://www.lukas-renggli.ch From norbert at hartl.name Tue Mar 30 17:04:36 2010 From: norbert at hartl.name (Norbert Hartl) Date: Tue, 30 Mar 2010 17:04:36 +0200 Subject: How to update PRInternalLink? Message-ID: I'm still experimenting with Templating and things like that. I tried to create a page with +comp+ as content. I thought taking that page and adding a child named comp would be sufficient but it isn't. Everything is resolved on save time or better when the document gets parsed. I can achieve what I want by doing. structure := (PRPathLookup start: self context structure path: '/mytemplate') copy. structure addChild: ((PRComponent named: 'comp') componentClass: MyComponent ). structure document: (PRDocumentParser parse: (PRWikiWriter write: structure document)). But I think there more elaborate versions of doing this. I'm not sure if update on the internal link will help. Then a visitor could probably do the job. thanks, Norbert