AutoDeletedFilename.st
author Jan Vrany <jan.vrany@fit.cvut.cz>
Wed, 28 Sep 2011 20:07:49 +0100
branchjv
changeset 17865 598963c6ff8e
parent 17846 24edc476ac18
child 17869 9610c6c94e71
permissions -rw-r--r--
Recommited from itself
Ignore whitespace changes - Everywhere: Within whitespace: At end of lines:
10847
2f39b0b6f4e6 copyright
Claus Gittinger <cg@exept.de>
parents: 10761
diff changeset
     1
"
2f39b0b6f4e6 copyright
Claus Gittinger <cg@exept.de>
parents: 10761
diff changeset
     2
 COPYRIGHT (c) 2007 by eXept Software AG
2f39b0b6f4e6 copyright
Claus Gittinger <cg@exept.de>
parents: 10761
diff changeset
     3
              All Rights Reserved
2f39b0b6f4e6 copyright
Claus Gittinger <cg@exept.de>
parents: 10761
diff changeset
     4
2f39b0b6f4e6 copyright
Claus Gittinger <cg@exept.de>
parents: 10761
diff changeset
     5
 This software is furnished under a license and may be used
2f39b0b6f4e6 copyright
Claus Gittinger <cg@exept.de>
parents: 10761
diff changeset
     6
 only in accordance with the terms of that license and with the
2f39b0b6f4e6 copyright
Claus Gittinger <cg@exept.de>
parents: 10761
diff changeset
     7
 inclusion of the above copyright notice.   This software may not
2f39b0b6f4e6 copyright
Claus Gittinger <cg@exept.de>
parents: 10761
diff changeset
     8
 be provided or otherwise made available to, or used by, any
2f39b0b6f4e6 copyright
Claus Gittinger <cg@exept.de>
parents: 10761
diff changeset
     9
 other person.  No title to or ownership of the software is
2f39b0b6f4e6 copyright
Claus Gittinger <cg@exept.de>
parents: 10761
diff changeset
    10
 hereby transferred.
2f39b0b6f4e6 copyright
Claus Gittinger <cg@exept.de>
parents: 10761
diff changeset
    11
"
10761
6a63674a5cb1 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    12
"{ Package: 'stx:libbasic' }"
6a63674a5cb1 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    13
6a63674a5cb1 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    14
Filename subclass:#AutoDeletedFilename
6a63674a5cb1 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    15
	instanceVariableNames:''
6a63674a5cb1 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    16
	classVariableNames:''
6a63674a5cb1 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    17
	poolDictionaries:''
6a63674a5cb1 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    18
	category:'System-Support'
6a63674a5cb1 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    19
!
6a63674a5cb1 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    20
6a63674a5cb1 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    21
!AutoDeletedFilename class methodsFor:'documentation'!
6a63674a5cb1 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    22
10847
2f39b0b6f4e6 copyright
Claus Gittinger <cg@exept.de>
parents: 10761
diff changeset
    23
copyright
2f39b0b6f4e6 copyright
Claus Gittinger <cg@exept.de>
parents: 10761
diff changeset
    24
"
2f39b0b6f4e6 copyright
Claus Gittinger <cg@exept.de>
parents: 10761
diff changeset
    25
 COPYRIGHT (c) 2007 by eXept Software AG
2f39b0b6f4e6 copyright
Claus Gittinger <cg@exept.de>
parents: 10761
diff changeset
    26
              All Rights Reserved
2f39b0b6f4e6 copyright
Claus Gittinger <cg@exept.de>
parents: 10761
diff changeset
    27
2f39b0b6f4e6 copyright
Claus Gittinger <cg@exept.de>
parents: 10761
diff changeset
    28
 This software is furnished under a license and may be used
2f39b0b6f4e6 copyright
Claus Gittinger <cg@exept.de>
parents: 10761
diff changeset
    29
 only in accordance with the terms of that license and with the
2f39b0b6f4e6 copyright
Claus Gittinger <cg@exept.de>
parents: 10761
diff changeset
    30
 inclusion of the above copyright notice.   This software may not
2f39b0b6f4e6 copyright
Claus Gittinger <cg@exept.de>
parents: 10761
diff changeset
    31
 be provided or otherwise made available to, or used by, any
2f39b0b6f4e6 copyright
Claus Gittinger <cg@exept.de>
parents: 10761
diff changeset
    32
 other person.  No title to or ownership of the software is
2f39b0b6f4e6 copyright
Claus Gittinger <cg@exept.de>
parents: 10761
diff changeset
    33
 hereby transferred.
