ProceedingNotification.st
author Jan Vrany <jan.vrany@fit.cvut.cz>
Tue, 22 Sep 2015 16:28:42 +0100
branchjv
changeset 18759 c1217211909c
parent 15694 f22e0455cb8b
child 21664 ac3e93c147b3
permissions -rw-r--r--
Changed identification strings to contain jv-branch ...to make explicit that this distribution is not the official one used by eXept and therefore that eXept is not to be blamed in case of any problem.
Ignore whitespace changes - Everywhere: Within whitespace: At end of lines:
15694
f22e0455cb8b initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
     1
"
f22e0455cb8b initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
     2
 COPYRIGHT (c) 2013 by eXept Software AG
f22e0455cb8b initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
     3
              All Rights Reserved
f22e0455cb8b initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
     4
f22e0455cb8b initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
     5
 This software is furnished under a license and may be used
f22e0455cb8b initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
     6
 only in accordance with the terms of that license and with the
f22e0455cb8b initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
     7
 inclusion of the above copyright notice.   This software may not
f22e0455cb8b initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
     8
 be provided or otherwise made available to, or used by, any
f22e0455cb8b initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
     9
 other person.  No title to or ownership of the software is
f22e0455cb8b initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    10
 hereby transferred.
f22e0455cb8b initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    11
"
f22e0455cb8b initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    12
"{ Package: 'stx:libbasic' }"
f22e0455cb8b initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    13
f22e0455cb8b initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    14
Notification subclass:#ProceedingNotification
f22e0455cb8b initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    15
	instanceVariableNames:''
f22e0455cb8b initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    16
	classVariableNames:''
f22e0455cb8b initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    17
	poolDictionaries:''
f22e0455cb8b initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    18
	category:'Kernel-Exceptions'
f22e0455cb8b initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    19
!
f22e0455cb8b initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    20
f22e0455cb8b initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    21
!ProceedingNotification class methodsFor:'documentation'!
f22e0455cb8b initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    22
f22e0455cb8b initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    23
copyright
f22e0455cb8b initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    24
"
f22e0455cb8b initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    25
 COPYRIGHT (c) 2013 by eXept Software AG
f22e0455cb8b initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    26
              All Rights Reserved
f22e0455cb8b initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    27
f22e0455cb8b initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    28
 This software is furnished under a license and may be used
f22e0455cb8b initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    29
 only in accordance with the terms of that license and with the
f22e0455cb8b initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    30
 inclusion of the above copyright notice.   This software may not
f22e0455cb8b initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    31
 be provided or otherwise made available to, or used by, any
f22e0455cb8b initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    32
 other person.  No title to or ownership of the software is
f22e0455cb8b initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    33
 hereby transferred.
f22e0455cb8b initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    34
"
f22e0455cb8b initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    35
!
f22e0455cb8b initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    36
f22e0455cb8b initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    37
documentation
f22e0455cb8b initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    38
"    
f22e0455cb8b initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    39
    A ProceedingNotification behaves much like a regular notification,
f22e0455cb8b initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    40
    in that if no handler is present, execution proceeds after the raise.
f22e0455cb8b initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    41
    However, iff a handler simply falls through, the exception is proceeded.
f22e0455cb8b initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    42
    The handler is still free to choose for an explicit action (return/reject).
f22e0455cb8b initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    43
f22e0455cb8b initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    44
    [author:]
f22e0455cb8b initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    45
        Claus Gittinger
f22e0455cb8b initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    46
f22e0455cb8b initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    47
    [see also:]
f22e0455cb8b initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    48
        Exception Query Notification
f22e0455cb8b initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    49
"
f22e0455cb8b initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    50
!
f22e0455cb8b initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    51
f22e0455cb8b initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    52
examples 
f22e0455cb8b initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    53
"
f22e0455cb8b initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    54
  an up-notification from a deeply nested operation to a higher level.
f22e0455cb8b initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    55
  Notice, that in contrast to a regular Notification, all outer handlers are called:
f22e0455cb8b initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    56
                                                                        [exBegin]
f22e0455cb8b initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    57
    |zero|
f22e0455cb8b initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    58
f22e0455cb8b initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    59
    zero := 0.
