IDNA Parcel

Previous Topic Next Topic
 
classic Classic list List threaded Threaded
10 messages Options
Reply | Threaded
Open this post in threaded view
|

IDNA Parcel

Dirk Verleysen
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 

Reply | Threaded
Open this post in threaded view
|

IDNA Parcel

Janko Mivšek
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

Reply | Threaded
Open this post in threaded view
|

IDNA Parcel

Dirk Verleysen
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

Reply | Threaded
Open this post in threaded view
|

IDNA Parcel

Janko Mivšek
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

Reply | Threaded
Open this post in threaded view
|

IDNA Parcel

Dirk Verleysen
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

Reply | Threaded
Open this post in threaded view
|

Tutorial

Dirk Verleysen
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

Reply | Threaded
Open this post in threaded view
|

Tutorial, WebStyle

Janko Mivšek
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

Reply | Threaded
Open this post in threaded view
|

Tutorial, WebStyle

Dirk Verleysen
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

Reply | Threaded
Open this post in threaded view
|

Tutorial, WebStyle

Janko Mivšek
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
give the OS8-team some usefull feedback.

>
> 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

Reply | Threaded
Open this post in threaded view
|

Tutorial, WebStyle

Dirk Verleysen
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
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