2f39b0b6f4e6 copyright
Claus Gittinger <cg@exept.de>
parents: 10761
diff changeset
    34
"
2f39b0b6f4e6 copyright
Claus Gittinger <cg@exept.de>
parents: 10761
diff changeset
    35
!
2f39b0b6f4e6 copyright
Claus Gittinger <cg@exept.de>
parents: 10761
diff changeset
    36
10761
6a63674a5cb1 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    37
documentation
6a63674a5cb1 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    38
"
6a63674a5cb1 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    39
    Used with temporary files - these will automatically delete themself,
6a63674a5cb1 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    40
    when no longer referenced.
6a63674a5cb1 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    41
    See -> Filename asAutoDeletedFilename
6a63674a5cb1 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    42
"
6a63674a5cb1 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    43
!
6a63674a5cb1 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    44
6a63674a5cb1 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    45
examples
6a63674a5cb1 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    46
"
6a63674a5cb1 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    47
    the following file will be automatically deleted after some time:
10931
54107ed355be unregister from finalizatioin when deleting explicitly
Stefan Vogel <sv@exept.de>
parents: 10847
diff changeset
    48
                                                    [exBegin]
10761
6a63674a5cb1 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    49
    |f p|
6a63674a5cb1 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    50
6a63674a5cb1 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    51
    f := Filename newTemporary.
6a63674a5cb1 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    52
    f writeStream
6a63674a5cb1 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    53
        nextPutLine:'hello';
6a63674a5cb1 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    54
        close.
6a63674a5cb1 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    55
    p := f pathName.
6a63674a5cb1 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    56
    Transcript showCR:p.
6a63674a5cb1 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    57
    f := f asAutoDeletedFilename.
6a63674a5cb1 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    58
    self assert:(p asFilename exists).
6a63674a5cb1 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    59
    ObjectMemory collectGarbage.
6a63674a5cb1 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    60
    Delay waitForSeconds:2.
6a63674a5cb1 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    61
    self assert:(p asFilename exists).
6a63674a5cb1 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    62
    f := nil.
6a63674a5cb1 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    63
    ObjectMemory collectGarbage.
6a63674a5cb1 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    64
    Delay waitForSeconds:2.
6a63674a5cb1 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    65
    self assert:(p asFilename exists not).
10931
54107ed355be unregister from finalizatioin when deleting explicitly
Stefan Vogel <sv@exept.de>
parents: 10847
diff changeset
    66
                                                    [exEnd]
54107ed355be unregister from finalizatioin when deleting explicitly
Stefan Vogel <sv@exept.de>
parents: 10847
diff changeset
    67
54107ed355be unregister from finalizatioin when deleting explicitly
Stefan Vogel <sv@exept.de>
parents: 10847
diff changeset
    68
54107ed355be unregister from finalizatioin when deleting explicitly
Stefan Vogel <sv@exept.de>
parents: 10847
diff changeset
    69
    you can also delete it manually:
54107ed355be unregister from finalizatioin when deleting explicitly
Stefan Vogel <sv@exept.de>
parents: 10847
diff changeset
    70
                                                    [exBegin]
54107ed355be unregister from finalizatioin when deleting explicitly
Stefan Vogel <sv@exept.de>
parents: 10847
diff changeset
    71
    |f p|
54107ed355be unregister from finalizatioin when deleting explicitly
Stefan Vogel <sv@exept.de>
parents: 10847
diff changeset
    72
54107ed355be unregister from finalizatioin when deleting explicitly
Stefan Vogel <sv@exept.de>
parents: 10847
diff changeset
    73
    f := Filename newTemporary.
54107ed355be unregister from finalizatioin when deleting explicitly
Stefan Vogel <sv@exept.de>
parents: 10847
diff changeset
    74
    f writeStream
54107ed355be unregister from finalizatioin when deleting explicitly
Stefan Vogel <sv@exept.de>
parents: 10847
diff changeset
    75
        nextPutLine:'hello';
54107ed355be unregister from finalizatioin when deleting explicitly
Stefan Vogel <sv@exept.de>
parents: 10847
diff changeset
    76
        close.
54107ed355be unregister from finalizatioin when deleting explicitly
Stefan Vogel <sv@exept.de>
parents: 10847
diff changeset
    77
    p := f pathName.
54107ed355be unregister from finalizatioin when deleting explicitly
Stefan Vogel <sv@exept.de>
parents: 10847
diff changeset
    78
    Transcript showCR:p.