f22e0455cb8b initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    60
    CascadingNotification handle:[:n |
f22e0455cb8b initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    61
        Transcript showCR:'h1: ' , n description.
f22e0455cb8b initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    62
        n proceedWith:1.    
f22e0455cb8b initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    63
    ] do:[
f22e0455cb8b initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    64
        CascadingNotification handle:[:n |
f22e0455cb8b initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    65
            Transcript showCR:'h2: ' , n description.
f22e0455cb8b initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    66
        ] do:[
f22e0455cb8b initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    67
            CascadingNotification handle:[:n |
f22e0455cb8b initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    68
                Transcript showCR:'h3: ' , n description.
f22e0455cb8b initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    69
            ] do:[
f22e0455cb8b initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    70
                'nesting'.
f22e0455cb8b initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    71
                [
f22e0455cb8b initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    72
                    [
f22e0455cb8b initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    73
                        Error handle:[:ex |
f22e0455cb8b initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    74
                            Transcript showCR:'some error: ' , ex errorString.
f22e0455cb8b initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    75
                            ex proceed
f22e0455cb8b initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    76
                        ] do:[
f22e0455cb8b initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    77
                            [
f22e0455cb8b initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    78
                                |answer|
f22e0455cb8b initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    79
f22e0455cb8b initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    80
                                1 // zero.  'an error which is caught in the handler'.
f22e0455cb8b initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    81
                                answer := CascadingNotification notify:'hello world'.
f22e0455cb8b initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    82
                                Transcript show:'after notification 1: '; showCR:answer.
f22e0455cb8b initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    83
                            ] value
f22e0455cb8b initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    84
                        ]
f22e0455cb8b initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    85
                    ] value
f22e0455cb8b initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    86
                ] value.
f22e0455cb8b initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    87
                Transcript showCR:'after notification 2'.
f22e0455cb8b initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    88
            ].
f22e0455cb8b initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    89
            Transcript showCR:'after notification 3'.
f22e0455cb8b initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    90
        ].
f22e0455cb8b initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    91
        Transcript showCR:'after notification 4'.
f22e0455cb8b initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    92
    ].
f22e0455cb8b initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    93
    Transcript showCR:'after notification 5'.
f22e0455cb8b initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    94
                                                                        [exEnd]
f22e0455cb8b initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    95
f22e0455cb8b initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    96
  however, if any handler proceeds or returns, this is not the case:
f22e0455cb8b initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    97
                                                                        [exBegin]
f22e0455cb8b initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    98
    |zero|
f22e0455cb8b initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    99
f22e0455cb8b initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   100
    zero := 0.
f22e0455cb8b initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   101
    CascadingNotification handle:[:n |
f22e0455cb8b initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   102
        Transcript showCR:'h1: ' , n description.
f22e0455cb8b initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   103
    ] do:[
f22e0455cb8b initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   104
        CascadingNotification handle:[:n |
f22e0455cb8b initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   105
            Transcript showCR:'h2: ' , n description.
f22e0455cb8b initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   106
            n proceedWith:2.    
f22e0455cb8b initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   107
        ] do:[
f22e0455cb8b initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   108
            CascadingNotification handle:[:n |
f22e0455cb8b initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   109
                Transcript showCR:'h3: ' , n description.
f22e0455cb8b initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   110
            ] do:[
f22e0455cb8b initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   111
                'nesting'.
f22e0455cb8b initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   112
                [
f22e0455cb8b initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   113
                    [
f22e0455cb8b initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   114
                        Error handle:[:ex |
f22e0455cb8b initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   115
                            Transcript showCR:'some error: ' , ex errorString.
f22e0455cb8b initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   116
                            ex proceed
f22e0455cb8b initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   117
                        ] do:[
f22e0455cb8b initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   118
                            [
f22e0455cb8b initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   119
                                |answer|
f22e0455cb8b initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   120
f22e0455cb8b initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   121
                                1 // zero.  'an error which is caught in the handler'.
f22e0455cb8b initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   122
                                answer := CascadingNotification notify:'hello world'.
f22e0455cb8b initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   123
                                Transcript show:'after notification 1: '; showCR:answer.
f22e0455cb8b initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   124
                            ] value
f22e0455cb8b initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   125
                        ]
f22e0455cb8b initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   126
                    ] value
f22e0455cb8b initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   127
                ] value.
f22e0455cb8b initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   128
                Transcript showCR:'after notification 2'.
f22e0455cb8b initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   129
            ].
f22e0455cb8b initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   130
            Transcript showCR:'after notification 3'.
f22e0455cb8b initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   131
        ].
f22e0455cb8b initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   132
        Transcript showCR:'after notification 4'.
f22e0455cb8b initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   133
    ].
f22e0455cb8b initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   134
    Transcript showCR:'after notification 5'.
f22e0455cb8b initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   135
                                                                        [exEnd]
f22e0455cb8b initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   136
  however, if any handler proceeds or returns, this is not the case:
f22e0455cb8b initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   137
                                                                        [exBegin]
f22e0455cb8b initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   138
    |zero|
f22e0455cb8b initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   139
f22e0455cb8b initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   140
    zero := 0.
