Janko,
If you have the IDNA parcel loaded from the latest development build the SwazooServer doesn't start. Unloaded the parcel and I could start the SwazooServer. Dirk ------------- volgend deel ------------ Een HTML-bijlage is verwijderd... URL: http://lists.aidaweb.si/pipermail/aida/attachments/20070918/3e421c42/attachment.htm |
Dirk,
Dirk Verleysen wrote: > If you have the IDNA parcel loaded from the latest development build the > SwazooServer doesn?t start. Unloaded the parcel and I could start the > SwazooServer. That's interesting problem. Only potential clash I can see between IDNA (RFC 3490 - Internationalizing Domain Names in Applications) and Swazoo is IDNA's override of IPSocketAddress hostAddressByName. This method is used SwazooSocket (actually in Sport SpIPAddress). I'll look at this a bit later. Best regards Janko -- Janko Miv?ek AIDA/Web Smalltalk Web Application Server http://www.aidaweb.si |
Janko,
Here is the stack when executing SwazooServer demoStart : Unhandled exception: Label '127' has invalid ASCII characters! IDNAEncoder(Object)>>error: IDNAEncoder>>errorNonLDHASCII: IDNAEncoder>>verifyLDHOrNonASCII: IDNAEncoder>>toASCII: optimized [] in IDNAEncoder>>encode: Array(SequenceableCollection)>>collect: IDNAEncoder>>encode: IPSocketAddress class>>hostAddressByName: SpIPAddress class>>hostName:port: Swazoo.SwazooSocket class>>serverOnIP:port: Swazoo.HTTPServer>>start optimized [] in [] in Swazoo.Site>>start OrderedCollection>>do: optimized [] in Swazoo.Site>>start BlockClosure>>ifCurtailed: AIDASite(Swazoo.Site)>>start AIDASite>>start Swazoo.SwazooServer>>startSite: Swazoo.SwazooServer>>demoStart Swazoo.SwazooServer class>>demoStart UndefinedObject>>unboundMethod UndefinedObject(Object)>>performMethod:arguments: UndefinedObject(Object)>>performMethod: TextEditorController(ParagraphEditor)>>evaluateCompiled: optimized [] in ParagraphEditor>>evaluateSelection BlockClosure>>ensure: Cursor>>showWhile: TextEditorController(ParagraphEditor)>>evaluateSelection optimized [] in ParagraphEditor>>inspectIt BlockClosure>>on:do: TextEditorController(ParagraphEditor)>>inspectIt WorkspacePage>>inspectIt Workbook(AbstractWorkspace)>>smalltalkInspectIt optimized [] in ApplicationModel>>actionFor: optimized [] in ToolBar>>newButtonFor: PluggableAdaptor>>setValue: PluggableAdaptor(ValueModel)>>value: Win98ToolbarButtonController(TriggerButtonController)>>pressAction TriggerButtonTracker(BasicButtonTracker)>>finishSelectionFor: TriggerButtonTracker>>finishSelectionFor: TriggerButtonTracker(SelectionTracker)>>redButtonReleasedEvent: RedButtonReleasedEvent>>dispatchTo: TriggerButtonTracker(SelectionTracker)>>handleEvent: EventDispatcher>>dispatch:to: EventDispatcher>>dispatchEvent: optimized [] in Event>>dispatch BlockClosure>>cull: EventDispatcher(Object)>>ifNotNil: RedButtonReleasedEvent(Event)>>dispatch RedButtonReleasedEvent(Event)>>dispatchForWindowManager: optimized [] in WindowManager>>safelyDispatchForWindowManager: BlockClosure>>on:do: WindowManager>>safelyDispatchForWindowManager: WindowManager>>processNextEvent optimized [] in [] in WindowManager>>newProcess BlockClosure>>on:do: optimized [] in WindowManager>>newProcess BlockClosure>>on:do: optimized [] in Process class>>forBlock:priority: ---------------------------------------------------------------------- IDNAEncoder(Object)>>error: Receiver: an IDNAEncoder Instance Variables: punyfier = nil Arguments: aStringOrMessage = 'Label ''127'' has invalid ASCII characters!' Temporaries: lastNonSpace = 41 aString = 'Label ''127'' has invalid ASCII characters!' Context PC = 18 ---------------------------------------------------------------------- IDNAEncoder>>errorNonLDHASCII: Receiver: an IDNAEncoder Instance Variables: punyfier = nil Arguments: label = '127' Context PC = 8 ---------------------------------------------------------------------- IDNAEncoder>>verifyLDHOrNonASCII: Receiver: an IDNAEncoder Instance Variables: punyfier = nil Arguments: label = '127' Context PC = 10 ---------------------------------------------------------------------- IDNAEncoder>>toASCII: Receiver: an IDNAEncoder Instance Variables: punyfier = nil Arguments: label = '127' Temporaries: prepared = '127' isASCII = true Context PC = 20 ---------------------------------------------------------------------- optimized [] in IDNAEncoder>>encode: Receiver: an UndefinedObject Arguments: label = '127' Temporaries: .self = an IDNAEncoder Context PC = 7 ---------------------------------------------------------------------- Array(SequenceableCollection)>>collect: Receiver: an Array Arguments: aBlock = BlockClosure [] in IDNAEncoder>>encode: Temporaries: newCollection = an Array[4] index = 1 Context PC = 29 ---------------------------------------------------------------------- IDNAEncoder>>encode: Receiver: an IDNAEncoder Instance Variables: punyfier = nil Arguments: idn = '127.0.0.1' Temporaries: output = a WriteStream Context PC = 18 ---------------------------------------------------------------------- IPSocketAddress class>>hostAddressByName: Receiver: an IPSocketAddress class Instance Variables: superclass = SocketAddress methodDict = a MethodDictionary[13] format = 4096 subclasses = nil instanceVariables = nil organization = ('printing' #printBytesOn:) ('accessing' #hostAddress #hostAddress: #hostName #hostName: #port #port:) ('network addresses' #networkAddress #networkClass) ('comparing' #= #hash) ('marshaling' #marshalWith:) ('As yet unclassified' #ipAddressString) name = #IPSocketAddress classPool = nil environment = a NameSpace[121] Arguments: aString = '127.0.0.1' Temporaries: address = nil hostname = nil Context PC = 13 ---------------------------------------------------------------------- SpIPAddress class>>hostName:port: Receiver: a SpIPAddress class Instance Variables: superclass = SpSocketAddress methodDict = a MethodDictionary[5] format = 16386 subclasses = nil instanceVariables = an Array[2] organization = ('accessing' #hostAddress #portNumber) ('printing' #hostAddressString) ('initialize-release' #host:port:) ('services - private' #asNativeSocketAddress) name = #SpIPAddress classPool = a NameSpaceOfClass[0] environment = nil Arguments: aHostNameString = '127.0.0.1' aPortNumber = 8888 Context PC = 5 ---------------------------------------------------------------------- Swazoo.SwazooSocket class>>serverOnIP:port: Receiver: a Swazoo.SwazooSocket class Instance Variables: superclass = Object methodDict = a MethodDictionary[13] format = 16385 subclasses = nil instanceVariables = an Array[1] organization = ('testing' #isActive) ('accessing' #close #localAddress #read: #read:timeout: #remoteAddress #write: #writeFrom:startingAt:for:) ('server accessing' #accept #listenFor:) ('private' #accessor #accessor: #stream) name = #SwazooSocket classPool = a NameSpaceOfClass[0] environment = a NameSpace[103] socketClass = SpSocket Arguments: anIPString = '127.0.0.1' anInteger = 8888 Temporaries: newSocket = a SpSocket Context PC = 15 ---------------------------------------------------------------------- Swazoo.HTTPServer>>start Receiver: a Swazoo.HTTPServer Instance Variables: ip = '127.0.0.1' port = 8888 connections = an OrderedCollection[0] sites = a Swazoo.ServerRootComposite socket = nil loop = nil isMultiThreading = nil Context PC = 18 ---------------------------------------------------------------------- optimized [] in [] in Swazoo.Site>>start Receiver: an UndefinedObject Arguments: each = a Swazoo.SiteIdentifier Temporaries: server = a Swazoo.HTTPServer .registry = a Swazoo.SwazooServer .self = an AIDASite Context PC = 27 ---------------------------------------------------------------------- OrderedCollection>>do: Receiver: an OrderedCollection Instance Variables: firstIndex = 1 lastIndex = 1 Arguments: aBlock = BlockClosure [] in [] in Swazoo.Site>>start Temporaries: index = 1 Context PC = 17 ---------------------------------------------------------------------- optimized [] in Swazoo.Site>>start Receiver: an UndefinedObject Temporaries: .self = an AIDASite .registry = a Swazoo.SwazooServer Context PC = 13 ---------------------------------------------------------------------- BlockClosure>>ifCurtailed: Receiver: a BlockClosure Instance Variables: method = CompiledBlock [] in Swazoo.Site>>start outerContext = nil copiedValues = an Array[2] Arguments: terminationBlock = BlockClosure [] in Swazoo.Site>>start Context PC = 4 ---------------------------------------------------------------------- AIDASite(Swazoo.Site)>>start Receiver: an AIDASite Instance Variables: enabled = true uriPattern = an OrderedCollection[1] parent = a Swazoo.ServerRootComposite children = an OrderedCollection[0] name = 'aidademo' serving = false style = a WebStyle settings = a Dictionary[9] systemServices = a Dictionary[5] userServices = a Dictionary[0] timestamps = an IdentityDictionary[4] counters = nil Temporaries: registry = a Swazoo.SwazooServer Context PC = 15 ---------------------------------------------------------------------- AIDASite>>start Receiver: an AIDASite Instance Variables: enabled = true uriPattern = an OrderedCollection[1] parent = a Swazoo.ServerRootComposite children = an OrderedCollection[0] name = 'aidademo' serving = false style = a WebStyle settings = a Dictionary[9] systemServices = a Dictionary[5] userServices = a Dictionary[0] timestamps = an IdentityDictionary[4] counters = nil Context PC = 14 ---------------------------------------------------------------------- Swazoo.SwazooServer>>startSite: Receiver: a Swazoo.SwazooServer Instance Variables: sites = an OrderedCollection[1] servers = a Set[1] watchdog = nil Arguments: aString = 'aidademo' Temporaries: site = an AIDASite Context PC = 11 ---------------------------------------------------------------------- Swazoo.SwazooServer>>demoStart Receiver: a Swazoo.SwazooServer Instance Variables: sites = an OrderedCollection[1] servers = a Set[1] watchdog = nil Context PC = 27 ---------------------------------------------------------------------- Swazoo.SwazooServer class>>demoStart Receiver: a Swazoo.SwazooServer class Instance Variables: superclass = Object methodDict = a MethodDictionary[36] format = 16387 subclasses = nil instanceVariables = an Array[3] organization = ('private' #allAidaInstancesReport #isNewHour #isNightlyBackupTime #isWatchdogRunning #representBinaryOn: #restartServers #servers #sites #startWatchdog #stopWatchdog #watchdog #watchdog: #watchdogOther #watchdogPeriod #watchdogSites) ('sites' #addSite: #allSites #removeAllSites #removeSite: #siteHostnamed: #siteNamed:) ('start/stop' #demoStart #demoStop #start #startSite: #stop #stopSite:) ('initialize-release' #initialize #initServers #initSites) ('private-servers' #addServer: #newServerFor: #removeServer: #serverFor:) ('private-backup/restore' #backupToFile #restoreFromFile) name = #SwazooServer classPool = a NameSpaceOfClass[1] environment = a NameSpace[103] Context PC = 5 ---------------------------------------------------------------------- UndefinedObject>>unboundMethod Receiver: an UndefinedObject Context PC = 3 ---------------------------------------------------------------------- UndefinedObject(Object)>>performMethod:arguments: Receiver: an UndefinedObject Arguments: method = AnnotatedMethod UndefinedObject>>unboundMethod args = an Array[0] Context PC = 5 ---------------------------------------------------------------------- UndefinedObject(Object)>>performMethod: Receiver: an UndefinedObject Arguments: method = AnnotatedMethod UndefinedObject>>unboundMethod Context PC = 5 ---------------------------------------------------------------------- TextEditorController(ParagraphEditor)>>evaluateCompiled: Receiver: a TextEditorController Instance Variables: model = a PluggableAdaptor view = a TextEditorView sensor = a TranslatingSensor menuHolder = a ValueHolder on: a Menu performer = a WorkspacePage beginTypeInIndex = nil anchorIndex = 1 emphasisHere = nil dispatchTable = a DispatchTable charComposer = a CharacterComposer textHasChanged = true feelPolicy = a Win95FeelPolicy supportCodeEditingFeels = true localMenuItems = an Array[20] extendingDown = true keyboardProcessor = a KeyboardProcessor keyboardHook = nil readOnly = false accepted = false autoAccept = false continuousAccept = false tabMeansNextField = true tabRequiresControl = true dispatcher = an UIDispatcher selectable = false Arguments: aMethod = AnnotatedMethod UndefinedObject>>unboundMethod Temporaries: context = nil Context PC = 13 ---------------------------------------------------------------------- optimized [] in ParagraphEditor>>evaluateSelection Receiver: an UndefinedObject Temporaries: .self = a TextEditorController .code = AnnotatedMethod UndefinedObject>>unboundMethod Context PC = 7 ---------------------------------------------------------------------- BlockClosure>>ensure: Receiver: a BlockClosure Instance Variables: method = CompiledBlock [] in ParagraphEditor>>evaluateSelection outerContext = nil copiedValues = an Array[2] Arguments: aBlock = BlockClosure [] in Cursor>>showWhile: Temporaries: result = nil Context PC = 4 ---------------------------------------------------------------------- Cursor>>showWhile: Receiver: a Cursor Instance Variables: errorCode = 0 handle = 8 image = Depth1Image(extent: 16 op 16 depth: 1) mask = Depth1Image(extent: 16 op 16 depth: 1) hotSpot = 1 op 1 name = 'xeq' Arguments: aBlock = BlockClosure [] in ParagraphEditor>>evaluateSelection Temporaries: oldcursor = Cursor normal Context PC = 23 ---------------------------------------------------------------------- TextEditorController(ParagraphEditor)>>evaluateSelection Receiver: a TextEditorController Instance Variables: model = a PluggableAdaptor view = a TextEditorView sensor = a TranslatingSensor menuHolder = a ValueHolder on: a Menu performer = a WorkspacePage beginTypeInIndex = nil anchorIndex = 1 emphasisHere = nil dispatchTable = a DispatchTable charComposer = a CharacterComposer textHasChanged = true feelPolicy = a Win95FeelPolicy supportCodeEditingFeels = true localMenuItems = an Array[20] extendingDown = true keyboardProcessor = a KeyboardProcessor keyboardHook = nil readOnly = false accepted = false autoAccept = false continuousAccept = false tabMeansNextField = true tabRequiresControl = true dispatcher = an UIDispatcher selectable = false Temporaries: code = AnnotatedMethod UndefinedObject>>unboundMethod result = nil Context PC = 14 ---------------------------------------------------------------------- optimized [] in ParagraphEditor>>inspectIt Receiver: an UndefinedObject Temporaries: .self = a TextEditorController Context PC = 6 ---------------------------------------------------------------------- BlockClosure>>on:do: Receiver: a BlockClosure Instance Variables: method = CompiledBlock [] in ParagraphEditor>>inspectIt outerContext = nil copiedValues = a TextEditorController Arguments: anExceptionSelector = CompilationError handlerBlock = BlockClosure [] in ParagraphEditor>>inspectIt Context PC = 18 ---------------------------------------------------------------------- TextEditorController(ParagraphEditor)>>inspectIt Receiver: a TextEditorController Instance Variables: model = a PluggableAdaptor view = a TextEditorView sensor = a TranslatingSensor menuHolder = a ValueHolder on: a Menu performer = a WorkspacePage beginTypeInIndex = nil anchorIndex = 1 emphasisHere = nil dispatchTable = a DispatchTable charComposer = a CharacterComposer textHasChanged = true feelPolicy = a Win95FeelPolicy supportCodeEditingFeels = true localMenuItems = an Array[20] extendingDown = true keyboardProcessor = a KeyboardProcessor keyboardHook = nil readOnly = false accepted = false autoAccept = false continuousAccept = false tabMeansNextField = true tabRequiresControl = true dispatcher = an UIDispatcher selectable = false Context PC = 20 ---------------------------------------------------------------------- WorkspacePage>>inspectIt Receiver: a WorkspacePage Instance Variables: dependents = a PluggableAdaptor builder = an UIBuilder uiSession = nil eventHandlers = an IdentityDictionary[1] workspace = a Workbook label = 'Workspace' verboseLabel = nil filename = nil fileTimestamp = nil textModel = a PluggableAdaptor unacceptedText = nil savedSelection = nil savedFileTimestamp = nil textModelOverride = a ValueHolder on: Text for 'Welcome to VisualWorks?,Pre-Release 7.5.1 of September 17, 2007 Copyright ? 2007 - 1999 Cincom Systems, Inc. All Rights Reserved Please visit www.cincomsmalltalk.com for the latest release information. ' Context PC = 5 ---------------------------------------------------------------------- Workbook(AbstractWorkspace)>>smalltalkInspectIt Receiver: a Workbook Instance Variables: dependents = an ApplicationWindow 24 builder = an UIBuilder uiSession = a ControlManager eventHandlers = nil locals = a WorkspaceVariablePool[0] importAll = true specificImports = an Array[3] importSummaryHolder = a ValueHolder on: 'All' pageExplanationHolder = a ValueHolder on: 'Text or Smalltalk code' statusBarVisible = true encodingChannel = a ValueHolder on: #Source menuBarHolder = a ValueHolder on: a Menu pageHolder = a SelectionInList lastInstalledPage = a WorkspacePage Context PC = 5 ---------------------------------------------------------------------- optimized [] in ApplicationModel>>actionFor: Receiver: an UndefinedObject Temporaries: .self = a Workbook .aKey = #smalltalkInspectIt Context PC = 7 ---------------------------------------------------------------------- optimized [] in ToolBar>>newButtonFor: Receiver: an UndefinedObject Arguments: b = a ValueHolder on: nil v = true Temporaries: .self = a WinXPToolBar .item = a MenuItem 'Inspect it' Context PC = 19 ---------------------------------------------------------------------- PluggableAdaptor>>setValue: Receiver: a PluggableAdaptor Instance Variables: dependents = a WinXPToolbarButtonView model = a ValueHolder on: nil getBlock = BlockClosure [] in ToolBar>>newButtonFor: putBlock = BlockClosure [] in ToolBar>>newButtonFor: updateBlock = BlockClosure [] in ToolBar>>newButtonFor: Arguments: newValue = true Context PC = 6 ---------------------------------------------------------------------- PluggableAdaptor(ValueModel)>>value: Receiver: a PluggableAdaptor Instance Variables: dependents = a WinXPToolbarButtonView model = a ValueHolder on: nil getBlock = BlockClosure [] in ToolBar>>newButtonFor: putBlock = BlockClosure [] in ToolBar>>newButtonFor: updateBlock = BlockClosure [] in ToolBar>>newButtonFor: Arguments: newValue = true Context PC = 5 ---------------------------------------------------------------------- Win98ToolbarButtonController(TriggerButtonController)>>pressAction Receiver: a Win98ToolbarButtonController Instance Variables: model = a PluggableAdaptor view = a WinXPToolbarButtonView sensor = a TranslatingSensor keyboardProcessor = nil keyboardHook = nil dispatcher = nil Context PC = 17 ---------------------------------------------------------------------- TriggerButtonTracker(BasicButtonTracker)>>finishSelectionFor: Receiver: a TriggerButtonTracker Instance Variables: controller = a Win98ToolbarButtonController inside = true Arguments: aPoint = 8 op 9 Context PC = 8 ---------------------------------------------------------------------- TriggerButtonTracker>>finishSelectionFor: Receiver: a TriggerButtonTracker Instance Variables: controller = a Win98ToolbarButtonController inside = true Arguments: aPoint = 8 op 9 Context PC = 11 ---------------------------------------------------------------------- TriggerButtonTracker(SelectionTracker)>>redButtonReleasedEvent: Receiver: a TriggerButtonTracker Instance Variables: controller = a Win98ToolbarButtonController inside = true Arguments: aMouseButtonEvent = a RedButtonReleasedEvent Context PC = 13 ---------------------------------------------------------------------- RedButtonReleasedEvent>>dispatchTo: Receiver: a RedButtonReleasedEvent Instance Variables: time = 270915641 initiator = an EventDispatcher window = an ApplicationWindow 24 state = 0 x = 248 y = 31 gx = 383 gy = 321 buttonNumber = 1 Arguments: anObject = a TriggerButtonTracker Context PC = 4 ---------------------------------------------------------------------- TriggerButtonTracker(SelectionTracker)>>handleEvent: Receiver: a TriggerButtonTracker Instance Variables: controller = a Win98ToolbarButtonController inside = true Arguments: anEvent = a RedButtonReleasedEvent Context PC = 4 ---------------------------------------------------------------------- EventDispatcher>>dispatch:to: Receiver: an EventDispatcher Instance Variables: windowController = an ApplicationStandardSystemController currentMouseConsumer = nil grabbingMouse = false keyboardProcessor = a KeyboardProcessor lastControlObject = a WinXPScrollBarController trapList = nil state = nil repairDamageWhenDebugging = true flushQueueAfterError = true distributeEventsWhenDebugging = true dragDropInProgress = false dragDropTracker = nil dispatchUnknownEvents = false Arguments: event = a RedButtonReleasedEvent object = a TriggerButtonTracker Temporaries: tmp = nil Context PC = 10 ---------------------------------------------------------------------- EventDispatcher>>dispatchEvent: Receiver: an EventDispatcher Instance Variables: windowController = an ApplicationStandardSystemController currentMouseConsumer = nil grabbingMouse = false keyboardProcessor = a KeyboardProcessor lastControlObject = a WinXPScrollBarController trapList = nil state = nil repairDamageWhenDebugging = true flushQueueAfterError = true distributeEventsWhenDebugging = true dragDropInProgress = false dragDropTracker = nil dispatchUnknownEvents = false Arguments: event = a RedButtonReleasedEvent Temporaries: objectWantingControl = nil targetKeyboardProcessor = nil Context PC = 60 ---------------------------------------------------------------------- optimized [] in Event>>dispatch Receiver: an UndefinedObject Arguments: value = an EventDispatcher Temporaries: .self = a RedButtonReleasedEvent Context PC = 6 ---------------------------------------------------------------------- BlockClosure>>cull: Receiver: a BlockClosure Instance Variables: method = CompiledBlock [] in Event>>dispatch outerContext = nil copiedValues = a RedButtonReleasedEvent Arguments: anObject = an EventDispatcher Context PC = 15 ---------------------------------------------------------------------- EventDispatcher(Object)>>ifNotNil: Receiver: an EventDispatcher Instance Variables: windowController = an ApplicationStandardSystemController currentMouseConsumer = nil grabbingMouse = false keyboardProcessor = a KeyboardProcessor lastControlObject = a WinXPScrollBarController trapList = nil state = nil repairDamageWhenDebugging = true flushQueueAfterError = true distributeEventsWhenDebugging = true dragDropInProgress = false dragDropTracker = nil dispatchUnknownEvents = false Arguments: aBlock = BlockClosure [] in Event>>dispatch Context PC = 4 ---------------------------------------------------------------------- RedButtonReleasedEvent(Event)>>dispatch Receiver: a RedButtonReleasedEvent Instance Variables: time = 270915641 initiator = an EventDispatcher window = an ApplicationWindow 24 state = 0 x = 248 y = 31 gx = 383 gy = 321 buttonNumber = 1 Context PC = 19 ---------------------------------------------------------------------- RedButtonReleasedEvent(Event)>>dispatchForWindowManager: Receiver: a RedButtonReleasedEvent Instance Variables: time = 270915641 initiator = an EventDispatcher window = an ApplicationWindow 24 state = 0 x = 248 y = 31 gx = 383 gy = 321 buttonNumber = 1 Arguments: aWinMgr = a WindowManager Context PC = 4 ---------------------------------------------------------------------- optimized [] in WindowManager>>safelyDispatchForWindowManager: Receiver: an UndefinedObject Temporaries: .event = a RedButtonReleasedEvent .self = a WindowManager Context PC = 6 ---------------------------------------------------------------------- BlockClosure>>on:do: Receiver: a BlockClosure Instance Variables: method = CompiledBlock [] in WindowManager>>safelyDispatchForWindowManager: outerContext = nil copiedValues = an Array[2] Arguments: anExceptionSelector = BadControllerError handlerBlock = BlockClosure [] in WindowManager>>safelyDispatchForWindowManager: Context PC = 18 ---------------------------------------------------------------------- WindowManager>>safelyDispatchForWindowManager: Receiver: a WindowManager Instance Variables: windows = an OrderedCollection[1] activeController = nil interruptLock = false outstandingMetaOrDamage = false openInProgress = false eventQueue = an EventQueue baseProcess = a Process in Semaphore>>wait dontFilterEvents = false Arguments: event = a RedButtonReleasedEvent Context PC = 13 ---------------------------------------------------------------------- WindowManager>>processNextEvent Receiver: a WindowManager Instance Variables: windows = an OrderedCollection[1] activeController = nil interruptLock = false outstandingMetaOrDamage = false openInProgress = false eventQueue = an EventQueue baseProcess = a Process in Semaphore>>wait dontFilterEvents = false Temporaries: event = a RedButtonReleasedEvent Context PC = 9 ---------------------------------------------------------------------- optimized [] in [] in WindowManager>>newProcess Receiver: an UndefinedObject Temporaries: .self = a WindowManager Context PC = 13 ---------------------------------------------------------------------- BlockClosure>>on:do: Receiver: a BlockClosure Instance Variables: method = CompiledBlock [] in [] in WindowManager>>newProcess outerContext = nil copiedValues = a WindowManager Arguments: anExceptionSelector = TerminateException handlerBlock = BlockClosure [] in [] in WindowManager>>newProcess Context PC = 18 ---------------------------------------------------------------------- optimized [] in WindowManager>>newProcess Receiver: an UndefinedObject Temporaries: .self = a WindowManager Context PC = 15 ---------------------------------------------------------------------- BlockClosure>>on:do: Receiver: a BlockClosure Instance Variables: method = CompiledBlock [] in WindowManager>>newProcess outerContext = nil copiedValues = a WindowManager Arguments: anExceptionSelector = TerminateException handlerBlock = BlockClosure [] in [] in Process class>>forBlock:priority: Context PC = 18 ---------------------------------------------------------------------- optimized [] in Process class>>forBlock:priority: Receiver: an UndefinedObject Temporaries: .aBlock = BlockClosure [] in WindowManager>>newProcess Context PC = 9 -----Oorspronkelijk bericht----- Van: aida-bounces op aidaweb.si [mailto:aida-bounces op aidaweb.si] Namens Janko Miv?ek Verzonden: woensdag 19 september 2007 10:20 Aan: AIDA/Web general discussion list Onderwerp: Re: [aida] IDNA Parcel Dirk, Dirk Verleysen wrote: > If you have the IDNA parcel loaded from the latest development build the > SwazooServer doesn?t start. Unloaded the parcel and I could start the > SwazooServer. That's interesting problem. Only potential clash I can see between IDNA (RFC 3490 - Internationalizing Domain Names in Applications) and Swazoo is IDNA's override of IPSocketAddress hostAddressByName. This method is used SwazooSocket (actually in Sport SpIPAddress). I'll look at this a bit later. Best regards Janko -- Janko Miv?ek AIDA/Web Smalltalk Web Application Server http://www.aidaweb.si _______________________________________________ Aida mailing list Aida op aidaweb.si http://lists.aidaweb.si/mailman/listinfo/aida |
Dirk,
That's pretty strange. It looks that IDNAEncoder is not happy if you give it an ip address in dot format instead of full DNS name. See down in stack report: IDNAEncoder>>encode: Receiver: an IDNAEncoder Instance Variables: punyfier = nil Arguments: idn = '127.0.0.1' Temporaries: output = a WriteStream Context PC = 18 I think this is a bug and should be reported to Cincom. I'm sure Martin Kobetic will solve it immediately :) Best regards Janko Dirk Verleysen wrote: > Janko, > > Here is the stack when executing SwazooServer demoStart : > > Unhandled exception: Label '127' has invalid ASCII characters! > IDNAEncoder(Object)>>error: > IDNAEncoder>>errorNonLDHASCII: > IDNAEncoder>>verifyLDHOrNonASCII: > IDNAEncoder>>toASCII: > optimized [] in IDNAEncoder>>encode: > Array(SequenceableCollection)>>collect: > IDNAEncoder>>encode: > IPSocketAddress class>>hostAddressByName: > SpIPAddress class>>hostName:port: > Swazoo.SwazooSocket class>>serverOnIP:port: > Swazoo.HTTPServer>>start > optimized [] in [] in Swazoo.Site>>start > OrderedCollection>>do: > optimized [] in Swazoo.Site>>start > BlockClosure>>ifCurtailed: > AIDASite(Swazoo.Site)>>start > AIDASite>>start > Swazoo.SwazooServer>>startSite: > Swazoo.SwazooServer>>demoStart > Swazoo.SwazooServer class>>demoStart > UndefinedObject>>unboundMethod > UndefinedObject(Object)>>performMethod:arguments: > UndefinedObject(Object)>>performMethod: > TextEditorController(ParagraphEditor)>>evaluateCompiled: > optimized [] in ParagraphEditor>>evaluateSelection > BlockClosure>>ensure: > Cursor>>showWhile: > TextEditorController(ParagraphEditor)>>evaluateSelection > optimized [] in ParagraphEditor>>inspectIt > BlockClosure>>on:do: > TextEditorController(ParagraphEditor)>>inspectIt > WorkspacePage>>inspectIt > Workbook(AbstractWorkspace)>>smalltalkInspectIt > optimized [] in ApplicationModel>>actionFor: > optimized [] in ToolBar>>newButtonFor: > PluggableAdaptor>>setValue: > PluggableAdaptor(ValueModel)>>value: > Win98ToolbarButtonController(TriggerButtonController)>>pressAction > TriggerButtonTracker(BasicButtonTracker)>>finishSelectionFor: > TriggerButtonTracker>>finishSelectionFor: > TriggerButtonTracker(SelectionTracker)>>redButtonReleasedEvent: > RedButtonReleasedEvent>>dispatchTo: > TriggerButtonTracker(SelectionTracker)>>handleEvent: > EventDispatcher>>dispatch:to: > EventDispatcher>>dispatchEvent: > optimized [] in Event>>dispatch > BlockClosure>>cull: > EventDispatcher(Object)>>ifNotNil: > RedButtonReleasedEvent(Event)>>dispatch > RedButtonReleasedEvent(Event)>>dispatchForWindowManager: > optimized [] in WindowManager>>safelyDispatchForWindowManager: > BlockClosure>>on:do: > WindowManager>>safelyDispatchForWindowManager: > WindowManager>>processNextEvent > optimized [] in [] in WindowManager>>newProcess > BlockClosure>>on:do: > optimized [] in WindowManager>>newProcess > BlockClosure>>on:do: > optimized [] in Process class>>forBlock:priority: > > ---------------------------------------------------------------------- > IDNAEncoder(Object)>>error: > Receiver: > an IDNAEncoder > Instance Variables: > punyfier = nil > Arguments: > aStringOrMessage = 'Label ''127'' has invalid ASCII characters!' > Temporaries: > lastNonSpace = 41 > aString = 'Label ''127'' has invalid ASCII characters!' > Context PC = 18 > > ---------------------------------------------------------------------- > IDNAEncoder>>errorNonLDHASCII: > Receiver: > an IDNAEncoder > Instance Variables: > punyfier = nil > Arguments: > label = '127' > Context PC = 8 > > ---------------------------------------------------------------------- > IDNAEncoder>>verifyLDHOrNonASCII: > Receiver: > an IDNAEncoder > Instance Variables: > punyfier = nil > Arguments: > label = '127' > Context PC = 10 > > ---------------------------------------------------------------------- > IDNAEncoder>>toASCII: > Receiver: > an IDNAEncoder > Instance Variables: > punyfier = nil > Arguments: > label = '127' > Temporaries: > prepared = '127' > isASCII = true > Context PC = 20 > > ---------------------------------------------------------------------- > optimized [] in IDNAEncoder>>encode: > Receiver: > an UndefinedObject > Arguments: > label = '127' > Temporaries: > .self = an IDNAEncoder > Context PC = 7 > > ---------------------------------------------------------------------- > Array(SequenceableCollection)>>collect: > Receiver: > an Array > Arguments: > aBlock = BlockClosure [] in IDNAEncoder>>encode: > Temporaries: > newCollection = an Array[4] > index = 1 > Context PC = 29 > > ---------------------------------------------------------------------- > IDNAEncoder>>encode: > Receiver: > an IDNAEncoder > Instance Variables: > punyfier = nil > Arguments: > idn = '127.0.0.1' > Temporaries: > output = a WriteStream > Context PC = 18 > > ---------------------------------------------------------------------- > IPSocketAddress class>>hostAddressByName: > Receiver: > an IPSocketAddress class > Instance Variables: > superclass = SocketAddress > methodDict = a MethodDictionary[13] > format = 4096 > subclasses = nil > instanceVariables = nil > organization = ('printing' #printBytesOn:) > ('accessing' #hostAddress #hostAddress: #hostName #hostName: #port #port:) > ('network addresses' #networkAddress #networkClass) > ('comparing' #= #hash) > ('marshaling' #marshalWith:) > ('As yet unclassified' #ipAddressString) > > name = #IPSocketAddress > classPool = nil > environment = a NameSpace[121] > Arguments: > aString = '127.0.0.1' > Temporaries: > address = nil > hostname = nil > Context PC = 13 > > ---------------------------------------------------------------------- > SpIPAddress class>>hostName:port: > Receiver: > a SpIPAddress class > Instance Variables: > superclass = SpSocketAddress > methodDict = a MethodDictionary[5] > format = 16386 > subclasses = nil > instanceVariables = an Array[2] > organization = ('accessing' #hostAddress #portNumber) > ('printing' #hostAddressString) > ('initialize-release' #host:port:) > ('services - private' #asNativeSocketAddress) > > name = #SpIPAddress > classPool = a NameSpaceOfClass[0] > environment = nil > Arguments: > aHostNameString = '127.0.0.1' > aPortNumber = 8888 > Context PC = 5 > > ---------------------------------------------------------------------- > Swazoo.SwazooSocket class>>serverOnIP:port: > Receiver: > a Swazoo.SwazooSocket class > Instance Variables: > superclass = Object > methodDict = a MethodDictionary[13] > format = 16385 > subclasses = nil > instanceVariables = an Array[1] > organization = ('testing' #isActive) > ('accessing' #close #localAddress #read: #read:timeout: #remoteAddress #write: #writeFrom:startingAt:for:) > ('server accessing' #accept #listenFor:) > ('private' #accessor #accessor: #stream) > > name = #SwazooSocket > classPool = a NameSpaceOfClass[0] > environment = a NameSpace[103] > socketClass = SpSocket > Arguments: > anIPString = '127.0.0.1' > anInteger = 8888 > Temporaries: > newSocket = a SpSocket > Context PC = 15 > > ---------------------------------------------------------------------- > Swazoo.HTTPServer>>start > Receiver: > a Swazoo.HTTPServer > Instance Variables: > ip = '127.0.0.1' > port = 8888 > connections = an OrderedCollection[0] > sites = a Swazoo.ServerRootComposite > socket = nil > loop = nil > isMultiThreading = nil > Context PC = 18 > > ---------------------------------------------------------------------- > optimized [] in [] in Swazoo.Site>>start > Receiver: > an UndefinedObject > Arguments: > each = a Swazoo.SiteIdentifier > Temporaries: > server = a Swazoo.HTTPServer > .registry = a Swazoo.SwazooServer > .self = an AIDASite > Context PC = 27 > > ---------------------------------------------------------------------- > OrderedCollection>>do: > Receiver: > an OrderedCollection > Instance Variables: > firstIndex = 1 > lastIndex = 1 > Arguments: > aBlock = BlockClosure [] in [] in Swazoo.Site>>start > Temporaries: > index = 1 > Context PC = 17 > > ---------------------------------------------------------------------- > optimized [] in Swazoo.Site>>start > Receiver: > an UndefinedObject > Temporaries: > .self = an AIDASite > .registry = a Swazoo.SwazooServer > Context PC = 13 > > ---------------------------------------------------------------------- > BlockClosure>>ifCurtailed: > Receiver: > a BlockClosure > Instance Variables: > method = CompiledBlock [] in Swazoo.Site>>start > outerContext = nil > copiedValues = an Array[2] > Arguments: > terminationBlock = BlockClosure [] in Swazoo.Site>>start > Context PC = 4 > > ---------------------------------------------------------------------- > AIDASite(Swazoo.Site)>>start > Receiver: > an AIDASite > Instance Variables: > enabled = true > uriPattern = an OrderedCollection[1] > parent = a Swazoo.ServerRootComposite > children = an OrderedCollection[0] > name = 'aidademo' > serving = false > style = a WebStyle > settings = a Dictionary[9] > systemServices = a Dictionary[5] > userServices = a Dictionary[0] > timestamps = an IdentityDictionary[4] > counters = nil > Temporaries: > registry = a Swazoo.SwazooServer > Context PC = 15 > > ---------------------------------------------------------------------- > AIDASite>>start > Receiver: > an AIDASite > Instance Variables: > enabled = true > uriPattern = an OrderedCollection[1] > parent = a Swazoo.ServerRootComposite > children = an OrderedCollection[0] > name = 'aidademo' > serving = false > style = a WebStyle > settings = a Dictionary[9] > systemServices = a Dictionary[5] > userServices = a Dictionary[0] > timestamps = an IdentityDictionary[4] > counters = nil > Context PC = 14 > > ---------------------------------------------------------------------- > Swazoo.SwazooServer>>startSite: > Receiver: > a Swazoo.SwazooServer > Instance Variables: > sites = an OrderedCollection[1] > servers = a Set[1] > watchdog = nil > Arguments: > aString = 'aidademo' > Temporaries: > site = an AIDASite > Context PC = 11 > > ---------------------------------------------------------------------- > Swazoo.SwazooServer>>demoStart > Receiver: > a Swazoo.SwazooServer > Instance Variables: > sites = an OrderedCollection[1] > servers = a Set[1] > watchdog = nil > Context PC = 27 > > ---------------------------------------------------------------------- > Swazoo.SwazooServer class>>demoStart > Receiver: > a Swazoo.SwazooServer class > Instance Variables: > superclass = Object > methodDict = a MethodDictionary[36] > format = 16387 > subclasses = nil > instanceVariables = an Array[3] > organization = ('private' #allAidaInstancesReport #isNewHour #isNightlyBackupTime #isWatchdogRunning #representBinaryOn: #restartServers #servers #sites #startWatchdog #stopWatchdog #watchdog #watchdog: #watchdogOther #watchdogPeriod #watchdogSites) > ('sites' #addSite: #allSites #removeAllSites #removeSite: #siteHostnamed: #siteNamed:) > ('start/stop' #demoStart #demoStop #start #startSite: #stop #stopSite:) > ('initialize-release' #initialize #initServers #initSites) > ('private-servers' #addServer: #newServerFor: #removeServer: #serverFor:) > ('private-backup/restore' #backupToFile #restoreFromFile) > > name = #SwazooServer > classPool = a NameSpaceOfClass[1] > environment = a NameSpace[103] > Context PC = 5 > > ---------------------------------------------------------------------- > UndefinedObject>>unboundMethod > Receiver: > an UndefinedObject > Context PC = 3 > > ---------------------------------------------------------------------- > UndefinedObject(Object)>>performMethod:arguments: > Receiver: > an UndefinedObject > Arguments: > method = AnnotatedMethod UndefinedObject>>unboundMethod > args = an Array[0] > Context PC = 5 > > ---------------------------------------------------------------------- > UndefinedObject(Object)>>performMethod: > Receiver: > an UndefinedObject > Arguments: > method = AnnotatedMethod UndefinedObject>>unboundMethod > Context PC = 5 > > ---------------------------------------------------------------------- > TextEditorController(ParagraphEditor)>>evaluateCompiled: > Receiver: > a TextEditorController > Instance Variables: > model = a PluggableAdaptor > view = a TextEditorView > sensor = a TranslatingSensor > menuHolder = a ValueHolder on: a Menu > performer = a WorkspacePage > beginTypeInIndex = nil > anchorIndex = 1 > emphasisHere = nil > dispatchTable = a DispatchTable > charComposer = a CharacterComposer > textHasChanged = true > feelPolicy = a Win95FeelPolicy > supportCodeEditingFeels = true > localMenuItems = an Array[20] > extendingDown = true > keyboardProcessor = a KeyboardProcessor > keyboardHook = nil > readOnly = false > accepted = false > autoAccept = false > continuousAccept = false > tabMeansNextField = true > tabRequiresControl = true > dispatcher = an UIDispatcher > selectable = false > Arguments: > aMethod = AnnotatedMethod UndefinedObject>>unboundMethod > Temporaries: > context = nil > Context PC = 13 > > ---------------------------------------------------------------------- > optimized [] in ParagraphEditor>>evaluateSelection > Receiver: > an UndefinedObject > Temporaries: > .self = a TextEditorController > .code = AnnotatedMethod UndefinedObject>>unboundMethod > Context PC = 7 > > ---------------------------------------------------------------------- > BlockClosure>>ensure: > Receiver: > a BlockClosure > Instance Variables: > method = CompiledBlock [] in ParagraphEditor>>evaluateSelection > outerContext = nil > copiedValues = an Array[2] > Arguments: > aBlock = BlockClosure [] in Cursor>>showWhile: > Temporaries: > result = nil > Context PC = 4 > > ---------------------------------------------------------------------- > Cursor>>showWhile: > Receiver: > a Cursor > Instance Variables: > errorCode = 0 > handle = 8 > image = Depth1Image(extent: 16 na 16 depth: 1) > mask = Depth1Image(extent: 16 na 16 depth: 1) > hotSpot = 1 na 1 > name = 'xeq' > Arguments: > aBlock = BlockClosure [] in ParagraphEditor>>evaluateSelection > Temporaries: > oldcursor = Cursor normal > Context PC = 23 > > ---------------------------------------------------------------------- > TextEditorController(ParagraphEditor)>>evaluateSelection > Receiver: > a TextEditorController > Instance Variables: > model = a PluggableAdaptor > view = a TextEditorView > sensor = a TranslatingSensor > menuHolder = a ValueHolder on: a Menu > performer = a WorkspacePage > beginTypeInIndex = nil > anchorIndex = 1 > emphasisHere = nil > dispatchTable = a DispatchTable > charComposer = a CharacterComposer > textHasChanged = true > feelPolicy = a Win95FeelPolicy > supportCodeEditingFeels = true > localMenuItems = an Array[20] > extendingDown = true > keyboardProcessor = a KeyboardProcessor > keyboardHook = nil > readOnly = false > accepted = false > autoAccept = false > continuousAccept = false > tabMeansNextField = true > tabRequiresControl = true > dispatcher = an UIDispatcher > selectable = false > Temporaries: > code = AnnotatedMethod UndefinedObject>>unboundMethod > result = nil > Context PC = 14 > > ---------------------------------------------------------------------- > optimized [] in ParagraphEditor>>inspectIt > Receiver: > an UndefinedObject > Temporaries: > .self = a TextEditorController > Context PC = 6 > > ---------------------------------------------------------------------- > BlockClosure>>on:do: > Receiver: > a BlockClosure > Instance Variables: > method = CompiledBlock [] in ParagraphEditor>>inspectIt > outerContext = nil > copiedValues = a TextEditorController > Arguments: > anExceptionSelector = CompilationError > handlerBlock = BlockClosure [] in ParagraphEditor>>inspectIt > Context PC = 18 > > ---------------------------------------------------------------------- > TextEditorController(ParagraphEditor)>>inspectIt > Receiver: > a TextEditorController > Instance Variables: > model = a PluggableAdaptor > view = a TextEditorView > sensor = a TranslatingSensor > menuHolder = a ValueHolder on: a Menu > performer = a WorkspacePage > beginTypeInIndex = nil > anchorIndex = 1 > emphasisHere = nil > dispatchTable = a DispatchTable > charComposer = a CharacterComposer > textHasChanged = true > feelPolicy = a Win95FeelPolicy > supportCodeEditingFeels = true > localMenuItems = an Array[20] > extendingDown = true > keyboardProcessor = a KeyboardProcessor > keyboardHook = nil > readOnly = false > accepted = false > autoAccept = false > continuousAccept = false > tabMeansNextField = true > tabRequiresControl = true > dispatcher = an UIDispatcher > selectable = false > Context PC = 20 > > ---------------------------------------------------------------------- > WorkspacePage>>inspectIt > Receiver: > a WorkspacePage > Instance Variables: > dependents = a PluggableAdaptor > builder = an UIBuilder > uiSession = nil > eventHandlers = an IdentityDictionary[1] > workspace = a Workbook > label = 'Workspace' > verboseLabel = nil > filename = nil > fileTimestamp = nil > textModel = a PluggableAdaptor > unacceptedText = nil > savedSelection = nil > savedFileTimestamp = nil > textModelOverride = a ValueHolder on: Text for 'Welcome to > VisualWorks?,Pre-Release 7.5.1 of September 17, 2007 > Copyright ? 2007 - 1999 Cincom Systems, Inc. All Rights Reserved > > Please visit www.cincomsmalltalk.com for the latest release information. > ' > Context PC = 5 > > ---------------------------------------------------------------------- > Workbook(AbstractWorkspace)>>smalltalkInspectIt > Receiver: > a Workbook > Instance Variables: > dependents = an ApplicationWindow 24 > builder = an UIBuilder > uiSession = a ControlManager > eventHandlers = nil > locals = a WorkspaceVariablePool[0] > importAll = true > specificImports = an Array[3] > importSummaryHolder = a ValueHolder on: 'All' > pageExplanationHolder = a ValueHolder on: 'Text or Smalltalk code' > statusBarVisible = true > encodingChannel = a ValueHolder on: #Source > menuBarHolder = a ValueHolder on: a Menu > pageHolder = a SelectionInList > lastInstalledPage = a WorkspacePage > Context PC = 5 > > ---------------------------------------------------------------------- > optimized [] in ApplicationModel>>actionFor: > Receiver: > an UndefinedObject > Temporaries: > .self = a Workbook > .aKey = #smalltalkInspectIt > Context PC = 7 > > ---------------------------------------------------------------------- > optimized [] in ToolBar>>newButtonFor: > Receiver: > an UndefinedObject > Arguments: > b = a ValueHolder on: nil > v = true > Temporaries: > .self = a WinXPToolBar > .item = a MenuItem 'Inspect it' > Context PC = 19 > > ---------------------------------------------------------------------- > PluggableAdaptor>>setValue: > Receiver: > a PluggableAdaptor > Instance Variables: > dependents = a WinXPToolbarButtonView > model = a ValueHolder on: nil > getBlock = BlockClosure [] in ToolBar>>newButtonFor: > putBlock = BlockClosure [] in ToolBar>>newButtonFor: > updateBlock = BlockClosure [] in ToolBar>>newButtonFor: > Arguments: > newValue = true > Context PC = 6 > > ---------------------------------------------------------------------- > PluggableAdaptor(ValueModel)>>value: > Receiver: > a PluggableAdaptor > Instance Variables: > dependents = a WinXPToolbarButtonView > model = a ValueHolder on: nil > getBlock = BlockClosure [] in ToolBar>>newButtonFor: > putBlock = BlockClosure [] in ToolBar>>newButtonFor: > updateBlock = BlockClosure [] in ToolBar>>newButtonFor: > Arguments: > newValue = true > Context PC = 5 > > ---------------------------------------------------------------------- > Win98ToolbarButtonController(TriggerButtonController)>>pressAction > Receiver: > a Win98ToolbarButtonController > Instance Variables: > model = a PluggableAdaptor > view = a WinXPToolbarButtonView > sensor = a TranslatingSensor > keyboardProcessor = nil > keyboardHook = nil > dispatcher = nil > Context PC = 17 > > ---------------------------------------------------------------------- > TriggerButtonTracker(BasicButtonTracker)>>finishSelectionFor: > Receiver: > a TriggerButtonTracker > Instance Variables: > controller = a Win98ToolbarButtonController > inside = true > Arguments: > aPoint = 8 na 9 > Context PC = 8 > > ---------------------------------------------------------------------- > TriggerButtonTracker>>finishSelectionFor: > Receiver: > a TriggerButtonTracker > Instance Variables: > controller = a Win98ToolbarButtonController > inside = true > Arguments: > aPoint = 8 na 9 > Context PC = 11 > > ---------------------------------------------------------------------- > TriggerButtonTracker(SelectionTracker)>>redButtonReleasedEvent: > Receiver: > a TriggerButtonTracker > Instance Variables: > controller = a Win98ToolbarButtonController > inside = true > Arguments: > aMouseButtonEvent = a RedButtonReleasedEvent > Context PC = 13 > > ---------------------------------------------------------------------- > RedButtonReleasedEvent>>dispatchTo: > Receiver: > a RedButtonReleasedEvent > Instance Variables: > time = 270915641 > initiator = an EventDispatcher > window = an ApplicationWindow 24 > state = 0 > x = 248 > y = 31 > gx = 383 > gy = 321 > buttonNumber = 1 > Arguments: > anObject = a TriggerButtonTracker > Context PC = 4 > > ---------------------------------------------------------------------- > TriggerButtonTracker(SelectionTracker)>>handleEvent: > Receiver: > a TriggerButtonTracker > Instance Variables: > controller = a Win98ToolbarButtonController > inside = true > Arguments: > anEvent = a RedButtonReleasedEvent > Context PC = 4 > > ---------------------------------------------------------------------- > EventDispatcher>>dispatch:to: > Receiver: > an EventDispatcher > Instance Variables: > windowController = an ApplicationStandardSystemController > currentMouseConsumer = nil > grabbingMouse = false > keyboardProcessor = a KeyboardProcessor > lastControlObject = a WinXPScrollBarController > trapList = nil > state = nil > repairDamageWhenDebugging = true > flushQueueAfterError = true > distributeEventsWhenDebugging = true > dragDropInProgress = false > dragDropTracker = nil > dispatchUnknownEvents = false > Arguments: > event = a RedButtonReleasedEvent > object = a TriggerButtonTracker > Temporaries: > tmp = nil > Context PC = 10 > > ---------------------------------------------------------------------- > EventDispatcher>>dispatchEvent: > Receiver: > an EventDispatcher > Instance Variables: > windowController = an ApplicationStandardSystemController > currentMouseConsumer = nil > grabbingMouse = false > keyboardProcessor = a KeyboardProcessor > lastControlObject = a WinXPScrollBarController > trapList = nil > state = nil > repairDamageWhenDebugging = true > flushQueueAfterError = true > distributeEventsWhenDebugging = true > dragDropInProgress = false > dragDropTracker = nil > dispatchUnknownEvents = false > Arguments: > event = a RedButtonReleasedEvent > Temporaries: > objectWantingControl = nil > targetKeyboardProcessor = nil > Context PC = 60 > > ---------------------------------------------------------------------- > optimized [] in Event>>dispatch > Receiver: > an UndefinedObject > Arguments: > value = an EventDispatcher > Temporaries: > .self = a RedButtonReleasedEvent > Context PC = 6 > > ---------------------------------------------------------------------- > BlockClosure>>cull: > Receiver: > a BlockClosure > Instance Variables: > method = CompiledBlock [] in Event>>dispatch > outerContext = nil > copiedValues = a RedButtonReleasedEvent > Arguments: > anObject = an EventDispatcher > Context PC = 15 > > ---------------------------------------------------------------------- > EventDispatcher(Object)>>ifNotNil: > Receiver: > an EventDispatcher > Instance Variables: > windowController = an ApplicationStandardSystemController > currentMouseConsumer = nil > grabbingMouse = false > keyboardProcessor = a KeyboardProcessor > lastControlObject = a WinXPScrollBarController > trapList = nil > state = nil > repairDamageWhenDebugging = true > flushQueueAfterError = true > distributeEventsWhenDebugging = true > dragDropInProgress = false > dragDropTracker = nil > dispatchUnknownEvents = false > Arguments: > aBlock = BlockClosure [] in Event>>dispatch > Context PC = 4 > > ---------------------------------------------------------------------- > RedButtonReleasedEvent(Event)>>dispatch > Receiver: > a RedButtonReleasedEvent > Instance Variables: > time = 270915641 > initiator = an EventDispatcher > window = an ApplicationWindow 24 > state = 0 > x = 248 > y = 31 > gx = 383 > gy = 321 > buttonNumber = 1 > Context PC = 19 > > ---------------------------------------------------------------------- > RedButtonReleasedEvent(Event)>>dispatchForWindowManager: > Receiver: > a RedButtonReleasedEvent > Instance Variables: > time = 270915641 > initiator = an EventDispatcher > window = an ApplicationWindow 24 > state = 0 > x = 248 > y = 31 > gx = 383 > gy = 321 > buttonNumber = 1 > Arguments: > aWinMgr = a WindowManager > Context PC = 4 > > ---------------------------------------------------------------------- > optimized [] in WindowManager>>safelyDispatchForWindowManager: > Receiver: > an UndefinedObject > Temporaries: > .event = a RedButtonReleasedEvent > .self = a WindowManager > Context PC = 6 > > ---------------------------------------------------------------------- > BlockClosure>>on:do: > Receiver: > a BlockClosure > Instance Variables: > method = CompiledBlock [] in WindowManager>>safelyDispatchForWindowManager: > outerContext = nil > copiedValues = an Array[2] > Arguments: > anExceptionSelector = BadControllerError > handlerBlock = BlockClosure [] in WindowManager>>safelyDispatchForWindowManager: > Context PC = 18 > > ---------------------------------------------------------------------- > WindowManager>>safelyDispatchForWindowManager: > Receiver: > a WindowManager > Instance Variables: > windows = an OrderedCollection[1] > activeController = nil > interruptLock = false > outstandingMetaOrDamage = false > openInProgress = false > eventQueue = an EventQueue > baseProcess = a Process in Semaphore>>wait > dontFilterEvents = false > Arguments: > event = a RedButtonReleasedEvent > Context PC = 13 > > ---------------------------------------------------------------------- > WindowManager>>processNextEvent > Receiver: > a WindowManager > Instance Variables: > windows = an OrderedCollection[1] > activeController = nil > interruptLock = false > outstandingMetaOrDamage = false > openInProgress = false > eventQueue = an EventQueue > baseProcess = a Process in Semaphore>>wait > dontFilterEvents = false > Temporaries: > event = a RedButtonReleasedEvent > Context PC = 9 > > ---------------------------------------------------------------------- > optimized [] in [] in WindowManager>>newProcess > Receiver: > an UndefinedObject > Temporaries: > .self = a WindowManager > Context PC = 13 > > ---------------------------------------------------------------------- > BlockClosure>>on:do: > Receiver: > a BlockClosure > Instance Variables: > method = CompiledBlock [] in [] in WindowManager>>newProcess > outerContext = nil > copiedValues = a WindowManager > Arguments: > anExceptionSelector = TerminateException > handlerBlock = BlockClosure [] in [] in WindowManager>>newProcess > Context PC = 18 > > ---------------------------------------------------------------------- > optimized [] in WindowManager>>newProcess > Receiver: > an UndefinedObject > Temporaries: > .self = a WindowManager > Context PC = 15 > > ---------------------------------------------------------------------- > BlockClosure>>on:do: > Receiver: > a BlockClosure > Instance Variables: > method = CompiledBlock [] in WindowManager>>newProcess > outerContext = nil > copiedValues = a WindowManager > Arguments: > anExceptionSelector = TerminateException > handlerBlock = BlockClosure [] in [] in Process class>>forBlock:priority: > Context PC = 18 > > ---------------------------------------------------------------------- > optimized [] in Process class>>forBlock:priority: > Receiver: > an UndefinedObject > Temporaries: > .aBlock = BlockClosure [] in WindowManager>>newProcess > Context PC = 9 > > -----Oorspronkelijk bericht----- > Van: aida-bounces na aidaweb.si [mailto:aida-bounces na aidaweb.si] Namens Janko Miv?ek > Verzonden: woensdag 19 september 2007 10:20 > Aan: AIDA/Web general discussion list > Onderwerp: Re: [aida] IDNA Parcel > > Dirk, > > Dirk Verleysen wrote: > >> If you have the IDNA parcel loaded from the latest development build the >> SwazooServer doesn?t start. Unloaded the parcel and I could start the >> SwazooServer. > > That's interesting problem. Only potential clash I can see between IDNA > (RFC 3490 - Internationalizing Domain Names in Applications) and Swazoo > is IDNA's override of IPSocketAddress hostAddressByName. This method is > used SwazooSocket (actually in Sport SpIPAddress). > > I'll look at this a bit later. > > Best regards > Janko > > -- Janko Miv?ek AIDA/Web Smalltalk Web Application Server http://www.aidaweb.si |
Ok... I'll send it to Martin.
-----Oorspronkelijk bericht----- Van: aida-bounces op aidaweb.si [mailto:aida-bounces op aidaweb.si] Namens Janko Miv?ek Verzonden: donderdag 20 september 2007 12:24 Aan: AIDA/Web general discussion list Onderwerp: Re: [aida] IDNA Parcel Dirk, That's pretty strange. It looks that IDNAEncoder is not happy if you give it an ip address in dot format instead of full DNS name. See down in stack report: IDNAEncoder>>encode: Receiver: an IDNAEncoder Instance Variables: punyfier = nil Arguments: idn = '127.0.0.1' Temporaries: output = a WriteStream Context PC = 18 I think this is a bug and should be reported to Cincom. I'm sure Martin Kobetic will solve it immediately :) Best regards Janko Dirk Verleysen wrote: > Janko, > > Here is the stack when executing SwazooServer demoStart : > > Unhandled exception: Label '127' has invalid ASCII characters! > IDNAEncoder(Object)>>error: > IDNAEncoder>>errorNonLDHASCII: > IDNAEncoder>>verifyLDHOrNonASCII: > IDNAEncoder>>toASCII: > optimized [] in IDNAEncoder>>encode: > Array(SequenceableCollection)>>collect: > IDNAEncoder>>encode: > IPSocketAddress class>>hostAddressByName: > SpIPAddress class>>hostName:port: > Swazoo.SwazooSocket class>>serverOnIP:port: > Swazoo.HTTPServer>>start > optimized [] in [] in Swazoo.Site>>start > OrderedCollection>>do: > optimized [] in Swazoo.Site>>start > BlockClosure>>ifCurtailed: > AIDASite(Swazoo.Site)>>start > AIDASite>>start > Swazoo.SwazooServer>>startSite: > Swazoo.SwazooServer>>demoStart > Swazoo.SwazooServer class>>demoStart > UndefinedObject>>unboundMethod > UndefinedObject(Object)>>performMethod:arguments: > UndefinedObject(Object)>>performMethod: > TextEditorController(ParagraphEditor)>>evaluateCompiled: > optimized [] in ParagraphEditor>>evaluateSelection > BlockClosure>>ensure: > Cursor>>showWhile: > TextEditorController(ParagraphEditor)>>evaluateSelection > optimized [] in ParagraphEditor>>inspectIt > BlockClosure>>on:do: > TextEditorController(ParagraphEditor)>>inspectIt > WorkspacePage>>inspectIt > Workbook(AbstractWorkspace)>>smalltalkInspectIt > optimized [] in ApplicationModel>>actionFor: > optimized [] in ToolBar>>newButtonFor: > PluggableAdaptor>>setValue: > PluggableAdaptor(ValueModel)>>value: > Win98ToolbarButtonController(TriggerButtonController)>>pressAction > TriggerButtonTracker(BasicButtonTracker)>>finishSelectionFor: > TriggerButtonTracker>>finishSelectionFor: > TriggerButtonTracker(SelectionTracker)>>redButtonReleasedEvent: > RedButtonReleasedEvent>>dispatchTo: > TriggerButtonTracker(SelectionTracker)>>handleEvent: > EventDispatcher>>dispatch:to: > EventDispatcher>>dispatchEvent: > optimized [] in Event>>dispatch > BlockClosure>>cull: > EventDispatcher(Object)>>ifNotNil: > RedButtonReleasedEvent(Event)>>dispatch > RedButtonReleasedEvent(Event)>>dispatchForWindowManager: > optimized [] in WindowManager>>safelyDispatchForWindowManager: > BlockClosure>>on:do: > WindowManager>>safelyDispatchForWindowManager: > WindowManager>>processNextEvent > optimized [] in [] in WindowManager>>newProcess > BlockClosure>>on:do: > optimized [] in WindowManager>>newProcess > BlockClosure>>on:do: > optimized [] in Process class>>forBlock:priority: > > ---------------------------------------------------------------------- > IDNAEncoder(Object)>>error: > Receiver: > an IDNAEncoder > Instance Variables: > punyfier = nil > Arguments: > aStringOrMessage = 'Label ''127'' has invalid ASCII characters!' > Temporaries: > lastNonSpace = 41 > aString = 'Label ''127'' has invalid ASCII characters!' > Context PC = 18 > > ---------------------------------------------------------------------- > IDNAEncoder>>errorNonLDHASCII: > Receiver: > an IDNAEncoder > Instance Variables: > punyfier = nil > Arguments: > label = '127' > Context PC = 8 > > ---------------------------------------------------------------------- > IDNAEncoder>>verifyLDHOrNonASCII: > Receiver: > an IDNAEncoder > Instance Variables: > punyfier = nil > Arguments: > label = '127' > Context PC = 10 > > ---------------------------------------------------------------------- > IDNAEncoder>>toASCII: > Receiver: > an IDNAEncoder > Instance Variables: > punyfier = nil > Arguments: > label = '127' > Temporaries: > prepared = '127' > isASCII = true > Context PC = 20 > > ---------------------------------------------------------------------- > optimized [] in IDNAEncoder>>encode: > Receiver: > an UndefinedObject > Arguments: > label = '127' > Temporaries: > .self = an IDNAEncoder > Context PC = 7 > > ---------------------------------------------------------------------- > Array(SequenceableCollection)>>collect: > Receiver: > an Array > Arguments: > aBlock = BlockClosure [] in IDNAEncoder>>encode: > Temporaries: > newCollection = an Array[4] > index = 1 > Context PC = 29 > > ---------------------------------------------------------------------- > IDNAEncoder>>encode: > Receiver: > an IDNAEncoder > Instance Variables: > punyfier = nil > Arguments: > idn = '127.0.0.1' > Temporaries: > output = a WriteStream > Context PC = 18 > > ---------------------------------------------------------------------- > IPSocketAddress class>>hostAddressByName: > Receiver: > an IPSocketAddress class > Instance Variables: > superclass = SocketAddress > methodDict = a MethodDictionary[13] > format = 4096 > subclasses = nil > instanceVariables = nil > organization = ('printing' #printBytesOn:) > ('accessing' #hostAddress #hostAddress: #hostName #hostName: #port #port:) > ('network addresses' #networkAddress #networkClass) > ('comparing' #= #hash) > ('marshaling' #marshalWith:) > ('As yet unclassified' #ipAddressString) > > name = #IPSocketAddress > classPool = nil > environment = a NameSpace[121] > Arguments: > aString = '127.0.0.1' > Temporaries: > address = nil > hostname = nil > Context PC = 13 > > ---------------------------------------------------------------------- > SpIPAddress class>>hostName:port: > Receiver: > a SpIPAddress class > Instance Variables: > superclass = SpSocketAddress > methodDict = a MethodDictionary[5] > format = 16386 > subclasses = nil > instanceVariables = an Array[2] > organization = ('accessing' #hostAddress #portNumber) > ('printing' #hostAddressString) > ('initialize-release' #host:port:) > ('services - private' #asNativeSocketAddress) > > name = #SpIPAddress > classPool = a NameSpaceOfClass[0] > environment = nil > Arguments: > aHostNameString = '127.0.0.1' > aPortNumber = 8888 > Context PC = 5 > > ---------------------------------------------------------------------- > Swazoo.SwazooSocket class>>serverOnIP:port: > Receiver: > a Swazoo.SwazooSocket class > Instance Variables: > superclass = Object > methodDict = a MethodDictionary[13] > format = 16385 > subclasses = nil > instanceVariables = an Array[1] > organization = ('testing' #isActive) > ('accessing' #close #localAddress #read: #read:timeout: #remoteAddress #write: #writeFrom:startingAt:for:) > ('server accessing' #accept #listenFor:) > ('private' #accessor #accessor: #stream) > > name = #SwazooSocket > classPool = a NameSpaceOfClass[0] > environment = a NameSpace[103] > socketClass = SpSocket > Arguments: > anIPString = '127.0.0.1' > anInteger = 8888 > Temporaries: > newSocket = a SpSocket > Context PC = 15 > > ---------------------------------------------------------------------- > Swazoo.HTTPServer>>start > Receiver: > a Swazoo.HTTPServer > Instance Variables: > ip = '127.0.0.1' > port = 8888 > connections = an OrderedCollection[0] > sites = a Swazoo.ServerRootComposite > socket = nil > loop = nil > isMultiThreading = nil > Context PC = 18 > > ---------------------------------------------------------------------- > optimized [] in [] in Swazoo.Site>>start > Receiver: > an UndefinedObject > Arguments: > each = a Swazoo.SiteIdentifier > Temporaries: > server = a Swazoo.HTTPServer > .registry = a Swazoo.SwazooServer > .self = an AIDASite > Context PC = 27 > > ---------------------------------------------------------------------- > OrderedCollection>>do: > Receiver: > an OrderedCollection > Instance Variables: > firstIndex = 1 > lastIndex = 1 > Arguments: > aBlock = BlockClosure [] in [] in Swazoo.Site>>start > Temporaries: > index = 1 > Context PC = 17 > > ---------------------------------------------------------------------- > optimized [] in Swazoo.Site>>start > Receiver: > an UndefinedObject > Temporaries: > .self = an AIDASite > .registry = a Swazoo.SwazooServer > Context PC = 13 > > ---------------------------------------------------------------------- > BlockClosure>>ifCurtailed: > Receiver: > a BlockClosure > Instance Variables: > method = CompiledBlock [] in Swazoo.Site>>start > outerContext = nil > copiedValues = an Array[2] > Arguments: > terminationBlock = BlockClosure [] in Swazoo.Site>>start > Context PC = 4 > > ---------------------------------------------------------------------- > AIDASite(Swazoo.Site)>>start > Receiver: > an AIDASite > Instance Variables: > enabled = true > uriPattern = an OrderedCollection[1] > parent = a Swazoo.ServerRootComposite > children = an OrderedCollection[0] > name = 'aidademo' > serving = false > style = a WebStyle > settings = a Dictionary[9] > systemServices = a Dictionary[5] > userServices = a Dictionary[0] > timestamps = an IdentityDictionary[4] > counters = nil > Temporaries: > registry = a Swazoo.SwazooServer > Context PC = 15 > > ---------------------------------------------------------------------- > AIDASite>>start > Receiver: > an AIDASite > Instance Variables: > enabled = true > uriPattern = an OrderedCollection[1] > parent = a Swazoo.ServerRootComposite > children = an OrderedCollection[0] > name = 'aidademo' > serving = false > style = a WebStyle > settings = a Dictionary[9] > systemServices = a Dictionary[5] > userServices = a Dictionary[0] > timestamps = an IdentityDictionary[4] > counters = nil > Context PC = 14 > > ---------------------------------------------------------------------- > Swazoo.SwazooServer>>startSite: > Receiver: > a Swazoo.SwazooServer > Instance Variables: > sites = an OrderedCollection[1] > servers = a Set[1] > watchdog = nil > Arguments: > aString = 'aidademo' > Temporaries: > site = an AIDASite > Context PC = 11 > > ---------------------------------------------------------------------- > Swazoo.SwazooServer>>demoStart > Receiver: > a Swazoo.SwazooServer > Instance Variables: > sites = an OrderedCollection[1] > servers = a Set[1] > watchdog = nil > Context PC = 27 > > ---------------------------------------------------------------------- > Swazoo.SwazooServer class>>demoStart > Receiver: > a Swazoo.SwazooServer class > Instance Variables: > superclass = Object > methodDict = a MethodDictionary[36] > format = 16387 > subclasses = nil > instanceVariables = an Array[3] > organization = ('private' #allAidaInstancesReport #isNewHour #isNightlyBackupTime #isWatchdogRunning #representBinaryOn: #restartServers #servers #sites #startWatchdog #stopWatchdog #watchdog #watchdog: #watchdogOther #watchdogPeriod #watchdogSites) > ('sites' #addSite: #allSites #removeAllSites #removeSite: #siteHostnamed: #siteNamed:) > ('start/stop' #demoStart #demoStop #start #startSite: #stop #stopSite:) > ('initialize-release' #initialize #initServers #initSites) > ('private-servers' #addServer: #newServerFor: #removeServer: #serverFor:) > ('private-backup/restore' #backupToFile #restoreFromFile) > > name = #SwazooServer > classPool = a NameSpaceOfClass[1] > environment = a NameSpace[103] > Context PC = 5 > > ---------------------------------------------------------------------- > UndefinedObject>>unboundMethod > Receiver: > an UndefinedObject > Context PC = 3 > > ---------------------------------------------------------------------- > UndefinedObject(Object)>>performMethod:arguments: > Receiver: > an UndefinedObject > Arguments: > method = AnnotatedMethod UndefinedObject>>unboundMethod > args = an Array[0] > Context PC = 5 > > ---------------------------------------------------------------------- > UndefinedObject(Object)>>performMethod: > Receiver: > an UndefinedObject > Arguments: > method = AnnotatedMethod UndefinedObject>>unboundMethod > Context PC = 5 > > ---------------------------------------------------------------------- > TextEditorController(ParagraphEditor)>>evaluateCompiled: > Receiver: > a TextEditorController > Instance Variables: > model = a PluggableAdaptor > view = a TextEditorView > sensor = a TranslatingSensor > menuHolder = a ValueHolder on: a Menu > performer = a WorkspacePage > beginTypeInIndex = nil > anchorIndex = 1 > emphasisHere = nil > dispatchTable = a DispatchTable > charComposer = a CharacterComposer > textHasChanged = true > feelPolicy = a Win95FeelPolicy > supportCodeEditingFeels = true > localMenuItems = an Array[20] > extendingDown = true > keyboardProcessor = a KeyboardProcessor > keyboardHook = nil > readOnly = false > accepted = false > autoAccept = false > continuousAccept = false > tabMeansNextField = true > tabRequiresControl = true > dispatcher = an UIDispatcher > selectable = false > Arguments: > aMethod = AnnotatedMethod UndefinedObject>>unboundMethod > Temporaries: > context = nil > Context PC = 13 > > ---------------------------------------------------------------------- > optimized [] in ParagraphEditor>>evaluateSelection > Receiver: > an UndefinedObject > Temporaries: > .self = a TextEditorController > .code = AnnotatedMethod UndefinedObject>>unboundMethod > Context PC = 7 > > ---------------------------------------------------------------------- > BlockClosure>>ensure: > Receiver: > a BlockClosure > Instance Variables: > method = CompiledBlock [] in ParagraphEditor>>evaluateSelection > outerContext = nil > copiedValues = an Array[2] > Arguments: > aBlock = BlockClosure [] in Cursor>>showWhile: > Temporaries: > result = nil > Context PC = 4 > > ---------------------------------------------------------------------- > Cursor>>showWhile: > Receiver: > a Cursor > Instance Variables: > errorCode = 0 > handle = 8 > image = Depth1Image(extent: 16 op 16 depth: 1) > mask = Depth1Image(extent: 16 op 16 depth: 1) > hotSpot = 1 op 1 > name = 'xeq' > Arguments: > aBlock = BlockClosure [] in ParagraphEditor>>evaluateSelection > Temporaries: > oldcursor = Cursor normal > Context PC = 23 > > ---------------------------------------------------------------------- > TextEditorController(ParagraphEditor)>>evaluateSelection > Receiver: > a TextEditorController > Instance Variables: > model = a PluggableAdaptor > view = a TextEditorView > sensor = a TranslatingSensor > menuHolder = a ValueHolder on: a Menu > performer = a WorkspacePage > beginTypeInIndex = nil > anchorIndex = 1 > emphasisHere = nil > dispatchTable = a DispatchTable > charComposer = a CharacterComposer > textHasChanged = true > feelPolicy = a Win95FeelPolicy > supportCodeEditingFeels = true > localMenuItems = an Array[20] > extendingDown = true > keyboardProcessor = a KeyboardProcessor > keyboardHook = nil > readOnly = false > accepted = false > autoAccept = false > continuousAccept = false > tabMeansNextField = true > tabRequiresControl = true > dispatcher = an UIDispatcher > selectable = false > Temporaries: > code = AnnotatedMethod UndefinedObject>>unboundMethod > result = nil > Context PC = 14 > > ---------------------------------------------------------------------- > optimized [] in ParagraphEditor>>inspectIt > Receiver: > an UndefinedObject > Temporaries: > .self = a TextEditorController > Context PC = 6 > > ---------------------------------------------------------------------- > BlockClosure>>on:do: > Receiver: > a BlockClosure > Instance Variables: > method = CompiledBlock [] in ParagraphEditor>>inspectIt > outerContext = nil > copiedValues = a TextEditorController > Arguments: > anExceptionSelector = CompilationError > handlerBlock = BlockClosure [] in ParagraphEditor>>inspectIt > Context PC = 18 > > ---------------------------------------------------------------------- > TextEditorController(ParagraphEditor)>>inspectIt > Receiver: > a TextEditorController > Instance Variables: > model = a PluggableAdaptor > view = a TextEditorView > sensor = a TranslatingSensor > menuHolder = a ValueHolder on: a Menu > performer = a WorkspacePage > beginTypeInIndex = nil > anchorIndex = 1 > emphasisHere = nil > dispatchTable = a DispatchTable > charComposer = a CharacterComposer > textHasChanged = true > feelPolicy = a Win95FeelPolicy > supportCodeEditingFeels = true > localMenuItems = an Array[20] > extendingDown = true > keyboardProcessor = a KeyboardProcessor > keyboardHook = nil > readOnly = false > accepted = false > autoAccept = false > continuousAccept = false > tabMeansNextField = true > tabRequiresControl = true > dispatcher = an UIDispatcher > selectable = false > Context PC = 20 > > ---------------------------------------------------------------------- > WorkspacePage>>inspectIt > Receiver: > a WorkspacePage > Instance Variables: > dependents = a PluggableAdaptor > builder = an UIBuilder > uiSession = nil > eventHandlers = an IdentityDictionary[1] > workspace = a Workbook > label = 'Workspace' > verboseLabel = nil > filename = nil > fileTimestamp = nil > textModel = a PluggableAdaptor > unacceptedText = nil > savedSelection = nil > savedFileTimestamp = nil > textModelOverride = a ValueHolder on: Text for 'Welcome to > VisualWorks?,Pre-Release 7.5.1 of September 17, 2007 > Copyright ? 2007 - 1999 Cincom Systems, Inc. All Rights Reserved > > Please visit www.cincomsmalltalk.com for the latest release information. > ' > Context PC = 5 > > ---------------------------------------------------------------------- > Workbook(AbstractWorkspace)>>smalltalkInspectIt > Receiver: > a Workbook > Instance Variables: > dependents = an ApplicationWindow 24 > builder = an UIBuilder > uiSession = a ControlManager > eventHandlers = nil > locals = a WorkspaceVariablePool[0] > importAll = true > specificImports = an Array[3] > importSummaryHolder = a ValueHolder on: 'All' > pageExplanationHolder = a ValueHolder on: 'Text or Smalltalk code' > statusBarVisible = true > encodingChannel = a ValueHolder on: #Source > menuBarHolder = a ValueHolder on: a Menu > pageHolder = a SelectionInList > lastInstalledPage = a WorkspacePage > Context PC = 5 > > ---------------------------------------------------------------------- > optimized [] in ApplicationModel>>actionFor: > Receiver: > an UndefinedObject > Temporaries: > .self = a Workbook > .aKey = #smalltalkInspectIt > Context PC = 7 > > ---------------------------------------------------------------------- > optimized [] in ToolBar>>newButtonFor: > Receiver: > an UndefinedObject > Arguments: > b = a ValueHolder on: nil > v = true > Temporaries: > .self = a WinXPToolBar > .item = a MenuItem 'Inspect it' > Context PC = 19 > > ---------------------------------------------------------------------- > PluggableAdaptor>>setValue: > Receiver: > a PluggableAdaptor > Instance Variables: > dependents = a WinXPToolbarButtonView > model = a ValueHolder on: nil > getBlock = BlockClosure [] in ToolBar>>newButtonFor: > putBlock = BlockClosure [] in ToolBar>>newButtonFor: > updateBlock = BlockClosure [] in ToolBar>>newButtonFor: > Arguments: > newValue = true > Context PC = 6 > > ---------------------------------------------------------------------- > PluggableAdaptor(ValueModel)>>value: > Receiver: > a PluggableAdaptor > Instance Variables: > dependents = a WinXPToolbarButtonView > model = a ValueHolder on: nil > getBlock = BlockClosure [] in ToolBar>>newButtonFor: > putBlock = BlockClosure [] in ToolBar>>newButtonFor: > updateBlock = BlockClosure [] in ToolBar>>newButtonFor: > Arguments: > newValue = true > Context PC = 5 > > ---------------------------------------------------------------------- > Win98ToolbarButtonController(TriggerButtonController)>>pressAction > Receiver: > a Win98ToolbarButtonController > Instance Variables: > model = a PluggableAdaptor > view = a WinXPToolbarButtonView > sensor = a TranslatingSensor > keyboardProcessor = nil > keyboardHook = nil > dispatcher = nil > Context PC = 17 > > ---------------------------------------------------------------------- > TriggerButtonTracker(BasicButtonTracker)>>finishSelectionFor: > Receiver: > a TriggerButtonTracker > Instance Variables: > controller = a Win98ToolbarButtonController > inside = true > Arguments: > aPoint = 8 op 9 > Context PC = 8 > > ---------------------------------------------------------------------- > TriggerButtonTracker>>finishSelectionFor: > Receiver: > a TriggerButtonTracker > Instance Variables: > controller = a Win98ToolbarButtonController > inside = true > Arguments: > aPoint = 8 op 9 > Context PC = 11 > > ---------------------------------------------------------------------- > TriggerButtonTracker(SelectionTracker)>>redButtonReleasedEvent: > Receiver: > a TriggerButtonTracker > Instance Variables: > controller = a Win98ToolbarButtonController > inside = true > Arguments: > aMouseButtonEvent = a RedButtonReleasedEvent > Context PC = 13 > > ---------------------------------------------------------------------- > RedButtonReleasedEvent>>dispatchTo: > Receiver: > a RedButtonReleasedEvent > Instance Variables: > time = 270915641 > initiator = an EventDispatcher > window = an ApplicationWindow 24 > state = 0 > x = 248 > y = 31 > gx = 383 > gy = 321 > buttonNumber = 1 > Arguments: > anObject = a TriggerButtonTracker > Context PC = 4 > > ---------------------------------------------------------------------- > TriggerButtonTracker(SelectionTracker)>>handleEvent: > Receiver: > a TriggerButtonTracker > Instance Variables: > controller = a Win98ToolbarButtonController > inside = true > Arguments: > anEvent = a RedButtonReleasedEvent > Context PC = 4 > > ---------------------------------------------------------------------- > EventDispatcher>>dispatch:to: > Receiver: > an EventDispatcher > Instance Variables: > windowController = an ApplicationStandardSystemController > currentMouseConsumer = nil > grabbingMouse = false > keyboardProcessor = a KeyboardProcessor > lastControlObject = a WinXPScrollBarController > trapList = nil > state = nil > repairDamageWhenDebugging = true > flushQueueAfterError = true > distributeEventsWhenDebugging = true > dragDropInProgress = false > dragDropTracker = nil > dispatchUnknownEvents = false > Arguments: > event = a RedButtonReleasedEvent > object = a TriggerButtonTracker > Temporaries: > tmp = nil > Context PC = 10 > > ---------------------------------------------------------------------- > EventDispatcher>>dispatchEvent: > Receiver: > an EventDispatcher > Instance Variables: > windowController = an ApplicationStandardSystemController > currentMouseConsumer = nil > grabbingMouse = false > keyboardProcessor = a KeyboardProcessor > lastControlObject = a WinXPScrollBarController > trapList = nil > state = nil > repairDamageWhenDebugging = true > flushQueueAfterError = true > distributeEventsWhenDebugging = true > dragDropInProgress = false > dragDropTracker = nil > dispatchUnknownEvents = false > Arguments: > event = a RedButtonReleasedEvent > Temporaries: > objectWantingControl = nil > targetKeyboardProcessor = nil > Context PC = 60 > > ---------------------------------------------------------------------- > optimized [] in Event>>dispatch > Receiver: > an UndefinedObject > Arguments: > value = an EventDispatcher > Temporaries: > .self = a RedButtonReleasedEvent > Context PC = 6 > > ---------------------------------------------------------------------- > BlockClosure>>cull: > Receiver: > a BlockClosure > Instance Variables: > method = CompiledBlock [] in Event>>dispatch > outerContext = nil > copiedValues = a RedButtonReleasedEvent > Arguments: > anObject = an EventDispatcher > Context PC = 15 > > ---------------------------------------------------------------------- > EventDispatcher(Object)>>ifNotNil: > Receiver: > an EventDispatcher > Instance Variables: > windowController = an ApplicationStandardSystemController > currentMouseConsumer = nil > grabbingMouse = false > keyboardProcessor = a KeyboardProcessor > lastControlObject = a WinXPScrollBarController > trapList = nil > state = nil > repairDamageWhenDebugging = true > flushQueueAfterError = true > distributeEventsWhenDebugging = true > dragDropInProgress = false > dragDropTracker = nil > dispatchUnknownEvents = false > Arguments: > aBlock = BlockClosure [] in Event>>dispatch > Context PC = 4 > > ---------------------------------------------------------------------- > RedButtonReleasedEvent(Event)>>dispatch > Receiver: > a RedButtonReleasedEvent > Instance Variables: > time = 270915641 > initiator = an EventDispatcher > window = an ApplicationWindow 24 > state = 0 > x = 248 > y = 31 > gx = 383 > gy = 321 > buttonNumber = 1 > Context PC = 19 > > ---------------------------------------------------------------------- > RedButtonReleasedEvent(Event)>>dispatchForWindowManager: > Receiver: > a RedButtonReleasedEvent > Instance Variables: > time = 270915641 > initiator = an EventDispatcher > window = an ApplicationWindow 24 > state = 0 > x = 248 > y = 31 > gx = 383 > gy = 321 > buttonNumber = 1 > Arguments: > aWinMgr = a WindowManager > Context PC = 4 > > ---------------------------------------------------------------------- > optimized [] in WindowManager>>safelyDispatchForWindowManager: > Receiver: > an UndefinedObject > Temporaries: > .event = a RedButtonReleasedEvent > .self = a WindowManager > Context PC = 6 > > ---------------------------------------------------------------------- > BlockClosure>>on:do: > Receiver: > a BlockClosure > Instance Variables: > method = CompiledBlock [] in WindowManager>>safelyDispatchForWindowManager: > outerContext = nil > copiedValues = an Array[2] > Arguments: > anExceptionSelector = BadControllerError > handlerBlock = BlockClosure [] in WindowManager>>safelyDispatchForWindowManager: > Context PC = 18 > > ---------------------------------------------------------------------- > WindowManager>>safelyDispatchForWindowManager: > Receiver: > a WindowManager > Instance Variables: > windows = an OrderedCollection[1] > activeController = nil > interruptLock = false > outstandingMetaOrDamage = false > openInProgress = false > eventQueue = an EventQueue > baseProcess = a Process in Semaphore>>wait > dontFilterEvents = false > Arguments: > event = a RedButtonReleasedEvent > Context PC = 13 > > ---------------------------------------------------------------------- > WindowManager>>processNextEvent > Receiver: > a WindowManager > Instance Variables: > windows = an OrderedCollection[1] > activeController = nil > interruptLock = false > outstandingMetaOrDamage = false > openInProgress = false > eventQueue = an EventQueue > baseProcess = a Process in Semaphore>>wait > dontFilterEvents = false > Temporaries: > event = a RedButtonReleasedEvent > Context PC = 9 > > ---------------------------------------------------------------------- > optimized [] in [] in WindowManager>>newProcess > Receiver: > an UndefinedObject > Temporaries: > .self = a WindowManager > Context PC = 13 > > ---------------------------------------------------------------------- > BlockClosure>>on:do: > Receiver: > a BlockClosure > Instance Variables: > method = CompiledBlock [] in [] in WindowManager>>newProcess > outerContext = nil > copiedValues = a WindowManager > Arguments: > anExceptionSelector = TerminateException > handlerBlock = BlockClosure [] in [] in WindowManager>>newProcess > Context PC = 18 > > ---------------------------------------------------------------------- > optimized [] in WindowManager>>newProcess > Receiver: > an UndefinedObject > Temporaries: > .self = a WindowManager > Context PC = 15 > > ---------------------------------------------------------------------- > BlockClosure>>on:do: > Receiver: > a BlockClosure > Instance Variables: > method = CompiledBlock [] in WindowManager>>newProcess > outerContext = nil > copiedValues = a WindowManager > Arguments: > anExceptionSelector = TerminateException > handlerBlock = BlockClosure [] in [] in Process class>>forBlock:priority: > Context PC = 18 > > ---------------------------------------------------------------------- > optimized [] in Process class>>forBlock:priority: > Receiver: > an UndefinedObject > Temporaries: > .aBlock = BlockClosure [] in WindowManager>>newProcess > Context PC = 9 > > -----Oorspronkelijk bericht----- > Van: aida-bounces op aidaweb.si [mailto:aida-bounces op aidaweb.si] Namens Janko Miv?ek > Verzonden: woensdag 19 september 2007 10:20 > Aan: AIDA/Web general discussion list > Onderwerp: Re: [aida] IDNA Parcel > > Dirk, > > Dirk Verleysen wrote: > >> If you have the IDNA parcel loaded from the latest development build the >> SwazooServer doesn?t start. Unloaded the parcel and I could start the >> SwazooServer. > > That's interesting problem. Only potential clash I can see between IDNA > (RFC 3490 - Internationalizing Domain Names in Applications) and Swazoo > is IDNA's override of IPSocketAddress hostAddressByName. This method is > used SwazooSocket (actually in Sport SpIPAddress). > > I'll look at this a bit later. > > Best regards > Janko > > -- Janko Miv?ek AIDA/Web Smalltalk Web Application Server http://www.aidaweb.si _______________________________________________ Aida mailing list Aida op aidaweb.si http://lists.aidaweb.si/mailman/listinfo/aida |
Janko,
I get a bit further but now I get "Cannot find aWebApplication for object aClubBook". My mainView method in ClubBookApp is not accessed. This is my simple mainView method viewMain | e | e := WebElement new. self halt. self title: 'Club Book'. e addTextH1: 'Club Book'. self pageFrameWith: e title: 'Club Book' As mentioned in the tutorial I subclassed my ClubBookApp from WebApplication. Now it appears that pageFrameWith:title: is not implemented on WebApplication so I would think that the tutorial example wouldn't work either. Dirk |
Hi Dirk,
Dirk Verleysen wrote: > I get a bit further but now I get "Cannot find aWebApplication for object aClubBook". > My mainView method in ClubBookApp is not accessed. Actually even and instance of ClubBookApp was not created. This error is an indication that Aida didn't manage to find an App class for your domain object. Your domain object class is ClubBook and you also created a presentation class ClubBookApp (by simply adding App to the domain class name). This should work, so problem must be somewhere else. On VW could be a namespace problem. Did you put both ClubBook and ClubBook on some namespace other than default? Try to debug that problem by putting a breakpoint in Object>>webAppFor: or even better in WebApplication class>>newFor:on: This later method (actually #newFromNameFor:) searches for an App class by composing a name from domain object class name and then instantiate the found class to get a presentation object for your domain one. > This is my simple mainView method > viewMain > | e | > e := WebElement new. > self halt. > self title: 'Club Book'. > e addTextH1: 'Club Book'. > self pageFrameWith: e title: 'Club Book' This method looks correct. > As mentioned in the tutorial I subclassed my ClubBookApp from WebApplication. > Now it appears that pageFrameWith:title: is not implemented on > WebApplication so I would think that the tutorial example wouldn't work either. #pageFrameWith:title: is implemented in WebStyle. And WebStyle is not a subclass of WebApplication but method search anyway goes to WebStyle. Namely, a #doesNotUnderstand is overiden in WebApplication to redirect all unknown methods to an instance of WebStyle (or its subclass) which is registered in AIDASite style instvar. Why so? Well, this sounds a bit complicated and harder to debug but you will soon get used to. But this approach has many more advantages: 1. WebStyle deals (as a name suggests) with styling (CSS) of your web site. And styling is separated from content by separating app and style classes too. As is HTML separated from CSS in any well formed web pages those days. 2. You can also separate style on site-by-site basis. That means that you can have the same Apps for many sites but sites are still looking differently, because they are using different styling. This is achieved by sublclassing WebStyle and registering a new class in AIDASite settings. 3. Web hosting of many web sites on one image is very easy with this approach. For instance, if you want to make your own CSS style for your ClubBook application, you: 1. make your own style class by subclassing WebStyle, like ClubStyle 2. (AIDASite named: 'aidademo') styleClass: 'ClubStyle'. 3. now override css* methods in ClubStyle with your own CSS 4. You can also change #pageFrameWith:title: to have a different framing of your web pages (different header, footer, navigation bar etc). I hope that explains a bit one of main mysteries but also main features of Aida. Best regards Janko -- Janko Miv?ek AIDA/Web Smalltalk Web Application Server http://www.aidaweb.si |
Janko,
The problem is the namespace. My classes are in the Phenix.SKH namespace. I changed the method WebApplication class>>newFromNameFor:on: to newFromNameFor: anObject on: aSession "Try to create of AnObjectApp instance if exist." | className class | className := (anObject class fullName, 'App') asSymbol. class := [className asQualifiedReference value] on: Error do: [:ex | ^nil]. (class allSuperclasses includes: WebApplication) ifFalse: [^nil]. ^class new observee: anObject; session: aSession; postInitialize. And I get my first book :-). I also decided to start using ObjectStudio 8. Since there is no GUI involved I might be able to give the OS8-team some usefull feedback. Dirk -----Oorspronkelijk bericht----- Van: aida-bounces op aidaweb.si [mailto:aida-bounces op aidaweb.si] Namens Janko Miv?ek Verzonden: donderdag 20 september 2007 23:07 Aan: AIDA/Web general discussion list Onderwerp: Re: [aida] Tutorial, WebStyle Hi Dirk, Dirk Verleysen wrote: > I get a bit further but now I get "Cannot find aWebApplication for object aClubBook". > My mainView method in ClubBookApp is not accessed. Actually even and instance of ClubBookApp was not created. This error is an indication that Aida didn't manage to find an App class for your domain object. Your domain object class is ClubBook and you also created a presentation class ClubBookApp (by simply adding App to the domain class name). This should work, so problem must be somewhere else. On VW could be a namespace problem. Did you put both ClubBook and ClubBook on some namespace other than default? Try to debug that problem by putting a breakpoint in Object>>webAppFor: or even better in WebApplication class>>newFor:on: This later method (actually #newFromNameFor:) searches for an App class by composing a name from domain object class name and then instantiate the found class to get a presentation object for your domain one. > This is my simple mainView method > viewMain > | e | > e := WebElement new. > self halt. > self title: 'Club Book'. > e addTextH1: 'Club Book'. > self pageFrameWith: e title: 'Club Book' This method looks correct. > As mentioned in the tutorial I subclassed my ClubBookApp from WebApplication. > Now it appears that pageFrameWith:title: is not implemented on > WebApplication so I would think that the tutorial example wouldn't work either. #pageFrameWith:title: is implemented in WebStyle. And WebStyle is not a subclass of WebApplication but method search anyway goes to WebStyle. Namely, a #doesNotUnderstand is overiden in WebApplication to redirect all unknown methods to an instance of WebStyle (or its subclass) which is registered in AIDASite style instvar. Why so? Well, this sounds a bit complicated and harder to debug but you will soon get used to. But this approach has many more advantages: 1. WebStyle deals (as a name suggests) with styling (CSS) of your web site. And styling is separated from content by separating app and style classes too. As is HTML separated from CSS in any well formed web pages those days. 2. You can also separate style on site-by-site basis. That means that you can have the same Apps for many sites but sites are still looking differently, because they are using different styling. This is achieved by sublclassing WebStyle and registering a new class in AIDASite settings. 3. Web hosting of many web sites on one image is very easy with this approach. For instance, if you want to make your own CSS style for your ClubBook application, you: 1. make your own style class by subclassing WebStyle, like ClubStyle 2. (AIDASite named: 'aidademo') styleClass: 'ClubStyle'. 3. now override css* methods in ClubStyle with your own CSS 4. You can also change #pageFrameWith:title: to have a different framing of your web pages (different header, footer, navigation bar etc). I hope that explains a bit one of main mysteries but also main features of Aida. Best regards Janko -- Janko Miv?ek AIDA/Web Smalltalk Web Application Server http://www.aidaweb.si _______________________________________________ Aida mailing list Aida op aidaweb.si http://lists.aidaweb.si/mailman/listinfo/aida |
Dirk,
Perfect! I just put your patch into a code. But interesting is that I didn't come to that error yet by myself, even that I'm using namespaces too. About ObjectStudio: does that mean that you'll run Aida on ObjectStudio? Best regards Janko Dirk Verleysen wrote: > Janko, > > The problem is the namespace. My classes are in the Phenix.SKH namespace. I changed the method WebApplication class>>newFromNameFor:on: to > > newFromNameFor: anObject on: aSession > "Try to create of AnObjectApp instance if exist." > | className class | > className := (anObject class fullName, 'App') asSymbol. > class := [className asQualifiedReference value] on: Error do: [:ex | ^nil]. > (class allSuperclasses includes: WebApplication) ifFalse: [^nil]. > ^class new observee: anObject; session: aSession; postInitialize. > > And I get my first book :-). > > I also decided to start using ObjectStudio 8. Since there is no GUI involved I might be able to > > Dirk > > > -----Oorspronkelijk bericht----- > Van: aida-bounces na aidaweb.si [mailto:aida-bounces na aidaweb.si] Namens Janko Miv?ek > Verzonden: donderdag 20 september 2007 23:07 > Aan: AIDA/Web general discussion list > Onderwerp: Re: [aida] Tutorial, WebStyle > > Hi Dirk, > > Dirk Verleysen wrote: > >> I get a bit further but now I get "Cannot find aWebApplication for object aClubBook". > > My mainView method in ClubBookApp is not accessed. > > Actually even and instance of ClubBookApp was not created. This error is > an indication that Aida didn't manage to find an App class for your > domain object. Your domain object class is ClubBook and you also created > a presentation class ClubBookApp (by simply adding App to the domain > class name). This should work, so problem must be somewhere else. On VW > could be a namespace problem. Did you put both ClubBook and ClubBook on > some namespace other than default? > > Try to debug that problem by putting a breakpoint in Object>>webAppFor: > or even better in WebApplication class>>newFor:on: This later method > (actually #newFromNameFor:) searches for an App class by composing a > name from domain object class name and then instantiate the found class > to get a presentation object for your domain one. > >> This is my simple mainView method >> viewMain >> | e | >> e := WebElement new. >> self halt. >> self title: 'Club Book'. >> e addTextH1: 'Club Book'. >> self pageFrameWith: e title: 'Club Book' > > > This method looks correct. > >> As mentioned in the tutorial I subclassed my ClubBookApp from WebApplication. > > Now it appears that pageFrameWith:title: is not implemented on > > WebApplication so I would think that the tutorial example wouldn't > work either. > > #pageFrameWith:title: is implemented in WebStyle. And WebStyle is not a > subclass of WebApplication but method search anyway goes to WebStyle. > Namely, a #doesNotUnderstand is overiden in WebApplication to redirect > all unknown methods to an instance of WebStyle (or its subclass) which > is registered in AIDASite style instvar. > > Why so? > > Well, this sounds a bit complicated and harder to debug but you will > soon get used to. But this approach has many more advantages: > > 1. WebStyle deals (as a name suggests) with styling (CSS) of your > web site. And styling is separated from content by separating app and > style classes too. As is HTML separated from CSS in any well formed web > pages those days. > > 2. You can also separate style on site-by-site basis. That means > that you can have the same Apps for many sites but sites are still > looking differently, because they are using different styling. This is > achieved by sublclassing WebStyle and registering a new class in > AIDASite settings. > > 3. Web hosting of many web sites on one image is very easy with this > approach. > > For instance, if you want to make your own CSS style for your ClubBook > application, you: > > 1. make your own style class by subclassing WebStyle, like ClubStyle > 2. (AIDASite named: 'aidademo') styleClass: 'ClubStyle'. > 3. now override css* methods in ClubStyle with your own CSS > 4. You can also change #pageFrameWith:title: to have a different framing > of your web pages (different header, footer, navigation bar etc). > > I hope that explains a bit one of main mysteries but also main features > of Aida. > > Best regards > Janko > -- Janko Miv?ek AIDA/Web Smalltalk Web Application Server http://www.aidaweb.si |
Yes... ObjectStudio uses the VM from VisualWork so that shouldn't be a problem but ObjectStudio still has it's own special behavior for some classes. I volunteered to do some testing with OS8 to see whether there were any special problems.
-----Oorspronkelijk bericht----- Van: aida-bounces op aidaweb.si [mailto:aida-bounces op aidaweb.si] Namens Janko Miv?ek Verzonden: maandag 24 september 2007 13:53 Aan: AIDA/Web general discussion list Onderwerp: Re: [aida] Tutorial, WebStyle Dirk, Perfect! I just put your patch into a code. But interesting is that I didn't come to that error yet by myself, even that I'm using namespaces too. About ObjectStudio: does that mean that you'll run Aida on ObjectStudio? Best regards Janko Dirk Verleysen wrote: > Janko, > > The problem is the namespace. My classes are in the Phenix.SKH namespace. I changed the method WebApplication class>>newFromNameFor:on: to > > newFromNameFor: anObject on: aSession > "Try to create of AnObjectApp instance if exist." > | className class | > className := (anObject class fullName, 'App') asSymbol. > class := [className asQualifiedReference value] on: Error do: [:ex | ^nil]. > (class allSuperclasses includes: WebApplication) ifFalse: [^nil]. > ^class new observee: anObject; session: aSession; postInitialize. > > And I get my first book :-). > > I also decided to start using ObjectStudio 8. Since there is no GUI involved I might be able to > > Dirk > > > -----Oorspronkelijk bericht----- > Van: aida-bounces op aidaweb.si [mailto:aida-bounces op aidaweb.si] Namens Janko Miv?ek > Verzonden: donderdag 20 september 2007 23:07 > Aan: AIDA/Web general discussion list > Onderwerp: Re: [aida] Tutorial, WebStyle > > Hi Dirk, > > Dirk Verleysen wrote: > >> I get a bit further but now I get "Cannot find aWebApplication for object aClubBook". > > My mainView method in ClubBookApp is not accessed. > > Actually even and instance of ClubBookApp was not created. This error is > an indication that Aida didn't manage to find an App class for your > domain object. Your domain object class is ClubBook and you also created > a presentation class ClubBookApp (by simply adding App to the domain > class name). This should work, so problem must be somewhere else. On VW > could be a namespace problem. Did you put both ClubBook and ClubBook on > some namespace other than default? > > Try to debug that problem by putting a breakpoint in Object>>webAppFor: > or even better in WebApplication class>>newFor:on: This later method > (actually #newFromNameFor:) searches for an App class by composing a > name from domain object class name and then instantiate the found class > to get a presentation object for your domain one. > >> This is my simple mainView method >> viewMain >> | e | >> e := WebElement new. >> self halt. >> self title: 'Club Book'. >> e addTextH1: 'Club Book'. >> self pageFrameWith: e title: 'Club Book' > > > This method looks correct. > >> As mentioned in the tutorial I subclassed my ClubBookApp from WebApplication. > > Now it appears that pageFrameWith:title: is not implemented on > > WebApplication so I would think that the tutorial example wouldn't > work either. > > #pageFrameWith:title: is implemented in WebStyle. And WebStyle is not a > subclass of WebApplication but method search anyway goes to WebStyle. > Namely, a #doesNotUnderstand is overiden in WebApplication to redirect > all unknown methods to an instance of WebStyle (or its subclass) which > is registered in AIDASite style instvar. > > Why so? > > Well, this sounds a bit complicated and harder to debug but you will > soon get used to. But this approach has many more advantages: > > 1. WebStyle deals (as a name suggests) with styling (CSS) of your > web site. And styling is separated from content by separating app and > style classes too. As is HTML separated from CSS in any well formed web > pages those days. > > 2. You can also separate style on site-by-site basis. That means > that you can have the same Apps for many sites but sites are still > looking differently, because they are using different styling. This is > achieved by sublclassing WebStyle and registering a new class in > AIDASite settings. > > 3. Web hosting of many web sites on one image is very easy with this > approach. > > For instance, if you want to make your own CSS style for your ClubBook > application, you: > > 1. make your own style class by subclassing WebStyle, like ClubStyle > 2. (AIDASite named: 'aidademo') styleClass: 'ClubStyle'. > 3. now override css* methods in ClubStyle with your own CSS > 4. You can also change #pageFrameWith:title: to have a different framing > of your web pages (different header, footer, navigation bar etc). > > I hope that explains a bit one of main mysteries but also main features > of Aida. > > Best regards > Janko > -- Janko Miv?ek AIDA/Web Smalltalk Web Application Server http://www.aidaweb.si _______________________________________________ Aida mailing list Aida op aidaweb.si http://lists.aidaweb.si/mailman/listinfo/aida |
Free forum by Nabble | Edit this page |