54107ed355be unregister from finalizatioin when deleting explicitly
Stefan Vogel <sv@exept.de>
parents: 10847
diff changeset
    79
    f := f asAutoDeletedFilename.
54107ed355be unregister from finalizatioin when deleting explicitly
Stefan Vogel <sv@exept.de>
parents: 10847
diff changeset
    80
    self assert:(p asFilename exists).
54107ed355be unregister from finalizatioin when deleting explicitly
Stefan Vogel <sv@exept.de>
parents: 10847
diff changeset
    81
    ObjectMemory collectGarbage.
54107ed355be unregister from finalizatioin when deleting explicitly
Stefan Vogel <sv@exept.de>
parents: 10847
diff changeset
    82
    Delay waitForSeconds:2.
54107ed355be unregister from finalizatioin when deleting explicitly
Stefan Vogel <sv@exept.de>
parents: 10847
diff changeset
    83
    self assert:(p asFilename exists).
54107ed355be unregister from finalizatioin when deleting explicitly
Stefan Vogel <sv@exept.de>
parents: 10847
diff changeset
    84
    f remove.
54107ed355be unregister from finalizatioin when deleting explicitly
Stefan Vogel <sv@exept.de>
parents: 10847
diff changeset
    85
    f := nil.
54107ed355be unregister from finalizatioin when deleting explicitly
Stefan Vogel <sv@exept.de>
parents: 10847
diff changeset
    86
    ObjectMemory collectGarbage.
54107ed355be unregister from finalizatioin when deleting explicitly
Stefan Vogel <sv@exept.de>
parents: 10847
diff changeset
    87
    Delay waitForSeconds:2.
54107ed355be unregister from finalizatioin when deleting explicitly
Stefan Vogel <sv@exept.de>
parents: 10847
diff changeset
    88
    self assert:(p asFilename exists not).
54107ed355be unregister from finalizatioin when deleting explicitly
Stefan Vogel <sv@exept.de>
parents: 10847
diff changeset
    89
                                                    [exEnd]
10761
6a63674a5cb1 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    90
"
6a63674a5cb1 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    91
! !
6a63674a5cb1 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    92
17728
bbc5fa73dfab Merged with trunk r10466
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 17711
diff changeset
    93
!AutoDeletedFilename class methodsFor:'queries'!
bbc5fa73dfab Merged with trunk r10466
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 17711
diff changeset
    94
bbc5fa73dfab Merged with trunk r10466
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 17711
diff changeset
    95
isAbstract
bbc5fa73dfab Merged with trunk r10466
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 17711
diff changeset
    96
    ^ true
bbc5fa73dfab Merged with trunk r10466
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 17711
diff changeset
    97
! !
bbc5fa73dfab Merged with trunk r10466
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 17711
diff changeset
    98
10761
6a63674a5cb1 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    99
!AutoDeletedFilename methodsFor:'accessing'!
6a63674a5cb1 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   100
6a63674a5cb1 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   101
finalize
10931
54107ed355be unregister from finalizatioin when deleting explicitly
Stefan Vogel <sv@exept.de>
parents: 10847
diff changeset
   102
"/    Transcript showCR:'AutoDeletedFilename: deleting ', self pathName.
17728
bbc5fa73dfab Merged with trunk r10466
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 17711
diff changeset
   103
bbc5fa73dfab Merged with trunk r10466
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 17711
diff changeset
   104
    |linkInfo|
bbc5fa73dfab Merged with trunk r10466
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 17711
diff changeset
   105
bbc5fa73dfab Merged with trunk r10466
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 17711
diff changeset
   106
    linkInfo := self linkInfo.
bbc5fa73dfab Merged with trunk r10466
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 17711
diff changeset
   107
    linkInfo notNil ifTrue:[
bbc5fa73dfab Merged with trunk r10466
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 17711
diff changeset
   108
        linkInfo isDirectory ifTrue:[
bbc5fa73dfab Merged with trunk r10466
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 17711
diff changeset
   109
            super recursiveRemove
bbc5fa73dfab Merged with trunk r10466
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 17711
diff changeset
   110
        ] ifFalse:[
bbc5fa73dfab Merged with trunk r10466
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 17711
diff changeset
   111
            super removeFile.
bbc5fa73dfab Merged with trunk r10466
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 17711
diff changeset
   112
        ].
bbc5fa73dfab Merged with trunk r10466
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 17711
diff changeset
   113
    ].