f22e0455cb8b initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   141
    CascadingNotification handle:[:n |
f22e0455cb8b initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   142
        Transcript showCR:'h1: ' , n description.
f22e0455cb8b initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   143
    ] do:[
f22e0455cb8b initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   144
        CascadingNotification handle:[:n |
f22e0455cb8b initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   145
            Transcript showCR:'h2: ' , n description.
f22e0455cb8b initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   146
            n return.    
f22e0455cb8b initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   147
        ] do:[
f22e0455cb8b initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   148
            CascadingNotification handle:[:n |
f22e0455cb8b initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   149
                Transcript showCR:'h3: ' , n description.
f22e0455cb8b initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   150
            ] do:[
f22e0455cb8b initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   151
                'nesting'.
f22e0455cb8b initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   152
                [
f22e0455cb8b initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   153
                    [
f22e0455cb8b initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   154
                        Error handle:[:ex |
f22e0455cb8b initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   155
                            Transcript showCR:'some error: ' , ex errorString.
f22e0455cb8b initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   156
                            ex proceed
f22e0455cb8b initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   157
                        ] do:[
f22e0455cb8b initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   158
                            [
f22e0455cb8b initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   159
                                |answer|
f22e0455cb8b initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   160
f22e0455cb8b initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   161
                                1 // zero.  'an error which is caught in the handler'.
f22e0455cb8b initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   162
                                answer := CascadingNotification notify:'hello world'.
f22e0455cb8b initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   163
                                Transcript show:'after notification 1: '; showCR:answer.
f22e0455cb8b initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   164
                            ] value
f22e0455cb8b initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   165
                        ]
f22e0455cb8b initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   166
                    ] value
f22e0455cb8b initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   167
                ] value.
f22e0455cb8b initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   168
                Transcript showCR:'after notification 2'.
f22e0455cb8b initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   169
            ].
f22e0455cb8b initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   170
            Transcript showCR:'after notification 3'.
f22e0455cb8b initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   171
        ].
f22e0455cb8b initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   172
        Transcript showCR:'after notification 4'.
f22e0455cb8b initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   173
    ].
f22e0455cb8b initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   174
    Transcript showCR:'after notification 5'.
f22e0455cb8b initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   175
                                                                        [exEnd]
f22e0455cb8b initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   176
"
f22e0455cb8b initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   177
! !
f22e0455cb8b initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   178
f22e0455cb8b initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   179
!ProceedingNotification class methodsFor:'initialization'!
f22e0455cb8b initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   180
f22e0455cb8b initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   181
initialize
f22e0455cb8b initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   182
f22e0455cb8b initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   183
    NotifierString := 'Notification:'
f22e0455cb8b initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   184
! !
f22e0455cb8b initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   185
f22e0455cb8b initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   186
!ProceedingNotification methodsFor:'default actions'!
f22e0455cb8b initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   187
f22e0455cb8b initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   188
doCallHandler:aHandlerBlock
f22e0455cb8b initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   189
    "call the handler proper - if the handler falls through, proceed with the handler's value.
f22e0455cb8b initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   190
     - an extra method is needed to have a raise-marked context around.
f22e0455cb8b initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   191
       (see implementation of #reject and #proceed)."
f22e0455cb8b initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   192
f22e0455cb8b initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   193
    <context: #return>
f22e0455cb8b initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   194
    <exception: #raise>
f22e0455cb8b initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   195
f22e0455cb8b initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   196
    |val|
f22e0455cb8b initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   197
f22e0455cb8b initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   198
    aHandlerBlock argumentCount == 0 ifTrue:[
f22e0455cb8b initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   199
        "0-arg handler or any object - not interested in the exception argument"
f22e0455cb8b initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   200
        val := aHandlerBlock value
f22e0455cb8b initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   201
    ] ifFalse:[
f22e0455cb8b initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   202
        "1-arg handler - pass myself as exception argument"
f22e0455cb8b initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   203
        val := aHandlerBlock value:self.
f22e0455cb8b initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   204
    ].
f22e0455cb8b initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   205
f22e0455cb8b initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   206
    "handler fall through - this is different here!!"
f22e0455cb8b initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   207
f22e0455cb8b initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   208
    self proceedWith:val
f22e0455cb8b initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   209
! !
f22e0455cb8b initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   210
f22e0455cb8b initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   211
!ProceedingNotification class methodsFor:'documentation'!
f22e0455cb8b initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   212
f22e0455cb8b initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   213
version
f22e0455cb8b initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   214
    ^ '$Header: /cvs/stx/stx/libbasic/ProceedingNotification.st,v 1.1 2013-08-24 12:25:37 cg Exp $'
f22e0455cb8b initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   215
!
f22e0455cb8b initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   216
f22e0455cb8b initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   217
version_CVS
f22e0455cb8b initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   218
    ^ '$Header: /cvs/stx/stx/libbasic/ProceedingNotification.st,v 1.1 2013-08-24 12:25:37 cg Exp $'
f22e0455cb8b initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   219
! !
f22e0455cb8b initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   220
f22e0455cb8b initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   221
f22e0455cb8b initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   222
ProceedingNotification initialize!