10761
6a63674a5cb1 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   114
!
6a63674a5cb1 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   115
6a63674a5cb1 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   116
setName:aString
6a63674a5cb1 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   117
    super setName:aString.
6a63674a5cb1 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   118
    self registerForFinalization    
6a63674a5cb1 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   119
! !
6a63674a5cb1 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   120
10931
54107ed355be unregister from finalizatioin when deleting explicitly
Stefan Vogel <sv@exept.de>
parents: 10847
diff changeset
   121
!AutoDeletedFilename methodsFor:'removing'!
54107ed355be unregister from finalizatioin when deleting explicitly
Stefan Vogel <sv@exept.de>
parents: 10847
diff changeset
   122
17728
bbc5fa73dfab Merged with trunk r10466
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 17711
diff changeset
   123
recursiveRemove
bbc5fa73dfab Merged with trunk r10466
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 17711
diff changeset
   124
    super recursiveRemove.
bbc5fa73dfab Merged with trunk r10466
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 17711
diff changeset
   125
    self unregisterForFinalization
bbc5fa73dfab Merged with trunk r10466
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 17711
diff changeset
   126
!
bbc5fa73dfab Merged with trunk r10466
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 17711
diff changeset
   127
10931
54107ed355be unregister from finalizatioin when deleting explicitly
Stefan Vogel <sv@exept.de>
parents: 10847
diff changeset
   128
remove
54107ed355be unregister from finalizatioin when deleting explicitly
Stefan Vogel <sv@exept.de>
parents: 10847
diff changeset
   129
    super remove.
54107ed355be unregister from finalizatioin when deleting explicitly
Stefan Vogel <sv@exept.de>
parents: 10847
diff changeset
   130
    self unregisterForFinalization
54107ed355be unregister from finalizatioin when deleting explicitly
Stefan Vogel <sv@exept.de>
parents: 10847
diff changeset
   131
!
54107ed355be unregister from finalizatioin when deleting explicitly
Stefan Vogel <sv@exept.de>
parents: 10847
diff changeset
   132
54107ed355be unregister from finalizatioin when deleting explicitly
Stefan Vogel <sv@exept.de>
parents: 10847
diff changeset
   133
removeDirectory
54107ed355be unregister from finalizatioin when deleting explicitly
Stefan Vogel <sv@exept.de>
parents: 10847
diff changeset
   134
    super removeDirectory.
54107ed355be unregister from finalizatioin when deleting explicitly
Stefan Vogel <sv@exept.de>
parents: 10847
diff changeset
   135
    self unregisterForFinalization
54107ed355be unregister from finalizatioin when deleting explicitly
Stefan Vogel <sv@exept.de>
parents: 10847
diff changeset
   136
!
54107ed355be unregister from finalizatioin when deleting explicitly
Stefan Vogel <sv@exept.de>
parents: 10847
diff changeset
   137
54107ed355be unregister from finalizatioin when deleting explicitly
Stefan Vogel <sv@exept.de>
parents: 10847
diff changeset
   138
removeFile
54107ed355be unregister from finalizatioin when deleting explicitly
Stefan Vogel <sv@exept.de>
parents: 10847
diff changeset
   139
    super removeFile.
54107ed355be unregister from finalizatioin when deleting explicitly
Stefan Vogel <sv@exept.de>
parents: 10847
diff changeset
   140
    self unregisterForFinalization
54107ed355be unregister from finalizatioin when deleting explicitly
Stefan Vogel <sv@exept.de>
parents: 10847
diff changeset
   141
! !
54107ed355be unregister from finalizatioin when deleting explicitly
Stefan Vogel <sv@exept.de>
parents: 10847
diff changeset
   142
10761
6a63674a5cb1 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   143
!AutoDeletedFilename class methodsFor:'documentation'!
6a63674a5cb1 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   144
6a63674a5cb1 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   145
version
17865
598963c6ff8e Recommited from itself
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 17846
diff changeset
   146
    ^ '$Id: AutoDeletedFilename.st 10695 2011-09-28 19:07:49Z vranyj1 $'
598963c6ff8e Recommited from itself
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 17846
diff changeset
   147
!
598963c6ff8e Recommited from itself
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 17846
diff changeset
   148
598963c6ff8e Recommited from itself
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 17846
diff changeset
   149
version_SVN
598963c6ff8e Recommited from itself
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 17846
diff changeset
   150
    ^ '$Id: AutoDeletedFilename.st 10695 2011-09-28 19:07:49Z vranyj1 $'
17846
24edc476ac18 Merged with /trunk
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 17845
diff changeset
   151
! !